2016-12-11 3 views
4

私はRESXファイルを使用したくないのはなぜローカライズの代替

私は、以下の理由により、私のプロジェクトのための多言語サポートを提供するRESXファイルのための代替を探しています:

  • メッセージを書くときに「messageId」を指定するのは好きではありません。それはもっと努力していますし、ログメッセージが実際に何を伝えているのかわからないので、タブをクリックしてメッセージを編集する
  • 私はドンが原因でインラインでコードを使用することがあります簡単なステップのための新しい変数を作成したくない。 g。 Log.Info("Iterated {i+1} times");)。私が代わりに想像できる何

    を変数を使用したり、簡単な計算をインラインで行うことは、時には、より明確に、追加のコード行を作成するよりも、全体のコードを作る

すべての文字列のコンパイル済みのexeファイルをクロールし、外部アプリケーションは、与え翻訳すべき文字列を無視/追加する機会を与えます。それはまた、すべての言語のXMLまたはJsonファイルを作成することができます。すべての文字列をハッシュ/ idに置き換えて、すべての言語の文字列を参照できるようにします。

一般的に使用されるResx /集中型文字列データベースソリューションに満足していないのは私だけですか?なぜこれが良い考えではないのか分からないのですか?

+0

ここでgettextについて説明します。そして、[C#のサポートもあるようです](https://www.gnu.org/software/gettext/manual/html_node/C_0023.html)。リソースアプローチは、文字列だけでなく、より多くのことにも役立ちます。 – Joey

+0

ちょうどあなたのプロジェクト内のコードを編集する必要があり、私が提案しているものはプロジェクトコードに変更を必要としません – kentor

+1

魔法はありません。 Microsoftの組み込み手法を使用したくない場合は、別のコードを使用するようにコードを編集する必要があります。 –

答えて

2

独自のフォーマットを実装するのではなく、確立されたアプローチに頼っている理由の1つが翻訳です。あなたのリソースがどのように翻訳されているかによりますが、プレーンテキストエディターで作業する気にはなれない技術的背景を持つボランティアによって行われた場合は、自由に独自のリソースフォーマットを考え出すことができます。一方で、技術的ではなく、統合された用語管理、翻訳メモリ、スペルチェック、品質チェックなどを含む翻訳環境で作業することを好むプロフェッショナルな翻訳者にあなたのリソースを送信すると、この環境は手作りのリソースフォーマットを処理できるようにしてください。

プロフェッショナルな翻訳環境についてはすでに言及しています。これらのツールの中にはIDに依存して、古い文字列と新しい文字列を特定するものがあります。テキストがIDであるというアプローチを使用する場合、ソース言語のすべての固定タイポが意味するのは、翻訳が必要な新しい文字列を作成することです。翻訳者が文字列のソーステキストが変更されたことが判明した場合、変更を見て、入力ミスが修正されていることに気づき、翻訳がまだOKであることを確認して、余分な翻訳コストをかけずに文字列に署名します。

ちなみに、Log.Info("Iterated {i+1} times");のような文字列のローカライゼーションを適切に行うには、複数のフォームを正しく処理する方法を見つける必要があります。言語によっては、異なる数字について異なる文法規則があります(概要はUnicode Language Plural Rulesを参照)。コードで行うことが簡単なことが、ローカライズが容易であるということを意味するわけではありません。恐れがあります。

あなた自身のリソースフォーマットを作成する場合は、翻訳者に相談してください。どのフォーマットで処理できるかを質問します。たとえば、翻訳者が文字列を壊すために使用してはならない文字がある場合など、フォーマットに伴う翻訳に関連する制限について考えてみてください。アポストロフィと引用符は、リソースファイルで文字列区切り文字としてよく使われるため、ここでは一番の候補です.DXX形式にすることにした場合は、<と&です。 XLIFFへの変換について考えると、ほとんどの翻訳環境でXLIFFを処理できます。