可能重复:
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&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>
请注意用例
html元素:
<H2>
欢迎使用ASP!</H2>
<H2>
Bienvenue sur ASP.NET!</H2>
<H2>
ASP.NETxoşgəlmisiniz!</H2>
带有嵌入式html的文本(注意链接如何移动)
<P>
要了解有关ASP.NET的更多信息,请访问www.asp.net。</P>
<P>
Pour en savoir plus sur www.asp.net visitez ASP.NET。</P>
<P>
ASP.NETssəfərwww.asp.nethaqqındadahaətraflıməlumatüçün。</P>
带有嵌入式html的文本,带有嵌入的可本地化文本
<P>
您还可以找到<A title="Documentation on ASP.net">
文档</A></P>
<P>
Vouspouvezégalementtrouverde la <A title="Documentation sur ASP.net">
文档</A></P>
<P>
Sizhəmçinin<A title="ASP.net sənədləşdirilməsi">
sənədlrinrin</A>
tapabilərsiniz</P>
一个可以使用asp:Localize
元素翻译第一个示例中的文字:
<H2><asp:Localize>
欢迎使用ASP!</asp:Localize></H2>
<H2><asp:Localize>
Bienvenue sur ASP.NET!</asp:Localize></H2>
<H2><asp:Localize>
ASP.NETxoşgəlmisiniz!</asp:Localize></H2>
问题是这个解决方案在下一个案例中崩溃了:
<P><asp:Localize>
要了解有关ASP.NET的更多信息,请访问www.asp.net。</asp:Localize></P>
<P><asp:Localize>
Pour en savoir plus sur www.asp.net visitez ASP.NET。</asp:Localize></P>
<P><asp:Localize>
ASP.NETssəfərwww.asp.nethaqqındadahaətraflıməlumatüçün。</asp:Localize></P>
因为本地化字符串不能包含其他HTML元素。
现在它开始需要类似的东西:
<P><asp:Localize>
要了解有关ASP.NET的更多信息,请访问%s。</asp:Localize></P>
<P><asp:Localize>
请使用浏览器来浏览ASP.NET。</asp:Localize></P>
<P><asp:Localize>
ASP.NETssəfər%shaqqındadahaətraflıməlumatüçün。</asp:Localize></P>
然后包含链接的html可以嵌入%s所在的位置。但是本地化器必须本地化碎片短语:
变为
在其他语言中,伪转换为:
编辑:在ASP.net中本地化项目的批准技术是什么。
答案 0 :(得分:1)
需要考虑的另一个方案是,您需要动态地将内容注入资源字符串,即“下午好,史密斯先生,你好吗?”我建议使用单个资源键捕获这些,例如“下午好{0},你好吗?”为了避免将句子分解为多个资源键,例如“下午好”和“你好吗”,因为其他语言不遵循英语所遵循的相同语法规则。
有时将单个页面片段本地化为单独的资源字符串是没有意义的。例如,您引用的示例页面中的所有HTML都可以驻留在单独的英文文本文件中。然后,您可以根据需要创建其他语言文本文件。这些可能是文件系统上的XML文件,或者它们可能存储为数据库资源,然后您可以在运行时动态加载相应的语言部分。这有助于简化翻译过程并为每种语言提供更多灵活性。
我通常将标题,标题,单个术语,表单字段,标题,错误消息等本地化为单独的资源键,并且通常将整个静态页面/内容片段作为自己的资源片段,而不是将它们分解为小单位。
关于持久保存资源的主题,您可以使用.resx,或者自己动手(许多人使用基于文件系统的方法)或数据库驱动。如果您有兴趣将所有资源保存到数据库http://www.west-wind.com/weblog/posts/2009/Apr/02/A-Localization-Handler-to-serve-ASPNET-Resources-to-JavaScript,Rick Strahl已经共享了一个出色的数据库资源提供者。
答案 1 :(得分:0)
关于第3项(带链接),我曾写过a tiny little class to solve。