UlionTse / translators

🌏🌍🌎Translators🌎🌍🌏 is a library that aims to bring free, multiple, enjoyable translations to individuals and students in Python. Translators是一个旨在用Python为个人和学生带来免费、多样、愉快翻译的库。
https://pypi.org/project/translators/
GNU General Public License v3.0
1.62k stars 189 forks source link

[Feature]: 统一所有翻译器的源语言代码和目标语言代码 #152

Open Touch-Night opened 8 months ago

Touch-Night commented 8 months ago

Expect to happened

在很多不同的翻译器中,相同的语言可能使用了不同的语言代码,例如对于苗语,阿里巴巴和百度翻译的语言代码是hmn,而必应的语言代码则是mww。这个问题在中文上更加严重,但是我注意到你使用了zh_pool和auto_pool来规避这个问题。但这终究不能解决所有的存在此类问题的语言。 为了能够在编写程序的时候不需要考虑翻译器切换带来的影响,统一语言代码是必要的。我查看了 #139 ,并且使用get_language_map制作了此模块支持的大部分翻译器的完整语言支持表,包含了各个翻译器支持的语言与其对应的语言代码,希望能对这项改进起到帮助。 supported_language_map.csv 另外,此模块中已经实现了获取某个翻译器支持的语言列表(包括to_language和from_language)的功能,并将对应结果以字典返回的功能,能否把这些相关功能的使用方法写在Readme里呢? #27 和 #62 中提到的方法已经过时,且不再有用。但这就应该放在另一个Feature Request里了,这里仅仅提一嘴。

Expected APP Version

next newest version

Expected Python Version

=3.8 (Default)

Expected Runtime Environment

Windows 10

Country/Region

Qatar(example)

Expected Output

No response

Code of Conduct

UlionTse commented 8 months ago

@Touch-Night 我已经感受到了浓浓的论文论述气息,哈哈哈,respect。 一共三段,那我一段一段回复你哈。 第一段,“终究不能解决所有的存在此类问题”,说的对,偷懒只解决了主要矛盾,嘿嘿。但不好维护也是现实情况。 第二段,从 #139 获得 get_language_map 这个方法,辛苦了。其实后来增加了ts.get_language(),可以更方便获取语言列表。 第三段,同第二段的回答。那我们就讨论一下怎么改进吧。 1、更新readme,之前是以google为标准,相同则为Y,有但有差异Y(xxx),无则`。你可以去PR它,并成为此仓库的贡献者。 2、你可以独立构建一个库,类似于[chinesecalendar](https://pypi.org/project/chinesecalendar/), 你的库将会成为我的依赖库。 3、直接优化PR此库,成为贡献者。方法:你可以将CSV转化为dict,并且要在代码内函数实现一键更新维护。且最后在翻译接口函数增加参数alias_lang_if_detect=True`。

总之,感谢。期待你的回复。当然对于我的建议,你也可以对我说,“让我干?村口的驴子都不敢这么闲着!”

Touch-Night commented 8 months ago

此模块是我为text-generation-webui所写的插件more_translators所使用的。因此,我没有在supported_language_map.csv中包含所有的翻译器,而是仅仅包含了在我的设备和网络条件上可用的翻译器。此外,为了偷懒,我没有核对MyMemory的支持语言列表。

核对语言代码是费时费力的工作,它不能使用程序自动化完成。有不少翻译器没有使用ISO639,或是使用了ISO639的不同版本。不过好在大部分翻译器都在它们的翻译页面的html中包含了语言代码,我因此得以使用浏览器的审查元素功能核对。对于没有包含语言代码的翻译器,有时可以在其官方api文档里找到语言代码与语言名称的映射。以上都没有时,我只能查阅ISO639或是借助GPT。值得一提的是,必应为了保护濒危语言,支持了几个没有正式中文名的语言,对于这些语言,我在表格中自行翻译了它们的名称。

总之,supported_language_map.csv当前并不完整,这个表格最初是为了我的插件所制作的。放在这里仅能起到抛砖引玉的作用。因此目前直接把这个表格的内容放到此模块中应用,是不应该的。

关于Readme的更新,我相信除了获得支持语言代码字典的方法,还可能有其他的功能没有被添加到Readme中,我没有完整地阅读过源代码,因此也无法在Readme中写出所有新用法。