【问题标题】:Techniques for localizing in ASP.NET? [duplicate]在 ASP.NET 中进行本地化的技术? [复制]
【发布时间】:2011-09-21 19:26:19
【问题描述】:

可能重复:
What do I need to know to globalize an asp.net application?

默认的 Visual Studio 示例网站包含:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" 
       AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <h2>Welcome to ASP.NET!</h2>
    <p>To learn more about ASP.NET visit <a href="http://www.asp.net" title="ASP.NET
          Website">www.asp.net</a>.
    </p>
    <p>
        You can also find <a href="http://go.microsoft.com/fwlink/?LinkID=152368&amp;clcid=0x409"
            title="MSDN ASP.NET Docs">documentation on ASP.NET at MSDN</a>.
    </p>
</asp:Content>

这是对网站本地化所需技术的一次很好的尝试。您将如何本地化这些:

  1. &lt;h2&gt;Welcome to ASP.NET!&lt;/h2&gt;

  2. <p>To learn more about ASP.NET visit <a href="http://www.asp.net" title="ASP.NET Website">www.asp.net</a>.</p>

  3. <p>You can also find <a href="http://go.microsoft.com/fwlink/?LinkID=152368&amp;clcid=0x409" title="MSDN ASP.NET Docs">documentation on ASP.NET at MSDN</a>.</p>

注意用例

  • html 元素:

    &lt;H2&gt;Welcome to ASP!&lt;/H2&gt;
    &lt;H2&gt;Bienvenue sur ASP.NET!&lt;/H2&gt;
    &lt;H2&gt;ASP.NET xoş gəlmisiniz!&lt;/H2&gt;

  • 嵌入 html 的文本(注意链接的移动方式)

    &lt;P&gt;要了解有关 ASP.NET 的更多信息,请访问 www.asp.net.&lt;/P&gt;
    &lt;P&gt;Pour en savoir plus sur www.asp.net visitez ASP.NET.&lt;/P&gt;
    &lt;P&gt;ASP .NET səfər www.asp.net haqqında daha ətraflı məlumat üçün.&lt;/P&gt;

  • 嵌入 html 的文本,嵌入可本地化的文本

    &lt;P&gt;You can also find &lt;A title="Documentation on ASP.net"&gt;documentation&lt;/A&gt;&lt;/P&gt;
    &lt;P&gt;Vous pouvez également trouver de la &lt;A title="Documentation sur ASP.net"&gt;documentation&lt;/A&gt;&lt;/P&gt;
    &lt;P&gt;Siz həmçinin &lt;A title="ASP.net sənədləşdirilməsi"&gt;sənədlərin@987654354 @tapa bilərsiniz&lt;/P&gt;

另见


可以使用asp:Localize 元素来翻译第一个示例中的文本:

&lt;H2&gt;&lt;asp:Localize&gt;Welcome to ASP!&lt;/asp:Localize&gt;&lt;/H2&gt;
&lt;H2&gt;&lt;asp:Localize&gt;Bienvenue sur ASP.NET!&lt;/asp:Localize&gt;&lt;/H2&gt;
&lt;H2&gt;&lt;asp:Localize&gt;ASP.NET xoş gəlmisiniz!&lt;/asp:Localize&gt;&lt;/H2&gt;

问题是这个解决方案在下一个案例中崩溃了:

&lt;P&gt;&lt;asp:Localize&gt;要了解有关 ASP.NET 的更多信息,请访问 www.asp.net.&lt;/asp:Localize&gt;&lt;/P&gt;
&lt;P&gt;&lt;asp:Localize&gt;Pour en savoir plus sur www.asp.netvisitez ASP.NET.&lt;/asp:Localize&gt;&lt;/P&gt;
&lt;P&gt;&lt;asp:Localize&gt;ASP .NET səfər www.asp.net haqqında daha ətraflı məlumat üçün.&lt;/asp:Localize&gt;&lt;/P&gt;

因为本地化字符串不能包含其他 HTML 元素。

现在它开始需要类似的东西:

&lt;P&gt;&lt;asp:Localize&gt;要了解有关 ASP.NET 的更多信息,请访问 %s.&lt;/asp:Localize&gt;&lt;/P&gt;
&lt;P&gt;&lt;asp:Localize&gt;Pour en savoir plus sur %s visitez ASP.NET.&lt;/asp:Localize&gt;&lt;/P&gt;
&lt;P&gt;&lt;asp:Localize&gt;ASP.NET səfər %s haqqında daha ətraflı məlumat üçün.&lt;/asp:Localize&gt;&lt;/P&gt;

然后可以将包含链接的 html 嵌入到 %s 所在的位置。但随后本地化器必须本地化碎片化的短语:

  • 要了解有关 ASP.NET 的更多信息,请访问 www.asp.net。

变成

  • 要了解有关 ASP.NET 的更多信息,请访问 %s。

在其他语言中它伪翻译为:

  • 要了解有关 %s 的更多信息,请访问 ASP.net
  • ASP.net 访问 %s 以了解更多信息

编辑:在 ASP.net 中本地化项目的认可技术是什么。

【问题讨论】:

  • 这不是问题。这是问答网站,所有问题都应该是……嗯,问题。你的内容不是。它可能作为社区 wiki 有用,但它没有被标记为这样。

标签: asp.net localization globalization


【解决方案1】:
  • HTML 元素,我通常只将文本放置在 resx 文件中的 HTML 元素中,而不是整个 HTML 结构。我发现它使本地化内容更易于重复使用
  • 带有嵌入 HTML 的文本 - 在您的示例中,我会将除

    标记之外的所有内容都放在我的 resx 文件中 - 所以我会将超链接保留在 resx 文件中

  • 嵌入 HTML 的文本 - 这个场景看起来和第二个一样,我会使用相同的方法

另一个需要考虑的场景是当您需要将内容动态注入到资源字符串中时,即“下午好,史密斯先生,你好吗?”我建议使用单个资源键来捕获这些内容,例如“下午好 {0},你好吗?”为了避免将句子分解成多个资源键,例如“下午好”和“你好吗”,因为其他语言不遵循英语所遵循的相同语法规则。

有时将单个页面片段本地化为单独的资源字符串是没有意义的。例如,您引用的示例页面中的所有 HTML 都可以驻留在单独的英文文本文件中。然后您可以根据需要创建其他语言文本文件。这些可能是文件系统上的 XML 文件,或者它们可能存储为数据库资源,然后在运行时动态加载适当的语言部分。这有助于简化翻译过程并为每种语言提供更大的灵活性。

我通常将标题、标题、单个术语、表单字段、标题、错误消息等本地化为单独的资源键,并且经常将整个静态页面/内容 sn-ps 作为它们自己的资源片段,而不是破坏它们分成小单位。

关于将资源保存在何处的主题,您可以使用 .resx,或自行滚动(许多人使用基于文件系统的方法),或数据库驱动。如果您有兴趣将所有资源持久化到数据库中,Rick Strahl 分享了一个出色的数据库资源提供程序http://www.west-wind.com/weblog/posts/2009/Apr/02/A-Localization-Handler-to-serve-ASPNET-Resources-to-JavaScript

【讨论】:

  • 另外,您可以使用 <asp:Localize 并使用 '' 绑定构造绑定到特定的 resx 资源。在这种情况下,您不必在 <asp:Localize 开始和结束标记之间指定任何内容。
【解决方案2】:

关于第三条(带链接),我曾经写过a tiny little class to solve

【讨论】:

    猜你喜欢
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 2011-05-30
    • 2013-10-07
    • 2013-03-15
    • 1970-01-01
    相关资源
    最近更新 更多