update-desktop-files/suse_update_desktop_file_process_translations.py
Dirk Mueller 38409f7bd1 - Generate files that allow easy upstreaming. (boo#1158957)
- Embed SUSE translations to the desktop file
  (add suse_update_desktop_file_process_translations.py).
(The same as rq 1207014, just texts are shorter, referring to openSUSE Wiki.)

OBS-URL: https://build.opensuse.org/package/show/X11:common:Factory/update-desktop-files?expand=0&rev=74
2024-10-28 10:19:16 +00:00

68 lines
2.1 KiB
Python

#!/usr/bin/python3
import sys
file = sys.argv[1]
po_raw = open(file + '-downstream-translated-raw.desktop', 'r')
po_clean = open(file + '-downstream-translated.desktop', 'w')
lines = po_raw.readlines()
items = dict()
name_processing = False
genericname_processing = False
comment_processing = False
keywords_processing = False
for line in lines:
if ( name_processing and not (line.startswith("Name[") or\
line.startswith("Name="))) or\
( genericname_processing and not (line.startswith("GenericName[") or\
line.startswith("GenericName="))) or\
( comment_processing and not (line.startswith("Comment[") or\
line.startswith("Comment="))) or\
( keywords_processing and not (line.startswith("Keywords[") or\
line.startswith("Keywords="))):
name_processing = False
genericname_processing = False
comment_processing = False
keywords_processing = False
for item in sorted(items):
po_clean.write(items[item])
items = dict()
# Why lang = "AAAA"? Untranslated string is supposed to be first,
# but not all desktop files conform to this conventions. Expect it
# anywhere, but move it to the beginning of the list.
if line.startswith("Name["):
name_processing = True
lang = line[5:line.find(']')]
items[lang] = line
elif line.startswith("Name="):
name_processing = True
lang = "AAAA"
items[lang] = line
elif line.startswith("GenericName["):
genericname_processing = True
lang = line[12:line.find(']')]
items[lang] = line
elif line.startswith("GenericName="):
genericname_processing = True
lang = "AAAA"
items[lang] = line
elif line.startswith("Comment["):
comment_processing = True
lang = line[8:line.find(']')]
items[lang] = line
elif line.startswith("Comment="):
comment_processing = True
lang = "AAAA"
items[lang] = line
elif line.startswith("Keywords["):
keywords_processing = True
lang = line[9:line.find(']')]
items[lang] = line
elif line.startswith("Keywords="):
keywords_processing = True
lang = "AAAA"
items[lang] = line
else:
po_clean.write(line)