diff --git a/forge.config.cjs b/forge.config.cjs index 192bcbe3d..91730ed43 100644 --- a/forge.config.cjs +++ b/forge.config.cjs @@ -10,7 +10,13 @@ module.exports = { overwrite: true, asar: true, icon: "./images/app-icons/icon", - extraResource: getExtraResourcesForPlatform(), + extraResource: [ + // Moved to root + ...getExtraResourcesForPlatform(), + + // Moved to resources (TriliumNext Notes.app/Contents/Resources on macOS) + "translations/" + ], afterComplete: [(buildPath, _electronVersion, platform, _arch, callback) => { const extraResources = getExtraResourcesForPlatform(); for (const resource of extraResources) { @@ -77,8 +83,7 @@ module.exports = { function getExtraResourcesForPlatform() { let resources = [ 'dump-db/', - './bin/tpl/anonymize-database.sql', - 'translations/' + './bin/tpl/anonymize-database.sql' ]; const scripts = ['trilium-portable', 'trilium-safe-mode', 'trilium-no-cert-check'] switch (process.platform) { diff --git a/src/public/translations/en/translation.json b/src/public/translations/en/translation.json index 049413d34..965f0d2f5 100644 --- a/src/public/translations/en/translation.json +++ b/src/public/translations/en/translation.json @@ -1327,7 +1327,7 @@ "mermaid-diagram": "Mermaid Diagram", "canvas": "Canvas", "web-view": "Web View", - "mind-map": "Mind Map", + "mind-map": "Mind Map (Beta)", "file": "File", "image": "Image", "launcher": "Launcher", diff --git a/src/public/translations/es/translation.json b/src/public/translations/es/translation.json index 0f8c72fd1..c4de8b404 100644 --- a/src/public/translations/es/translation.json +++ b/src/public/translations/es/translation.json @@ -1317,7 +1317,7 @@ "mermaid-diagram": "Diagrama Mermaid", "canvas": "Lienzo", "web-view": "Vista Web", - "mind-map": "Mapa Mental", + "mind-map": "Mapa Mental (beta)", "file": "Archivo", "image": "Imagen", "launcher": "Lanzador", diff --git a/src/public/translations/ro/translation.json b/src/public/translations/ro/translation.json index 17cf4dfbf..d856ddaa1 100644 --- a/src/public/translations/ro/translation.json +++ b/src/public/translations/ro/translation.json @@ -1291,7 +1291,7 @@ "canvas": "Schiță", "code": "Cod sursă", "mermaid-diagram": "Diagramă Mermaid", - "mind-map": "Hartă mentală", + "mind-map": "Hartă mentală (beta)", "note-map": "Hartă notițe", "relation-map": "Hartă relații", "render-note": "Randare notiță", @@ -1374,7 +1374,7 @@ "window-on-top": "Menține fereastra mereu vizibilă" }, "note_detail": { - "could_not_find_typewidget": "Nu s-a putut găsi typeWidget-ul pentru tipul „{{type}}”" + "could_not_find_typewidget": "Nu s-a putut găsi widget-ul corespunzător tipului „{{type}}”" }, "note_title": { "placeholder": "introduceți titlul notiței aici..." @@ -1387,8 +1387,8 @@ "snapshot_number_limit_label": "Numărul maxim de revizii pentru notițe:" }, "search_result": { - "no_notes_found": "Nu s-a găsit nicio notiță pentru parametrii de căutare dați.", - "search_not_executed": "Căutarea n-a fost încă executată. Clic pe butonul „Căutare” de deasupra pentru a vedea rezultatele." + "no_notes_found": "Nu au fost găsite notițe pentru parametrii de căutare dați.", + "search_not_executed": "Căutarea n-a fost rulată încă. Clic pe butonul „Căutare” de deasupra pentru a vedea rezultatele." }, "show_floating_buttons_button": { "button_title": "Afișează butoanele" diff --git a/src/services/i18n.ts b/src/services/i18n.ts index 5754bc4eb..3498045bd 100644 --- a/src/services/i18n.ts +++ b/src/services/i18n.ts @@ -2,19 +2,33 @@ import i18next from "i18next"; import Backend from "i18next-fs-backend"; import options from "./options.js"; import sql_init from "./sql_init.js"; +import { fileURLToPath } from "url"; +import { dirname, join } from "path"; +import utils from "./utils.js"; +import env from "./env.js"; export async function initializeTranslations() { + const resourceDir = getResourceDir(); + // Initialize translations await i18next.use(Backend).init({ lng: getCurrentLanguage(), fallbackLng: "en", ns: "server", backend: { - loadPath: "translations/{{lng}}/{{ns}}.json" + loadPath: join(resourceDir, "translations/{{lng}}/{{ns}}.json") } }); } +function getResourceDir() { + if (utils.isElectron() && !env.isDev()) { + return process.resourcesPath; + } else { + return join(dirname(fileURLToPath(import.meta.url)), "..", ".."); + } +} + function getCurrentLanguage() { let language; if (sql_init.isDbInitialized()) {