强制 Yii:t 以给定语言翻译字符串
Forcing Yii:t to translate string in given language
无论 Yii::$app->language
的当前值是多少,将 Yii:t
强制翻译成给定语言的 return 字符串的最佳方法是什么?有没有这种用途的参数?
我发现的唯一方法是暂时更改语言并在翻译完成后将其还原:
$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()
是一个快捷方式,你也可以这样使用full method call:
Yii::$app->i18n->translate('base', 'Save', [], 'fr');
无论 Yii::$app->language
的当前值是多少,将 Yii:t
强制翻译成给定语言的 return 字符串的最佳方法是什么?有没有这种用途的参数?
我发现的唯一方法是暂时更改语言并在翻译完成后将其还原:
$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()
是一个快捷方式,你也可以这样使用full method call:
Yii::$app->i18n->translate('base', 'Save', [], 'fr');