Ce guide vous montre comment ajouter une colonne multilingue à un jeu de données, en utilisant Power BI pour récupérer des traductions spécifiques en fonction de la langue.
Par défaut, le code récupÚre la version anglaise ou, si elle n'est pas disponible, la premiÚre langue trouvée dans la liste.
Voici le script Power BI complet, avec un tri optionnel pour conserver uniquement le dernier état de chaque entité.
let
// Remplacez ces variables avec vos propres informations
dataset_name = "FormTemplates",
api_key = "your_api_key",
organization_id = "your_organization_id",
RetryRequest = (retries as number) =>
let
apiResponse = try Json.Document(Web.Contents("https://developer.finalcad.cloud/api/organizations/" & organization_id & "/data/config/dataseturl?name=" & dataset_name,
[Headers=[#"X-API-Key"= api_key, Authorization="token " & api_key]])),
Source = if apiResponse[HasError] and retries > 0 then
Function.InvokeAfter(() => @RetryRequest(retries - 1), #duration(0, 0, 0, 2))
else Parquet.Document(Binary.Buffer(Web.Contents(apiResponse[Value][url])))
in
Source,
Source = RetryRequest(3),
// Tri optionnel pour conserver uniquement le dernier état de chaque entité
SortedRows = Table.Buffer(Table.Sort(Source, {{"updated_at", Order.Descending}})),
DistinctRows = Table.Distinct(SortedRows, {"id"}),
// Ajout d'une colonne prenant en charge les données multilingues
AddNameColumn = Table.AddColumn(DistinctRows, "name", each
let
template = [template],
namesList = try template[names] otherwise null,
enRecord = if namesList <> null then List.First(List.Select(namesList, each _[localization] = "en")) else null,
translationEn = if enRecord <> null then enRecord[translation]
else if namesList <> null and List.Count(namesList) > 0 then namesList{0}[translation]
else null
in
translationEn
)
in
AddNameColumnExplication du code multilingue
Ătape de tri optionnel : Les Ă©tapes SortedRows et DistinctRows sont optionnelles et ne sont nĂ©cessaires que si vous souhaitez conserver le dernier Ă©tat de chaque entitĂ©.
Logique de la colonne multilingue : Le code ajoute une colonne name au jeu de donnĂ©es. Il essaie dâabord de sĂ©lectionner la traduction en anglais (en) si elle est disponible. Si aucune traduction en anglais n'est trouvĂ©e, il utilise la premiĂšre langue trouvĂ©e dans la liste des traductions.
Cette configuration permet aux utilisateurs dâadapter le code pour rĂ©cupĂ©rer dâautres langues ou ajuster la logique de secours selon leurs besoins.