我一直在尝试为PHP创建一个字符串文字文件,所以我可以在一个文件中保存所有的字符串。
我想知道这样做是否是个好习惯:
class Literals
{
const String1 = "Hello";
const String2 = "World!";
//... (up to 100+ literals)...
}
然后在代码的某个地方我可以这样称呼它:
$hello = Literals::String1;
这是好的做法吗?
这取决于你要对字符串做什么。如果你要把它们显示给用户,那么当然,这是一种简单的国际化方式,尽管如果你要做很多事情,你会想看一些更高级的东西。如果你只想将它们用于关联数组键,数据库列名或其他内部内容,那就不用了,只要保持内联即可
希望您没有真正将它们称为String1…StringN:)
如果对于本地化,我个人更喜欢这个(苹果使用的):
在代码中使用如下:
<h1><?php localize("Homepage","String for the homepage") ?></h1>
.
function localize($key,$help='') {
//do a lookup of the key and if not found use the key itself
}
然后您可以使用解析器查找所有字符串并创建引用翻译:
$strings = array(
/** String for the homepage */
'Homepage' => 'Homepage'
);
这样做的好处是,主要语言版本将始终有效,并且可以在需要时添加其他翻译。它的缺点是需要一个解析器来查找所有字符串。