Ruby I18n gem으로 Rails 앱 국제화

7737 단어 webdevrailsi18n
pch.vector/Freepik에서 설계

영어 이외의 언어로 Rails 애플리케이션을 만들 계획이라면 Rails가 번역을 도와드립니다. Ruby I18n gem은 개발에 집중할 수 있도록 응용 프로그램을 단일 사용자 정의 언어로 번역하거나 응용 프로그램에서 다국어 지원을 제공하기 위한 사용하기 쉬운 프레임워크를 제공합니다.

이 기사에서는 설치 및 구성을 안내하고 사용법을 시연합니다.


설치 및 구성



애플리케이션에서 일본어 번역을 구성해 보겠습니다.
i18nGemfile를 추가하는 것으로 시작합니다.

# Gemfile

gem 'i18n'



먼저 ja에서 기본 로케일을 config/application.rb로 변경해 보겠습니다.

# config/application.rb

config.i18n.default_locale = :ja



일본어의 로케일 키는 :ja 입니다. 다른 언어의 경우 ISO 639-1 codes을 확인하십시오.

번역에 다른 위치를 사용하려면 config/application.rb에 로드 경로를 추가해야 합니다.

# config/application.rb

config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}')]



이제 번역을 config/locales/ 디렉토리에 저장해야 합니다.

YAML(.yml) 또는 일반 Ruby(.rb) 파일을 사용할 수 있지만 개발자 사이에서는 YAML이 선호됩니다. 모든 번역을 하나의 파일에 넣으면 관리하기 어려울 것입니다. 대신 보기에서 모델을 분리하고 파일을 계층 구조로 구성하는 것이 좋습니다.

예를 들어:

config
└── locales
    ├── model.ja.yml
    └── views
        ├── admin
           ├── user_sessions
              └── ja.yml
           └── users
               └── ja.yml
        ├── shared
           └── ja.yml
        ├── user_sessions
           └── ja.yml
        └── users
            └── ja.yml


이제 번역을 할 시간입니다.

# config/locales/model.ja.yml

ja:
  activerecord:
    models: # translation for model name
      user: ユーザー 
    attributes: # translation for attributes of each model
        user: # translation for each attribute of User model
          id: ID
          first_name: 名前
          last_name: 
          email: メールアドレス
          password: パスワード
  attributes: # translation for attributes that are common for all the models
    created_at: 作成日
    updated_at: 更新日



# config/locales/views/users/ja.yml

ja:
  users:
    index:
      title: 'ユーザ一覧'
    show:
      title: '%{user_name}さんのユーザー情報' # You can send parameters to interpolation.
    edit:
      title: '%{user_name}さんのユーザー情報を編集'



용법



Rails는 뷰 내에서 로케일을 조회할 수 있는 편리한 도우미 메서드를 제공합니다.

견해



다음과 같이 users.index.title 템플릿 내에서 app/views/users/index.html.erb 값을 조회할 수 있습니다.

# app/views/users/index.html.erb

<%= t '.title' %>

# This is equivalent without automatic translation scoping
<%= t 'users.index.title' %>


모델



모델의 경우 model_name.humanhuman_attribute_name 도우미 메서드가 있습니다.

# app/views/users/index.html.erb

# This will return activerecord.models.user, "ユーザー"
<li><%= User.model_name.human %></li>

# This will return activerecord.attributes.user.id, "ID"
<li><%= User.human_attribute_name(:id) %></li>

# This will return activerecord.attributes.user.email, "メールアドレス"
<li><%= User.human_attribute_name(:email) %></li>



Ruby/Rails의 강점은 커뮤니티에서 제공하는 무거운 짐을 덜어주는 보석이 많다는 것입니다. I18n도 그 중 하나입니다.

참조:
Rails Guides "Rails Internationalization (I18n) API"

좋은 웹페이지 즐겨찾기