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?
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?
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
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
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!