如何将适用于.resx
文件的区域设置提供给ASP.NET中的http客户端?
e.g。
GET /App_LocalResources/MeshModdler.resx
我有一个客户端二进制文件,需要向Web服务器询问相应的语言资源(即它没有所有可能的翻译;它要求提供所需的翻译。)
现在客户端二进制文件更喜欢给出包含所有本地化资源(字符串等)的 xml 文件。这个XML文件的格式看起来很奇怪,就像微软的resx
格式一样(人们可能认为格式被复制了 - 而且它们不会出错)。
理想情况下,我们可以使用ASP.NET Web服务器的强大功能,根据http客户端的Accept-Language
找到合适的resx文件,例如
GET /App_LocalResources/MeshModdler.resx
Accept-Language: az-Cyrl-AZ
理想情况下,Web服务器会尝试按优先顺序返回:
MeshModdler.az-Cyrl-AZ.resx
MeshModdler.az-AZ.resx
MeshModdler.az.resx
MeshModdler.resx
但服务器返回:
HTTP/1.1 404 Not Found
我知道这是不可能的。所以除了cannot be done
答案之外,我还会接受一个只做我想要的答案:
resx
文件放入文件夹并将其取出不需要求助于创建一个虚拟页面来构建像<{1}}文件一样的外观,但必须使用以下内容来填充每个条目:
resx
现在的黑客将<root>
<data name="TesselateMesh.Caption">
<value><%$ Resources:MeshModdler, TesselateMesh.Caption1 %></value>
</data>
...
</root>
文件重命名为resx
:
xml
MeshModdler.az-Cyrl-AZ.xml
MeshModdler.az-AZ.xml
MeshModdler.az.xml
重新发明后备代码:
MeshModdler.xml
但是使用 ASP.NET而不是反对它会很好。
答案 0 :(得分:5)
您可以创建一个ASHX文件,该文件接受资源名称文件并在服务器上查找正确的.ResX
文件。 (将当前的后备逻辑移至/GetResource.ashx?Name=MeshModeler
)