Estou tentando alterar o idioma da data que está sendo definida pelo moment.js. O padrão é o inglês, mas eu quero definir o idioma alemão. Isto é o que eu tentei:
var now = moment().format("LLL").lang("de");
Está dando NaN
.
var now = moment("de").format("LLL");
Isso nem está reagindo.
var now = moment().format("LLL", "de");
Sem alterações: isso ainda está produzindo um resultado em inglês.
Como isso é possível?
javascript
momentjs
doniyor
fonte
fonte
Respostas:
Você precisa de moment.lang ( AVISO :
lang()
está obsoleto desde o momento2.8.0
, use emlocale()
vez disso):http://momentjs.com/docs/#/i18n/
A partir da v2.8.1,
moment.locale('de')
define a localização, mas não retorna amoment
. Alguns exemplos:Em suma, chamar
locale
o globalmoment
define o código do idioma para todas asmoment
instâncias futuras , mas não retorna uma instância demoment
. Chamarlocale
uma instância, define-a para essa instância E retorna essa instância.Além disso, como Shiv disse nos comentários, use "moment-with-locales.min.js" e não "moment.min.js", caso contrário não funcionará.
fonte
var deMoment = moment(); deMoment.lang('de')
e reutilizar emdeMoment
vez de um momento ao longo do seu script.Deprecation warning: moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages. Arguments: fr
import moment from 'moment'; import localization from 'moment/locale/de'
moment().locale("de", localization).format('LLL')
Eu tive que importar também o idioma:
Então use momentos como você normalmente faria
fonte
import 'moment/locale/es'
require("moment/min/locales.min");
ou importimport 'moment/min/locales.min'
Método mais rápido: instalar com o Bower
Acabei de instalar o momento com o bower e vinculei
de.js
como recurso javascript no meu projeto html.bower install moment --save
Você também pode baixar manualmente o
moment.js
ede.js
.Vincule 'de.js' no seu projeto
Vincular o
de.js
arquivo no meu projeto principal alterou automaticamente o código do idioma para todos os acessos à classe moment e seus métodos.Não haverá mais necessidade de fazer um
moment.locale("de").
oumoment.lang("de").
no código fonte.Basta vincular o código de idioma desejado da seguinte maneira:
Ou você pode vincular as bibliotecas sem o
bower_components
caminho, se você baixou o moment.js no estilo dos anos 90, com o botão direito, o que ainda funciona bem na maioria dos cenários.fonte
<script src="/bower_components/moment/locale/de.js"></script>
. Funciona para mim agora.Com o momentjs 2.8+, faça o seguinte:
http://momentjs.com/docs/#/i18n/
fonte
moment.locale('de')
e cria um novo objeto que representa a data de agoramoment()
(observe o parêntese) e depoisformat('LLL')
. O parêntese é importante. Testado em 2.20. Além disso, lembre-se de usarmoment-with-locale.js
e, se necessário, altere o nome para sermoment.js
. O Django simplesmente se recusa a carregarmoment-with-locale.js
no meu caso.moment().locale('de').format('LLL');
Você precisaria adicionar
moment.lang(navigator.language)
seu script.E também deve adicionar a localidade de cada país em que você deseja exibir: por exemplo, para GB ou FR, é necessário adicionar esse formato de localidade na biblioteca moment.js. Um exemplo desse formato está disponível na documentação do momentjs. Se você não adicionar esse formato no momento.js, ele sempre escolherá a localidade dos EUA, pois é a única que eu vejo atualmente.
fonte
final de 2017/2018: as respostas dos outros têm muito código antigo para editar, então aqui minha resposta alternativa limpa:
com exigir
com importações
Usar:
com fuso horário
* requer:
*importar:
use zonas:
função para formatar a data
fonte
import moment from 'moment/min/moment-with-locales';
PARA USUÁRIOS DO METEORRO:
No momento em que as localidades não são instaladas por padrão no meteoro, você só obtém a localidade 'en' com a instalação padrão.
Então você usa o código como mostrado corretamente em outras respostas:
mas permanecerá em inglês até você instalar o código de idioma necessário.
Existe uma maneira agradável e limpa de adicionar localidades individuais para momento no meteoro (fornecido por rzymek ).
Instale o pacote momentâneo da maneira usual de meteoros com:
Em seguida, basta adicionar os locais necessários, por exemplo, para italiano:
Ou se você realmente deseja adicionar todos os códigos de idioma disponíveis (adiciona cerca de 30 mil à sua página):
fonte
rzymek:moment-locale-de
e funcionou :)Com o momento 2.18.1 e seguintes:
fonte
Demo
fonte
Como eu estava usando o webpack com gulp e amigos ( esse gerador configurou tudo para mim), tive que fazer uma alteração no arquivo bower.json. Eu tive que substituir a importação padrão para o pacote moment e selecionar o arquivo que acompanha todos os idiomas:
Este é o meu arquivo bower.json completo:
fonte
Estou usando o angular2-moment, mas o uso deve ser semelhante.
fonte
Alterar o idioma do momento js conforme a versão
Versão: 2.8+
moment.locale ('oi');
Versão: 2.5.1
moment.lang ('oi');
fonte
funciona bem assim:
return moment(status.created_at).locale('es').fromNow();
fonte
Não sei o que mudou, mas importar o arquivo de idioma como este funcionou para mim
Observe o src na declaração de importação
fonte
para momentjs 2.12+ , faça o seguinte:
Observe também que você deve usar
moment.updateLocale(localeName, config)
para alterar um código de idioma existente.moment.defineLocale(localeName, config)
deve ser usado apenas para criar um novo código de idioma.fonte
Para mim, há algumas mudanças a serem feitas (versão 2.20)
moment.locale('de')
e cria um novo objeto que representa a data de agora atémoment()
(observe o parêntese) e depoisformat('LLL')
. O parêntese é importante.Então, isso significa:
moment-with-locale.js
. O arquivo contém todas as informações de localidade e tem um tamanho de arquivo maior. Baixar alocale
pasta não é suficiente. Se necessário, mude o nome para sermoment.js
. Django apenas se recusa a carregarmoment-with-locale.js
no meu caso.EDIT: Acabou que não é necessário renomear o arquivo. Eu apenas esqueci de invocá-lo na página para que o Django não pense que é necessário carregá-lo, então a culpa é minha.
fonte
Este funciona apenas detectando automaticamente a localização atual do usuário.
fonte
Gritos deslizam da caneta. Eu resolveria o seguinte:
var moment = function(x) { return moment(x).locale('de'); }
as outras maneiras não parecem realmente manter-se em condições (para mim).fonte
Para quem trabalha em ambientes assíncronos,
moment
comporta-se inesperadamente ao carregar localidades sob demanda.Ao invés de
reverter a ordem
Parece que os códigos de idioma estão carregados no código de idioma selecionado atual, substituindo qualquer informação de código de idioma definida anteriormente. Portanto, alternar o código do idioma primeiro e carregar as informações do código do idioma não causa esse problema.
fonte
Depois de lutar, isso funcionou para mim na
moment
v2.26.0:Você pode passar
en
,fr
oues
. Se você quisesse outro idioma, teria que importar o código do idioma e adicioná-lo à matriz.Se você precisa apenas suportar um idioma, é um pouco mais simples:
fonte