我正在尝试建模一个新网站(目前只在纸上),我开始思考什么是最好的方法。该网站需要多语言(至少两种语言)。自从我最近开始测试Redis以来,我想也许我可以在Redis中存储语言库而不是.resx文件。
我知道这是可行的,但值得吗?是否有可能提高性能,或者.resx文件中的字符串是否已经缓存且性能“足够”?我缺乏如何处理.resx文件的经验,因此您的所有输入都是有帮助的!
答案 0 :(得分:0)
我最近在多语言网站上工作过。 我用了一个Json字符串。 我在每个语言中存储一个字符串。
{ “HeaderWordWideShipping”:“Word Wide Shipping / 30天Full Return”, “HeaderCurrency”:“货币”, “ComboSelectAll”:“全选...” }
On Page_Init我从数据库中选择正确的字符串,然后将值分配给公共属性。这里有一些示例代码(我使用Newtonsoft.Json.dll来读取Json):
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");
然后您可以在页面中使用公共财产。 为了更安全,我添加了一个coalesce运算符,用默认语言文本替换null:
<h3><%: PagetxtHeaderWordWideShipping ?? "Word Wide Shipping / 30 days Full Return"%></h3>