From c7f7195107b973ab35a040d62fb3c1e6b7eb5ae2 Mon Sep 17 00:00:00 2001 From: Ben Martin <monkeyiq@users.sourceforge.net> Date: Wed, 14 Feb 2024 06:50:32 +1000 Subject: [PATCH] A first attempt at storing generated po files in sorted order. This should hopefully minimize the number of changes that git sees when storing these files in a repo --- .../UpdateTranslatableStringsCommand.php | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/SimpleSAML/Command/UpdateTranslatableStringsCommand.php b/src/SimpleSAML/Command/UpdateTranslatableStringsCommand.php index ad4c130fb..24c44e841 100644 --- a/src/SimpleSAML/Command/UpdateTranslatableStringsCommand.php +++ b/src/SimpleSAML/Command/UpdateTranslatableStringsCommand.php @@ -64,6 +64,26 @@ class UpdateTranslatableStringsCommand extends Command ); } + /** + * Clone the entries from $iterator into the passed Translations object. + * It is expected that $iterator was made by getIterator() on Translations. + * This can be useful as the entries are cloned in the iterator order. + * + * @param Gettext\Translations $ret + * @param iterable $iterator + * @return $ret + */ + protected function cloneIteratorToTranslations(Translations $ret, iterable $iterator): Translations + { + while ($iterator->valid()) { + $ret->addOrMerge( + $iterator->current(), + Merge::TRANSLATIONS_THEIRS | Merge::COMMENTS_OURS | Merge::HEADERS_OURS | Merge::REFERENCES_OURS, + ); + $iterator->next(); + } + return $ret; + } /** * @param \Symfony\Component\Console\Input\InputInterface $input @@ -159,6 +179,16 @@ class UpdateTranslatableStringsCommand extends Command Merge::TRANSLATIONS_THEIRS | Merge::COMMENTS_OURS | Merge::HEADERS_OURS | Merge::REFERENCES_OURS, ); + // + // Sort the translations in a predictable way + // + $iter = $merged->getIterator(); + $iter->ksort(); + $merged = $this->cloneIteratorToTranslations( + Translations::create($merged->getDomain(), $merged->getLanguage()), + $iter, + ); + $poGenerator->generateFile($merged, $poFile->getPathName()); } } -- GitLab