Example #1
0
 /**
  * Test parsing a file with message context on some msgid values.
  *
  * This behavior is not ideal, but more thorough solutions
  * would break compatibility. Perhaps this is something we can
  * reconsider in 4.x
  *
  * @return void
  */
 public function testParseContextOnSomeMessages()
 {
     $parser = new PoFileParser();
     $file = APP . 'Locale' . DS . 'en' . DS . 'context.po';
     $messages = $parser->parse($file);
     I18n::translator('default', 'en_US', function () use($messages) {
         $package = new Package('default');
         $package->setMessages($messages);
         return $package;
     });
     $this->assertTextEquals('En cours', $messages['Pending']);
     $this->assertTextEquals('En resolved', $messages['Resolved']);
 }
Example #2
0
 /**
  * Returns correct plural form of message identified by $singular and $plural for count $count.
  * Allows you to override the current domain for a single message lookup.
  * The context is a unique identifier for the translations string that makes it unique
  * within the same domain.
  *
  * @param string $domain Domain.
  * @param string $context Context of the text.
  * @param string $singular Singular text to translate.
  * @param string $plural Plural text.
  * @param int $count Count.
  * @param mixed $args Array with arguments or multiple arguments in function.
  * @return string|null Plural form of translated string.
  * @link http://book.cakephp.org/3.0/en/core-libraries/global-constants-and-functions.html#__dxn
  */
 function __dxn($domain, $context, $singular, $plural, $count, $args = null)
 {
     if (!$singular) {
         return null;
     }
     $arguments = func_num_args() === 6 ? (array) $args : array_slice(func_get_args(), 5);
     return I18n::translator($domain)->translate($plural, ['_count' => $count, '_singular' => $singular, '_context' => $context] + $arguments);
 }
Example #3
0
 /**
  * Tests that it is possible to register a generic translators factory for a domain
  * instead of having to create them manually
  *
  * @return void
  */
 public function testFallbackTranslatorWithFactory()
 {
     I18n::translator('default', 'fr_FR', function () {
         $package = new Package('default');
         $package->setMessages(['Dog' => 'Le bark']);
         return $package;
     });
     I18n::config('custom', function ($name, $locale) {
         $this->assertEquals('custom', $name);
         $package = new Package('default');
         $package->setMessages(['Cow' => 'Le moo']);
         return $package;
     });
     $translator = I18n::translator('custom', 'fr_FR');
     $this->assertEquals('Le moo', $translator->translate('Cow'));
     $this->assertEquals('Le bark', $translator->translate('Dog'));
 }