我需要本地化一个包含大量页面的asp.net webapp。
到目前为止,我正在做的是在需要的地方用文字替换所有文本,并在需要的地方添加<%$ Resources: restype, reskey %>
标记。所有字符串都来自我的数据库。
问题是将所有文本放在数据库中这只是一个巨大的时间花费。 我真的不想手动将所有文本都放在数据库中,因为每次我完成一个新页面我都必须再次查看相同的练习。
所以我提出了一个想法: 如果我使用这样的默认值(pseude代码)扩展本地化资源处理程序,那该怎么办:
<asp:literal runat="server" Text='<%$ Resources: restype, reskey, 'This was the hard coded text' %>' />
首次加载页面时,字符串资源不在数据库中,但是使用默认文本我可以使用已知的资源类型和密钥添加到我的数据库中。例如,我可以使用问号为默认值添加前缀。这允许我用字符串检查我的表,在任何地方我看到带有问号的文本,我知道它需要翻译。
这样我只需要将资源标签添加到我的标记中,并避免在我的数据库中插入所有文本。我只需要确保加载每一页,我可以在调试中本地加载,然后将非翻译标签发送给翻译。
请告知此方法。
答案 0 :(得分:1)
我们在这里工作的地方是使用特殊助手类声明字符串资源。运行应用程序时,代码中定义的新字符串资源将使用其默认值自动插入到数据库中。该应用程序无需任何准备步骤。稍后你可以改变字符串。
但是,是的,它需要一些包装代码来编写。
答案 1 :(得分:1)
听起来不错,特别是如果你不能同意VS自动生成的标准资源文件机制。
Rick Strahl编写了一个解决方案,用于将ASP.net webapps本地化到数据库。他编写了某种Ajax UI,甚至允许用户翻译Webapp。源代码也是开放的,因此您可以在开发自己的解决方案时查看它。