Partager via


Mettre en œuvre des traductions de données pour une table de calendrier

Si vous implémentez des traductions de données, vous pouvez ajouter la prise en charge de la traduction pour les colonnes basées sur du texte dans les tables de calendrier. Ces tableaux incluent des traductions pour les noms des mois ou des jours de la semaine. Cette approche vous permet de créer des visuels qui mention jours ou mois.

La capture d'écran montre des rapports visuels qui affichent les noms des mois et des jours.

Les versions traduites facilitent la lecture du visuel dans les langues prises en charge.

La capture d'écran montre des rapports visuels qui affichent les noms des mois et des jours localisés.

La stratégie décrite dans cet article pour les traductions de colonnes de table de calendrier utilise Power Query et le langage de requête M. Power Query fournit des fonctions intégrées, telles que Date.MonthName, qui acceptent un paramètre Date et retournent un nom de calendrier textuel. Si votre projet .pbix a en-US comme langue et paramètres régionaux par défaut, l’appel de fonction Power Query suivant correspond à une valeur de janvier basée sur le texte.

Date.MonthName( #date(2023, 1, 1) )

La fonction Date.MonthName accepte un deuxième paramètre de chaîne facultatif pour passer une langue et des paramètres régionaux spécifiques.

Date.MonthName( #date(2023, 1, 1), "en-US")

Si vous souhaitez traduire le nom du mois en Français, vous pouvez passer une valeur de texte de fr-FR.

Date.MonthName( #date(2022, 12, 1), "fr-FR")

Générer une table de traduction de calendrier

Examinez la table Langues utilisée dans les exemples précédents. Il inclut une colonne DefaultCulture.

La capture d'écran montre le tableau Langues, qui contient par défaut une colonne Culture.

Power Query repose sur un langage de requête fonctionnel nommé M. Avec cette langue, vous pouvez itérer dans les lignes de la table Langues pour découvrir quelles langues et quelles cultures par défaut le projet prend en charge. Vous pouvez écrire une requête qui utilise la table Languages comme source pour générer une table de traduction de calendrier avec les noms des mois ou des jours de la semaine.

Le diagramme montre la table Languages utilisée comme source d'une transformation Power Query pour créer des tables de noms de mois et de jours.

Voici le code M qui génère la table Des noms de mois traduits.

let
  Source = #table( type table [ MonthNumber = Int64.Type ], List.Split({1..12},1)),
  Translations = Table.AddColumn( Source, "Translations",
    each
      [ MonthDate = #date( 2022, [ MonthNumber ], 1 ),
        Translations = List.Transform(Languages[DefaultCulture], each Date.MonthName( MonthDate, _ ) ),
        TranslationTable = Table.FromList( Translations, null ),
        TranslationsTranspose = Table.Transpose(TranslationTable),
        TranslationsColumns = Table.RenameColumns(
          TranslationsTranspose,
          List.Zip({ Table.ColumnNames( TranslationsTranspose ),
            List.Transform(Languages[Language],
            each "MonthNameTranslations" & _ ) })
          )
      ]
  ),
  ExpandedTranslations = Table.ExpandRecordColumn(Translations,
                                                  "Translations",
                                                  { "TranslationsColumns" },
                                                  { "TranslationsColumns" }),
  ColumnsCollection = List.Transform(Languages[Language], each "MonthNameTranslations" & _ ),
  ExpandedTranslationsColumns = Table.ExpandTableColumn(ExpandedTranslations,
                                                        "TranslationsColumns",
                                                        ColumnsCollection,
                                                        ColumnsCollection ),
  TypedColumnsCollection = List.Transform(ColumnsCollection, each {_, type text}),
  QueryOutput = Table.TransformColumnTypes(ExpandedTranslationsColumns, TypedColumnsCollection)
in
  QueryOutput

Conseil

Vous pouvez simplement copier et coller le code M de l’exemple ProductSalesMultiLanguage.pbix chaque fois que vous avez besoin d’ajouter des tables de traduction de calendrier à votre projet.

Si la table Langues contient quatre lignes pour l’anglais, l’espagnol, le français et l’allemand, la requête Table des noms de mois traduits génère une table avec quatre colonnes de traduction, comme illustré dans la capture d’écran suivante.

La capture d'écran montre la requête Translated Month Names Table et la table qu'elle crée.

De même, la requête nommée Translation Day Names Table génère une table avec des traductions de noms en semaine.

La capture d'écran montre la requête Translated Day Names Table et la table qu'elle crée.

Les deux requêtes nommées Table des noms de mois traduits et Table des noms de jour traduits ont été écrites pour être génériques. Ils ne contiennent aucun nom de colonne codé en dur. Ces requêtes ne nécessitent aucune modification à l’avenir lorsque vous ajoutez ou supprimez des langues du projet. Il vous suffit de mettre à jour les lignes de données de la requête.

La capture d'écran montre l'éditeur avancé avec les langues sélectionnées dans le bloc Ordre de tri.

Configurer des valeurs de tri

Lorsque vous exécutez ces deux requêtes pour la première fois, elles créent deux tables dans le modèle sémantique avec les noms de la table Des noms de mois traduits et la table Noms de jour traduits. Il existe une colonne de traduction pour chaque langue. Vous devez configurer la colonne de tri pour chacune des colonnes de traduction :

  • Configurer les colonnes de traduction dans Translated Month Names Table pour utiliser la colonne de tri MonthNumber
  • Configurer les colonnes de traduction dans Translated Day Names Table pour utiliser la colonne de tri DayNumber

La capture d'écran montre une colonne de noms de mois triée par numéro de mois.

Intégrer des tables de traduction

L’étape suivante consiste à intégrer les deux tables dans le modèle de données avec une table Calendrier. La table Calendar est une table calculée basée sur l’expression DAX (Data Analysis Expressions) suivante.

La capture d'écran montre le tableau avec son code DAX.

Créez une relation entre la table Calendrier et les tables de faits, telles que Ventes, à l’aide de la colonne Date pour créer une relation un-à-plusieurs. Les relations créées entre la table Calendrier et les deux tables de traductions sont basées sur la colonne MonthNumber et la colonne DayNumber .

La capture d'écran montre la vue Modèle avec la table Noms de mois traduits en relation avec la table Calendrier.

Après avoir créé les relations requises avec la table Calendrier, créez un paramètre de champ pour chacune des deux tables de traductions de calendrier. La création d’un paramètre de champ pour une table de traduction de calendrier équivaut à créer les paramètres de champ pour les noms de produits et les noms de catégorie indiqués précédemment.

Capture d’écran montrant la vue en tableau de la table des noms de mois traduits.

Ajoutez une relation entre ces nouvelles tables de paramètres de champ et la table Languages pour vous assurer que la stratégie de filtrage linguistique fonctionne comme prévu.

La capture d'écran montre le tableau des langues en relation avec plusieurs tableaux traduits.

Après avoir créé les paramètres de champ pour Translated Month Names et Translated Day Names, vous pouvez commencer à les exposer dans un rapport à l’aide de visuels cartésiens, de tables et de matrices.

La capture d'écran montre la valeur du jour pour l'axe des x dans un visuel.

Après avoir tout configuré, vous pouvez tester votre travail à l’aide d’un filtre au niveau du rapport dans la table Langues pour basculer entre les langues et vérifier les traductions des noms des mois et des jours de la semaine comme prévu.

La capture d'écran montre un filtre avec une langue sélectionnée et les visuels reflétant la sélection.