强制Yii:t以给定语言翻译字符串

时间:2015-04-08 11:57:10

标签: php yii internationalization yii2

无论Yii:t的当前值是什么,强制Yii::$app->language返回以给定语言翻译的字符串的最佳方法是什么?这种目的有没有参数?

我发现的唯一方法是暂时更改语言并在翻译完成后将其还原:

$currentLanguage = Yii::$app->language;

if (!$translateFieldNames) {
    Yii::$app->language = 'de';
}

foreach($metaData as $name => $value) {
    $newMetaData[Yii::t('models', $name)] = $value;
}

if (!$translateFieldNames) {
    Yii::$app->language = $currentLanguage;
}

但这对我来说听起来令人毛骨悚然而且我在寻找,如果有更好的方法吗?

编辑:我要求 Yii2 回答。我不再使用Yii 1.x了。

1 个答案:

答案 0 :(得分:3)

像这样使用,在Yii::t()中传递语言:

Yii::t('base', 'Save', [], 'fr');

由于Yii::t()是一种快捷方式,您也可以使用full method call

Yii::$app->i18n->translate('base', 'Save', [], 'fr');