diff --git a/lib/Doctrine/Inflector/InflectorFactory.php b/lib/Doctrine/Inflector/InflectorFactory.php index a0740a7..453a45f 100644 --- a/lib/Doctrine/Inflector/InflectorFactory.php +++ b/lib/Doctrine/Inflector/InflectorFactory.php @@ -10,6 +10,7 @@ use Doctrine\Inflector\Rules\Portuguese; use Doctrine\Inflector\Rules\Spanish; use Doctrine\Inflector\Rules\Turkish; +use Doctrine\Inflector\Rules\Italian; use InvalidArgumentException; use function sprintf; @@ -42,6 +43,9 @@ public static function createForLanguage(string $language): LanguageInflectorFac case Language::TURKISH: return new Turkish\InflectorFactory(); + case Language::ITALIAN: + return new Italian\InflectorFactory(); + default: throw new InvalidArgumentException(sprintf( 'Language "%s" is not supported.', diff --git a/lib/Doctrine/Inflector/Language.php b/lib/Doctrine/Inflector/Language.php index 78c3cc7..e07a096 100644 --- a/lib/Doctrine/Inflector/Language.php +++ b/lib/Doctrine/Inflector/Language.php @@ -12,6 +12,7 @@ final class Language public const PORTUGUESE = 'portuguese'; public const SPANISH = 'spanish'; public const TURKISH = 'turkish'; + public const ITALIAN = 'italian'; private function __construct() { diff --git a/lib/Doctrine/Inflector/Rules/Italian/Inflectible.php b/lib/Doctrine/Inflector/Rules/Italian/Inflectible.php new file mode 100644 index 0000000..0d0f713 --- /dev/null +++ b/lib/Doctrine/Inflector/Rules/Italian/Inflectible.php @@ -0,0 +1,106 @@ +getFlippedSubstitutions() + ); + } + + public static function getPluralRuleset() : Ruleset + { + return new Ruleset( + new Transformations(...Inflectible::getPlural()), + new Patterns(...Uninflected::getPlural()), + new Substitutions(...Inflectible::getIrregular()) + ); + } +} diff --git a/lib/Doctrine/Inflector/Rules/Italian/Uninflected.php b/lib/Doctrine/Inflector/Rules/Italian/Uninflected.php new file mode 100644 index 0000000..4c2f304 --- /dev/null +++ b/lib/Doctrine/Inflector/Rules/Italian/Uninflected.php @@ -0,0 +1,48 @@ +