Перевод в JavaScript как gettext в PHP?

Я использую gettext в моем коде PHP, но у меня есть большая проблема. Все мои файлы JavaScript не затронуты переводом, может кто-то говорить мне простой способ получить переводы на выбранном языке в JavaScript также.

28
задан bluish 22 March 2013 в 13:24
поделиться

4 ответа

Самый простой способ - в PHP-файле записывать переводы из gettext в переменные JavaScript.

js_lang.php:

word_hello = "<?php echo gettext("hello"); ?>"
word_world = "<?php echo gettext("world"); ?>"
word_how_are_you = "<?php echo gettext("how_are_you"); ?>"

и затем включить его:

<script type="text/javascript" src="js_lang.php"></script>

Я бы также рекомендовал этот метод в сочетании с плагинами перевода, о которых упоминает S.Mark (которые очень интересны!).

Вы можете определить словарь и в заголовке текущей страницы, не включая внешний файл, но в этом случае вам придется искать и отправлять данные при каждой загрузке страницы, что совершенно излишне, поскольку словарь, как правило, меняется очень редко.

18
ответ дан 28 November 2019 в 03:24
поделиться

Вы можете значительно облегчить себе жизнь, если избавитесь от дурной привычки использовать строковые литералы в своем коде. То есть вместо

 alert("Some message")

используйте

alert($("#some_message_id").text())

, где «#some_message_id» - это скрытый div или диапазон, сгенерированный на стороне сервера.

1
ответ дан 28 November 2019 в 03:24
поделиться

Попробуйте, jQuery i18n или jQuery localisation

Пример для jQuery i18n, и конечно вам нужно сгенерировать JSON словарь на основе языкового файла из php

var my_dictionary = { 
    "some text"  : "a translation",
    "some more text"  : "another translation"
}
$.i18n.setDictionary(my_dictionary);


$('div#example').text($.i18n._('some text'));
7
ответ дан 28 November 2019 в 03:24
поделиться

Я обычно экспортировал переводы в структуре JavaScript:

var app = {}
var app.translations = {
  en:  { hello: "Hello, World!"
       , bye:   "Goodbye!"
       }
, nl:  { hello: "Hallo, Wereld!"
       , bye:   "Tot ziens!"
       }
};

Текущий язык текстов страниц можно определить с помощью:

Это можно прочитать в JavaScript:

var curentLanguage = document.documentElement.lang || "en";
app.lang = app.translations[ currentLanguage ] || app.translations.en;

И тогда вы можете написать код, подобный этому:

alert( app.lang.hello );

Опционально, i18n() или gettext() функция может принести некоторый интеллект, чтобы вернуть текст по умолчанию, если ключ не существует). Например:

function gettext( key )
{
  return app.lang[ key ] || app.translations.en[ key ] || "{translation key not found: " + key + "}";
}
13
ответ дан 28 November 2019 в 03:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: