PHP - Многоязычный дизайн приложений - PullRequest
5 голосов
/ 16 ноября 2009

Существует множество способов разработки многоязычного приложения на PHP. Одни языковые файлы основаны, другие основаны на базе данных.

  • Я хочу использовать его в основном небольшие объемы текста, например, ошибки - в большинство абзаца.

  • Думаю, мне понадобится двадцать или около того
    языки.

Действительно, я ищу рекомендации, а не окончательный ответ. Что вы использовали раньше, что быстрее, проще всего обновлять и т. Д.

Большое спасибо,

Ответы [ 2 ]

8 голосов
/ 16 ноября 2009

Семейство функций Gettext является хорошей отправной точкой:

Функции gettext реализуют NLS (Поддержка родного языка) API, который может быть использован для интернационализации вашего PHP-приложения.

Zend_Translate чрезвычайно гибок и имеет поточно-ориентированную реализацию gettext. В руководстве говорится, что в нем рассматриваются следующие проблемы с собственными реализациями интернационализации:

  • Несогласованный API: единого API для другого источника не существует форматы. Использование gettext для пример очень сложный.
  • PHP поддерживает только gettext и собственный массив: сам PHP предлагает поддержка только для массива или gettext. Все остальные исходные форматы должны быть закодированы вручную, потому что нет нативная поддержка.
  • Нет определения языка по умолчанию: язык по умолчанию пользователь не может быть обнаружен без более глубокое знание фона для разных веб-браузеров.
  • Gettext не является поточно-ориентированным: PHP-библиотека gettext не является поточно-ориентированной, и ее не следует использовать в многопоточной среде. Это связано с проблемами самого gettext, а не PHP, но это уже существующая проблема.

Стоит отметить, что Zend Framework не является фреймворком full-stack - другими словами, вам не нужно будет использовать все это целиком, просто чтобы использовать его интернационализация API.

Что мне действительно нравится в этом, так это его поддержка нескольких адаптеров для разных источников данных , которые вы можете легко смешивать, сопоставлять и изменять, только применяя очень легкие изменения в вашем приложении. Надеюсь, это поможет.

0 голосов
/ 16 ноября 2009

Я имел дело с обоими решениями. (База данных и плоский файл.) Но я дам вам другой угол обзора. Когда вы разрабатываете свое приложение или программное обеспечение, есть еще один важный момент, о котором вы должны подумать с самого начала. Вы сохраните свои языковые элементы в базе данных и обычном файле. важна языковая поддержка базы данных (или таблицы) и текстового файла. Если вы попытаетесь сохранить турецкие символы в латинице 1, вы столкнетесь с некоторыми проблемами. Турецкий является примером. База данных должна поддерживать символы вашего языкового элемента.

...