gluon-web: add renderer._translate()

_translate() will return nil when no match is found.
This commit is contained in:
Matthias Schiffer 2017-02-22 19:01:19 +01:00
parent e70ced9caa
commit 1d7b4482b7
No known key found for this signature in database
GPG Key ID: 16EF3F64CB201D9C
3 changed files with 14 additions and 6 deletions

View File

@ -17,10 +17,11 @@ i18n support in Gluon
---------------------
Internationalization support is available in all components (models, view and
contrllers) of *gluon-web*-based packages. Strings are translated using the *translate*
and *translatef* functions (*translate* for static strings, *translatef*
for printf-like formatted string); in views, the special tags ``<%:...%>`` can
be used to translate the contained string.
contrllers) of *gluon-web*-based packages. Strings are translated using the *translate*,
*_translate* and *translatef* functions (*translate* for static strings, *translatef*
for printf-like formatted string; *_translate* works the same as *translate*, but
will return *nil* instead of the original string when no translation is available)
. In views, the special tags ``<%:...%>`` can be used to translate the contained string.
Example from the *gluon-config-mode-geo-location* package:

View File

@ -52,4 +52,4 @@ variables and functions should always be available for the embedded Lua code:
Use ``node(unpack(request))`` to get the node for the current page.
- *pcdata* (*str*): Escapes HTML entities in the passed string.
- *urlencode* (*str*): Escapes the passed string for use in an URL.
- *translate* and *translatef*: see :doc:`i18n`
- *translate*, *_translate* and *translatef*: see :doc:`i18n`

View File

@ -25,6 +25,7 @@ function renderer(env)
renderer = ctx,
translate = ctx.translate,
translatef = ctx.translatef,
_translate = ctx._translate,
include = function(name)
ctx.render(name, scope)
end,
@ -79,13 +80,19 @@ function renderer(env)
return tparser.load_catalog(lang, i18ndir)
end
-- Returns a translated string, or nil if none is found
function ctx._translate(key)
return (tparser.translate(key))
end
-- Returns a translated string, or the original string if none is found
function ctx.translate(key)
return tparser.translate(key) or key
end
function ctx.translatef(key, ...)
local t = ctx.translate(key)
return t and t:format(...)
return t:format(...)
end
return ctx