Procédure publique · ORM_CSHX2 · Configuration / Session

ORM_SetLanguage

Définit la langue d'affichage courante de la session ORM_CSHX2. Toutes les opérations de chargement ultérieures qui hydratent des libellés traduits utiliseront cette langue.

PUBLIQUE SESSION MULTILINGUE MySQL · MariaDB · PostgreSQL
01

📋 Description

ORM_SetLanguage définit la langue d'affichage de la session ORM_CSHX2. Cette information est utilisée par le framework lors de l'hydratation des objets pour récupérer les libellés traduits dans la langue cible depuis le référentiel multilingue.

La procédure ne retourne rien : elle écrase la langue courante de la session avec la nouvelle valeur. L'effet est immédiat — toutes les opérations de chargement effectuées après l'appel utiliseront la nouvelle langue.

🎯 Quand utiliser cette procédure

1. Au démarrage de l'application, après avoir déterminé la langue de l'utilisateur (depuis sa configuration personnelle, le navigateur, la table des utilisateurs, etc.) — pour que les futurs chargements ORM hydratent les libellés dans la bonne langue dès la première fenêtre ouverte.

2. Lors d'un changement de langue en cours de session, par exemple quand l'utilisateur clique sur un bouton de bascule « English / Français » dans l'IHM. Les écrans rechargés après ce changement afficheront les libellés dans la nouvelle langue.

ℹ️ Lien avec le référentiel de traductions

L'ID positionné par ORM_SetLanguage sert de filtre lors des chargements ORM : le framework rapatrie les libellés correspondants depuis le référentiel multilingue alimenté par ORM_AddTranslation. Si aucune traduction n'existe pour la langue demandée sur un libellé donné, le comportement par défaut du framework s'applique (typiquement : retour à la valeur source non traduite).

02

🔑 Signature

Déclaration
PROCÉDURE ORM_SetLanguage(
  LOCAL nIDLanguage est un entier
)
ÉlémentValeur
VisibilitéPUBLIQUE

Paramètre

ParamètreTypeRôle
nIDLanguageentierIdentifiant de la langue cible (référentiel cshx2_langues). Identifie la langue dans laquelle les libellés traduits doivent être restitués pour les opérations de chargement ultérieures.

Valeur de retour : aucune (procédure void).

03

🧭 Effet sur la session

L'appel à ORM_SetLanguage a un effet immédiat sur la session ORM courante. Plusieurs caractéristiques sont à connaître pour bien intégrer la procédure dans le cycle de vie de l'application :

CaractéristiqueDescription
Effet immédiatTous les chargements ORM effectués après l'appel utilisent la nouvelle langue. Les écrans déjà ouverts ne sont pas rafraîchis automatiquement — c'est à l'application de recharger les données affichées si nécessaire.
Portée sessionLa langue positionnée reste active jusqu'au prochain appel à ORM_SetLanguage ou jusqu'à la fin de la session ORM. Aucun timeout, aucune réinitialisation automatique.
Pas d'effet rétroactifLes objets déjà chargés en mémoire (m_tabResults) avant l'appel conservent leurs libellés dans la langue précédente. Pour les rafraîchir, recharger explicitement.
Pas de validation d'existenceLa procédure n'effectue aucun contrôle pour vérifier que l'ID de langue correspond à une langue présente dans le référentiel cshx2_langues. Un ID invalide n'est pas signalé : il aboutira simplement à des libellés non traduits lors des chargements.
⚠️ Initialisation préalable recommandée

Si l'application charge des données avant tout appel à ORM_SetLanguage, c'est la valeur par défaut de la session qui sera utilisée pour la résolution des libellés traduits. Appeler ORM_SetLanguage au plus tôt dans l'initialisation de l'application est une bonne pratique systématique en contexte multilingue.

04

💡 Exemples

Mode 1 — initialisation de la langue au démarrage

Cas d'usage typique : juste après l'authentification, on lit la langue préférée de l'utilisateur depuis la table des utilisateurs et on l'applique à la session ORM.

// ── L'utilisateur vient de s'authentifier ─────────────────────── SI bAuthentificationOK ALORS // Récupérer la langue préférée de l'utilisateur nIDLangueUtilisateur est un entier = clUtilisateurConnecté:m_ID_LANGUE // Positionner la langue de la session ORM ORM_SetLanguage(nIDLangueUtilisateur) // À partir d'ici, tous les chargements ORM hydrateront // les libellés traduits dans la langue choisie FIN

Mode 2 — bouton de bascule de langue dans l'IHM

Cas d'usage : un utilisateur clique sur un bouton pour passer de français à anglais en cours de session.

// ── Identifiants de langues connus côté projet ────────────────── LANGUE_FRANCAIS est un entier = 1 LANGUE_ANGLAIS est un entier = 2 // ── Clic sur le bouton de bascule ─────────────────────────────── SI nLangueCourante = LANGUE_FRANCAIS ALORS ORM_SetLanguage(LANGUE_ANGLAIS) nLangueCourante = LANGUE_ANGLAIS SINON ORM_SetLanguage(LANGUE_FRANCAIS) nLangueCourante = LANGUE_FRANCAIS FIN // ── Recharger les écrans actifs pour répercuter le changement ─── // (les objets déjà en mémoire ne sont pas retraduits automatiquement) RAFRAÎCHIR FEN_Principale

Mode 3 — bascule ponctuelle pour un traitement spécifique

Cas d'usage : un export ou un envoi d'email doit être généré dans une langue précise différente de celle de l'IHM.

// ── Mémoriser la langue courante avant la bascule ─────────────── nLangueIHM est un entier = nLangueCourante // ── Basculer en langue du destinataire pour le chargement ─────── ORM_SetLanguage(nLangueDestinataire) // Charger les données dans la langue cible clCommande:mth_ChargerSelonClauseWhere() // Générer l'export dans la langue du destinataire GénérerExportPDF(clCommande) // ── Restaurer la langue d'origine pour ne pas perturber l'IHM ── ORM_SetLanguage(nLangueIHM)