Browse Source

Merge pull request #4023 from cvo-technologies/2.6-basics-context

Add the other translation shortcuts for context support
José Lorenzo Rodríguez 11 years ago
parent
commit
92957913d9
2 changed files with 204 additions and 1 deletions
  1. 7 0
      lib/Cake/Console/Command/Task/ExtractTask.php
  2. 197 1
      lib/Cake/basics.php

+ 7 - 0
lib/Cake/Console/Command/Task/ExtractTask.php

@@ -380,6 +380,13 @@ class ExtractTask extends AppShell {
 			$this->_parse('__dcn', array('domain', 'singular', 'plural', 'count', 'category'));
 
 			$this->_parse('__x', array('context', 'singular'));
+			$this->_parse('__xn', array('context', 'singular', 'plural'));
+			$this->_parse('__dx', array('domain', 'context', 'singular'));
+			$this->_parse('__dxc', array('domain', 'context', 'singular', 'category'));
+			$this->_parse('__dxn', array('domain', 'context', 'singular', 'plural'));
+			$this->_parse('__dxcn', array('domain', 'context', 'singular', 'plural', 'count', 'category'));
+			$this->_parse('__xc', array('context', 'singular', 'category'));
+
 		}
 	}
 

+ 197 - 1
lib/Cake/basics.php

