Стратегия поддержки unicode & multi language в PHP5

Я слышал, что 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.

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