diff options
Diffstat (limited to 'cli/i18n/I18nData.php')
| -rw-r--r-- | cli/i18n/I18nData.php | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/cli/i18n/I18nData.php b/cli/i18n/I18nData.php index b8f958288..2178d330d 100644 --- a/cli/i18n/I18nData.php +++ b/cli/i18n/I18nData.php @@ -49,7 +49,8 @@ class I18nData { * @throws Exception */ public function addKey($key, $value) { - if (array_key_exists($key, $this->data[static::REFERENCE_LANGUAGE][$this->getFilenamePrefix($key)])) { + if (array_key_exists($this->getFilenamePrefix($key), $this->data[static::REFERENCE_LANGUAGE]) && + array_key_exists($key, $this->data[static::REFERENCE_LANGUAGE][$this->getFilenamePrefix($key)])) { throw new Exception('The selected key already exist.'); } $this->data[static::REFERENCE_LANGUAGE][$this->getFilenamePrefix($key)][$key] = $value; @@ -67,7 +68,8 @@ class I18nData { if (!in_array($language, $this->getAvailableLanguages())) { throw new Exception('The selected language does not exist.'); } - if (!array_key_exists($key, $this->data[static::REFERENCE_LANGUAGE][$this->getFilenamePrefix($key)])) { + if (!array_key_exists($this->getFilenamePrefix($key), $this->data[static::REFERENCE_LANGUAGE]) || + !array_key_exists($key, $this->data[static::REFERENCE_LANGUAGE][$this->getFilenamePrefix($key)])) { throw new Exception('The selected key does not exist for the selected language.'); } $this->data[$language][$this->getFilenamePrefix($key)][$key] = $value; @@ -80,7 +82,8 @@ class I18nData { * @throws Exception */ public function duplicateKey($key) { - if (!array_key_exists($key, $this->data[static::REFERENCE_LANGUAGE][$this->getFilenamePrefix($key)])) { + if (!array_key_exists($this->getFilenamePrefix($key), $this->data[static::REFERENCE_LANGUAGE]) || + !array_key_exists($key, $this->data[static::REFERENCE_LANGUAGE][$this->getFilenamePrefix($key)])) { throw new Exception('The selected key does not exist.'); } $value = $this->data[static::REFERENCE_LANGUAGE][$this->getFilenamePrefix($key)][$key]; @@ -102,7 +105,8 @@ class I18nData { * @throws Exception */ public function removeKey($key) { - if (!array_key_exists($key, $this->data[static::REFERENCE_LANGUAGE][$this->getFilenamePrefix($key)])) { + if (!array_key_exists($this->getFilenamePrefix($key), $this->data[static::REFERENCE_LANGUAGE]) || + !array_key_exists($key, $this->data[static::REFERENCE_LANGUAGE][$this->getFilenamePrefix($key)])) { throw new Exception('The selected key does not exist.'); } foreach ($this->getAvailableLanguages() as $language) { @@ -113,6 +117,30 @@ class I18nData { } /** + * WARNING! This is valid only for ignore files. It's not the best way to + * handle that but as it's meant to be used only for the cli tool, there + * is no point of spending time on making it better than that. + * + * Ignore a key from a language, or reverse it. + * + * @param string $key + * @param string $language + * @param boolean $reverse + */ + public function ignore($key, $language, $reverse = false) { + $index = array_search($key, $this->data[$language]); + + if ($index && $reverse) { + unset($this->data[$language][$index]); + return; + } + if ($index && !$reverse) { + return; + } + $this->data[$language][] = $key; + } + + /** * Check if the data has changed * * @return bool |
