Qt translate strings from non-source files

后端 未结 2 502
无人及你
无人及你 2021-02-14 08:39

I have a Qt project which uses XML files. Those XML files contain human-readable text and this text should be translated by using the Qt tools (lupdate, lrelease, QtLinguist).

相关标签:
2条回答
  • 2021-02-14 08:47

    You can translate anything you want at runtime by using tr(), as long as the .qm file has a matching translation/context. It shouldn't make any difference whether lupdate extracted it or not.

    I don't know how to make lupdate to extract strings from arbitrary XML, but that doesn't mean you can't use linguist.

    1. .ts files are also XML; it should be easy to make an XSLT that transforms your XML into a .ts file. If you want to target something standard instead of just Qt, lupdate(and linguist) can process also XLIFF files.
    2. you can have multiple .ts files (just call QTranslator::load more than once when setting it up)

    If you really want to have it all in one file for the translator, have your XSLT copy the lupdate-generated file into its output.

    As long as you use a context name that doesn't duplicate something used in the source code, this shouldn't be any different (from Qt's point of view) from the way many apps load a .qm for each DLL that has GUI.

    0 讨论(0)
  • 2021-02-14 08:56

    We had the same problem : XML files containing human readable strings.

    Our solution was to make sure that human readable strings in the XML files were easy to extract (we put them in a LABEL attribute) and we developped a small tool which would parse the XML files, extract the strings, generate a context (by extracting data from the XML file), and then generating a CPP header file containing a list of QT_TR_NOOP().

    This file was added to our project file (.pro) that was used by lupdate.

    This solution was fine for us but we had to be very careful about two things :

    • run this tool each time the content of an XML file changed.
    • make sure the XML files are UTF-8 encoded.
    0 讨论(0)
提交回复
热议问题