Partilhar via


Implementar traduções de dados para uma tabela de calendário

Se estiver implementando traduções de dados, você pode adicionar suporte de tradução para colunas baseadas em texto em tabelas de calendário. Estas tabelas incluem traduções para os nomes dos meses ou dos dias da semana. Essa abordagem permite criar elementos visuais que mencionam dias ou meses.

A captura de tela mostra visuais de relatório que exibem os nomes de meses e dias.

As versões traduzidas tornam o visual fácil de ler nos idiomas suportados.

A captura de tela mostra visuais de relatório que exibem os nomes de meses e dias localizados.

A estratégia neste artigo para traduções de colunas de tabelas de calendário utiliza o Power Query e a linguagem de consulta M. O Power Query fornece funções internas, como Date.MonthName, que aceitam um Date parâmetro e devolvem um nome de calendário baseado em texto. Se o seu projeto .pbix tiver en-US como idioma e localidade padrão, a seguinte chamada de função do Power Query será avaliada como um valor baseado em texto de janeiro.

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

A Date.MonthName função aceita um segundo parâmetro de cadeia de caracteres opcional para passar um idioma e localidade específicos.

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

Se você quiser traduzir o nome do mês para o francês, você pode passar um valor de texto de fr-FR.

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

Gerar tabela de tradução de calendário

Observe a tabela Idiomas usada em exemplos anteriores. Inclui uma coluna DefaultCulture .

A captura de tela mostra a tabela Idiomas, que é uma coluna de cultura padrão.

O Power Query baseia-se numa linguagem de consulta funcional denominada M. Com esse idioma, você pode iterar pelas linhas da tabela Idiomas para descobrir quais idiomas e quais culturas padrão o projeto suporta. Você pode escrever uma consulta que usa a tabela Idiomas como fonte para gerar uma tabela de tradução de calendário com os nomes dos meses ou dias da semana.

O diagrama mostra a tabela Idiomas utilizada como origem de uma transformação do Power Query para criar tabelas de nomes de meses e dias.

Aqui está o código M que gera a Tabela de Nomes de Meses Traduzidos.

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

Gorjeta

Você pode simplesmente copiar e colar o código M do exemplo ProductSalesMultiLanguage.pbix sempre que precisar adicionar tabelas de tradução de calendário ao seu projeto.

Se a tabela Idiomas contiver quatro linhas para inglês, espanhol, francês e alemão, a consulta Tabela de nomes de meses traduzidos gerará uma tabela com quatro colunas de tradução, conforme mostrado na captura de tela a seguir.

A captura de tela mostra a consulta Tabela de Nomes de Meses Traduzidos e a tabela que ela cria.

Da mesma forma, a consulta chamada Tabela de Nomes de Dias Traduzidos gera uma tabela com traduções de nomes de dias úteis.

A captura de tela mostra a consulta Tabela de Nomes de Dias Traduzidos e a tabela que ela cria.

As duas consultas denominadas Tabela de Nomes de Meses Traduzidos e Tabela de Nomes de Dias Traduzidos foram escritas para serem genéricas. Eles não contêm nomes de colunas codificados. Essas consultas não exigem modificações futuras quando você adiciona ou remove idiomas do projeto. Tudo o que você precisa fazer é atualizar as linhas de dados na consulta.

A captura de tela mostra o Editor Avançado com idiomas selecionados no bloco Ordem de classificação.

Configurar valores de classificação

Quando você executa essas duas consultas pela primeira vez, elas criam duas tabelas no modelo semântico com os nomes Tabela de Nomes de Meses Traduzidos e Tabela de Nomes de Dias Traduzidos. Há uma coluna de tradução para cada idioma. Você precisa configurar a coluna de classificação para cada uma das colunas de tradução:

  • Configure as colunas de conversão na Tabela de Nomes de Meses Traduzidos para usar a coluna de classificação MonthNumber
  • Configure as colunas de tradução na Tabela de Nomes de Dias Traduzidos para usar a coluna de classificação DayNumber

A captura de tela mostra uma coluna de nomes de meses sendo definida para classificar por número de mês.

Integrar tabelas de tradução

A próxima etapa é integrar as duas tabelas no modelo de dados com uma tabela de calendário . A tabela Calendário é uma tabela calculada com base na seguinte expressão DAX (Data Analysis Expressions).

A captura de tela mostra a tabela com seu código DAX.

Crie uma relação entre a tabela Calendário e as tabelas de fatos, como Vendas, usando a coluna Data para criar uma relação um-para-muitos. As relações criadas entre a tabela Calendário e as duas tabelas de traduções baseiam-se nas colunas NúmeroMês e NúmeroDia.

A captura de ecrã mostra a vista Modelo com a tabela Nomes de Meses Traduzidos numa relação com a tabela Calendário.

Depois de criar as relações necessárias com a tabela Calendário , crie um novo parâmetro de campo para cada uma das duas tabelas de traduções de calendário. Criar um parâmetro de campo para uma tabela de conversão de calendário é como criar os parâmetros de campo para nomes de produtos e nomes de categorias mostrados anteriormente.

A captura de ecrã mostra a visualização em tabela da tabela de Nomes de Meses Traduzidos.

Adicione uma relação entre essas novas tabelas de parâmetros de campo e a tabela Idiomas para garantir que a estratégia de filtragem de idioma funcione conforme o esperado.

A captura de tela mostra a tabela Idiomas em relação a várias tabelas traduzidas.

Depois de criar os parâmetros de campo para Nomes de Meses Traduzidos e Nomes de Dias Traduzidos, você pode começar a apresentá-los em um relatório usando elementos visuais, tabelas e matrizes cartesianos.

A captura de tela mostra o valor Day para o eixo x em um visual.

Depois de configurar tudo, você pode testar seu trabalho usando um filtro de nível de relatório na tabela Idiomas para alternar entre idiomas e verificar traduções para nomes de meses e dias da semana de trabalho, conforme o esperado.

A captura de tela mostra um filtro com um idioma selecionado e os elementos visuais refletindo a seleção.