開発から見たwindowsの国際化機能

76
NT Committee2 石坂忠広 MVP for Visual Developer C#

Upload: tadahiro-ishisaka

Post on 28-May-2015

3.001 views

Category:

Technology


7 download

DESCRIPTION

Windowsおよび.NET Frameworkアプリケーションでの国際化要件について

TRANSCRIPT

Page 1: 開発から見たWindowsの国際化機能

NT Committee2 石坂忠広MVP for Visual Developer C#

Page 2: 開発から見たWindowsの国際化機能

http://www.isisaka.com/

NT-Committee2会員

PASS-Jスタッフ

Microsoft MVP for Visual Developer C#

Page 3: 開発から見たWindowsの国際化機能

なぜ国際化なのか

従来の国際化(日本語化)

World Ready

ローカライズ

文化・カルチャ?

Page 4: 開発から見たWindowsの国際化機能

企業の多国籍化

オフショア

日本語がネイティブでない環境での開発

コア部分開発とUI部分の分業

国内市場の行き詰まり

日本以外のマーケットを開拓する

すべてが日本語化されるべきと期待される今の特権的地位はいつまで続くだろうか

Page 5: 開発から見たWindowsの国際化機能

いずれかの言語でアプリケーションを開発する

たいていは英語で開発する。

それを各国語に翻訳する。

リソースDLLは分かれているか?

バイナリリソースエディタでテキストを置き換える

ソースコード内のテキスト文字の翻訳

sed s/hoge/ほげ/でうまくいくのか

Page 6: 開発から見たWindowsの国際化機能

バイナリリソースエディタ そもそもオリジナルの作成者が国際化を前提に、リソースを外部DLL化してくれていないといけない。

確かにテキストの置き換えは簡単にできる。

エリアからはみ出す文字、余りすぎるテキストボックス。文字が途中でとぎれるボタン。

エディタでリサイズ・チェック、リサイズ・チェック

ああ「能」の字が化けてる。orz

Page 7: 開発から見たWindowsの国際化機能

ソースの変更

ああここも直ってない。。

一千も二千もあるソースリソースからテキストを見つけ出さなくちゃいけない。

エラーメッセージが英語だよ。

そ、それは、英語ランタイムが出すメッセージだから直せないんだよ。。。

やっぱり「能」の字が化けるよ。orz

バックスペースしたら、漢字が半分無くなったよ。

Page 8: 開発から見たWindowsの国際化機能

日本語ランタイムと英語ランタイムの違いがあり、日本語を正常に扱うには日本語の開発環境でビルドが必要。

でも、どことは言わないけど日本語ランタイムには英語にないバグがっ

そもそも開発元が日本語環境でのビルドを許してくれない。(ソースを渡してくれない)

Page 9: 開発から見たWindowsの国際化機能

まだこの状態で苦しんでおられる方が多いと思います。

根本的解決策は、なんとしてもソースコードを入手すること、翻訳後のソースは向こうで管理させることです。

もしくは、根本的に作り替えること!

Page 10: 開発から見たWindowsの国際化機能
Page 11: 開発から見たWindowsの国際化機能

言語を問わずシングルバイナリを目指して開発すること

Windowsのもつ国際化対応機能を柔軟に使用し、それらの支援を受けながらアプリケーションの仕様決定、開発を行う。

開発を二つに分ける

Core CodeのGlobalization化

リソースDLLによるLocalize

Page 12: 開発から見たWindowsの国際化機能

Unicodeに完全対応したアプリケーションを記述する

コード内で数値、金銭、日付等のフォーマッティングを直接行わない

テキスト入力の言語、入力方法の違いを考慮する 特定のフォントに依存させない テキスト中の複数言語混在に対応させる(m17n)

MUIに対応させる UIのローカリゼーション容易性への配慮 右から始まる言語への配慮(UIのミラーリング)

Page 13: 開発から見たWindowsの国際化機能

UNICODE自体の説明は省きます。 以下の点はまず注意してください

Windowsのバージョンによって、対応しているUNICODEのバージョンが違います。

その他、Java, VB, VC++(CRT)のそれぞれのバージョンが持つランタイムでも対応しているUNICODEのバージョンが違います

これで何がまずいか?

使える文字と使えない文字が出てきます

Page 14: 開発から見たWindowsの国際化機能

Windows 2000 UNICODEに完全対応した最初のバージョン UNICODE 2.0

UCS-2エンコード

