バグを説明する
前置詞za
の意味でin
でin a minute
従って、czechism(チェコ語から借用単語または使用)であるmoment
のza 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
です。
@ k2sの考え?
.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 hodinu
( He cooked it in an hour.
ように、期間について説明します)。
それでもこの問題が解決すると思われる場合は、2つを区別する方法をいくつかのコードスニペットと共有してください。 ありがとう。
この議論をもう一度読みました。
za
とo
の違いは、文の特定のコンテキストによって異なるようです。 おそらく、これについて議論しているいくつかの言語テキストがありますが、このライブラリで実装できるよりも具体的に聞こえます。 たとえば、Moment.jsは、「彼は1時間で調理した」と「私は1時間で戻ってくる」を区別できません。
最善の戦略は、1つを使用し、必要に応じてMoment.jsの外部で置き換えることです。
他にアイデアがある場合は、お気軽に再開してください。 頑張ってください!
Moment.jsは、「彼は1時間で調理した」と「私は1時間で戻ってくる」を区別できません。
@marwahaha 、それも私の印象でした。 残念ですが、本当です。 ほとんどのl10nツールが英語に関心があり、他のロケールを_完全にサポートするように変更できないのは残念です。 MomentがFluentのようになることを願っています。
それまでは行き止まりだと思います。
最も参考になるコメント
うーん...おそらく、持続時間と瞬間の使用法を区別することができます。 もう少し開いたままにしておきます。