Public Member Functions | Data Fields

ilLanguage Class Reference

Public Member Functions

 ilLanguage ($a_lang_key)
 Constructor read the single-language file and put this in an array text.
 getLangKey ()
 txt ($a_topic)
 gets the text for a given topic
 loadLanguageModule ($a_module)
 getInstalledLanguages ()
 ilLanguage ($a_lang_key)
 Constructor read the single-language file and put this in an array text.
 txt ($a_topic)
 gets the text for a given topic
 getLanguages ()
 get all setup languages in the system
 installLanguages ($a_lang_keys)
 install languages
 getInstalledLanguages ()
 get already installed languages (in db)
 getAvailableLanguages ()
 get already registered languages (in db)
 checkLanguage ($a_lang_key)
 validate the logical structure of a lang-file
 cut_header ($content)
 remove lang-file haeder information from '$content'
 flushLanguages ()
 remove all languagee from database
 insertLanguage ($lang_key)
 insert language data form file in database
 getInstallableLanguages ()
 setDbHandler ($a_db_handler)
 set db handler object object db handler

Data Fields

 $ilias
 $text = array()
 $lang_default = "en"
 $lang_user
 $lang_path
 $lang_key
 $lang_name
 $separator = "#:#"
 $comment_separator = "###"
 $loaded_modules

Detailed Description

Definition at line 47 of file class.ilLanguage.php.


Member Function Documentation

ilLanguage::checkLanguage ( a_lang_key  ) 

validate the logical structure of a lang-file

This function checks if a lang-file of a given lang_key exists, the file has a header and each lang-entry consist of exact three elements (module,identifier,value)

Parameters:
string $lang_key international language key (2 digits)
Returns:
string $info_text message about results of check OR "1" if all checks successfully passed

Definition at line 323 of file class.ilLanguage.php.

References $num, and cut_header().

Referenced by installLanguages().

    {
        $tmpPath = getcwd();
        chdir ($this->lang_path);

        // compute lang-file name format
        $lang_file = "ilias_".$a_lang_key.".lang";

        // file check
        if (!is_file($lang_file))
        {
            chdir($tmpPath);
            return false;
        }

        // header check
        if (!$content = $this->cut_header(file($lang_file)))
        {
            chdir($tmpPath);
            return false;
        }

        // check (counting) elements of each lang-entry
        foreach ($content as $key => $val)
        {
            $separated = explode ($this->separator,trim($val));
            $num = count($separated);

            if ($num != 3)
            {
                chdir($tmpPath);
                return false;
            }
        }

        chdir($tmpPath);

        // no error occured
        return true;
    }

Here is the call graph for this function:

Here is the caller graph for this function:

ilLanguage::cut_header ( content  ) 

remove lang-file haeder information from '$content'

This function seeks for a special keyword where the language information starts. if found it returns the plain language information, otherwise returns false

Parameters:
string $content expect an ILIAS lang-file
Returns:
string $content content without header info OR false if no valid header was found private

Definition at line 374 of file class.ilLanguage.php.

Referenced by checkLanguage(), and insertLanguage().

    {
        foreach ($content as $key => $val)
        {
            if (trim($val) == "<!-- language file start -->")
            {
                return array_slice($content,$key +1);
            }
        }

        return false;
    }

Here is the caller graph for this function:

ilLanguage::flushLanguages (  ) 

remove all languagee from database

Definition at line 390 of file class.ilLanguage.php.

References $q.

Referenced by installLanguages().

    {
        $q = "DELETE FROM lng_data";
        $this->db->query($q);
    }

Here is the caller graph for this function:

ilLanguage::getAvailableLanguages (  ) 

get already registered languages (in db)

Returns:
array array with information about languages that has been registered in db

Definition at line 296 of file class.ilLanguage.php.

References $q, and $row.

Referenced by installLanguages().

    {
        $arr = array();

        $q = "SELECT * FROM object_data ".
             "WHERE type = 'lng'";
        $r = $this->db->query($q);

        while ($row = $r->fetchRow(DB_FETCHMODE_OBJECT))
        {
            $arr[$row->title]["obj_id"] = $row->obj_id;
            $arr[$row->title]["status"] = $row->description;
        }

        return $arr;
    }

