There're many Qt applications that provide translation files in '.qm' format however those weren't being splitted as GetText based ones.
Signed-off-by: Otavio Salvador <ota...@ossystems.com.br> --- meta/classes/package.bbclass | 41 +++++++++++++++++++++++++++++++++++++---- 1 files changed, 37 insertions(+), 4 deletions(-) diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass index 1e6a872..e4be20f 100644 --- a/meta/classes/package.bbclass +++ b/meta/classes/package.bbclass @@ -343,6 +343,8 @@ python package_do_split_locales() { bb.debug(1, "package requested not splitting locales") return + import re + packages = (bb.data.getVar('PACKAGES', d, True) or "").split() datadir = bb.data.getVar('datadir', d, True) @@ -358,12 +360,29 @@ python package_do_split_locales() { localedir = os.path.join(dvar + datadir, 'locale') - if not os.path.isdir(localedir): + locales = [] + if os.path.isdir(localedir): + locales = os.listdir(localedir) + + # Check of Qt translation files + qm_re = re.compile("(.*)\.qm$") + qm_files = {} + for root, dirs, files in os.walk(dvar): + for file in files: + qm_file = qm_re.match(file) + if qm_file: + locale = qm_file.group(1) + relpath = os.path.join(root, file).replace(dvar, '', 1) + if relpath: + if not qm_files.has_key(locale): + qm_files[locale] = [] + + qm_files[locale].append(relpath) + + if len(locales) == 0 and len(qm_files) == 0: bb.debug(1, "No locale files in this package") return - locales = os.listdir(localedir) - # This is *really* broken mainpkg = packages[0] # At least try and patch it up I guess... @@ -372,13 +391,27 @@ python package_do_split_locales() { if mainpkg.find('-dev'): mainpkg = mainpkg.replace('-dev', '') + # Queue Qt locales for spliting + for l in qm_files.keys(): + if l not in locales: + locales.append(l) + + # Split the locales into different packages summary = bb.data.getVar('SUMMARY', d, True) or pn description = bb.data.getVar('DESCRIPTION', d, True) or "" for l in locales: ln = legitimize_package_name(l) pkg = pn + '-locale-' + ln packages.append(pkg) - bb.data.setVar('FILES_' + pkg, os.path.join(datadir, 'locale', l), d) + files = [] + files.append(os.path.join(datadir, 'locale', l)) + + if qm_files.has_key(l): + locale_re = re.compile("^.*([a-z]{2}(_[A-Z]{2})?)$") + ln = legitimize_package_name(locale_re.match(l).group(1)) + files += qm_files[l] + + bb.data.setVar('FILES_' + pkg, " ".join(files), d) bb.data.setVar('RDEPENDS_' + pkg, '%s virtual-locale-%s' % (mainpkg, ln), d) bb.data.setVar('RPROVIDES_' + pkg, '%s-locale %s-translation' % (pn, ln), d) bb.data.setVar('SUMMARY_' + pkg, '%s - %s translations' % (summary, l), d) -- 1.7.2.5 _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core