我听说PHP6将原生支持Unicode,这将希望使多语言支持更加容易。然而,PHP5对于Unicode和多语言的支持相对较弱(即仅有一些专门的字符串函数)。
我想知道您在PHP5应用程序中实现Unicode和多语言支持的策略是什么?
此外,由于PHP5没有像ASP.NET那样的WebResource文件,您如何存储翻译内容?
我听说PHP6将原生支持Unicode,这将希望使多语言支持更加容易。然而,PHP5对于Unicode和多语言的支持相对较弱(即仅有一些专门的字符串函数)。
我想知道您在PHP5应用程序中实现Unicode和多语言支持的策略是什么?
此外,由于PHP5没有像ASP.NET那样的WebResource文件,您如何存储翻译内容?
其实并不难,但您可能需要将问题具体化一些。
如果您正在与数据库交互,请确保您的数据库以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_
一系列的字符串函数,正如您自己指出的那样。
htmlentities()
函数。在使用UTF-8时,应按以下方式使用它:htmlentities($ str,ENT_COMPAT,'UTF-8');
有关更多信息,请参见https://dev59.com/Q0fRa4cB1Zd3GeqP6iNO#799876#799876。 - Mathias Bynens关于翻译,您可以使用框架或自己编写库。您可以将翻译存储在 CSV 文件中,并使用 PHP 的 fgetcsv() 函数进行解析。CSV 文件可以使用任何电子表格应用程序进行编辑。
例如,您可以查看 Zend_Translate(Zend Framework 的一部分)的代码。它很容易跟随。
与 mb_* 函数集的使用相关,在保持兼容性的同时,可以查看 mb_string.overload
php.ini 指令。
它将允许您使用已被多字节启用的常规字符串函数进行重载的函数。