请添加有关toText()
方法的 i18n 的更好文档。
today
参数的含义是什么?gettext
?dayNames
和monthNames
,但这只是其中的一部分。感谢您创建这个库!
today 参数的含义是什么?
它目前尚未实际使用,您只需传递null
。
将哪些值传递给 gettext?
我如何实际翻译内容? 我可以更改 dayNames 和 monthNames,但这只是其中的一部分。
API 不是很好。
您需要使用与日期相关的内容创建语言定义。 默认英文版在这里。 tokens
只需要RRule.fromText
。
gettext
获取英文字符串(你可以在这里看到使用
一个粗略的例子(你需要当前的 master,旧版本缓存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:改进并记录 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) 的这段代码。
[代码]
[/代码]
它不适用于错误:
类型错误:_ 未定义
var 默认值 = _.clone(RRule.DEFAULT_OPTIONS);
在第 463 行的规则中。
我哪里错了?
您需要另一个名为 underscorejs 的库。 我正在打电话,否则我会给你一个链接。
年10月30,2013年,在下午11点54分,elecoest [email protected]写道:
我不明白。 在一个 html 文件中,我有最新版本 (2.0) 的这段代码。
传统测试
错误不起作用:
类型错误:_ 未定义
var defaults = .clone(RRule.DEFAULTOPTIONS);
在第 463 行的规则中。
我哪里错了?
—
直接回复此邮件或在 GitHub 上查看。
好吧,我把 undesrcore.js 放在第三位......
我把 underscore.js 放在第一位。
现在我出错了
类型错误:2 不是对象
return result.call(this, func.apply(_, args));
在下划线.js
抱歉,但这种方式对每个人都适用吗?
以前没有人有这个错误吗?
非常感谢你的帮助。
today 参数的含义是什么?
它目前尚未实际使用,您只需传递
null
。将哪些值传递给 gettext?
我如何实际翻译内容? 我可以更改 dayNames 和 monthNames,但这只是其中的一部分。API 不是很好。
您需要使用与日期相关的内容创建语言定义。 默认英文版在这里。
tokens
只需要RRule.fromText
。
gettext
获取英文字符串(你可以在这里看到使用一个粗略的例子(你需要当前的 master,旧版本缓存
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:改进并记录 API(也许
Language
类会很好)。
嗨,我正在尝试为德语获取 i18n,但是由于链接已损坏,我找不到“gettext”中使用的字符串。 我试图查看来源,但我可以找到任何东西。
谢谢!
today 参数的含义是什么?
它目前尚未实际使用,您只需传递
null
。将哪些值传递给 gettext?
我如何实际翻译内容? 我可以更改 dayNames 和 monthNames,但这只是其中的一部分。API 不是很好。
您需要使用与日期相关的内容创建语言定义。 默认英文版在这里。tokens
只需要RRule.fromText
。
gettext
获取英文字符串(你可以在这里看到使用
一个粗略的例子(你需要当前的 master,旧版本缓存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:改进并记录 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)
)
: "";
};
会有关于这个问题的更新吗? 我必须翻译成日语; 语序明显不同,所以我不知道如何继续......
最有用的评论
任何更新? 如何将文本翻译成其他语言?