Я слышал, что PHP6 будет поддерживать Unicode, что, надеюсь, упростит многоязычную поддержку. Тем не менее, PHP5 имеет довольно слабую поддержку для юникода и многоязычности (т. Е. Просто набор специализированных функций строки).
Мне было интересно, какие у вас стратегии, чтобы включить поддержку Unicode и multi-languaage в ваших приложениях PHP5?
Кроме того, как вы сохраняете переводы, поскольку PHP5 не имеет файла WebResource, например ASP.NET?
На самом деле это не так уж и сложно, но вы можете сделать свой вопрос более конкретным.
Если вы разговариваете с базой данных, убедитесь, что ваша база данных хранит данные в UTF-8, а соединение с вашей базой данных находится в UTF-8 (общая ошибка). Не забудьте запустить это при установлении соединения:
mysql_set_charset('utf8');
Для ввода пользователем установите атрибут accept-charset
в своих формах.
<form accept-charset="utf-8">
Подавайте свои сайты с соответствующим HTTP-заголовком:
header('Content-Type: text/html; charset=utf-8');
или, по крайней мере, установить соответствующие метатеги для вашего сайта:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Сохраните файлы исходного кода, закодированные в UTF-8.
Если вы держите все в UTF-8, вам обычно не нужно ни о чем беспокоиться. Это становится проблематичным только после того, как вы начнете смешивать кодировки во всем приложении.
Если вы, конечно, начинаете говорить о струнных манипуляциях, вам придется немного позаботиться. В основном вы хотите использовать набор строковых функций mb_
, как вы указали сами.
Для разработки приложений в PHP я использую CodeIgniter, который занимается обработкой нескольких языковых файлов. Это очень мощный и простой в использовании.
Вот ссылка на их язык
Для переводов вы можете использовать фреймворк или просто свернуть свою собственную библиотеку. Вы можете хранить переводы в csv-файлах и использовать fgetcsv () PHP для его анализа. Файлы CSV можно редактировать с помощью любого приложения электронной таблицы.
Например, вы можете посмотреть код Zend_Translate (часть Zend Framework). Легко следовать.
В связи с использованием набора функций mb_ *, в то же время поддерживая совместимость, см. Директиву mb_string.overload
php.ini.
Это позволит вам использовать регулярные строковые функции, которые были перегружены многобайтовыми включенными.