MCPcopy Create free account
hub / github.com/EasyIME/PIME / GettextLocale

Class GettextLocale

python/python3/tornado/locale.py:515–581  ·  view source on GitHub ↗

Locale implementation using the `gettext` module.

Source from the content-addressed store, hash-verified

513
514
515class GettextLocale(Locale):
516 """Locale implementation using the `gettext` module."""
517
518 def __init__(self, code: str, translations: gettext.NullTranslations) -> None:
519 self.ngettext = translations.ngettext
520 self.gettext = translations.gettext
521 # self.gettext must exist before __init__ is called, since it
522 # calls into self.translate
523 super().__init__(code)
524
525 def translate(
526 self,
527 message: str,
528 plural_message: Optional[str] = None,
529 count: Optional[int] = None,
530 ) -> str:
531 if plural_message is not None:
532 assert count is not None
533 return self.ngettext(message, plural_message, count)
534 else:
535 return self.gettext(message)
536
537 def pgettext(
538 self,
539 context: str,
540 message: str,
541 plural_message: Optional[str] = None,
542 count: Optional[int] = None,
543 ) -> str:
544 """Allows to set context for translation, accepts plural forms.
545
546 Usage example::
547
548 pgettext("law", "right")
549 pgettext("good", "right")
550
551 Plural message example::
552
553 pgettext("organization", "club", "clubs", len(clubs))
554 pgettext("stick", "club", "clubs", len(clubs))
555
556 To generate POT file with context, add following options to step 1
557 of `load_gettext_translations` sequence::
558
559 xgettext [basic options] --keyword=pgettext:1c,2 --keyword=pgettext:1c,2,3
560
561 .. versionadded:: 4.2
562 """
563 if plural_message is not None:
564 assert count is not None
565 msgs_with_ctxt = (
566 "%s%s%s" % (context, CONTEXT_SEPARATOR, message),
567 "%s%s%s" % (context, CONTEXT_SEPARATOR, plural_message),
568 count,
569 )
570 result = self.ngettext(*msgs_with_ctxt)
571 if CONTEXT_SEPARATOR in result:
572 # Translation not found

Callers 1

getMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected