私はサーバーに接続しているアプリケーションを持っています。私のアプリケーションは多言語でなければならないので、私は自分のサーバーに言語ファイルを持っています。私は自分の言葉の言語を彼らが選んだ言語に変える必要があります。言語設定に応じてアプリケーションの単語を変更する
これを行うにはどのような方法が最適ですか? 隔離されたストレージを使用する必要がありますか?
私はサーバーに接続しているアプリケーションを持っています。私のアプリケーションは多言語でなければならないので、私は自分のサーバーに言語ファイルを持っています。私は自分の言葉の言語を彼らが選んだ言語に変える必要があります。言語設定に応じてアプリケーションの単語を変更する
これを行うにはどのような方法が最適ですか? 隔離されたストレージを使用する必要がありますか?
あなたのアプリで使用する既知のキーのセットとその値を設定します。
その後、念のためにすべてのキー、およびバックアップのテキストを作成し、その後Dictionary<string,string>
を作成します。
/キーを使ってなど、サーバーのリターンXML、JSONを持って、次にフォームで、その後Sharp Serializer
ようBinarySerializerを使用して
strings.default
をserialize
Dictionary
を一枚で全体の辞書をシリアル化値、および言語。
<strings language="en-us">
<string name="start">start</string>
</strings>
別の辞書内のディスクにこれをシリアライズ:アプリ起動時に続いて、ディスクからファイルをつかむ、言語を決定
strings.en-us
、あなたは文字列を使用する必要があるとき、それらをキー辞書に一度に辞書全体を保存すると、何度も何度もディスクにアクセスするパフォーマンスが妨げられます。
//文字列用のインターフェイスを作成します。これにより、サーバー/実装に依存しないDesignTimeバージョンを作成することができます。
public interface IStringDictionary
{
string Start { get; }
//the rest of your strings
}
//辞書の実装を作成します。
public class StringDictionary : IStringDictionary
{
private Dictionary<string, string> _dictionary;
public StringDictionary(string languageName = "default")
{
DictionaryLanguage = languageName;
}
public string Start
{
get { return _dictionary["start"]; }
//your predefined key here, (should probably fallback/return null, or something)
}
private string _dictionaryLanguage;
public string DictionaryLanguage
{
get { return _dictionaryLanguage; }
set
{
if (_dictionaryLanguage == value) return;
_dictionaryLanguage = value;
_dictionary = LoadFromDisk("strings." + value); //create this method
}
}
}
//モックバージョン
public class MockStringDictionary : IStringDictionary
{
public string Start { get { return "start"; } }
}
を作成し、あなたのresponeいただきありがとうございます。これは私を非常に助けました。 – Kenny