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


Forcing Yii:t to translate string in given language

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

我发现,唯一的方法是临时更改语言,并在翻译完成后将其恢复:

$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了。

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

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

由于Yii::t()是一个快捷方式,您也可以使用这样的完整方法调用:

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