首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >翻译仅以一种语言出现的文本

翻译仅以一种语言出现的文本
EN

Stack Overflow用户
提问于 2015-03-16 14:20:48
回答 2查看 69关注 0票数 0

我有一个双语言(英语和波兰语)的应用程序,用YII1.x编写.基础语言为英语(sourceLangage),当前语言(language)由用户控制。

我应该如何翻译,使用Yii::t,字符串,不是用英语,但应该是可见的波兰语?我不能给Yii:t('app', '');打电话,对吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-17 09:57:57

我将“没有在英语中使用的字符串”归类为整段内容,这些段落只适用于一种语言或另一种语言;例如,你可能需要为一种文化中的“外来”概念加上一个解释性段落,而在另一种文化中则是自然的,或者你可能需要在一个国家显示某些法律用语,而不是另一个国家。在这些情况下,它不是真正的“翻译”,而是有条件的内容。因此,基于当前语言的if语句是自然的方法,或者类似的等价语句(例如include "legal.$lang.html")。

您在注释中提到的关于不同日期格式的具体示例只是一个典型的本地化案例,常规翻译功能可以做到这一点:

代码语言:javascript
复制
echo date(Yii:t('d F Y'));

此日期格式字符串d F Y可能需要在波兰文中本地化为d F Y \r.。请注意,date无法本地化日期。如果可能的话,您应该使用IntlDateFormatter类,通常您会对不同“类型”的日期格式使用常量,如IntlDateFormatter::MEDIUM (1952年1月12日)、IntlDateFormatter::SHORT ( 12 /13/52)等。否则,strftime会与地区系统挂钩,并能够格式化基于日期的地区。我不知道这两个人到底是怎么和Yii联系在一起的。

票数 1
EN

Stack Overflow用户

发布于 2015-03-17 06:37:26

您不能像Yii:t('app', '');一样使用,因为作为源代码,您必须提供一些独特的符号(关键字)。您可以尝试这样的方法,定义所有未定义的翻译,如

['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') : '' ?>

也许这不是最好的解决方案,但作为一个版本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29079151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档