の使用法__(…)
二重アンダースコアは、さまざまな実装で使用されます。Wordpress (WP) が言及され、phpMyAdmin (PMA) は別のものです。
これは、PHP では単一のアンダースコアとしてエイリアスを持つネイティブ PHP 関数 に反映されます。これは PHP に固有のものではありません。Gettextは、Unix ライクなシステムで多言語プログラムを作成するための長年の GNU プロジェクトです。さまざまなプログラミング言語でエイリアスが見つかります。gettext()
_()
_()
主題についての考察
謙虚/正直な意見では、_()
のネイティブおよび __()
カスタム実装としてgettext
、または他のロケール固有の使用法が唯一有効なものであると言うことができます-それは十分に確立された慣習であるためです。一方、それは良くありませんが、それでも簡潔です。たとえば、ANSI-C 標準では、二重下線__
はコンパイラの内部使用のために予約されています。PHPはCと密接に関連しているため、彼らはそれを予約しています。一般に、言語間でさえ混同するのは最善ではありません(IMHO)。境界/薄い氷/などにあります。
(ここでの問題の 1 つは、言語サポートとは何の関係もないものの基盤として使用するUnderscoreJSの選択です_
。) それをプロトタイプ .js と$
混ぜ$$
て、誰かが見るときに頭をかきむしる理由を理解するかもしれません。 __()
PHP と JS が機能するシステムの実装にどれほど近いかを考慮してください。
ロケールのサポート
このステップでは、使用法についていくつかメモをとります。i18n
L10n
WP、2、3および (十分に文書化された) PMAと同様に、言語サポートを提供することでよく使用されます。例えば:
__('Error');
Feil
ノルウェー語またはFehler
ドイツ語で降伏します。しかし、ここで注意しなければならない重要なことは、同じ領域では、直接翻訳以上のものがあるだけでなく、異なるロケール/文化/言語で見られる他の癖もあるということです.
例 (指定する):
一部の言語ではコンマ – ,
– を分数区切りとして使用し、他の言語ではドット – .
– を同じ目的で使用します。その他の典型的なロケールのバリエーションは、センチメートルとインチ、日付形式、12 時間時計と 24 時間時計、通貨などです。
NUMBER LEN 時間
LANG1: 3,133.44 2.00 インチ 午後 5:00
LANG2: 3.133,44 5,08 cm 17:00
あなたが明らかにするコードの次の層は、変数名、関数、およびファイル名のi18n
ようなやや不可解な規則への参照をおそらく持っているでしょう。l10n
それらが何を意味するかを理解すると、それらは非常に便利ですが、定義はややぼやけている可能性があります. 一般に、次のものがあります。
i18n: 国際化
l10n: ローカリゼーション (多くの場合 L10n)
g11n: グローバリゼーション (IBM や Sun Microsystems などで使用)
l12y: ローカライズ可能性 (Microsoft)
m17n: 多言語化 (国際化とローカリゼーションの連続)
... 等々。
あぁ、頭が痛い。
数字は、単語の最初の文字と最後の文字の間の文字数を表します。前後の文字 – は単語の最初と最後の文字です。ふぅ。そう:
i18n l10n
国際化 ローカリゼーション
| | | | | | | |
+-- 18 文字 --+ +-- 10 --+
私 18 nl 10 n
((Group of Eight) のように、この規則に従わない、より強力な数秘術G8
もありますが、それではプログラミングの領域外にいるのでしょうか?)
次に、定義に進みます。
W3Cには、国際化 (i18n) とローカリゼーション(l10n)のかなりまともな定義があります。
この件に関するdebianの短く簡潔なバージョンは次のとおりです。
- 国際化 (I18N): ソフトウェアが潜在的に複数のロケールを処理できるようにすること。
- ローカリゼーション (L10N): ソフトウェアが特定のロケールを処理できるようにすること。
ドメインの使用
コードを見たり、ローカリゼーションについて読んだりするときに、 domainの使用法に出くわすことがよくあります。より検索エンジンに適した名前は、おそらくTranslation Domain
.
(ここで私は少し薄氷の上にいる. ).
つまり、これをcontextとして定義できます。ベースとしてロケールがあります。例えばスコットランド。しかし、ドメインをテーマや職業などの一部としてさらに定義することもできます。たとえば、プログラミングにおけるJavaは、コーヒー ショップとはかなり異なります。または、女性対農業についての堕落したサイトで牛を飼う。
いくつかの手がかりを提供するページはrepoze.orgで、次のものがあります。
通常、翻訳ディレクトリは次のようになります。
/path/to/your/translation_root/en_US/LC_MESSAGES/
/path/to/your/translation_root/en_GB/LC_MESSAGES/
/path/to/your/translation_root/nn_NO/LC_MESSAGES/
…
GetText で使用されるファイル
たとえば PMA を見ると、 という名前のディレクトリが見つかりますlocale
。さまざまな言語のさまざまなディレクトリが含まれています。ファイルは.mo
拡張子付きです。これは GetText 固有のファイルです。通常、プレーン テキスト ファイルである PO (Portable Object) ファイルから開始します。これらは索引付けされ、MO、マシン オブジェクト、最適化のために索引付けされたファイルにコンパイルされます。詳細はこちら(上記のPMAリンクと同じ)。