Пожалуйста, добавьте лучшую документацию о i18n метода toText()
.
today
?gettext
?dayNames
и monthNames
, но это только часть.Спасибо за создание этой библиотеки!
Что означает параметр сегодня?
На данный момент он фактически не используется, вы можете просто передать null
.
Какие значения передаются в gettext?
Как мне вообще переводить? Я могу изменить dayNames и monthNames, но это только часть.
API не очень хороший.
Вам нужно создать определение языка с элементами, связанными с датой. Английский по умолчанию здесь . tokens
нужны только для RRule.fromText
.
gettext
получает английскую строку (вы можете увидеть, какие строки используются здесь ).
Грубый пример (вам нужен текущий мастер, более старые версии кешировали вывод 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
ЗАДАЧИ: улучшить и задокументировать API (возможно, было бы неплохо использовать класс Language
).
API не очень хороший.
Хм, да. Чего-то не хватает. Потому что нельзя просто перевести слова. В зависимости от языка порядок также необходимо изменить, потому что у них разная грамматика. Вместо этого должны быть строки формата, такие как
singular: 'every week on {{dayNames}}',
plural: 'every {{numWeeks}} weeks on {{dayNames}}'
Это лишь грубый пример. Я знаю, что есть много крайних случаев и т. Д., И что, вероятно, это сложно сделать правильно.
Только что наткнулся на https://github.com/airbnb/polyglot.js , но есть много других решений для i18n
Что-то, что меня укусило:
На английском это «каждую неделю» и «каждый месяц». По-немецки это «jede Woche» и «jeden Monat». Обратите внимание на "n". Я не могу просто перевести «каждый», это не сработает.
То же самое с передачей "st" или "rd" в gettext. В этом нет никакого смысла.
Есть новости или планы? Теперь, когда я начал использовать DTSTART
и UNTIL
я больше не могу использовать метод toText
. До этого я мог обойти текущую реализацию.
Еще одна вещь для списка: форматы даты. Я хочу DD.MM.YYYY
а не MMMM DD, YYYY
.
Я не понимаю. В одном html файле у меня есть этот код последней версии (2.0).
[код]
[/код]
Не работает с ошибкой:
TypeError: _ не определено
var defaults = _.clone (RRule.DEFAULT_OPTIONS);
in rrule в строке 463.
Где я не прав?
Вам нужна еще одна библиотека под названием underscorejs. Я разговариваю по телефону, иначе дал бы ссылку.
30 октября 2013 г., в 23:54, elecoest [email protected] написал:
Я не понимаю. В одном html файле у меня есть этот код последней версии (2.0).
традиционные тесты
Не работает с ошибкой:
TypeError: _ не определено
var defaults = .clone (RRule.DEFAULTOPTIONS);
in rrule в строке 463.
Где я не прав?
-
Ответьте на это письмо напрямую или просмотрите его на GitHub.
хорошо, я поставил undesrcore.js на третью позицию ...
Я поставил underscore.js на первую позицию.
Теперь я ошибка
TypeError: 2 не является объектом
вернуть result.call (this, func.apply (_, args));
в underscore.js
Извините, но этот способ подходит для всех?
Ни у кого раньше не было этой ошибки?
Спасибо большое за вашу помощь.
Что означает параметр сегодня?
На данный момент он фактически не используется, вы можете просто передать
null
.Какие значения передаются в gettext?
Как мне вообще переводить? Я могу изменить dayNames и monthNames, но это только часть.API не очень хороший.
Вам нужно создать определение языка с элементами, связанными с датой. Английский по умолчанию здесь .
tokens
нужны только дляRRule.fromText
.
gettext
получает английскую строку (вы можете увидеть, какие строки используются здесь ).Грубый пример (вам нужен текущий мастер, более старые версии кешировали вывод
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
ЗАДАЧИ: улучшить и задокументировать API (возможно, было бы неплохо использовать класс
Language
).
Привет, я пытаюсь получить i18n для немецкого языка, но не могу найти, какие строки используются в "gettext", так как ссылка не работает. Я пытался поискать источники, но ничего не нашел.
Спасибо!
Что означает параметр сегодня?
На данный момент он фактически не используется, вы можете просто передать
null
.Какие значения передаются в gettext?
Как мне вообще переводить? Я могу изменить dayNames и monthNames, но это только часть.API не очень хороший.
Вам нужно создать определение языка с элементами, связанными с датой. Английский по умолчанию здесь .tokens
нужны только дляRRule.fromText
.
gettext
получает английскую строку (вы можете увидеть, какие строки используются здесь ).
Грубый пример (вам нужен текущий мастер, более старые версии кешировали вывод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
ЗАДАЧИ: улучшить и задокументировать API (возможно, было бы неплохо использовать класс
Language
).Привет, я пытаюсь получить i18n для немецкого языка, но не могу найти, какие строки используются в "gettext", так как ссылка не работает. Я пытался поискать источники, но ничего не нашел.
Спасибо!
Было бы неплохо иметь документацию по его использованию. Я перевел на немецкий, но это выглядит неправильно:
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);
Любые обновления? Как перевести текст на другой язык?
Я думаю, что i18n этой библиотеки на данный момент в корне ошибочен. Вещи как
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'
),
абсолютно необходимы для конечного использования на разных языках. Я бы рекомендовал реализовать логику в этой альтернативе (как упоминалось @wakirin в этом сообщении). Это действительно улучшило бы использование этой библиотеки, поскольку на данный момент эта логика должна выполняться вручную, чтобы создать некоторую полезную логику i18n.
ОБНОВЛЕНИЕ: после сканирования кода я нашел способ делать то, что хотел, который для моего языка «решил» это. На всякий случай я оставлю здесь список всех ключей, которые вы должны перевести в метод getText, который вы передаете.
'(~ 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 Спасибо,
В вашем примере я смог использовать moment.js и i18n , как показано ниже:
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)
)
: "";
};
Будет ли информация по этому поводу? Мне нужно перевести на японский; порядок слов существенно отличается, поэтому я понятия не имею, как действовать дальше ...
Самый полезный комментарий
Любые обновления? Как перевести текст на другой язык?