From 6209892a28bea1c56986fbb8f0fd0c0fe6da35d0 Mon Sep 17 00:00:00 2001 From: kayiganwa04 Date: Thu, 26 Mar 2026 13:08:13 +0200 Subject: [PATCH 1/2] feat: mdae configuration of french language and translated adoption section --- docs/.vuepress/config.js | 140 +++- docs/.vuepress/enhanceApp.js | 33 +- docs/.vuepress/theme/layouts/404.vue | 37 +- .../Onboarding/business-onboarding.md | 20 + .../Onboarding/onboarding-introduction.md | 5 + .../Onboarding/technical-onboarding.md | 247 +++++++ .../Portalv2/accessing-the-portal.md | 92 +++ .../Portalv2/busops-portal-introduction.md | 23 + .../Portalv2/checking-settlement-details.md | 52 ++ .../enabling-disabling-transactions.md | 27 + .../Portalv2/managing-windows.md | 50 ++ .../monitoring-dfsp-financial-details.md | 24 + .../Portalv2/recording-funds-in-out.md | 31 + .../Portalv2/searching-for-transfer-data.md | 189 +++++ .../Portalv2/settlement-business-process.md | 68 ++ .../HubOperations/Portalv2/settling.md | 67 ++ .../HubOperations/Portalv2/updating-ndc.md | 22 + .../RBAC/Role-based-access-control.md | 311 ++++++++ .../Settlement/ledgers-in-the-hub.md | 367 +++++++++ .../Settlement/settlement-basic-concepts.md | 129 ++++ .../settlement-management-introduction.md | 7 + .../TechOps/change-management.md | 388 ++++++++++ .../HubOperations/TechOps/defect-triage.md | 93 +++ .../incident-management-escalation-matrix.md | 51 ++ .../TechOps/incident-management.md | 695 ++++++++++++++++++ .../HubOperations/TechOps/key-terms-kpis.md | 80 ++ .../TechOps/problem-management.md | 131 ++++ .../TechOps/release-management.md | 108 +++ .../TechOps/service-level-agreements.md | 35 + .../TechOps/tech-ops-introduction.md | 31 + .../Scheme/platform-operating-guideline.md | 553 ++++++++++++++ .../adoption/Scheme/scheme-business-rules.md | 525 +++++++++++++ docs/fr/adoption/Scheme/scheme-key-choices.md | 407 ++++++++++ .../Scheme/scheme-participation-agreement.md | 76 ++ .../Scheme/scheme-uniform-glossary.md | 299 ++++++++ .../guides/Role-based-access-control.md | 297 ++++++++ docs/fr/adoption/index.md | 42 ++ .../Iso20022/v1.0/MarketPracticeDocument.md | 67 +- 38 files changed, 5749 insertions(+), 70 deletions(-) create mode 100644 docs/fr/adoption/HubOperations/Onboarding/business-onboarding.md create mode 100644 docs/fr/adoption/HubOperations/Onboarding/onboarding-introduction.md create mode 100644 docs/fr/adoption/HubOperations/Onboarding/technical-onboarding.md create mode 100644 docs/fr/adoption/HubOperations/Portalv2/accessing-the-portal.md create mode 100644 docs/fr/adoption/HubOperations/Portalv2/busops-portal-introduction.md create mode 100644 docs/fr/adoption/HubOperations/Portalv2/checking-settlement-details.md create mode 100644 docs/fr/adoption/HubOperations/Portalv2/enabling-disabling-transactions.md create mode 100644 docs/fr/adoption/HubOperations/Portalv2/managing-windows.md create mode 100644 docs/fr/adoption/HubOperations/Portalv2/monitoring-dfsp-financial-details.md create mode 100644 docs/fr/adoption/HubOperations/Portalv2/recording-funds-in-out.md create mode 100644 docs/fr/adoption/HubOperations/Portalv2/searching-for-transfer-data.md create mode 100644 docs/fr/adoption/HubOperations/Portalv2/settlement-business-process.md create mode 100644 docs/fr/adoption/HubOperations/Portalv2/settling.md create mode 100644 docs/fr/adoption/HubOperations/Portalv2/updating-ndc.md create mode 100644 docs/fr/adoption/HubOperations/RBAC/Role-based-access-control.md create mode 100644 docs/fr/adoption/HubOperations/Settlement/ledgers-in-the-hub.md create mode 100644 docs/fr/adoption/HubOperations/Settlement/settlement-basic-concepts.md create mode 100644 docs/fr/adoption/HubOperations/Settlement/settlement-management-introduction.md create mode 100644 docs/fr/adoption/HubOperations/TechOps/change-management.md create mode 100644 docs/fr/adoption/HubOperations/TechOps/defect-triage.md create mode 100644 docs/fr/adoption/HubOperations/TechOps/incident-management-escalation-matrix.md create mode 100644 docs/fr/adoption/HubOperations/TechOps/incident-management.md create mode 100644 docs/fr/adoption/HubOperations/TechOps/key-terms-kpis.md create mode 100644 docs/fr/adoption/HubOperations/TechOps/problem-management.md create mode 100644 docs/fr/adoption/HubOperations/TechOps/release-management.md create mode 100644 docs/fr/adoption/HubOperations/TechOps/service-level-agreements.md create mode 100644 docs/fr/adoption/HubOperations/TechOps/tech-ops-introduction.md create mode 100644 docs/fr/adoption/Scheme/platform-operating-guideline.md create mode 100644 docs/fr/adoption/Scheme/scheme-business-rules.md create mode 100644 docs/fr/adoption/Scheme/scheme-key-choices.md create mode 100644 docs/fr/adoption/Scheme/scheme-participation-agreement.md create mode 100644 docs/fr/adoption/Scheme/scheme-uniform-glossary.md create mode 100644 docs/fr/adoption/guides/Role-based-access-control.md create mode 100644 docs/fr/adoption/index.md diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index 5ca3259ad..1e177a305 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -52,31 +52,42 @@ module.exports = { sidebarDepth: 2, lastUpdated: true, footerCopyright: 'Apache 2.0 Licensed | Copyright © 2020 - 2024 Mojaloop Foundation', - // PR Preview configuration isPrPreview: isPrPreview, prNumber: process.env.VUEPRESS_PR_NUMBER || '', - nav: [ - { - text: 'Adoption', - link: '/adoption/', - }, - { - text: 'Community', - link: '/community/' - }, - { - text: 'Technical', - link: '/technical/' + locales: { + '/': { + selectText: 'Languages', + label: 'English', + editLinkText: 'Edit this page on GitHub', + lastUpdated: 'Last Updated', + nav: [ + { text: 'Adoption', link: '/adoption/' }, + { text: 'Community', link: '/community/' }, + { text: 'Technical', link: '/technical/' }, + { text: 'Product', link: '/product/' }, + { text: 'Training Program', link: 'https://mojaloop.io/mojaloop-training-program/' } + ], }, - { - text: 'Product', - link: '/product/' - }, - - { - text: 'Training Program', - link: 'https://mojaloop.io/mojaloop-training-program/' + '/fr/': { + selectText: 'Langues', + label: 'Français', + editLinkText: 'Modifier cette page sur GitHub', + lastUpdated: 'Dernière mise à jour', + nav: [ + { text: 'Adoption', link: '/fr/adoption/' }, + { text: 'Communauté', link: '/fr/community/' }, + { text: 'Technique', link: '/fr/technical/' }, + { text: 'Produit', link: '/fr/product/' }, + { text: 'Programme de formation', link: 'https://mojaloop.io/mojaloop-training-program/' } + ], } + }, + nav: [ + { text: 'Adoption', link: '/adoption/' }, + { text: 'Community', link: '/community/' }, + { text: 'Technical', link: '/technical/' }, + { text: 'Product', link: '/product/' }, + { text: 'Training Program', link: 'https://mojaloop.io/mojaloop-training-program/' } ], // Ref: https://vuepress.vuejs.org/theme/default-theme-config.html#sidebar sidebar: { @@ -1162,6 +1173,89 @@ module.exports = { ['features/invariants', 'Invariants'], ['features/development', 'Continuous Development']] } + ], + '/fr/adoption/': [ + { + title: 'Guide du Schéma', + collapsable: false, + sidebarDepth: 2, + children: [ + ['Scheme/platform-operating-guideline', 'Modèle de Directive Opérationnelle de la Plateforme'], + ['Scheme/scheme-business-rules', 'Modèle de Règles Commerciales du Schéma'], + ['Scheme/scheme-key-choices', 'Choix Clés du Schéma'], + ['Scheme/scheme-participation-agreement', 'Modèle d\'Accord de Participation au Schéma'], + ['Scheme/scheme-uniform-glossary', 'Modèle de Glossaire Uniforme'], + ] + }, + { + title: 'Guide des Opérations du Hub', + collapsable: false, + sidebarDepth: 1, + children: [ + { + title: 'Guide des Opérations Techniques', + collapsable: true, + sidebarDepth: 2, + children: [ + 'HubOperations/TechOps/tech-ops-introduction', + 'HubOperations/TechOps/incident-management', + 'HubOperations/TechOps/problem-management', + 'HubOperations/TechOps/change-management', + 'HubOperations/TechOps/release-management', + 'HubOperations/TechOps/defect-triage', + 'HubOperations/TechOps/key-terms-kpis', + 'HubOperations/TechOps/incident-management-escalation-matrix', + 'HubOperations/TechOps/service-level-agreements' + ] + }, + { + title: 'Guide de Gestion des Règlements', + collapsable: true, + sidebarDepth: 2, + children: [ + 'HubOperations/Settlement/settlement-management-introduction', + 'HubOperations/Settlement/settlement-basic-concepts', + 'HubOperations/Settlement/ledgers-in-the-hub', + ] + }, + { + title: 'Guide du Portail Finance v2', + collapsable: true, + sidebarDepth: 2, + children: [ + 'HubOperations/Portalv2/busops-portal-introduction', + 'HubOperations/Portalv2/settlement-business-process', + 'HubOperations/Portalv2/accessing-the-portal', + 'HubOperations/Portalv2/managing-windows', + 'HubOperations/Portalv2/settling', + 'HubOperations/Portalv2/checking-settlement-details', + 'HubOperations/Portalv2/monitoring-dfsp-financial-details', + 'HubOperations/Portalv2/enabling-disabling-transactions', + 'HubOperations/Portalv2/recording-funds-in-out', + 'HubOperations/Portalv2/updating-ndc', + 'HubOperations/Portalv2/searching-for-transfer-data' + ] + }, + { + title: 'Contrôle d\'Accès Basé sur les Rôles', + collapsable: true, + sidebarDepth: 2, + children: [ + 'HubOperations/RBAC/Role-based-access-control' + ] + }, + { + title: 'Guide d\'Intégration pour l\'Opérateur du Hub', + collapsable: true, + sidebarDepth: 2, + children: [ + 'HubOperations/Onboarding/onboarding-introduction', + 'HubOperations/Onboarding/business-onboarding', + 'HubOperations/Onboarding/technical-onboarding', + ] + } + ] + } ] } }, @@ -1183,8 +1277,8 @@ module.exports = { }, '/fr/': { lang: 'fr-FR', - title: 'Mojaloop Documentation', - description: '', + title: 'Documentation Mojaloop', + description: 'Documentation officielle du projet Mojaloop', }, }, }; diff --git a/docs/.vuepress/enhanceApp.js b/docs/.vuepress/enhanceApp.js index 8452a8689..be9e13dfe 100644 --- a/docs/.vuepress/enhanceApp.js +++ b/docs/.vuepress/enhanceApp.js @@ -4,11 +4,34 @@ * https://v1.vuepress.vuejs.org/guide/basic-config.html#app-level-enhancements */ +const LOCALE_STORAGE_KEY = 'mojaloop-docs-locale-redirected' + +function getBrowserLang () { + if (typeof navigator === 'undefined') return 'en' + const lang = navigator.language || navigator.userLanguage || '' + return lang.toLowerCase().split('-')[0] +} + export default ({ - Vue, // the version of Vue being used in the VuePress app - options, // the options for the root Vue instance - router, // the router instance for the app - siteData // site metadata + Vue, + options, + router, + siteData, + isServer }) => { - // ...apply enhancements for the site. + if (isServer) return + + router.afterEach((to) => { + const alreadyRedirected = sessionStorage.getItem(LOCALE_STORAGE_KEY) + if (alreadyRedirected) return + + sessionStorage.setItem(LOCALE_STORAGE_KEY, '1') + + const browserLang = getBrowserLang() + const isOnFrenchPage = to.path.startsWith('/fr/') + + if (browserLang === 'fr' && !isOnFrenchPage) { + return router.replace('/fr' + to.path) + } + }) } diff --git a/docs/.vuepress/theme/layouts/404.vue b/docs/.vuepress/theme/layouts/404.vue index 4eef36d34..35c65f870 100644 --- a/docs/.vuepress/theme/layouts/404.vue +++ b/docs/.vuepress/theme/layouts/404.vue @@ -3,23 +3,44 @@

404

{{ getMsg() }}
- Take me home. + {{ homeLinkText }}