Лучшие практики Локализации PHP? gettext?

Мы находимся в процессе создания нашего международного веб-сайта, позволяя несколько языков.

Я изучил "gettext" php однако, если я понимаю это правильный, я вижу большой дефект:

Если моя веб-страница имеет скажем, "Привет Мир" как статический текст. Я могу поместить строку как <?php echo gettext("Hello World"); ?>, генерируйте po/mo файлы с помощью инструмента. Затем я дал бы файл переводчику, чтобы продолжить работать.

Несколько дней спустя мы хотим изменить текст на английском языке для высказывания "Привет Маленького мира"? Я изменяю значение в gettext? Я создаю английский файл ПО и изменяю его там? При изменении gettext, он рассмотрит это как новую строку, и Вы немедленно освободите текущий перевод...

Мне кажется, что постепенно, содержание php файла будет иметь старый текст везде. Или людей, переводящих, возможно, придется сказать, "когда Вы видите Привет, что Мир, вместо этого, переводит Привет Маленький мир".

Я не знаю, что запутываюсь.

На других языках программирования я видел, что они используют ключевые слова такой как web.home.featured.HelloWorld.

Что лучший способ состоит в том, чтобы обработать переводы в PHP?

Спасибо

21
задан Nathan H 7 May 2010 в 18:51
поделиться

2 ответа

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

В PO-файле есть msgid и msgstr. Msgid - это значение, которое заменяется на msgstr в файле PHP в зависимости от локализации.

Теперь вы можете сделать из этих msgid все, что захотите, вы вполне можете это сделать:

<?php echo _("web.home.featured.HelloWorld"); ?>

И тогда вы больше никогда не коснетесь этой строки в источнике, вы только редактируете строку через файлы PO.

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

Надеюсь, это ясно.

14
ответ дан 29 November 2019 в 21:24
поделиться

В настоящее время я занимаюсь тем же вопросом. Обычная практика работы с gettext заключается в использовании английского текста в качестве ключа. Недавно наш редактор изменил целую кучу английского текста (другие языки практически не затронуты), поэтому нам приходится менять весь исходный код во всех PO-файлах.

Мы переходим на нейтральный ключ. Поскольку у нас уже есть несколько сайтов на Java. Мы будем использовать тот же формат имени свойства.

7
ответ дан 29 November 2019 в 21:24
поделиться
Другие вопросы по тегам:

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