Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将ASP.Net网站翻译为其他语言_C#_Asp.net_Translation - Fatal编程技术网

C# 将ASP.Net网站翻译为其他语言

C# 将ASP.Net网站翻译为其他语言,c#,asp.net,translation,C#,Asp.net,Translation,我需要翻译成西班牙语的英语网站(多语言支持是没有必要的)。该网站将只使用西班牙语,因此没有必要费心实施“资源”或本地化 需要翻译的文本位于两个位置: HTML页面中的静态 在代码隐藏中,例如错误消息等 其余的数据(DB、XML等)已经整理好了 那么,是否有任何工具或方法可以像上面提到的那样不太耗时地提取所有文本?提取的文本甚至不需要在键/值对中。我会很高兴有一个简单的格式提取的文本,每一个新的行分隔 如果能找到一种方法将翻译后的文本替换回原来的位置,那就太好了。但是,这不是必要的。我很乐意把

我需要翻译成西班牙语的英语网站(多语言支持是没有必要的)。该网站将只使用西班牙语,因此没有必要费心实施“资源”或本地化

需要翻译的文本位于两个位置:

  • HTML页面中的静态
  • 在代码隐藏中,例如错误消息等
其余的数据(DB、XML等)已经整理好了

那么,是否有任何工具或方法可以像上面提到的那样不太耗时地提取所有文本?提取的文本甚至不需要在键/值对中。我会很高兴有一个简单的格式提取的文本,每一个新的行分隔

如果能找到一种方法将翻译后的文本替换回原来的位置,那就太好了。但是,这不是必要的。我很乐意把一切都提取出来

请尽量按原样回答问题(例如,使用谷歌显示网站翻译版本等解决方案并没有真正的帮助!)

事先非常感谢你


(这是一个ASP.Net网站,代码隐藏是用C#编写的)

尽管您当前要求该网站只能翻译成西班牙语,但您永远无法知道您将来对其他语言的要求-默认的ASP.Net密钥/值对资源文件解决方案在这方面和其他方面都很有意义

在服务器上使用本地资源文件(实际上是预设模式中的XML)可以避免每次加载页面时昂贵的数据库往返(尽管这可以通过输出缓存来缓解),并且可以非常轻松地发送短语进行翻译-所有短语都在同一个文件中的一个位置。考虑到.NET的普遍性,可以使用一系列工具来使用它们。甚至有可能

考虑到同一字符串在多个上下文中使用的问题(可能需要或有必要针对每个上下文以不同的方式翻译文本-单词在不同的语言中并不总是具有相同的可能含义),使用键而不是匹配字符串文字是很有意义的,您可能希望相同的字符串具有不同的大写字母(尽管这在编程上不应该是一个无法克服的问题)

最后,在ASP.NET中使用内置本地化API,可以根据用户在其计算机上选择的区域设置更改语言和UI(例如日期格式),并通过浏览器在请求头中发送。一个说西班牙语的访问者出现在你的网站上,而且已经是西班牙语的了——不需要搜索控件来根据标志或下拉列表更改语言。如果需要的话,您可以手动设置或覆盖它,当然,只有当您的站点有适合本地环境的资源文件时,它才适用,但这是一个非常强大的功能,可以开箱即用

如果您使用的是ASP.NET Web表单,那么我肯定会支持使用的建议,但是您应该知道,如果您使用的是ASP.NET MVC或Web页面,则会使用ASP.NET MVC或Web页面,尽管在使用MVC的情况下,它仍然会提供从模型中移动字符串的功能(并且确实鼓励您这样做)


最后,请注意本地化不仅仅是语言,在某些情况下,您的用户可能会使用不同的日期、号码、电话号码格式,甚至不同的文本方向。这可能不适用于您的项目,但一定要注意。

使用资源文件(.resx文件)可以实现这一点。请参考类似文章Satinder,谢谢您的评论。但是,如果您再次阅读我的问题,我不需要多语言平台。我只需要提取站点范围内的所有字符串。请尝试此解决方案。实际上,您不必实现本地资源,但您可以使用它来定位所有硬编码字符串:嗯,非常感谢@Yeronimo,听起来就像我所说的!我的机器上没有重拾器。所以我以后得试一下。再次感谢!有一个功能齐全的30天试用版:)非常感谢您的回答。本地化的全面概述。我同意你的观点,我在各种项目中使用本地化。然而,我提出这个问题的这个特定项目是要用西班牙语(而且只有西班牙语)来表达的。我遇到的问题是,我用英语开发了这个网站,因为我不是以西班牙语为母语的人,项目完成后,英语文本应该由以西班牙语为母语的人翻译成西班牙语。正如我在问题中提到的,问题是从fronded和code-behind代码中提取所有文本。正如回答中提到的以及之前其他评论中提到的,ReSharper是最简单的方法。你可以下载一个30天的免费试用版,尽管我认为个人许可证是值得的。这种方法的唯一问题是,除非用户的浏览器识别西班牙语区域设置,否则英语将成为网站的默认语言。我设想您可以使用en-US(或en-GB)后缀重命名默认文件,并从西班牙语文件中删除es-es后缀,或者只部署(已删除后缀)西班牙语文件以使其生效。请记住潜在的字符串值长度差异。感谢您的回答和评论。作为将来的参考,如果有人正在寻找解决同一问题的方法,ReSharper似乎可以实现我所期望的——但是我实际上还没有尝试过它,所以我不能评论它的有效性或易用性。