我一直在阅读如何使用本地或全局resx文件翻译网站。虽然这对于按钮和一小段文本来说非常有用,但是当我面对大块文本的翻译时,我必须在resx文件中存储长字符串并将文本用小键分隔让我无法重新阅读我刚刚写的内容。
例如:
0
或者:
<p> <%$ Resources:MyResources, Welcome %> <%$ Resources:MyResources, to %> <%$ Resources:MyResources, my %> <%$ Resources:MyResources, wonderful %> <%$ Resources:MyResources, Website %> , <%$ Resources:MyResources, Where %> <%$ Resources:MyResources, you %> <%$ Resources:MyResources, can %> <%$ Resources:MyResources, Find %> <%$ Resources:MyResources, amazing %> <%$ Resources:MyResources, information %> <%$ Resources:MyResources, about %> <%$ Resources:MyResources, this %><%$ Resources:MyResources, and %><%$ Resources:MyResources, that %> <p>
有没有更好的方法来处理多语言支持? 谢谢,
(忘了添加我正在使用VS2013,这是用于带有aspx和ascx的C#WebForms站点)
答案 0 :(得分:1)
您可以直接从Resources
呈现,不要使用<%$
语法。您可以使用<%=
(或自动编码<%:
版本):
在你的情况下,我的项目中会有一个Resources.resx
文件,并带有一个短按键的欢迎Blurb条目:
Key: WelcomeMessage
Value (in `Resources.resx`): "Welcome to my website where..."
Value (in `Resources.de-DE.resx`): "Willkommen auf meiner Website..."
使用.aspx
<%:
个文件中
<p><%: Resources.WelcomeMessage %>
如果您想渲染原始HTML,请使用<%=
:
<p><%= Resources.WelcomeMessage %>
Razor语法:
<p>@Resources.WelcomeMessage</p>
或者为了便于阅读:
<p>@( Resources.WelcomeMessage )</p>
Resources
是一个static class
,它存在并根据您当前的Thread culture值自动检索正确的资源值(因此请确保您拥有正确更改Thread文化的代码),并返回您的回退值如果翻译不适用。
您可以通过将鼠标悬停在每个属性值上来查看Visual Studio中的原始值,因为Resx设计器生成的XML注释包含资源字符串中的前100个字符。