使用PHP支持多种语言

时间:2012-10-10 10:07:03

标签: php sql database-design local

我想创建一个包含多种语言的应用程序。必须使用语言选项配置语言。

我找到了这些方法:

  1. 制作一个数据库表的副本,一个用于默认语言,另一个用于其他语言。这种方式适用于除常量表之外的所有表,这些表为另一种语言添加了一个附加列。 2.使用其他语言为所有表添加其他列。 “桌子大小变得巨大,没有想象力支持3或4种语言!”
  2. 使用添加标签的语言文件,邮件返回给使用不同语言的用户!
  3. 使用数据库代替语言文件来支持提供标签,消息,这里提供了这种做法的video
  4. 使用翻译API(例如Zend_translate)来翻译常量数据,消息,标签以及用户使用默认语言输入的数据。
  5. 我应该使用什么是最好的情况,同时,我需要它简单而不需要花费很长时间进行开发。

    注意:网站添加了大量数据,这些数据将在网站上显示不同的语言。它不是关于翻译菜单项,标签等。它是关于网站内容的。

1 个答案:

答案 0 :(得分:0)

您正在创建一个网络应用,所以我的建议是:

您的应用程序存储在不同的域名中,并且还会关闭继承域的语言。

所以yourapp.com是英语,yourapp.nl是荷兰语和yourapp.de德语等。

这是你必须做出的第一个决定。建议在建立网站时为不同国家/地区托管不同版本。但是如果你想要一个域名来托管,还有另一个决定。

案例一 - 自动选择语言选项之间的语言检测

案例二 - 在cookie中手动选择语言存储

案例三 - 上述两者的混合

很难让它自动化,所以我们想要手动选择。

然后有一些配置要做。当您使用时间和其他特定位置的功能时。所以让我们让php开关包含所有支持的语言。然后你需要用定义或其他方法替换你的PHP的所有文本输出,但我更喜欢定义。

就像这样:

//this has to be saved somewhere in php file has lang.dutch.php and lang.eng.php

$lang['dutch']['error'] = 'Er is iets fout gegaan';
$lang['english']['error'] = 'Something went wrong';

//make up for language (has to be included in front of every script)

$witch = $_SESSION or $_COOCIE ['language'];

$lang['dutch'] = 'lang.dutch.php';
$lang['eng'] = 'lang.eng.php';

include("language/$lang[$switch]");

define("error", $lang[$witch]['error'], true);

//inside function witch uses defined variables

if(true){
  do something
}
else{
  echo error;
}

当cookie或会话值为荷兰语时,结果为:

  

Er is ie fout gegaan