2011-01-19 19 views
1

おはよう、.NETの外部翻訳

私は、ユーザーが望むように追加する外部GUI翻訳ファイルをサポートするアプリケーションの開発に興味があります。私は.NETに組み込まれているローカリゼーションメソッドを使用することを考えましたが、アプリケーションをビルドした後に、このように変換されたファイルを配布することはできません。

C#で外部ファイルを使用してローカリゼーションを行うより良い方法は何ですか?

ありがとうございました。

+0

私の経験では、不完全または古い翻訳を持つための最良の方法です。アプリケーションの開発者は、リソースファイルを最新の状態に保ち、アラート翻訳者が何か新しいことがあるときなど、翻訳を担当する必要があります。それは明らかにIMHOです。私たちはその問題を解決するための製品を完成さえしました... –

+0

次回はもっと具体的になります –

答えて

3

.NETローカリゼーションは問題なく使用できます。

yopurアプリケーションファイルを正常にローカライズした後、アプリケーションフォルダには、アセンブリリソースのローカライズされたバージョン用のサブフォルダが含まれます。ローカリゼーションに新しい言語を追加した後、これらの新しいDLLを新しく追加されたローカリゼーションのフォルダからあなたのcastomersに配布することができます。

乾杯;)

6

私は、.NET用の独自のローカライズシステムを実装する多くの人々を見てきましたが、個人的に、私は構造が組み込まれてとどまります。

これで、追加の.resxファイルを追加し、後でそのアプリケーションを再コンパイルすることができます。しかし、私はこれがあなたが望むものではないと思いますか?

独自のリソースプロバイダを実装したり、たとえばDBからすべてのローカリゼーション文字列を取得することができます。

例:
http://msdn.microsoft.com/en-us/library/aa905797.aspx#exaspnet20rpm_topic4

+1

はい、新しい翻訳を追加するためだけにアプリケーションを再コンパイルしたくありません。 – Miguel

+0

これで、カスタムリソースプロバイダを使用する必要があります。例えば。 DBまたはフラットファイルを使用します。私はいくつかの例が外にあると確信しています。 – Remy

1

ファイルを再コンパイルしたくない場合は、後であなたがfolowingのようなものを使用することができます。

  1. 複数のxmlファイルを、異なる場所に同じキーと異なる値で作成します。または1つの大きなファイルを作成します。そのファイルのパスをアプリケーション設定のどこかに保存する(またはビルド中に埋め込む)
  2. フォームにデフォルト言語を使用してアプリケーションを作成する(英語、英語用)
  3. 起動時(または最初の起動時)に、使用する言語を指定します。
  4. コンストラクタ内の各フォームまたはウィンドウ(InitializeComponent()の後)で、フォームのテキストをXMLの値に置き換えます。

例のxml:

<doc> 
    <loc name="English"> 
    <form name = "main"> 
     <okButton>OK</okButton> 
     .... 
    </form> 
    <form name = "about"> 
     <lblAuthorName>Author's name: </lblAuthorName> 
     .... 
    </form> 
    </loc> 
    <loc name="Ukrainian"> 
    <form name = "main"> 
     <okButton>Добре</okButton> 
     .... 
    </form> 
    </loc> 

</doc> 
関連する問題