当前位置:  开发笔记 > 编程语言 > 正文

编程多语言PHP应用程序

如何解决《编程多语言PHP应用程序》经验,为你挑选了2个好方法。

我正在开发一个PHP应用程序,我想知道为其他国家的用户提供多语言支持的最佳方法.

我精通PHP,但从未开发过任何支持其他语言的东西.

我想将语言放入带有常量的PHP文件中,例如:

en.php可能包含:

define('HZ_DB_CONN_ERR', 'There was an error connecting to the database.');

和fr.php可能包含:

define('HZ_DB_CONN_ERR', 'whatever the french is for the above...');

然后我可以调用一个函数并自动传入正确的语言.

hz_die('HZ_DB_CONN_ERR', $this);

这是一个很好的方式吗?

- morristhebear.



1> cletus..:

奇怪的.人们似乎忽略了明显的解决方案.您对区域设置特定文件的想法很好.有en.php:

define('LOGIN_INCORRECT','Your login details are incorrect.');
...

然后,假设你有一个全局配置/常量文件(由于很多原因我建议),请使用以下代码:

if ($language == 'en') {
  reqire_once 'en.php';
} else if ($language == 'de') {
  require_once 'de.php';
}

您可以定义数字和货币显示,比较/排序(即德语,法语和英语都有不同的校对方法)等功能.

人们常常忘记PHP是一种动态语言,所以这样的事情:

if ($language == 'en') {
  function cmp($a, $b) { ... }
} else if ($language == 'de') {
  function cmp($a, $b) { ... }
}

事实上是完全合法的.使用它们.



2> OIS..:

您可以使用gettext或支持gettext的东西以及Zend_Translate等.

编辑:

仅仅为了精确,Zend_Translate支持没有gettext模块的gettext.您可以在此处看到它支持的许多不同类型的输入.

如果你也建议使用数组,你也可以使用Zend_Translate.关键是,如果你今天使用数组和明天的gettext,xml或其他东西,你只需要更改Zend_Translate的配置.

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有