我在一些代码中发现了一条评论,指的是所说的代码是“I18N安全”。
这是指什么?
答案 0 :(得分:78)
I +(约18个字符)+ N = InternationalizatioN
I18N安全意味着在设计和开发过程中采取了一些步骤,以便在以后进行本地化(L10N)。
答案 1 :(得分:13)
这通常被称为为I18N准备好的代码或构造 - 即通过常见的I18N技术很容易支持。例如,以下内容已准备就绪:
printf(loadResourceString("Result is %s"), result);
而以下不是:
printf("Result is " + result);
因为单词顺序可能因语言不同而异。 Unicode支持,国际日期时间格式等也符合条件。
编辑:添加了loadResourceString,以便为现实生活提供一个示例。
答案 2 :(得分:9)
i18n表示我 nternationalizatio n =>我( 18个字母)n。标记为i18n安全的代码将是正确处理非ASCII字符数据(例如Unicode)的代码。
答案 3 :(得分:7)
国际化。它的推导是“字母I,十八个字母,字母N”。
答案 4 :(得分:5)
I18N代表国际化。
答案 5 :(得分:3)
i18n是“国际化”的简写。这是在DEC创造的,实际上使用小写 i 和 n 。
作为旁注:L10n代表“本地化”,并使用大写 L 将其与小写 i 区分开来。
答案 6 :(得分:1)
没有任何其他信息,我猜这意味着代码将文本处理为UTF8并且是区域设置感知的。有关详细信息,请参阅this Wikipedia article。
你能更具体一点吗?
答案 7 :(得分:1)
I18N代表Internationalization。
简而言之:I18N安全代码意味着它在UI上使用某种查找表来查找文本。为此,您必须支持非ASCII编码。这可能看起来很简单,但有一些gotchas。
答案 8 :(得分:1)
i18n-safe是一个含糊不清的概念。它通常指的是在国际环境中工作的代码 - 具有不同的区域设置,键盘,字符集等。真正的i18n安全代码很难编写。
这意味着代码不能依赖:
sizeof(char)== 1
因为该字符可能是UTF-32 4字节字符或UTF-16 2字节字符,并占用多个字节。
这意味着代码不能依赖于字符串的长度等于字符串中的字节数。这意味着代码不能依赖于表示nul终结符的字符串中的零字节。这意味着代码不能简单地假设文本文件,字符串和输入的ASCII编码。
答案 9 :(得分:1)
“I18N安全”编码是指不引入I18N错误的代码。 I18N是国际化的词汇,I和N之间有18个字符。
有多种与i18n相关的问题,例如: 文化格式:日期时间格式(英国的DD / MM / YY和美国的MM / DD / YY),数字格式,时区,测量单位从文化到文化的变化。必须以正确的格式/区域设置接受,处理和显示数据。 国际字符支持:应正确接受,处理和显示所有不同语言的所有字符。 可本地化:可翻译的字符串不应该是硬代码。它们应该在资源文件中外部化。
“I18N安全”编码意味着编写代码的方式不会引入上述问题。
答案 10 :(得分:1)
表示国际化的简称。
与首字母缩写不同,数字缩写是基于数字的单词(例如411 =信息,k9 =犬);
在代码中,这通常是一个文件夹标题,它通常是指在国际环境下可以工作的代码-具有不同的语言环境,键盘,字符集等。...“
答案 11 :(得分:0)
i18n处理 - 从代码中移出硬编码的字符串(不是所有都应该顺便),因此可以像其他人指出的那样对它们进行本地化/翻译(本地化== L10n),并且还处理 - 语言环境敏感方法,如 - 处理文本处理的方法(日文文本中有多少单词很明显:),不同语言/书写系统中的顺序/整理, - 处理日期/时间(最简单的例子是显示美国的上午/下午,例如法国的24小时时钟,特定国家的更复杂的日历), - 处理阿拉伯语或希伯来语(UI的方向,文本等), - 正如其他人所指出的那样 - 数据库问题 这是一个相当全面的角度。处理“字符串外部化”远远不够。
某些(软件)语言在帮助开发人员编写i18n代码(意味着将在不同语言环境中运行的代码)方面优于其他语言,但它仍然是软件工程的责任。