翻译仅以一种语言出现的文本
Translating texts, that appear only in one language
我有一个用 Yii 编写的双语(英语和波兰语)应用程序 1.x。基本语言为英语 (sourceLangage
),当前语言 (language
) 由用户控制。
我应该如何使用 Yii::t
翻译未在英语中使用但在波兰语中可见的字符串?我不能打电话给 Yii:t('app', '');
,对吗?
你不能使用 like Yii:t('app', '');
因为作为源代码你必须提供一些独特的符号(关键词)。你可以尝试像这样定义所有未定义的翻译 like
['undefined_1' => 'Correct translation', 'undefined_2 => 'Another correct translation', ... , 'undefined_n' => 'More other translation'];
并使用像
这样的代码
<?= preg_match("/undefined_/", Yii:t('app', 'undefined_n')) ? Yii:t('app', 'undefined_n') : '' ?>
也许这不是最佳解决方案,但它是一个版本。
我会将 "strings not used in English" 归类为仅与一种或另一种语言相关的整段内容;例如,对于一个在一种文化中 "foreign" 但在另一种文化中很自然的概念,您可能需要一个额外的解释性段落,或者您可能需要在一个国家而非另一个国家显示某些法律措辞。在这些情况下,它并不是真正的 "translation",而是条件内容。因此,基于当前语言的 if
语句是自然的方式,或类似的等价物(例如 include "legal.$lang.html"
)。
您在评论中提到的具体示例,具有不同的日期格式,只是本地化的经典案例,常规翻译功能就可以很好地完成:
echo date(Yii:t('d F Y'));
此日期格式字符串 d F Y
可能需要本地化为波兰语的 d F Y \r.
。请注意,date
不能 本地化日期。如果可能的话,您应该使用 IntlDateFormatter
class, and typically you'd use constants for different "kinds" of date formats, like IntlDateFormatter::MEDIUM
(Jan 12, 1952), IntlDateFormatter::SHORT
(12/13/52) etc. Otherwise, strftime
挂钩到语言环境系统,并且能够基于语言环境格式化日期。我不知道具体如何与 Yii 结合。
我有一个用 Yii 编写的双语(英语和波兰语)应用程序 1.x。基本语言为英语 (sourceLangage
),当前语言 (language
) 由用户控制。
我应该如何使用 Yii::t
翻译未在英语中使用但在波兰语中可见的字符串?我不能打电话给 Yii:t('app', '');
,对吗?
你不能使用 like Yii:t('app', '');
因为作为源代码你必须提供一些独特的符号(关键词)。你可以尝试像这样定义所有未定义的翻译 like
['undefined_1' => 'Correct translation', 'undefined_2 => 'Another correct translation', ... , 'undefined_n' => 'More other translation'];
并使用像
这样的代码<?= preg_match("/undefined_/", Yii:t('app', 'undefined_n')) ? Yii:t('app', 'undefined_n') : '' ?>
也许这不是最佳解决方案,但它是一个版本。
我会将 "strings not used in English" 归类为仅与一种或另一种语言相关的整段内容;例如,对于一个在一种文化中 "foreign" 但在另一种文化中很自然的概念,您可能需要一个额外的解释性段落,或者您可能需要在一个国家而非另一个国家显示某些法律措辞。在这些情况下,它并不是真正的 "translation",而是条件内容。因此,基于当前语言的 if
语句是自然的方式,或类似的等价物(例如 include "legal.$lang.html"
)。
您在评论中提到的具体示例,具有不同的日期格式,只是本地化的经典案例,常规翻译功能就可以很好地完成:
echo date(Yii:t('d F Y'));
此日期格式字符串 d F Y
可能需要本地化为波兰语的 d F Y \r.
。请注意,date
不能 本地化日期。如果可能的话,您应该使用 IntlDateFormatter
class, and typically you'd use constants for different "kinds" of date formats, like IntlDateFormatter::MEDIUM
(Jan 12, 1952), IntlDateFormatter::SHORT
(12/13/52) etc. Otherwise, strftime
挂钩到语言环境系统,并且能够基于语言环境格式化日期。我不知道具体如何与 Yii 结合。