如何存储字符串(i.n.类常量)以保持其可本地化?

时间:2013-06-08 17:46:03

标签: php design-patterns localization

场合
假设我们有以下课程:

<?php
class User {
const STATUS_NEW = 0;
const STATUS_DELETED = 1;

public static $aStatuses = array(
  self::STATUS_NEW     => 'New',
  self::STATUS_DELETED => 'Deleted'
);

// ...
}
?>

问题
如何使字符串NewDeleted准备好进行本地化(在示例中使用gettext)?

可能的解决方案?

...
public static function getStatuses() {
  return array(
    self::STATUS_NEW     => _('New'),
    self::STATUS_DELETED => _('Deleted')
  );
}

但不知怎的,我觉得有更优雅的方式来做这件事。

1 个答案:

答案 0 :(得分:0)

我认为有两种严肃的方法:

1)使用gettext和po文件,您可以使用po-edit轻松编辑

2)使用数组进行lokalization:

// lang.english.php
$text_arr['new'] = "New"; 

// lang.german.php
$text_arr['new'] = "Neu";

然后包含用户指定的语言文件。在代码本身中,您只使用变量

对于我自己,我更喜欢gettext和po-files而不是数组,因为它们在处理语言时更加实用。特别是你的翻译不需要编写源代码。

两个版本在性能方面几乎相同。我刚读了一篇关于那个时间的文章。当我明天晚上回家时,我可以查看我的浏览器书签并在此处发布。或者你可以google它。