Moment: `sk.js`:l10nの問題(チェコ主義)を修正

作成日 2020年03月12日  ·  16コメント  ·  ソース: moment/moment

バグを説明する

前置詞zaの意味でinin a minute従って、czechism(チェコ語から借用単語または使用)であるmomentza pár sekúndはチェコ語では正しく、スロバキア語では正しくありません。 スロバキア語では、正しい前置詞はフレーズのoです。

予想される行動

たとえば、次のように使用しますo pár secondの代わりにza pár sekúnd (:意味in a few seconds )。


更新:別の問題はpred 3 dnyこれはpred 3 dňamiある必要があります。 moment問題ではなく、 dayjsです。

Help Wanted Language Up-For-Grabs

最も参考になるコメント

うーん...おそらく、持続時間と瞬間の使用法を区別することができます。 もう少し開いたままにしておきます。

全てのコメント16件

@ k2sの考え?

  1. このチケットの記述は真実ではなく、有効なスロバキア語の構成です
  2. すべてはここで議論されましたhttps://github.com/moment/moment/pull/5409#issuecomment-618482801
  3. 解決策は.replace('za', 'o') 。現時点でのより良い解決策は、翻訳にコンテキストパラメータを提供することです。

@ k2s 、OPでの私のステートメントは_完全に_正しくありませんが、_部分的に_正しいです。 モーメントの問題の現在の実装として。 そして、実装は_完全に正しいわけではない_ので、修正する必要があると思います。 方法がわかりませんが、IMHOの出力は_常に_正しいはずです。

提案されたソリューション( .replace('za', 'o') )は、出力が_部分的に_正しいままになるため、回避策すらありませんが、逆になります。

あなたからの情報源に基づき、 #5409でのコメント(実際に有効である)私は、次のように書いていますコメント

  • zaは、何かが行われる_期間_について話すときに使用されます(_彼は1時間で調理したなど)。
  • oは、_ある時点_について話すときに使用されます(_彼女は1分で戻ってきます。_など)。

したがって、現在の出力はoに対しては正しくありません(ただし、 zaに対してoに対して正しい出力が得られますが、 zaはありません。

@tukusejssirsは、ライブラリでスロバキア語のサポートを実装および改善しようとしていることに感謝します。 モーメントライブラリに関連して、それは確立されたライブラリであり、多くのプロジェクトで使用されており、何かを変更することは、何よりも既存のコードを壊さないことを覚えておく必要があります。

このチケットの名前は、返されたza値が文法的に間違っていることを示しています。これは、バグであることを意味し、修正が必要です。 それは真実ではありません。

zaまたはoを正しく返すには、英語には必要のない追加のコンテキストが必要であり、私が知っていることですが、関連するモーメント関数ではサポートされていません。

完璧にしたいというあなたの願望を理解しています。それを実現する方法は、メソッドにコンテキストサポートを提供するmomentプラグインを作成することです。

さて、私は同じものを渡そうとしました:#5206、後で元に戻されました:-(
とにかくza / o変更に気付くスロバキアのユーザーはそれほど多くないと思うので、なぜ彼らが間違ったバージョンを保持しているのか、私にはわかりません。 どちらも有効ですが、ほとんどのユーザーは「in time infuture」フォームが必要だと思います。このフォームにはo前置詞を使用する必要があります。 スロバキア語で前置詞zaが使用されている「時間がかかった/行われた」という形式は、それほど頻繁ではありません。

@dakujem 、コメントありがとう

私はこのPRを作成したとき、私たちは常に使用する必要があります_thought_ oの代わりにza 、しかしK2S @(参照私が間違って証明した私のこのコメントを両方とも正しいが、交換可能ではないこと)。

したがって、私の_現在の_観点から、 zaのみまたはoのみのいずれかを使用する場合、両方が_常に真であるとは限らない_ため、両方とも等しく間違っています。 前置詞を使う場合に対応できるアルゴリズム(関数)を提案できればいいのですが、プログラミングが苦手です…多分できます。 :スマイリー:

確かに、両方が使用されます。 oが多いと思います。 だが...

残念ながら、私はJSの男ではありません🤷、私のJSプラグインは悪いでしょう😆

@dakujem 、現在は

ある時点と期間をどのように区別できるかわかりません。
ここでは変更を加えないと思います。

ロケールは、個々のユーザーがいつでも上書きできます。
https://momentjs.com/docs/#/customization/

それはとても残念です。

うーん...おそらく、持続時間と瞬間の使用法を区別することができます。 もう少し開いたままにしておきます。

いいですね。

この「メタデータ」を今すぐ取得する方法はありますか? それとも、Momentに実装する必要があるものですか?

どういう意味かわかりません。

今のところ:
期間を使用している場合は、oのロケールを更新できます。
モーメントを使用している場合は、すでにzaを使用します。

どういう意味かわかりません。

今のところ:
期間を使用している場合は、oのロケールを更新できます。
モーメントを使用している場合は、すでにzaを使用します。

考え直してみると、これではこの問題は解決されません。 in an hourは両方のo hodinu意味するためです(_私は1時間後に戻ります。_のように、oの時点を使用します。 now + 1 hour )とza hodinuHe cooked it in an hour.ように、期間について説明します)。

それでもこの問題が解決すると思われる場合は、2つを区別する方法をいくつかのコードスニペットと共有してください。 ありがとう。

この議論をもう一度読みました。

zaoの違いは、文の特定のコンテキストによって異なるようです。 おそらく、これについて議論しているいくつかの言語テキストがありますが、このライブラリで実装できるよりも具体的に聞こえます。 たとえば、Moment.jsは、「彼は1時間で調理した」と「私は1時間で戻ってくる」を区別できません。

最善の戦略は、1つを使用し、必要に応じてMoment.jsの外部で置き換えることです。

他にアイデアがある場合は、お気軽に再開してください。 頑張ってください!

Moment.jsは、「彼は1時間で調理した」と「私は1時間で戻ってくる」を区別できません。

@marwahaha 、それも私の印象でした。 残念ですが、本当です。 ほとんどのl10nツールが英語に関心があり、他のロケールを_完全にサポートするように変更できないのは残念です。 MomentがFluentのようになることを願っています。

それまでは行き止まりだと思います。

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