CakePHP 3.1:用于翻译行为的语言字母代码 (i18n)
CakePHP 3.1: Language letter codes to use with translate behaviour (i18n)
不一致?在关于 translate behaviour in the CakePHP 3 book there are three-letter codes used, derived from English names rather than native names of language like ISO 639-2 的章节中:
eng (english)
spa (spanish)
用这个例子来改变语言:
I18n::locale('spa');
但是在chapter about Internationalization and Localization中它说
Translation folders can either be the two letter ISO code of the language or the full locale name such as fr_FR, es_AR, da_DK which contains both the language and the country where it is spoken.
更改语言的示例如下所示:
use Cake\I18n\I18n;
I18n::locale('de_DE');
所以关于 translate behaviour
的章节是过时了还是所有方法都正确?我认为在 Translate behaviour
和 Internationalization and Localization
?
中保持一致并使用相同的语言代码可能更好
此外,i18n 架构 table 示例将字段 locale
定义为 varchar(6)
...如果需要 3 字母代码 varchar(3)
应该足够了。 . 但即使我使用像 fr_FR
varchar(5) 这样的完整本地代码也足够了。为什么示例架构使用 varchar(6)
?
我不会说“翻译行为”一章已经过时,因为它可以正常工作。 Translate 行为不会对语言标识符施加任何限制,可能的值仅受 locale
列 type/size 限制,即使用 spa
就可以正常工作。 6 的长度可能只是一个错字,也可能是考虑了 UN M.49 (es-419
),谁知道呢。
然而,翻译文件夹名称确实受到限制,仅限于 ext-intl
应用的规则。确切地说,文件夹名称是根据 Locale::parseLocale()
的 return 值得出的,例如 return es
表示 spa
。
见Source > \Cake\I18n\MessagesFileLoader::translationsFolders()
所以你实际上可以在你的应用程序和你的翻译 table 中使用像 spa
这样的三个字母代码,但是翻译文件夹必须使用两个字母代码,即 es
.
我同意在整本书中保持一致会很好,也许还有一些关于背景中发生的事情的额外信息。你可能想创建一个问题(或者甚至通过 PR 自己修复它)over at GitHub.
不一致?在关于 translate behaviour in the CakePHP 3 book there are three-letter codes used, derived from English names rather than native names of language like ISO 639-2 的章节中:
eng (english)
spa (spanish)
用这个例子来改变语言:
I18n::locale('spa');
但是在chapter about Internationalization and Localization中它说
Translation folders can either be the two letter ISO code of the language or the full locale name such as fr_FR, es_AR, da_DK which contains both the language and the country where it is spoken.
更改语言的示例如下所示:
use Cake\I18n\I18n;
I18n::locale('de_DE');
所以关于 translate behaviour
的章节是过时了还是所有方法都正确?我认为在 Translate behaviour
和 Internationalization and Localization
?
此外,i18n 架构 table 示例将字段 locale
定义为 varchar(6)
...如果需要 3 字母代码 varchar(3)
应该足够了。 . 但即使我使用像 fr_FR
varchar(5) 这样的完整本地代码也足够了。为什么示例架构使用 varchar(6)
?
我不会说“翻译行为”一章已经过时,因为它可以正常工作。 Translate 行为不会对语言标识符施加任何限制,可能的值仅受 locale
列 type/size 限制,即使用 spa
就可以正常工作。 6 的长度可能只是一个错字,也可能是考虑了 UN M.49 (es-419
),谁知道呢。
然而,翻译文件夹名称确实受到限制,仅限于 ext-intl
应用的规则。确切地说,文件夹名称是根据 Locale::parseLocale()
的 return 值得出的,例如 return es
表示 spa
。
见Source > \Cake\I18n\MessagesFileLoader::translationsFolders()
所以你实际上可以在你的应用程序和你的翻译 table 中使用像 spa
这样的三个字母代码,但是翻译文件夹必须使用两个字母代码,即 es
.
我同意在整本书中保持一致会很好,也许还有一些关于背景中发生的事情的额外信息。你可能想创建一个问题(或者甚至通过 PR 自己修复它)over at GitHub.