Skip to content
7 changes: 4 additions & 3 deletions view/app/containers/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,10 @@ export default function ContainersPage() {
>
<PageLayout maxWidth="6xl" padding="md" spacing="lg" className="relative z-10">
<div className="flex items-center justify-between mb-6 flex-wrap gap-4">
<span>
<TypographyH1 className="text-2xl font-bold">{t('containers.title')}</TypographyH1>
</span>
<div>
<TypographyH1>{t('containers.title')}</TypographyH1>
<TypographyMuted>{t('containers.description')}</TypographyMuted>
</div>
<div className="flex items-center gap-2 flex-wrap">
<Button onClick={handleRefresh} variant="outline" size="sm" disabled={isRefreshing || isFetching}>
{isRefreshing || isFetching ? (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ function ListRepositories() {
onSortChange={onSortChange}
sortOptions={sortOptions}
label={t('selfHost.repositories.title')}
description={t('selfHost.repositories.description')}
className="mt-5 mb-5"
/>
{renderGithubRepositories()}
Expand Down
3 changes: 3 additions & 0 deletions view/components/layout/dashboard-page-header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ interface DashboardUtilityHeaderProps<T> {
onSortChange: (newSort: SortOption<T>) => void;
sortOptions: SortOption<T>[];
label: string;
description: string;
searchPlaceHolder?: string;
children?: React.ReactNode;
}
Expand All @@ -44,12 +45,14 @@ export function DahboardUtilityHeader<T>({
onSortChange,
sortOptions,
label,
description,
children,
searchPlaceHolder = 'Search...'
}: DashboardUtilityHeaderProps<T>) {
return (
<div className={'space-y-6' + className}>
<TypographyH2 className='text-primary'>{label}</TypographyH2>
<TypographyMuted>{description}</TypographyMuted>
<div className="flex flex-col gap-4 sm:flex-row mt-4 justify-between items-center">
<div className="flex-grow">
<SearchBar
Expand Down
9 changes: 5 additions & 4 deletions view/lib/i18n/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
},
"containers": {
"title": "Containers",
"description": "Preview all the containers",
"description": "View and manage your running or stopped containers",
"list": "Container List",
"name": "Name",
"image": "Image",
Expand Down Expand Up @@ -190,7 +190,7 @@
},
"settings": {
"title": "Settings",
"description": "Manage your account",
"description": "Manage your account preferences and security options",
"tabs": {
"account": "Account",
"security": "Security",
Expand Down Expand Up @@ -375,7 +375,7 @@
"domains": {
"page": {
"title": "Domains",
"description": "Domains are used to deploy your applications",
"description": "Manage and configure your domains for deployment",
"noOrganization": {
"title": "No Organization Selected",
"description": "Please select an organization to view and manage domains."
Expand Down Expand Up @@ -807,7 +807,7 @@
"fileManager": {
"header": {
"title": "File Manager",
"subtitle": "Manage your files here"
"subtitle": "Browse, manage, and organize your files and directories"
},
"actions": {
"upload": "Upload File",
Expand Down Expand Up @@ -1252,6 +1252,7 @@
},
"repositories": {
"title": "Repositories",
"description": "View and manage your repository deployment settings",
"noRepositories": "No repositories found",
"search": {
"placeholder": "Search repositories..."
Expand Down
9 changes: 5 additions & 4 deletions view/lib/i18n/locales/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
},
"containers": {
"title": "Contenedores",
"description": "Vista previa de todos los contenedores",
"description": "Ver y administrar sus contenedores en ejecución o detenidos",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

LGTM! Verify other locales updated.

The Spanish translations for the description fields are well-formed and contextually appropriate. Ensure that the corresponding translation keys in en.json and fr.json have also been updated, as mentioned in the PR objectives.

Run the following script to verify all locale files have the required keys:

Also applies to: 192-192, 421-421, 797-797, 1213-1213


🏁 Script executed:

#!/bin/bash
# Description: Verify translation keys exist in all locale files

# Check for repositories.description in all locale files
echo "Checking repositories.description key:"
fd -e json . view/lib/i18n/locales/ --exec grep -l "repositories.description"

# Check for other updated description keys
echo -e "\nChecking other description keys:"
for key in "containers.description" "settings.description" "domains.page.description" "fileManager.header.subtitle"; do
  echo "Key: $key"
  fd -e json . view/lib/i18n/locales/ --exec grep -l "$key"
done

Length of output: 189


🏁 Script executed:

#!/bin/bash
DIR="view/lib/i18n/locales"
keys=("containers.description" "settings.description" "domains.page.description" "fileManager.header.subtitle" "repositories.description")

for file in "$DIR"/*.json; do
  echo "$file:"
  for key in "${keys[@]}"; do
    top="${key%%.*}"
    sub="${key#*.}"
    if jq -e --arg top "$top" --arg sub "$sub" 'has($top) and .[$top] | has($sub)' "$file" > /dev/null; then
      echo "  $key: found"
    else
      echo "  $key: missing"
    fi
  done
done

Length of output: 2771


🏁 Script executed:

#!/bin/bash
FILE="view/lib/i18n/locales/es.json"
echo "=== Top of $FILE ==="
sed -n '1,50p' "$FILE"
echo -e "\n=== Around error line 1311 in $FILE ==="
sed -n '1280,1360p' "$FILE"

Length of output: 3103


🏁 Script executed:

#!/usr/bin/env python3
import json, glob, os

keys = [
    "containers.description",
    "settings.description",
    "domains.page.description",
    "fileManager.header.subtitle",
    "repositories.description"
]
locale_dir = "view/lib/i18n/locales"

for filepath in sorted(glob.glob(os.path.join(locale_dir, "*.json"))):
    print(f"{os.path.basename(filepath)}:")
    try:
        data = json.load(open(filepath, encoding="utf-8"))
    except Exception as e:
        print(f"  Error parsing JSON: {e}")
        continue
    for key in keys:
        parts = key.split(".")
        d = data
        found = True
        for part in parts:
            if isinstance(d, dict) and part in d:
                d = d[part]
            else:
                found = False
                break
        print(f"  {key}: {'found' if found else 'missing'}")
    print()

Length of output: 654


🏁 Script executed:

#!/usr/bin/env bash
LOCALE_DIR="view/lib/i18n/locales"
keys=("containers.description" "settings.description" "domains.page.description" "fileManager.header.subtitle" "repositories.description")

for file in "$LOCALE_DIR"/*.json; do
  echo "Checking $file"
  python3 - "$file" << 'EOF'
import json, sys
path = sys.argv[1]
data = json.load(open(path, encoding="utf-8"))
keys = ["containers.description","settings.description","domains.page.description","fileManager.header.subtitle","repositories.description"]
for key in keys:
    d = data
    for part in key.split("."):
        if isinstance(d, dict) and part in d:
            d = d[part]
        else:
            print(f"{key}: missing")
            break
    else:
        print(f"{key}: found")
EOF
done

Length of output: 799


Add missing translation keys in all locales

  • domains.page.description
  • repositories.description
    These keys are absent from view/lib/i18n/locales/*.json. Add them with appropriate translations to en.json, es.json, fr.json, and kn.json.
🤖 Prompt for AI Agents
In view/lib/i18n/locales/es.json around line 18, the locale is missing keys
"domains.page.description" and "repositories.description"; add them with
appropriate Spanish translations (e.g., domains.page.description: "Ver y
administrar sus dominios" and repositories.description: "Ver y administrar sus
repositorios"); also add the same two keys to view/lib/i18n/locales/en.json,
fr.json and kn.json with appropriate translations for each locale (English:
"View and manage your domains" / "View and manage your repositories"; French:
"Afficher et gérer vos domaines" / "Afficher et gérer vos dépôts"; Kannada:
provide correct Kannada equivalents), ensuring JSON keys are added in the same
structure and any trailing commas / formatting follow existing file style.

"list": "Lista de Contenedores",
"name": "Nombre",
"image": "Imagen",
Expand Down Expand Up @@ -189,7 +189,7 @@
},
"settings": {
"title": "Configuración",
"description": "Administra tu cuenta",
"description": "Administre sus preferencias de cuenta y opciones de seguridad",
"tabs": {
"account": "Cuenta",
"security": "Seguridad",
Expand Down Expand Up @@ -418,7 +418,7 @@
},
"page": {
"title": "Servidor y Dominios",
"description": "Configura tus dominios",
"description": "Administre y configure sus dominios para la implementación",
"noOrganization": {
"title": "No hay Organización Seleccionada",
"description": "Por favor selecciona una organización para ver y gestionar dominios."
Expand Down Expand Up @@ -794,7 +794,7 @@
"fileManager": {
"header": {
"title": "Gestor de Archivos",
"subtitle": "Administra tus archivos aquí"
"subtitle": "Navegue, administre y organice sus archivos y directorios"
},
"contextMenu": {
"info": "Detalles",
Expand Down Expand Up @@ -1210,6 +1210,7 @@
},
"repositories": {
"title": "Repositorios",
"description": "Vea y administre la configuración de implementación de su repositorio",
"noRepositories": "No se encontraron repositorios",
"search": {
"placeholder": "Buscar repositorios..."
Expand Down
23 changes: 19 additions & 4 deletions view/lib/i18n/locales/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
},
"containers": {
"title": "Conteneurs",
"description": "Prévisualiser tous les conteneurs",
"description": "Afficher et gérer vos conteneurs en cours d’exécution ou arrêtés",
"list": "Liste des Conteneurs",
"name": "Nom",
"image": "Image",
Expand Down Expand Up @@ -190,7 +190,7 @@
},
"settings": {
"title": "Paramètres",
"description": "Gérez votre compte",
"description": "Gérer vos préférences de compte et vos options de sécurité",
"tabs": {
"account": "Compte",
"security": "Sécurité",
Expand Down Expand Up @@ -375,7 +375,7 @@
"domains": {
"page": {
"title": "Serveur et Domaines",
"description": "Configurez vos domaines",
"description": "Gérer et configurer vos domaines pour le déploiement",
"noOrganization": {
"title": "Aucune Organisation Sélectionnée",
"description": "Veuillez sélectionner une organisation pour voir et gérer les domaines."
Expand Down Expand Up @@ -795,7 +795,7 @@
"fileManager": {
"header": {
"title": "Gestionnaire de Fichiers",
"subtitle": "Gérez vos fichiers ici"
"subtitle": "Parcourir, gérer et organiser vos fichiers et répertoires"
},
"contextMenu": {
"info": "Détails",
Expand Down Expand Up @@ -1215,6 +1215,21 @@
"success": "Application GitHub créée avec succès !"
}
},
"repositories": {
"title": "Référentiels",
"description": "Affichez et gérez les paramètres de déploiement de votre référentiel",
"noRepositories": "Aucun référentiel trouvé",
"search": {
"placeholder": "Rechercher des référentiels..."
},
"sort": {
"name": "Nom",
"created": "Créé",
"updated": "Mis à jour",
"stars": "Étoiles"
}
},

"repositoryCard": {
"viewOnGithub": "Voir sur GitHub",
"unnamed": "Dépôt Sans Nom",
Expand Down
9 changes: 5 additions & 4 deletions view/lib/i18n/locales/kn.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
},
"containers": {
"title": "ಕನ್ಟೇನರ್ಗಳು",
"description": "ಎಲ್ಲಾ ಕಾಂಟೈನರ್‌ಗಳ ಪೂರ್ವಾವಲೋಕನ",
"description": "ನಡೆಯುತ್ತಿರುವ ಅಥವಾ ನಿಲ್ಲಿಸಿದ ನಿಮ್ಮ ಕಂಟೈನರ್‌ಗಳನ್ನು ವೀಕ್ಷಿಸಿ ಮತ್ತು ನಿರ್ವಹಿಸಿ",
"list": "ಕನ್ಟೇನರ್ ಪಟ್ಟಿ",
"name": "ಹೆಸರು",
"image": "ಚಿತ್ರ",
Expand Down Expand Up @@ -190,7 +190,7 @@
},
"settings": {
"title": "ಸೆಟ್ಟಿಂಗ್ಗಳು",
"description": "ನಿಮ್ಮ ಖಾತೆಯನ್ನು ನಿರ್ವಹಿಸಿ",
"description": "ನಿಮ್ಮ ಖಾತೆ ಆದ್ಯತೆಗಳು ಮತ್ತು ಭದ್ರತಾ ಆಯ್ಕೆಗಳನ್ನು ನಿರ್ವಹಿಸಿ",
"tabs": {
"account": "ಖಾತೆ",
"security": "ಸುರಕ್ಷತೆ",
Expand Down Expand Up @@ -375,7 +375,7 @@
"domains": {
"page": {
"title": "ಸರ್ವರ್ ಮತ್ತು ಡೊಮೇನ್‌ಗಳು",
"description": "ನಿಮ್ಮ ಡೊಮೇನ್‌ಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ",
"description": "ಅನುಸ್ಥಾಪನೆಗಾಗಿ ನಿಮ್ಮ ಡೊಮೇನ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ ಮತ್ತು ಸಂರಚಿಸಿ",
"noOrganization": {
"title": "ಯಾವುದೇ ಸಂಸ್ಥೆ ಆಯ್ಕೆಮಾಡಲಾಗಿಲ್ಲ",
"description": "ಡೊಮೇನ್‌ಗಳನ್ನು ವೀಕ್ಷಿಸಲು ಮತ್ತು ನಿರ್ವಹಿಸಲು ದಯವಿಟ್ಟು ಸಂಸ್ಥೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ."
Expand Down Expand Up @@ -791,7 +791,7 @@
"fileManager": {
"header": {
"title": "ಫೈಲ್ ಮ್ಯಾನೇಜರ್",
"subtitle": "ನಿಮ್ಮ ಫೈಲ್‌ಗಳನ್ನು ಇಲ್ಲಿ ನಿರ್ವಹಿಸಿ"
"subtitle": "ನಿಮ್ಮ ಕಡತಗಳು ಮತ್ತು ಡೈರೆಕ್ಟರಿಗಳನ್ನು ಬ್ರೌಸ್ ಮಾಡಿ, ನಿರ್ವಹಿಸಿ ಮತ್ತು ವ್ಯವಸ್ಥೆಗೊಳಿಸಿ"
},
"contextMenu": {
"info": "ವಿವರ",
Expand Down Expand Up @@ -1211,6 +1211,7 @@
},
"repositories": {
"title": "ರೆಪೊಸಿಟರಿಗಳು",
"description": "ನಿಮ್ಮ ರೆಪೊಸಿಟರಿಯ ನಿಯೋಜನೆ ಸಂಯೋಜನೆಗಳನ್ನು ವೀಕ್ಷಿಸಿ ಮತ್ತು ನಿರ್ವಹಿಸಿ",
"noRepositories": "ಯಾವುದೇ ರೆಪೊಸಿಟರಿಗಳು ಕಂಡುಬಂದಿಲ್ಲ",
"search": {
"placeholder": "ರೆಪೊಸಿಟರಿಗಳನ್ನು ಹುಡುಕಿ..."
Expand Down