2015-12-30 13 views
5

Cách đặt ngôn ngữ ở Phoenix, để sử dụng priv/gettext/{lang} /LC_MESSAGES/errors.po?Cách đặt ngôn ngữ cho lỗi.po?

Khi thử nghiệm, tôi đã xây dựng tệp miền địa phương với mix gettext.merge priv/gettext --locale ja và dịch một số từ trong đó.

Nó hoạt động nếu tôi gọi một cách rõ ràng put_locale/2 trong web/views/error_helpers.ex<%= translate_error(message) %> trong tệp mẫu, nhưng có chút xấu xí, ở điểm DRY.

def translate_error(msg) do 
    Gettext.put_locale(LoginStudy.Gettext, "ja") 
    Gettext.dgettext(LoginStudy.Gettext, "errors", msg) 
end 

Có cách nào tốt hơn để đặt ngôn ngữ mặc định không? Tôi đã chỉ định default_locale trong config/config.ex, nhưng nó không hoạt động.

config :login_study, LoginStudy.Endpoint, default_locale: "ja", 

Best Regards,

Trả lời

5

lớn câu hỏi @hykw! Vì hỗ trợ Gettext ở Phoenix là mới, tài liệu chỉ mới bắt đầu xuất hiện.

Một điểm khởi đầu tốt là bài đăng blog tuyệt vời bởi Rebecca Skinner: http://sevenseacat.net/2015/12/20/i18n-in-phoenix-apps.html

Ví dụ, nếu bạn muốn thiết lập miền địa phương để japanese chỉ dành cho một số các yêu cầu web của bạn, bạn có thể định nghĩa một phích cắm, khi cô đã làm với MyApp.Locale và chạy nó khi bắt đầu vòng đời yêu cầu của bạn. Tôi chỉ không khuyên bạn nên lưu trữ ngôn ngữ trong phiên nhưng giữ nó thay vì là một phần của URL hoặc một số thông số khác.

Tuy nhiên, nếu bạn muốn locale để luôn được japanese, bạn có thể viết trong tập tin cấu hình của bạn:

config :my_app, MyApp.Gettext, default_locale: "ja" 

Bạn có thể tìm thêm thông tin về vấn đề này trên các tài liệu gettext: http://hexdocs.pm/gettext/Gettext.html

+0

José , cảm ơn bạn vì url và cấu hình! Nó hoạt động hoàn hảo! – hykw

Các vấn đề liên quan