Windows XP / 2003 UNICODE 3.0

UTF-16LE以下同様

.NET Framework UNICODE 3.2

いわゆるJIS2004の文字を含む

Windows Vista / 2008 UNICODE 5.0

Page 15: 開発から見たWindowsの国際化機能

SQL Server(7.0以降)

UCS2 + サロゲートペアに対応

一応UNICODE 3.0以降の文字もnchar, nvarchar

フィールドには格納できる。

ただ、いろいろ問題が。。

詳しくはPASSJアフタースクールへ(宣伝)

Officeは?Exchangeは? ???

Page 16: 開発から見たWindowsの国際化機能

アプリケーションをUNICODE対応とするには ネイティブコード

あんまり詳しくやりません(終わらなくなる)

#define UNICODE Visual StudioではWizardの中でチェックをする/しない

文字列 LPTSTRマクロを使う(UNICODEがDefineされていれば自動的にLPWSTRに変えてくれる) 文字列定数の前には大文字のLをつける LPTSTR str = L”僕の名前は石坂忠広です。”;

MFCが使えるならCStringクラスを使う COMはVT_BSTRで これらは相互変換のマクロ、クラスメソッドがある

Page 17: 開発から見たWindowsの国際化機能

.NET Frameworkでの開発 .NET FxはUNICODEに完全に対応

内部では文字列はUTF-16でエンコードされる。 char型は2バイト

ただし、テキスト入出力とXMLのデフォルトエンコーディングはUTF-8なので注意。

基本的にIEが使用できる文字コード(Shift-JIS/EUC.jp)にはファイル入出力の時点で変換することが出来る。同様にコードページを指定したエンコード、デコードも可能。

Page 18: 開発から見たWindowsの国際化機能

WEB Page

基本的にはW3Cの標準通り。

現状はUTF-8を推奨

Java

内部はUTF-8

コマンドプロンプト 基本的にUNICODEには対応していない

ただし、表示できる範囲ではUNICODEとの相互変換が自動的に実行される

Page 19: 開発から見たWindowsの国際化機能

Locale(ロケール)

本来は英語の意味通り地域(ローカル)を表す。

かつてC言語標準化の中で、ローカル変数の「ローカル」と紛らわしいとされ、訳語が「ロケール」に統一されたと聞いています

Windowsでは特定の国や地域の言語と文化上の慣例を反映させたWindows 設定のコレクションの意味です。

Page 20: 開発から見たWindowsの国際化機能

System Locale

UNICODE以外での言語環境を特定します。

DOS, OS/2, Win16でのCode Pageに該当します。

いわゆるANSI APIが使用された場合、この設定により実際の言語・文字コード(CP)が特定されます。

User Locale

User毎に設定するLocale。

設定は小林さんスライド参照。

名前と違い実際には非ログオンのサービスアカウントにも影響

Page 21: 開発から見たWindowsの国際化機能

Thread Locale 実行単位毎に持つLocale。何もしなければUser Localeを継承する。

つまりUser Localeと違うロケールをスレッド毎に持つことも可能

Input Locale 文字入力のLocale。 言語ツールバーで設定する。 インプットメソッドの切り替え

User Locale以降のLocale操作、状態の取得、機能の使用にはNLS APIを使用する。

Page 22: 開発から見たWindowsの国際化機能

WindowsおよびWindows上に実装されたアプリケーションで複数地域・複数言語に対応するためのAPIセット

NLS APIが持っている機能 現在のLocale設定の取得

動的なThread Localeの変更

数値、日付等のフォーマット

ロケールに合わせた並び替えの支援

Input Method系のAPI

Page 23: 開発から見たWindowsの国際化機能

NLSの各設定(書式とか)はLCIDで管理されている

NLS APIに何か仕事をさせたい場合にはLCIDでロケールを指定して、仕事をさる。

LCIDはロケール毎に一意に32ビットの整数値で番号を持つ。

Windows Vista以降で追加されたAPIではLocale Name(Exp. Ja-Jp)で指定できる場合がある。 Locale Name:

ms-help://MS.MSDNQTR.v80.ja/MS.MSDN.v80/MS.WIN32COM.v10.en/intl/nls_Locale_Name.htm

Page 24: 開発から見たWindowsの国際化機能

LCID自体は16ビットのLanguage IDと4ビットのSort IDからなる。 ms-

help://MS.MSDNQTR.v80.ja/MS.MSDN.v80/MS.WINCE.v50.en/wceinternational5/html/wce50conSpecifyingLocaleswithNLS.htm

