Rrule: Documentation pour i18n de toText

Créé le 17 avr. 2013  ·  15Commentaires  ·  Source: jakubroztocil/rrule

Veuillez ajouter une meilleure documentation sur i18n de la méthode toText() .

  1. Quelle est la signification du paramètre today ?
  2. Quelles valeurs sont passées à gettext ?
  3. Comment traduire réellement des choses ? Je peux changer dayNames et monthNames , mais ce n'est qu'une partie.

Merci d'avoir créé cette bibliothèque !

enhancement

Commentaire le plus utile

Les mises à jour? Comment traduire du texte dans une autre langue ?

Tous les 15 commentaires

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]

tests commerciaux

[/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 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).

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 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).

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!

https://github.com/jakubroztocil/rrule/tree/master/src/nlp

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...

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

shorlbeck picture shorlbeck  ·  21Commentaires

fatshotty picture fatshotty  ·  5Commentaires

agordeev picture agordeev  ·  16Commentaires

grigio picture grigio  ·  7Commentaires

maconfr picture maconfr  ·  6Commentaires