Here is the caller graph for this function:

ilLanguage::getInstallableLanguages (  ) 

Definition at line 443 of file class.ilLanguage.php.

References $d, $lang_key, and getLanguages().

    {
        $setup_langs = $this->getLanguages();

        $d = dir($this->lang_path);
        $tmpPath = getcwd();
        chdir ($this->lang_path);

        // get available lang-files
        while ($entry = $d->read())
        {
            if (is_file($entry) && (ereg ("(^ilias_.{2}\.lang)", $entry)))
            {
                $lang_key = substr($entry,6,2);
                $languages1[] = $lang_key;
            }
        }
        
        //$languages = array_intersect($languages1,$setup_langs);   

        chdir($tmpPath);

        return $languages1;
    }

Here is the call graph for this function:

ilLanguage::getInstalledLanguages (  ) 

Definition at line 238 of file class.ilLanguage.php.

References $lang, $languages, and getObjectList().

Referenced by ilLanguage().

        {
                $langlist = getObjectList("lng");
                
                foreach ($langlist as $lang)
                {
                        if ($lang["desc"] == "installed")
                        {
                                $languages[] = $lang["title"];
                        }
                
                }
                
                return $languages;
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilLanguage::getInstalledLanguages (  ) 

get already installed languages (in db)

Returns:
array array with inforamtino of each installed language

Definition at line 275 of file class.ilLanguage.php.

References $q, and $row.

    {
        $arr = array();

        $q = "SELECT * FROM object_data ".
             "WHERE type = 'lng' ".
             "AND description = 'installed'";
        $r = $this->db->query($q);

        while ($row = $r->fetchRow(DB_FETCHMODE_OBJECT))
        {
            $arr[] = $row->title;
        }

        return $arr;
    }

ilLanguage::getLangKey (  ) 

Definition at line 175 of file class.ilLanguage.php.

        {
                return $this->lang_key;
        }

ilLanguage::getLanguages (  ) 

get all setup languages in the system

the functions looks for setup*.lang-files in the languagedirectory public

Returns:
array langs

Definition at line 177 of file class.ilLanguage.php.

References $d, $lang_key, and $languages.

Referenced by getInstallableLanguages().

    {
        $d = dir($this->lang_path);
        $tmpPath = getcwd();
        chdir ($this->lang_path);

        // get available setup-files
        while ($entry = $d->read())
        {
            if (is_file($entry) && (ereg ("(^setup_.{2}\.lang$)", $entry)))
            {
                $lang_key = substr($entry,6,2);
                $languages[] = $lang_key;
            }
        }

        chdir($tmpPath);

        return $languages;
    }

Here is the caller graph for this function:

ilLanguage::ilLanguage ( a_lang_key  ) 

Constructor read the single-language file and put this in an array text.

the text array is two-dimensional. First dimension is the language. Second dimension is the languagetopic. Content is the translation. public

Parameters:
string languagecode (two characters), e.g. "de", "en", "in"
Returns:
boolean false if reading failed

Definition at line 133 of file class.ilLanguage.php.

References $ilias, $log, getInstalledLanguages(), and loadLanguageModule().

        {
                global $ilias,$log;


                $this->ilias =& $ilias;

                if (!isset($log))
                {
                        $this->log = new ilLog(ILIAS_LOG_DIR,ILIAS_LOG_FILE,$ilias->getClientId(),ILIAS_LOG_ENABLED);
                }
                else
                {
                        $this->log =& $log;
                }

                $this->lang_key = $a_lang_key;
                $this->text = array();
                $this->loaded_modules = array();
                $this->lang_path = ILIAS_ABSOLUTE_PATH.substr($this->ilias->ini->readVariable("language","path"),1);

                // if no directory was found fall back to default lang dir
                if (!is_dir($this->lang_path))
                {
                        $this->lang_path = ILIAS_ABSOLUTE_PATH."/lang";
                }

                $this->lang_default = $this->ilias->ini->readVariable("language","default");
                $this->lang_user = $this->ilias->account->prefs["language"];
                
                $langs = $this->getInstalledLanguages();
                
                if (!in_array($this->lang_key,$langs))
                {
                        $this->lang_key = $this->lang_default;
                }

                $this->loadLanguageModule("common");

                return true;
        }

Here is the call graph for this function:

ilLanguage::ilLanguage ( a_lang_key  ) 

Constructor read the single-language file and put this in an array text.

the text array is two-dimensional. First dimension is the language. Second dimension is the languagetopic. Content is the translation. public

Parameters:
string languagecode (two characters), e.g. "de", "en", "in"
Returns:
boolean false if reading failed

Definition at line 101 of file class.ilLanguage.php.

References $row.

    {
        $this->lang_key = ($a_lang_key) ? $a_lang_key : $this->lang_default;
        //$_GET["lang"] = $this->lang_key;  // only for downward compability (old setup)
        $this->lang_path = ILIAS_ABSOLUTE_PATH."/lang";

        // set lang file...
        $txt = file($this->lang_path."/setup_".$this->lang_key.".lang");

        // ...and load langdata
        if (is_array($txt))
        {
            foreach ($txt as $row)
            {
                if ($row[0] != "#")
                {
                                                                                $a = explode($this->separator,trim($row));
                                                                                if(isset($a[1]))
                                                                                        $this->text[trim($a[0])] = trim($a[1]);
                                                                                else
                                                                                        $this->text[trim($a[0])] = "";
                }
            }
            
            return true;
        }
        
        return false;
    }

ilLanguage::insertLanguage ( lang_key  ) 

insert language data form file in database

Parameters:
string $lang_key international language key (2 digits)
Returns:
void

Definition at line 404 of file class.ilLanguage.php.

References $lang_key, $num, $pos, $q, and cut_header().

Referenced by installLanguages().

    {
        $tmpPath = getcwd();
        chdir($this->lang_path);

        $lang_file = "ilias_".$lang_key.".lang";

        if ($lang_file)
        {
            // remove header first
            if ($content = $this->cut_header(file($lang_file)))
            {
                foreach ($content as $key => $val)
                {
                    $separated = explode ($this->separator,trim($val));

                    //get position of the comment_separator
                    $pos = strpos($separated[2], $this->comment_separator);

                    if ($pos !== false)
                    {
                        //cut comment of
                        $separated[2] = substr($separated[2] , 0 , $pos);
                    }

                    $num = count($separated);

                    $q = "INSERT INTO lng_data ".
                         "(module,identifier,lang_key,value) ".
                         "VALUES ".
                         "('".$separated[0]."','".$separated[1]."','".$lang_key."','".addslashes($separated[2])."')";
                    $this->db->query($q);
                }
            }
        }

        chdir($tmpPath);
    }

Here is the call graph for this function:

Here is the caller graph for this function:

ilLanguage::installLanguages ( a_lang_keys  ) 

install languages

Parameters:
array array with lang_keys of languages to install
Returns:
boolean true on success

Definition at line 203 of file class.ilLanguage.php.

References $lang_key, $q, checkLanguage(), flushLanguages(), getAvailableLanguages(), and insertLanguage().

    {
        if (empty($a_lang_keys))
        {
            $a_lang_keys = array();
        }
        
        $err_lang = array();

        $this->flushLanguages();
        
        $db_langs = $this->getAvailableLanguages();

        foreach ($a_lang_keys as $lang_key)
        {
            if ($this->checkLanguage($lang_key))
            {
                // ...re-insert data from lang-file
                $this->insertLanguage($lang_key);
                
                // register language first time install
                if (!array_key_exists($lang_key,$db_langs))
                {
                    $q = "INSERT INTO object_data ".
                         "(type,title,description,owner,create_date,last_update) ".
                         "VALUES ".
                         "('lng','".$lang_key."','installed','-1',now(),now())";
                    $this->db->query($q);
                }
            }
            else
            {
                $err_lang[] = $lang_key;
            }
        }
        
        foreach ($db_langs as $key => $val)
        {
            if (!in_array($key,$err_lang))
            {
                if (in_array($key,$a_lang_keys))
                {
                    if ($val["status"] != "installed")
                    {
                        $q = "UPDATE object_data SET ".
                             "description = 'installed',last_update = now() ".
                             "WHERE obj_id='".$val["obj_id"]."' ".
                             "AND type='lng'";
                        $this->db->query($q);
                    }
                }
                else
                {
                    if ($val["status"] == "installed")
                    {
                        $q = "UPDATE object_data SET ".
                             "description = 'not_installed',last_update = now() ".
                             "WHERE obj_id='".$val["obj_id"]."' ".
                             "AND type='lng'";
                        $this->db->query($q);
                    }
                }
            }
        }

        return ($err_lang) ? $err_lang : true;
    }

Here is the call graph for this function:

ilLanguage::loadLanguageModule ( a_module  ) 

Definition at line 211 of file class.ilLanguage.php.

References $lang_key, $q, and $row.

Referenced by ilLanguage().

        {
                if (in_array($a_module, $this->loaded_modules))
                {
                        return;
                }

                $this->loaded_modules[] = $a_module;

                $lang_key = $this->lang_key;

                if (empty($this->lang_key))
                {
                        $lang_key = $this->lang_user;
                }

                $q = "SELECT identifier,value FROM lng_data ".
                         "WHERE lang_key = '".$lang_key."' ".
                         "AND module = '$a_module'";
                $r = $this->ilias->db->query($q);

                while ($row = $r->fetchRow(DB_FETCHMODE_OBJECT))
                {
                        $this->text[$row->identifier] = $row->value;
                }
        }

Here is the caller graph for this function:

ilLanguage::setDbHandler ( a_db_handler  ) 

set db handler object object db handler

Returns:
boolean true on success

Definition at line 473 of file class.ilLanguage.php.

    {
        if (empty($a_db_handler) or !is_object($a_db_handler))
        {
            return false;
        }
        
        $this->db =& $a_db_handler;
        
        return true;
    }

ilLanguage::txt ( a_topic  ) 

gets the text for a given topic

if the topic is not in the list, the topic itself with "-" will be returned public

Parameters:
string topic
Returns:
string text clear-text

Definition at line 188 of file class.ilLanguage.php.

        {
                if (empty($a_topic))
                {
                        return "";
                }
                $translation = $this->text[$a_topic];

                if ($translation == "")
                {
                        if (ILIAS_LOG_ENABLED)
                        {
                                $this->log->writeLanguageLog($a_topic,$this->lang_key);
                        }

                        return "-".$a_topic."-";
                }
                else
                {
                        return $translation;
                }
        }

ilLanguage::txt ( a_topic  ) 

gets the text for a given topic

if the topic is not in the list, the topic itself with "-" will be returned public

Parameters:
string topic
Returns:
string text clear-text

Definition at line 139 of file class.ilLanguage.php.

References $log, and $pos.

    {
        global $log;
        
        if (empty($a_topic))
        {
            return "";
        }

        $translation = $this->text[$a_topic];
        
        //get position of the comment_separator
        $pos = strpos($translation, $this->comment_separator);

        if ($pos !== false)
        {
            // remove comment
            $translation = substr($translation,0,$pos);
        }

        if ($translation == "")
        {
            $log->writeLanguageLog($a_topic,$this->lang_key);
            return "-".$a_topic."-";
        }
        else
        {
            return $translation;
        }
    }


Field Documentation

ilLanguage::$comment_separator = "###"

Definition at line 115 of file class.ilLanguage.php.

ilLanguage::$ilias

Definition at line 54 of file class.ilLanguage.php.

Referenced by ilLanguage().

ilLanguage::$lang_default = "en"

Definition at line 69 of file class.ilLanguage.php.

ilLanguage::$lang_key
ilLanguage::$lang_name

Definition at line 101 of file class.ilLanguage.php.

ilLanguage::$lang_path

Definition at line 87 of file class.ilLanguage.php.

ilLanguage::$lang_user

Definition at line 78 of file class.ilLanguage.php.

ilLanguage::$loaded_modules

Definition at line 122 of file class.ilLanguage.php.

ilLanguage::$separator = "#:#"

Definition at line 108 of file class.ilLanguage.php.

ilLanguage::$text = array()

Definition at line 61 of file class.ilLanguage.php.


The documentation for this class was generated from the following files: