diff options
author | Georg Bauer <gb@hugo.westfalen.de> | 2005-11-03 12:01:16 +0000 |
---|---|---|
committer | Georg Bauer <gb@hugo.westfalen.de> | 2005-11-03 12:01:16 +0000 |
commit | ed05d90232c6fde902b4c8fe9878d9c347a84da5 (patch) | |
tree | 148232304ff94000226425dd4ca0bbb2544cf64f | |
parent | c9194cdf9052ecb5942020bdbda9e4100f228324 (diff) | |
download | django-ed05d90232c6fde902b4c8fe9878d9c347a84da5.tar.gz |
i18n: updated translation documentation for new syntax
git-svn-id: http://code.djangoproject.com/svn/django/branches/i18n@1063 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r-- | docs/translation.txt | 63 |
1 files changed, 34 insertions, 29 deletions
diff --git a/docs/translation.txt b/docs/translation.txt index adac134c61..21d947d1d6 100644 --- a/docs/translation.txt +++ b/docs/translation.txt @@ -120,45 +120,41 @@ A standard problem with translations is pluralization of strings. Use Using translations in templates =============================== -Using translations in Django templates works much like translations in Python -code. The ``{% i18n %}`` template tag lets you use the same ``_()`` helper -function as in your Python code:: +Using translations in Django templates uses two template tags and a slightly +different syntax than standard gettext. The ``{% trans %}`` template tag +translates a constant string or a variable content:: - <html> - <title>{% i18n _('This is the title.') %}</title> - <body> - <p>{% i18n _('Hello %(name)s, welcome at %(site)s!') %}</p> - <p>{% i18n ngettext('There is %(count)d file', 'There are %(count)d files', files|count) %}</p> - </body> - </html> + <title>{% trans 'This is the title.' %}</title> -It's not only possible to translate hard-coded strings, but the strings can -contain interpolated parts, e.g. ``%(name)s``. Those parts are automatically -resolved from the template context, just as they would be if you had used them -in ``{{ ... }}``. But this can only resolve variables, not more complex -expressions. +If you only want to mark some value for translation, but translate it +later from a variable, use the ``noop`` option:: -To translate a variable value, do this:: + <input name="field" value="{% trans "value" noop %}"/> - {% i18n _(variable) %} +It is not possible to use variables in this constant string. If you +have variables you need to put in your translations, you have to use the +``{% blocktrans %}`` tag:: -Filters are allowed, too:: + {% blocktrans %}This will have {{ value }} inside{% endblocktrans %} - {% i18n _(variable|lower) %} +If your expressions are more complex (like you need to have filters applied), +you need to bind them to local variables for the translation block:: -Any template tag that resolves variables accepts i18n-string constants, too. + {% blocktrans with value|filter as variable %} + This will have {{ value }} inside + {% endblocktrans %} -Also, note you can use ``_()`` around variable names, like so:: +The last variant is the pluralization form: you need to specify both the singular +and plural sentence with intersparsed variables like this:: - <html> - <title>{{ _('This is the title') }}</title> - <body> - <p>{{ _('Hello, world!') }}</p> - </body> - </html> + {% blocktrans count list|counted as counter %} + There is only one {{ name }} object. + {% plural %} + There are {{ counter }} {{ name }} objects. + {% endblocktrans %} -This syntax is much shorter, but it doesn't allow you to use ``gettext_noop`` -or ``ngettext``. +Internally all block translations and inline translations are translated into +the actual gettext/ngettext call. Each ``DjangoContext`` has access to two translation-specific variables: @@ -167,6 +163,15 @@ Each ``DjangoContext`` has access to two translation-specific variables: * ``LANGUAGE_CODE`` is the current user's preferred language, as a string. Example: ``en-us``. (See "How language preference is discovered", below.) +If you don't use the ``DjangoContext`` extension, you can get those values with +two tags:: + + {% get_current_language as LANGUAGE_CODE %} + {% get_available_languages as LANGUAGES %} + +All tags live in the ``i18n`` tag library, so you need to specify +``{% load i18n %}`` in the head of your template to make use of them. + The ``setlang`` redirect view ----------------------------- |