Как перевести строки в JS

У меня есть проект, который я хочу перевести на несколько языков для части PHP. Я использую Zend Frameworks Zend_Translate с GetText. Теперь я хочу перевести часть JS тоже.

Я использую JQuery JS Framework и хотел бы услышать ваши мысли о переводе на JS-файлы

    Я успешно использовал 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.

    Это также может вас заинтересовать: плагин 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 "));