Rails 및 i18n-js를 통한 국제화
4949 단어 i18nreacthowisolvedrails
Rails 가이드에 따르면 "국제화"프로세스는 일반적으로 애플리케이션에서 모든 문자열 및 기타 로케일 특정 비트(예: 날짜 또는 통화 형식)를 추상화하는 것을 의미합니다. "현지화"프로세스는 이러한 비트에 대한 번역 및 현지화된 형식을 제공하는 것을 의미합니다.
저는 React on Rails로 빌드된 앱을 작업하고 있었습니다. 대부분의 페이지는 React로 작성되었지만 일부 페이지는 Rails 뷰에서 작성되고 렌더링되었습니다. 즉, 백엔드와 프런트엔드 모두에서 번역을 제공하는 방법을 찾아야 했습니다.
기사와 자습서를 검색했지만 내가 가진 동일한 문제를 해결하는 항목을 찾을 수 없었습니다. "i18n-ing"Rails 앱과 Rails 및 Javascript에 대한 많은 자습서를 찾았지만 Rails 및 React에서는 찾을 수 없었습니다.
시간을 들여 조사한 후 rails-i18n 및 i18n-js 보석을 사용해 보기로 했습니다.
rails-i18n
는 앱 번역을 위한 사용하기 쉽고 확장 가능한 프레임워크를 제공합니다. i18n-js
는 JavaScript 측에서 Rails i18n 변환을 생성하는 작은 라이브러리입니다. Rails 측의 yml 번역 파일을 사용하여 Javascript 파일을 자동 생성하는 미들웨어를 제공합니다.그 보석을 사용하는 것이 내가 가진 문제를 해결하는 좋은 방법인 것 같았습니다.
내가 한 방법을 공유하고 싶습니다.
먼저 Gemfile에 gem을 추가합니다.
gem "i18n-js"
gem "rails-i18n"
다음을 실행하여 gem을 설치하는 것을 잊지 마십시오.
bundle install
webpacker를 사용하는 경우 다음을 실행하십시오.
npm install i18n-js
자산 파이프라인을 사용하는 경우 this ReadMe을 확인하십시오.config/application.rb
에서 사용 가능한 로케일을 정의합니다. 제 경우에는 영어와 일본어에 대한 지원을 추가하고 있습니다.config.i18n.available_locales = [:en, :ja]
Rails 콘솔에서 사용 가능한 모든 로케일을 확인할 수 있습니다.
I18n::JS.filtered_translations.keys
=> [:en, :ja]
이제
en.yml
에 영어 문자열을 추가합니다.en:
hello: "Hello world"
다음과 같이 Rails 콘솔에서 작동하는지 확인할 수 있습니다.
I18n.t 'hello'
=> "Hello world"
이제
ja.yml
에 일본어 번역을 추가해 보겠습니다.ja:
hello: "こんにちは 世界"
이것이 슬림 파일에서 번역에 액세스하는 방법입니다.
h1 = t('hello')
이제 Rails 쪽에서 작동하게 했으니 React 쪽에서 번역을 가져오겠습니다.
이 줄을 추가하여 미들웨어를 추가합니다.
config.middleware.use I18n::JS::Middleware
config/application.rb
. 미들웨어는 프런트엔드에서 번역 파일을 생성합니다.rails generate i18n:js:config
를 실행하면 config/i18n-js.yml
가 생성됩니다.이것은
config/i18n-js.yml
에 추가된 내 구성입니다.translations:
- file: 'app/javascript/bundles/i18n/en.js'
prefix: "import I18n from 'i18n-js';\n"
pretty_print: true
only: 'en.*'
- file: 'app/javascript/bundles/i18n/ja.js'
prefix: "import I18n from 'i18n-js';\n"
pretty_print: true
only: 'ja.*'
file
js 번역 파일에 대해 내가 선택한 경로를 지정하고 있습니다.prefix
는 선택사항이지만 이것이 없으면 "I18n이 정의되지 않음"오류가 발생하여 작동하지 못했습니다. 결과 번역 파일의 시작 부분에 줄을 추가합니다.pretty_print
도 선택 사항이지만 이것을 넣는 것이 좋습니다. 출력 파일에 공백과 들여쓰기를 추가하여 파일을 훨씬 쉽게 읽을 수 있습니다.달리다
rake i18n:js:export
이렇게 하면 선택한 경로에 대한 번역 파일이 생성됩니다.이것을 반응 파일에 추가하십시오.
import i18n from 'i18n-js'
백엔드에서 기본 로케일 및 로케일을 설정하기 위해 다음을 추가했습니다
views/layouts/application.slim
.- javascript_tag do
I18n.locale = I18n.locale
I18n.defaultLocale = I18n.default_locale
그리고 이것을 추가하십시오
application.rb
config.i18n.default_locale = :ja
React 측에서 설정하려면 렌더링 내부에 이것을 추가할 수 있습니다(이렇게 하면 일본어로 설정됨).
I18n.defaultLocale = "ja"
I18n.locale = "ja"
ja는
"ja"
와 같은 문자열이어야 합니다.마지막으로 React에서 Rails 번역에 액세스할 수 있도록 추가합니다.
<h2>{I18n.t('hello')}</h2>
로케일이 영어로 설정되면 다음과 같이 표시됩니다.
로캘이 일본어로 설정되면 다음과 같이 표시됩니다.
보시다시피 일부 번역 문자열은 더 길어질 수 있으며 이로 인해 css를 처리하는 데 많은 골칫거리가 될 수 있습니다 😱
이 게시물이 누군가를 돕기를 바랍니다.
행복한 i18n-ing!
Reference
이 문제에 관하여(Rails 및 i18n-js를 통한 국제화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/codingmamakaz/internationalization-with-rails-and-i18n-js-1bjb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)