对于我在我的 PHP MVC 网络应用程序中实现多语言支持的方式,我希望得到您的反馈。我就是这样做的:
- 在/app 文件夹中,我创建了一个/languages 文件夹,其中包含每种语言一个文件(english.php、spanish.php 等)
- 每个文件都包含一系列在每个文件中具有相同名称的变量,其中包含要在 View 中呈现的文本
- 然后在不同的 View 中回显这些变量
- 当用户更改语言时更新“语言”cookie 变量
- 在每个 View 的 Controller 中,我包含一个格式如下的语言文件:
包括 $_SERVER['DOCUMENT_ROOT'] 。 “/应用程序/语言/”。 $_COOKIE["语言"] . ".php";
对我来说听起来很整洁。您对这种方法有什么负面想法吗?
最佳答案
由于您使用的是 PHP 5.3.2,我绝对建议您查看 intl如果可以的话,延期。它充满了方便的函数和类来帮助国际化。例如,您可以使用以下代码片段从可用的语言中为访问者生成“最适合”的语言:
$langs = array('en', 'fr', 'de');
$preferences = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
$locale = Locale::lookup($langs, $preferences);
除了直接逐字替换之外,还有很多事情需要考虑。不同的语言有不同的格式约定。这个Zend article里面有很多信息这可能会有用。
我的代码使用 XSL 进行模板化,当涉及到翻译时,我使用 XML 语言文件和 XPath 查询,以便模板可以直接理解语言文件,但 PHP 也可以使用 MessageFormatter 格式化字符串。 .
老实说,我会避免将数据库用作存储,只是为了性能。
关于php - 多语言 PHP 应用程序 : best practice?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6000541/