2011-12-20 81 views
0

我正在进行一个项目,将会有3种不同的语言:英文,法文和西班牙文。这将在用户注册时定义。PHP如何在配置文件中处理不同的语言?

现在在我的配置文件我有以下几点:

define("DEFAULT_SLOGAN", "The default slogan will go here."); 

,直到我开始意识到我需要接受不同的语言。

用户具有指定的语言代码(EN,FR,SP)。我将如何去为每个页面使用不同的语言字符串?我需要这样的事情:

define("DEFAULT_SLOGAN_EN", "Slogan in english"); 
define("DEFAULT_SLOGAN_FR", "Slogan in french"); 
define("DEFAULT_SLOGAN_SP", "Slogan in spanish"); 

而对于每个字符串只有3个不同的版本呢?不太确定解决这个问题的最佳方法。

谢谢!经常使用

回答

3

一个更好的方法是创建

  • 含locale_definitions_EN.php

    定义( “DEFAULT_SLOGAN”, “默认的英文标语会在这里。”);

  • 定义( “DEFAULT_SLOGAN”, “法国默认标语会在这里。”)local_definitions_FR.php;

等,然后像做

include "locale_definitions_$userLocale.php"; 

这样做的好处,你并不需要内存来存放未使用其他语言的常量。

+0

非常感谢,我认为这对我也是最好的。 – Drew 2011-12-20 14:52:23

+0

这看起来像一个相当脏的解决方案。如果没有法文翻译,您最终会面临一个您想要回退到英文翻译的地步。这种方法无法实现。想想你的项目的未来;-) – 2011-12-20 15:28:28

+0

@TomvanderWoerdt:这是在不同的水平上处理!因为'$ userLocale'是**总是**可用的,所以如果FR不可用,则后退将设置为EN。 – 2015-11-17 00:53:33

4

一个简单的策略是数组:

$lang['en'] = array(
    'DEFAULT_SLOGAN' => 'The default slogan will go here.', 
); 
// Same for other languages 

然后,在你的实际代码,确保$ LANG是可用的(你可以使用这个global关键字),并使用这些阵列。

相关问题