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 Internationalization support is available in all components (models, view and
contrllers) of *gluon-web*-based packages. Strings are translated using the *translate* contrllers) of *gluon-web*-based packages. Strings are translated using the *translate*,
and *translatef* functions (*translate* for static strings, *translatef* *_translate* and *translatef* functions (*translate* for static strings, *translatef*
for printf-like formatted string); in views, the special tags ``<%:...%>`` can for printf-like formatted string; *_translate* works the same as *translate*, but
be used to translate the contained string. 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: 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. Use ``node(unpack(request))`` to get the node for the current page.
- *pcdata* (*str*): Escapes HTML entities in the passed string. - *pcdata* (*str*): Escapes HTML entities in the passed string.
- *urlencode* (*str*): Escapes the passed string for use in an URL. - *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, renderer = ctx,
translate = ctx.translate, translate = ctx.translate,
translatef = ctx.translatef, translatef = ctx.translatef,
_translate = ctx._translate,
include = function(name) include = function(name)
ctx.render(name, scope) ctx.render(name, scope)
end, end,
@ -79,13 +80,19 @@ function renderer(env)
return tparser.load_catalog(lang, i18ndir) return tparser.load_catalog(lang, i18ndir)
end 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) function ctx.translate(key)
return tparser.translate(key) or key return tparser.translate(key) or key
end end
function ctx.translatef(key, ...) function ctx.translatef(key, ...)
local t = ctx.translate(key) local t = ctx.translate(key)
return t and t:format(...) return t:format(...)
end end
return ctx return ctx