Italian Rules

Italian pluralization and singularization rules.

This module defines the complete set of Italian pluralization rules used by pluralio. It is imported automatically when import pluralio is executed, which triggers the registration of the it language in the global registry.

The rules are organized into four categories:

  1. Irregular plurals: Words that do not follow regex patterns and must be memorized. This includes sdrucciola -co-ci (e.g. "amico" "amici"), sdrucciola -go-gi (e.g. "asparago" "asparagi"), piana -go-ghi explicit mappings (e.g. "lago" "laghi"), completely irregular words (e.g. "uomo" "uomini", "dio" "dei"), and foreign loanwords (e.g. "film" "film"). The inverse mapping (plural → singular) is auto-generated.

  2. Extra singulars: Additional plural → singular mappings that cannot be derived from the irregular plurals. These handle cases where the singular form requires a different ending than the regex would produce (e.g. "amici" "amico", "uova" "uovo").

  3. Regex rules: Ordered patterns applied to words that are not in the irregular or uncountable lists. The first matching rule wins. Rules cover common Italian pluralization patterns: - -ca-che, -ga-ghe (feminine) - -co-chi, -go-ghi (piana) - -io-i, -o-i, -a-e, -e-i - -s/-x → invariable, default → +i

  4. Uncountable words: Words that are invariable — their plural form is identical to their singular form. This includes foreign loanwords (film, bar, computer), Greek-origin forms in -i (analisi, crisi), pluralia tantum (occhiali, forbici), and truncated forms (foto, auto).

Known limitations:

  • ``-i`` ambiguity: -i can come from -o (libri libro), -e (cani cane), or -io (vizi vizio). Regex defaults to -o; -e and -io words are in irregulars/ extra singles for common cases.

  • ``-co``/``-go`` split: Regex always produces -chi/-ghi (piana). Sdrucciola words (amico amici) are in irregulars.

  • ``-ci``/``-gi`` singularization: Regex gives -ce/-ge (luci luce), but -co/-go words (amici amico) need extra singles.

  • Stress detection: Italian stress is not marked orthographically. Regex can’t detect stress position, so the -co/-go split relies on irregulars.

Reference: ref/rules.md for the full rules documentation.