将ASP.Net网站翻译成另一种语言

3
我需要将一份英文网站翻译成西班牙语(无需多语言支持)。需要翻译的文本在两个位置:
1. HTML页面内静态文本 2. 代码后台,如错误消息等
其余数据(DB、XML等)已经处理完毕。有没有什么工具或方法可以快速提取上述所有文本?提取出的文本甚至不需要以键/值对的形式呈现。我很高兴将提取出的文本以简单格式每行分隔。
如果有一种方法可以将翻译后的文本替换回其原始位置,那就太好了。但是这并非必须。只要能提取出所有内容,我就感到满意。
请尽量按照问题的要求回答(例如,使用Google显示网站的翻译版本之类的解决方案并不真正有帮助!)。
非常感谢您的帮助。
(这是一个使用C#编写的ASP.Net网站)

使用资源文件(.resx文件)可以实现这一点。请参考类似的文章http://satindersinght.blogspot.in/search/label/How%20to%20create%20website%20for%20mulilanguages%20supports。 - Satinder singh
Satinder,感谢您的评论。然而,如果您再次阅读我的问题,我并不需要一个多语言平台。我只需要提取整个网站的所有字符串。 - shadowf
1
尝试这个解决方案。实际上,您不必实现本地资源,但可以使用它来定位所有硬编码的字符串:https://dev59.com/o3E95IYBdhLWcg3wCJRf - Yeronimo
嗯,非常感谢@Yeronimo,听起来正是我想要的!不过我的机器上没有ReSharper。所以我得稍后再试一下。再次感谢! - shadowf
有一个完全功能的30天试用版可供使用 :) - Yeronimo
非常感谢。你是绝对的明星! :-) - shadowf
1个回答

0

尽管您当前的要求是只将网站翻译成西班牙语,但您永远不知道未来对其他语言的需求 - 默认的ASP.NET键/值对资源文件解决方案在这方面和其他方面都非常有意义。

在服务器上使用本地资源文件(实际上是预设模式的XML文件)可以避免每次页面加载时昂贵的数据库往返(虽然这可以通过输出缓存来减轻),并且使发送短语进行翻译变得非常容易 - 所有短语都在同一位置,在同一个文件中。有一系列可以使用它们的工具,正如.NET的普及度所表明的那样。甚至可以使用Bing翻译资源文件以为您的翻译人员提供便利

使用键而不是匹配字符串文字在考虑到相同的字符串用于多个上下文的情况(可能希望或需要以不同的方式为每个上下文翻译文本 - 在不同的语言中,单词并不总是共享相同的可能含义)或大写问题时非常有意义,在这种情况下,您可能希望使用具有不同大写形式的相同字符串(尽管这在编程上不应该是难以克服的问题)。

最后,使用ASP.NET内置的本地化API可以轻松地根据用户在其计算机上选择的语言环境(例如日期格式)更改语言和UI,并由浏览器在请求标头中发送。西班牙语访问者来到您的网站,它已经是西班牙语 - 无需寻找基于标志或下拉列表更改语言的控件。如果需要,这可以手动设置或覆盖,当然仅适用于您的网站具有适合该语言环境的资源文件时,但这是一个非常强大的开箱即用功能。
如果您正在使用ASP.NET Web Forms,则我绝对会推荐使用Resharper将字符串提取到命名键中,但是您应该知道,如果您正在使用ASP.NET MVC或Web Pages,则它尚不能在Razor视图中执行此操作 - 尽管它仍然会在MVC的情况下从模型中移动字符串(并鼓励您这样做)。
最后,请注意本地化不仅仅是语言问题 - 您的用户可能会使用不同的日期、数字、电话号码格式,甚至在某些情况下可能会使用不同的文本方向。这可能与您的项目无关,但肯定值得注意。

非常感谢您的回答。确实是一份全面的本地化概述。我同意您的观点,并在各种项目中使用本地化。然而,我提出这个问题的特定项目只用于西班牙语(仅限西班牙语)。我遇到的问题是,由于我不是西班牙语母语者,因此我以英语开发了网站,而英文文本应该在项目完成后由母语为西班牙语的人翻译成西班牙语。问题在于从前端和代码后台中提取所有文本,正如我在问题中提到的那样。 - shadowf
如答案中所提到的,并且之前其他评论也提到,ReSharper是最简单的方法。您可以下载30天的免费试用版,尽管我建议购买个人许可证非常值得。这种方法的唯一问题是,除非用户的浏览器识别出西班牙语环境,否则英语将成为站点的默认语言。我想您可以使用en-US(或en-GB)后缀重命名默认文件,并从西班牙语文件中删除es-ES后缀,或者仅部署已删除后缀的西班牙语文件。请注意潜在的字符串值长度差异。 - pwdst
感谢您的回答和评论。供参考,如果有人正在寻找解决相同问题的方法,ReSharper似乎可以做到我所需要的 - 但是我实际上还没有尝试过,因此无法评论其效率或易用性。 - shadowf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接