Language IDは言語とその文字集合を表す数値 ms-

help://MS.MSDNQTR.v80.ja/MS.MSDN.v80/MS.WIN32COM.v10.en/msagent/pacontrol_4w2y.htm

Sort IDは照合順序(Collation)を表す数値

Primary LanguageSub LanguageSort IDReserve

Language ID

Locale ID

12bit 4bit 6bit 10bit

Page 25: 開発から見たWindowsの国際化機能

.net FxではCultureInfoクラスでLCIDを管理する。

カルチャの名前、書記体系、使用される暦、日付の書式設定と文字列の並べ替え方法など、特定のカルチャに関する情報を提供する。

Page 26: 開発から見たWindowsの国際化機能

全ロケールの取得とカレントロケールの取得

Page 27: 開発から見たWindowsの国際化機能

日付の書式

通常どちらかの書式を使用する Long Format(長い形式)

英語(US):Saturday , October 27, 2007

日本語:2007年10月27日

Short Format(短い形式)

英語(US):10/27/07

日本語:07/10/27

日本の年号への対応、ヘブライ歴等の西暦以外への変換

Page 28: 開発から見たWindowsの国際化機能

テキストフォーマッティングの書式で日付書式文字の”d”(Short Format)や”D”(Long Format)等を使用する。

逆に”YYYY/mm/dd hh:mm”のような固定書式にしてはいけない。 このように記述してしまったコードはもはや

Globalization対応とは言えない

http://msdn2.microsoft.com/ja-jp/library/az4se3k1(VS.80).aspx

Page 29: 開発から見たWindowsの国際化機能

日付のフォーマッティング

Page 30: 開発から見たWindowsの国際化機能

12時間か24時間か 時刻の書式文字で区別

hまたはhh:12時間計、HまたはHH:24時間計

時分秒の区切りに文字を使うのか

タイムゾーンと現在時刻 NLSのロケールで現在時刻を求めないので注意

TimeZone設定でUTCから現地時間の算出を行う

そのときには夏時間の設定がそのタイムゾーンにあればそれを考慮して現地時間を算出する

Page 31: 開発から見たWindowsの国際化機能

Vistaでは世界地図が無くなって寂しい

Page 32: 開発から見たWindowsの国際化機能

時刻書式の詳細は書式文字列を使って行う

カスタムの書式http://msdn2.microsoft.com/ja-

jp/library/8kb3ddd4(VS.80).aspx

TimeZone

TimeZoneに関する操作はSystem.TimeZoneクラスを使用します。

http://msdn2.microsoft.com/ja-

jp/library/system.timezone.aspx

Page 33: 開発から見たWindowsの国際化機能

時刻書式とTimeZoneの処理

Page 34: 開発から見たWindowsの国際化機能

金銭の単位 日本:¥

アメリカ:$

マイナス値の表示方法 小数点

日本・アメリカ:「.」 欧州:「,」

桁区切り 日本・アメリカ:「,」 欧州:「.」

Page 35: 開発から見たWindowsの国際化機能

テキストフォーマッティングの書式で金銭書式文字の”c/C”や十進数書式”D”等を使用する。

日付の場合と同様固定書式にしてはいけない。

このように記述してしまったコードはもはやGlobalization対応とは言えない

標準の数値書式指定文字列http://msdn2.microsoft.com/ja-

jp/library/dwhawy9k(VS.80).aspx

Page 36: 開発から見たWindowsの国際化機能

ロケール毎に文字列の並び替えに使用するための文字毎の重み付けと何と何を同じ文字として扱うかという設定がある。

これをSQL Serverでは参照順序(Collation)と呼ぶ

ロケール毎に複数の参照順序を持つ場合がある 現在のWindows Vistaの場合Ja-JPの場合XJIS(デフォルト)と部首・画数の二種類がコントロールパネルから選択可能

日本語関連 CompareInfoと、部首画数での並べ替え@河端善博ブログ / SQL Server / PASSJ

http://blogs.sqlpassj.org/yoshihirokawabata/archive/2007/07/27/23864.aspx

Page 37: 開発から見たWindowsの国際化機能

.net FxのString.Compare()メソッドやArrayクラスのSortメソッド等ではスレッドのカルチャが持つソート順序を使用して処理を行う

並び替えの設定によっては単純なコード順並び替えや比較ではないので注意する

Page 38: 開発から見たWindowsの国際化機能

