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 320 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 371 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 387 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 293 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 440 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 272 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 174 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));
                                        $this->text[trim($a[0])] = trim($a[1]);
                                }
                        }
                        
                        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 401 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 200 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 470 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 136 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: