diff options
author | Tristan Darricau <tristan.darricau@sensiolabs.com> | 2016-01-26 22:32:08 +0100 |
---|---|---|
committer | Tristan Darricau <tristan.darricau@sensiolabs.com> | 2016-01-26 23:45:51 +0100 |
commit | f5ca8c363bbd6776e9be8d2e05c3cf54685b0a59 (patch) | |
tree | fb30f1d852da9060b3ac033a36ad283ad3c667ae | |
parent | 56062a2635551c29b1b983e000f0d1ee6a482fb9 (diff) | |
download | forums-f5ca8c363bbd6776e9be8d2e05c3cf54685b0a59.tar forums-f5ca8c363bbd6776e9be8d2e05c3cf54685b0a59.tar.gz forums-f5ca8c363bbd6776e9be8d2e05c3cf54685b0a59.tar.bz2 forums-f5ca8c363bbd6776e9be8d2e05c3cf54685b0a59.tar.xz forums-f5ca8c363bbd6776e9be8d2e05c3cf54685b0a59.zip |
[ticket/14432] Adds a method to get raw language values
PHPBB3-14432
-rw-r--r-- | phpBB/phpbb/language/language.php | 26 | ||||
-rw-r--r-- | tests/language/language_test.php | 19 |
2 files changed, 42 insertions, 3 deletions
diff --git a/phpBB/phpbb/language/language.php b/phpBB/phpbb/language/language.php index 382d4db89e..42429c2c07 100644 --- a/phpBB/phpbb/language/language.php +++ b/phpBB/phpbb/language/language.php @@ -246,14 +246,14 @@ class language } /** - * Act like lang() but takes a key and an array of parameters instead of using variadic + * Returns the raw value associated to a language key or the language key no translation is available. + * No parameter substitution is performed, can be a string or an array. * * @param string|array $key Language key - * @param array $args Parameters * * @return array|string */ - public function lang_array($key, $args = array()) + public function lang_raw($key) { // Load common language files if they not loaded yet if (!$this->common_language_files_loaded) @@ -281,6 +281,26 @@ class language return $key; } + return $lang; + } + + /** + * Act like lang() but takes a key and an array of parameters instead of using variadic + * + * @param string|array $key Language key + * @param array $args Parameters + * + * @return string + */ + public function lang_array($key, $args = array()) + { + $lang = $this->lang_raw($key); + + if ($lang === $key) + { + return $key; + } + // If the language entry is a string, we simply mimic sprintf() behaviour if (is_string($lang)) { diff --git a/tests/language/language_test.php b/tests/language/language_test.php index 6a814e39dc..29b4873dcb 100644 --- a/tests/language/language_test.php +++ b/tests/language/language_test.php @@ -53,6 +53,25 @@ class phpbb_language_test extends phpbb_test_case $this->assertFalse($this->lang->is_set(array('PHPBB', 'PHP'))); } + public function test_lang_raw() + { + $this->assertEquals($this->lang->lang_raw('FOO'), 'BAR'); + $this->assertEquals($this->lang->lang_raw('VOID'), 'VOID'); + $this->assertEquals($this->lang->lang_raw('ARRY'), array( + 0 => 'No posts', // 0 + 1 => '1 post', // 1 + 2 => '%d posts', // 2+ + )); + } + + public function test_lang_array() + { + $this->assertEquals($this->lang->lang_array('FOO'), 'BAR'); + $this->assertEquals($this->lang->lang_array('VOID'), 'VOID'); + $this->assertEquals($this->lang->lang_array('ARRY', [0]), 'No posts'); + $this->assertEquals($this->lang->lang_array('FOO', [2, 3, 'BARZ']), 'BAR'); + } + public function test_lang() { // No param |