ロケールの管理、各種機能はNLS APIにより提供される

Locale, CultureはLCIDで管理される

日時、金銭、数字のフォーマットは自分でコードに細かく記述せず、NLSに任せる

テキスト比較はソート順序の設定が使用され、その設定が目的通りに設定され英無いと予想外の結果になる

Page 39: 開発から見たWindowsの国際化機能

Input Language

Complex Script

Font

Page 40: 開発から見たWindowsの国際化機能

Text Service Framework(TSF)

Windows XP以降Input Method

Manager(IMM/AIMM)がText Service

Framework(TSF)に拡張されていく中で、ただのアジア言語(日本語)入力機能から、複数言語入力の切り替え、キーボードマップの動的な変更、音声入力、手書き入力等への拡張がなされた。

.net FxではInputMethodクラスで制御を行う

Page 41: 開発から見たWindowsの国際化機能

複数言語を同一データ内で同時に入力、表示、保存させること

UniscribeといわれるUnicode Script Processor(USP10.DLL)がComplex Scriptの実行エンジンになっている

Applicationは直接Uniscribeを呼び出すことも出来るし、GDIを通しLPK.DLLにパーシングさせることで間接的に使用することも出来る

Aplication

LPK.DLLUniscribeUser/GDI

Page 42: 開発から見たWindowsの国際化機能

Standard Edit Control Complex Scriptに関して標準的に対応されている。 実装例:

メモ帳(Notepad.exe)

Rich Edit Control Text Object Model(TOM)のインターフェイス Uよりリッチな多言語環境、マルチフォント環境の提供 実装例:

ワードパッド

アプリケーション開発においては、これらのコントロールを使用するのが現実的

Page 43: 開発から見たWindowsの国際化機能

.net Framework .NET Fx 2.0以降ではGDI+のComplex Script対応機能を使用し、Windows Formのすべてのコントロールで同レベルのサポートを実現している

Application.SetUseCompatibleTextRenderingDefaultメソッドをプロセスでFormを最初に作るときに呼び出すことで、個別コントロールでの設定をなくすことが出来る

Complex Scriptに関するMSDN Magazineの記事 http://msdn.microsoft.com/msdnmag/issues/06/03/Text

Rendering/

Page 44: 開発から見たWindowsの国際化機能

最終的に文字を表示できるかどうかはFontで決まる。

Globalizationに対応したFontを使用する UIにはシステムフォントを使う

Windows XP / 2003 / VistaはTahomeを標準に はねのないゴシックのLattain-1、ヘブライ語用フォント

フォントリンクもしくはFallbackでそのほかの言語用フォントがリンクされており、体裁はともかくとにかく表示はしてくれる

Arial Unicodeの問題 Unicode 2.0「の」文字はすべて表示可能

それゆえに表示できない文字がある

Page 45: 開発から見たWindowsの国際化機能

Fallback

Uniscribeが現状フォントで表示できない文字列があると判断した場合に、その文字が表示可能なFontを割り当てる。

GDI+のテキストレンダリングエンジンが使用する

そのときにどのフォントを割り当てるか重み付けがあるらしく、どうもそれがVistaで変更されようだ。 かつて漢字が表示できない場合にはMSPゴシックが選択されたが、VistaではMingLiuが選択される確率が高いように思える。MingLiuはセリフフォントなので、見た目が変わりすぎるので困るのだ

Page 46: 開発から見たWindowsの国際化機能

Font Linking

システムフォントが文字列を表示できなかった場合にどのフォントで代用するかを指定した設定

レジストリのHKLM¥SOFTWARE¥Microsoft¥Windows

NT¥CurrentVersion¥FontLink¥SystemLinkにその設定がある

Font LinkはGDIのレンダリング、GDI+でFall Back

がうまくいかなかったときに使用される

Page 47: 開発から見たWindowsの国際化機能

アプリケーションのMUI

MUIの戦略 言語毎の実行ファイル。各言語リソースは、コードと一緒に一つのバイナリに

一つの言語ニュートラルな実行ファイルと複数言語のリソースを含んだ1つのリソースDLL

一つの言語ニュートラルな実行ファイルと格言午後とのリソースDLL

今のWindowsそのものを含む一般的なMUIの戦略

Page 48: 開発から見たWindowsの国際化機能

作成手順 何かの言語で実行ファイルとリソースをビルドする。(この時の言語がデフォルトリソースとなる)

追加リソースのDLLを作成する。

