This commit is contained in:
2026-08-16 18:49:02 +02:00
parent a94a5aaad7
commit b617342601
12 changed files with 168 additions and 84 deletions
+4 -2
View File
@@ -1,4 +1,4 @@
import type { MessageDict } from "./types";
import type { MessageDict } from "./types";
/** German (de) UI pack — keys must stay in sync with en.ts. */
export const de: MessageDict = {
@@ -812,6 +812,9 @@ export const de: MessageDict = {
"admin.users.cloneCatalogCancel": "Abbrechen",
"admin.users.cloneCatalogConfirm": "Katalog kopieren",
"admin.users.cloneDestFallback": "Ihr Sandbox-Unternehmen",
"admin.users.cloneDestLabel": "Destination company",
"admin.users.cloneDestSelect": "Select destination",
"admin.users.cloneDestRequired": "Choose a destination company different from the source.",
"admin.users.syncA1": "A1 synchronisieren",
"admin.users.syncA1Aria": "Sync A1 categories from dump and repair catalog hygiene for {name}",
"admin.users.syncA1Title": "A1-Katalog synchronisieren",
@@ -2307,7 +2310,6 @@ export const de: MessageDict = {
"flash.admin.catalogCloned": "Copied {source} into {dest}: {products} products, {categories} taxonomy categories, {mapped_with} with mapped category.",
"flash.admin.syncA1Success": "Synced A1 for {name}: dump_mapped {dump_mapped} ({dump_status}), prompts {prompts}, hashes {hashes}, processed←mapped {categories}, mapped←processed {mapped_backfilled}. Coverage: {mapped_with}/{mapped_total} ({taxonomy} taxonomy).",
"flash.admin.syncA1Error": "A1-Sync für {name} fehlgeschlagen.",
"flash.admin.cloneDestMissing": "No sandbox destination. Switch to Platform Demo (staff home), then clone again.",
"flash.admin.planAssignedShort": "Plan zugewiesen.",
"flash.admin.creditsUpdated": "Credits aktualisiert.",
"flash.admin.cyclesProcessed": "Abrechnungszyklen verarbeitet: {count}",
+4 -2
View File
@@ -839,6 +839,9 @@ export const en: MessageDict = {
"admin.users.cloneCatalogCancel": "Cancel",
"admin.users.cloneCatalogConfirm": "Copy catalog",
"admin.users.cloneDestFallback": "your sandbox company",
"admin.users.cloneDestLabel": "Destination company",
"admin.users.cloneDestSelect": "Select destination",
"admin.users.cloneDestRequired": "Choose a destination company different from the source.",
"admin.users.syncA1": "Sync A1",
"admin.users.syncA1Aria": "Sync A1 categories from dump and repair catalog hygiene for {name}",
"admin.users.syncA1Title": "Sync A1 catalog",
@@ -2333,10 +2336,9 @@ export const en: MessageDict = {
"flash.admin.staffRoleUpdated": "Staff role updated for {email}.",
"flash.admin.staffRoleUnavailable": "Staff role updates are not available on this server yet.",
"flash.admin.planAssigned": "Plan assigned to {name}.",
"flash.admin.catalogCloned": "Copied {source} into {dest}: {products} products, {categories} taxonomy categories, {mapped_with} products with mapped category. Open Products uncategorized SKUs need dump backfill or categorize, not another Fix.",
"flash.admin.catalogCloned": "Copied {source} into {dest}: {products} products, {categories} taxonomy categories, {mapped_with} products with mapped category. Open Products ΓÇö uncategorized SKUs need dump backfill or categorize, not another Fix.",
"flash.admin.syncA1Success": "Synced A1 for {name}: dump_mapped {dump_mapped} ({dump_status}), prompts {prompts}, hashes {hashes}, processed←mapped {categories}, mapped←processed {mapped_backfilled}. Coverage: {mapped_with}/{mapped_total} ({taxonomy} taxonomy).",
"flash.admin.syncA1Error": "Sync A1 failed for {name}.",
"flash.admin.cloneDestMissing": "No sandbox destination. Switch active company to Platform Demo (or your staff home), then clone again. Clone refuses to overwrite A1.",
"flash.admin.planAssignedShort": "Plan assigned.",
"flash.admin.creditsUpdated": "Credits updated.",
"flash.admin.cyclesProcessed": "Billing cycles processed: {count}",
+4 -2
View File
@@ -1,4 +1,4 @@
import type { MessageDict } from "./types";
import type { MessageDict } from "./types";
/** Spanish (es) UI pack — keys must stay in sync with en.ts. */
export const es: MessageDict = {
@@ -812,6 +812,9 @@ export const es: MessageDict = {
"admin.users.cloneCatalogCancel": "Cancelar",
"admin.users.cloneCatalogConfirm": "Copiar catálogo",
"admin.users.cloneDestFallback": "tu empresa sandbox",
"admin.users.cloneDestLabel": "Destination company",
"admin.users.cloneDestSelect": "Select destination",
"admin.users.cloneDestRequired": "Choose a destination company different from the source.",
"admin.users.syncA1": "Sincronizar A1",
"admin.users.syncA1Aria": "Sync A1 categories from dump and repair catalog hygiene for {name}",
"admin.users.syncA1Title": "Sincronizar catálogo A1",
@@ -2306,7 +2309,6 @@ export const es: MessageDict = {
"flash.admin.catalogCloned": "Copied {source} into {dest}: {products} products, {categories} taxonomy categories, {mapped_with} with mapped category.",
"flash.admin.syncA1Success": "Synced A1 for {name}: dump_mapped {dump_mapped} ({dump_status}), prompts {prompts}, hashes {hashes}, processed←mapped {categories}, mapped←processed {mapped_backfilled}. Coverage: {mapped_with}/{mapped_total} ({taxonomy} taxonomy).",
"flash.admin.syncA1Error": "Falló la sincronización A1 de {name}.",
"flash.admin.cloneDestMissing": "No sandbox destination. Switch to Platform Demo (staff home), then clone again.",
"flash.admin.planAssigned": "Plan asignado a {name}.",
"flash.admin.planAssignedShort": "Plan asignado.",
"flash.admin.creditsUpdated": "Créditos actualizados.",
+4 -2
View File
@@ -1,4 +1,4 @@
import type { MessageDict } from "./types";
import type { MessageDict } from "./types";
/** French (fr) UI pack — keys must stay in sync with en.ts. */
export const fr: MessageDict = {
@@ -812,6 +812,9 @@ export const fr: MessageDict = {
"admin.users.cloneCatalogCancel": "Annuler",
"admin.users.cloneCatalogConfirm": "Copier le catalogue",
"admin.users.cloneDestFallback": "votre entreprise sandbox",
"admin.users.cloneDestLabel": "Destination company",
"admin.users.cloneDestSelect": "Select destination",
"admin.users.cloneDestRequired": "Choose a destination company different from the source.",
"admin.users.syncA1": "Synchroniser A1",
"admin.users.syncA1Aria": "Sync A1 categories from dump and repair catalog hygiene for {name}",
"admin.users.syncA1Title": "Synchroniser le catalogue A1",
@@ -2306,7 +2309,6 @@ export const fr: MessageDict = {
"flash.admin.catalogCloned": "Copied {source} into {dest}: {products} products, {categories} taxonomy categories, {mapped_with} with mapped category.",
"flash.admin.syncA1Success": "Synced A1 for {name}: dump_mapped {dump_mapped} ({dump_status}), prompts {prompts}, hashes {hashes}, processed←mapped {categories}, mapped←processed {mapped_backfilled}. Coverage: {mapped_with}/{mapped_total} ({taxonomy} taxonomy).",
"flash.admin.syncA1Error": "Échec de la synchronisation A1 pour {name}.",
"flash.admin.cloneDestMissing": "No sandbox destination. Switch to Platform Demo (staff home), then clone again.",
"flash.admin.planAssigned": "Offre assignée à {name}.",
"flash.admin.planAssignedShort": "Offre assignée.",
"flash.admin.creditsUpdated": "Crédits mis à jour.",
+4 -2
View File
@@ -1,4 +1,4 @@
import type { MessageDict } from "./types";
import type { MessageDict } from "./types";
/** Italian (it) UI pack — keys must stay in sync with en.ts. */
export const it: MessageDict = {
@@ -812,6 +812,9 @@ export const it: MessageDict = {
"admin.users.cloneCatalogCancel": "Annulla",
"admin.users.cloneCatalogConfirm": "Copia catalogo",
"admin.users.cloneDestFallback": "la tua azienda sandbox",
"admin.users.cloneDestLabel": "Destination company",
"admin.users.cloneDestSelect": "Select destination",
"admin.users.cloneDestRequired": "Choose a destination company different from the source.",
"admin.users.syncA1": "Sincronizza A1",
"admin.users.syncA1Aria": "Sync A1 categories from dump and repair catalog hygiene for {name}",
"admin.users.syncA1Title": "Sincronizza catalogo A1",
@@ -2306,7 +2309,6 @@ export const it: MessageDict = {
"flash.admin.catalogCloned": "Copied {source} into {dest}: {products} products, {categories} taxonomy categories, {mapped_with} with mapped category.",
"flash.admin.syncA1Success": "Synced A1 for {name}: dump_mapped {dump_mapped} ({dump_status}), prompts {prompts}, hashes {hashes}, processed←mapped {categories}, mapped←processed {mapped_backfilled}. Coverage: {mapped_with}/{mapped_total} ({taxonomy} taxonomy).",
"flash.admin.syncA1Error": "Sincronizzazione A1 per {name} non riuscita.",
"flash.admin.cloneDestMissing": "No sandbox destination. Switch to Platform Demo (staff home), then clone again.",
"flash.admin.planAssigned": "Piano assegnato a {name}.",
"flash.admin.planAssignedShort": "Piano assegnato.",
"flash.admin.creditsUpdated": "Crediti aggiornati.",
+4 -2
View File
@@ -1,4 +1,4 @@
import type { MessageDict } from "./types";
import type { MessageDict } from "./types";
/** Japanese (ja) UI pack — keys must stay in sync with en.ts. */
export const ja: MessageDict = {
@@ -812,6 +812,9 @@ export const ja: MessageDict = {
"admin.users.cloneCatalogCancel": "キャンセル",
"admin.users.cloneCatalogConfirm": "カタログをコピー",
"admin.users.cloneDestFallback": "サンドボックス会社",
"admin.users.cloneDestLabel": "Destination company",
"admin.users.cloneDestSelect": "Select destination",
"admin.users.cloneDestRequired": "Choose a destination company different from the source.",
"admin.users.syncA1": "A1を同期",
"admin.users.syncA1Aria": "Sync A1 categories from dump and repair catalog hygiene for {name}",
"admin.users.syncA1Title": "A1カタログを同期",
@@ -2306,7 +2309,6 @@ export const ja: MessageDict = {
"flash.admin.catalogCloned": "Copied {source} into {dest}: {products} products, {categories} taxonomy categories, {mapped_with} with mapped category.",
"flash.admin.syncA1Success": "Synced A1 for {name}: dump_mapped {dump_mapped} ({dump_status}), prompts {prompts}, hashes {hashes}, processed←mapped {categories}, mapped←processed {mapped_backfilled}. Coverage: {mapped_with}/{mapped_total} ({taxonomy} taxonomy).",
"flash.admin.syncA1Error": "{name} のA1同期に失敗しました。",
"flash.admin.cloneDestMissing": "No sandbox destination. Switch to Platform Demo (staff home), then clone again.",
"flash.admin.planAssigned": "{name} にプランを割り当てました。",
"flash.admin.planAssignedShort": "プランを割り当てました。",
"flash.admin.creditsUpdated": "クレジットを更新しました。",
+4 -2
View File
@@ -1,4 +1,4 @@
import type { MessageDict } from "./types";
import type { MessageDict } from "./types";
/** Dutch (nl) UI pack — keys must stay in sync with en.ts. */
export const nl: MessageDict = {
@@ -812,6 +812,9 @@ export const nl: MessageDict = {
"admin.users.cloneCatalogCancel": "Annuleren",
"admin.users.cloneCatalogConfirm": "Catalogus kopiëren",
"admin.users.cloneDestFallback": "je sandboxbedrijf",
"admin.users.cloneDestLabel": "Destination company",
"admin.users.cloneDestSelect": "Select destination",
"admin.users.cloneDestRequired": "Choose a destination company different from the source.",
"admin.users.syncA1": "A1 synchroniseren",
"admin.users.syncA1Aria": "Sync A1 categories from dump and repair catalog hygiene for {name}",
"admin.users.syncA1Title": "A1-catalogus synchroniseren",
@@ -2306,7 +2309,6 @@ export const nl: MessageDict = {
"flash.admin.catalogCloned": "Copied {source} into {dest}: {products} products, {categories} taxonomy categories, {mapped_with} with mapped category.",
"flash.admin.syncA1Success": "Synced A1 for {name}: dump_mapped {dump_mapped} ({dump_status}), prompts {prompts}, hashes {hashes}, processed←mapped {categories}, mapped←processed {mapped_backfilled}. Coverage: {mapped_with}/{mapped_total} ({taxonomy} taxonomy).",
"flash.admin.syncA1Error": "A1-synchronisatie voor {name} mislukt.",
"flash.admin.cloneDestMissing": "No sandbox destination. Switch to Platform Demo (staff home), then clone again.",
"flash.admin.planAssigned": "Plan toegewezen aan {name}.",
"flash.admin.planAssignedShort": "Plan toegewezen.",
"flash.admin.creditsUpdated": "Credits bijgewerkt.",
+4 -2
View File
@@ -1,4 +1,4 @@
import type { MessageDict } from "./types";
import type { MessageDict } from "./types";
/** Polish (pl) UI pack — keys must stay in sync with en.ts. */
export const pl: MessageDict = {
@@ -812,6 +812,9 @@ export const pl: MessageDict = {
"admin.users.cloneCatalogCancel": "Anuluj",
"admin.users.cloneCatalogConfirm": "Kopiuj katalog",
"admin.users.cloneDestFallback": "twoja firma sandbox",
"admin.users.cloneDestLabel": "Destination company",
"admin.users.cloneDestSelect": "Select destination",
"admin.users.cloneDestRequired": "Choose a destination company different from the source.",
"admin.users.syncA1": "Synchronizuj A1",
"admin.users.syncA1Aria": "Sync A1 categories from dump and repair catalog hygiene for {name}",
"admin.users.syncA1Title": "Synchronizuj katalog A1",
@@ -2306,7 +2309,6 @@ export const pl: MessageDict = {
"flash.admin.catalogCloned": "Copied {source} into {dest}: {products} products, {categories} taxonomy categories, {mapped_with} with mapped category.",
"flash.admin.syncA1Success": "Synced A1 for {name}: dump_mapped {dump_mapped} ({dump_status}), prompts {prompts}, hashes {hashes}, processed←mapped {categories}, mapped←processed {mapped_backfilled}. Coverage: {mapped_with}/{mapped_total} ({taxonomy} taxonomy).",
"flash.admin.syncA1Error": "Synchronizacja A1 dla {name} nie powiodła się.",
"flash.admin.cloneDestMissing": "No sandbox destination. Switch to Platform Demo (staff home), then clone again.",
"flash.admin.planAssigned": "Przypisano plan do {name}.",
"flash.admin.planAssignedShort": "Przypisano plan.",
"flash.admin.creditsUpdated": "Zaktualizowano kredyty.",
+4 -2
View File
@@ -1,4 +1,4 @@
import type { MessageDict } from "./types";
import type { MessageDict } from "./types";
/** Portuguese (pt) UI pack — keys must stay in sync with en.ts. */
export const pt: MessageDict = {
@@ -812,6 +812,9 @@ export const pt: MessageDict = {
"admin.users.cloneCatalogCancel": "Cancelar",
"admin.users.cloneCatalogConfirm": "Copiar catálogo",
"admin.users.cloneDestFallback": "a sua empresa sandbox",
"admin.users.cloneDestLabel": "Destination company",
"admin.users.cloneDestSelect": "Select destination",
"admin.users.cloneDestRequired": "Choose a destination company different from the source.",
"admin.users.syncA1": "Sincronizar A1",
"admin.users.syncA1Aria": "Sync A1 categories from dump and repair catalog hygiene for {name}",
"admin.users.syncA1Title": "Sincronizar catálogo A1",
@@ -2306,7 +2309,6 @@ export const pt: MessageDict = {
"flash.admin.catalogCloned": "Copied {source} into {dest}: {products} products, {categories} taxonomy categories, {mapped_with} with mapped category.",
"flash.admin.syncA1Success": "Synced A1 for {name}: dump_mapped {dump_mapped} ({dump_status}), prompts {prompts}, hashes {hashes}, processed←mapped {categories}, mapped←processed {mapped_backfilled}. Coverage: {mapped_with}/{mapped_total} ({taxonomy} taxonomy).",
"flash.admin.syncA1Error": "Falha na sincronização A1 de {name}.",
"flash.admin.cloneDestMissing": "No sandbox destination. Switch to Platform Demo (staff home), then clone again.",
"flash.admin.planAssigned": "Plano atribuído a {name}.",
"flash.admin.planAssignedShort": "Plano atribuído.",
"flash.admin.creditsUpdated": "Créditos atualizados.",
+15 -2
View File
@@ -1,7 +1,20 @@
import type { MessageDict } from "./types.ts";
import type { MessageDict } from "./types.ts";
/** Slovenian (sl) UI strings for admin Fix A1 — ready pack. Not registered in UI_LOCALES yet (avoid inventing locale switcher). */
export const sl: MessageDict = {
"admin.users.cloneCatalog": "Copy to my company",
"admin.users.cloneCatalogAria": "Copy {name} catalog into your sandbox company",
"admin.users.cloneCatalogTitle": "Copy company catalog",
"admin.users.cloneCatalogDesc": "Stay on your admin account. Source data is not changed.",
"admin.users.cloneCatalogFrom": "Source: {name}",
"admin.users.cloneCatalogInto": "Destination: {name}",
"admin.users.cloneCatalogWarning": "Replaces categories, feeds, products, attributes, mappings, and brand on the destination. Plan, billing, members, API keys, and store connectors are not copied.",
"admin.users.cloneCatalogCancel": "Cancel",
"admin.users.cloneCatalogConfirm": "Copy catalog",
"admin.users.cloneDestFallback": "your sandbox company",
"admin.users.cloneDestLabel": "Destination company",
"admin.users.cloneDestSelect": "Select destination",
"admin.users.cloneDestRequired": "Choose a destination company different from the source.",
"admin.users.syncA1": "Sinhroniziraj A1",
"admin.users.syncA1Aria": "Sync A1 categories from dump and repair catalog hygiene for {name}",
"admin.users.syncA1Title": "Sinhroniziraj katalog A1",
@@ -10,7 +23,7 @@ export const sl: MessageDict = {
"admin.users.syncA1Warning": "Requires descrybe_new.sql on the API server (scripts/seed/ or SEED_A1_MYSQL_DUMP) for dump category coverage. Without a dump, only DB hygiene runs. No mass reprocess.",
"admin.users.syncA1Cancel": "Prekliči",
"admin.users.syncA1Confirm": "Sinhroniziraj A1",
"flash.admin.catalogCloned": "Copied {source} into {dest}: {products} products, {categories} taxonomy categories, {mapped_with} with mapped category.",
"flash.admin.syncA1Success": "Synced A1 for {name}: dump_mapped {dump_mapped} ({dump_status}), prompts {prompts}, hashes {hashes}, processed←mapped {categories}, mapped←processed {mapped_backfilled}. Coverage: {mapped_with}/{mapped_total} ({taxonomy} taxonomy).",
"flash.admin.syncA1Error": "Sinhronizacija A1 za {name} ni uspela.",
"flash.admin.cloneDestMissing": "Ni ciljnega sandbox podjetja. Preklopite na Platform Demo, nato klonirajte.",
};