Skip to content

Commit f039254

Browse files
committed
getAllTranslated() & allow ZERO plural forms
Translator can decide, whether to prefer zero form (e.g. variable/number-less sentence), above standard for his language.
1 parent a00b469 commit f039254

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@nfsmaniac/simplin.js",
3-
"version": "1.0.1",
3+
"version": "1.1.0",
44
"description": "A simple, tiny Node.js module providing a basic multi-language system",
55
"main": "./src/simplin.js",
66
"scripts": {

src/simplin.js

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ function _(str, ...args) {
2525
return strProvider.get(str, ...args);
2626
}
2727

28+
function _A_(str, ...args) {
29+
return strProvider.getAllTranslated(str, ...args);
30+
}
31+
2832
class StringProvider {
2933
constructor() {
3034

@@ -81,6 +85,7 @@ class StringProvider {
8185

8286
let pluralCategory = pluralRules[locale].select(args)
8387
let loadedPluralForm = loaded[pluralCategory];
88+
args === 0 && loaded["zero"] ? loadedPluralForm = loaded["zero"] : loadedPluralForm = loaded[pluralCategory]; // prefer "zero" form if explicitly defined (on top of standard)
8489
if (loadedPluralForm === null || loadedPluralForm === undefined)
8590
{
8691
// Translator probably forgot to define the requested plural
@@ -92,6 +97,21 @@ class StringProvider {
9297
return this._insertArguments(loadedPluralForm, args);
9398
};
9499

100+
getAllTranslated = (str, ...inputArgs) => {
101+
102+
const defaultLocaleString = this.get(str, inputArgs);
103+
const excludeList = [defaultLocaleString, str];
104+
const LocalisedStrings = {};
105+
106+
Object.keys(locales).forEach(locale => {
107+
let loadedString = this.get(str, locale, inputArgs);
108+
if(loadedString && !excludeList.includes(loadedString))
109+
LocalisedStrings[locale] = loadedString;
110+
});
111+
112+
return [LocalisedStrings, defaultLocaleString];
113+
}
114+
95115
load = (localesPath) => {
96116
[locales, pluralRules] = loadLocales(localesPath);
97117
return this;
@@ -109,4 +129,5 @@ class StringProvider {
109129
const strProvider = new StringProvider();
110130

111131
exports.StringProvider = strProvider;
112-
exports._ = _; // _() is shorthand alias for StringProvider.get()
132+
exports._ = _; // _() is shorthand alias for StringProvider.get()
133+
exports._A_ = _A_; // _A_() is shorthand alias for StringProvider.getAllTranslated()

0 commit comments

Comments
 (0)