From cc01f7df32b1c2ad0436c849e4a5dc03cd7936c5 Mon Sep 17 00:00:00 2001 From: Maurice Date: Thu, 5 Nov 2026 16:38:37 +0100 Subject: [PATCH] i18n(native): excuse the TREK Cloud brand, mark Email same-as-en, exempt the quota counts The strict i18n checks, which the feature-branch CI does not run, catch three things now that the native strings exist in every locale: TREK Cloud read as an untranslated English phrase (it is a product name, like Vacay and Atlas, so add it to the brand list); Email left identical in Italian, Indonesian and Vietnamese, where it is the local word too (mark same-as-en) and in Greek (give it a Greek term); and the GB and AI-document quota strings carrying {n} without being plural groups (both are figures that never show a singular, like the other unit-symbol counts in NOT_PLURAL). --- shared/scripts/i18n-parity.mjs | 2 ++ shared/scripts/i18n-untranslated.mjs | 2 ++ shared/src/i18n/gr/native.ts | 2 +- shared/src/i18n/id/native.ts | 2 +- shared/src/i18n/it/native.ts | 2 +- shared/src/i18n/vi/native.ts | 2 +- 6 files changed, 8 insertions(+), 4 deletions(-) diff --git a/shared/scripts/i18n-parity.mjs b/shared/scripts/i18n-parity.mjs index bdc20a12f..0832a221c 100644 --- a/shared/scripts/i18n-parity.mjs +++ b/shared/scripts/i18n-parity.mjs @@ -102,6 +102,8 @@ export const NOT_PLURAL = [ { key: 'dawarich.duration.hours', because: 'a duration in a unit symbol (h), the same for any number' }, { key: 'dawarich.duration.hoursMinutes', because: 'a duration in unit symbols (h, min), the same for any number' }, { key: 'files.uploadErrorSize', because: 'a size limit in a unit symbol (MB), the same for any number' }, + { key: 'native.plans.storage', because: 'a storage size in a unit symbol (GB), the same for any number' }, + { key: 'native.plans.aiDocs', because: 'a monthly document allowance, always in the tens, so no singular ever shows' }, ]; /** diff --git a/shared/scripts/i18n-untranslated.mjs b/shared/scripts/i18n-untranslated.mjs index 6857ef73d..259ff4070 100644 --- a/shared/scripts/i18n-untranslated.mjs +++ b/shared/scripts/i18n-untranslated.mjs @@ -75,6 +75,8 @@ export const BRAND_NAMES = [ 'Studio', 'Synology', 'Synology Photos', + // The hosted TREK offering, a product name like Vacay and Atlas. + 'TREK Cloud', 'Vacay', 'Webhook', 'wanderer', diff --git a/shared/src/i18n/gr/native.ts b/shared/src/i18n/gr/native.ts index 215348a24..179f1c7f9 100644 --- a/shared/src/i18n/gr/native.ts +++ b/shared/src/i18n/gr/native.ts @@ -63,7 +63,7 @@ const native: TranslationStrings = { 'native.claim.invalid': 'Τρία ή περισσότερα γράμματα, αριθμοί και παύλες.', 'native.claim.reserved': 'Αυτή η διεύθυνση είναι δεσμευμένη.', 'native.claim.free': 'Διαθέσιμη', - 'native.claim.emailLabel': 'Email', + 'native.claim.emailLabel': 'Ηλ. ταχυδρομείο', 'native.claim.emailHint': 'Για τον λογαριασμό και τις αποδείξεις σας.', 'native.claim.subscribe': 'Εγγραφή για {price}', 'native.claim.cancelled': 'Η αγορά ακυρώθηκε.', diff --git a/shared/src/i18n/id/native.ts b/shared/src/i18n/id/native.ts index 435157ec4..72495beec 100644 --- a/shared/src/i18n/id/native.ts +++ b/shared/src/i18n/id/native.ts @@ -61,7 +61,7 @@ const native: TranslationStrings = { 'native.claim.invalid': 'Tiga huruf, angka, atau tanda hubung atau lebih.', 'native.claim.reserved': 'Alamat itu dicadangkan.', 'native.claim.free': 'Tersedia', - 'native.claim.emailLabel': 'Email', + 'native.claim.emailLabel': 'Email', // same-as-en 'native.claim.emailHint': 'Untuk akun dan tanda terima Anda.', 'native.claim.subscribe': 'Berlangganan seharga {price}', 'native.claim.cancelled': 'Pembelian dibatalkan.', diff --git a/shared/src/i18n/it/native.ts b/shared/src/i18n/it/native.ts index c677d3364..c3501b672 100644 --- a/shared/src/i18n/it/native.ts +++ b/shared/src/i18n/it/native.ts @@ -62,7 +62,7 @@ const native: TranslationStrings = { 'native.claim.invalid': 'Almeno tre lettere, numeri o trattini.', 'native.claim.reserved': 'Questo indirizzo è riservato.', 'native.claim.free': 'Disponibile', - 'native.claim.emailLabel': 'Email', + 'native.claim.emailLabel': 'Email', // same-as-en 'native.claim.emailHint': 'Per il tuo account e le ricevute.', 'native.claim.subscribe': 'Abbonati per {price}', 'native.claim.cancelled': 'Acquisto annullato.', diff --git a/shared/src/i18n/vi/native.ts b/shared/src/i18n/vi/native.ts index 877ee353a..c5e87f289 100644 --- a/shared/src/i18n/vi/native.ts +++ b/shared/src/i18n/vi/native.ts @@ -62,7 +62,7 @@ const native: TranslationStrings = { 'native.claim.invalid': 'Từ ba chữ cái, chữ số và dấu gạch nối trở lên.', 'native.claim.reserved': 'Địa chỉ đó đã được giữ chỗ.', 'native.claim.free': 'Có sẵn', - 'native.claim.emailLabel': 'Email', + 'native.claim.emailLabel': 'Email', // same-as-en 'native.claim.emailHint': 'Cho tài khoản và biên nhận của bạn.', 'native.claim.subscribe': 'Đăng ký với giá {price}', 'native.claim.cancelled': 'Đã hủy mua.',