У меня есть проект, который я хочу перевести на несколько языков для части PHP. Я использую Zend Frameworks Zend_Translate с GetText. Теперь я хочу перевести часть JS тоже.
Я использую JQuery JS Framework и хотел бы услышать ваши мысли о переводе на JS-файлы
Я успешно использовал GetText для перевода файлов JavaScript в три проекта.
Конечно, GetText изначально не поддерживает JavaScript, а JavaScript также не поддерживает GetText. Мое решение было следующим.
gettext("your text here")
. xgettext
в сгенерированных файлах C и любых других файлах моего проекта для создания файлов POT и PO. После перевода файлов PO я должен вернуть переводы к 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.
Это также может вас заинтересовать: плагин gettext для jQuery .
Ну, вы можете расширить строки, чтобы дать им переведенную функцию, которая ищет ресивер в локали.
Вы бы использовали его так:
alert («Ваш любимый язык – английский!». transl ());
И вам будет дано предупреждение с «tu idiom prefiero es Espanol» или что-то еще
Niko
http://plugins.jquery.com/project/jquery-localize нашел это, который используется и для letmegooglethatforyou.com также нашел этот http://plugins.jquery.com/project/l10n, который лучше?
У меня есть веб-страница PHP, которая также существует на нескольких языках. Я написал свой собственный языковой класс на PHP, и когда дело дошло до локализации файлов JavaScript, я просто настроил сервер для выполнения .js-файлов как PHP тоже, и я использовал свой PHP-класс для перевода строк JavaScript.
Что-то вроде этого:
alert ( '<?php echo $l->Get ( 'MyString' ); ?>' );
Я просто включаю файл, который инициализирует «$ l» в начале каждого файла JavaScript. У меня нет проблем с этим.
// just for some idea //var language ="fr_FR"; var language ="sp_SP"; var FRLOCALE = { "Hello": "bonjure ", "My name is %s": "mo nome oc ", "what": "some french thing" }; var SPLOCALE = { "Hello": "Spanish for hello", "My name is %s": "spanish for my name is ", "what": "qu" }; function translated(language, string){ if (language.indexOf("fr") > -1) { return FRLOCALE[string] ? FRLOCALE[string] : string; } if (language.indexOf("sp") > -1) { return SPLOCALE[string] ? SPLOCALE[string] : string; } return string; } alert(translated(language,"Hello")); alert(translated(language,"some thing not translated "));
в// just for some idea //var language ="fr_FR"; var language ="sp_SP"; var FRLOCALE = { "Hello": "bonjure ", "My name is %s": "mo nome oc ", "what": "some french thing" }; var SPLOCALE = { "Hello": "Spanish for hello", "My name is %s": "spanish for my name is ", "what": "qu" }; function translated(language, string){ if (language.indexOf("fr") > -1) { return FRLOCALE[string] ? FRLOCALE[string] : string; } if (language.indexOf("sp") > -1) { return SPLOCALE[string] ? SPLOCALE[string] : string; } return string; } alert(translated(language,"Hello")); alert(translated(language,"some thing not translated "));