Created
July 17, 2016 13:45
-
-
Save liminspace/75c18ddc5d7537427f8bf197aad02712 to your computer and use it in GitHub Desktop.
Після реорганізації перекладів в проекті дозволяє перекласти фрази, переклади яких лежать в різних файлах як застарілі.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
import polib | |
ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | |
pofiles_list = [ | |
'locale/{}/LC_MESSAGES/{}.po', | |
'apps/loginas/locale/{}/LC_MESSAGES/{}.po', | |
'apps/pages/locale/{}/LC_MESSAGES/{}.po', | |
'apps/payment/locale/{}/LC_MESSAGES/{}.po', | |
'apps/promocode/locale/{}/LC_MESSAGES/{}.po', | |
'apps/questionnaire/locale/{}/LC_MESSAGES/{}.po', | |
'apps/slider/locale/{}/LC_MESSAGES/{}.po', | |
'apps/ticket/locale/{}/LC_MESSAGES/{}.po', | |
] | |
def get_pofiles_list(lang, domain): | |
result = [] | |
for fntpl in pofiles_list: | |
fn = os.path.join(ROOT_DIR, fntpl.format(lang, domain)) | |
if os.path.isfile(fn): | |
result.append(fn) | |
return result | |
def get_obsolete_trans(): | |
obsolete_trans = {} | |
for lang in ('en', 'uk', 'pl', 'ru'): | |
for domain in ('django', 'djangojs'): | |
for fn in get_pofiles_list(lang, domain): | |
d = obsolete_trans.setdefault((lang, domain), {}) | |
po = polib.pofile(fn) | |
for entry in po.obsolete_entries(): | |
if entry.msgid in d: | |
if entry.msgstr != d[entry.msgid]: | |
print 'DUPLICATE', fn, entry.msgid | |
continue | |
d[entry.msgid] = entry.msgstr | |
return obsolete_trans | |
def update_po(): | |
obsolete_trans = get_obsolete_trans() | |
for lang in ('en', 'uk', 'pl', 'ru'): | |
for domain in ('django', 'djangojs'): | |
for fn in get_pofiles_list(lang, domain): | |
d = obsolete_trans.get((lang, domain), {}) | |
po = polib.pofile(fn) | |
for entry in po.untranslated_entries(): | |
if entry.msgid in d: | |
entry.msgstr = d[entry.msgid] | |
po.save() | |
update_po() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment