рдХреГрдкрдпрд╛ toText()
рдкрджреНрдзрддрд┐ рдХреЗ i18n рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреЗрд╣рддрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдЬреЛрдбрд╝реЗрдВред
today
рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ?gettext
?dayNames
рдФрд░ monthNames
рдХреЛ рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИредрдЗрд╕ lib рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдЖрдЬ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ?
рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрднреА рддрдХ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рдмрд╕ null
рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЧреЗрдЯрдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ рдХреМрди рд╕реЗ рдорд╛рди рдкрд╛рд╕ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ?
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХреИрд╕реЗ рдХрд░реВрдВ? рдореИрдВ рджрд┐рди рдХреЗ рдирд╛рдо рдФрд░ рдорд╣реАрдиреЗ рдХреЗ рдирд╛рдо рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред
рдПрдкреАрдЖрдИ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред
рдЖрдкрдХреЛ рддрд╛рд░реАрдЦ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рднрд╛рд╖рд╛ рдкрд░рд┐рднрд╛рд╖рд╛ рдмрдирд╛рдиреА рд╣реЛрдЧреАред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЕрдВрдЧреНрд░реЗрдЬреА рд╡рд╛рд▓рд╛ рдпрд╣рд╛рдБ рд╣реИ ред 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
TODO: рдПрдкреАрдЖрдИ рдХреЛ Language
рдХреНрд▓рд╛рд╕ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛)ред
рдПрдкреАрдЖрдИ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред
рд╣рдореНрдо, рд╣рд╛рдБред рдХреБрдЫ рдХрдореА рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд╕рд┐рд░реНрдл рд╢рдмреНрджреЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рднрд╛рд╖рд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреНрд░рдо рдХреЛ рднреА рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрд▓рдЧ рд╡реНрдпрд╛рдХрд░рдг рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рд╛рд░реВрдк рддрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ
singular: 'every week on {{dayNames}}',
plural: 'every {{numWeeks}} weeks on {{dayNames}}'
рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдореЛрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЗ рдЖрджрд┐ рд╣реИрдВ рдФрд░ рдпрд╣ рд╢рд╛рдпрдж рд╕рд╣реА рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред
рдмрд╕ https://github.com/airbnb/polyglot.js рдкрд░ рдЖрдпрд╛, рд▓реЗрдХрд┐рди i18n рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рд╣реИрдВ
рдХреБрдЫ рдРрд╕реА рдЪреАрдЬ рдЬреЛ рдореБрдЭреЗ рдмрд╣реБрдд рдкрд░реЗрд╢рд╛рди рдХрд░рддреА рд╣реИ:
рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдпрд╣ "рд╣рд░ рд╣рдлреНрддреЗ" рдФрд░ "рд╣рд░ рдорд╣реАрдиреЗ" рд╣реИред рдЬрд░реНрдорди рдореЗрдВ рдпрд╣ "рдЬреЗрдбреЗ рд╡реЛрдЪреЗ" рдФрд░ "рдЬреЗрдбрди рдореЛрдирд╛рдЯ" рд╣реИред "рдПрди" рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдореИрдВ рдХреЗрд╡рд▓ "рдкреНрд░рддреНрдпреЗрдХ" рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдЧреЗрдЯрдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ "рд╕реЗрдВрдЯ" рдпрд╛ "рдЖрд░рдбреА" рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рдмрд╛рддред рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред
рдХреЛрдИ рдЦрдмрд░ рдпрд╛ рдпреЛрдЬрдирд╛? рдЕрдм рдЬрдм рдореИрдВрдиреЗ DTSTART
рдФрд░ UNTIL
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ рддреЛ рдореИрдВ рдЕрдм toText
рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реИрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред
рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдмрд╛рдд: рджрд┐рдирд╛рдВрдХ рд╕реНрд╡рд░реВрдкред рдореБрдЭреЗ DD.MM.YYYY
рди рдХрд┐ MMMM DD, YYYY
ред
рдореБрдЭреЗ рд╕рдордЭ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИред рдПрдХ html рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдирд╡реАрдирддрдо рд░рд┐рд▓реАрдЬрд╝ (2.0) рдХреЗ рд╕рд╛рде рдпрд╣ рдХреЛрдб рд╣реИред
[рдХреЛрдб]
[/ рдХреЛрдб]
рдпрд╣ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:
рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐: _ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ
рд╡рд░ рдЪреВрдХ = _.рдХреНрд▓реЛрди (RRule.DEFAULT_OPTIONS);
рд▓рд╛рдЗрди 463 рдкрд░ рдирд┐рдпрдо рдореЗрдВред
рдореИрдВ рдХрд╣рд╛рдБ рдЧрд▓рдд рд╣реВрдБ?
рдЖрдкрдХреЛ рдЕрдВрдбрд░рд╕реНрдХреЛрд░рдЬ рдирд╛рдордХ рдПрдХ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдЕрдкрдиреЗ рдлреЛрди рдкрд░ рд╣реВрдВ рдирд╣реАрдВ рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рд▓рд┐рдВрдХ рджреЗ рджреЗрддрд╛ред
рдЕрдХреНрдЯреВ 30, 2013 рдкрд░ 11:54 pm рдкрд░, elecoest [email protected] рд▓рд┐рдЦрд╛ рд╣реИ:
рдореБрдЭреЗ рд╕рдордЭ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИред рдПрдХ html рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдирд╡реАрдирддрдо рд░рд┐рд▓реАрдЬрд╝ (2.0) рдХреЗ рд╕рд╛рде рдпрд╣ рдХреЛрдб рд╣реИред
рдкрд╛рд░рдВрдкрд░рд┐рдХ рдкрд░реАрдХреНрд╖рдг
рдпрд╣ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:
рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐: _ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ
рд╡рд░ рдЪреВрдХ = .рдХреНрд▓реЛрди (RRule.DEFAULTOPTIONS);
рд▓рд╛рдЗрди 463 рдкрд░ рдирд┐рдпрдо рдореЗрдВред
рдореИрдВ рдХрд╣рд╛рдБ рдЧрд▓рдд рд╣реВрдБ?
-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВред
рдареАрдХ рд╣реИ, рдореИрдВ undesrcore.js рдХреЛ рддреАрд╕рд░реЗ рд╕реНрдерд╛рди рдкрд░ рд░рдЦреВрдВрдЧрд╛...
рдореИрдВрдиреЗ рдЕрдВрдбрд░рд╕реНрдХреЛрд░.рдЬреЗрдПрд╕ рдХреЛ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рд░рдЦрд╛ рд╣реИред
рдЕрдм рдореЗрд░реЗ рдкрд╛рд╕ рддреНрд░реБрдЯрд┐ рд╣реИ
рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐: 2 рдХреЛрдИ рд╡рд╕реНрддреБ рдирд╣реАрдВ рд╣реИ
рд╡рд╛рдкрд╕реА рдкрд░рд┐рдгрд╛рдоред рдХреЙрд▓ (рдпрд╣, func.apply (_, args));
рдЕрдВрдбрд░рд╕реНрдХреЛрд░.рдЬреЗрдПрд╕ . рдореЗрдВ
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рддрд░реАрдХрд╛ рд╣рд░ рд╢рд░реАрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬреИрд╕рд╛ рд╣реИ?
рдкрд╣рд▓реЗ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдпрд╣ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ?
рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдЖрдЬ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ?
рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрднреА рддрдХ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рдмрд╕
null
рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрдЧреЗрдЯрдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ рдХреМрди рд╕реЗ рдорд╛рди рдкрд╛рд╕ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ?
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХреИрд╕реЗ рдХрд░реВрдВ? рдореИрдВ рджрд┐рди рдХреЗ рдирд╛рдо рдФрд░ рдорд╣реАрдиреЗ рдХреЗ рдирд╛рдо рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИредрдПрдкреАрдЖрдИ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред
рдЖрдкрдХреЛ рддрд╛рд░реАрдЦ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рднрд╛рд╖рд╛ рдкрд░рд┐рднрд╛рд╖рд╛ рдмрдирд╛рдиреА рд╣реЛрдЧреАред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЕрдВрдЧреНрд░реЗрдЬреА рд╡рд╛рд▓рд╛ рдпрд╣рд╛рдБ рд╣реИ ред
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
TODO: рдПрдкреАрдЖрдИ рдХреЛ
Language
рдХреНрд▓рд╛рд╕ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛)ред
рдирдорд╕реНрддреЗ, рдореИрдВ рдЬрд░реНрдорди рдХреЗ рд▓рд┐рдП i18n рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд▓рд┐рдВрдХ рдЯреВрдЯрдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдореБрдЭреЗ "рдЧреЗрдЯрдЯреЗрдХреНрд╕реНрдЯ" рдореЗрдВ рдХреМрди рд╕реЗ рддрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХреБрдЫ рднреА рдорд┐рд▓ рдЧрдпрд╛ред
рдзрдиреНрдпрд╡рд╛рдж!
рдЖрдЬ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ?
рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрднреА рддрдХ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рдмрд╕
null
рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрдЧреЗрдЯрдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ рдХреМрди рд╕реЗ рдорд╛рди рдкрд╛рд╕ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ?
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХреИрд╕реЗ рдХрд░реВрдВ? рдореИрдВ рджрд┐рди рдХреЗ рдирд╛рдо рдФрд░ рдорд╣реАрдиреЗ рдХреЗ рдирд╛рдо рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИредрдПрдкреАрдЖрдИ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред
рдЖрдкрдХреЛ рддрд╛рд░реАрдЦ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рднрд╛рд╖рд╛ рдкрд░рд┐рднрд╛рд╖рд╛ рдмрдирд╛рдиреА рд╣реЛрдЧреАред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЕрдВрдЧреНрд░реЗрдЬреА рд╡рд╛рд▓рд╛ рдпрд╣рд╛рдБ рд╣реИ ред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
TODO: рдПрдкреАрдЖрдИ рдХреЛ
Language
рдХреНрд▓рд╛рд╕ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛)редрдирдорд╕реНрддреЗ, рдореИрдВ рдЬрд░реНрдорди рдХреЗ рд▓рд┐рдП i18n рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд▓рд┐рдВрдХ рдЯреВрдЯрдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдореБрдЭреЗ "рдЧреЗрдЯрдЯреЗрдХреНрд╕реНрдЯ" рдореЗрдВ рдХреМрди рд╕реЗ рддрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХреБрдЫ рднреА рдорд┐рд▓ рдЧрдпрд╛ред
рдзрдиреНрдпрд╡рд╛рдж!
рдХреБрдЫ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред рдореИрдВрдиреЗ рдЬрд░реНрдорди рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЧрд▓рдд рджрд┐рдЦрддрд╛ рд╣реИ:
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 рдзрдиреНрдпрд╡рд╛рдж,
рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде, рдореИрдВ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдкрд▓ рдХреЗ рд░реВрдк рдореЗрдВ 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)
)
: "";
};
рдХреНрдпрд╛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реЛрдЧрд╛? рдореБрдЭреЗ рдЬрд╛рдкрд╛рдиреА рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рд╣реИ; рд╢рдмреНрдж рдХреНрд░рдо рдХрд╛рдлреА рдЕрд▓рдЧ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреИрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рд╣реИ ...
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдХреЛрдИ рдЕрдкрдбреЗрдЯреНрд╕? рдЯреЗрдХреНрд╕реНрдЯ рдХрд╛ рджреВрд╕рд░реА рднрд╛рд╖рд╛ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХреИрд╕реЗ рдХрд░реЗрдВ?