i18n - docs translations (#15724)
Created by Github action --------- Co-authored-by: Abdul Rahman <ar5438376@gmail.com> Co-authored-by: github-actions <github-actions@twenty.com>
This commit is contained in:
committed by
GitHub
parent
06d8c8c76a
commit
1bd1165d2e
@@ -35,7 +35,7 @@ jobs:
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
token: ${{ github.token }}
|
||||
ref: main
|
||||
ref: ${{ github.ref }}
|
||||
|
||||
- name: Setup i18n branch
|
||||
run: |
|
||||
@@ -78,12 +78,15 @@ jobs:
|
||||
- name: Fix file permissions
|
||||
run: sudo chown -R runner:docker . || true
|
||||
|
||||
- name: Fix translated documentation links
|
||||
run: bash packages/twenty-docs/scripts/fix-translated-links.sh
|
||||
|
||||
- name: Check for changes and commit
|
||||
id: check_changes
|
||||
run: |
|
||||
git add .
|
||||
if ! git diff --staged --quiet --exit-code; then
|
||||
git commit -m "chore: update docs translations from Crowdin"
|
||||
git commit -m "chore: update docs translations from Crowdin and fix internal links"
|
||||
echo "changes_detected=true" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "changes_detected=false" >> $GITHUB_OUTPUT
|
||||
|
||||
@@ -111,9 +111,7 @@
|
||||
{
|
||||
"group": "Reporting",
|
||||
"icon": "chart-bar",
|
||||
"pages": [
|
||||
"user-guide/reporting/reporting-overview"
|
||||
]
|
||||
"pages": ["user-guide/reporting/reporting-overview"]
|
||||
},
|
||||
{
|
||||
"group": "Settings",
|
||||
@@ -133,9 +131,7 @@
|
||||
{
|
||||
"group": "Pricing",
|
||||
"icon": "credit-card",
|
||||
"pages": [
|
||||
"user-guide/pricing/billing-and-pricing-faq"
|
||||
]
|
||||
"pages": ["user-guide/pricing/billing-and-pricing-faq"]
|
||||
},
|
||||
{
|
||||
"group": "Resources",
|
||||
@@ -204,9 +200,7 @@
|
||||
},
|
||||
{
|
||||
"group": "Feedback",
|
||||
"pages": [
|
||||
"twenty-ui/progress-bar"
|
||||
]
|
||||
"pages": ["twenty-ui/progress-bar"]
|
||||
},
|
||||
{
|
||||
"group": "Input",
|
||||
@@ -266,10 +260,10 @@
|
||||
"language": "fr",
|
||||
"tabs": [
|
||||
{
|
||||
"tab": "User Guide",
|
||||
"tab": "Guide utilisateur",
|
||||
"groups": [
|
||||
{
|
||||
"group": "Getting Started",
|
||||
"group": "Prise en main",
|
||||
"icon": "rocket",
|
||||
"pages": [
|
||||
"fr/user-guide/introduction",
|
||||
@@ -283,7 +277,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "Data Model",
|
||||
"group": "Modèle de données",
|
||||
"icon": "database",
|
||||
"pages": [
|
||||
"fr/user-guide/data-model/customize-your-data-model",
|
||||
@@ -295,7 +289,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "CRM Essentials",
|
||||
"group": "Essentiels du CRM",
|
||||
"icon": "users",
|
||||
"pages": [
|
||||
"fr/user-guide/crm-essentials/contact-and-account-management",
|
||||
@@ -305,7 +299,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "Views",
|
||||
"group": "Vues",
|
||||
"icon": "table",
|
||||
"pages": [
|
||||
"fr/user-guide/views/kanban-views",
|
||||
@@ -313,7 +307,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "Workflows",
|
||||
"group": "Flux de travail",
|
||||
"icon": "bolt",
|
||||
"pages": [
|
||||
"fr/user-guide/workflows/getting-started-workflows",
|
||||
@@ -335,7 +329,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "Integrations & API",
|
||||
"group": "Intégrations et API",
|
||||
"icon": "plug",
|
||||
"pages": [
|
||||
"fr/user-guide/integrations-api/apis-overview",
|
||||
@@ -344,14 +338,12 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "Reporting",
|
||||
"group": "Rapports",
|
||||
"icon": "chart-bar",
|
||||
"pages": [
|
||||
"fr/user-guide/reporting/reporting-overview"
|
||||
]
|
||||
"pages": ["fr/user-guide/reporting/reporting-overview"]
|
||||
},
|
||||
{
|
||||
"group": "Settings",
|
||||
"group": "Paramètres",
|
||||
"icon": "gear",
|
||||
"pages": [
|
||||
"fr/user-guide/settings/profile-settings",
|
||||
@@ -366,14 +358,12 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "Pricing",
|
||||
"group": "Tarification",
|
||||
"icon": "credit-card",
|
||||
"pages": [
|
||||
"fr/user-guide/pricing/billing-and-pricing-faq"
|
||||
]
|
||||
"pages": ["fr/user-guide/pricing/billing-and-pricing-faq"]
|
||||
},
|
||||
{
|
||||
"group": "Resources",
|
||||
"group": "Ressources",
|
||||
"icon": "book-open",
|
||||
"pages": [
|
||||
"fr/user-guide/resources/glossary",
|
||||
@@ -383,20 +373,20 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"tab": "Developers",
|
||||
"tab": "Développeurs",
|
||||
"groups": [
|
||||
{
|
||||
"group": "Developers",
|
||||
"group": "Développeurs",
|
||||
"pages": []
|
||||
},
|
||||
{
|
||||
"group": "Getting Started",
|
||||
"group": "Prise en main",
|
||||
"icon": "rocket",
|
||||
"pages": [
|
||||
"fr/developers/introduction",
|
||||
"fr/developers/local-setup",
|
||||
{
|
||||
"group": "Self-Hosting",
|
||||
"group": "Auto-hébergement",
|
||||
"pages": [
|
||||
"fr/developers/self-hosting/docker-compose",
|
||||
"fr/developers/self-hosting/setup",
|
||||
@@ -406,7 +396,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "API and Webhooks",
|
||||
"group": "API et webhooks",
|
||||
"pages": [
|
||||
"fr/developers/api-and-webhooks/api",
|
||||
"fr/developers/api-and-webhooks/webhooks"
|
||||
@@ -415,12 +405,12 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "Contributing",
|
||||
"group": "Contribution",
|
||||
"icon": "code-branch",
|
||||
"pages": [
|
||||
"fr/developers/bug-and-requests",
|
||||
{
|
||||
"group": "Frontend Development",
|
||||
"group": "Développement frontend",
|
||||
"pages": [
|
||||
"fr/developers/frontend-development/storybook",
|
||||
{
|
||||
@@ -428,7 +418,7 @@
|
||||
"pages": [
|
||||
"fr/twenty-ui/introduction",
|
||||
{
|
||||
"group": "Display",
|
||||
"group": "Affichage",
|
||||
"pages": [
|
||||
"fr/twenty-ui/display/checkmark",
|
||||
"fr/twenty-ui/display/chip",
|
||||
@@ -439,13 +429,11 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "Feedback",
|
||||
"pages": [
|
||||
"fr/twenty-ui/progress-bar"
|
||||
]
|
||||
"group": "Retours",
|
||||
"pages": ["fr/twenty-ui/progress-bar"]
|
||||
},
|
||||
{
|
||||
"group": "Input",
|
||||
"group": "Saisie",
|
||||
"pages": [
|
||||
"fr/twenty-ui/input/buttons",
|
||||
"fr/twenty-ui/input/color-scheme",
|
||||
@@ -481,7 +469,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "Backend Development",
|
||||
"group": "Développement backend",
|
||||
"pages": [
|
||||
"fr/developers/backend-development/server-commands",
|
||||
"fr/developers/backend-development/feature-flags",
|
||||
|
||||
@@ -33,7 +33,7 @@ Gérez vos notes liées aux enregistrements efficacement en utilisant la fonctio
|
||||
|
||||
### Création automatique de notes
|
||||
|
||||
Utilisez [Workflows](/user-guide/workflows/getting-started-workflows) pour créer automatiquement des notes :
|
||||
Utilisez [Workflows](/fr/user-guide/workflows/getting-started-workflows) pour créer automatiquement des notes :
|
||||
|
||||
- **Intégration d'enregistreur d'appel** : Générez automatiquement des résumés de réunions à partir d'appels enregistrés
|
||||
- **Notes de transfert d'opportunité** : Créez automatiquement des résumés de cycle de vente lors du transfert de nouveaux clients aux équipes de mise en œuvre
|
||||
|
||||
@@ -37,7 +37,7 @@ Au-delà des ventes et de la réussite client, les tâches répondent à des bes
|
||||
|
||||
### Création automatisée de tâches
|
||||
|
||||
Utilisez [Workflows](/user-guide/workflows/getting-started-workflows) pour créer automatiquement des tâches :
|
||||
Utilisez [Workflows](/fr/user-guide/workflows/getting-started-workflows) pour créer automatiquement des tâches :
|
||||
|
||||
- **Déclencheurs de succès** : Créez automatiquement des tâches d'intégration assignées à l'équipe CS lors de la clôture des opportunités
|
||||
- **Rappels par email** : Configurez des rappels par email hebdomadaires pour les tâches à terminer cette semaine (envoyés tous les lundis)
|
||||
|
||||
@@ -93,7 +93,7 @@ Vous pouvez également masquer tous les champs et obtenir une vue d'ensemble de
|
||||
|
||||
### Automatisation avec les flux de travail
|
||||
|
||||
Utilisez [Flux de travail](/user-guide/workflows/getting-started-workflows) pour automatiser votre pipeline :
|
||||
Utilisez [Flux de travail](/fr/user-guide/workflows/getting-started-workflows) pour automatiser votre pipeline :
|
||||
|
||||
- **Progression automatique des étapes** : Passez les affaires basées sur les activités.
|
||||
- **Notifications** : Alertez les membres de l'équipe des changements d'étapes.
|
||||
@@ -101,5 +101,5 @@ Utilisez [Flux de travail](/user-guide/workflows/getting-started-workflows) pour
|
||||
|
||||
### Multiples pipelines
|
||||
|
||||
Vous pouvez créer différents pipelines pour diverses lignes de métier, segments de marché ou équipes de vente spécialisées en créant de nouvelles vues. Chaque vue peut afficher différentes opportunités avec des filtres et étapes spécifiques adaptés à vos besoins. Découvrez comment créer ces vues dans notre guide de [Gestion des Vues](/user-guide/crm-essentials/view-management).
|
||||
Vous pouvez créer différents pipelines pour diverses lignes de métier, segments de marché ou équipes de vente spécialisées en créant de nouvelles vues. Chaque vue peut afficher différentes opportunités avec des filtres et étapes spécifiques adaptés à vos besoins. Découvrez comment créer ces vues dans notre guide de [Gestion des Vues](/fr/user-guide/crm-essentials/view-management).
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ Organise vos enregistrements en les regroupant en fonction d'un champ sélection
|
||||
|
||||
### Disposition Kanban
|
||||
|
||||
Un tableau visuel où chaque colonne représente une étape et chaque enregistrement apparaît comme une carte. Cet agencement est idéal pour gérer les pipelines et les flux de travail où les enregistrements passent par différentes étapes. Pour plus de détails sur l'utilisation des vues Kanban pour la gestion des pipelines, consultez notre article [Pipeline](/user-guide/crm-essentials/pipeline).
|
||||
Un tableau visuel où chaque colonne représente une étape et chaque enregistrement apparaît comme une carte. Cet agencement est idéal pour gérer les pipelines et les flux de travail où les enregistrements passent par différentes étapes. Pour plus de détails sur l'utilisation des vues Kanban pour la gestion des pipelines, consultez notre article [Pipeline](/fr/user-guide/crm-essentials/pipeline).
|
||||
|
||||
<div style={{padding:'69.01% 0 0 0', position:'relative', margin: '32px 0px 0px'}}>
|
||||
<iframe
|
||||
@@ -201,4 +201,4 @@ Pour modifier ou supprimer des vues, ouvrez le menu déroulant des vues et survo
|
||||
|
||||
Les vues enregistrées comme favoris apparaissent juste sous Paramètres dans votre navigation, vous donnant un accès instantané à vos vues les plus importantes. Utilisez le menu déroulant des vues pour organiser vos vues en les faisant glisser dans l'ordre qui convient le mieux à votre flux de travail.
|
||||
|
||||
Pour une organisation des données plus avancée, consultez notre section [Modèle de données](/user-guide/data-model/customize-your-data-model) pour en savoir plus sur la personnalisation des champs et des objets.
|
||||
Pour une organisation des données plus avancée, consultez notre section [Modèle de données](/fr/user-guide/data-model/customize-your-data-model) pour en savoir plus sur la personnalisation des champs et des objets.
|
||||
|
||||
@@ -119,5 +119,5 @@ Si vous obtenez une erreur lors de la définition de l'unicité, vérifiez les v
|
||||
|
||||
### Champs de Relation
|
||||
|
||||
- **Connecter les objets ensemble** : Les champs de relation lient les enregistrements de différents objets. Pour des informations détaillées sur la création et la gestion des relations, consultez notre article [Champs de Relation](/user-guide/data-model/relation-fields).
|
||||
- **Connecter les objets ensemble** : Les champs de relation lient les enregistrements de différents objets. Pour des informations détaillées sur la création et la gestion des relations, consultez notre article [Champs de Relation](/fr/user-guide/data-model/relation-fields).
|
||||
|
||||
|
||||
@@ -88,5 +88,5 @@ Les noms au singulier et au pluriel doivent être différents. Ceci est nécessa
|
||||
|
||||
<img src="/images/user-guide/objects/customize-fields.png"style={{width:'100%'}}/>
|
||||
|
||||
**Note :** Si vous n'êtes pas sûr qu'un nouvel objet ou champ soit nécessaire, consultez [cet article](/user-guide/data-model/customize-your-data-model) pour obtenir des conseils sur la conception de votre modèle de données.
|
||||
**Note :** Si vous n'êtes pas sûr qu'un nouvel objet ou champ soit nécessaire, consultez [cet article](/fr/user-guide/data-model/customize-your-data-model) pour obtenir des conseils sur la conception de votre modèle de données.
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@ Une fois créée, votre clé API fournit l'accès à votre documentation API per
|
||||
|
||||
Les webhooks permettent des mises à jour immédiates de votre URL spécifiée concernant des changements ou événements liés à vos données client.
|
||||
|
||||
Par exemple, lorsqu'une Opportunité passe à "Fermé Gagné", un webhook peut automatiquement déclencher la création d'une facture dans votre système comptable. Notez que ce type d'automatisation peut également être réalisé à l'aide de la fonctionnalité [Workflows de Twenty](/user-guide/workflows/getting-started-workflows), qui offre des déclencheurs basés sur des mises à jour de champs pour l'automatisation interne.
|
||||
Par exemple, lorsqu'une Opportunité passe à "Fermé Gagné", un webhook peut automatiquement déclencher la création d'une facture dans votre système comptable. Notez que ce type d'automatisation peut également être réalisé à l'aide de la fonctionnalité [Workflows de Twenty](/fr/user-guide/workflows/getting-started-workflows), qui offre des déclencheurs basés sur des mises à jour de champs pour l'automatisation interne.
|
||||
|
||||
Les Webhooks sont idéaux pour l'intégration avec les systèmes externes, tandis que les Workflows prennent en charge à la fois l'automatisation interne et les connexions via des déclencheurs de webhook, des nœuds de code et des nœuds HTTP.
|
||||
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
"license": "AGPL-3.0",
|
||||
"scripts": {
|
||||
"dev": "mintlify dev",
|
||||
"build": "mintlify build"
|
||||
"build": "mintlify build",
|
||||
"fix-links": "bash scripts/fix-translated-links.sh"
|
||||
},
|
||||
"dependencies": {
|
||||
"mintlify": "latest"
|
||||
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Post-processing script to fix internal links in translated documentation
|
||||
# This script adds the locale prefix to all internal documentation links
|
||||
# Works for any language by automatically detecting language directories
|
||||
|
||||
set -e
|
||||
|
||||
if [ -d "packages/twenty-docs" ]; then
|
||||
DOCS_DIR="packages/twenty-docs"
|
||||
elif [ -d "fr" ] || [ -d "user-guide" ]; then
|
||||
DOCS_DIR="."
|
||||
else
|
||||
echo "❌ Error: Cannot find documentation directory"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "🔧 Fixing internal links in translated documentation..."
|
||||
|
||||
EXCLUDED_DIRS="images|snippets|user-guide|developers|twenty-ui|node_modules|scripts"
|
||||
|
||||
for lang_dir in "$DOCS_DIR"/*/ ; do
|
||||
lang_code=$(basename "$lang_dir")
|
||||
|
||||
if [[ "$lang_code" =~ ^($EXCLUDED_DIRS)$ ]]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ ! -d "$lang_dir" ] || [ -z "$(ls -A "$lang_dir")" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "📝 Processing $lang_code documentation..."
|
||||
|
||||
find "$lang_dir" -name "*.mdx" -type f -exec sed -i.bak \
|
||||
"s|href=\"/user-guide/|href=\"/$lang_code/user-guide/|g" {} \;
|
||||
find "$lang_dir" -name "*.mdx" -type f -exec sed -i.bak \
|
||||
"s|href=\"/developers/|href=\"/$lang_code/developers/|g" {} \;
|
||||
find "$lang_dir" -name "*.mdx" -type f -exec sed -i.bak \
|
||||
"s|href=\"/twenty-ui/|href=\"/$lang_code/twenty-ui/|g" {} \;
|
||||
|
||||
find "$lang_dir" -name "*.mdx" -type f -exec sed -i.bak \
|
||||
"s|](/user-guide/|](/$lang_code/user-guide/|g" {} \;
|
||||
find "$lang_dir" -name "*.mdx" -type f -exec sed -i.bak \
|
||||
"s|](/developers/|](/$lang_code/developers/|g" {} \;
|
||||
find "$lang_dir" -name "*.mdx" -type f -exec sed -i.bak \
|
||||
"s|](/twenty-ui/|](/$lang_code/twenty-ui/|g" {} \;
|
||||
|
||||
find "$lang_dir" -name "*.bak" -type f -delete
|
||||
|
||||
echo "✅ $lang_code documentation links fixed"
|
||||
done
|
||||
|
||||
echo "🎉 All translated links have been fixed!"
|
||||
|
||||
Reference in New Issue
Block a user