Что означает сейф I18N?

Я наткнулся на комментарий в некотором коде, в котором говорится, что этот код «безопасен для I18N».

К чему это относится?

Ответов (12)

Решение

I + (около 18 символов) + N = интернационализация

Безопасность I18N означает, что во время проектирования и разработки были предприняты шаги, которые упростят локализацию (L10N) на более позднем этапе.

This is most often referred to a code or construct ready for I18N - i.e easily supported by common I18N techniques. For instance, the following is ready:

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

while the following is not:

printf("Result is " + result);

потому что порядок слов может отличаться в разных языках. Поддержка Unicode, международное форматирование даты и времени и тому подобное также подходят.

РЕДАКТИРОВАТЬ: добавлен loadResourceString, чтобы приблизить пример к реальной жизни.

Интернационализация. Происходит от этого «буква I, восемнадцать букв, буква N».

i18n means internationalization => i (18 letters) n. Code that's marked as i18n safe would be code that correctly handles non-ASCII character data (e.g. Unicode).

i18n-safe - понятие расплывчатое. Обычно это относится к коду, который будет работать в международной среде - с другой локалью, клавиатурой, наборами символов и т. Д. Трудно написать настоящий i18n-безопасный код.

Это означает, что код не может полагаться на:

sizeof (char) == 1

потому что этот символ может быть 4-байтовым символом UTF-32 или 2-байтовым символом UTF-16 и занимать несколько байтов.

Это означает, что код не может полагаться на длину строки, равную количеству байтов в строке. Это означает, что код не может полагаться на нулевые байты в строке, указывающей нулевой терминатор. Это означает, что код не может просто предполагать кодировку ASCII текстовых файлов, строк и входных данных.

«Безопасное для I18N» кодирование означает код, который не содержит ошибок I18N. I18N - это нумероним интернационализации, где между I и N. 18 символов.

Существует несколько категорий проблем, связанных с i18n, таких как: Формат культуры: форматы даты и времени (ДД / ММ / ГГ в Великобритании и ММ / ДД / ГГ в США), числовые форматы, часовой пояс, единицы измерения меняются от культуры к культуре. Данные должны приниматься, обрабатываться и отображаться в правильном формате для правильной культуры / региона. Поддержка международных символов: все символы со всех разных языков должны приниматься, обрабатываться и отображаться правильно. Локализуемость: переводимые строки не должны быть жестким кодом. Они должны быть вынесены в файлы ресурсов.

Кодирование «I18N Safe» означает, что ни одна из вышеперечисленных проблем не связана с тем, как написан код.

введите описание изображения здесь

его нумероним для интернационализации.

В отличие от аббревиатуры, нумероним - это числовое слово (например, 411 = информация, k9 = собачий);

В коде это обычно будет заголовок папки, который обычно относится к коду, который будет работать в международной среде - с другой локалью, клавиатурой, наборами символов и т. Д. ... "

Подробнее об этом читайте здесь: http://www.i18nguy.com/origini18n.html.

I18N означает интернационализацию .

В двух словах: безопасный код I18N означает, что он использует какую-то таблицу поиска для текстов в пользовательском интерфейсе. Для этого вы должны поддерживать кодировки, отличные от ASCII. Это может показаться простым, но есть некоторые подводные камни .

i18n - это сокращение от «интернационализации». Это было придумано в DEC и фактически использует строчные буквы i и n .

В качестве примечания: L10n означает «локализация» и использует заглавную L, чтобы отличать ее от строчной i .

I18N означает интернационализацию.

Без какой-либо дополнительной информации я бы предположил, что это означает, что код обрабатывает текст как UTF8 и учитывает языковой стандарт. См. Эту статью в Википедии для получения дополнительной информации.

Вы можете быть более конкретными?

i18n занимается - перемещением жестко закодированных строк из кода (не все, кстати), чтобы их можно было локализовать / перевести (localization == L10n), как указывали другие, а также имеет дело с - чувствительным к языку методом, такие как --methods, имеющие дело с обработкой текста (сколько слов в японском тексте очевидно :), порядок / сопоставление в разных языках / системах письма, - работа с датой / временем (простейший пример показывает am / pm для США, 24-часовые часы для Франции, например, переход к более сложным календарям для определенных стран), - работа с арабским или ивритом (ориентация пользовательского интерфейса, текста и т. д.), - кодирование, как указывали другие, - проблемы с базой данных - это довольно обширный ракурс. Просто иметь дело с «экстернализацией строки» далеко не достаточно.

Некоторые (программные) языки лучше других помогают разработчикам писать код i18n (то есть код, который будет работать на разных языках), но это остается обязанностью разработчиков программного обеспечения.