为网站定义配置
问题描述:
我对定义我的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;
}
,并把你的设置中的那些文件。我在一个项目中使用了相同的方法,但只适用于生产,开发和沙箱设置之间的配置。对于本地化,我创建了一个类,其工作方式与您描述的几乎相同,但使用单独的文件。
祝你好运!
这些翻译的事情之一是,它变得越来越困难(至少对我来说,现在),以了解如何进行解析,并提出访问的文本。但我会尽我所能了解它,谢谢:) – jurchiks 2011-05-26 12:46:40
如果你喜欢使用大量的人工智能,请尝试[getteext](http://php.net/manual/en/book.gettext.php)也许在这里面[Stackoverflow](http://stackoverflow.com/questions/tagged/gettext)获取更多信息。祝你好运。 – RRStoyanov 2011-05-26 12:57:17
我没有偏好,我只是在寻找一些简单的东西,或者至少用好的,简短易懂的文档/ howto。在这种情况下,我不知道在哪里存储了哪些内容(解析后)以及如何访问这些数据:'require_once('path/to/lang/trans.default.ext');' – jurchiks 2011-05-26 13:04:14