.NET アプリでさまざまな言語をサポートする方法
-
01-07-2019 - |
質問
私が書いているアプリケーションはほぼ完成しているので、さまざまな言語を話す人たちに使ってもらいたいと思っています。
どこから始めればよいのかわかりません。プログラミングに関して、グローバリゼーションと文化の違いは何ですか?
ファイル、開く、保存などではなく、「このアプリケーションはこれとこれを行うために構築されました」などの一般的でないフレーズをどのようにしてスペイン語に変換するのでしょうか?
どうもありがとう :-)
解決
マイクロソフトはすでに非常に優れた製品を提供しています チュートリアル
他のヒント
アプリケーションを「グローバル化」するには、さまざまな作業を行う必要があります。
1) アプリケーションのフォームとコントロールのすべてのラベルを翻訳します。
すべてのフォームとコントロールでプロパティ「Localizable」を true に設定する必要があります。このプロパティを使用すると、各言語および地域でリソース ファイルを作成できます。ここで、「言語」プロパティを使用して、サポートする言語を選択できます。コンボ ボックス リストで言語を選択すると、フォーム (またはコントロール) が自動的にこの言語に切り替わります。ここで、コントロール内のすべての単語を翻訳するのがあなたの仕事です。変更を行うとすぐに、Visual Studio によって特定の言語のリソース ファイルが作成されます。(たとえば、フランス-フランスの場合は MyForm.fr-FR.resx)。
2) コード内のすべてのハードコードされた文字列を resx ファイルにインポートします
リソース ファイル (個人的には StringTable.resx を使用します) を作成し、翻訳するすべての文字列をこのファイルに追加します。その後、サポートする言語ごとにリソース ファイルを作成し、各ファイル内の文字列を翻訳します。たとえば、フランス語をサポートする場合は、フランス語-フランス用に StringTable.fr.resx または StringTable.fr-FR.resx を作成します。と リソースマネージャー クラスでは、各文字列をロードできます。
注記: Visual Studio 2005 または 2008 を使用している場合は、デフォルトでリソース ファイルがすでに作成されています。
3) フォームとコントロールを賢明に精緻化する必要がある
Microsoft のガイドライン: マイクロソフトのガイドライン
4) 日付と数字の扱い
アプリケーションが他のリージョンの他のユーザーに送信できるデータ ファイルを作成する場合は、データをファイルに保存するときに考慮する必要があります。したがって、日時は常に UTC で保存し、情報をロードするときにのみローカルで変換を実行してください。同じことが 10 進数にも当てはまります (特にテキストに格納されている場合)。
アプリケーションをコンパイルすると、Visual Studion は次のようなサテライト ファイルを作成します。 MyApplication.fr.dll サブフォルダー内 フランス. 。この DLL をロードするには、アプリケーションの起動時に現在のスレッドの言語を切り替える必要があります。
コードは次のとおりです。
CultureInfo ci = new CultureInfo("fr");
Thread.CurrentThread.CurrentUICulture = ci;
あなたの質問はすべて以下の本で答えられます。最初の章では、すべての主要な概念、用語、および i18n などの派手な略語について説明します。時間がなくて最後まで読めませんでした…しかし、私が読んだ時点までは良かった。正しい方法で真剣に取り組み、時間がある場合にお勧めします:)
http://www.amazon.com/NET-Internationalization-Developers-Applications-Development/dp/0321341384
非常に単純なシステムの場合は、GetSaveText() などのメソッドを定義するインターフェイスを作成します。このようなアセンブリをアプリケーションにプラグインできるようにします。
これは、10 ~ 1000 個の文字列に対して非常に優れたソリューションとなるはずです。
ロケールごとにリソース ファイルを用意します。.NET については知りませんが、これを行うための一般的な方法があると思います。次に、リソースを取得するコードで、ユーザーのブラウザーのロケール設定に基づいて適切なコードを読み込みます。このコードに、キーの適切な文字列を取得するように要求します。
ファイルの内容の例 (最初から実装した場合):
リソース.en:
save=Save
close=Close
ok=OK
areYouSure=Are you sure?
リソース.es:
save=I don't know how to say anything in Spanish, oops
close=...
ok=...
areYouSure=...