你能用.RESX文件本地化.HTML文件吗?

时间:2014-01-15 18:15:53

标签: asp.net .net localization internationalization resx

背景

我有一个ASP.NET Web窗体应用程序,我想使用.RESX文件进行本地化。我已经知道如何使用.ASPX文件。但是,我的应用程序使用一些.ASPX文件...... 以及一些普通的.HTML文件。

(我正在做很多KnockoutJs,应用程序检索可重复使用的HTML模板,并根据需要将它们注入DOM。)

我不能在HTML文件中采用以下方法,因为<%$代码不会被执行。

<%$ Resources:Main, WelcomeMessage %>

问题

是否可以使用C#代码处理针对RESX文件的纯HTML文件以生成已本地化的HTML文件?

(我需要一个解决方案,不使用.ASPX文件)

如果可以,那么我可以创建一个Web服务,将RESX文件应用于HTML文件并返回生成的HTML字符串。

1 个答案:

答案 0 :(得分:1)

<强>答案

我认为答案是......

使用ASP.NET Web窗体似乎没有一种简单的方法。所以我把我的项目改为使用ASP.NET MVC ....这个问题更容易解决。

如果你有兴趣......这就是我在MVC中所做的:

我将HTML文件更改为.cshtml文件(支持与.RESX文件一起使用的语法)。我创建了一个控制器,我用一个GetHtml动作调用HtmlController。 GetHtml方法将URL作为参数,并呈现所请求的.cshtml文件的内容,该文件作为PartialView返回。

现在,在我的页面加载之后,我可以通过在HtmlController上调用GetHtml操作来触发Ajax请求以检索一些共享的HTML模板。我请求的.cshtml文件的HTML内容针对我的.RESX文件进行了本地化,然后作为Ajax调用的结果返回。然后我可以将它绑定在页面上。

这对我在各个页面中重复使用的共享HTML模板特别有效,但我仍然需要将它们本地化为当前选定的文化。

回想起来

我仍然觉得转向MVC是正确的决定。

然而.....我想在切换到MVC之后....在每个需要访问它们的页面上直接渲染部分视图(对于每个共享模板)可能更简单。

然后我可以避免单独的Ajax调用在页面加载时拉下这些东西。

[捂脸]