如何在不发出任何外部网络请求的情况下,用PHP将字符串从一种语言转换为另一种语言?

问题描述

我有这个:

$English_string = 'Hello. I am a robot.';

现在我想要这个:

$Swedish_string = 'Hej. Jag är en robot.';

我认为代码是这样的:

$Swedish_string = translate_me($English_string,'en','sv'); // text,from,to

translate_me函数不得发出任何类型的网络请求;它必须在我的计算机上是本地的。

很多年前,我尝试使用字典,拼写更正以及PHP中没有的东西来做各种事情,但这是一个很大的混乱,我从来没有完全正确。如今,所有在线信息都已经过时,或者都在谈论使用商业,第三方,外部API。

我不希望它会改变语法或其他任何东西。如果某个词典数据库中存在该单词,则只需逐单词翻译即可。仅仅能够“大致”说出外语在说什么,通常是非常有用的,即使它不是很合理,也肯定不是“专业翻译”等级。

理想情况下,在我不确定的情况下,此功能还允许我放弃“ from”参数(空),使其尝试自动检测/猜测它来自哪种语言。

我认为PHP中不存在此类功能。我想对我来说,执行遍历每个单词并替换为字典中的单词的逻辑是合理的,但这也许是主要问题:

什么字典?与ASPELL / PSPELL /等整个混乱。至少可以这样说非常令人困惑,我花了很多时间试图在网上找到免费的词典来编译自己的单词数据库,但这是一项艰巨的工作,看来这已经是“解决了问题”,而我正在做不必要的工作。

当我问到有关在2020年以这种“原始”方式翻译文本的问题时,我真的感到有些尴尬。在这一点上,您并不希望这是一个障碍。但是,据我所知,还没有内置的明显解决方案,也没有容易获得的解决方案。他们都希望您将所有数据从计算机中发送出去,这是根本不可能的,因为API限制将很快耗尽,即使我想这样侵犯用户的隐私也是如此。

您会建议我做什么?是否有有用的内置PHP机制/词典格式对此进行了高质量更新?还是我真的必须花费数年的时间从​​我自己搜寻的免费字典数据库转储中编译自己的巨型数据库表?

解决方法

您要的是所谓的“直接机器翻译”,本地化社区放弃了此过程,以获得更好的翻译质量。

您可以快速了解机器翻译主题: https://vas3k.com/blog/machine_translation/?hn=1

关闭了大多数准备好的数据库和经过训练的模型,因为这是许多致力于销售机器翻译的公司的核心业务。

如果可以接受仅用于翻译目的的千兆字节数据,则可以使用已经准备好的语言包来探索Apache Joshua

此外,您可以检查PROMT Master NMT 21(具有UI的离线付费预培训翻译引擎)是否具有本地使用的API。