実行時のリソースの選択順序 まずデフォルトリソースで起動される。

現在システムのMUIで設定されているロケールと同じリソースDLLがあればそれをロードする。

システムのMUI設定にかかわらずUIのロケールをUser Localeにあわせて変更するにはカレントスレッドのCurrentUICultureプロパティをコンポーネントの初期化前に変更する。

Page 49: 開発から見たWindowsの国際化機能

@IT .NET Tips Windowsフォームを多言語対応にするには?

http://www.atmarkit.co.jp/fdotnet/dotnettips/314win

multilang/winmultilang.html

一番簡単で、有用なチュートリアル

作業が増えるだけで、これ以上でも以下でもない

Page 50: 開発から見たWindowsの国際化機能

WinFormでのMUIアプリケーションの作成

UIをUser Localeにあわせて変更する。

Page 51: 開発から見たWindowsの国際化機能

ローカライズ対象となるリソースの分離 文字列だけでなく、図、ビットマップ、ダイアログボックスも必要に応じてCoreのバイナリから分離する。

.net Fxにおける詳細 MSDN:リソースのパッケージ化と配置

http://msdn2.microsoft.com/ja-jp/library/sb6a8618(VS.80).aspx

MSDN:固有カルチャのリソースの検索と使用 http://msdn2.microsoft.com/ja-

jp/library/s9ckwb4b(VS.80).aspx

MSDN: Windows フォームリソースのローカライズ http://msdn2.microsoft.com/ja-

jp/library/yys3e2fd(VS.80).aspx

Page 52: 開発から見たWindowsの国際化機能
Page 53: 開発から見たWindowsの国際化機能

アラビア語のような右から書き始める言語に合わせ、諸々のUIを右から書き始めるようにする。

ツリービュー、グリッドコントロールの開始位置が右など

標準コントロールや.net FxのWinFormのコントロールでは、各コントロールの右から書き始めを示すプロパティをセットする。

.NET FxではRightToLeftプロパティが一般的

Page 54: 開発から見たWindowsの国際化機能

http://msdn2.microsoft.com/ja-jp/library/aa350685(VS.80).aspx

Page 55: 開発から見たWindowsの国際化機能

NLSで対応できない文化的な違いをどうするのか

Page 56: 開発から見たWindowsの国際化機能

日本人は感覚的に理解できない

毎時処理等では、夏時間の開始時と終了時には1日の時間が24時間ではないので注意が必要(特別な処理がたいていに場合には必要)

可能な限り時刻をキーとしたデータ管理では、時刻データとしてはUTCを使用する。

時差があってもデータの比較を行いやすくする

夏時間の影響を排除する

Page 57: 開発から見たWindowsの国際化機能

国や地域によって、住所のルールが違う

特に日本は住所から位置の推定が全く出来ない。600番地の隣が865番地なんて欧米ではほぼあり得ない

基本は可変長テキストで保存

特定の位置情報が必要であれば、ジオメトリのデータを使用する。(経度緯度情報など)

Page 58: 開発から見たWindowsの国際化機能

米と欧・日での用紙サイズの違い 米国はLetter, Legalが標準的な用紙サイズ 欧・日その他多くの地域はISO(JIS)のA4, A3等の用紙サイズ

特定の用紙を前提とした印字処理をしない

プリンタの問題 欧米:ビジネス用途ならHP-PLかPost Script何れか 日本:メーカー毎のページ記述言語。。 WindowsのAPI経由ではあまり大きな問題にならないが、プリンタドライバ、それの英語版があるか無いかはかなり問題が起こるポイント

正直なところ世の中のプリンタメーカはHPだけでいいです

Page 59: 開発から見たWindowsの国際化機能

正直NLS APIで面倒見てくれないかと思う EUが妥協して、イギリスはメートル法とヤード・ポンド制を併用してよくなった(Fack)

アプリケーションで何とかするしかない 基本はSI単位(SI条約)を使用する 国内では非SI単位の使用は原則システム提供側が計量法違反

商慣習上必要な場合、法適用外あるいはお目こぼしされる 真珠の匁(もんめ) 印刷でのヤード・ポンド制使用

Page 60: 開発から見たWindowsの国際化機能

パッケージやアプリケーション内で人物写真を使う場合何か注意がいるのか?

多分日本人(多分韓国人、中国人も)には感覚的に理解できない

多くの国で、人種、性差に対しての配慮が必要

子供の取り扱いもかなり微妙

