docs: dev/web: update i18n docs
This commit is contained in:
parent
f558279137
commit
4ba7356a24
@ -4,15 +4,19 @@ Controllers
|
||||
Controllers live in ``/lib/gluon/web/controller``. They define which pages ("routes")
|
||||
exist under the ``/cgi-bin/gluon`` path, and what code is run when these pages are requested.
|
||||
|
||||
Controller scripts mostly consist of calls of the `entry` function, which each define
|
||||
one route:
|
||||
Controller scripts usually start with a *package* declaration, followed by calls
|
||||
to the *entry* function, which each define one route:
|
||||
|
||||
.. code-block:: lua
|
||||
|
||||
package 'gluon-web-admin'
|
||||
|
||||
entry({"admin"}, alias("admin", "info"), _("Advanced settings"), 10)
|
||||
entry({"admin", "info"}, template("admin/info"), _("Information"), 1)
|
||||
|
||||
The entry function expects 4 arguments:
|
||||
*package* defines the translation namespace for the titles of the defined
|
||||
pages as well as the referenced views and models. The entry function expects 4
|
||||
arguments:
|
||||
|
||||
- `path`: Components of the path to define a route for.
|
||||
|
||||
@ -20,6 +24,7 @@ The entry function expects 4 arguments:
|
||||
|
||||
- `target`: Dispatcher for the route. See the following section for details.
|
||||
- `title`: Page title (also used in navigation). The underscore function is used
|
||||
to mark the strings as translatable for ``i18n-scan.pl``.
|
||||
|
||||
- `order`: Sort index in navigation (defaults to 100)
|
||||
|
||||
@ -88,9 +93,10 @@ The template renderer
|
||||
The template renderer allows to render templates (views). The most useful functions
|
||||
are:
|
||||
|
||||
- *render* (*view*, *scope*): Renders the given view, optionally passing a table
|
||||
with additional variables to make available in the template.
|
||||
- *render_string* (*str*, *scope*): Same as *render*, but the template is passed
|
||||
- *render* (*view*, *scope*, *pkg*): Renders the given view, optionally passing a table
|
||||
with additional variables to make available in the template. The passed package
|
||||
defines the translation namespace.
|
||||
- *render_string* (*str*, *scope*, *pkg*): Same as *render*, but the template is passed
|
||||
directly instead of being loaded from the view directory.
|
||||
|
||||
The renderer functions are called in property syntax, for example:
|
||||
|
@ -20,8 +20,9 @@ Internationalization support is available in all components (models, view and
|
||||
controllers) 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.
|
||||
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:
|
||||
|
||||
@ -29,6 +30,18 @@ Example from the *gluon-config-mode-geo-location* package:
|
||||
|
||||
local share_location = s:option(Flag, "location", translate("Show node on the map"))
|
||||
|
||||
Note that translations are *namespaced*: each package will only use its own
|
||||
translation strings by default. For this purpose, the package name must by
|
||||
specified in a package's controller. It is possible to access a different
|
||||
translation package using the *i18n* function from models and view, which is
|
||||
necessary when strings from the site configuration are used, or packages do not
|
||||
have their own controller (which is the case for config mode wizard components).
|
||||
|
||||
.. code-block:: lua
|
||||
|
||||
local site_i18n = i18n 'gluon-site'
|
||||
local msg = site_i18n._translate('gluon-config-mode:welcome')
|
||||
|
||||
Adding translation templates to Gluon packages
|
||||
----------------------------------------------
|
||||
|
||||
@ -45,7 +58,7 @@ script in the ``contrib`` directory:
|
||||
|
||||
The same command can be run again to update the template.
|
||||
|
||||
In addition, some additions to the Makefile must be made. Instead of LEDE's default *package.mk*,
|
||||
In addition, the Makefile must be adjusted. Instead of LEDE's default *package.mk*,
|
||||
the Gluon version (``../gluon.mk`` for core packages) must be used. The i18n files must be installed
|
||||
and PKG_CONFIG_DEPENDS must be added::
|
||||
|
||||
@ -92,5 +105,5 @@ Adding support for new languages
|
||||
--------------------------------
|
||||
|
||||
A list of all languages supported by *gluon-web* can be found in ``package/gluon.mk``.
|
||||
New languages just need to be added to *GLUON_SUPPORTED_LANGS*, after a human-readable
|
||||
language name has been defined in the same file.
|
||||
New languages just need to be added to *GLUON_SUPPORTED_LANGS*, and a human-readable
|
||||
language name must be defined.
|
||||
|
@ -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*, *_translate* and *translatef*: see :doc:`i18n`
|
||||
- *translate*, *_translate*, *translatef* and *i18n*: see :doc:`i18n`
|
||||
|
Loading…
Reference in New Issue
Block a user