From f653980b20cfb27387364ecc8e9dcd0625da668e Mon Sep 17 00:00:00 2001 From: Kyle Essex Date: Wed, 24 Jan 2024 16:56:08 +0000 Subject: [PATCH] Min Support Plurals --- src/Cli/GenerateTPL.php | 2 +- src/Cli/Potoar.php | 18 +++++++++++++++--- src/Cli/Translate.php | 11 ++++++++++- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/Cli/GenerateTPL.php b/src/Cli/GenerateTPL.php index 44498b2..459104b 100644 --- a/src/Cli/GenerateTPL.php +++ b/src/Cli/GenerateTPL.php @@ -138,7 +138,7 @@ protected function _processMatches(array $matches, $file) $this->_writeCatalog($catalog); } - protected function _writeCatalog($catalog) + protected function _writeCatalog(DynamicArrayCatalog $catalog) { $root = rtrim($this->getContext()->getProjectRoot(), DIRECTORY_SEPARATOR); $transDir = $root . DIRECTORY_SEPARATOR . 'translations' . DIRECTORY_SEPARATOR; diff --git a/src/Cli/Potoar.php b/src/Cli/Potoar.php index 1c5d090..a0c7527 100644 --- a/src/Cli/Potoar.php +++ b/src/Cli/Potoar.php @@ -72,12 +72,24 @@ protected function _processLanguage($source, $output): void { foreach($translation->getReferences() as $ref) { + $out[] = "'" . $ref . "' => ["; + if($translation->getSingularTranslation()) { - $out[] = "'" . $ref . "' => ['_' => '" - . addcslashes(stripslashes($this->_toTranslation($translation->getSingularTranslation())), "'") - . "'],"; + $out[] = "'_' => '" . addcslashes( + stripslashes($this->_toTranslation($translation->getSingularTranslation())), + "'" + ) . "',"; + } + + if($translation->getPluralTranslation()) + { + $out[] = "'2..n' => '" . addcslashes( + stripslashes($this->_toTranslation($translation->getPluralTranslation())), + "'" + ) . "',"; } + $out[] = "],"; } } } diff --git a/src/Cli/Translate.php b/src/Cli/Translate.php index 2879d1c..7edd2b1 100644 --- a/src/Cli/Translate.php +++ b/src/Cli/Translate.php @@ -84,7 +84,16 @@ protected function _createTranslations($mid, $options, $lang, PoFile $poEdit): v unset($options['n']); } - $tran->setAdditionalPluralTranslations($options); + if(isset($options['n..0,2..n'])) + { + $tran->setSingularSource($options[1]); + $tran->setPluralSource($options['n..0,2..n']); + + $tran->setSingularTranslation($this->_getTranslation($options[1], $lang)); + $tran->setPluralTranslation($this->_getTranslation($options['n..0,2..n'], $lang)); + unset($options['n..0,2..n']); + } + $poEdit->addTranslation($tran); }