Rrule: toTextのi18nのドキュメント

作成日 2013年04月17日  ·  15コメント  ·  ソース: jakubroztocil/rrule

toText()メソッドのi18nに関するより良いドキュメントを追加してください。

  1. todayパラメータの意味は何ですか?
  2. gettext渡される値はどれですか?
  3. 実際に翻訳するにはどうすればよいですか? dayNamesmonthNamesを変更することはできますが、それはその一部にすぎません。

このlibを作成していただきありがとうございます。

enhancement

最も参考になるコメント

更新はありますか? テキストを他の言語に翻訳する方法は?

全てのコメント15件

今日のパラメータの意味は何ですか?

現在のところ実際には使用されていません。 null渡すだけです。

gettextに渡される値はどれですか?
実際に翻訳するにはどうすればよいですか? dayNamesとmonthNamesを変更することはできますが、それはその一部にすぎません。

APIはあまり良くありません。

日付に関連するものを使用して言語定義を作成する必要があります。 デフォルトの英語のものはここにありtokensRRule.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: APIを改善して文書化します(おそらくLanguageクラスがいいでしょう)。

APIはあまり良くありません。

うーん、ええ。 何か足りないものがあります。 言葉を翻訳するだけではいけないからです。 言語によっては、文法が異なるため、順序も変更する必要があります。 代わりに、次のようなフォーマット文字列が必要です

singular: 'every week on {{dayNames}}',
plural: 'every {{numWeeks}} weeks on {{dayNames}}'

これは大まかな例です。 エッジケースなどがたくさんあり、正しく行うのは難しいと思います。

https://github.com/airbnb/polyglot.jsに出くわしたばかりですが、i18nには他にも多くのソリューションがあります

私を噛んだいくつかのこと:

英語では「毎週」と「毎月」です。 ドイツ語では「jedeWoche」と「jedenMonat」です。 「n」に注意してください。 「すべて」を翻訳するだけではうまくいきません。

gettextに「st」または「rd」を渡す場合と同様です。 それは意味がありません。

ニュースや計画はありますか? DTSTARTUNTILを使い始めたので、 toTextメソッドを使用できなくなりました。 その前に、私は現在の実装をハックすることができました。

リストのもう1つのこと:日付形式。 私が欲しいDD.MM.YYYYなくMMMM DD, YYYY

わかりません。 1つのhtmlファイルに、最新リリース(2.0)のこのコードが含まれています。

[コード]

トラッドテスト

[/コード]
エラーでは動作しません:

TypeError:_は未定義です
var defaults = _.clone(RRule.DEFAULT_OPTIONS);
463行目のrruleにあります。

私が間違っているところは?

underscorejsという別のライブラリが必要です。 私は私の電話にいます、さもなければ私はあなたにリンクを与えたでしょう。

2013年10月30日には、11:54 PMで、elecoest [email protected]書きました:

わかりません。 1つのhtmlファイルに、最新リリース(2.0)のこのコードが含まれています。

トラッドテスト
エラーが発生しても機能しません:

TypeError:_は未定義です

var defaults = .clone(RRule.DEFAULTOPTIONS);
463行目のrruleにあります。

私が間違っているところは?


このメールに直接返信するか、GitHubで表示してください。

わかりました、undesrcore.jsを3番目の位置に配置しました...
underscore.jsを最初の位置に配置しました。
今私はvvaエラー
TypeError:2はオブジェクトではありません
result.call(this、func.apply(_、args));を返します。
underscore.jsで

申し訳ありませんが、この方法はすべての体に適していますか?

誰も前にこのエラーを持っていませんか?

どうもありがとうございました。

今日のパラメータの意味は何ですか?

現在のところ実際には使用されていません。 null渡すだけです。

gettextに渡される値はどれですか?
実際に翻訳するにはどうすればよいですか? dayNamesとmonthNamesを変更することはできますが、それはその一部にすぎません。

APIはあまり良くありません。

日付に関連するものを使用して言語定義を作成する必要があります。 デフォルトの英語のものはここにありtokensRRule.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: APIを改善して文書化します(おそらくLanguageクラスがいいでしょう)。

こんにちは、ドイツ語用のi18nを取得しようとしていますが、リンクが壊れているため、「gettext」で使用されている文字列が見つかりません。 ソースを調べてみましたが、何でも見つかりました。

ありがとう!

今日のパラメータの意味は何ですか?

現在のところ実際には使用されていません。 null渡すだけです。

gettextに渡される値はどれですか?
実際に翻訳するにはどうすればよいですか? dayNamesとmonthNamesを変更することはできますが、それはその一部にすぎません。

APIはあまり良くありません。
日付に関連するものを使用して言語定義を作成する必要があります。 デフォルトの英語のものはここにありtokensRRule.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: APIを改善して文書化します(おそらくLanguageクラスがいいでしょう)。

こんにちは、ドイツ語用のi18nを取得しようとしていますが、リンクが壊れているため、「gettext」で使用されている文字列が見つかりません。 ソースを調べてみましたが、何でも見つかりました。

ありがとう!

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

それを使用する方法のいくつかのドキュメントがあるといいでしょう。 私はドイツ語に翻訳しましたが、間違っているようです:

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.jsi18nを使用することができました。

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)
      )
    : "";
};

この問題に関する最新情報はありますか? 私は日本語に翻訳しなければなりません。 単語の順序が大きく異なるので、どうすればいいのかわかりません...

このページは役に立ちましたか?
0 / 5 - 0 評価