Что я должен знать, чтобы приложение I18N работало на японском языке? - PullRequest
6 голосов
/ 01 июня 2011

Я работаю над приложением I18N, которое будет располагаться на японском языке, я не знаю ни одного слова на японском, и я сначала задаюсь вопросом, достаточно ли utf8 для этого языка.

Обычно,для европейского языка достаточно utf8, и мне нужно настроить набор символов / сопоставление базы данных для использования utf8_general_ci (в MySQL) и моих представлений html в utf8, и этого достаточно.

Но как насчет японского,есть что-то еще, что можно сделать?

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

Как я могу настроить свое приложение I18N таким образом, чтобы оно было широко доступным, без необходимости изменять многие конфигурации при развертывании?

Есть ли рекомендации?

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

Ответы [ 4 ]

5 голосов
/ 01 июня 2011

Пара баллов:

  • UTF-8 подходит для внутренних данных вашего приложения, но если вам нужно обрабатывать предоставленные пользователем документы (например, загрузки), они могут использовать другие кодировки, такие как Shift-JIS или ISO-2022-JP
  • Японский текст не использует пробелы между словами. Если вашему приложению нужно где-то разбить текст на слова, у вас есть проблема.
  • Кроме текста, форматы даты и числа отличаются
  • Общее сопоставление может не привести к полезному порядку сортировки для текста на японском языке - если ваше приложение содержит большие списки, в которых люди должны что-то находить, это может стать проблемой.
3 голосов
/ 01 июня 2011

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

Gettext широко используется, и ваша сборка PHP, вероятно, даже включает его. Подробнее см. http://php.net/gettext.

1 голос
/ 08 июня 2011

Просто добавьте этот интересный сайт, чтобы помочь в создании приложения I18N: http://www.i18nguy.com/

0 голосов
/ 01 июня 2011

Если вы храните текст в текстовых файлах, то это выглядит так:

Это основная структура папок для языка:

-lang
      -en
      -fr
      -jp
      etc

каждая подпапка, en, fr ... содержит одинаковые файлы, одинаковые переменные с разными значениями.

Например, в lang / en / links.txt Вы бы

class txtLinks 
{

public static $menu="Menu";
public static $products="Show products";
....

class txtErrors 
{

public static $wrongUName="This user  does not exists";
....

Затем, когда загружается скрипт, вы делаете

if(en)
define(__LANG,'en')
if(fr)
define(__LANG,'fr')
...

Тогда

include('lang'.__LANG.'what ever file you want')

Тогда это фрагмент вашего php-скрипта:

echo txtLink::$menu etc...

Если вы идете по базе данных так, как вы делаете по аналогии, где вместо файлов у вас есть таблицы.

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

А вам самим все равно, какой язык будет добавлен или удален позже.

А если вы работаете с mvc, вы можете разделять языковые файлы в соответствии с контроллерами, чтобы не загружать огромный текстовый файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...