我想获得您对我在 PHP MVC Web 应用程序上实现多语言支持的方式的反馈。我就是这样做的:
- 在 /app 文件夹中,我创建了一个 /linguals 文件夹,其中包含每种语言一个文件(english.php、spanish.php 等)
- 每个文件都包含一系列具有相同名称的变量,其中包含要在视图中呈现的文本
- 然后这些变量会在不同的视图中得到回应
- 当用户更改语言时,“语言”cookie 变量会更新
- 在每个视图的控制器中,我包含以下格式的语言文件:
包括 $_SERVER['DOCUMENT_ROOT'] 。 “/应用程序/语言/”。 $_COOKIE["语言"] 。 “.php”;
对我来说听起来很漂亮。您对这种方法有任何负面想法吗?
由于您使用的是 PHP 5.3.2,我绝对建议您查看intl http://www.php.net/intl如果可以的话可以延长。它充满了方便的函数和类来协助 i18n。例如,您可以使用以下代码片段从您可用的语言中为您的访问者生成“最适合”的语言:
$langs = array('en', 'fr', 'de');
$preferences = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
$locale = Locale::lookup($langs, $preferences);
除了直接逐字替换之外,还有很多事情需要考虑。不同的语言有不同的格式约定。这里面有很多信息Zend 文章 http://devzone.zend.com/article/4799这可能有用。
我的代码使用 XSL 进行模板化,所以就我个人而言,当涉及到翻译时,我使用 XML 语言文件和 XPath 查询,以便模板可以直接理解语言文件,但 PHP 也可以使用它来格式化字符串消息格式化程序 http://www.php.net/manual/en/class.messageformatter.php.
老实说,我会避免使用数据库作为存储,只是为了性能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)