为网站定义配置

问题描述:

我对定义我的web脚本配置的更好方式有些疑惑。
目前,我有这样的事情:为网站定义配置

switch($lang){ 
    case 'en': 
     define('VAR1', 'abc') 
     define('VAR2', 'def') 
     break; 
    case 'unk': 
     define('VAR1', 'omg') 
     define('VAR2', 'wtf') 
     break; 
} 

等看起来有点怪我(是不是我的想法),但它工作正常。
我的想法,不过,是要确定这些CONFIGS数组:

$vars = array( 
    'en'=>array( 
     'VAR1'=>'abc', 
     'VAR2'=>'def' 
    ), 
    'unk'=>array( 
     'VAR1'=>'omg', 
     'VAR2'=>'wtf' 
    ) 
) 

你怎么想,哪一个会更好? define的方式是有点漂亮,因为我只需要写<?=VAR1 ?>而不是<?=$vars[$lang]['VAR1'] ?>,但是明智的做法是使用define吗?

IMO,你应该把你的翻译分割成不同的文件,而不是把2个(或更多)翻译成同一个文件。如果您有超过1000行翻译,会发生什么?

如果你想使用的定义和仍要转换,你可以尝试这样的:

switch ($lang) { 
case 'en': 
    require_once ('path/to/lang/trans.en.ext'); 
    break; 
case 'unk': 
    require_once ('path/to/lang/trans.en.ext'); 
    break; 
default: 
    require_once ('path/to/lang/trans.default.ext'); 
    break; 

}

,并把你的设置中的那些文件。我在一个项目中使用了相同的方法,但只适用于生产,开发和沙箱设置之间的配置。对于本地化,我创建了一个类,其工作方式与您描述的几乎相同,但使用单独的文件。

祝你好运!

+0

这些翻译的事情之一是,它变得越来越困难(至少对我来说,现在),以了解如何进行解析,并提出访问的文本。但我会尽我所能了解它,谢谢:) – jurchiks 2011-05-26 12:46:40

+0

如果你喜欢使用大量的人工智能,请尝试[getteext](http://php.net/manual/en/book.gettext.php)也许在这里面[Stackoverflow](http://stackoverflow.com/questions/tagged/gettext)获取更多信息。祝你好运。 – RRStoyanov 2011-05-26 12:57:17

+0

我没有偏好,我只是在寻找一些简单的东西,或者至少用好的,简短易懂的文档/ howto。在这种情况下,我不知道在哪里存储了哪些内容(解析后)以及如何访问这些数据:'require_once('path/to/lang/trans.default.ext');' – jurchiks 2011-05-26 13:04:14

您可能正在谈论本地化。最好的方法是使用gettext-related tools

如果你正在谈论配置,最好的方法是使用PHP可以轻松解析的ini文件。

我推荐编写和阅读INI脚本。大多数最终用户和系统管理员都习惯于这种格式。

http://php.net/manual/en/function.parse-ini-file.php