如何存储字符串(.class即 constats)以保持它们可本地化


How to store strings (i.e. class constats) to keep them localizable?

>情况
假设我们有以下类:

<?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( 使用获取文本和 PO 文件,您可以通过 po-Edit 轻松编辑

2( 使用数组进行 lokalization:

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

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

就我自己而言,我更喜欢 gettext 和 po 文件而不是数组,因为它们在处理语言时更有用。特别是您的翻译不需要编写源代码。

两个版本在性能方面几乎相同。我前段时间读过一篇关于那个sime的文章。当我明天晚上回家时,我可以查看我的浏览器书签并将其发布在这里。或者你可以谷歌一下。