2

我有一个内置在 asp.net 中的 Web 应用程序,它使用资源文件来支持多种语言。我遇到的问题是我只能在 Visual Studio 中添加一个新的语言文件,并且我必须重新构建整个应用程序才能包含一种新的语言。在网上搜索后发现资源文件的编译可以在.net编译器中完成。我使用了以下命令:

resgen.exe /编译 langfile.en.resx

al.exe /out:en\App_GlobalResources.resources.dll /culture:en /embedresource:langfile .en.resources

该文件被复制到网站的文件夹中,但它不起作用。我的意思是,当我从网页中选择新语言时,字符串会从默认资源文件中加载。如果我在 VS 中创建资源文件,它可以正常工作。我检查了两个dll文件的大小,一个是VS生成的,一个是我自己编译的,大小一样,但是编译出来的不行。我只能认为也许我必须在上面的命令中使用一些其他参数,但我真的不知道。

非常感谢任何帮助。

4

1 回答 1

3

您可以通过编写自己的表达式构建器而不是使用内置资源版本来实现您想要的,并从数据库或 XML 文件中提取信息。基本上,您编写自己的类继承自 System.Web.Compilation.ExpressionBuilder,然后在 Web.config 中注册它,如下所示:

<compilation>
  <expressionBuilders>
    <add expressionPrefix="CustomResources" type="CustomResourcesExpressionBuilder"/>
  </expressionBuilders>
</compilation>

然后你可以像普通资源一样引用它:

<%$ CustomResources:Section, Key %>

您可以在此处此处找到一些关于此的文章。

于 2009-03-25T10:26:39.430 回答