Package gluon :: Module languages :: Class translator
[hide private]
[frames] | no frames]

Class translator

source code

object --+
         |
        translator


This class is instantiated by gluon.compileapp.build_environment
as the T object

Example:

    T.force(None) # turns off translation
    T.force('fr, it') # forces web2py to translate using fr.py or it.py

    T("Hello World") # translates "Hello World" using the selected file

Note:
    - there is no need to force since, by default, T uses
      http_accept_language to determine a translation file.
    - en and en-en are considered different languages!
    - if language xx-yy is not found force() probes other similar languages
      using such algorithm: `xx-yy.py -> xx.py -> xx-yy*.py -> xx*.py`

Instance Methods [hide private]
 
__init__(self, langpath, http_accept_language)
x.__init__(...) initializes x; see help(type(x)) for signature
source code
 
get_possible_languages_info(self, lang=None)
Returns info for selected language or dictionary with all possible languages info from `APP/languages/*.py` It Returns:
source code
 
get_possible_languages(self)
Gets list of all possible languages for current application
source code
 
set_current_languages(self, *languages)
Sets current AKA "default" languages Setting one of this languages makes the force() function to turn translation off
source code
 
plural(self, word, n)
Gets plural form of word for number *n* invoked from T()/T.M() in `%%{}` tag
source code
 
force(self, *languages)
Selects language(s) for translation
source code
 
__call__(self, message, symbols={}, language=None, lazy=None, ns=None)
get cached translated plain text message with inserted parameters(symbols) if lazy==True lazyT object is returned
source code
 
__get_otherT__(self, language=None, namespace=None) source code
 
apply_filter(self, message, symbols={}, filter=None, ftag=None) source code
 
M(self, message, symbols={}, language=None, lazy=None, filter=None, ftag=None, ns=None)
Gets cached translated markmin-message with inserted parametes if lazy==True lazyT object is returned
source code
 
get_t(self, message, prefix='')
Use ## to add a comment into a translation string the comment can be useful do discriminate different possible translations for the same string (for example different locations):
source code
 
params_substitution(self, message, symbols)
Substitutes parameters from symbols into message using %.
source code
 
translate(self, message, symbols)
Gets cached translated message with inserted parameters(symbols)
source code

Inherited from object: __delattr__, __format__, __getattribute__, __hash__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __sizeof__, __str__, __subclasshook__

Properties [hide private]

Inherited from object: __class__

Method Details [hide private]

__init__(self, langpath, http_accept_language)
(Constructor)

source code 

x.__init__(...) initializes x; see help(type(x)) for signature

Overrides: object.__init__
(inherited documentation)

get_possible_languages_info(self, lang=None)

source code 

Returns info for selected language or dictionary with all
possible languages info from `APP/languages/*.py`
It Returns:

- a tuple containing::

        langcode, langname, langfile_mtime,
        pluraldict_fname, pluraldict_mtime,
        prules_langcode, nplurals,
        get_plural_id, construct_plural_form

        or None

- if *lang* is NOT defined a dictionary with all possible
  languages::

    { langcode(from filename):
        ( langcode,        # language code from !langcode!
          langname,
              # language name in national spelling from !langname!
          langfile_mtime,  # m_time of language file
          pluraldict_fname,# name of plural dictionary file or None (when default.py is not exist)
          pluraldict_mtime,# m_time of plural dictionary file or 0 if file is not exist
          prules_langcode, # code of plural rules language or 'default'
          nplurals,        # nplurals for current language
          get_plural_id,   # get_plural_id() for current language
          construct_plural_form) # construct_plural_form() for current language
    }

Args:
    lang (str): language

plural(self, word, n)

source code 
Gets plural form of word for number *n*
invoked from T()/T.M() in `%%{}` tag

Args:
    word (str): word in singular
    n (numeric): number plural form created for

Returns:
    word (str): word in appropriate singular/plural form

Note:
    "word" MUST be defined in current language (T.accepted_language)

force(self, *languages)

source code 

Selects language(s) for translation

if a list of languages is passed as a parameter, the first language from this list that matches the ones from the possible_languages dictionary will be selected

default language will be selected if none of them matches possible_languages.

get_t(self, message, prefix='')

source code 

Use ## to add a comment into a translation string the comment can be useful do discriminate different possible translations for the same string (for example different locations):

   T(' hello world ') -> ' hello world '
   T(' hello world ## token') -> ' hello world '
   T('hello ## world## token') -> 'hello ## world'

the ## notation is ignored in multiline strings and strings that start with ##. This is needed to allow markmin syntax to be translated

params_substitution(self, message, symbols)

source code 

Substitutes parameters from symbols into message using %.
also parse `%%{}` placeholders for plural-forms processing.

Returns:
    string with parameters

Note:
    *symbols* MUST BE OR tuple OR dict of parameters!