Ian*_*oyd 4 asp.net localization resx
如何将适用于语言环境的.resx文件提供给ASP.NET中的http客户端?
例如
GET /App_LocalResources/MeshModdler.resx
Run Code Online (Sandbox Code Playgroud)
我有一个客户端二进制文件,需要向Web服务器询问相应的语言资源(即它没有所有可能的翻译;它要求它需要的那个).
现在,客户端二进制文件更喜欢给出一个包含所有本地化资源(字符串等)的xml文件.这个XML文件的格式看起来很奇怪,就像微软的resx格式一样(人们可能认为格式被复制了 - 而且它们不会出错).
理想情况下,我们可以使用ASP.NET Web服务器的强大功能来定位基于http客户端的相应resx文件Accept-Language,例如
GET /App_LocalResources/MeshModdler.resx
Accept-Language: az-Cyrl-AZ
Run Code Online (Sandbox Code Playgroud)
理想情况下,Web服务器会尝试按优先顺序返回:
MeshModdler.az-Cyrl-AZ.resxMeshModdler.az-AZ.resxMeshModdler.az.resxMeshModdler.resx但相反,服务器返回:
HTTP/1.1 404 Not Found
Run Code Online (Sandbox Code Playgroud)
我知道这是不可能的.所以除了cannot be done答案之外,我还会接受一个只做我想要的答案:
resx文件放入文件夹并将其拾取不需要求助于创建一个构建看起来像resx文件的虚拟页面,但必须使用以下内容来破坏每个条目:
<root>
<data name="TesselateMesh.Caption">
<value><%$ Resources:MeshModdler, TesselateMesh.Caption1 %></value>
</data>
...
</root>
Run Code Online (Sandbox Code Playgroud)现在的黑客将是将resx文件重命名为xml:
MeshModdler.az-Cyrl-AZ.xmlMeshModdler.az-AZ.xmlMeshModdler.az.xmlMeshModdler.xml并重新发明了后备代码:
GET /MeshModdler.az-Cyrl-AZ.xml
404 Not found
GET /MeshModdler.az-AZ.xml
404 Not found
GET /MeshModdler.az.xml
200 Ok
Run Code Online (Sandbox Code Playgroud)
但是使用 ASP.NET 会很好,而不是反对它.
您可以创建一个ASHX文件,该文件接受资源名称文件并.ResX在服务器上查找正确的文件.(将当前的回退逻辑移动到/GetResource.ashx?Name=MeshModeler)
| 归档时间: |
|
| 查看次数: |
866 次 |
| 最近记录: |