luci-base: cbi.js: support plural translations and disambiguation contexts
- Implement `N_(count, "String singular", "String plural" [, "Context"])` plural translation function. - Extend `_()` to optionally accept a second disambiguation context argument. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
9c1bac4168
commit
894752610d
1 changed files with 18 additions and 2 deletions
|
@ -94,8 +94,24 @@ function sfh(s) {
|
|||
return (0x100000000 + hash).toString(16).substr(1);
|
||||
}
|
||||
|
||||
function _(s) {
|
||||
return (window.TR && TR[sfh(String(s).trim().replace(/[ \t\n]+/g, ' '))]) || s;
|
||||
var plural_function = null;
|
||||
|
||||
function trimws(s) {
|
||||
return String(s).trim().replace(/[ \t\n]+/g, ' ');
|
||||
}
|
||||
|
||||
function _(s, c) {
|
||||
return (window.TR && TR[sfh(trimws(s))]) || s;
|
||||
}
|
||||
|
||||
function N_(n, s, p, c) {
|
||||
if (plural_function == null && window.TR)
|
||||
plural_function = new Function('n', (TR['00000000'] || 'plural=(n != 1);') + 'return +plural');
|
||||
|
||||
var i = plural_function ? plural_function(n) : (n != 1),
|
||||
k = (c != null ? trimws(c) + '\u0001' : '') + trimws(s) + '\u0002' + i.toString();
|
||||
|
||||
return (window.TR && TR[sfh(k)]) || (i ? p : s);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue