2017-10-09 73 views
0

我有一个翻译大型WebForms应用程序(约300 aspx页面)的任务。我将在翻译ASP.NET应用程序时使用传统方法(使用资源文件),并且我将使用ZetaResource使我的生活变得轻松。 但是,我有一个小问题: 我可以用aspx代码中存在的自由文本做什么?以此代码为例,如何将文本转换为这是数据库中可用的记录列表,转换为ASP:标签服务器控件以便使用嵌入式转换机制?ASP.NET翻译和本地化WebForms应用程序

<form id="form1" runat="server"> 
<div> 
    <br /> 
    This is a List of records available in the Database<br />  
    <br /> 
    <asp:Button ID="cmdButton" runat="server" Text="Button" meta:resourcekey="cmdButtonResource1" /> 
</div> 
</form> 

回答

0

试想一下,你有你想要的是String1中命名YourResource资源文件和项目,你可以自由文本做到这一点:

<%= (YourResource.String1) %> 
+0

感谢您的回复,我实际上正在寻找一种将aspx文件中的自由文本转换为服务器控件的方法。我明白你在说什么,但是有很多文件(大约3-400个aspx文件),我想尽可能自动完成任务!手动做他们将是一场噩梦! – Enovator

+0

@Enovator我明白了。您需要在每个文档中查找自由文本,然后将自由文本添加到资源文件中,并使用资源键替换自由文本,如我在答案中所示。您可以使用[HtmlAgilityPack](https://www.nuget.org/packages/HtmlAgilityPack/)进行解析。这并不容易,但也并不复杂。确保在执行此操作之前备份所有内容,以便在出现问题时恢复。 – CodingYoshi

0

您有本地化两种选择:明确的和隐含的。

对于明确的定位,你干脆把文成资源文件和网页上显示它有如下代码:

<asp:Localize ID="Localize1" Runat="server" Text="<%$ Resources:LocalizedText, ListOfRecordsInDatabase%>" /> 

对于隐式定位,代码看起来像更像是这样的:

<asp:Localize ID="Localize1" Runat="server" meta:resourcekey="LocalizeResource1" Text="This is a List of records available in the Database" /> 

对于这些只存在于单个页面中的一次性文本,我通常使用隐式本地化。对于可以存在于许多页面上的文本(通用标签,按钮等),我使用明确的。

隐含的本地化资源文件,甚至可以自动生成你,一旦你把它们放入一个服务器控件,像<asp:Localize><asp:Label>

在MSDN网站上有一个很棒的演练,名为“Walkthrough: Using Resources for Localization with ASP.NET”。它会告诉你如何自动生成资源文件。

+0

谢谢,一个非常好的记录答案。我的问题基本上......是否有一种方法将aspx中的自由文本以更自动的方式转换为服务器控件?我不想手动做。在我的示例代码中,我想运行脚本,批处理等,将自由文本转换为Label或Localize标签。我有很多文件需要解析,而且很难手动进行文件分割! – Enovator

+0

我什么都不知道......但是如果文本遵循一个模式,就像它总是在两个'
'标签之间,那么也许你可以使用Visual Studio中的正则表达式查找和替换功能。 –

+0

有线程提取自由文本与正则表达式,像这样:https://stackoverflow.com/questions/7167279/regex-select-all-text-between-tags,但他们说,我会更好的一个像BeautifulSoup工具https://www.crummy.com/software/BeautifulSoup/ – Enovator