Skip to content

Instantly share code, notes, and snippets.

@liminspace
Created July 17, 2016 13:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save liminspace/75c18ddc5d7537427f8bf197aad02712 to your computer and use it in GitHub Desktop.
Save liminspace/75c18ddc5d7537427f8bf197aad02712 to your computer and use it in GitHub Desktop.
Після реорганізації перекладів в проекті дозволяє перекласти фрази, переклади яких лежать в різних файлах як застарілі.
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