あなたのNETプログラムは多言語対応

3302 ワード

苦労して作ったソフトは、もちろんもっと多くの人に使ってもらいたいし、多言語をサポートする必要があります.次はAspでNetWeb Formを例に、多言語をサポートする方法を紹介します.他のプログラム、例えばwindowsプログラムは、プロセスが大きく異なります.

次の手順に従います。

  • デフォルトリソースファイルを生成し、リソースファイルを翻訳します.
  • 一点コードを書く言語切替
  • を実現する
  • いくつかの高級な話題.例はいつも簡単ですが、実際のプロジェクトではどのような問題が発生しますか?

  • 詳細は次のとおりです.

    デフォルトのリソースファイルを生成し、リソースファイルを翻訳します。

  • Aspを作成する.Netweb formプロジェクトは、WebFormを追加し、label、buttonなどの要素を加えてtextを設定します.
  • メニューTool->Generate Local Resourceを選択すると、VSがフォルダAppを自動的に作成しているのがわかります.ここにファイルがあるaspx.resx.技術者として、自分で開けてみましょう.xmlファイルです.ノート:Asp.NetMVCこのような方法でリソースファイルを自動的に生成することはできません.自分で作成する必要があります.
  • 3. このときWebForm 1が開く.aspxでは、meta:resourcekey=「Label 1 Resource 1」のようなコードがいくつか変わっているのが見えます.これが理解だNetは多言語の最も基礎的なものをサポートします.Asp.NetはこのresoruceKeyを通じて、このlabelが異なる言語で表示すべきテキストをリソースファイルから見つけます. 
  • このとき、リソースファイルのテキストを変更してデバッグを再起動しようとすると、ページの内容が変化します.さあ、今まで多言語をサポートする最も基礎的なものが完成しました.
  • このリソースファイルWebForm 1をコピーする.aspx.resx、新しいファイルをWebForm 1と命名します.aspx.zh-CN.resx、中のテキストを中国語に変更します.最初に中国語を書いた場合は、en-USと名前を付けて英語に変更することができます.

  • コードを少し書いて言語の切り替えを実現する


    6.翻訳した内容をページに表示させるにはどうすればいいですか?WebForm 1のバックグラウンドコードに次の方法を追加します.
    protected override void InitializeCulture()
    
     {
    
     Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("zh-CN");
    
     Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh-CN");
    
     base.InitializeCulture();
    
     }
    
    

     
  • 上記のコードを追加すると、デバッグを開始すると中国語のページが表示されます.zh-CNを他の言語コードに変更しようとすると、あなたのシステムは他の言語に表示されます.注意:英語のリソースファイルが存在しない場合、またはいくつかのアイテムが存在しない場合、デフォルトのリソースファイルから自動的に検索されるので、翻訳が完了していなくてもインタフェースに空白は表示されません.
  • 実際のプロジェクトでは、Webサイトのモバイルデスクが言語を変更することを望んでいる可能性があります.これも複雑ではありません.インタフェースにいくつかのリンクやボタンを付けるだけで、いくつかの小さな画像で異なる国の国旗を表示することができます.ユーザーがクリックした後、ユーザーの選択を保存してから、InitializeCulture()関数の言語コードを動的に置き換えることができます.
  • 多言語経験のないプログラマーは、インタフェースに表示するコンテンツをコードにハードコーディングします.これにより、サポートされるまでにハードコーディングされたテキストをリソースファイルに抽出する必要があります.そうでなければ多言語をサポートすることはできません.VSのコードチェックツールは、多言語で問題があるコードをサポートするのに役立ちます.VSで自動的に生成されるリソースファイルに加えて、独自のリソースファイルを作成することもできます.

  • いくつかの高級な話題。


    はい、実際のプロジェクトはもちろんそんなに簡単ではありません.この小さな文章はもちろん、実際のプロジェクトで発生する可能性のある問題をすべてはっきり説明することはできません.私が経験した典型的な問題と解決策を書きます.
  • リソースの翻訳の問題.実際のプロジェクトは必ず専門の翻訳者を探して翻訳しなければなりません.彼らはどのように私たちのリソースファイルを開きますか?よく使われるのは、リソースファイルをExcelにエクスポートしたり、他の翻訳業界専用のフォーマットを翻訳してからインポートしたりすることです.すでにいくつかのツールがこの機能をサポートしています.いくつかのプロジェクトには数百のリソースファイルがありますが、これらのファイルの管理は確かに簡単ではありません.
  • 翻訳のバージョン管理.私たちが最初のバージョンの翻訳を完了し、2番目のバージョンを開発したとき、もちろん2番目のバージョンを翻訳しなければなりません.インタフェースには新しく追加され、変更された内容がたくさんあるからです.あなたはすでに直面する問題を考えているかもしれませんが、どのようにしてこれらの変化した内容を見つけて翻訳者に送るべきですか?手動で比較して一つ一つ選べるわけにはいかないでしょう.ここでは、私たちが開発したツールをお勧めします.これらの変化したリソースを見つけることができます.翻訳者は直接ウェブサイトにログインすれば、翻訳を完了することができます.ウェブサイトはrtpです.cleancodesoft.com
  • インタフェースのレイアウトの問題.プロジェクトの実際の翻訳が完了すると、インタフェースに何かが乱れていることがわかります.中国語は2文字の内容で英語は長い列が必要かもしれません.Webプログラムがcssを書くときにこれらの問題を考慮するには、windowsプログラムの場合、デザイナを再開し、プロパティウィンドウから言語を選択する必要があります.デザイナは選択した言語のリソースを自動的にロードし、レイアウトを再調整することができます.近道はありません.すべてのインタフェースを再チェックする必要があります.注意深いtesterがこのことをしてくれたほうがいいです.
  • は使わなくてもいいですか.resxリソースファイル?もちろんいいです.原理はすべて同じで、翻訳が必要な内容を抽出して、それから動的に読みます.どのように保存してもかまいません.便利でいいです.オープンソースプロジェクトや他のプラットフォームの下のプロジェクトには、さまざまな方法があります.しかし、私の知っている限りでは.resxは最も簡単なはずです.