Аргерих Л. О языке РНР. Часть 5. Страница 36


Для того чтобы локализовать сценарий, необходима «локаль» (locale). Это совокупность значений, определяющих язык, регион, набор символов, ко­дировку, формат даты и денежной единицы. Например, дата может быть представлена в таком виде: DD/MM-YYYYmra в таком: MM/DD/YYYY. Идея состоит в том, что при переключении на другую локаль все части программы, занима­ющиеся выводом, должны переключиться на другой язык. Локаль можно себе представить как особого рода базу данных, содержащую информацию, необходимую для отображения и форматирования сообщений. Каждому языку, поддерживаемому приложением, поставлена в соответствие одна та­кая «база данных», и, выбирая из них, программа может «представляться» на разных языках.

Поддержка родных языков

Поддержка родных языков (Native Language Support, NLS) достигается пу­тем написания процедур интернационализации и включения поддержки ло­кализации. NLS является конечной целью, достигаемой через интернаци­онализацию и локализацию и обозначает способность сценария поддержи­вать родные языки пользователей.

Приложение, выполняемое в интернациональной среде, не должно содер­жать встроенных предположений относительно:

♦ Специфических для локали и культуры соглашений

♦ Сообщений пользователей на родных языках

• Поддержки преобразования кода

• Поддержки метода ввода

Эта информация должна быть определена во время выполнения приложе­ния. NLS обеспечивает эти возможности и основу для поддержки новых языков и наборов кодов. В результате обеспечивается перенос программ че­рез границы национальных языков и локалей.

Основания для интернационализации

Хотя важна не в каждом сценарии, есть ряд приложений, для которых она необходима. Например, покупатели в сетевом магазине скорее купят продукт, представленный на их родном языке, чем на том, который им не­знаком.

Аналогично, если мы пишем сценарии РНР и программы, доступные как open source или бесплатные, потенциальные пользователи пожелают при­способить их к своему сайту и своей культуре. Они потребуют, чтобы внеш­ний вид и язык сценария соответствовали их сайту; следовательно, наш сце­нарий должен быть легко настраиваемым как по внешнему виду, так и по языку. В РНР есть необходимая инфраструктура для поддержки il8n - он поддерживает условное включение файлов (каждый файл может содержать свой язык, как мы увидим далее) и поддерживает библиотеку Gettext.

Почему же так трудно перевести содержимое веб-сайта на другой язык? Нельзя ли просто скопировать сценарий в другой файл, а затем перевести текст? Ответ: потому что такое решение не будет хорошим. Трудно поддер­живать синхронность двух или более версий. Процедура усложняется, по­скольку переводчики забывают исправить ошибки, обнаруженные создате­лями исходного документа. Затраты на связь резко возрастают, когда при­ходится поддерживать более трех или четырех языков. В конечном счете, появятся несколько версий одной и той же программы, которые будут вы­полняться не вполне идентично.