为了使 PHP content management system可扩展,语言翻译至关重要.我正在研究翻译系统的编程方法,我认为 Qt Linguist就是一个很好的例子.

这是Qt文档中的示例用法:

int n = messages.count();
showMessage(tr("%n message(s) saved","",n));

Qt使用已知的语言规则来确定“message”是否在英语中附加了“s”.

当我将这个例子提交给我的开发团队时,他们发现了一个危及Qt tr()函数建模的可扩展性的问题.

这是一个类似的例子,除了现在出现严重错误.

int n = deadBacteria.count();
showMessage(tr("%n bacterium(s) killed",n));

复数的“细菌”是“细菌”.附加“s”是不合适的.

我对Qt Linguist没有多少经验,但我还没有看到它如何处理不规则的变形和形式.

一个更复杂的短语可能是“%n cactus(s)已经成长.”如果有一个仙人掌,复数应该是“cactii”,并且“have”需要与“has”结合.

您可能认为逻辑校正是为了避免这些不规则的单词,因为它们不用于编程.嗯,这在两个方面没有帮助:

>也许有一种语言以不规则的方式修改名词,即使源字符串使用英语,例如“%n message(s)saved”.在MyImaginaryLanguage中,形成翻译字符串的正确方法可能是“1Message saved”,“M2essage saved”,“Me3ssage saved”分别为%n值1,2和3,它看起来不像Qt Linguist处理这个的规则.
>为了使CMS可扩展,就像我需要的那样,需要考虑所有类型的Web应用程序.有人可能会构建一个需要构造像“5仙人掌已经成长”的句子的role-playing game.或许安全软件想说,“ClamAV发现了2种病毒.”而不是“ClamAV发现了2种病毒”.

在线搜索以查看其他Qt开发人员是否有解决此问题但未找到任何问题的解决方案之后,我来到Stack Overflow.

我想知道:

>应该使用什么可扩展和有效的编程技术来翻译可能不规则的字符串?
>如果Qt程序员和翻译人员遇到这种违规问题会怎么做?

你误解了Qt的多元化是如何工作的:它不是一个自动翻译.

基本上你有一个默认字符串,例如“%n仙人掌已经长大.”在你的代码中,这是一个文字.你可以放任何你喜欢的东西,例如“dingbat wibble foo%n bar”.

然后,您可以定义翻译语言(包括与您编写源字符串的语言相同的语言).

语言学家编写了语言如何处理某些东西的各种规则.在英语中它只是单数或复数;但是如果一种语言具有零或其他的特定形式,那么它就会出现在语言学家中.然后它允许您在目标翻译语言中输入正确的句子,并且它处理将%n放在您认为应该在翻译形式中的位置.

因此,无论谁在语言学家中进行翻译都将提供来源,例如,必须填写单数和复数.

Source text: %n cactus(s) have grown.

English translation (Singular): %n cactus has grown.

English translation (Plural): %n cacti have grown.

如果应用程序找不到已安装的翻译,则它会回退到源文字.此外,源文字是翻译人员所看到的内容,因此必须从中推断出您的意思.因此,在描述有多少仙人掌成长时,“dingbat wibble foo%n bar”可能不是一个好主意.

进一步阅读:

> Linguist manual
> Qt Quarterly的Qt Quarterly文章
> Internationalization示例或I18N示例
> Download the SDK并玩一玩.

