JavaScript API¶
createTranslator¶
import { createTranslator } from 'dash-i18n';
myTranslator = createTranslator( [options] );
Creates a new Translator object and returns it. This factory function
accepts an optional JavaScript Object argument options
.
You can specify the following properties:
Prop |
Default |
Value |
---|---|---|
|
|
Message resources (JavaScript Object key-values) |
|
|
Message resources ( |
|
|
Initial locale – language code (String) |
|
|
Initial fallback locale (String) |
|
|
Separator for resource key and locale (String) |
The prop messages
specifies the initial message resources
represented in the JavaScript Object key-value pairs.
See addMessages for the details.
The prop messageList
specifies the initial message resources
represented in [key, value]
array.
See addMessageList for the details.
The prop locale
specifies the initial locale value which
defaults to 'en'
.
The prop fallbackLocale
specifies the initial fallback locale
value which defaults to 'en'
.
Note
The fallback locale is the supplemental locale which will be tried when the query with the current locale fails.
The prop sep
specifies the separator string to separate
the last locale component in keys.
The value of the separator defaults to '.'
.
Hint
If you choose '_'
(underscore) as a separator, then keys
can be represented strings which equivalent to JavaScript
identifiers. In that case, you can omit quotes around the keys.
Example:
const myTranslator = createTranslator({
messages: {
greeting_morning_en: 'Good morning',
greeting_morning_ja: 'おはよう',
},
sep: '_',
});
const myTranslator2 = createTranslator({
locale: 'ja',
fallbackLocale: 'ja',
messageList: [
['greeting.evening.en', 'Good evening'],
['greeting.evening.ja', 'こんばんは'],
],
});
addMessages¶
myTranslator.addMessages( messages );
The method function addMessages
adds message resources to the
translator object via a JavaScript Object key-values.
The message resources are represented as key-value pairs in
a JavaScript Object messages
.
Note
The key of a message resource designates a certain
internationalization (i18n) message. The key must be an unique
string and end with ${separator}${locale}
(e.g. '.en'
).
Hint
You can use any string as a separator. (See createTranslator for the details.)
The value of a message resource can be a string, an array of strings, or a function (closure).
When the value of a message resource is an array of strings, all the strings are concatenated. This is a convenient way to write a long, mult-line message.
When the value of a message resource is a function, the function
will be evaluated with a supplemental argument props
. The
function must return a string. (See tr for the further
details.)
Example:
const myTranslator = createTranslator();
myTranslator.addMessage({
'greeting.morning.en': 'Good morning',
'greeting.morning.ja': 'おはよう',
});
myTranslator.addMessage({
'greeting.evening.en': 'Good evening',
'greeting.evening.ja': 'こんばんは',
});
myTranslator.tr('greeting.morning'); // → 'Good morning'
myTranslator.setLocale('ja');
myTranslator.tr('greeting.evening'); // → 'こんばんは'
Note
If you add a message resource which has the key already registered in your translator object, then it shadows the previous one.
addMessageList¶
myTranslator.addMessages( messageList );
The method function addMessageList
adds message resources to the
translator object via a [key, value]
array.
Note
The key of a message resource designates a certain
internationalization (i18n) message. The key must be an unique
string and end with ${separator}${locale}
(e.g. '.en'
).
Hint
You can use any string as a separator. (See createTranslator for the details.)
The value of a message resource can be a string, an array of strings, or a function (closure).
When the value of a message resource is an array of strings, all the strings are concatenated. This is a convenient way to write a long, mult-line message.
When the value of a message resource is a function, the function
will be evaluated with a supplemental argument props
. The
function must return a string. (See tr for the further
details.)
Example:
const myTranslator = createTranslator();
myTranslator.addMessage([
['greeting.morning.en', 'Good morning'],
['greeting.morning.ja', 'おはよう'],
});
myTranslator.addMessage([
['greeting.evening.en', 'Good evening'],
['greeting.evening.ja', 'こんばんは'],
]);
myTranslator.tr('greeting.morning'); // → 'Good morning'
myTranslator.setLocale('ja');
myTranslator.tr('greeting.morning'); // → 'おはよう'
Note
If you add a message resource which has the key already registered in your translator object, then it shadows the previous one.
setLocale¶
myTranslator.setLocale( locale );
The method function setLocale
sets the locale of the translaor
object to translate messages.
Example:
const myTranslator = createTranslator({
messages: {
'greeting.morning.en': 'Good morning',
'greeting.morning.ja': 'おはよう',
}
});
myTranslator.tr('greeting.morning'); // → 'Good morning'
myTranslator.setLocale('ja');
myTranslator.tr('greeting.morning'); // → 'おはよう'
tr¶
myTranslator.tr( key [, props]);
The method function tr
returns the message for the given resource
key (string) with the current locale. When there is no message
resource matches to the key and the current locale (language
code), the fallback locale (language code) will be used to retry.
If the value of resource is a function (closure), then the optional second argument will be passed to the function and the return value of the function will be returned.
If no message resource is found, then this function returns null
.
Example:
const myTranslator = createTranslator({
messages: {
'greeting.en': ['Hello, ', 'world!'],
'greeting.ja': 'こんにちは世界!',
'greeting.personalized.en': props => {
const { name = 'Unknown' } = props;
return `Hello, ${name}`;
},
}
});
myTranslator.tr('greeting'); // → 'Hello, world!'
myTranslator.setLocale('ja');
myTranslator.tr('greeting'); // → 'こんにちは世界!'
myTranslator.setLocale('en');
myTranslator.tr('greeting.personalized', { name: 'Dave'); // → 'Hello, Dave'
myTranslator.tr('notFound'); // → null