O webu
Skloňování

Pokud se má na stránce automaticky vypisovat něco ve stylu „5 nových komentářů“, je třeba řešit skloňování.

Bez správného ohýbání slov by web mohly hyzdit texty typu:

  • 2 nových komentářů
  • Nových komentářů: 1

Skloňování počtu v češtině

Zatímco angličtina rozlišuje mezi jedničkou a vším ostatním (1 comment vs. 2 comments), čeština je v tomto komplikovanější.

  • 1 komentář
  • 2, 3, 4 komentáře
  • 5 a více komentářů

Při psaní českého textu aplikace jsou proto potřeba tři různé tvary.

Skloňování v JavaScriptu

Funkce zajišťující správné skloňování musí zvolit česky korektní tvar na základě počtu. Aby funkce fungovala i pro záporná čísla převádí se počet na číslo kladné – absolutní hodnotu (Math.abs).

function sklonovani(pocet, slova) {
  pocet = Math.abs(pocet);
  if (pocet == 1) return slova[0];
  if (pocet < 5 && pocet > 0) return slova[1];
  return slova[2];
}

Použití je následovné (tvary pro jednotlivé počty se předávají jako pole):

var pocetKomentaru = 5;
alert(
  sklonovani(
    pocetKomentaru, 
    ['komentář', 'komentáře', 'komentářů']
  )
);
webů

Samostatná ukázka

Skloňování slov v PHP

PHP a JS jsou si hodně podobné.

Skloňující funkce tedy bude velmi podobná jako v JavaScriptu.

function sklonovani($pocet, $slova) {
  $pocet = abs($pocet);
  if ($pocet == 1) return $slova[0];
  if ($pocet < 5 && $pocet > 0) return $slova[1];
  return $slova[2];
}

Použití:

echo sklonovani(
  3, // tři komentáře 
  array('komentář', 'komentáře', 'komentářů')
);

Správný tvar slov v CSS

I v prostém HTML/CSS jde skloňování nouzově vyřešit.

Dá-li se zajistit výpis počtu do CSS třídy, správného tvaru slov se docílí vypsáním v CSS vlastností content.