php – 使用不规则规则转换为语言的更多相关文章

  1. ios – NSError localizedDescription始终返回英语错误消息

    解决方法可以在项目设置中找到此问题的答案.您必须将您感兴趣的语言添加到项目设置中:>在左侧导航中选择项目>选择项目>选择“信息”窗格>将语言添加到“本地化”部分

  2. ios – iTunes Connect上未提供的语言

    我已成功将我的应用程序翻译成西班牙语和加泰罗尼亚语.两个版本都工作得很好.我正在准备提交,当我要添加新的加泰罗尼亚版本时,令我惊讶的是我无法从向下滚动菜单中选择这种语言,尽管我在翻译时能够在Xcode上选择它.那么,我该如何发布加泰罗尼亚语版本?我知道我可以选择西班牙语并用加泰罗尼亚语填充场地,但后来我无法填写西班牙语版本.这里有经验的人吗?

  3. ios – 在Swift中将arabic String转换为英文数字

    如何将非英语数字转换为英文数字,如:斯威夫特的“3486912881”到“3486912881”或者我想接受英文数字并获得其他人.在JavaAndroid中,这段代码对我有用:解决方法喜欢产量

  4. IOS键盘默认按钮翻译

    实际上,我只需要在十进制键盘上将“done”/“pref”/“next”按钮翻译成俄语或其他语言.顺便说一下,本地化的应用程序在俄语中.此外,当我改变本地化语言时,所有其他按钮,如“取消”在其他控件被自动翻译.但不是这样.可以不经过定制吗?

  5. ios – 我的基础国际化故事板是否必须对应于所有非本地化语言和字符串的后备语言?

    >如果系统找不到用户的首选语言文件夹,则该文件中的字符串必须是用户显示的默认字符串?

  6. IOS:为我的应用程序在xcode中设置默认语言

    我开始了我的xcode项目,我有这些设置:在xcode5中它添加了这种“基础”语言,但我不明白它是如何工作的.我想将我的默认语言设置为英语而不是意大利语;例如,如果用户使用西班牙语或法语设置其设备,则必须使用英语而不是意大利语查看应用程序;你能帮助我吗?你应该在plist文件部分设置“base”:并为“base”设置Storyboard;仅适用于LocalizableString中的其他语言当您本地化文件时,您应该设置base和您要使用的其他语言.在本地化应该是基础和您想要使用的所有语言

  7. 如何在特定的语言环境中调试Xcode应用程序(英语,比方说)?

    当我开发一个带有Xcode的本地化界面的Mac应用程序时,我倾向于修改英语资源,并且只有在完成其余的开发工作时才对它们进行本地化/翻译.在非英语系统上,当我要求Xcode运行应用程序时,它会使用我自己语言的本地化,当我想选择自己时.那么,如何在调试会话期间告诉Xcode我希望应用程序使用哪种语言?

  8. [翻译]Swift编程语言——关于Swift

    Swift是一门用于iOS和OSX应用开发的新的编程语言,它以C和Objective-C语言为基础,但没有C语言的兼容性约束。Swift的酝酿花费了数年。Apple为了Swift改进了已有的编译器、调试器和框架的底层。对于Objective-C语言的开发者,Swift是那样的似曾相识。在这个基础之上,Swift引入了许多新的特性并且支持面向对象编程。Swift将现代编程语言的精华和苹果工程文化中的智慧结合在一起。所有这些使得Swift对于开发者和Apple都是一笔对未来可靠的投资。

  9. [翻译]Swift导览

    Swift导览第一次用一门新语言编程,通常要在屏幕上打印“Hello,World”。本章会通过展示如何完成一系列变成任务,来给你的Swift编程之旅开个好头。在Mac电脑上,下载playground,双击连接https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/GuidedTour.playground.zip用Xcode将其打开。Swift中的值不会隐式转换类型。

  10. [翻译]Swift编程语言——基础

    基础Swift是一个门用于iOS和OSX开发的新语言。但是,Swift的很多内容同C语言、OC语言相似。Swift提供了C和OC语言的基础类型的自我版本,包括Int表示整型,Double和Float表示浮点数,Bool表示布尔值,String表示文字数据。Swift也广泛使用那种值不能修改的变量。在常见的类型之外,Swift引入了OC语言没有的高级类型,比如元组。从可选类型可以看得出来Swift是一门类型安全的语言。Swift会帮助你明确代码中可以操作的值的类型。

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部