gpt4 book ai didi

php - 翻译成规则不规则的语言

转载 作者:可可西里 更新时间:2023-11-01 13:15:11 25 4
gpt4 key购买 nike

为了制作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));

bacteria”的复数形式是“bacteria”。附加一个“s”是不合适的。

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

一个更复杂的短语可以是“%n cactus(s) have grown.”。复数应该是“cactii”,如果有一个仙人掌,“have”需要变位为“has”。

你可能会认为逻辑更正是为了避免这些不规则的词,因为它们在编程中不被使用。好吧,这在两个方面没有帮助:

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

在网上搜索其他 Qt 开发人员是否有解决此问题的方法但没有找到后,我来到了 Stack Overflow。

我想知道:

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

最佳答案

您误解了 Qt 中复数的工作原理:它不是自动翻译。

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

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

语言学家被编程了关于语言如何处理事物数量的各种规则。在英语中,它只是单数或复数;但是,如果一种语言具有零或其他形式的特定形式,它会在语言学家中呈现这些形式。然后它允许您以目标翻译语言输入任何正确的句子,并处理将 %n 放在您决定它应该以翻译形式出现的位置。

因此,无论谁在 Linguist 中进行翻译,都将获得来源,并且必须填写单数和复数等信息。

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”可能不是一个好主意。

进一步阅读:

关于php - 翻译成规则不规则的语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9779903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com