Browse Source

gluon-web: add renderer._translate()

_translate() will return nil when no match is found.
Matthias Schiffer 7 years ago
parent
commit
1d7b4482b7

+ 5 - 4
docs/dev/web/i18n.rst

@@ -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:
 

+ 1 - 1
docs/dev/web/view.rst

@@ -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`

+ 8 - 1
package/gluon-web/luasrc/usr/lib/lua/gluon/web/template.lua

@@ -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