web-dev-qa-db-ja.com

I18Nセーフとはどういう意味ですか?

あるコードで「I18Nセーフ」というコメントに出くわしました。

これは何を指しますか?

59

I +(約18文字)+ N = InternationalizatioN

I18Nセーフとは、設計および開発中に、後の時点でローカリゼーション(L10N)を容易にする手順が実行されたことを意味します。

79
cdonner

これは、ほとんどの場合、I18Nに対応したコードまたは構成を参照します。つまり、一般的なI18N手法で簡単にサポートされます。たとえば、次の準備ができています。

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

以下はそうではありませんが:

printf("Result is " + result);

語順は言語によって異なる場合があるためです。 Unicodeサポート、国際日付変更線なども対象となります。

EDIT:実生活に近い例を作成するためにloadResourceStringを追加しました。

13
Michael Pliskin

i18nは、i nternationalizatio n => i(18文字)nを意味します。 i18nセーフとしてマークされているコードは、非ASCII文字データ(Unicodeなど)を正しく処理するコードになります。

9
Rob K

国際化。その由来は「文字I、18文字、文字N」です。

7
chaos

I18NはInternationalizationの略です。

5
Scott

i18nは「国際化」の省略形です。これはDECで造られたもので、実際には小文字のinを使用しています。

補足として:L10nは「ローカリゼーション」を表し、大文字を使用します[〜#〜] l [〜#〜]小文字と区別するためにi

3
Anton Gogolev

I18Nは 国際化 の略です。

一言で言えば、I18Nセーフコードは、UI上のテキストに対してある種のルックアップテーブルを使用することを意味します。このためには、非ASCIIエンコーディングをサポートする必要があります。これは簡単に思えるかもしれませんが、いくつかの 落とし穴 があります。

1
KovBal

i18n-safeは漠然とした概念です。これは通常、ロケール、キーボード、文字セットなどが異なる国際的な環境で機能するコードを指します。真のi18nセーフコードを作成するのは困難です。

これは、コードが以下に依存できないことを意味します。

sizeof(char)== 1

その文字はUTF-324バイト文字またはUTF-162バイト文字であり、複数バイトを占める可能性があるためです。

これは、コードが文字列のバイト数に等しい文字列の長さに依存できないことを意味します。これは、コードがヌルターミネータを示す文字列のゼロバイトに依存できないことを意味します。これは、コードがテキストファイル、文字列、および入力のASCIIエンコーディングを単純に想定できないことを意味します。

1
Paul Beckingham

enter image description here

その国際化のヌメロニム。

頭字語とは異なり、ヌメロニムは数字ベースの単語です(例:411 =情報、k9 =犬)。

コードでは、これは通常フォルダのタイトルになります。これは通常、ロケール、キーボード、文字セットなどが異なる国際的な環境で機能するコードを指します。.. "

詳細はこちら: http://www.i18nguy.com/origini18n.html

1
Gel Sisaed

「I18Nセーフ」コーディングとは、I18Nバグを導入しないコードを意味します。 I18Nは国際化のヌメロニムであり、IとNの間に18文字あります。

I18nに関連する問題には、次のような複数のカテゴリがあります。カルチャ形式:日時形式(英国ではDD/MM/YY、米国ではMM/DD/YY)、数値形式、タイムゾーン、測定単位はカルチャごとに異なります。データは、適切な文化/地域に適した形式で受け入れ、処理、表示される必要があります。国際文字サポート:すべての異なる言語のすべての文字が受け入れられ、処理され、正しく表示される必要があります。ローカライズ可能性:翻訳可能な文字列はハードコードであってはなりません。それらはリソースファイルで外部化する必要があります。

「I18Nセーフ」コーディングとは、コードの記述方法によって上記の問題が発生しないことを意味します。

1
Ryota Kaneko

追加情報がなければ、コードがテキストをUTF8として処理し、ロケールに対応していることを意味していると思います。詳細については、 このウィキペディアの記事 を参照してください。

もう少し具体的に教えていただけますか?

1
Cal Jacobson

i18nは、ハードコードされた文字列をコードから移動して(すべてが途中である必要はありません)、他の人が指摘しているように、ローカライズ/変換できるようにします(localization == L10n)。たとえば、-テキスト処理を処理するメソッド(日本語テキストの単語数は非常に明白です:)、さまざまな言語/書記体系での順序/照合、-日付/時刻を処理する(最も簡単な例は、am/pmを表示することです。米国、たとえばフランスの24時間クロック、特定の国のより複雑なカレンダーに移動)、-アラビア語またはヘブライ語(UIの方向、テキストなど)の処理、-他の人が指摘しているようにエンコード-データベースの問題はかなり包括的な角度です。 「文字列の外部化」を扱うだけでは十分ではありません。

一部の(ソフトウェア)言語は、開発者がi18nコード(さまざまなロケールで実行されるコードを意味する)を作成するのに役立つ点で他の言語よりも優れていますが、ソフトウェアエンジニアリングの責任は変わりません。

0