【问题标题】:Is there a way to translate web sites other than resx files?除了 resx 文件,还有其他方法可以翻译网站吗?
【发布时间】:2017-04-17 01:15:25
【问题描述】:

我一直在阅读如何使用本地或全局 resx 文件翻译网站。虽然这通常适用于按钮和小块文本,但当我面临大块文本的翻译时,我不得不在 resx 文件中存储长字符串并在小键中间隔文本似乎有点奇怪让我无法重新阅读我刚刚写的内容。

例如:

<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>

或者:

<%$ Resources:MyResources, WelcomeToMyWonderfulWebsiteWhereYouCanFindAmazingInformationAboutThisAndThat %>

有没有更好的方法来处理多语言支持? 谢谢,

(忘了补充一下,我使用的是 VS2013,这是一个带有 aspx 和 ascx 的 C# WebForms 站点)

【问题讨论】:

  • 检查这个项目https://github.com/turquoiseowl/i18n。有了它,您可以制作更具可读性的模板。
  • 感谢@VitaliySmolyakov!我一直在研究这个项目,并且可以肯定的是,最好使用 [[[Welcome to My Wonderful Website,在那里您可以找到关于这个和那个的惊人信息]]] 而不是 WelcomeToMyWonderfulWebsiteWhereYouCanFindAmazingInformationAboutThisAndThat 作为键。你有使用它的经验吗?乍一看,设置起来很复杂!
  • 只需安装,添加配置方法,翻译一些页面进行测试,它正在运行:)。如果您的路径中有 2 或 3 个字符部分,例如 zzz.com/api/call,则可能没有明显的问题。 Url localizer 认为 API 是未知语言标签并将其从 url 中删除。请求来自 zzz.com/call。在上一个版本中 /api/ 被添加到过滤器以排除处理。

标签: asp.net webforms multilingual


【解决方案1】:

你可以直接从Resources 渲染,你不要使用&lt;%$ 语法。您可以使用&lt;%=(或自动编码的&lt;%: 版本):

在您的情况下,我的项目中有一个 Resources.resx 文件,其中包含一个带有短键的 Welcome Blurb 条目:

Key: WelcomeMessage
Value (in `Resources.resx`): "Welcome to my website where..."
Value (in `Resources.de-DE.resx`): "Willkommen auf meiner Website..."

在我的.aspx 文件中使用&lt;%:

<p><%: Resources.WelcomeMessage %>

如果您想呈现原始 HTML,请使用 &lt;%=

<p><%= Resources.WelcomeMessage %>

剃刀语法:

<p>@Resources.WelcomeMessage</p>

或者为了可读性:

<p>@( Resources.WelcomeMessage )</p>

Resources 是一个static class,它存在并根据您当前的线程文化值自动检索正确的资源值(因此请确保您有正确更改线程文化的代码),如果翻译没有返回您的后备值'不申请。

您可以通过将鼠标悬停在每个属性值上来查看 Visual Studio 中的原始值,因为 Resx 设计器生成的 XML cmets 包含资源字符串中的前 100 个左右字符。

【讨论】:

  • 感谢您的回复。但是 :( 使用
  • 使用 Razor 语法,我只看到 @Resources.WelcomeMessage 而不是它的值
  • @malarres Razor 语法仅适用于 .cshtml 文件。
  • @malarres 要么导入YourProject.Resources 命名空间(其中包含YourProject.Resources.Resources 类),要么将Resources 类命名空间更改为在您的项目根命名空间中(stackoverflow.com/questions/1333356/…
猜你喜欢
  • 1970-01-01
  • 2015-06-26
  • 2020-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多