Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
1 task done
Touch-Night opened this issue Jan 3, 2024 · 2 comments
Open
1 task done
Assignees

Comments

@Touch-Night
Copy link

Touch-Night commented Jan 3, 2024

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

  • I agree to follow this project's Code of Conduct
@UlionTse
Copy link
Owner

UlionTse commented Jan 3, 2024

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

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

@Touch-Night
Copy link
Author

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

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

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants