Łukasz
Wesołowski
Programista,
Gadu-Gadu S.A.
Temat: i18n w JavaScript
Witam,Od jakiegoś czasu wciąż nie daje mi spokoju kwestia i18n w kontekście skryptów JS (w jaki sposób najrozsądniej zarządzać tłumaczeniami w JS-ie?).
Najprostszym sposobem jest "wrzucenie" wszystkich tłumaczeń do globalnego obiektu, przypisanie ich do odpowiednich namespace-ów:
var i18n =
{ user:
{
"phrase 1": "traslated phrase 1",
"phrase 2": "traslated phrase 2"
},
group:
{
"phrase 1": "traslated phrase 1",
"phrase 2": "traslated phrase 2"
}
}
a następnie w skrypcie odwoływanie się do nich w taki sposób:
i18n.user["phrase 1"] itd.
Można też dodać dodatkową warstwę i stworzyć globalnie dostępną funkcję __("phrase", "namespace"), która będzie korzystać z obiektu i18n i zwracać nam odpowiednie tłumaczenia w następujący
sposób: __("phrase 1", "user") itd.
Jeśli dodatkowo wykorzystamy js-owe closures i poszczególne namespacy-y ustawimy jako private to mamy pewność, że tylko __() będzie miała do nich dostęp i w przyszłości będzie można łatwo zmieniać zarówno reprezentację słownika, jak i miejsce jego składowania (na pliki xml lub cokolwiek innnego).
Mam więc do was pytanie w jaki sposób zarządzacie tłumaczeniami waszych skryptów. Chętnie poznam inne sposoby, bo na razie tylko te wyżej wymienione są w miarę rozsądne, co nie odznacza że nie można lepiej ;)Łukasz Wesołowski edytował(a) ten post dnia 03.01.09 o godzinie 16:32