(domain, localedir=None, languages=None, all=False)
| 477 | |
| 478 | # Locate a .mo file using the gettext strategy |
| 479 | def find(domain, localedir=None, languages=None, all=False): |
| 480 | # Get some reasonable defaults for arguments that were not supplied |
| 481 | if localedir is None: |
| 482 | localedir = _default_localedir |
| 483 | if languages is None: |
| 484 | languages = [] |
| 485 | for envar in ('LANGUAGE', 'LC_ALL', 'LC_MESSAGES', 'LANG'): |
| 486 | val = os.environ.get(envar) |
| 487 | if val: |
| 488 | languages = val.split(':') |
| 489 | break |
| 490 | if 'C' not in languages: |
| 491 | languages.append('C') |
| 492 | # now normalize and expand the languages |
| 493 | nelangs = [] |
| 494 | for lang in languages: |
| 495 | for nelang in _expand_lang(lang): |
| 496 | if nelang not in nelangs: |
| 497 | nelangs.append(nelang) |
| 498 | # select a language |
| 499 | if all: |
| 500 | result = [] |
| 501 | else: |
| 502 | result = None |
| 503 | for lang in nelangs: |
| 504 | if lang == 'C': |
| 505 | break |
| 506 | mofile = os.path.join(localedir, lang, 'LC_MESSAGES', '%s.mo' % domain) |
| 507 | if os.path.exists(mofile): |
| 508 | if all: |
| 509 | result.append(mofile) |
| 510 | else: |
| 511 | return mofile |
| 512 | return result |
| 513 | |
| 514 | |
| 515 | # a mapping between absolute .mo file path and Translation object |
no test coverage detected