Fetch translations from Transifex, wrap long lines, generate mo files.
(resources=None, languages=None, date_since=None, verbosity=0)
| 264 | |
| 265 | |
| 266 | def fetch(resources=None, languages=None, date_since=None, verbosity=0): |
| 267 | """ |
| 268 | Fetch translations from Transifex, wrap long lines, generate mo files. |
| 269 | """ |
| 270 | if date_since is None: |
| 271 | resource_lang_mapping = {} |
| 272 | else: |
| 273 | # Filter resources and languages that were updates after `date_since` |
| 274 | resource_lang_mapping = list_resources_with_updates( |
| 275 | date_since=date_since, |
| 276 | resources=resources, |
| 277 | languages=languages, |
| 278 | verbosity=verbosity, |
| 279 | ) |
| 280 | resources = resource_lang_mapping.keys() |
| 281 | |
| 282 | locale_dirs = _get_locale_dirs(resources) |
| 283 | errors = [] |
| 284 | |
| 285 | for name, dir_ in locale_dirs: |
| 286 | cmd = [ |
| 287 | "tx", |
| 288 | "pull", |
| 289 | "-r", |
| 290 | _tx_resource_for_name(name), |
| 291 | "-f", |
| 292 | "--minimum-perc=5", |
| 293 | ] |
| 294 | per_resource_langs = resource_lang_mapping.get(name, languages) |
| 295 | # Transifex pull |
| 296 | if per_resource_langs is None: |
| 297 | run([*cmd, "--all"], verbosity=verbosity) |
| 298 | target_langs = sorted( |
| 299 | d for d in os.listdir(dir_) if not d.startswith("_") and d != "en" |
| 300 | ) |
| 301 | else: |
| 302 | run([*cmd, "-l", ",".join(per_resource_langs)], verbosity=verbosity) |
| 303 | target_langs = per_resource_langs |
| 304 | |
| 305 | target_langs = [LANG_OVERRIDES.get(d, d) for d in target_langs] |
| 306 | |
| 307 | # msgcat to wrap lines and msgfmt for compilation of .mo file |
| 308 | for lang in target_langs: |
| 309 | po_path = "%(path)s/%(lang)s/LC_MESSAGES/django%(ext)s.po" % { |
| 310 | "path": dir_, |
| 311 | "lang": lang, |
| 312 | "ext": "js" if name.endswith("-js") else "", |
| 313 | } |
| 314 | if not os.path.exists(po_path): |
| 315 | print( |
| 316 | "No %(lang)s translation for resource %(name)s" |
| 317 | % {"lang": lang, "name": name} |
| 318 | ) |
| 319 | continue |
| 320 | run( |
| 321 | ["msgcat", "--no-location", "-o", po_path, po_path], verbosity=verbosity |
| 322 | ) |
| 323 | msgfmt = run( |
nothing calls this directly
no test coverage detected