From bf2ab4649ecb902ec101473bc97b3b3457d8f2be Mon Sep 17 00:00:00 2001 From: Maksim Eltyshev Date: Thu, 27 Nov 2025 18:28:25 +0100 Subject: [PATCH] fix: Create isolated i18n instances to prevent locale collision --- server/api/helpers/utils/make-translator.js | 19 +++++++++++++++++-- server/package-lock.json | 1 + server/package.json | 1 + 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/server/api/helpers/utils/make-translator.js b/server/api/helpers/utils/make-translator.js index 7208ca6b..f967e844 100644 --- a/server/api/helpers/utils/make-translator.js +++ b/server/api/helpers/utils/make-translator.js @@ -3,6 +3,9 @@ * Licensed under the Fair Use License: https://github.com/plankanban/planka/blob/master/LICENSE.md */ +const path = require('path'); +const I18n = require('i18n-2'); + module.exports = { sync: true, @@ -14,9 +17,21 @@ module.exports = { }, fn(inputs) { - const i18n = _.cloneDeep(sails.hooks.i18n); + const i18n = new I18n({ + locales: sails.config.i18n.locales, + defaultLocale: sails.config.i18n.defaultLocale, + directory: path.join(sails.config.appPath, sails.config.i18n.localesDirectory), + extension: '.json', + devMode: false, + }); + i18n.setLocale(inputs.language || sails.config.i18n.defaultLocale); - return i18n.__.bind(i18n); // eslint-disable-line no-underscore-dangle + /* eslint-disable no-underscore-dangle */ + const translator = i18n.__.bind(i18n); + translator.n = i18n.__n.bind(i18n); + /* eslint-enable no-underscore-dangle */ + + return translator; }, }; diff --git a/server/package-lock.json b/server/package-lock.json index 16d20e9b..43f062dc 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -16,6 +16,7 @@ "escape-html": "^1.0.3", "escape-markdown": "^1.0.4", "fs-extra": "^11.3.2", + "i18n-2": "^0.7.3", "ico-to-png": "^0.2.2", "istextorbinary": "^9.5.0", "jsonwebtoken": "^9.0.2", diff --git a/server/package.json b/server/package.json index a839e28a..fe0bf672 100644 --- a/server/package.json +++ b/server/package.json @@ -52,6 +52,7 @@ "escape-html": "^1.0.3", "escape-markdown": "^1.0.4", "fs-extra": "^11.3.2", + "i18n-2": "^0.7.3", "ico-to-png": "^0.2.2", "istextorbinary": "^9.5.0", "jsonwebtoken": "^9.0.2",