Skip to content
Browse files

Throw exceptions when '' is used as translation domain.

'' is never a good translation domain and often indicates developer
error. Treat it as a mistake and throw an exception.

Fixes #3939
  • Loading branch information...
1 parent 76aab0a commit 17b25388b32b063534935a01d1b43e7ee13b8bb5 @markstory markstory committed
Showing with 17 additions and 2 deletions.
  1. +7 −2 lib/Cake/I18n/I18n.php
  2. +10 −0 lib/Cake/Test/Case/I18n/I18nTest.php
View
9 lib/Cake/I18n/I18n.php
@@ -124,12 +124,14 @@ public static function getInstance() {
*
* @param string $singular String to translate
* @param string $plural Plural string (if any)
- * @param string $domain Domain The domain of the translation. Domains are often used by plugin translations
+ * @param string $domain Domain The domain of the translation. Domains are often used by plugin translations.
+ * If null, the default domain will be used.
* @param string $category Category The integer value of the category to use.
* @param integer $count Count Count is used with $plural to choose the correct plural form.
* @param string $language Language to translate string to.
- * If null it checks for language in session followed by Config.language configuration variable.
+ * If null it checks for language in session followed by Config.language configuration variable.
* @return string translated string.
+ * @throws CakeException When '' is provided as a domain.
*/
public static function translate($singular, $plural = null, $domain = null, $category = 6, $count = null, $language = null) {
$_this = I18n::getInstance();
@@ -162,6 +164,9 @@ public static function translate($singular, $plural = null, $domain = null, $cat
if (is_null($domain)) {
$domain = self::$defaultDomain;
}
+ if ($domain === '') {
+ throw new CakeException(__d('cake_dev', 'You cannot use "" as a domain.'));
+ }
$_this->domain = $domain . '_' . $_this->l10n->lang;
View
10 lib/Cake/Test/Case/I18n/I18nTest.php
@@ -1855,6 +1855,16 @@ public function testTranslateLanguageParam() {
}
/**
+ * Test that the '' domain causes exceptions.
+ *
+ * @expectedException CakeException
+ * @return void
+ */
+ public function testTranslateEmptyDomain() {
+ I18n::translate('Plural Rule 1', null, '');
+ }
+
+/**
* Singular method
*
* @return void

0 comments on commit 17b2538

Please sign in to comment.
Something went wrong with that request. Please try again.