Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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.
As versões traduzidas tornam o visual fácil de ler nos idiomas suportados.
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 .
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.
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.
Da mesma forma, a consulta chamada Tabela de Nomes de Dias Traduzidos gera uma tabela com traduções de nomes de dias úteis.
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.
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
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).
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.
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.
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.
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.
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.