mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
Created Design: i18n (markdown)
parent
7a53f3fb73
commit
dfd663b7aa
62
Design:-i18n.md
Normal file
62
Design:-i18n.md
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
# Internationalization
|
||||||
|
|
||||||
|
We are using the [i18next](http://i18next.com/) library for NLS support in both the runtime and editor.
|
||||||
|
|
||||||
|
### Core Message Catalogs
|
||||||
|
|
||||||
|
| Component | Namespace | Location |
|
||||||
|
|-----------|------------|------------------------------------------------------|
|
||||||
|
| Runtime | `runtime` | `node-red/locales/__lang__/runtime.json` |
|
||||||
|
| Editor | `editor` | `node-red/locales/__lang__/editor.json` |
|
||||||
|
| Core nodes| `node-red` | `node-red/nodes/core/locales/__lang__/messages.json` |
|
||||||
|
|
||||||
|
|
||||||
|
### Node Modules Catalogs
|
||||||
|
|
||||||
|
A node module provides message catalogs on a per-node-set basis. Given a node-set identified in package.json as:
|
||||||
|
|
||||||
|
"node-red": {
|
||||||
|
"myNode": "lib/my-node.js"
|
||||||
|
}
|
||||||
|
|
||||||
|
The following message catalogs may exist:
|
||||||
|
|
||||||
|
lib/locales/__lang__/my-node.json
|
||||||
|
lib/locales/__lang__/my-node.html
|
||||||
|
|
||||||
|
**NB**: the locales directory is relative to the node's `.js` file.
|
||||||
|
|
||||||
|
The `.json` file is the message catalog for both runtime and editor.
|
||||||
|
|
||||||
|
The `.html` file contains the localized node help content. The help content in the top-level `.html` file _may_ identify what language it provides using a `data-lang` attribute: (`en-US` assumed if not set).
|
||||||
|
|
||||||
|
<script type="text/x-red" data-help-name="foo" data-lang="en-US">
|
||||||
|
<p>A foo node</p>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
The catalog for a node-set is added under the namespace `<module>/<set>`.
|
||||||
|
|
||||||
|
## Loading catalogs in the editor
|
||||||
|
|
||||||
|
A new api end-point is added to load message catalogs:
|
||||||
|
|
||||||
|
/locales/__lang__/__namespace__.json
|
||||||
|
|
||||||
|
## Using i18n for messages
|
||||||
|
|
||||||
|
### Core Runtime
|
||||||
|
|
||||||
|
var i18n = require("./path/to/i18n.js");
|
||||||
|
// i18n._ is provided as a wrapper to i18next.t
|
||||||
|
|
||||||
|
// Retrieve the value of the message `runtime.version`
|
||||||
|
console.log(i18n._("runtime.version"));
|
||||||
|
|
||||||
|
// Retrieve the value of the message `example.insert" with a named insert
|
||||||
|
// "example.insert" : "I have a value of __myValue__"
|
||||||
|
console.log(i18n._("example.insert",{myValue: 123});
|
||||||
|
|
||||||
|
### Nodes
|
||||||
|
|
||||||
|
Nodes can use `RED._()` to retrieve messages. The function they are provided is pre-scoped to the node's own namespace so they don't have to worry about providing it with each message.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user