i18n(Rails with i18n)
Rails with i18n
Rails 프로그램을 만들 때validate의 정보, 단추의 문장 등은 보통 영어로 표시됩니다(view의 초기 형태는 영어이기 때문입니다...)
일본인이라 일본어로 표현하고 싶지만 직접 끼워넣으면 보수성이 떨어진다.제작진에 따라 언어의 동요 등도 문제가 발생할 수 있다.
또 다언어화 대응 측면에서 같은 화면이 언어에 맞춰 제작되는 것도 보수성이 떨어진다.
Rails를 포함하는 다국어 대응
i18n
근거Wikipedia
정보 처리의 국제화와 지역화는 소프트웨어를 개발하는 환경과 다른 환경이고 특히 외국과 서로 다른 문화에 적합한 수단이다.
국제화(미국 영어: 국제화 영국 영어: 국제화, i18n)는 소프트웨어 디자인의 프로젝트로 소프트웨어가 각종 언어와 지역에 적응할 수 있고 소프트웨어에 대해 기술적인 변경을 하지 않아도 된다.
이런 견해가 있다.중요한 것은'기술적인 변경이 아니라 다양한 언어와 지역에 적응하는 것'이다.
다언어화된 가져오기
Gemfile
Gemfile에 GemRails용 다국어 라이브러리 rails-i18n을 추가합니다.
Gemfile
# rails-i18n
gem 'rails-i18n'
구문을 사용합니다.terminal
$ bundle install
config/application.rb
config/application.rb에 설정 정보를 추가합니다.
config/application.rb
...
module Habilidad
class Application < Rails::Application
...
# 言語ファイルを階層ごとに設定するための記述
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]
# アプリケーションが対応している言語のホワイトリスト(ja = 日本語, en = 英語)
config.i18n.available_locales = %i(ja en)
# 上記の対応言語以外の言語が指定された場合、エラーとするかの設定
config.i18n.enforce_available_locales = true
# デフォルトの言語設定
# config.i18n.default_locale = :en
config.i18n.default_locale = :ja
...
end
end
config/locales
config/localles에서 다국어 설정 파일(*.yml)을 구성합니다.
config.i18n.load_path 설정을 통해 설정 파일을 단계별로 관리할 수 있습니다.
참고로 제작 중인 앱은 이런 느낌이에요.
config/locales
/my_application/config/locales
|--defaults ## 共通系
| |--en.yml
| |--ja.yml
|--models ## モデル系
| |--model_name_A ## 各モデルのディレクトリ
| | |--en.yml
| | |--ja.yml
| |--model_name_B
| | |--en.yml
| | |--ja.yml
|--views ## ビュー系
| |--view_name_A ## 各ビューのディレクトリ
| | |--en.yml
| | |--ja.yml
| |--view_name_B
| | |--en.yml
| | |--ja.yml
이렇게 되면 각 모델의 화면마다 다국어 설정 파일을 관리할 수 있어 여러 사람이 개발해도 문제가 생기기 어렵다.뷰도 index.ja.yml처럼 화면 단위로도 잘라낼 수 있지만 너무 지루한 것 같아서 저는 사용하지 않았습니다.(복잡하면 채택 가능)
.yml
파일 이름은 해당 언어입니다.
여기. 참고로 제작되었습니다.
default/ja.yml
ja: ## 言語名
dictionary: ## 共通系であることを示す
title: ## 画面のタイトル
create: "新規作成"
update: "更新"
destory:
confirm: "削除確認"
message: ## 固定メッセージ
create:
complete: "登録しました"
update:
complete: "更新しました"
destory:
confirm: "削除しますか?"
button: ## 表示するボタン
create: "新規作成"
search: "検索"
clear: "クリア"
update: "更新"
destory: "削除"
cancel: "キャンセル"
time: ## 表示する時間の形式
formats:
default: ! "%Y-%m-%d %H:%M:%S"
models/model_name_A/ja.ymlja:
activerecord: ## モデルの開始はactiverecord
models: ## モデル
model_name_A: "モデルA"
attributes: ## 属性(カラム)
model_name_A:
id: "ID"
name: "名称"
created_at: "登録日時"
updated_at: "更新日時"
views/view_name_A/ja.ymlja:
view_name_A:
index:
title: "画面A"
끼워 넣다
뷰에 포함합니다.
호출 방식은 다음과 같은 느낌이 있다
ruby
## モデル
$ Model_name_A.model_name.human
=> モデルA
$ Model_name_A.human_attribute_name(:name)
=> 名称
## ロケール指定
$ t('dictionary.button.search')
=> 検索
$ t('view_name_A.index.title')
=> 画面A
## フォーマット
$ l(model_name_A.created_at, format: :default)
=> 2019-01-01
위에서 말한 바와 같이config/application.rb에 의해 설정된 언어.yml에 설정된 문을 표시합니다.동적 전환
지금까지 설정 파일을 업데이트할 때마다 언어가 바뀌었는데 동적 전환 방법을 설명해 드리겠습니다.
controller/application_controller.rb
controller/application_controller.rb
class ApplicationController < ActionController::Base
before_action :set_locale
def set_locale
I18n.locale = locale
end
def locale
@locale ||= params[:locale] ||= I18n.default_locale
end
def default_url_options(options={})
options.merge(locale: locale)
end
end
상기 설정을 추가하면locale를 동적으로 변경할 수 있습니다.config/routes.rb
config/routes.rb
Rails.application.routes.draw do
scope '(:locale)', locale: /#{I18n.available_locales.map(&:to_s).join('|')}/ do
# For details on the DSL available within this file, see
resources :resource_As
end
end
scope에서 동적 다중 언어에 대응하는 동작을 포위할 때 [domain]/ja/hogehogehoge/등 기술에서 표시된 언어를 매개 변수로 동작에 전달할 수 있습니다.제출된 매개 변수는 응용 목록입니다controller.rb에서 대응하는 언어를 판단할 때 이 언어로 화면을 그립니다.결실
자를 지정하면 일본어, 인을 지정하면 영어로 전환할 수 있습니다!
Reference
이 문제에 관하여(i18n(Rails with i18n)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tsunemiso/items/bedc7593c7ccd05c395b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)