#!/usr/bin/env python"""Helper script to update sampleproject's translation catalogs.When a bug has been identified related to i18n, this helps capture the issueby using catalogs created from management commands.Example:The string "Two %% Three %%%" renders differently using translate andblocktranslate. This issue is difficult to debug, it could be a problem withextraction, interpolation, or both.How this script helps:* Add {% translate "Two %% Three %%%" %} and blocktranslate equivalent to templates.* Run this script.* Test extraction - verify the new msgid in sampleproject's django.po.* Add a translation to sampleproject's django.po.* Run this script.* Test interpolation - verify templatetag rendering, test each in a templatethat is rendered using an activated language from sampleproject's locale.* Tests should fail, issue captured.* Fix issue.* Run this script.* Tests all pass."""import os
import re
import sys
proj_dir = os.path.dirname(os.path.abspath(__file__))
sys.path.append(os.path.abspath(os.path.join(proj_dir, "..", "..", "..")))
def update_translation_catalogs():
"""Run makemessages and compilemessages in sampleproject."""
from django.core.management import call_command
prev_cwd = os.getcwd()
os.chdir(proj_dir)
call_command("makemessages")
call_command("compilemessages")
# keep the diff friendly - remove 'POT-Creation-Date'
pofile = os.path.join(proj_dir, "locale", "fr", "LC_MESSAGES", "django.po")
with open(pofile) as f:
content = f.read()
content = re.sub(r'^"POT-Creation-Date.+$\s', "", content, flags=re.MULTILINE)
with open(pofile, "w") as f:
f.write(content)
os.chdir(prev_cwd)
if __name__ == "__main__":
update_translation_catalogs()