gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 04:11:21 28 4
gpt4 key购买 nike

如何向 ASP.NET 中的 http 客户端提供适合区域设置的 .resx 文件?

例如

GET /App_LocalResources/MeshModdler.resx

背景

我有一个客户端二进制文件,需要向网络服务器请求适当的语言资源(即它没有所有可能的翻译;它要求它需要的翻译)。

现在,客户端二进制文件更喜欢提供一个包含所有本地化资源(字符串等)的 xml 文件。该 XML 文件的格式与 Microsoft 的 resx 格式非常相似(人们可能会认为该格式是复制的 - 而且他们不会错)。

理想情况下,我们可以利用 ASP.NET Web 服务器的强大功能,根据 http 客户端的 Accept-Language 找到适当的 resx 文件,例如

GET /App_LocalResources/MeshModdler.resx
Accept-Language: az-Cyrl-AZ

理想情况下,网络服务器会尝试按优先顺序返回:

  • MeshModdler.az-Cyrl-AZ.resx
  • MeshModdler.az-AZ.resx
  • MeshModdler.az.resx
  • MeshModdler.resx

但是服务器返回:

HTTP/1.1 404 Not Found

奖金闲聊

我知道这是不可能的。因此,除了无法完成答案之外,我还接受一个只做我想要的答案:

  • 利用 ASP.NET Web 服务器的功能来执行资源解析和回退
  • 允许将新的本地化 resx 文件放入文件夹中并进行拾取
  • 不需要创建一个虚拟页面来构建看起来类似于 resx 文件的内容,但必须使用以下方式对每个条目进行 thunk:

    <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

并重新发明后备代码:

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)

关于asp.net - 如何在 ASP.NET 中提供 resx 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9267297/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com