diff --git a/src/modules/main_menu/components/setting-text-box.vue b/src/modules/main_menu/components/setting-text-box.vue
index 3e5ba575..e9e82834 100644
--- a/src/modules/main_menu/components/setting-text-box.vue
+++ b/src/modules/main_menu/components/setting-text-box.vue
@@ -5,7 +5,7 @@
>
diff --git a/src/modules/main_menu/index.js b/src/modules/main_menu/index.js
index b4443d33..0a6f1e9f 100644
--- a/src/modules/main_menu/index.js
+++ b/src/modules/main_menu/index.js
@@ -260,6 +260,7 @@ export default class MainMenu extends Module {
async onEnable() {
await this.site.awaitElement(Dialog.EXCLUSIVE);
+ await this.i18n.loadChunk('settings');
this.on('addons:added', this.scheduleUpdate, this);
this.on('experiments:enabled', this.scheduleUpdate, this);
@@ -631,16 +632,16 @@ export default class MainMenu extends Module {
];
if ( tok.title ) {
- terms.push(this.i18n.t(tok.i18n_key, tok.title, null, true));
+ terms.push(tok.i18n_key ? this.i18n.t(tok.i18n_key, tok.title, null, true) : tok.title);
- if ( have_locale && this.i18n.has(tok.i18n_key) )
+ if ( have_locale && tok.i18n_key && this.i18n.has(tok.i18n_key) )
terms.push(this.i18n.t(tok.i18n_key, tok.title, null));
}
if ( tok.description ) {
- terms.push(this.i18n.t(tok.desc_i18n_key, tok.description, null, true));
+ terms.push(tok.desc_i18n_key ? this.i18n.t(tok.desc_i18n_key, tok.description, null, true) : tok.description);
- if ( have_locale && this.i18n.has(tok.desc_i18n_key) )
+ if ( have_locale && tok.desc_i18n_key && this.i18n.has(tok.desc_i18n_key) )
terms.push(this.i18n.t(tok.desc_i18n_key, tok.description, null));
}
@@ -670,19 +671,19 @@ export default class MainMenu extends Module {
}
if ( ! token.search_terms ) {
- const formatted = token.title && this.i18n.t(token.i18n_key, token.title, null, true);
+ const formatted = token.title && (token.i18n_key ? this.i18n.t(token.i18n_key, token.title, null, true) : token.title);
let terms = [token.key];
if ( formatted && formatted.localeCompare(token.key, undefined, {sensitivity: 'base'}) )
terms.push(formatted);
- if ( have_locale && this.i18n.has(token.i18n_key) )
+ if ( have_locale && token.i18n_key && this.i18n.has(token.i18n_key) )
terms.push(this.i18n.t(token.i18n_key, token.title, null));
if ( token.description ) {
- terms.push(this.i18n.t(token.desc_i18n_key, token.description, null, true));
+ terms.push(token.desc_i18n_key ? this.i18n.t(token.desc_i18n_key, token.description, null, true) : token.description);
- if ( have_locale && this.i18n.has(token.desc_i18n_key) )
+ if ( have_locale && token.desc_i18n_key && this.i18n.has(token.desc_i18n_key) )
terms.push(this.i18n.t(token.desc_i18n_key, token.description, null));
}
diff --git a/src/modules/translation_ui/components/i18n-entry.vue b/src/modules/translation_ui/components/i18n-entry.vue
index 521b50d9..d5673457 100644
--- a/src/modules/translation_ui/components/i18n-entry.vue
+++ b/src/modules/translation_ui/components/i18n-entry.vue
@@ -122,7 +122,7 @@ function parse(text) {
}
}
-const NUMBER_TYPES = ['number', 'plural', 'en_plural', 'selectordinal', 'duration']
+const NUMBER_TYPES = ['number', 'plural', 'selectordinal', 'duration']
function extractVariables(ast, out, vars, context) {
for(const node of ast) {
diff --git a/src/modules/viewer_cards/card.vue b/src/modules/viewer_cards/card.vue
index cba4535b..e6204ecf 100644
--- a/src/modules/viewer_cards/card.vue
+++ b/src/modules/viewer_cards/card.vue
@@ -64,10 +64,10 @@
- {{ t('viewer-card.months', '{months,number} month{months,en_plural}', {months: subscription.months}) }}
+ {{ t('viewer-card.months', '{months, plural, one {# month} other {# months}}', {months: subscription.months}) }}
diff --git a/src/sites/twitch-twilight/modules/chat/emote_menu.jsx b/src/sites/twitch-twilight/modules/chat/emote_menu.jsx
index 7da875f0..0da82e64 100644
--- a/src/sites/twitch-twilight/modules/chat/emote_menu.jsx
+++ b/src/sites/twitch-twilight/modules/chat/emote_menu.jsx
@@ -824,7 +824,7 @@ export default class EmoteMenu extends Module {
if ( emote_lock ) {
if ( emote_lock.id === 'cheer' ) {
- sellout = t.i18n.t('emote-menu.emote-cheer', 'Cheer an additional {bits_remaining,number} bit{bits_remaining,en_plural} to unlock this emote.', emote_lock);
+ sellout = t.i18n.t('emote-menu.emote-cheer', 'Cheer an additional {bits_remaining, plural, one {# bit} other {# bits}} to unlock this emote.', emote_lock);
} else if ( emote_lock.id === 'follower' ) {
sellout = t.i18n.t('emote-menu.emote-follower', 'Follow {user} to unlock this emote in their channel.', emote_lock);
} else if ( data.all_locked )
@@ -915,7 +915,7 @@ export default class EmoteMenu extends Module {
return (