[초보자용] i18n을 이용하여 enum의 f.select 옵션을 일본어로 [Rails]

8527 단어 I18nenumRubyRails
안녕하세요, 엔지니어로서 취업을 목표로 하는 너구리입니다.
지난번 보도에서haml,formwith를 이용하여 f.select의 입력 형식을 만들기 위해 반복적으로 시도하면
그리고 엔um을 이용해서 데이터를 더 쉽게 활용할 수 있는 말을 썼어요.
▶ 지난번 기사는 다음과 같다
[초보자 대상] formwith,haml,enum을 사용하여 select 드롭다운 리스트를 만드는 이야기 [Rails]
그 중에서 f.select의 입력 형식이 실현되었다
마지막으로 남은 과제는 옵션이 영어로 바뀌었다는 것이다.
그래서 이번에 엔움을 사용할 때 f.select의 옵션을 일본어로 바꾸는 방법을 소개하고 싶습니다.
아울러 찾아보기 등 다른 곳에서도 일본어화된 데이터를 사용하는 방법도 소개했다.
잘 부탁드립니다.

이번 참고 기사.


우선 이번에 참고한 기사는 여기에 있습니다.
참고라기보다는 이쪽 기사가 너무 좋아서 거의 다 그런 내용으로 이뤄진 것 같아요.
본 보도의 내용도 아래의 보도와 대체로 같다.
페이지 아래에 있는 select 옵션 이외의 사용 방법 항목만 다릅니다.
자신의 총결산을 위해 했던 일을 적었다
select 옵션에서 사용하는 방법만 알고 싶습니다!이런 분들은 다음 기사를 참고하세요.
▶ 참고한 기사는 다음과 같다.
https://qiita.com/tomoharutsutsumi/items/272a10f4fefb555944f2

필요한 파일


enum을 일본어화하는 데 필요한 문서는 다음과 같다.
  • (gem) enum_help, rails-i18n
  • 모델 ← 이번에는restaurant입니다.rb
  • ja.yml
  • application.rb
  • 기타, 엔움을 일본어로 기록하고자 하는 보기 파일입니다.

    gem 파일 설치


    우선, enum이 I18n(국제화)gem에 적응하도록 한다.
    enum_help를 설치합니다.
    Gemfile
    gem 'enum_help'
    
    ※ 부기: 당초 rails-i18n라고 적힌 젬도 필요한데, rails-i18n는 라일스2.2 이후부터 라일스에 부착됐다.
    bundle lnstal 주세요.

    모델에 enum 기재


    다음에 모델에 enum을 기록합니다.
    이번에는 식당 정보가 실린restaurants표에서 낮 예산표 budget-입니다.d에 대해 다음과 같은 enum을 기록하였다.
    models/restaurant.rb
    enum budget_d: {
        default: 0,
        till_1000: 1,
        till_2000: 2,
        till_3000: 3,
        till_4000: 4,
        till_5000: 5,
        over_5000: 6
      },  _prefix: true
    
    라스트prefix: 정말 같은 값이 있는 여러 개의 enum이 존재할 때 추가된 것입니다.
    이번에는 저녁 예산을 정하는budget-입니다.n도 같은 응용 프로그램에 존재합니다나는 진짜를 넣었다.
    *추기: 두 개의 status 같은 것이 있는데 이런 경우에도 넣어야 하기 때문에 상기 두 개의 매우 비슷한 탁자 이외에도 넣어야 한다.
    ▶ 자세한 내용은 여기를 보세요.
    Rails 5 부터 enum 을 사용할 때접두어suffix 사용하기

    ja.yml에 번역 정보 기재


    번역 정보가 있는 파일,ja.창문을 열다
    config/localles/내에서 제작됩니다. 아래와 같습니다.
    config/locales/ja.yml
    
    ja:
      enum:
        restaurant:
          budget_d:
            default: "--"
            till_1000: "~¥999"
            till_2000: "¥1,000~¥1,999"
            till_3000: "¥2,000~¥2,999"
            till_4000: "¥3,000~¥3,999"
            till_5000: "¥4,000~¥4,999"
            over_5000: "¥5,000~"
    
    
    이상은 enum 데이터를 번역하고 싶을 때의 기재 방법이기 때문에 다른 곳을 번역하고 싶을 때 다른 기재 방법입니다.
    ▶ 자세한 내용은 여기 기사를 보세요.
    https://qiita.com/shi-ma-da/items/7e5c3d75c9a9f51abdd5

    기본 언어를 일본어화하기


    application.rb 설정을 변경하고 기본 언어를 일본어로 설정합니다.
    config/application.rb
    
     #  前略
    
    module SomeApp
      class Application < Rails::Application
    
        # 中略
    
        config.i18n.default_locale = :ja # デフォルトのlocaleを日本語(:ja)にする
    
     end
    end
    

    경로를 통해 i18n의 로컬 파일을 읽습니다.


    아래의 기술도 응용 프로그램이다.rb에 추가하여 localles 폴더의 파일을 모두 읽습니다.
    config/application.rb
    
    #  前略
    
    module SomeApp
      class Application < Rails::Application
    
        # 中略
    
        config.i18n.default_locale = :ja
        config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] # 追記
    
      end
    end
    
    이렇게 되면 엔음의 일본어화된 설정이 완성됩니다!
    설정만 해도 상당히 길다.

    최종 코드


    그리고 이번 f.select에서 사용한 코드는 다음과 같다.
    viewfile
    
    = f.select :budget_d, Restaurant.budget_ds_i18n.keys.map{|k| [I18n.t("enum.restaurant.budget_d.#{k}"), k]}
    
    
    우선,budgetd 내용의 배열,budgetds
    키스 방법을 실시하다. ["default": "-"], ["till 1000": "~¥999"],...]등키("default", "till 1000")를 배열로 꺼냅니다.
    그리고 모든 수치에 대해 맵으로 처리합니다.
    처리 내용:
    I18n.t ... enum 내용을 번역하는 방법
    [번역 내용]: "value"] 어레이를 만드는 데 사용됩니다.
    enum.restaurant.budget_d 와 같다
    ja.youl에 enum 번역 정보를 적은 위치.

    결실


    결과적으로 완성된 드롭다운 리스트는 여기에 있다.

    생성된 코드는 여기 있습니다.

    value의default와till1000등의^^;이렇게 하면value는 데이터베이스에 정확하게 저장됩니다.

    다른 곳에서 번역된 데이터를 사용하다.


    마지막으로 보기의 다른 곳에서 번역된 파일을 사용하는 방법을 소개한다.
    기본적으로'열명 i18n'을 더하면 ok입니다.
    view
    
    %p= restaurant.budget_d_i18n #これで、昼の予算が日本語で表示される
    
    
    엔움의 일본어화든 f.select의 표기든 모두 오랜 시간이 걸려서 이루어진 것이다.
    그럼 여기까지 읽어주셔서 감사합니다.

    좋은 웹페이지 즐겨찾기