Tôi cần quốc tế hóa các chuỗi giao diện người dùng trong ứng dụng HTML ELM của tôi cho 3 ngôn ngữ khác nhau.Cách tốt để quốc tế hóa ứng dụng Elm là gì?
Tôi đang nghĩ đến việc làm điều này:
1) Tôi sẽ nhận được currentLanguage từ Javascript, và vượt qua nó xuống trong ProgramWithFlags. I'llkeep ngôn ngữ trong mô hình
2) Tôi sẽ thiết lập một số loại trong mã của tôi
type alias Languages = English | French | Spanish
-- One of these for each string I want to internationalize
type alias InternationalizedStrings = StringHello | StringFoo | StringBar
3) Tôi sẽ làm một chức năng trả lại từng cụm từ dịch để sử dụng trong quan điểm của tôi.
getPhrase: InternationalizationString Languages -> string
getPhrase stringId lang =
case lang of
English ->
case stringId of
StringHello -> "Hello"
StringFoo -> "Foo"
StringBar -> "Bar"
French ->
case stringId of
StringHello -> "Bonjour"
StringFoo -> "Oui"
StringBar -> "Non"
...
Có cách nào tốt hơn để thực hiện việc này không? Tôi có rất nhiều chuỗi.
Điều bạn có thể làm là phân phối một loại kiểu nhất định dựa trên mã ngôn ngữ trong URL. Ví dụ, '/ fr/phrase' sẽ phục vụ frenchModel – DevNebulae
Một lợi thế để sử dụng các kiểu union là mỗi thẻ có thể có các tham số. Bạn có thể có một thẻ 'StringHello String' cho biết bạn cần chỉ định tên người dùng, và nó được đánh mạnh theo cách mà tra cứu từ điển thông thường không thể. –