我在一些代码中遇到了一条评论,提到所述代码是“I18N 安全”的。
这是指什么?
I +(大约 18 个字符)+ N = InternationalizationN
I18N 安全意味着在设计和开发过程中采取了有助于稍后进行本地化 (L10N) 的步骤。
这通常是指为 I18N 准备的代码或构造 - 即常见的 I18N 技术很容易支持。例如,以下内容已准备就绪:
printf(loadResourceString("Result is %s"), result);
而以下不是:
printf("Result is " + result);
因为不同语言的词序可能不同。Unicode 支持、国际日期时间格式等也符合条件。
编辑:添加 loadResourceString 以使示例接近现实生活。
i18n 表示国际化n => i ( 18 个字母) n。标记为 i18n 安全的代码将是正确处理非 ASCII 字符数据(例如 Unicode)的代码。
国际化。它的派生是“字母I,十八个字母,字母N”。
I18N 代表国际化。
它是国际化的代名词。
与 Acronym 不同,numeronym 是一个基于数字的词(例如 411 = information,k9 = canine);
在代码中,这通常是一个文件夹标题,它通常指的是可以在国际环境中工作的代码——具有不同的语言环境、键盘、字符集等......”
在此处阅读更多信息:http ://www.i18nguy.com/origini18n.html
i18n 是“国际化”的简写。这是在 DEC 创造的,实际上使用小写的i和n。
作为旁注: L10n 代表“本地化”,并使用大写L将其与小写i区分开来。
如果没有任何其他信息,我猜这意味着代码将文本处理为 UTF8 并且可以识别区域设置。有关更多信息,请参阅此 Wikipedia 文章。
你能更具体一点吗?
i18n-safe 是一个模糊的概念。它通常指的是可以在国际环境中工作的代码——具有不同的语言环境、键盘、字符集等。真正的 i18n 安全代码很难编写。
这意味着代码不能依赖:
sizeof (char) == 1
因为该字符可能是 UTF-32 4 字节字符,也可能是 UTF-16 2 字节字符,并且占用多个字节。
这意味着代码不能依赖等于字符串中字节数的字符串长度。这意味着代码不能依赖于指示空终止符的字符串中的零字节。这意味着代码不能简单地假设文本文件、字符串和输入的 ASCII 编码。
“I18N 安全”编码是指不引入 I18N 错误的代码。I18N 是国际化的一个数字名称,其中 I 和 N 之间有 18 个字符。
与 i18n 相关的问题有多种类别,例如: 文化格式:日期时间格式(英国的 DD/MM/YY 和美国的 MM/DD/YY)、数字格式、时区、测量单位因文化而异。数据必须被接受、处理并以适合正确文化/地区的正确格式显示。国际字符支持:应正确接受、处理和显示来自所有不同语言的所有字符。可本地化:可翻译的字符串不应该是硬编码。它们应该在资源文件中外部化。
“I18N Safe”编码意味着上述问题都不是由代码编写方式引入的。
i18n 处理 - 将硬编码的字符串从代码中移出(并非所有都应该这样做),以便它们可以被本地化/翻译(本地化 == L10n),正如其他人所指出的那样,并且还处理 - 区域设置敏感方法,例如——处理文本处理的方法(日语文本中有多少单词是很明显的:),不同语言/书写系统中的排序/排序,——处理日期/时间(最简单的例子是显示 am/pm美国,例如法国的 24 小时制,针对特定国家/地区使用更复杂的日历),--处理阿拉伯语或希伯来语(UI、文本等的方向),-- 编码正如其他人指出的那样-数据库问题是一个比较全面的角度。仅仅处理“字符串外部化”是远远不够的。
一些(软件)语言在帮助开发人员编写 i18n 代码(意味着将在不同语言环境中运行的代码)方面比其他语言更好,但这仍然是软件工程的责任。