当前位置:  开发笔记 > 后端 > 正文

你如何处理带标记的文本翻译?

如何解决《你如何处理带标记的文本翻译?》经验,为你挑选了3个好方法。

我正在为我们的网络应用程序开发多语言支持.我们在gettext库周围使用Django的助手.除了如何处理包含重要HTML标记的句子之外,一切都非常容易.这是一个简单的例子:

Please log in to continue.

以下是我能想到的方法:

    更改链接以包括整个句子.无论在这种情况下改变是否是一个好主意,该解决方案的问题在于,当两者理想地独立时,UI变得依赖于i18n的需要.

    将上面的整个字符串标记为翻译(包括格式).然后,翻译字符串也将直接包含HTML.这样做的问题是更改HTML格式需要更改所有翻译.

    紧紧耦合多个翻译,然后使用字符串插值来组合它们.例如,可以单独标记短语"Please%s to continue"和"log in"进行翻译,然后合并."登录"已本地化,然后包装在HREF中,然后插入到翻译的短语中,这使%s保持翻译以标记链接应该去的位置.这种方法使代码复杂化并破坏了翻译字符串的独立性.

还有其他选择吗?其他人如何解决这个问题?



1> Mike Sickler..:

解决方案2就是您想要的.发送整个句子,嵌入HTML标记.

原因:

    主要的翻译工具Trados可以保护标记免受翻译者的无意破坏.

    即使标签的内容发生了变化(但标签的数量和它们在句子中的位置相同),Trados也可以自动翻译之前看过的文本.至少,翻译会给你一个很好的折扣.

    样式是特定于语言环境的.在某些情况下,粗体在中文或日文中是不合适的,例如,斜体在东亚语言中较少使用.译者应该可以自由地保留或删除样式.

    字顺序是特定于语言的.如果你将上面的句子分成片段,它可能适用于英语和法语,但是在中文或日语中,单词顺序在连接时不正确.因此,最好将整个句子外部化,而不是句子碎片.



2> 小智..:

2,具有潜在的扭曲.

你当然可以本地化整个字符串,如:

loginLink=Please log in to continue

但是,根据您的工具和本地化组,他们可能更愿意为您执行以下操作:

// tokens in this string add html links
loginLink=Please {0}log in{1} to continue

这将是我的首选方法.如果您具有忽略某些字符的本地化工具,则可以使用不同的替换模式.例如

loginLink=Please %startlink%log in%endlink% to continue

然后在你正在使用的任何语言的jsp,servlet或等效语言中执行替换...



3> hangy..:

免责声明:我自己在软件国际化方面没有经验.

    我不认为这在任何情况下都会好 - 只是引入了太多的耦合......

    只要你在需要翻译的部分中保持稀疏格式,这可能没问题.为翻译人员提供重要特殊词汇的可能性(通过使他们成为链接或可能使用重点听起来像一个好主意.但是,那些带有(X)HTML的翻译可能无法在其他任何地方轻松使用.

    这听起来像对我不必要的工作......

如果是我,我想我会采用第二种方法,但我会将URI放入格式化参数中,这样就可以更改,而无需更改所有这些翻译.

Please log in to continue.

你应该记住,如果你采用这种方法,你可能需要教你的译员基本的(X)HTML知识,这样他们就不会搞砸你的标记,以便他们知道他们写的那些文本会有什么期望.无论如何,这些额外的知识可能会导致更好的语义标记,因为如上所述,文本可以用(X)HTML进行翻译和注释,以反映本地的写作风格.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有