问题 如何用另一种语言翻译网站?(ASP .NET,c#)


我开发了一个大型商业门户网站。我刚刚意识到我需要用另一种语言访问我的网站。我研究过像这样的解决方案

  • 在我的网站上使用第三方控件。 (适合我的设计。对于SEO的观点没有用。不想显示第三方品牌名称。)
  •  为每种语言创建资源文件。(重构页面以使用资源文件中的文本需要大量工作。用户输入的数据如“业务描述”。)
  • 还有其他选择吗?
    我想的是一个解决方案,比如在服务器端创建页面然后我可以在发送回客户端之前翻译它。有什么方法可以做到吗?(翻译所有内容,包括从数据库或代码中添加的数据。而不影响设计。)


    6372
    2018-06-04 11:26


    起源

    据我所知,对于静态资源,人们通常使用ASP.NET的资源机制,对于用户生成的内容,您可以使用类似CMS的apporach,其中每个支持语言都有相同页面的版本,每个版本都是由负责人手动编辑。至于自动翻译,您可以尝试与谷歌翻译或类似的东西集成。 - axk


    答案:


    如果你真的需要翻译你的应用程序,那将需要做很多艰苦,乏味的工作。 没有灵丹妙药。

    您需要做的第一件事是将标记中的纯文本转换为asp:Localize控件。通过使用Localize控件,您可以保留现有控件 <span> 标签到位,只需替换它们内部的文本。真的没办法解决这个问题。 Visual Studio的搜索和替换支持正则表达式匹配,可以帮助您解决此问题,或者您可以使用Resharper(参见下文)。

    第一种方法是下载开源购物应用程序 nopCommerce 并了解他们如何处理本地化。它们将字符串存储在数据库中,并具有用于编辑语言的UI。类似的方法可能适合您。

    或者,如果要使用资源文件,除了Visual Studio之外,我还建议使用两种工具: Resharper 5 (本地化功能截屏视频)和 Zeta资源编辑器。这些是我使用此方法完成它的步骤:

    1. 在visual studio中为每个页面使用“生成本地资源”工具
    2. 使用Resharper的“将HTML移动到资源”标记中的文本,使其成为Localize控件。
    3. 使用Resharper搜索后面代码中的任何可本地化字符串,并将它们移动到资源文件中。
    4. 使用代码分析全球化规则/ FXCop帮助查找格式化数字,日期等可能遇到的任何其他问题。
    5. 一旦所有文本都在resx文件中,使用Zeta资源编辑器加载所有resx文件,添加新语言并导出以进行翻译(或者如果你足够勇敢则自动翻译)。

    我已经在一个翻译成8种语言(并且正在增长)的网站上使用这种方法,其中包含数十页(并且还在增长)。但是,这不是用户可编辑的网站;这些页面完全由程序员控制。


    14
    2018-06-04 12:59



    谢谢你的详细解答。 - Tasawer Khan
    它甚至比那更难 - 你可能使用一些固定的文本和一些数据库文本来构建字符串,并且这些文件的顺序在翻译中会有所不同,需要在翻译中使用占位符。如果它是一个网站,您可能还有一些图像中的文本,需要重新生成。 - Robin Bennett


    将页面转换为阿拉伯语或其他语言。

    去 :

    1页设计

    2,工具

    3 - 生成本地资源

    4 - 获取“Ap​​p_LocalResources”包括“filename.aspx.resx”

    5复制文件并将名称更改为“filename.aspx.ar.resx”以将页面转换为阿拉伯语或其他语言。

    希望对你有帮助:)


    1
    2018-01-19 07:42





    我找到了一个很好的解决方案,请参阅 http://www.nopcommerce.com/p/1784/nopcommerce-translator.aspx

    这个项目是开源的,源代码库在这里: https://github.com/Marjani/NopCommerce-Translator 

    祝你好运


    1
    2018-04-25 11:10





    我想你应该试试谷歌翻译。

    http://translate.google.com/translate_tools

    非常简单,非常有效。

    HTH


    0
    2018-06-04 11:33



    是。这实际上是一个很棒的工具但由于第一个项目符号中列出的原因,不想使用。 - Tasawer Khan
    这很简单,但它没有效果,它不准确,而且不专业 - lKashef


    为每种语言创建资源文件肯定会有更多的工作 - 但这是我可以选择的选项,因为它为您提供了更准确的机会。如果您这样做,您可以手动翻译由说该语言的人翻译的文本(有许多公司提供此类服务)。

    自动翻译系统通常很好地给出了对另一种语言的含义的一般印象,但在尝试描绘专业图像时我永远不会使用它们,因为它们输出的内容通常没有意义。没有什么比'不专业'更尖叫!像文本一样没有意义,因为它已被自动翻译。


    0
    2018-06-04 11:42



    是。但我们也没有英文资源文件。我看过选项Generate local Resource但它不包括显示大多数用户界面标签的跨度:( - Tasawer Khan


    我会将资源文件路由放在翻译选项上,因为语言中单词的含义可能非常具有上下文性,甚至一个错误也可能破坏您网站的可信度。

    正如您所建议的那样,Visual Studio可以为包含文本的大多数控件生成元资源文件密钥,但可能需要手动完成其余操作,但我没有看到更简单,更可靠的解决方案。

    我不认为本地化是一个易于自动化的事情,因为数据库中保存的文本经常导致模式更改以允许多种语言,并且Web HTML经常需要重组来处理截断或包装的标签和按钮文本,因为,例如,你已经翻译成德语或其他东西。

    其他考虑: 文化设置 - 财务分隔符,日期格式。 从右到左 - 阿拉伯语等一些语言是从右到左书写的,这意味着页面需要重新思考以控制图像等定位。

    祝你好运。


    0
    2018-06-04 12:36





    我最终以艰难的方式做到了:

    • 我在名为TranslateInto的字符串类上编写了一个扩展方法
    • 在Page的PreRender方法中,我根据类型(具有文本的类型)递归地获取所有控件
    •  Foreach通过它们和text.TranslateInto(SupportedLanguages.CurrentLanguage)
    • 在我的TranslateInto方法中,我有一个非常大的switch语句,每个字符串都显示给用户及其相关的翻译。

    它不是很漂亮,但它有效。


    0
    2018-06-04 14:38



    这是一种方法。 - Greg


    一个大的开关盒?使用字典/散列表(每种语言的单独实例),它更加有效和快速。


    0
    2017-08-15 09:23



    尝试让你的答案更容易理解。 - Amar