Я успешно использовал GetText для перевода файлов JavaScript в трех проектах.
Конечно, GetText изначально не поддерживает JavaScript, а JavaScript также не поддерживает GetText. Мое решение было следующим.
- В JavaScript я окружаю переводимые строки
gettext("your text here")
.
- Затем у меня есть скрипт, который извлекает строки из файлов JavaScript и создает файл C, потому что C поддерживается gettext.
- Затем я использую
xgettext
для сгенерированных файлов C и любых других файлов в моем проекте для создания файлов POT и PO.
После перевода PO-файлов мне нужно вернуть переводы на JavaScript ...
- Я снова анализирую файлы JavaScript, вспоминая список переводимых строк, а затем для каждой локали:
- Используя язык с поддержкой GetText (в моем случае PHP), я переводил все строки и выводил файл JavaScript.
Например, файл локали для эстонского языка (например, et_EE.js
) может выглядеть следующим образом:
var LOCALE = {
"Hello": "Tere",
"My name is %s": "Minu nimi on %s",
"Enter your credit card number": "Sisesta oma krediitkaardi number"
};
function gettext(string) {
return LOCALE[string] ? LOCALE[string] : string;
}
В зависимости от выбранной локали вы можете указать et_EE.js
или en_US.js
или ...
en_US.js
, вероятно, будет содержать только следующее:
function gettext(string) {
return string;
}
Немного сложнее для ngettext()
, но вы должны понять общую идею.
Самое замечательное, что я могу использовать все доступные инструменты gettext. Особенно, когда у меня есть переводимые тексты как на PHP, так и на JavaScript - я могу использовать один и тот же инструмент для их перевода, а также гарантировать, что одна и та же строка будет переведена одинаково и в JavaScript, и в PHP.
ПРИМЕЧАНИЕ: Если вы не имеете дело с веб-приложением, интенсивно использующим JavaScript, вам следует дважды подумать, прежде чем создавать содержимое страницы, созданное с помощью JavaScript.