我正在尝试使用Java读取.qm翻译文件。 .qm文件是二进制文件。我无法访问.ts文件。 而我没有找到关于这些.qm文件的很多信息。 它们是如何构成的? 此致,使用Java读取.qm翻译文件
回答
没有我知道的文件,但如果你看QTranslator::load
你应该能够遵循QM文件的格式。
您可能需要在Java中重新实现QTranslator
,因为您不仅需要加载文件的能力,还需要以Qt方式提取和应用翻译。
我深入了解这一点。谢谢。 – lvr123
按OP的要求:
您可以通过使用Qt库和JNI使用这些文件。通过在C++ dll中使用转换器,您可以轻松转换字符串。但是,您无法提取文件或列出包含的翻译。但如果你需要的只是实际的翻译,这个解决方案应该可以工作。
我不能举一个真实的例子,因为我只是现在它在理论上是如何工作的,我还没有尝试过,因为它不是微不足道的。但是如果你急于尝试,总体思路是:
- 创建一个C++的DLL,并针对QtCore构建它。最简单的方法是从他们的网站qt.io下载Qt。你可以例如用QtCreator创建一个默认的库项目。 注意:除了Qt5Core.dll,Qt还需要其他库才能正常运行。它们都包含在安装中,但是一旦部署了应用程序,那当然也必须包含它们。
- 将JNI包含在C++项目中并与之链接。如果你是新手,下面是一个很好的教程:Java Programming Tutorial
- 创建你的包装方法。 cpp中的方法可以从java调用带有java字符串的方法,将它们转换为QString,使用QTranslator转换它们并将它们转换回来。
- 负荷的Java库和执行这些方法
重要:
首先,我不知道java中如何处理DLL依赖。如果您在加载dll时遇到错误,可能是因为您的dll的依赖关系不存在。其次,Qt通常需要在主线程中运行大多数操作的QCoreApplication
。我没有这样的应用程序测试翻译,它的工作。显然,翻译只有应用程序是不需要的。然而,根据你在你的dll中做什么,我认为这很重要。
如果您需要更多的细节,请随时询问。
构建整个JNI说唱歌手是非常地狱,尤其是当你不熟悉C++和qt时。构建整个JNI说唱歌手是非常地狱。从头开始构建它有点矫枉过正,因为我愿意这样做。不管怎么说,还是要谢谢你。我会试着直接用Java读取文件。 – lvr123
- 1. 翻译文件,使用此代码谷歌翻译的Java API
- 2. 如何在Visual Studio Qt项目中包含C:\ Qt \ 5.9.1 \ msvc2015 \翻译.qm文件(Qt framework qm文件)?
- 3. 翻译文本文件使用谷歌翻译API或其他
- 4. 从文本文件中读取单个单词并翻译 - C
- 5. 使用QTranslator加载qm文件
- 6. 使用谷歌翻译自动翻译django.po文件
- 7. 使用ant编译在java中读取静态文件
- 8. 使用make来翻译reST文件
- 9. 使用csv文件的Symfony翻译
- 10. 使用gettext翻译.js文件
- 11. 角翻译文件
- 12. Kohana翻译文件
- 13. 用Java读取XML文件
- 14. 用Java读取XSD文件
- 15. 用Java读取pgm文件
- 16. 用Java读取CSV文件
- 17. 用XML读取文件Java
- 18. 用Java读取MSI文件
- 19. 用Java读取XML文件
- 20. 用Java读取.txt文件?
- 21. 如何使用翻译的管NG2-翻译使用以.json文件路径
- 22. 使用Java读取远程文件
- 23. 使用Java扫描器读取文件
- 24. 使用java读取linux配置文件
- 25. Java-使用扫描器读取文件
- 26. 使用Java读取excel文件
- 27. 的Java:使用流读取文件
- 28. 使用java从XML文件读取值
- 29. 使用Java读取文件时出错
- 30. 如何使用java读取pdf文件?
如果您将Java与Qt C++项目(即Android)一起使用,最简单的解决方案是使用JNI调用C++方法来执行翻译。如果这是我可以举例说明的情况。 – Felix
该应用程序是Java Swing应用程序。我只会阅读(并使用).qm文件。预计没有其他交互作用。但为什么不是JNI。为什么不JNA?你的例子将非常感谢。 – lvr123