Skip to content
Snippets Groups Projects
Unverified Commit 1d7b4482 authored by Matthias Schiffer's avatar Matthias Schiffer
Browse files

gluon-web: add renderer._translate()

_translate() will return nil when no match is found.
parent e70ced9c
No related branches found
No related tags found
No related merge requests found
...@@ -17,10 +17,11 @@ i18n support in Gluon ...@@ -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:
......
...@@ -52,4 +52,4 @@ variables and functions should always be available for the embedded Lua code: ...@@ -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`
...@@ -25,6 +25,7 @@ function renderer(env) ...@@ -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) ...@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment