Veuillez ajouter une meilleure documentation sur i18n de la méthode toText()
.
today
?gettext
?dayNames
et monthNames
, mais ce n'est qu'une partie.Merci d'avoir créé cette bibliothèque !
Quelle est la signification du paramètre aujourd'hui ?
Il n'est pas réellement utilisé pour le moment, vous pouvez simplement passer null
.
Quelles valeurs sont transmises à gettext ?
Comment traduire réellement des choses ? Je peux changer dayNames et monthNames, mais ce n'est qu'une partie.
L'API n'est pas très sympa.
Vous devez créer une définition de langue avec des éléments liés à la date. L'anglais par défaut est ici . tokens
ne sont nécessaires que pour RRule.fromText
.
gettext
obtient la chaîne anglaise (vous pouvez voir quelles chaînes sont utilisées ici ).
Un exemple brut (vous avez besoin du maître actuel, les anciennes versions ont mis en cache la sortie 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
A FAIRE : améliorer et documenter l'API (peut-être qu'une classe Language
serait bien).
L'API n'est pas très sympa.
Hum, ouais. Il manque quelque chose. Parce que vous ne pouvez pas simplement traduire les mots. Selon la langue, l'ordre doit également être modifié, car ils ont une grammaire différente. Au lieu de cela, il devrait y avoir des chaînes de format comme
singular: 'every week on {{dayNames}}',
plural: 'every {{numWeeks}} weeks on {{dayNames}}'
C'est juste un exemple approximatif. Je sais qu'il y a beaucoup de cas extrêmes, etc. et qu'il est probablement difficile de bien faire.
Je viens de tomber sur
Quelque chose qui vient de me mordre:
En anglais, c'est « chaque semaine » et « chaque mois ». En allemand c'est "jede Woche" et "jeden Monat". Remarquez le "n". Je ne peux pas simplement traduire "tous", cela ne fonctionnera pas.
La même chose avec le passage de "st" ou "rd" à gettext. Cela n'a aucun sens.
Des nouvelles ou des projets ? Maintenant que j'ai commencé à utiliser DTSTART
et UNTIL
je ne peux plus utiliser la méthode toText
. Avant cela, j'étais capable de pirater l'implémentation actuelle.
Une dernière chose pour la liste : les formats de date. Je veux DD.MM.YYYY
et non MMMM DD, YYYY
.
Je ne comprends pas. Dans un fichier html, j'ai ce code avec la dernière version (2.0).
[code]
[/code]
Cela ne fonctionne pas avec l'erreur :
TypeError : _ n'est pas défini
var defaults = _.clone(RRule.DEFAULT_OPTIONS);
en règle à la ligne 463.
Où j'ai tort ?
Vous avez besoin d'une autre bibliothèque appelée underscorejs. Je suis sur mon téléphone sinon je t'aurais donné un lien.
Le 30 octobre 2013 à 23h54, elecoest [email protected] a écrit :
Je ne comprends pas. Dans un fichier html, j'ai ce code avec la dernière version (2.0).
tests commerciaux
Cela ne fonctionne pas avec l'erreur :
TypeError : _ n'est pas défini
var defaults = .clone(RRule.DEFAULTOPTIONS);
en règle à la ligne 463.
Où j'ai tort ?
-
Répondez directement à cet e-mail ou consultez-le sur GitHub.
ok, j'avais placé undesrcore.js en troisième position...
J'ai placé underscore.js en première position.
Maintenant, j'ai une erreur
TypeError : 2 n'est pas un objet
return result.call(this, func.apply(_, args));
dans underscore.js
Désolé mais cette façon est ak pour tout le monde ?
Personne n'a eu cette erreur avant ?
Merci beaucoup pour votre aide.
Quelle est la signification du paramètre aujourd'hui ?
Il n'est pas réellement utilisé pour le moment, vous pouvez simplement passer
null
.Quelles valeurs sont transmises à gettext ?
Comment traduire réellement des choses ? Je peux changer dayNames et monthNames, mais ce n'est qu'une partie.L'API n'est pas très sympa.
Vous devez créer une définition de langue avec des éléments liés à la date. L'anglais par défaut est ici .
tokens
ne sont nécessaires que pourRRule.fromText
.
gettext
obtient la chaîne anglaise (vous pouvez voir quelles chaînes sont utilisées ici ).Un exemple brut (vous avez besoin du maître actuel, les anciennes versions ont mis en cache la sortie 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
A FAIRE : améliorer et documenter l'API (peut-être qu'une classe
Language
serait bien).
Salut, j'essaie d'obtenir i18n pour l'allemand, mais je ne trouve pas les chaînes utilisées dans "gettext" car le lien est rompu. J'ai essayé de regarder sur les sources mais j'ai pu trouver n'importe quoi.
Merci!
Quelle est la signification du paramètre aujourd'hui ?
Il n'est pas réellement utilisé pour le moment, vous pouvez simplement passer
null
.Quelles valeurs sont transmises à gettext ?
Comment traduire réellement des choses ? Je peux changer dayNames et monthNames, mais ce n'est qu'une partie.L'API n'est pas très sympa.
Vous devez créer une définition de langue avec des éléments liés à la date. L'anglais par défaut est ici .tokens
ne sont nécessaires que pourRRule.fromText
.
gettext
obtient la chaîne anglaise (vous pouvez voir quelles chaînes sont utilisées ici ).
Un exemple brut (vous avez besoin du maître actuel, les anciennes versions ont mis en cache la sortie 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
A FAIRE : améliorer et documenter l'API (peut-être qu'une classe
Language
serait bien).Salut, j'essaie d'obtenir i18n pour l'allemand, mais je ne trouve pas les chaînes utilisées dans "gettext" car le lien est rompu. J'ai essayé de regarder sur les sources mais j'ai pu trouver n'importe quoi.
Merci!
Ce serait bien d'avoir une documentation sur la façon de l'utiliser. J'ai traduit en allemand, mais ça a l'air faux :
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);
Les mises à jour? Comment traduire du texte dans une autre langue ?
Je pense que l'i18n de cette bibliothèque, à partir de maintenant, est fondamentalement défectueux. Des choses comme
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'
),
sont absolument nécessaires pour une utilisation finale de l'expérience utilisateur, dans différentes langues. Je recommanderais d'implémenter la logique dans cette alternative (comme mentionné par @wakirin dans cet article). Cela augmenterait vraiment l'utilisation de cette bibliothèque, car, à ce moment-là, cette logique doit être effectuée manuellement, afin de créer une logique i18n utilisable.
MISE À JOUR : après avoir exploré le code, j'ai trouvé un moyen de faire ce que je voulais, ce qui, pour ma langue, l'a "résolu". Juste pour référence future, je vais laisser ici une liste de toutes les clés que vous devez traduire sur la méthode getText que vous transmettez.
'(~ 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 Merci,
Avec votre exemple, j'ai pu utiliser moment.js et i18n , comme ci-dessous :
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)
)
: "";
};
Y aura-t-il une mise à jour à ce sujet ? Je dois traduire en japonais ; l'ordre des mots est très différent, donc je n'ai aucune idée de comment procéder...
Commentaire le plus utile
Les mises à jour? Comment traduire du texte dans une autre langue ?