Rails로 기본 정보 기술자 시험의 과거 문제 사이트를 만든다(2:일본어화(i18n)편)

소개



유루~쿠 배운다. 모두의 웹 공부 커뮤니티. "뉴~부루회"를 운용중입니다.
h tps : // 네 w 부루. 기주 b. 이오/

거기서, 뭔가 교육용의 컨텐츠를 갖고 싶어~라고 생각하고, 이번 기획을 스타트했습니다!

Rails에서 기본 정보 기술자 시험의 과거 문제 사이트를 만듭니다!

최종 목표


  • 문제 및 답변 등록은 Scaffold에서 간단하고 OK
  • API를 준비하고 무작위로 문제를 추출하는 기능을 추가합니다
  • TwitterBOT, LINEBOT, SlackBOT이 가능하면 좋을 것입니다

  • 히스토리



    1: 구축편
    htps : // 코 m / 네 w 부루 / 있어 ms / 에 d59f47 아 c645b19620f6
    2:일본어화(i18n)편
     본 페이지
    3:부모와 자식 관계, 등록편
    htps : // 코 m / 네 w 부루 / 있어 ms / f2 아 20289
    4:부모와 자식 관계, 참조편
    h tps:// 퀵했다. 작은 m / 네 w 불 / MS / 51b11BD02691 그림 FC2 c0d
    5: API편
    htps : // 코 m / 네 w 부루 / 있어 ms / 89f9f847 아 2648 bd d006c
    6:SlackBOT편
    htps : // 이 m / 네 w 부루 / 있어 ms / 감히 b9 아 cb453이다 786bd59
    7 : Heroku 배포 ~ 자동화 편
    htps : // 코 m / 네 w 부루 / 있어 ms / 0 아 8 b02 에 1 8 c8 737 c7

    이번에 할 일


  • 일본어화(i18n)한다

  • 일본어화(i18n)하기



    1. 기본 언어를 일본어로 설정합니다.



    config/application.rb
    class Application < Rails::Application
      config.i18n.default_locale = :ja
    end
    

    2. gem 'rails-i18n'을 추가합니다.



    ./Gemfile
    gem 'rails-i18n'
    

    bundle-install
    $ bundle install
    

    일본어를 사용하는 경우의 기본 로케일 파일 「 svenfuchs/rails-i18n 」를 다운로드하지 않아도 됩니다.
    ※「config.i18n.default_locale=:ja」를 먼저 설정해 둘 필요가 있습니다.

    3. i18n 로드 경로 확장



    config/application.rb
    class Application < Rails::Application
      config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]
    end
    

    4. config/locales 아래에 로케일 파일 배치



    이하, 어디까지나 예입니다. 여러분의 관리하기 쉬운 구성으로 받을 수 있으면 좋다고 생각합니다.

    파일 배치 예
    config
     └─ locales
         ├─ models  # models関連のファイルはここで管理する
             ├─ answer.ja.yml  # modelは1つのファイル(model.ja.ymlなど)で管理しても良いと思います。
             ├─ question.ja.yml
         └─ views  # views関連のファイルはここで管理する
             ├─ answer.ja.yml
             ├─ question.ja.yml
         ├─ ja.yml  # 共通部分はここに
    

    5. 일본어화합시다



    View용

    config/locales/views/question.ja.yml
    ja:
      questions:
        index:
          title: '問題一覧'
        show:
          title: '問題参照'
        edit:
          title: '問題編集'
    

    모델용

    config/locales/models/question.ja.yml
    ja:
      activerecord:
        models:
          question: '問題'
        attributes:
            question:
              id: 'ID'
              category1: 'カテゴリ1'
              category2: 'カテゴリ2'
              category3: 'カテゴリ3'
              msg: '問題文'
              created_at: '作成日'
              updated_at: '更新日'
    

    공통용

    config/locales/ko.yml
    ja:
      btn:
        new: '新規作成'
        show: '参照'
        edit: '編集'
        destroy: '削除'
        back: '戻る'
      confirm:
        destroy: '本当に削除して良いですか?'
    

    6. 이제 View에 적용합시다.



    변경 전

    app/views/questions/index.html.slim
    h1 Listing questions
    
    table
      thead
        tr
          th Category1
          th Category2
          th Category3
          th Msg
          th
          th
          th
    
      tbody
        - @questions.each do |question|
          tr
            td = question.category1
            td = question.category2
            td = question.category3
            td = question.msg
            td = link_to 'Show', question
            td = link_to 'Edit', edit_question_path(question)
            td = link_to 'Destroy', question, data: { confirm: 'Are you sure?' }, method: :delete
    
    br
    
    = link_to 'New Question', new_question_path
    

    변경 후

    app/views/questions/index.html.slim
    h1 = t('.title')  # Viewを格納しているディレクトリを起点に、相対パス指定します。
    
    table
      thead
        tr
          th = t('activerecord.attributes.question.category1')  # tを使って、フルパス指定します。
          th = Question.human_attribute_name(:category2)  # human_attribute_nameを使って指定します。
          th = Question.human_attribute_name(:category3)
          th = Question.human_attribute_name(:msg)
          th
          th
          th
    
      tbody
        - @questions.each do |question|
          tr
            td = question.category1
            td = question.category2
            td = question.category3
            td = question.msg
            td = link_to t('btn.show'), question
            td = link_to t('btn.edit'), edit_question_path(question)
            td = link_to t('btn.destroy'), question, data: { confirm: t('confirm.destroy') }, method: :delete
    
    br
    
    = link_to t('btn.new'), new_question_path
    

    라는 느낌으로 View를 변경합시다.

    문제 일람 화면은, 이런 느낌이 됩니다.


    이번에는 여기까지



    고마워요!
    다음에는 레이아웃을 깨끗하게 해 나갈까.

    좋은 웹페이지 즐겨찾기