ソフトウェアでは、英語で複数形/単数形の名詞を処理するのは難しい場合があります。 Simpler というライブラリを使用すると、この問題を解決するための簡単なJavaScriptユーティリティが提供されます。

人間の言語に由来するプログラミングにはいくつかの問題があります。 これらの問題の1つは、単数形/複数形の名詞です。

1つのジャガイモは「ジャガイモ」と綴られますが、2つ以上は「ジャガイモ」と綴られます。 JavaScriptでこれにどのように取り組みますか?

いくつかの方法がありますが、それらは特にエレガントではありません…

const shoppingCart = ['guitar', 'bicycle', 'shoes'];

/* 1st approach */
const noun = shoppingCart.length >= 2
  ? 'items'
  : 'item';
const text1 = `You have ${shoppingCart.length} ${noun} in your shopping cart`;
// "You have 3 items in your shopping cart"

/* 2nd approach */
const text2 = `You have ${shoppingCart.length} item(s) in your shopping cart`;
// "You have 3 item(s) in your shopping cart"

これらのソリューションは機能しますが、 Simpler と呼ばれる新しいライブラリには、それを解決するための非常にスマートな方法があります🌟

英語の例を使用していますが、多くの言語では、複数形の名詞のつづりが単数形とは異なるという同じ問題が発生します。

Simplurの使用

npmを介してsimplurをインストールできます。

$ npm install simplur

simplurの使用方法は次のとおりです。

import simplur from 'simplur';

const breadCount = 12;
const text = simplur`Get ${breadCount} loa[f|ves] of bread`;
// "Get 12 loaves of bread"

Simplurは、simplur関数を使用してタグ付きであるテンプレート文字列を使用し、数値が1より大きい場合は、2番目の名詞形式を使用します。 そのような単純な!

空のSingluarフォーム

Simplurは、(単語の重要な部分を変更する代わりに)複数形の接尾辞のみを追加する名詞でも機能します。

const shoppingCart = ['shoes'];
const text = simplur`You have ${shoppingCart.length} item[|s] in your shopping cart`;
// "You have 1 item in your shopping cart"

最初のフォームを省略する必要があります。

複数名詞形

いくつかの名詞を含めることができ、simplurは「先を見据える」でしょう。 英語では、this / that / these/theseのような「指示語」は次のように簡単に処理できます。

const chipmunks = ['alvin', 'simon', 'theodore'];
const text = simplur`[That|Those] ${chipmunks.length} chipmunk[|s] [is|are] getting away!`;
// "Those 3 chipmunks are getting away!"

結論

英語(およびほとんどの言語)は正確な計測器ではなく、これは興味深いプログラミングの問題につながる可能性があります。 うまくいけば、JavaScriptプロジェクトでの使用にsimplurが役立つことがわかりました。