Adicione melhor documentação sobre i18n do método toText()
.
today
?gettext
?dayNames
e monthNames
, mas isso é apenas parte.Obrigado por criar esta biblioteca!
Qual é o significado do parâmetro hoje?
Não é realmente usado a partir de agora, você pode simplesmente passar null
.
Quais valores são passados para gettext?
Como faço para traduzir as coisas? Consigo alterar dayNames e monthNames, mas isso é apenas uma parte.
A API não é muito boa.
Você precisa criar uma definição de idioma com coisas relacionadas a datas. O padrão em inglês está aqui . tokens
são necessários apenas para RRule.fromText
.
gettext
obtém a string em inglês (você pode ver quais strings são usadas aqui ).
Um exemplo bruto (você precisa do mestre atual, as versões mais antigas armazenaram em cache a saída de toText
):
// Date-related translations
var portuguese = {
dayNames: [
"Domingo",
"Segunda-Feira",
"Terça-feira",
"Quarta-feira",
"Quinta-feira",
"Sexta-feira",
"Sábado"
],
monthNames: [
"Janeiro",
"Fevereiro",
// …
]
// `tokens` are only needed for `RRule.fromText`
};
// Strings
var portugueseStrings = {
'every': 'cada',
'until': 'até',
'day': 'dia',
'days': 'dias',
'week': 'semana',
'weeks': 'semanas',
'on': 'em'
// …
};
var gettext = function(id) {
// Return pt. string, default to english.
return portugueseStrings[id] || id;
};
var rule = new RRule(RRule.WEEKLY, {
interval: 5,
byweekday: [RRule.MO, RRule.FR],
dtstart: new Date(2012, 1, 1, 10, 30),
until: new Date(2012, 12, 31)
});
console.log(rule.toText());
// => every 5 weeks on Monday, Friday until January 31, 2013
console.log(rule.toText(null, gettext, portuguese));
// => cada 5 semanas em Segunda-Feira, Sexta-feira até Janeiro 31, 2013
TODO: melhore e documente a API (talvez uma classe Language
seria bom).
A API não é muito boa.
Hm, sim. Falta alguma coisa. Porque você não pode simplesmente traduzir as palavras. Dependendo do idioma, a ordem também precisa ser alterada, porque eles têm uma gramática diferente. Em vez disso, deve haver strings de formato como
singular: 'every week on {{dayNames}}',
plural: 'every {{numWeeks}} weeks on {{dayNames}}'
Este é apenas um exemplo aproximado. Eu sei que existem muitos casos extremos etc. e que provavelmente é difícil fazer certo.
Acabei de descobrir https://github.com/airbnb/polyglot.js , mas existem muitas outras soluções para i18n
Algo que me mordeu:
Em inglês é "every week" e "every month". Em alemão é "jede Woche" e "jeden Monat". Observe o "n". Não posso simplesmente traduzir "todos", não vai funcionar.
Coisa semelhante com a passagem de "st" ou "rd" para obter o texto. Não faz sentido.
Alguma notícia ou plano? Agora que comecei a usar DTSTART
e UNTIL
não posso mais usar o método toText
. Antes disso, eu era capaz de hackear a implementação atual.
Mais uma coisa para a lista: formatos de data. Eu quero DD.MM.YYYY
e não MMMM DD, YYYY
.
Não entendo. Em um arquivo html eu tenho esse código com a versão mais recente (2.0).
[código]
[/código]
Não funciona com o erro:
TypeError: _ is undefined
var defaults = _.clone (RRule.DEFAULT_OPTIONS);
em regra na linha 463.
Onde estou errado?
Você precisa de outra biblioteca chamada underscorejs. Estou no meu telefone, caso contrário, teria dado a você um link.
Em 30 de outubro de 2013, às 23h54, elecoest [email protected] escreveu:
Não entendo. Em um arquivo html eu tenho esse código com a versão mais recente (2.0).
testes comerciais
Não funciona com o erro:
TypeError: _ is undefined
var defaults = .clone (RRule.DEFAULTOPTIONS);
em regra na linha 463.
Onde estou errado?
-
Responda a este e-mail diretamente ou visualize-o no GitHub.
ok, coloquei undesrcore.js na terceira posição ...
Coloquei o underscore.js na primeira posição.
Agora eu estou errado
TypeError: 2 não é um objeto
retornar result.call (this, func.apply (_, args));
em underscore.js
Desculpe, mas esse jeito é para todos os corpos?
Ninguém cometeu esse erro antes?
Muito obrigado por sua ajuda.
Qual é o significado do parâmetro hoje?
Não é realmente usado a partir de agora, você pode simplesmente passar
null
.Quais valores são passados para gettext?
Como faço para traduzir as coisas? Consigo alterar dayNames e monthNames, mas isso é apenas uma parte.A API não é muito boa.
Você precisa criar uma definição de idioma com coisas relacionadas a datas. O padrão em inglês está aqui .
tokens
são necessários apenas paraRRule.fromText
.
gettext
obtém a string em inglês (você pode ver quais strings são usadas aqui ).Um exemplo bruto (você precisa do mestre atual, as versões mais antigas armazenaram em cache a saída de
toText
):// Date-related translations var portuguese = { dayNames: [ "Domingo", "Segunda-Feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado" ], monthNames: [ "Janeiro", "Fevereiro", // … ] // `tokens` are only needed for `RRule.fromText` }; // Strings var portugueseStrings = { 'every': 'cada', 'until': 'até', 'day': 'dia', 'days': 'dias', 'week': 'semana', 'weeks': 'semanas', 'on': 'em' // … }; var gettext = function(id) { // Return pt. string, default to english. return portugueseStrings[id] || id; }; var rule = new RRule(RRule.WEEKLY, { interval: 5, byweekday: [RRule.MO, RRule.FR], dtstart: new Date(2012, 1, 1, 10, 30), until: new Date(2012, 12, 31) }); console.log(rule.toText()); // => every 5 weeks on Monday, Friday until January 31, 2013 console.log(rule.toText(null, gettext, portuguese)); // => cada 5 semanas em Segunda-Feira, Sexta-feira até Janeiro 31, 2013
TODO: melhore e documente a API (talvez uma classe
Language
seria bom).
Olá, estou tentando obter i18n para alemão, mas não consigo encontrar quais strings são usadas em "gettext" porque o link está quebrado. Tentei procurar nas fontes, mas não consegui encontrar nada.
Obrigado!
Qual é o significado do parâmetro hoje?
Não é realmente usado a partir de agora, você pode simplesmente passar
null
.Quais valores são passados para gettext?
Como faço para traduzir as coisas? Consigo alterar dayNames e monthNames, mas isso é apenas uma parte.A API não é muito boa.
Você precisa criar uma definição de idioma com coisas relacionadas a datas. O padrão em inglês está aqui .tokens
são necessários apenas paraRRule.fromText
.
gettext
obtém a string em inglês (você pode ver quais strings são usadas aqui ).
Um exemplo bruto (você precisa do mestre atual, as versões mais antigas armazenaram em cache a saída detoText
):// Date-related translations var portuguese = { dayNames: [ "Domingo", "Segunda-Feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado" ], monthNames: [ "Janeiro", "Fevereiro", // … ] // `tokens` are only needed for `RRule.fromText` }; // Strings var portugueseStrings = { 'every': 'cada', 'until': 'até', 'day': 'dia', 'days': 'dias', 'week': 'semana', 'weeks': 'semanas', 'on': 'em' // … }; var gettext = function(id) { // Return pt. string, default to english. return portugueseStrings[id] || id; }; var rule = new RRule(RRule.WEEKLY, { interval: 5, byweekday: [RRule.MO, RRule.FR], dtstart: new Date(2012, 1, 1, 10, 30), until: new Date(2012, 12, 31) }); console.log(rule.toText()); // => every 5 weeks on Monday, Friday until January 31, 2013 console.log(rule.toText(null, gettext, portuguese)); // => cada 5 semanas em Segunda-Feira, Sexta-feira até Janeiro 31, 2013
TODO: melhore e documente a API (talvez uma classe
Language
seria bom).Olá, estou tentando obter i18n para alemão, mas não consigo encontrar quais strings são usadas em "gettext" porque o link está quebrado. Tentei procurar nas fontes, mas não consegui encontrar nada.
Obrigado!
Seria bom ter alguma documentação sobre como usá-lo. Traduzi para o alemão, mas parece errado:
const germanStrings = {
every: 'jedes',
until: 'bis',
day: 'Tag',
days: 'Tage',
week: 'Woche',
weeks: 'Wochen',
on: 'ein',
in: 'in',
'on the': 'auf dem',
for: 'für',
and: 'und',
or: 'oder',
at: 'bei',
last: 'zuletzt',
'(~ approximate)': '(~ approximativ)',
times: 'Zeiten',
time: 'Zeit',
minutes: 'Minuten',
hours: 'Stunden',
weekdays: 'Wochentage',
weekday: 'Wochentag',
months: 'Monate',
month: 'Monat',
years: 'Jahre',
year: 'Jahr'
};
const RRULE_GERMAN = {
dayNames: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
monthNames: [
'Januar',
'Februar',
'März',
'April',
'Mai',
'Juni',
'Juli',
'August',
'September',
'Oktober',
'November',
'Dezember'
]
};
const gettext = id => {
return germanStrings[id] || id;
};
const rruleText = rule.toText(id => {
gettext(id);
}, RRULE_GERMAN);
Alguma atualização? Como traduzir texto para outro idioma?
Acho que a i18n desta biblioteca, a partir de agora, é fundamentalmente falha. Coisas como
nth_monthday' => array(
'1' => 'the 1st',
'2' => 'the 2nd',
'3' => 'the 3rd',
'21' => 'the 21st',
'22' => 'the 22nd',
'23' => 'the 23rd',
'31' => 'the 31st',
'else' => 'the %{n}th'
),
são absolutamente necessários para algum uso final da experiência do usuário, em diferentes idiomas. Eu recomendo implementar a lógica nesta alternativa (conforme mencionado por @wakirin neste post). Isso realmente traria o uso dessa biblioteca, já que, neste momento, essa lógica deve ser feita manualmente, a fim de criar alguma lógica i18n utilizável.
ATUALIZAÇÃO: depois de rastrear o código, encontrei uma maneira de fazer o que queria, que, para a minha linguagem, "resolveu". Apenas para referência futura, deixarei aqui uma lista de todas as chaves que você deve traduzir no método getText que você passar.
'(~ approximate)'
'and'
'at'
'day'
'days'
'every'
'for'
'hour'
'hours'
'in'
'last'
'minutes'
'month'
'months'
'nd'
'on the'
'on'
'or'
'rd'
'st'
'th'
'the'
'time'
'times'
'until'
'week'
'weekday'
'weekdays'
'weeks'
'weeks'
'year'
'years'
'RRule error: Unable to fully convert this rrule to text'
@gongAll Obrigado,
Com o seu exemplo, fui capaz de usar moment.js e i18n , como abaixo:
export const RRuleToText = ({ strRRule }) => {
const language = {
dayNames: moment.weekdays(),
monthNames: moment.months()
};
const getText = id => {
return i18n.t(`vendor.rrule.${id}`, id);
};
const dateFormat = (year, month, day) =>
moment()
.date(day)
.year(year)
.month(month)
.format("LL");
return strRRule
? capitalize(
RRule.fromString(strRRule).toText(getText, language, dateFormat)
)
: "";
};
Haverá uma atualização sobre este assunto? Tenho que traduzir para o japonês; a ordem das palavras é significativamente diferente, então não tenho ideia de como proceder ...
Comentários muito úteis
Alguma atualização? Como traduzir texto para outro idioma?