在我的应用程序中,我的段落包含混合静态文本和HTML格式和链接。我正在寻找一个良好的本地化解决方案,以保持资源与标记分离。假设我们有以下段落:
<p>Let's have a <a href="someURL">cup of coffee</a> and get <b>energized</b>.</p>
使用标准的resx解决方案迫使我在resx字符串中嵌入HTML标记和链接目标。这很糟糕,因为它将标记/ CSS / app结构与资源结合在一起。
下一个最好的方法是拆分段落,使本地化内容永远不会包含标记。在上面的例子中,我将有4个para片段: 1)“让我们有一个”作为纯文本 2)“一杯咖啡”作为链接 3)“并获得”作为纯文本 4)“通电”为粗体文字
这个解决方案的问题在于,碎片会使资源的维护成为一场彻头彻尾的噩梦,而且它会强制段落片段的某个顺序,这可能不符合所有文化的语法。例如,在翻译的语言中,正确的翻译可能是
<p>Let's get <b>energized</b> with a <a href="someURL">cup of coffee</a>.</p>
我认为我不能完全没有将标记嵌入资源中,这可能不是什么大不了的事。使用适当的标记/ CSS(span,div,id,class),我可以创建可以减少耦合影响的抽象。
虽然我如何处理链接网址?谢谢,
的Stefan
答案 0 :(得分:4)
不要将HTML视为“格式化”,而是将其视为结构,并将其全部保存到资源数据存储(例如resx,数据库或xml文件等)。然后你可以不再担心段落中的一些文本了。相反,您将对每个区域设置引用一个名为“paragraph_energized_with_coffee”的资源,而您用于编辑资源的任何软件都将决定编辑器在构建每个资源中的html时具有的灵活性。
答案 1 :(得分:1)
这样做:
<%= String.Format("Resources.MyResource.mydata","someURL") %>
并将其用作资源字符串:
<p>Let's have a <a href="{0}">cup of coffee</a> and get <b>energized</b>.</p>
答案 2 :(得分:1)
我遇到了同样的问题。如果我正确地阅读了您的问题,这就是我能够解决的问题:
在我的资源中,我添加了以下文字:
<p>Let's get <b>energized</b> with a <a href="{0}">cup of coffee</a>.</p>
在我的ASP.NET视图中(使用Razor视图),我添加了以下内容:
@Html.Raw(String.Format(ShopSavvy.Retailers.Web.Resources.Home.Index.perksReachShoppersBody1, "someURL"))
这样做给了我正确的效果所需的所有特定于字的格式。
答案 3 :(得分:0)
我在Rahuls方面 - 我会考虑内容的html / css ...只是......内容。
主要原因是,当您想要对网站进行批量内容更新时,您只需将粘贴从提供的html / css复制到resx文件中。从html / css到asp.net进行原始模板制作也要快得多。
还有一些折射工具在选择内容时可以“导出到resx文件”选项,这可能会加快速度。
谢谢!
答案 4 :(得分:0)
我在谷歌搜索完全相同的问题。这是故意的,因为如果您将资源文件发送给翻译人员,他/她可能不会理解HTML并且可能会损坏您的代码。我也不喜欢这样。
答案 5 :(得分:-1)
默认的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&clcid=0x409"
title="MSDN ASP.NET Docs">documentation on ASP.NET at MSDN</a>.
</p>
</asp:Content>
您如何本地化这些:
<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&clcid=0x409"
title="MSDN ASP.NET Docs">documentation on ASP.NET at MSDN</a>.</p>