用Java读取.qm翻译文件
我正在尝试用Java读取.qm翻译文件。 .qm文件是二进制文件。我没有访问.ts文件的权限。 我找不到关于这些.qm文件的太多信息。 它们是如何组织的?用Java读取.qm翻译文件,java,qt,internationalization,Java,Qt,Internationalization,我正在尝试用Java读取.qm翻译文件。 .qm文件是二进制文件。我没有访问.ts文件的权限。 我找不到关于这些.qm文件的太多信息。 它们是如何组织的? 关于,据我所知,没有任何文档,但是如果您查看,您应该能够遵循QM文件的格式 您可能需要在Java中重新实现QTranslator,因为您不仅需要加载文件的能力,还需要以Qt方式提取和应用翻译。据我所知,没有文档,但如果您查看,您应该能够遵循QM文件的格式 您可能需要在Java中重新实现QTranslator,因为您不仅需要加载文件的能力,还需
关于,据我所知,没有任何文档,但是如果您查看,您应该能够遵循QM文件的格式
您可能需要在Java中重新实现
QTranslator
,因为您不仅需要加载文件的能力,还需要以Qt方式提取和应用翻译。据我所知,没有文档,但如果您查看,您应该能够遵循QM文件的格式
您可能需要在Java中重新实现QTranslator
,因为您不仅需要加载文件的能力,还需要以Qt方式提取和应用翻译。根据OP的要求:
您可以通过使用Qt库和JNI来使用这些文件。通过使用C++中的翻译器,你可以很容易地翻译字符串。但是,您无法提取文件或列出包含的翻译。但是,如果您只需要实际的翻译,那么这个解决方案应该是可行的
我不能给出一个真实的例子,因为我现在才知道它在理论上是如何工作的,我还没有尝试过,因为它不是微不足道的。但如果你想尝试一下,一般的想法是:
首先,我不知道java如何处理dll依赖关系。如果在加载dll时遇到错误,可能是因为dll的依赖项不存在。其次,Qt的大多数操作通常需要在主线程中运行
QCoreApplication
。我在没有这样的应用程序的情况下测试了翻译器,结果成功了。因此,显然,对于翻译,只有应用程序是不需要的。但是,根据您在dll中的操作,我认为了解这一点很重要
如果您需要更多详细信息,请随时询问。根据OP的要求:
您可以通过使用Qt库和JNI来使用这些文件。通过使用C++中的翻译器,你可以很容易地翻译字符串。但是,您无法提取文件或列出包含的翻译。但是,如果您只需要实际的翻译,那么这个解决方案应该是可行的
我不能给出一个真实的例子,因为我现在才知道它在理论上是如何工作的,我还没有尝试过,因为它不是微不足道的。但如果你想尝试一下,一般的想法是:
首先,我不知道java如何处理dll依赖关系。如果在加载dll时遇到错误,可能是因为dll的依赖项不存在。其次,Qt的大多数操作通常需要在主线程中运行
QCoreApplication
。我在没有这样的应用程序的情况下测试了翻译器,结果成功了。因此,显然,对于翻译,只有应用程序是不需要的。但是,根据您在dll中的操作,我认为了解这一点很重要
如果您需要更多详细信息,请随时询问。我会深入了解。谢谢,我很喜欢。谢谢。如果你使用java和Qt C++项目(即Android),最简单的解决方案是使用JNI调用C++方法来进行翻译。如果是这样的话,我可以举一个例子。这个应用程序是JavaSwing应用程序。我只会读取(并使用)这个.qm文件。预计不会有其他互动。但为什么不是JNI呢。为什么不是JNA?如果你使用java和Qt C++项目(即Android),最简单的解决方案是使用JNI调用C++方法来进行翻译。如果是这样的话,我可以举一个例子。这个应用程序是JavaSwing应用程序。我只会读取(并使用)这个.qm文件。预计不会有其他互动。但为什么不是JNI呢。为什么不是JNA?你的例子将被大大的理解。构建整个JNI说唱器是一个地狱,尤其是当你不是(我)熟悉C++和QT。打造整个JNI说唱歌手简直是地狱。从头开始构建它有点过分,因为我想这样做。无论如何谢谢你。我会尝试在java中直接读取文件。构建整个JNI说唱器是非常糟糕的,尤其是当你不熟悉C++和QT时。打造整个JNI说唱歌手简直是地狱。从头开始构建它有点过分,因为我想这样做。无论如何谢谢你。我将尝试用Java直接读取该文件。。