@@ -800,7 +800,203 @@ if (!function_exists('__x')) {
 		App::uses('I18n', 'I18n');
 		$translated = I18n::translate($singular, null, null, null, null, null, $context);
 		$arguments = func_get_args();
-		return I18n::insertArgs($translated, array_slice($arguments, 1));
+		return I18n::insertArgs($translated, array_slice($arguments, 2));
+	}
+
+}
+
+if (!function_exists('__xn')) {
+
+/**
+ * Returns correct plural form of message identified by $singular and $plural for count $count.
+ * Some languages have more than one form for plural messages dependent on the count.
+ *
+ * @param string $context Context of the text
+ * @param string $singular Singular text to translate
+ * @param string $plural Plural text
+ * @param integer $count Count
+ * @param mixed $args Array with arguments or multiple arguments in function
+ * @return mixed plural form of translated string
+ * @link http://book.cakephp.org/2.0/en/core-libraries/global-constants-and-functions.html#__n
+ */
+	function __xn($context, $singular, $plural, $count, $args = null) {
+		if (!$singular) {
+			return;
+		}
+
+		App::uses('I18n', 'I18n');
+		$translated = I18n::translate($singular, $plural, null, I18n::LC_MESSAGES, $count, null, $context);
+		$arguments = func_get_args();
+		return I18n::insertArgs($translated, array_slice($arguments, 4));
+	}
+
+}
+
+if (!function_exists('__dx')) {
+
+/**
+ * Allows you to override the current domain for a single message lookup.
+ *
+ * @param string $domain Domain
+ * @param string $context Context of the text
+ * @param string $msg String to translate
+ * @param mixed $args Array with arguments or multiple arguments in function
+ * @return translated string
+ * @link http://book.cakephp.org/2.0/en/core-libraries/global-constants-and-functions.html#__d
+ */
+	function __dx($domain, $context, $msg, $args = null) {
+		if (!$msg) {
+			return;
+		}
+		App::uses('I18n', 'I18n');
+		$translated = I18n::translate($msg, null, $domain, null, null, null, $context);
+		$arguments = func_get_args();
+		return I18n::insertArgs($translated, array_slice($arguments, 3));
+	}
+
+}
+
+if (!function_exists('__dxn')) {
+
+/**
+ * Allows you to override the current domain for a single plural message lookup.
+ * Returns correct plural form of message identified by $singular and $plural for count $count
+ * from domain $domain.
+ *
+ * @param string $domain Domain
+ * @param string $context Context of the text
+ * @param string $singular Singular string to translate
+ * @param string $plural Plural
+ * @param integer $count Count
+ * @param mixed $args Array with arguments or multiple arguments in function
+ * @return plural form of translated string
+ * @link http://book.cakephp.org/2.0/en/core-libraries/global-constants-and-functions.html#__dn
+ */
+	function __dxn($domain, $context, $singular, $plural, $count, $args = null) {
+		if (!$singular) {
+			return;
+		}
+		App::uses('I18n', 'I18n');
+		$translated = I18n::translate($singular, $plural, $domain, I18n::LC_MESSAGES, $count, null, $context);
+		$arguments = func_get_args();
+		return I18n::insertArgs($translated, array_slice($arguments, 5));
+	}
+
+}
+
+if (!function_exists('__dxc')) {
+
+/**
+ * Allows you to override the current domain for a single message lookup.
+ * It also allows you to specify a category.
+ *
+ * The category argument allows a specific category of the locale settings to be used for fetching a message.
+ * Valid categories are: LC_CTYPE, LC_NUMERIC, LC_TIME, LC_COLLATE, LC_MONETARY, LC_MESSAGES and LC_ALL.
+ *
+ * Note that the category must be specified with a class constant of I18n, instead of the constant name. The values are:
+ *
+ * - LC_ALL       I18n::LC_ALL
+ * - LC_COLLATE   I18n::LC_COLLATE
+ * - LC_CTYPE     I18n::LC_CTYPE
+ * - LC_MONETARY  I18n::LC_MONETARY
+ * - LC_NUMERIC   I18n::LC_NUMERIC
+ * - LC_TIME      I18n::LC_TIME
+ * - LC_MESSAGES  I18n::LC_MESSAGES
+ *
+ * @param string $domain Domain
+ * @param string $context Context of the text
+ * @param string $msg Message to translate
+ * @param integer $category Category
+ * @param mixed $args Array with arguments or multiple arguments in function
+ * @return translated string
+ * @link http://book.cakephp.org/2.0/en/core-libraries/global-constants-and-functions.html#__dc
+ */
+	function __dxc($domain, $context, $msg, $category, $args = null) {
+		if (!$msg) {
+			return;
+		}
+		App::uses('I18n', 'I18n');
+		$translated = I18n::translate($msg, null, $domain, $category, null, null, $context);
+		$arguments = func_get_args();
+		return I18n::insertArgs($translated, array_slice($arguments, 4));
+	}
+
+}
+
+if (!function_exists('__dxcn')) {
+
+/**
+ * Allows you to override the current domain for a single plural message lookup.
+ * It also allows you to specify a category.
+ * Returns correct plural form of message identified by $singular and $plural for count $count
+ * from domain $domain.
+ *
+ * The category argument allows a specific category of the locale settings to be used for fetching a message.
+ * Valid categories are: LC_CTYPE, LC_NUMERIC, LC_TIME, LC_COLLATE, LC_MONETARY, LC_MESSAGES and LC_ALL.
+ *
+ * Note that the category must be specified with a class constant of I18n, instead of the constant name. The values are:
+ *
+ * - LC_ALL       I18n::LC_ALL
+ * - LC_COLLATE   I18n::LC_COLLATE
+ * - LC_CTYPE     I18n::LC_CTYPE
+ * - LC_MONETARY  I18n::LC_MONETARY
+ * - LC_NUMERIC   I18n::LC_NUMERIC
+ * - LC_TIME      I18n::LC_TIME
+ * - LC_MESSAGES  I18n::LC_MESSAGES
+ *
+ * @param string $domain Domain
+ * @param string $context Context of the text
+ * @param string $singular Singular string to translate
+ * @param string $plural Plural
+ * @param integer $count Count
+ * @param integer $category Category
+ * @param mixed $args Array with arguments or multiple arguments in function
+ * @return plural form of translated string
+ * @link http://book.cakephp.org/2.0/en/core-libraries/global-constants-and-functions.html#__dcn
+ */
+	function __dxcn($domain, $context, $singular, $plural, $count, $category, $args = null) {
+		if (!$singular) {
+			return;
+		}
+		App::uses('I18n', 'I18n');
+		$translated = I18n::translate($singular, $plural, $domain, $category, $count, null, $context);
+		$arguments = func_get_args();
+		return I18n::insertArgs($translated, array_slice($arguments, 6));
+	}
+
+}
+
+if (!function_exists('__xc')) {
+
+/**
+ * The category argument allows a specific category of the locale settings to be used for fetching a message.
+ * Valid categories are: LC_CTYPE, LC_NUMERIC, LC_TIME, LC_COLLATE, LC_MONETARY, LC_MESSAGES and LC_ALL.
+ *
+ * Note that the category must be specified with a class constant of I18n, instead of the constant name. The values are:
+ *
+ * - LC_ALL       I18n::LC_ALL
+ * - LC_COLLATE   I18n::LC_COLLATE
+ * - LC_CTYPE     I18n::LC_CTYPE
+ * - LC_MONETARY  I18n::LC_MONETARY
+ * - LC_NUMERIC   I18n::LC_NUMERIC
+ * - LC_TIME      I18n::LC_TIME
+ * - LC_MESSAGES  I18n::LC_MESSAGES
+ *
+ * @param string $context Context of the text
+ * @param string $msg String to translate
+ * @param integer $category Category
+ * @param mixed $args Array with arguments or multiple arguments in function
+ * @return translated string
+ * @link http://book.cakephp.org/2.0/en/core-libraries/global-constants-and-functions.html#__c
+ */
+	function __xc($context, $msg, $category, $args = null) {
+		if (!$msg) {
+			return;
+		}
+		App::uses('I18n', 'I18n');
+		$translated = I18n::translate($msg, null, null, $category, null, null, $context);
+		$arguments = func_get_args();
+		return I18n::insertArgs($translated, array_slice($arguments, 3));
 	}
 
 }