Run*_*ium 6 php c c++ localization internationalization
引用另一个在此结束我的问题.
这些PHP代码行中的双重下划线是什么意思?
$WPLD_Trans['Yes']=__('Yes',$WPLD_Domain);
$WPLD_Trans['No']=__('No',$WPLD_Domain);
Run Code Online (Sandbox Code Playgroud)
约的用途相关的问题__(),_()等等.在WordPress的等.
作为上述一个答案开始,和其他相关.但是作为自己的问题(带答案)发布,因为它变得更加详细.
请随时编辑和改进 - 或输入更好的答案/问题.
__(…)各种实现使用双下划线.提到Wordpress(WP),phpMyAdmin(PMA)是另一个,依此类推.
它反映了本机PHP函数 gettext(),它在PHP中有一个别名作为单个下划线:_().这不是PHP独有的.Gettext本身就是一个长期的GNU项目,用于在Unix系统上编写多语言程序.我们_()在各种编程语言中找到了别名.
在谦虚/诚实的观点中,人们可以说,_()作为本地和 __()自定义实现gettext,或其他特定于区域的用途,是唯一有效的 - 因为它是一个完善的惯例.另一方面它并不好,但即使如此简洁.例如,在ANSI-C标准中,双下划线__保留用于编译器的内部使用; 并且由于PHP与C密切相关,因此它们保留了它,并且通常它甚至不是跨语言混合的最好的东西(恕我直言),它是在边界/薄冰/等.
(这里的一个问题是选择使用UnderscoreJS_作为与语言支持无关的东西的基础.)将它与prototype.js混合使用$,$$并且可能有一些理解为什么有人在看到时会挠头__()- 特别是考虑到PHP和JS在实现工作系统方面的接近程度.
在这一步,我做了一些注意事项是用法:带有权重的区域设置支持i18n和L10n.
它经常被使用,如与WP,2,3及(在有据可查)PMA,通过给语言支持.例如:
__('Error');将以Feil挪威语或Fehler德语收取.但是,需要注意的一件重要事情是,在同一领域,我们有更多的直接翻译,还有其他在不同语言环境/文化/语言中找到的怪癖.
例如(指定):
有些语言使用逗号 - ,- 作为小数分隔符,其他语言使用点 - .- 用于相同的目的.其他典型的区域变化是厘米与英寸,日期格式,12对24小时时钟,货币等.所以:
NUMBER LEN TIME
LANG1: 3,133.44 2.00 inch 5:00 PM
LANG2: 3.133,44 5,08 cm 17:00
您揭开的代码下一层可能会有些参考而神秘的约定如i18n或l10n变量名,函数和文件名.
一旦你知道他们的意思他们是非常方便的,定义可能有点模糊.一般来说,我们有:
i18n: Internationalization l10n: Localization (Often L10n) g11n: Globalization (Used by e.g. IBM and Sun Microsystems) l12y: Localizability (Microsoft) m17n: Multilingualization (Continuum between internationalization and localization) ... And so on.
艾希,我的头疼.
数字是指第一个和最后一个字母之间的单词中的字母数.之前和之后的字母 - 是单词中的第一个和最后一个字母.唷.所以:
i18n l10n
internationalization localization
| | | |
+-- 18 letters --+ +-- 10 --+
i 18 n l 10 n
(我们也有更强大的数字名称,不遵循这样的惯例,如G8(八国集团) - 但是,那么我们不在编程领域 - 或者我们?).
然后到定义:
W3C对国际化(i18n)和本地化(l10n)有一个相当明智的定义.
国际化(i18n)是产品,应用程序或文档内容的设计和开发,可以为文化,地区或语言不同的目标受众轻松进行本地化.
本地化(本地化),是指适应产品,应用程序或文档的内容,以满足语言,具体的目标市场(一个区域)的文化等方面的要求.
debian关于这个主题的简短而简洁的版本是:
通常,在查看代码,阅读等本地化时,会遇到域的使用.或许可以使用更多搜索引擎友好的名称Translation Domain.
(这里我有点薄冰.)
简而言之,可以将其定义为上下文.作为基础,您有一个区域设置.比如苏格兰.但是你可以进一步定义一个域作为主题,专业等的一部分.例如,编程中的Java与咖啡店有很大不同.或者在一个关于女性与农业的退化网站上的牛.
提供一些线索的页面是repoze.org:
翻译目录通常是:
/path/to/your/translation_root/en_US/LC_MESSAGES/ /path/to/your/translation_root/en_GB/LC_MESSAGES/ /path/to/your/translation_root/nn_NO/LC_MESSAGES/ …
如果您查看例如PMA,您将找到一个名为的目录locale.它包含各种语言的各种目录.这些文件带有.mo扩展名.这是GetText特定文件.一个通常从PO,可移植对象开始,文件是纯文本文件.它们被索引并编译为MO,机器对象,这些文件被索引以进行优化.更多关于此这里(同PMA以上-链接).