mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-26 02:11:53 +00:00
translations
This commit is contained in:
@@ -654,24 +654,35 @@ export default {
|
|||||||
714: 'Installation abgeschlossen!',
|
714: 'Installation abgeschlossen!',
|
||||||
715: 'StartOS wurde erfolgreich installiert.',
|
715: 'StartOS wurde erfolgreich installiert.',
|
||||||
716: 'Weiter zur Einrichtung',
|
716: 'Weiter zur Einrichtung',
|
||||||
717: '',
|
717: 'Ausgehendes Gateway festlegen',
|
||||||
718: '',
|
718: 'Aktuell',
|
||||||
719: '',
|
719: 'Systemstandard',
|
||||||
720: '',
|
720: 'Ausgehendes Gateway',
|
||||||
721: '',
|
721: 'Gateway für ausgehenden Datenverkehr auswählen',
|
||||||
722: '',
|
722: 'Der Typ des Gateways',
|
||||||
723: '',
|
723: 'Nur ausgehend',
|
||||||
724: '',
|
724: 'Als Standard für ausgehenden Verkehr festlegen',
|
||||||
725: '',
|
725: 'Gesamten ausgehenden Datenverkehr über dieses Gateway leiten',
|
||||||
726: '',
|
726: 'WireGuard-Konfigurationsdatei',
|
||||||
727: '',
|
727: 'Eingehend/Ausgehend',
|
||||||
728: '',
|
728: 'StartTunnel (Eingehend/Ausgehend)',
|
||||||
729: '',
|
729: 'Ethernet',
|
||||||
730: '',
|
730: 'Domain hinzufügen',
|
||||||
731: '',
|
731: 'Öffentliche Domain',
|
||||||
732: '',
|
732: 'Private Domain',
|
||||||
733: '',
|
733: 'Ausblenden',
|
||||||
734: '',
|
734: 'Standard ausgehend',
|
||||||
735: '',
|
735: 'Zertifikat',
|
||||||
736: '',
|
736: 'Selbstsigniert',
|
||||||
|
737: 'Portweiterleitung',
|
||||||
|
738: 'Domain-Einrichtung',
|
||||||
|
739: 'DNS',
|
||||||
|
740: 'Anweisungen',
|
||||||
|
741: 'In Ihrem Domain-Registrar für',
|
||||||
|
742: 'diesen DNS-Eintrag erstellen',
|
||||||
|
743: 'In Ihrem Gateway',
|
||||||
|
744: 'diese Portweiterleitungsregel erstellen',
|
||||||
|
745: 'Externer Port',
|
||||||
|
746: 'Interne IP',
|
||||||
|
747: 'Interner Port',
|
||||||
} satisfies i18n
|
} satisfies i18n
|
||||||
|
|||||||
@@ -654,24 +654,35 @@ export default {
|
|||||||
714: '¡Instalación completada!',
|
714: '¡Instalación completada!',
|
||||||
715: 'StartOS se ha instalado correctamente.',
|
715: 'StartOS se ha instalado correctamente.',
|
||||||
716: 'Continuar con la configuración',
|
716: 'Continuar con la configuración',
|
||||||
717: '',
|
717: 'Establecer puerta de enlace saliente',
|
||||||
718: '',
|
718: 'Actual',
|
||||||
719: '',
|
719: 'Predeterminado del sistema',
|
||||||
720: '',
|
720: 'Puerta de enlace saliente',
|
||||||
721: '',
|
721: 'Selecciona la puerta de enlace para el tráfico saliente',
|
||||||
722: '',
|
722: 'El tipo de puerta de enlace',
|
||||||
723: '',
|
723: 'Solo saliente',
|
||||||
724: '',
|
724: 'Establecer como saliente predeterminado',
|
||||||
725: '',
|
725: 'Enrutar todo el tráfico saliente a través de esta puerta de enlace',
|
||||||
726: '',
|
726: 'Archivo de configuración WireGuard',
|
||||||
727: '',
|
727: 'Entrante/Saliente',
|
||||||
728: '',
|
728: 'StartTunnel (Entrante/Saliente)',
|
||||||
729: '',
|
729: 'Ethernet',
|
||||||
730: '',
|
730: 'Agregar dominio',
|
||||||
731: '',
|
731: 'Dominio público',
|
||||||
732: '',
|
732: 'Dominio privado',
|
||||||
733: '',
|
733: 'Ocultar',
|
||||||
734: '',
|
734: 'saliente predeterminado',
|
||||||
735: '',
|
735: 'Certificado',
|
||||||
736: '',
|
736: 'Autofirmado',
|
||||||
|
737: 'Reenvío de puertos',
|
||||||
|
738: 'Configuración de dominio',
|
||||||
|
739: 'DNS',
|
||||||
|
740: 'Instrucciones',
|
||||||
|
741: 'En su registrador de dominios para',
|
||||||
|
742: 'cree este registro DNS',
|
||||||
|
743: 'En su puerta de enlace',
|
||||||
|
744: 'cree esta regla de reenvío de puertos',
|
||||||
|
745: 'Puerto externo',
|
||||||
|
746: 'IP interna',
|
||||||
|
747: 'Puerto interno',
|
||||||
} satisfies i18n
|
} satisfies i18n
|
||||||
|
|||||||
@@ -654,24 +654,35 @@ export default {
|
|||||||
714: 'Installation terminée !',
|
714: 'Installation terminée !',
|
||||||
715: 'StartOS a été installé avec succès.',
|
715: 'StartOS a été installé avec succès.',
|
||||||
716: 'Continuer vers la configuration',
|
716: 'Continuer vers la configuration',
|
||||||
717: '',
|
717: 'Définir la passerelle sortante',
|
||||||
718: '',
|
718: 'Actuel',
|
||||||
719: '',
|
719: 'Par défaut du système',
|
||||||
720: '',
|
720: 'Passerelle sortante',
|
||||||
721: '',
|
721: 'Sélectionnez la passerelle pour le trafic sortant',
|
||||||
722: '',
|
722: 'Le type de passerelle',
|
||||||
723: '',
|
723: 'Sortant uniquement',
|
||||||
724: '',
|
724: 'Définir comme sortant par défaut',
|
||||||
725: '',
|
725: 'Acheminer tout le trafic sortant via cette passerelle',
|
||||||
726: '',
|
726: 'Fichier de configuration WireGuard',
|
||||||
727: '',
|
727: 'Entrant/Sortant',
|
||||||
728: '',
|
728: 'StartTunnel (Entrant/Sortant)',
|
||||||
729: '',
|
729: 'Ethernet',
|
||||||
730: '',
|
730: 'Ajouter un domaine',
|
||||||
731: '',
|
731: 'Domaine public',
|
||||||
732: '',
|
732: 'Domaine privé',
|
||||||
733: '',
|
733: 'Masquer',
|
||||||
734: '',
|
734: 'sortant par défaut',
|
||||||
735: '',
|
735: 'Certificat',
|
||||||
736: '',
|
736: 'Auto-signé',
|
||||||
|
737: 'Redirection de ports',
|
||||||
|
738: 'Configuration du domaine',
|
||||||
|
739: 'DNS',
|
||||||
|
740: 'Instructions',
|
||||||
|
741: 'Dans votre registraire de domaine pour',
|
||||||
|
742: 'créez cet enregistrement DNS',
|
||||||
|
743: 'Dans votre passerelle',
|
||||||
|
744: 'créez cette règle de redirection de port',
|
||||||
|
745: 'Port externe',
|
||||||
|
746: 'IP interne',
|
||||||
|
747: 'Port interne',
|
||||||
} satisfies i18n
|
} satisfies i18n
|
||||||
|
|||||||
@@ -654,24 +654,35 @@ export default {
|
|||||||
714: 'Instalacja zakończona!',
|
714: 'Instalacja zakończona!',
|
||||||
715: 'StartOS został pomyślnie zainstalowany.',
|
715: 'StartOS został pomyślnie zainstalowany.',
|
||||||
716: 'Przejdź do konfiguracji',
|
716: 'Przejdź do konfiguracji',
|
||||||
717: '',
|
717: 'Ustaw bramę wychodzącą',
|
||||||
718: '',
|
718: 'Bieżący',
|
||||||
719: '',
|
719: 'Domyślne systemu',
|
||||||
720: '',
|
720: 'Brama wychodząca',
|
||||||
721: '',
|
721: 'Wybierz bramę dla ruchu wychodzącego',
|
||||||
722: '',
|
722: 'Typ bramy',
|
||||||
723: '',
|
723: 'Tylko wychodzący',
|
||||||
724: '',
|
724: 'Ustaw jako domyślne wychodzące',
|
||||||
725: '',
|
725: 'Kieruj cały ruch wychodzący przez tę bramę',
|
||||||
726: '',
|
726: 'Plik konfiguracyjny WireGuard',
|
||||||
727: '',
|
727: 'Przychodzący/Wychodzący',
|
||||||
728: '',
|
728: 'StartTunnel (Przychodzący/Wychodzący)',
|
||||||
729: '',
|
729: 'Ethernet',
|
||||||
730: '',
|
730: 'Dodaj domenę',
|
||||||
731: '',
|
731: 'Domena publiczna',
|
||||||
732: '',
|
732: 'Domena prywatna',
|
||||||
733: '',
|
733: 'Ukryj',
|
||||||
734: '',
|
734: 'domyślne wychodzące',
|
||||||
735: '',
|
735: 'Certyfikat',
|
||||||
736: '',
|
736: 'Samopodpisany',
|
||||||
|
737: 'Przekierowanie portów',
|
||||||
|
738: 'Konfiguracja domeny',
|
||||||
|
739: 'DNS',
|
||||||
|
740: 'Instrukcje',
|
||||||
|
741: 'W rejestratorze domeny dla',
|
||||||
|
742: 'utwórz ten rekord DNS',
|
||||||
|
743: 'W bramie',
|
||||||
|
744: 'utwórz tę regułę przekierowania portów',
|
||||||
|
745: 'Port zewnętrzny',
|
||||||
|
746: 'Wewnętrzny IP',
|
||||||
|
747: 'Port wewnętrzny',
|
||||||
} satisfies i18n
|
} satisfies i18n
|
||||||
|
|||||||
@@ -89,6 +89,43 @@ if (errors.length > 0) {
|
|||||||
console.error(` ${rel}:${line} "${key}"`)
|
console.error(` ${rel}:${line} "${key}"`)
|
||||||
}
|
}
|
||||||
console.error()
|
console.error()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check that all numeric keys in en.ts exist in every non-English dictionary
|
||||||
|
const enNumericKeys = new Set()
|
||||||
|
for (const match of enSource.matchAll(/^\s+'[^']+?':\s*(\d+)/gm)) {
|
||||||
|
enNumericKeys.add(Number(match[1]))
|
||||||
|
}
|
||||||
|
|
||||||
|
const dictDir = join(root, 'projects/shared/src/i18n/dictionaries')
|
||||||
|
const otherLangs = ['de', 'es', 'fr', 'pl']
|
||||||
|
const dictErrors = []
|
||||||
|
|
||||||
|
for (const lang of otherLangs) {
|
||||||
|
const dictPath = join(dictDir, `${lang}.ts`)
|
||||||
|
const dictSource = readFileSync(dictPath, 'utf-8')
|
||||||
|
const dictKeys = new Set()
|
||||||
|
|
||||||
|
for (const match of dictSource.matchAll(/^\s*(\d+):/gm)) {
|
||||||
|
dictKeys.add(Number(match[1]))
|
||||||
|
}
|
||||||
|
|
||||||
|
const missing = [...enNumericKeys].filter(k => !dictKeys.has(k)).sort((a, b) => a - b)
|
||||||
|
|
||||||
|
if (missing.length > 0) {
|
||||||
|
dictErrors.push({ lang, missing })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dictErrors.length > 0) {
|
||||||
|
console.error(`\nMissing i18n dictionary keys:\n`)
|
||||||
|
for (const { lang, missing } of dictErrors) {
|
||||||
|
console.error(` ${lang}.ts is missing keys: ${missing.join(', ')}`)
|
||||||
|
}
|
||||||
|
console.error()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (errors.length > 0 || dictErrors.length > 0) {
|
||||||
process.exit(1)
|
process.exit(1)
|
||||||
} else {
|
} else {
|
||||||
console.log('All i18n keys are valid.')
|
console.log('All i18n keys are valid.')
|
||||||
|
|||||||
Reference in New Issue
Block a user