私は最近、多言語のWebサイトで作業しています。 私はJson文字列を使用しました。 私は言語ごとに1つの文字列をデータベースに保存しています。
{ "HeaderWordWideShipping": "Wordのワイド送料/ 30日完全復帰"、 "HeaderCurrency": "通貨"、 "ComboSelectAll": "すべてを選択..." } Page_Initで
データベースから適切な文字列を選択し、値をパブリックプロパティに割り当てます。ここではいくつかのサンプルコード(私はJSONを読み取るためにNewtonsoft.Json.dllを使用):
public string PagetxtHeaderWordWideShipping { get; set; }
public string PagetxtHeaderCurrency { get; set; }
public string ComboSelectAll { get; set; }
string pageTextsMaster = my json string reteived from db
pageTextsMaster = pageTextsMaster ?? @"{"""":""""}"; //if pageTextsMaster isNull then I set an empty Json string.
JObject o = JObject.Parse(pageTextsMaster);
PagetxtHeaderWordWideShipping = (string)o.SelectToken("HeaderWordWideShipping", false); //Setting false will not throw an exception if the required value is not found
PagetxtHeaderCurrency = (string)o.SelectToken("HeaderCurrency"); //false is default so I do not have to repeat it.
ComboSelectAll = (string)o.SelectToken("ComboSelectAll");
、あなたがあなたのページに公共propertisを使用することができます。 は、私はデフォルトの言語のテキストにヌルを置き換えるために合体演算子を追加し、余分な安全のために:私は、同じ質問について疑問に思って
<h3><%: PagetxtHeaderWordWideShipping ?? "Word Wide Shipping/30 days Full Return"%></h3>
。あなたは答えを見つけましたか?どのような解決策を選んだのですか? –
私は私のプロジェクトにとって最も簡単なルートをとっています。私はすべての言語と言語文字列を通常のSQLデータベースに格納します。私の言語サービスから特定の文字列を要求すると、そのサービスは言語文字列のredis(私のapp-cache)に質問し、見つからなければ、sqlの文字列を取り出してキャッシュにプッシュします - データベースオブジェクトが要求されました)。 – mbaaz
リリース時に翻訳をどのように更新しますか?新しい文字列を追加するためにクエリを実行しますか?あるいは、翻訳用に別のデータベースを使用し、それを開発者用と本番用の両方で使用しますか?または、より良い解決策を見つけましたか? –