浏览代码

Added Fr language and added missing translation keys (#66)

* Added Fr language and added missing translation keys

* forgotten key

* forgotten key

* fix
Cyril59310 1 年之前
父节点
当前提交
03bc2b6a34

+ 1 - 1
frontend/src/components/Container.vue

@@ -27,7 +27,7 @@
         <div v-if="isEditMode" class="mt-2">
         <div v-if="isEditMode" class="mt-2">
             <button class="btn btn-normal me-2" @click="showConfig = !showConfig">
             <button class="btn btn-normal me-2" @click="showConfig = !showConfig">
                 <font-awesome-icon icon="edit" />
                 <font-awesome-icon icon="edit" />
-                Edit
+                {{ $t("Edit") }}
             </button>
             </button>
             <button v-if="false" class="btn btn-normal me-2">Rename</button>
             <button v-if="false" class="btn btn-normal me-2">Rename</button>
             <button class="btn btn-danger me-2" @click="remove">
             <button class="btn btn-danger me-2" @click="remove">

+ 3 - 3
frontend/src/components/NetworkInput.vue

@@ -1,6 +1,6 @@
 <template>
 <template>
     <div>
     <div>
-        <h5>Internal Networks</h5>
+        <h5>{{ $t("Internal Networks") }}</h5>
         <ul class="list-group">
         <ul class="list-group">
             <li v-for="(networkRow, index) in networkList" :key="index" class="list-group-item">
             <li v-for="(networkRow, index) in networkList" :key="index" class="list-group-item">
                 <input v-model="networkRow.key" type="text" class="no-bg domain-input" placeholder="Network name..." />
                 <input v-model="networkRow.key" type="text" class="no-bg domain-input" placeholder="Network name..." />
@@ -10,10 +10,10 @@
 
 
         <button class="btn btn-normal btn-sm mt-3 me-2" @click="addField">{{ $t("addInternalNetwork") }}</button>
         <button class="btn btn-normal btn-sm mt-3 me-2" @click="addField">{{ $t("addInternalNetwork") }}</button>
 
 
-        <h5 class="mt-3">External Networks</h5>
+        <h5 class="mt-3">{{ $t("External Networks") }}</h5>
 
 
         <div v-if="externalNetworkList.length === 0">
         <div v-if="externalNetworkList.length === 0">
-            No External Networks
+            {{ $t("No External Networks") }}
         </div>
         </div>
 
 
         <div v-for="(networkName, index) in externalNetworkList" :key="networkName" class="form-check form-switch my-3">
         <div v-for="(networkName, index) in externalNetworkList" :key="networkName" class="form-check form-switch my-3">

+ 1 - 1
frontend/src/components/settings/General.vue

@@ -50,7 +50,7 @@
                         placeholder="localhost"
                         placeholder="localhost"
                     />
                     />
                     <button class="btn btn-outline-primary" type="button" @click="autoGetPrimaryHostname">
                     <button class="btn btn-outline-primary" type="button" @click="autoGetPrimaryHostname">
-                        {{ $t("Auto Get") }}
+                        {{ $t("autoGet") }}
                     </button>
                     </button>
                 </div>
                 </div>
 
 

+ 1 - 0
frontend/src/i18n.ts

@@ -3,6 +3,7 @@ import { createI18n } from "vue-i18n/dist/vue-i18n.esm-browser.prod.js";
 import en from "./lang/en.json";
 import en from "./lang/en.json";
 
 
 const languageList = {
 const languageList = {
+    "fr": "Français",
 
 
 };
 };
 
 

+ 45 - 2
frontend/src/lang/en.json

@@ -1,7 +1,10 @@
 {
 {
     "languageName": "English",
     "languageName": "English",
+    "Create your admin account": "Create your admin account",
     "authIncorrectCreds": "Incorrect username or password.",
     "authIncorrectCreds": "Incorrect username or password.",
     "PasswordsDoNotMatch": "Passwords do not match.",
     "PasswordsDoNotMatch": "Passwords do not match.",
+    "Repeat Password": "Repeat Password",
+    "Create": "Create",
     "signedInDisp": "Signed in as {0}",
     "signedInDisp": "Signed in as {0}",
     "signedInDispDisabled": "Auth Disabled.",
     "signedInDispDisabled": "Auth Disabled.",
     "home": "Home",
     "home": "Home",
@@ -43,11 +46,51 @@
     "addContainer": "Add Container",
     "addContainer": "Add Container",
     "addNetwork": "Add Network",
     "addNetwork": "Add Network",
     "disableauth.message1": "Are you sure want to <strong>disable authentication</strong>?",
     "disableauth.message1": "Are you sure want to <strong>disable authentication</strong>?",
-    "disableauth.message2": "It is designed for scenarios <strong>where you intend to implement third-party authentication</strong> in front of Uptime Kuma such as Cloudflare Access, Authelia or other authentication mechanisms.",
+    "disableauth.message2": "It is designed for scenarios <strong>where you intend to implement third-party authentication</strong> in front of Dockge such as Cloudflare Access, Authelia or other authentication mechanisms.",
     "passwordNotMatchMsg": "The repeat password does not match.",
     "passwordNotMatchMsg": "The repeat password does not match.",
     "autoGet": "Auto Get",
     "autoGet": "Auto Get",
     "add": "Add",
     "add": "Add",
+    "Edit": "Edit",
     "applyToYAML": "Apply to YAML",
     "applyToYAML": "Apply to YAML",
     "createExternalNetwork": "Create",
     "createExternalNetwork": "Create",
-    "addInternalNetwork": "Add"
+    "addInternalNetwork": "Add",
+    "Save": "Sauvegarder",
+    "Language": "Language",
+    "Current User": "Current User",
+    "Change Password": "Change Password",
+    "Current Password": "Current Password",
+    "New Password": "New Password",
+    "Repeat New Password": "Repeat New Password",
+    "Update Password": "Update Password",
+    "Advanced": "Advanced",
+    "Please use this option carefully!": "Please use this option carefully!",
+    "Enable Auth": "Enable Auth",
+    "Disable Auth": "Disable Auth",
+    "I understand, please disable": "I understand, please disable",
+    "Leave": "Leave",
+    "Frontend Version": "Frontend Version",
+    "Check Update On GitHub": "Check Update On GitHub",
+    "Show update if available": "Show update if available",
+    "Also check beta release": "Also check beta release",
+    "Remember me": "Remember me",
+    "Login": "Login",
+    "Username": "Username",
+    "Password": "Password",
+    "Settings": "Settings",
+    "Logout": "Logout",
+    "Lowercase only": "Lowercase only",
+    "Convert to Compose": "Convert to Compose",
+    "Docker Run": "Docker Run",
+    "active": "active",
+    "exited": "exited",
+    "inactive": "inactive",
+    "Appearance": "Appearance",
+    "Security": "Security",
+    "About": "About",
+    "Allowed commands:": "Allowed commands:",
+    "Internal Networks": "Internal Networks",
+    "External Networks": "External Networks",
+    "No External Networks": "No External Networks"
+
+
 }
 }

+ 95 - 0
frontend/src/lang/fr.json

@@ -0,0 +1,95 @@
+{
+    "languageName": "Francais",
+    "Create your admin account": "Créez votre compte administrateur",
+    "authIncorrectCreds": "identifiant ou mot de passe incorrect.",
+    "Repeat Password": "Répéter le mot de passe",
+    "PasswordsDoNotMatch": "Les mots de passe ne correspondent pas.",
+    "Create": "Créer",
+    "signedInDisp": "Connecté en tant que {0}",
+    "signedInDispDisabled": "Authentification désactivée.",
+    "home": "Accueil",
+    "console": "Console",
+    "registry": "Registre",
+    "compose": "Compose",
+    "addFirstStackMsg": "Créez votre première pile!",
+    "stackName" : "Nom de la pile",
+    "deployStack": "Déployer",
+    "deleteStack": "Supprimer",
+    "stopStack": "Arrêter",
+    "restartStack": "Redémarrer",
+    "updateStack": "Mettre à jour",
+    "startStack": "Démarrer",
+    "editStack": "Modifier",
+    "discardStack": "Ignorer",
+    "saveStackDraft": "Sauvegarder",
+    "notAvailableShort" : "N/A",
+    "deleteStackMsg": "Êtes-vous sûr de vouloir supprimer cette pile ?",
+    "stackNotManagedByDockgeMsg": "Cette pile n'est pas gérée par Dockge.",
+    "primaryHostname": "Nom d'hôte principal",
+    "general": "Générale",
+    "container": "Conteneur | Conteneurs",
+    "scanFolder": "Analyser le dossier des piles",
+    "dockerImage": "Image",
+    "restartPolicyUnlessStopped": "Sauf arrêt",
+    "restartPolicyAlways": "Toujours",
+    "restartPolicyOnFailure": "En cas d'échec",
+    "restartPolicyNo": "Non",
+    "environmentVariable": "Variable d'environnement | Variables d'environnement",
+    "restartPolicy": "Politique de redémarrage",
+    "containerName": "Nom du conteneur",
+    "port": "Port | Ports",
+    "volume": "Volume | Volumes",
+    "network": "Réseau | Réseaux",
+    "dependsOn": "Dépendance du conteneur | Dépendances du conteneur",
+    "addListItem": "Ajouter {0}",
+    "deleteContainer": "Supprimer",
+    "addContainer": "Ajouter un conteneur",
+    "addNetwork": "Ajouter un réseau",
+    "disableauth.message1": "Voulez-vous vraiment <strong>désactiver l'authentification</strong> ?",
+    "disableauth.message2": "Il est conçu pour les scénarios <strong>dans lesquels vous avez l'intention d'implémenter une authentification tierce</strong> devant Dockge, comme Cloudflare Access, Authelia ou d'autres mécanismes d'authentification.",
+    "passwordNotMatchMsg": "Le mot de passe de confirmation ne correspond pas.",
+    "autoGet": "Obtention automatique",
+    "add": "Ajouter",
+    "Edit": "Modifier",
+    "applyToYAML": "Appliquer à YAML",
+    "createExternalNetwork": "Créer",
+    "addInternalNetwork": "Ajouter",
+    "Save": "Enregistrer",
+    "Language": "Langue",
+    "Current User": "Utilisateur Actuel",
+    "Change Password": "Changer le Mot de Passe",
+    "Current Password": "Mot de passe actuel",
+    "New Password": "Nouveau Mot de Passe",
+    "Repeat New Password": "Répéter le Nouveau Mot de Passe",
+    "Update Password": "Mettre à Jour le Mot de Passe",
+    "Advanced": "Avancé",
+    "Please use this option carefully!": "Veuillez utiliser cette option avec précaution !",
+    "Enable Auth": "Activer l'Authentification",
+    "Disable Auth": "Désactiver l'Authentification",
+    "I understand, please disable": "Je comprends, veuillez désactiver",
+    "Leave": "Quitter",
+    "Frontend Version": "Version Frontend",
+    "Check Update On GitHub": "Vérifier la Mise à Jour sur GitHub",
+    "Show update if available": "Afficher la mise à jour si disponible",
+    "Also check beta release": "Vérifier également la version bêta",
+    "Remember me": "Se souvenir de moi",
+    "Login": "Connexion",
+    "Username": "Nom d'utilisateur",
+    "Password": "Mot de Passe",
+    "Settings": "Paramètres",
+    "Logout": "Déconnexion",
+    "Lowercase only": "Minuscules uniquement",
+    "Convert to Compose": "Convertir en Compose",
+    "Docker Run": "Exécution Docker",
+    "active": "actif",
+    "exited": "arrêté",
+    "inactive": "inactif",
+    "Appearance": "Apparence",
+    "Security": "Sécurité",
+    "About": "À propos",
+    "Allowed commands:": "Commandes autorisées:",
+    "Internal Networks": "Réseaux Internes",
+    "External Networks": "Réseaux Externes",
+    "No External Networks": "Aucun Réseau Externe"
+
+}

+ 1 - 1
frontend/src/pages/Compose.vue

@@ -71,7 +71,7 @@
                             <div>
                             <div>
                                 <label for="name" class="form-label">{{ $t("stackName") }}</label>
                                 <label for="name" class="form-label">{{ $t("stackName") }}</label>
                                 <input id="name" v-model="stack.name" type="text" class="form-control" required @blur="stackNameToLowercase">
                                 <input id="name" v-model="stack.name" type="text" class="form-control" required @blur="stackNameToLowercase">
-                                <div class="form-text">Lowercase only</div>
+                                <div class="form-text">{{ $t("Lowercase only") }}</div>
                             </div>
                             </div>
                         </div>
                         </div>
                     </div>
                     </div>

+ 1 - 1
frontend/src/pages/Console.vue

@@ -5,7 +5,7 @@
 
 
             <div>
             <div>
                 <p>
                 <p>
-                    Allowed commands:
+                    {{ $t("Allowed commands:") }}
                     <template v-for="(command, index) in allowedCommandList" :key="command">
                     <template v-for="(command, index) in allowedCommandList" :key="command">
                         <code>{{ command }}</code>
                         <code>{{ command }}</code>
 
 

+ 2 - 2
frontend/src/pages/DashboardHome.vue

@@ -22,12 +22,12 @@
                 </div>
                 </div>
             </div>
             </div>
 
 
-            <h2 class="mb-3">Docker Run</h2>
+            <h2 class="mb-3">{{ $t("Docker Run") }}</h2>
             <div class="mb-3">
             <div class="mb-3">
                 <textarea id="name" v-model="dockerRunCommand" type="text" class="form-control docker-run" required placeholder="docker run ..."></textarea>
                 <textarea id="name" v-model="dockerRunCommand" type="text" class="form-control docker-run" required placeholder="docker run ..."></textarea>
             </div>
             </div>
 
 
-            <button class="btn-normal btn" @click="convertDockerRun">Convert to Compose</button>
+            <button class="btn-normal btn" @click="convertDockerRun">{{ $t("Convert to Compose") }}</button>
         </div>
         </div>
     </transition>
     </transition>
     <router-view ref="child" />
     <router-view ref="child" />

+ 1 - 1
frontend/src/pages/Settings.vue

@@ -75,7 +75,7 @@ export default {
         subMenus() {
         subMenus() {
             return {
             return {
                 general: {
                 general: {
-                    title: this.$t("General"),
+                    title: this.$t("general"),
                 },
                 },
                 appearance: {
                 appearance: {
                     title: this.$t("Appearance"),
                     title: this.$t("Appearance"),