66

我在一些代码中遇到了一条评论,提到所述代码是“I18N 安全”的。

这是指什么?

4

12 回答 12

86

I +(大约 18 个字符)+ N = InternationalizationN

I18N 安全意味着在设计和开发过程中采取了有助于稍后进行本地化 (L10N) 的步骤。

于 2009-02-25T17:32:10.627 回答
13

这通常是指为 I18N 准备的代码或构造 - 即常见的 I18N 技术很容易支持。例如,以下内容已准备就绪:

printf(loadResourceString("Result is %s"), result);

而以下不是:

printf("Result is " + result);

因为不同语言的词序可能不同。Unicode 支持、国际日期时间格式等也符合条件。

编辑:添加 loadResourceString 以使示例接近现实生活。

于 2009-02-25T17:33:02.543 回答
10

i18n 表示国际化n => i ( 18 个字母) n。标记为 i18n 安全的代码将是正确处理非 ASCII 字符数据(例如 Unicode)的代码。

于 2009-02-25T17:31:48.397 回答
7

国际化。它的派生是“字母I,十八个字母,字母N”。

于 2009-02-25T17:31:01.283 回答
5

I18N 代表国际化。

于 2009-02-25T17:26:10.407 回答
4

在此处输入图像描述

它是国际化的代名词。

与 Acronym 不同,numeronym 是一个基于数字的词(例如 411 = information,k9 = canine);

在代码中,这通常是一个文件夹标题,它通常指的是可以在国际环境中工作的代码——具有不同的语言环境、键盘、字符集等......”

在此处阅读更多信息:http ://www.i18nguy.com/origini18n.html

于 2018-11-23T17:12:39.683 回答
3

i18n 是“国际化”的简写。这是在 DEC 创造的,实际上使用小写的in

作为旁注: L10n 代表“本地化”,并使用大写L将其与小写i区分开来。

于 2009-02-25T17:35:13.020 回答
1

如果没有任何其他信息,我猜这意味着代码将文本处理为 UTF8 并且可以识别区域设置。有关更多信息,请参阅此 Wikipedia 文章

你能更具体一点吗?

于 2009-02-25T17:32:33.230 回答
1

I18N 代表国际化。

简而言之:I18N 安全代码意味着它使用某种查找表来查找 UI 上的文本。为此,您必须支持非 ASCII 编码。这似乎很容易,但有一些陷阱

于 2009-02-25T17:35:10.010 回答
1

i18n-safe 是一个模糊的概念。它通常指的是可以在国际环境中工作的代码——具有不同的语言环境、键盘、字符集等。真正的 i18n 安全代码很难编写。

这意味着代码不能依赖:

sizeof (char) == 1

因为该字符可能是 UTF-32 4 字节字符,也可能是 UTF-16 2 字节字符,并且占用多个字节。

这意味着代码不能依赖等于字符串中字节数的字符串长度。这意味着代码不能依赖于指示空终止符的字符串中的零字节。这意味着代码不能简单地假设文本文件、字符串和输入的 ASCII 编码。

于 2009-02-26T02:32:56.707 回答
1

“I18N 安全”编码是指不引入 I18N 错误的代码。I18N 是国际化的一个数字名称,其中 I 和 N 之间有 18 个字符。

与 i18n 相关的问题有多种类别,例如: 文化格式:日期时间格式(英国的 DD/MM/YY 和美国的 MM/DD/YY)、数字格式、时区、测量单位因文化而异。数据必须被接受、处理并以适合正确文化/地区的正确格式显示。国际字符支持:应正确接受、处理和显示来自所有不同语言的所有字符。可本地化:可翻译的字符串不应该是硬编码。它们应该在资源文件中外部化。

“I18N Safe”编码意味着上述问题都不是由代码编写方式引入的。

于 2017-06-20T03:55:31.093 回答
0

i18n 处理 - 将硬编码的字符串从代码中移出(并非所有都应该这样做),以便它们可以被本地化/翻译(本地化 == L10n),正如其他人所指出的那样,并且还处理 - 区域设置敏感方法,例如——处理文本处理的方法(日语文本中有多少单词是很明显的:),不同语言/书写系统中的排序/排序,——处理日期/时间(最简单的例子是显示 am/pm美国,例如法国的 24 小时制,针对特定国家/地区使用更复杂的日历),--处理阿拉伯语或希伯来语(UI、文本等的方向),-- 编码正如其他人指出的那样-数据库问题是一个比较全面的角度。仅仅处理“字符串外部化”是远远不够的。

一些(软件)语言在帮助开发人员编写 i18n 代码(意味着将在不同语言环境中运行的代码)方面比其他语言更好,但这仍然是软件工程的责任。

于 2010-12-29T23:36:18.090 回答