Как создать PHP-приложение с поддержкой нескольких языков (английский, французский, китайский и т. д.)

StackOverflow https://stackoverflow.com/questions/691218

  •  22-08-2019
  •  | 
  •  

Вопрос

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

Веб-приложение должно поддерживать несколько языков.Целесообразен ли следующий подход?

1) Вся статическая копия на страницах шаблонов Smarty (html-страницах) будет заменена вызовами плагинов Smarty, таких как {lang file='about.xml' getTerm='title'}, который возвращает строку для тега заголовка на соответствующем языке.

2) Файл about.xml — это XML-документ на веб-сервере, который действует как многоязычный словарь.Таким образом, у него будут узлы XML, такие как

<term value="title">
   <en>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; is a great site</en>
   <fr>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; c'est website magnifique</fr>
   <ch>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; complex looking chinese characters I don't udnerstand</ch>
</term>
<term value="signupmessage">
   <en>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; great deals!</en>
   <fr>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; magnifique deals!</fr>
   <ch>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; complex looking chinese characters I don't udnerstand</ch>
</term>

3) Структура URL-адреса сайта будет такой: http://mywebsite.com/language/index.php.Для этого на моем веб-сервере будут символические ссылки, такие какln -s ./en ./ так что http://mywebsite.com/en/index.php указывает на ту же страницу php, что и http://mywebsite.com/fr/index.php, но я проверю URL-адрес языковых настроек.Я надеюсь, что Google проиндексирует обе версии сайта.

Это хороший подход?Является ли xml лучшим форматом для хранения контента на разных языках, даже если он имеет html-теги в кодировке htmlentity?Я что-то упустил из виду?

Это было полезно?

Решение

Не уверен в деталях вашего вопроса, но вы можете взглянуть на Zend_Translate.

Другие советы

XML — это контейнерный формат, и такое его использование не так уж и плохо.Его преимущество заключается в том, что он относительно удобен для чтения человеком, за исключением объектов HTML.Вы можете попробовать использовать для этого разделы CDATA.Одним из преимуществ использования XML для этого является то, что вы можете использовать DTD для проверки того, что на всех языках присутствуют переводы для всех ключей.Убедитесь, что вы закодировали файл с использованием UTF-8 или UTF-16, и, вероятно, поможет, если вы поместите кодировку в начало файла.Я бы рекомендовал UTF-8.

Что касается того, как вы загружаете XML-данные и включаете их в страницу, я не считаю это «умным», но в целом подход звучит разумно.Единственный недостаток, который я вижу, это то, что вам придется выпускать все переводы одновременно (этой проблемы сложно избежать).

Я хочу отметить одну вещь: вы используете ch в качестве кода языка для китайского языка. Вы должны использовать ж.Это код ISO для него.ч это что-то другое.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top