Page 61: 開発から見たWindowsの国際化機能
Page 62: 開発から見たWindowsの国際化機能

基本的に女性の写真を使うのはNG

イスラム的正しさが必要

ほかのアラブ諸国ではここまで厳しくない

Page 63: 開発から見たWindowsの国際化機能

会議を表す図か写真をアプリケーションで使いたい場合

あきらめてこれらの図のように人物を入れないか、人としかわからない図にする

Page 64: 開発から見たWindowsの国際化機能

NLSのCultureはあくまでもビジネスの世界から見た地域文化やルールのわずかな一側面に対応するだけ

UIを翻訳すればLocalizeなんだろうか?

Localizeとは結局その地域の文化にアプリケーションを対応させること

Excelのふりがな

Page 65: 開発から見たWindowsの国際化機能
Page 66: 開発から見たWindowsの国際化機能

基本は英語版OS, 英語版Visual Studio 今でも原則はen-US版アプリケーションを作成し、それを別言語にする

多言語化ターゲットの試験環境 仮装化環境で用意するのが便利 パフォーマンス試験が基本言語環境以外でも必要か設計時に見積もる

MSDN サブスクリプションサービスの購入が必須

Vistaは本当にシングルバイナリで、多言語開発環境として英語版以外でもそれが可能なのか?

Page 67: 開発から見たWindowsの国際化機能

バージョン管理システムのスケール、柔軟性について考慮が必要 インターネット環境ではVSSは使い物にならない

国際イントラネットがある場合には何とかなることもある

TFSは多国籍間の開発に耐えられるか? 国をまたがる開発環境での調査、試験は未実施

Subversion推奨 TatoiseSVNがある

Visual Studioのアドインもあるけど使っていません

ディレクトリ構造にはVS管理のリソース以外のドキュメント等についても多言語であることを留意して標準化を

Page 68: 開発から見たWindowsの国際化機能

コメント 開発チームが複数にまたがる場合、コメントに日本語やその他のローカル言語を許容するのか決める必要がある

訳語の統一 少なくともプロジェクト内ではExcelでもいいから訳語のデータベースを作って訳語の統一を図る

マイクロソフトの取り組みが参考に

前者および翻訳プロバイダまで含めた訳語データベースの作成による訳語の管理

Page 69: 開発から見たWindowsの国際化機能

欧米人には漢字は絵にしか見えない。(文字として認識することにまず訓練がいる)

欧州人開発者における国際化とはISO-8859(Latin-1)の中で各国語とそれ用のキーボードに対応することであり、DBCS環境への対応ではない

とにかく最初は理解されることは期待できないので、粘り強く交渉

Page 70: 開発から見たWindowsの国際化機能
Page 71: 開発から見たWindowsの国際化機能

Developing International

Software, Second Edition

著者 Dr. International

ISBN 0-7356-1583-7

CJKV日中韓越情報処理

著者 Ken Lunde

ISBN 4-87311-108-0

Page 72: 開発から見たWindowsの国際化機能

文字コード超研究

著者深沢千尋

ISBN 978-4899770510

Page 73: 開発から見たWindowsの国際化機能

JIS X 0213:2004 / Unicode 実装ガイド

http://download.microsoft.com/download/e/3/c/e3c

1a451-1882-49fe-86a8-

e25680f6c46c/JIS_Unicode_guide.pdf

Microsoft SQL Server 2005 のインターナショナル機能

http://www.microsoft.com/japan/msdn/sqlserver/sq

l2005/bb330962.aspx

Page 74: 開発から見たWindowsの国際化機能

Microsoft Global Development and

Computing Portal

http://www.microsoft.com/globaldev/default.mspx

Sorting It All Out (Michael Kaplan's)

http://blogs.msdn.com/michkap/default.aspx

Page 75: 開発から見たWindowsの国際化機能

Windows XP Professional の多言語機能

http://www.microsoft.com/japan/technet/prodtechn

ol/winxppro/plan/multilingual.mspx

NyaruruさんによるTFS解説

http://d.hatena.ne.jp/NyaRuRu/20070308/p1

http://d.hatena.ne.jp/NyaRuRu/20070309/p1

http://d.hatena.ne.jp/NyaRuRu/20070310/p1

Page 76: 開発から見たWindowsの国際化機能

Creative Commons Attribution-

Noncommercial-Share Alike 2.1 Japan

http://creativecommons.org/licenses/by-nc-

sa/2.1/jp/