2ball
@2ball
Хардкор кодер

Где почитать про разработку мультиязычных систем?

Доброго хабралюди.

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

Принцип достаточно прост. Языковой файл, скрипт-интегратор, js скрипт геопривязки. Однако хотелось бы почитать подробно, чтобы избежать велосипедов и подводных камней.

Заранее спасибо за ответы.
  • Вопрос задан
  • 3310 просмотров
Пригласить эксперта
Ответы на вопрос 4
Grigorieff
@Grigorieff
На чем разработка идет? PHP, Rails? Для Rails к примеру используют встроенный класс i18n
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Ну как бы тут существует много подходов. i18n есть во всех нормальных фреймворках, перевод содержимого можно организовать связанными таблицами с локалью. JS обычно делают с применением шаблонов каких-то, которые так же можно подменять в зависимости от локали или подменять их часть, так же можно воспользоваться библиотеками для интернационализации под JS (благо есть несколько неплохих). В целом же я не видел какого-то общего случая, ибо все случаи разные и требуют своего подхода.
Ответ написан
nazarpc
@nazarpc
Open Source enthusiast
Я себе реализовал так:
$L->some_phrase;                           //Строка перевода, если перевод отсутствует - возвращается "Some phrase"
$L->mail_body($site_name, $username);      //Так работают переводы, которые требуют подстановки пользовательских данных, сама строка перевода в формате функции printf(), конкретно тут используется vsprintf()

$L — это объект, который при создании или вызове метода смены языка загружает переводы с JSON файла. Так же есть возможность вместо строковых подстановок использовать замыкания (например, когда выводится время и нужно менять окончание слова). Вызовы несуществующих свойств и методов ловятся с помощью __get() и __call().

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

Войдите, чтобы написать ответ

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