Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ASP.NET中提供resx文件?_Asp.net_Localization_Resx - Fatal编程技术网

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

如何在ASP.NET中提供resx文件?,asp.net,localization,resx,Asp.net,Localization,Resx,如何向ASP.NET中的http客户机提供适合本地语言环境的.resx文件 e、 g 背景 我有一个客户端二进制文件,需要向web服务器请求适当的语言资源(即,它没有所有可能的翻译;它需要它需要的翻译) 现在,客户端二进制文件更希望得到一个包含所有本地化资源(字符串等)的xml文件。这个XML文件的格式奇怪地类似于微软的resx格式(人们可能会认为该格式是复制的,他们不会错) 理想情况下,我们可以使用ASP.NET web服务器的功能,根据http客户端的接受语言来定位适当的resx文件,例如

如何向ASP.NET中的http客户机提供适合本地语言环境的
.resx
文件

e、 g

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

现在,客户端二进制文件更希望得到一个包含所有本地化资源(字符串等)的xml文件。这个XML文件的格式奇怪地类似于微软的
resx
格式(人们可能会认为该格式是复制的,他们不会错)

理想情况下,我们可以使用ASP.NET web服务器的功能,根据http客户端的
接受语言来定位适当的resx文件,例如

GET /App_LocalResources/MeshModdler.resx
Accept-Language: az-Cyrl-AZ
理想情况下,web服务器将尝试按优先顺序返回:

  • MeshModdler.az Cyrl az.resx
  • MeshModdler.az.resx
  • MeshModdler.az.resx
  • MeshModdler.resx
但是,服务器返回:

HTTP/1.1 404 Not Found
花言巧语 我知道这是不可能的。因此,除了一个
不能做的回答
之外,我也会接受一个我想要的答案:

  • 利用ASP.NET web服务器的强大功能执行资源解析和回退
  • 允许将新的本地化
    resx
    文件放入文件夹并将其拾取
  • 不需要创建一个虚拟页面来构建类似于
    resx
    文件的内容,但必须使用以下命令来关闭每个条目:

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

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

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

    如何获取响应的内容?@IanBoyd:
    response.TransmitFile(Server.MapPath(“~/App\u LocalResources/”+Name))
    这工作正常,并被接受。但是任何使用它的人都应该知道一个微妙的错误,即响应的编码与内容的编码不匹配。e、 g.
    MeshModdler-de-de.resx
    是用代码页
    850
    编码的(因为它们是德国的),那么地毯就与窗帘不匹配了。
    <root> 
       <data name="TesselateMesh.Caption">
           <value><%$ Resources:MeshModdler, TesselateMesh.Caption1 %></value>
       </data>
       ...
    </root>
    
    GET /MeshModdler.az-Cyrl-AZ.xml
    404 Not found
    
    GET /MeshModdler.az-AZ.xml
    404 Not found
    
    GET /MeshModdler.az.xml
    200 Ok