diff --git a/frontend/src/translation.js b/frontend/src/translation.js index b413146b..3c2819e2 100644 --- a/frontend/src/translation.js +++ b/frontend/src/translation.js @@ -6,21 +6,33 @@ export default function translationPlugin(app) { if (!window.translatedMessages) fetchTranslations() } -function translate(message) { +function format(message, replace) { + return message.replace(/{(\d+)}/g, function (match, number) { + return typeof replace[number] != 'undefined' ? replace[number] : match + }) +} + +function translate(message, replace, context = null) { let translatedMessages = window.translatedMessages || {} - let translatedMessage = translatedMessages[message] || message + let translatedMessage = '' + + if (context) { + let key = `${message}:${context}` + if (translatedMessages[key]) { + translatedMessage = translatedMessages[key] + } + } + + if (!translatedMessage) { + translatedMessage = translatedMessages[message] || message + } const hasPlaceholders = /{\d+}/.test(message) if (!hasPlaceholders) { return translatedMessage } - return { - format: function (...args) { - return translatedMessage.replace(/{(\d+)}/g, function (match, number) { - return typeof args[number] != 'undefined' ? args[number] : match - }) - }, - } + + return format(translatedMessage, replace) } function fetchTranslations(lang) {