Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Versão do Visual Studio vs idioma do Humanizer

Olá, meu VS está na versão em inglês e as literais do Humanizer acompanham o idioma por default (ex: days, weeks, etc). É possível manter minha versão em inglês e utilizar as saídas do pacote em outro idioma?

7 respostas

Oi, Thiago, tudo bem?

A documentação do Humanizer diz que quando o pacote Humanizer é instalado todos os idiomas suportados são instalados. Se você quiser instalar apenas um idioma específico deve instalar o pacote Humanizer.Core.<idioma> (existe um pacote para o português, o Humanizer.Core.pt).

Se você instalou o pacote completo ele vai usar o inglês por padrão. Então para usar outro idioma o código necessário é Humanize(culture: CultureInfo.CurrentCulture), blz?

Dá um feedback aqui pra gente saber se funcionou.

Você pode instalar outro pacote para o português: Humanizer.Core.pt

http://prntscr.com/m0pf2p

Meu teste ficou assim:

using Humanizer;
using System;

namespace ConsoleApp5
{
    class Program
    {
        static void Main(string[] args)
        {
            // Dia 17 de Agosto de 2018
            DateTime dataFimPagamento = new DateTime(2018, 8, 17);
            // Data corrente no momento de execução do código
            DateTime dataCorrente = DateTime.Now;
            TimeSpan diferenca = dataFimPagamento - dataCorrente;

            string mensagem = "Vencimento em " + TimeSpanHumanizeExtensions.Humanize(diferenca);

            Console.WriteLine(mensagem);
        }
    }
}

Resultado:

Vencimento em 19 semanas
Pressione qualquer tecla para continuar. . .

Note que meu Visual Studio está em inglês, e o Humanizer trabalha independente do idioma do VS.

Oi pessoal, tudo beleza?

Fiz o teste, agora instalando o pacote <core.pt> do Nuget, e não funcionou. Adicionei o código sugerido, mas mesmo assim sem sucesso. Notei que mesmo instalando só a versão <core.pt> ele baixa o humanizer.core junto, parece que existe uma dependência. Tentei excluir o <.core> mas só com o <core.pt> ele não compila. Segue o código abaixo...

using System;
using System.Globalization;
using Humanizer;

namespace ByteBank.SistemaAgencia
{
    class Program
    {
        static void Main(string[] args)
        {
            DateTime dataFimPagamento = new DateTime(2018, 6, 20);
            DateTime dataCorrente = DateTime.Now;

            TimeSpan diferenca = dataFimPagamento - dataCorrente;

            string mensagem = "Vencimento em " + TimeSpanHumanizeExtensions.Humanize(diferenca, culture: CultureInfo.CurrentCulture);

            Console.WriteLine(mensagem);

            Console.ReadLine();
        }
    }
}

Resultado:

Vencimento em 27 weeks
solução!

Nesse caso você deve usar uma sobrecarga do método Humanize que permite forçar a cultura que você deseja (caso contrário ele vai pegar a cultura do seu sistema):

string mensagem = "Vencimento em " + TimeSpanHumanizeExtensions.Humanize(diferenca, 1, System.Globalization.CultureInfo.GetCultureInfo("pt-BR"));

Oi, Thiago, bom dia. E aí, oq achou das sugestões? Dá um feedback pra gente aqui, por favor.

Oi Marcelo, Daniel, tudo bem? Perfeito, deu certo. Ele vai pela região do SO. Forçando a cultura ele converteu. Obrigado pela força. Abraço

Legal, Thiago!

Abraços!