This repository has been archived by the owner on Jan 30, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 49
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'upstream/develop' into develop
- Loading branch information
93 parents
9e2c9d5
+
913f51c
+
39924f3
+
c2a11e1
+
61b9322
+
413a38b
+
e51b2b8
+
20e328b
+
6437ec0
+
e9b8476
+
95e54a0
+
7ea3aed
+
df6a706
+
a82fc82
+
7c2a059
+
4fefb53
+
599ee3a
+
ea3fc65
+
f6c04c2
+
6591e3d
+
a4f76e3
+
33c7531
+
2d59782
+
8152327
+
e56ce9b
+
db9b18f
+
b88635a
+
a262823
+
b79aef6
+
c2284e4
+
70193eb
+
96acf77
+
9675426
+
5f02411
+
0dafea7
+
15dc674
+
4a2447d
+
e6eb7f3
+
e9499c5
+
272b15f
+
11c7758
+
6f0e918
+
5f4980a
+
ecca95a
+
88b5971
+
ecb8d13
+
9de1c08
+
44aad17
+
13269e9
+
654cdb6
+
dc708db
+
380ffba
+
ff67e7f
+
fe2e025
+
95f0efa
+
68cc4b3
+
bf13b96
+
8870381
+
56480f4
+
1fa90d7
+
5c7fe1f
+
abe9bc1
+
a33cacd
+
cdd7d9f
+
6a261b1
+
5e594c4
+
01c1241
+
30d1dd2
+
d4af079
+
c9aa9b4
+
10f47ca
+
ef20fa1
+
2187ae2
+
e7f3993
+
db93d37
+
aa57612
+
4af81d8
+
2f90998
+
3013404
+
69d83fe
+
f383ca9
+
1b26f48
+
054f09d
+
9e59ae6
+
b96f402
+
b36e36b
+
60fa081
+
be1ce44
+
5a6465d
+
7e455b4
+
83d837e
+
28bc01e
+
215be48
commit efcc8e0
Showing
17 changed files
with
740 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
<?php | ||
/** | ||
* Zend Framework (http://framework.zend.com/) | ||
* | ||
* @link http://github.com/zendframework/zf2 for the canonical source repository | ||
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) | ||
* @license http://framework.zend.com/license/new-bsd New BSD License | ||
* @package Zend_I18n | ||
*/ | ||
|
||
namespace Zend\I18n\Translator\Loader; | ||
|
||
use Zend\Config\Reader\Ini as IniReader; | ||
use Zend\I18n\Exception; | ||
use Zend\I18n\Translator\Plural\Rule as PluralRule; | ||
use Zend\I18n\Translator\TextDomain; | ||
|
||
/** | ||
* PHP INI format loader. | ||
* | ||
* @category Zend | ||
* @package Zend_I18n | ||
* @subpackage Translator | ||
*/ | ||
class Ini implements FileLoaderInterface | ||
{ | ||
/** | ||
* load(): defined by FileLoaderInterface. | ||
* | ||
* @see FileLoaderInterface::load() | ||
* @param string $locale | ||
* @param string $filename | ||
* @return TextDomain|null | ||
* @throws Exception\InvalidArgumentException | ||
*/ | ||
public function load($locale, $filename) | ||
{ | ||
if (!is_file($filename) || !is_readable($filename)) { | ||
throw new Exception\InvalidArgumentException(sprintf( | ||
'Could not open file %s for reading', | ||
$filename | ||
)); | ||
} | ||
|
||
$messages = array(); | ||
$iniReader = new IniReader(); | ||
$messagesNamespaced = $iniReader->fromFile($filename); | ||
|
||
$list = $messagesNamespaced; | ||
if (isset($messagesNamespaced['translation'])) { | ||
$list = $messagesNamespaced['translation']; | ||
} | ||
|
||
foreach ($list as $message) { | ||
if (!is_array($message) || count($message) < 2) { | ||
throw new Exception\InvalidArgumentException( | ||
'Each INI row must be an array with message and translation' | ||
); | ||
} | ||
if (isset($message['message']) && isset($message['translation'])) { | ||
$messages[$message['message']] = $message['translation']; | ||
continue; | ||
} | ||
$messages[array_shift($message)] = array_shift($message); | ||
} | ||
|
||
if (!is_array($messages)) { | ||
throw new Exception\InvalidArgumentException(sprintf( | ||
'Expected an array, but received %s', | ||
gettype($messages) | ||
)); | ||
} | ||
|
||
$textDomain = new TextDomain($messages); | ||
|
||
if (array_key_exists('plural', $messagesNamespaced) | ||
&& isset($messagesNamespaced['plural']['plural_forms']) | ||
) { | ||
$textDomain->setPluralRule( | ||
PluralRule::fromString($messagesNamespaced['plural']['plural_forms']) | ||
); | ||
} | ||
|
||
return $textDomain; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,120 @@ | ||
<?php | ||
/** | ||
* Zend Framework (http://framework.zend.com/) | ||
* | ||
* @link http://github.com/zendframework/zf2 for the canonical source repository | ||
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) | ||
* @license http://framework.zend.com/license/new-bsd New BSD License | ||
* @package Zend_I18n | ||
*/ | ||
|
||
namespace Zend\I18n\Translator; | ||
|
||
use Zend\I18n\Translator\Translator; | ||
|
||
/** | ||
* @category Zend | ||
* @package Zend_I18n | ||
* @subpackage Translator | ||
*/ | ||
trait TranslatorAwareTrait | ||
{ | ||
/** | ||
* @var Translator | ||
*/ | ||
protected $translator = null; | ||
|
||
/** | ||
* @var bool | ||
*/ | ||
protected $translatorEnabled = true; | ||
|
||
/** | ||
* @var string | ||
*/ | ||
protected $translatorTextDomain = 'default'; | ||
|
||
/** | ||
* Sets translator to use in helper | ||
* | ||
* @param Translator $translator | ||
* @param string $textDomain | ||
* @return mixed | ||
*/ | ||
public function setTranslator(Translator $translator = null, $textDomain = null) | ||
{ | ||
$this->translator = $translator; | ||
|
||
if (!is_null($textDomain)) { | ||
$this->setTranslatorTextDomain($textDomain); | ||
} | ||
|
||
return $this; | ||
} | ||
|
||
/** | ||
* Returns translator used in object | ||
* | ||
* @return Translator | ||
*/ | ||
public function getTranslator() | ||
{ | ||
return $this->translator; | ||
} | ||
|
||
/** | ||
* Checks if the object has a translator | ||
* | ||
* @return bool | ||
*/ | ||
public function hasTranslator() | ||
{ | ||
return !is_null($this->translator); | ||
} | ||
|
||
/** | ||
* Sets whether translator is enabled and should be used | ||
* | ||
* @param bool $enabled | ||
* @return mixed | ||
*/ | ||
public function setTranslatorEnabled($enabled = true) | ||
{ | ||
$this->translatorEnabled = $enabled; | ||
|
||
return $this; | ||
} | ||
|
||
/** | ||
* Returns whether translator is enabled and should be used | ||
* | ||
* @return bool | ||
*/ | ||
public function isTranslatorEnabled() | ||
{ | ||
return $this->translatorEnabled; | ||
} | ||
|
||
/** | ||
* Set translation text domain | ||
* | ||
* @param string $textDomain | ||
* @return mixed | ||
*/ | ||
public function setTranslatorTextDomain($textDomain = 'default') | ||
{ | ||
$this->translatorTextDomain = $textDomain; | ||
|
||
return $this; | ||
} | ||
|
||
/** | ||
* Return the translation text domain | ||
* | ||
* @return string | ||
*/ | ||
public function getTranslatorTextDomain() | ||
{ | ||
return $this->translatorTextDomain; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
<?php | ||
/** | ||
* Zend Framework (http://framework.zend.com/) | ||
* | ||
* @link http://github.com/zendframework/zf2 for the canonical source repository | ||
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) | ||
* @license http://framework.zend.com/license/new-bsd New BSD License | ||
* @package Zend_View | ||
*/ | ||
|
||
namespace Zend\I18n\View\Helper; | ||
|
||
use Zend\I18n\Exception; | ||
use Zend\I18n\Translator\Plural\Rule as PluralRule; | ||
use Zend\View\Helper\AbstractHelper; | ||
|
||
/** | ||
* Helper for rendering text based on a count number (like the I18n plural translation helper, but when translation | ||
* is not needed). | ||
* | ||
* Please note that we did not write any hard-coded rules for languages, as languages can evolve, we prefered to | ||
* let the developer define the rules himself, instead of potentially break applications if we change rules in the | ||
* future. | ||
* | ||
* However, you can find most of the up-to-date plural rules for most languages in those links: | ||
* - http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html | ||
* - https://developer.mozilla.org/en-US/docs/Localization_and_Plurals | ||
* | ||
* @category Zend | ||
* @package Zend_I18n | ||
* @subpackage View | ||
*/ | ||
class Plural extends AbstractHelper | ||
{ | ||
/** | ||
* Rule to use | ||
* | ||
* @var PluralRule | ||
*/ | ||
protected $rule; | ||
|
||
/** | ||
* Set the plural rule to use | ||
* | ||
* @param PluralRule|string $pluralRule | ||
* @return Plural | ||
*/ | ||
public function setPluralRule($pluralRule) | ||
{ | ||
if (!$pluralRule instanceof PluralRule) { | ||
$pluralRule = PluralRule::fromString($pluralRule); | ||
} | ||
|
||
$this->rule = $pluralRule; | ||
|
||
return $this; | ||
} | ||
|
||
/** | ||
* Given an array of strings, a number and, if wanted, an optional locale (the default one is used | ||
* otherwise), this picks the right string according to plural rules of the locale | ||
* | ||
* @param array|string $strings | ||
* @param int $number | ||
* @throws Exception\InvalidArgumentException | ||
* @return string | ||
*/ | ||
public function __invoke($strings, $number) | ||
{ | ||
if ($this->rule === null) { | ||
throw new Exception\InvalidArgumentException(sprintf( | ||
'No plural rule was set' | ||
)); | ||
} | ||
|
||
if (!is_array($strings)) { | ||
$strings = (array) $strings; | ||
} | ||
|
||
$pluralIndex = $this->rule->evaluate($number); | ||
|
||
return $strings[$pluralIndex]; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.