일본어 Rails 어플을 만들 때 가장 좋은 거.

9742 단어 I18nRails

개시하다


작업 중에 제작된 Rails 응용 프로그램은 다양한 언어를 사용합니다.이 관계로 Rails 가이드Rails 국제화(i18n) API를 다시 읽어봤는데... 지금까지 일본어 앱을 몇 개 썼는데 좀 더 쉽게 완성할 수 있을 것 같아요.국제화를 쓰면 어차피 일본어만 쓸 수 있을 거라고 생각해요. 잘 생각해보면 Rails표준어 중의 영어 이외의 언어를 쓰면... 국제화일 거예요.
따라서 일본어로 된 Rails 애플리케이션을 쓰려면 이 장 반드시 읽어야 합니다.읽지 않은 사람은 꼭 읽어 보세요.나는 프로그램의 기술량이 반드시 줄어들 것이라고 생각한다.
(끝)
이렇게 하면 자신이 재미없어서 이런 간단한 샘플을 만들었어요.원본 파일도 공개 하고 있으니까 마음에 드는 사람은 움직여서 놀아요.

설정


국제화(i18n) 기능을 사용하기 때문에 설정합니다.기본 설정이 없기 때문에 새 것을 만듭니다.( 출처 )
자세한 내용은 가이드I18n 모듈 설정를 보십시오.
config/initializers/locale.rb
# config/locales以下の〜.ymlや〜.rbを訳語ファイルとして読み込みます。
I18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]
# デフォルトの使用言語を日本語にします。
I18n.default_locale = :ja

번역 파일의 디렉터리 구조

config/locales/ja.yml에 다 써도 이동이 가능하지만 관리의 편의성을 보면 역할에 따라 파일을 분할하는 게 좋다고 본다.Rails 가이드의 예 자기도 그게 제일 잘 어울린다고 생각했어요.
일본어만 처리하면 모델 이름의 디렉터리를 만들지 않고 모델 이름으로 직접 파일을 만들어도 된다.
config/locales/
├── defaults.yml
├── models
│   └── blog.yml
└── views
    └── defaults.yml

Rails의 기본 오류 정보, 날짜 및 시간 형식을 일본어로 번역


Giithub에는 자원봉사자가 번역한 문서rails-i18n가 있기 때문에 감사함과 동시에 사용한다.
Gemfile
gem 'rails-i18n'

형식의 항목 이름과 오류 메시지를 일본어화하기


일본어를 잘하고 싶은 이유가 이거예요.
프로젝트 이름을 곳곳에 쓰는 것은 매우 어려운 일이겠지...
먼저 설정한 다음에 모델과 속성의 번역어에 로그인하면 표시될 수 있습니다.

모델


여기블로그 모델역어의 예입니다.
config/locales/models/blog/ja.yml
ja:
  activerecord:
    models:
      blog: 記事
    attributes:
      blog:
        title: タイトル
        body: 本文
        user_id: 著者
        status: 状態
        created_at: 作成日時
        updated_at: 更新日時

오류 메시지 표시



모델에 대해 save 또는 valid?를 진행하면 errors.fullmessages에 항목 이름이 포함된 오류 정보가 나타나므로 오류 메시지가 표시됩니다.( 출처 )
app/views/shared/_form_error_messages.html.erb
  :
<% model.errors.full_messages.each do |message| %>
  <li><%= message %></li>
<% end %>
  :
<% end %>

모형과 속성을 얻은 번역어


창문체


#label에서 번역한 속성 이름으로 입력 항목의 라벨을 만들 수 있습니다.( 출처 )

양식 이외



확인 화면에 입력 형식에 맞춘 항목명은 손으로 노력하지 않고도 번역어를 불러낼 수 있다.( 출처 )
  :  
<thead>
  <tr>
    <th><%= Blog.human_attribute_name(:title) %></th>
    <th><%= Blog.human_attribute_name(:user_id) %></th>
    <th></th>
  </tr>
</thead>
  :
#human_attribute_name(属性名)에서 번역한 모델 명칭도 얻을 수 있다.(...어떻게 쓸지 몰라서 컨트롤러로 못 맞춘다...)

창 개체



모델은 아니지만 모델이나 복잡한 포즈를 만들 때 액티브 모델의 창 개체를 사용할 수 있지만 똑같이 사용할 수 있다.그러나 번역문서의 항목명은 .model_name.human이 아니라active_record였다.( 번역어의 출처창 원본 )
config/locales/models/forms/session/ja.yml
ja:
  activemodel:
    models:
      forms/session: セッション
    attributes:
      forms/session:
        login_id: ログインID
        password: パスワード

날짜와 시간 등 일본어


날짜 등을 문자열로 바꾸고 싶을 때는 지금이라도 좋으면 좋겠다고 생각했는데... 그래서 템플릿에 사용했어요active_model...이런 일이 반복되면서 앱 내에서 다양한 차이가 생겼고, 이후에도 여러 차례 고민했던 일이 있었다.#strftime를 사용하면 좀 더 가지런하게 할 수 있을 것 같아요.

위의 예에서 쓴 형식은 rails-i18n 근처에 있어요.에 정의되어 있다.
마지막 I18n.l 이 없습니다. 이것은 번역 파일에 정의된 것입니다.
이것들을 사용하면 다소의 변화도 고정화될 수 있다고 생각합니다.(아직 체험에 성공하지 못했다.)
config/locales/views/defaults/ja.yml
ja:
  date:
    formats:
      nengetsu: "%y年%m月"

끝말


다시 한 번Rails 가이드읽어보면 실감이 안 나고 무시한 부분을 알아봤으면 좋겠어요.
준비된 편리한 기능을 사용하고 되도록 노력하지 마세요.

좋은 웹페이지 즐겨찾기