During the preparation of CMakeL10n rules in kiosktool I found out that here is the extractxml script, which is used to extract strings from xml file kiosk_data.xml. That’s why I was looking for a solution how to ensure this within CMakeL10n rules.
Using the extractxml script would have the result that location information in the POT file would refer to a non-existent temporary file – as it was in the case of extractrc. Furthermore, I could prepare CMake processing specifically for this one file. Or, I could prepare a generic XML extraction macro that will be useful for other cases as well.
That’s why I chose the generic macro. During the preparation of the macro, I found that the functionality of extractxml and extractrc scripts is largely the same. For this reason, I added several options in the new macro tde_l10n_prepare_xml to make this macro meet the needs for both uses.
By the way, just by testing this macro I noticed the wrong semicolon processing that is fixed in #8.
During macro preparation I tested tde_l10n_prepare_xml on POT files generated in tdebase. This helped in revealing and resolving shortcomings. The 160 POT files generated in tdebase give good material to test that the result is the same :smiley:
By the way, here is another difference compared to extractrc. In extractrc is not expected to have multiple tags on one line. For example:
With extractrc only i18n("First") will be generated and the rest will be ignored. With extractxml in kiosktool only i18n("Second") will be generated and the rest will be ignored. The tde_l10n_prepare_xml macro expect this situation and will generate i18n("First");i18n("Second");
When testing with tdelibs, it turned out that the extractrc script allows to override context using the tag attribute. Therefore, this ability was added to the tde_l10n_prepare_xml macro.