加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

如何在ASP.NET中提供resx文件?

发布时间:2020-12-16 06:24:08 所属栏目:asp.Net 来源:网络整理
导读:如何将适用于.alex文件的语言环境提供给ASP.NET中的http客户端? 例如 GET /App_LocalResources/MeshModdler.resx 背景 我有一个客户端二进制文件,需要向Web服务器询问相应的语言资源(即它没有所有可能的翻译;它要求它需要的那个). 现在,客户端二进制文件更
如何将适用于.alex文件的语言环境提供给ASP.NET中的http客户端?

例如

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

奖金Chatter

我知道这是不可能的.所以除了一个无法做到答案之外,我还会接受一个只做我想要的答案:

>利用ASP.NET Web服务器的强大功能来执行资源解析和回退
>允许将新的本地化resx文件放入文件夹中并将其拾取
>不需要求助于创建一个构建看起来像resx文件的虚拟页面,但必须使用以下内容来破坏每个条目:

<root> 
   <data name="TesselateMesh.Caption">
       <value><%$Resources:MeshModdler,TesselateMesh.Caption1 %></value>
   </data>
   ...
</root>

额外的Chatter

现在的hack将resx文件重命名为xml:

> MeshModdler.az-Cyrl-AZ.xml
> MeshModdler.az-AZ.xml
> MeshModdler.az.xml
> MeshModdler.xml

并重新发明了后备代码:

GET /MeshModdler.az-Cyrl-AZ.xml
404 Not found

GET /MeshModdler.az-AZ.xml
404 Not found

GET /MeshModdler.az.xml
200 Ok

但是使用ASP.NET会很好,而不是反对它.

解决方法

您可以创建一个ASHX文件,该文件接受资源名称文件并在服务器上查找正确的.ResX文件. (将当前的回退逻辑移动到/GetResource.ashx?Name=MeshModeler)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读