protected function _loadLanguageStrings($throw_errors = true, $force_rebuild = false, $force_rebuild_on_update = false)
    {
        $_fn = $this->getLoader()->buildLanguageFileName($this->lang);
        $_f = $this->getLoader()->buildLanguageFilePath($this->lang);

        if (
            isset($this->language_strings_cache[$_f]) &&
            isset($this->language_strings_cache[$this->lang])
        ) {
            $this->language_strings = $this->language_strings_cache[$this->lang];
            return $this;
        }

        $db_f = $this->getLoader()->buildLanguageDBFilePath();
        if (@file_exists($_f)) {
            if ($force_rebuild_on_update && filemtime($db_f)>filemtime($_f)) {
                return $this
                    ->_rebuildLanguageStringsFiles()
                    ->_loadLanguageStrings();
            } else {
                $_v = $this->getLoader()->buildLanguageVarname($this->lang);
                include $_f;
                if (isset($$_v)) {
                    if (!isset($this->language_strings_cache[$this->lang])) {
                        $this->language_strings_cache[$this->lang] = array();
                    }
                    $this->language_strings_cache[$this->lang] =
                        array_merge($this->language_strings_cache[$this->lang], $$_v);
                    $this->language_strings_cache[$_f] = array(
                        'language'  => $this->lang,
                        'strings'   => $$_v
                    );
                    return $this->_loadLanguageStrings();
                } else {
                    throw new I18nException(
                        sprintf('Language strings seems to be malformed in file "%s" (must be a classic array like "string_index"=>"string in the language")!', $_fn)
                    );
                }
            }
        } elseif ($force_rebuild) {
            return $this
                ->_rebuildLanguageStringsFiles()
                ->_loadLanguageStrings();
        } elseif ($throw_errors) {
            throw new I18nInvalidArgumentException(
                sprintf('Language strings file for language code "%s" not found (searched in "%s")!', $this->lang, $_f)
            );
        }

        return $this;
    }