From 19845395d887793f487ba6c2e31aab7e827dbe90 Mon Sep 17 00:00:00 2001 From: epriestley Date: Thu, 1 Jan 2015 08:13:33 -0800 Subject: [PATCH] Allow PhutilTranslator::translate() to return defaults Summary: Allow PhutilTranslator::translate() to return defaults Test Plan: Just check some strings returned correctly. Reviewers: epriestley, #blessed_reviewers Reviewed By: epriestley, #blessed_reviewers Subscribers: Korvin, Zolli, epriestley Projects: #localization Maniphest Tasks: T6845 Differential Revision: https://secure.phabricator.com/D11121 --- .../base/controller/PhabricatorController.php | 2 +- src/infrastructure/env/PhabricatorEnv.php | 2 +- .../translation/PhabricatorTranslation.php | 28 +++++++++++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/applications/base/controller/PhabricatorController.php b/src/applications/base/controller/PhabricatorController.php index 8a650fc7bd..9fe102b9d7 100644 --- a/src/applications/base/controller/PhabricatorController.php +++ b/src/applications/base/controller/PhabricatorController.php @@ -102,7 +102,7 @@ abstract class PhabricatorController extends AphrontController { $translation = newv($translation, array()); PhutilTranslator::getInstance() ->setLanguage($translation->getLanguage()) - ->addTranslations($translation->getTranslations()); + ->addTranslations($translation->getCleanTranslations()); } $preferences = $user->loadPreferences(); diff --git a/src/infrastructure/env/PhabricatorEnv.php b/src/infrastructure/env/PhabricatorEnv.php index 5d1a65a7df..3b78ebb1c4 100644 --- a/src/infrastructure/env/PhabricatorEnv.php +++ b/src/infrastructure/env/PhabricatorEnv.php @@ -117,7 +117,7 @@ final class PhabricatorEnv { $translation = PhabricatorEnv::newObjectFromConfig('translation.provider'); PhutilTranslator::getInstance() ->setLanguage($translation->getLanguage()) - ->addTranslations($translation->getTranslations()); + ->addTranslations($translation->getCleanTranslations()); } private static function buildConfigurationSourceStack() { diff --git a/src/infrastructure/internationalization/translation/PhabricatorTranslation.php b/src/infrastructure/internationalization/translation/PhabricatorTranslation.php index 1912781dae..11ae6baa75 100644 --- a/src/infrastructure/internationalization/translation/PhabricatorTranslation.php +++ b/src/infrastructure/internationalization/translation/PhabricatorTranslation.php @@ -6,4 +6,32 @@ abstract class PhabricatorTranslation { abstract public function getName(); abstract public function getTranslations(); + + /** + * Return the cleaned translation array. + * + * @return dict Translation map with empty translations removed. + */ + public function getCleanTranslations() { + return $this->clean($this->getTranslations()); + } + + + /** + * Removes NULL-valued translation keys from the translation map, to prevent + * echoing out empty strings. + * + * @param dict Translation map, with empty translations. + * @return dict Map with empty translations removed. + */ + protected function clean(array $translation_array) { + foreach ($translation_array as $key => $translation_string) { + if ($translation_string === null) { + unset($translation_array[$key]); + } + } + + return $translation_array; + } + }