[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
1 <?php 2 3 /* +********************************************************************************** 4 * The contents of this file are subject to the vtiger CRM Public License Version 1.1 5 * ("License"); You may not use this file except in compliance with the License 6 * The Original Code is: vtiger CRM Open Source 7 * The Initial Developer of the Original Code is vtiger. 8 * Portions created by vtiger are Copyright (C) vtiger. 9 * All Rights Reserved. 10 * ********************************************************************************** */ 11 12 /** 13 * Class to handler language translations 14 */ 15 class Vtiger_Language_Handler { 16 17 //Contains module language translations 18 protected static $languageContainer; 19 20 /** 21 * Functions that gets translated string 22 * @param <String> $key - string which need to be translated 23 * @param <String> $module - module scope in which the translation need to be check 24 * @return <String> - translated string 25 */ 26 public static function getTranslatedString($key, $module = '', $currentLanguage = '') { 27 if (empty($currentLanguage)) { 28 $currentLanguage = self::getLanguage(); 29 } 30 //decoding for Start Date & Time and End Date & Time 31 if (!is_array($key)) 32 $key = decode_html($key); 33 $translatedString = self::getLanguageTranslatedString($currentLanguage, $key, $module); 34 35 // label not found in users language pack, then check in the default language pack(config.inc.php) 36 if ($translatedString === null) { 37 $defaultLanguage = vglobal('default_language'); 38 if (!empty($defaultLanguage) && strcasecmp($defaultLanguage, $currentLanguage) !== 0) { 39 $translatedString = self::getLanguageTranslatedString($defaultLanguage, $key, $module); 40 } 41 } 42 43 // If translation is not found then return label 44 if ($translatedString === null) { 45 $translatedString = $key; 46 } 47 return $translatedString; 48 } 49 50 /** 51 * Function returns language specific translated string 52 * @param <String> $language - en_us etc 53 * @param <String> $key - label 54 * @param <String> $module - module name 55 * @return <String> translated string or null if translation not found 56 */ 57 public static function getLanguageTranslatedString($language, $key, $module = '') { 58 $moduleStrings = array(); 59 60 $module = str_replace(':', '.', $module); 61 if (is_array($module)) 62 return null; 63 $moduleStrings = self::getModuleStringsFromFile($language, $module); 64 if (!empty($moduleStrings['languageStrings'][$key])) { 65 return $moduleStrings['languageStrings'][$key]; 66 } 67 // Lookup for the translation in base module, in case of sub modules, before ending up with common strings 68 if (strpos($module, '.') > 0) { 69 $baseModule = substr($module, 0, strpos($module, '.')); 70 if ($baseModule == 'Settings') { 71 $baseModule = 'Settings.Vtiger'; 72 } 73 $moduleStrings = self::getModuleStringsFromFile($language, $baseModule); 74 if (!empty($moduleStrings['languageStrings'][$key])) { 75 return $moduleStrings['languageStrings'][$key]; 76 } 77 } 78 79 $commonStrings = self::getModuleStringsFromFile($language); 80 if (!empty($commonStrings['languageStrings'][$key])) 81 return $commonStrings['languageStrings'][$key]; 82 83 return null; 84 } 85 86 /** 87 * Functions that gets translated string for Client side 88 * @param <String> $key - string which need to be translated 89 * @param <String> $module - module scope in which the translation need to be check 90 * @return <String> - translated string 91 */ 92 public static function getJSTranslatedString($language, $key, $module = '') { 93 $moduleStrings = array(); 94 95 $module = str_replace(':', '.', $module); 96 $moduleStrings = self::getModuleStringsFromFile($language, $module); 97 if (!empty($moduleStrings['jsLanguageStrings'][$key])) { 98 return $moduleStrings['jsLanguageStrings'][$key]; 99 } 100 // Lookup for the translation in base module, in case of sub modules, before ending up with common strings 101 if (strpos($module, '.') > 0) { 102 $baseModule = substr($module, 0, strpos($module, '.')); 103 if ($baseModule == 'Settings') { 104 $baseModule = 'Settings.Vtiger'; 105 } 106 $moduleStrings = self::getModuleStringsFromFile($language, $baseModule); 107 if (!empty($moduleStrings['jsLanguageStrings'][$key])) { 108 return $moduleStrings['jsLanguageStrings'][$key]; 109 } 110 } 111 112 $commonStrings = self::getModuleStringsFromFile($language); 113 if (!empty($commonStrings['jsLanguageStrings'][$key])) 114 return $commonStrings['jsLanguageStrings'][$key]; 115 116 return $key; 117 } 118 119 /** 120 * Function that returns translation strings from file 121 * @global <array> $languageStrings - language specific string which is used in translations 122 * @param <String> $module - module Name 123 * @return <array> - array if module has language strings else returns empty array 124 */ 125 public static function getModuleStringsFromFile($language, $module='Vtiger'){ 126 $module = str_replace(':', '.', $module); 127 if(empty(self::$languageContainer[$language][$module])){ 128 129 130 131 132 133 $qualifiedName = 'languages.'.$language.'.'.$module; 134 $file = Vtiger_Loader::resolveNameToPath($qualifiedName); 135 136 $languageStrings = $jsLanguageStrings = array(); 137 if(file_exists($file)){ 138 require $file; 139 self::$languageContainer[$language][$module]['languageStrings'] = $languageStrings; 140 self::$languageContainer[$language][$module]['jsLanguageStrings'] = $jsLanguageStrings; 141 } 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 } 157 return self::$languageContainer[$language][$module]; 158 } 159 160 /** 161 * Function that returns current language 162 * @return <String> - 163 */ 164 public static function getLanguage() { 165 $userModel = Users_Record_Model::getCurrentUserModel(); 166 $language = ''; 167 if (!empty($userModel)) { 168 $language = $userModel->get('language'); 169 } 170 return empty($language) ? vglobal('default_language') : $language; 171 } 172 173 /** 174 * Function that returns current language short name 175 * @return <String> - 176 */ 177 public static function getShortLanguageName() { 178 $language = self::getLanguage(); 179 return substr($language, 0, 2); 180 } 181 182 /** 183 * Function returns module strings 184 * @param <String> $module - module Name 185 * @param <String> languageStrings or jsLanguageStrings 186 * @return <Array> 187 */ 188 public static function export($module, $type = 'languageStrings') { 189 $userSelectedLanguage = self::getLanguage(); 190 $defaultLanguage = vglobal('default_language'); 191 $languages = array($userSelectedLanguage); 192 //To merge base language and user selected language translations 193 if ($userSelectedLanguage != $defaultLanguage) { 194 array_push($languages, $defaultLanguage); 195 } 196 197 198 $resultantLanguageString = array(); 199 foreach ($languages as $currentLanguage) { 200 $exportLangString = array(); 201 202 $moduleStrings = self::getModuleStringsFromFile($currentLanguage, $module); 203 if (!empty($moduleStrings[$type])) { 204 $exportLangString = $moduleStrings[$type]; 205 } 206 207 // Lookup for the translation in base module, in case of sub modules, before ending up with common strings 208 if (strpos($module, '.') > 0) { 209 $baseModule = substr($module, 0, strpos($module, '.')); 210 if ($baseModule == 'Settings') { 211 $baseModule = 'Settings.Vtiger'; 212 } 213 $moduleStrings = self::getModuleStringsFromFile($currentLanguage, $baseModule); 214 if (!empty($moduleStrings[$type])) { 215 $exportLangString += $commonStrings[$type]; 216 } 217 } 218 219 $commonStrings = self::getModuleStringsFromFile($currentLanguage); 220 if (!empty($commonStrings[$type])) { 221 $exportLangString += $commonStrings[$type]; 222 } 223 $resultantLanguageString += $exportLangString; 224 } 225 226 return $resultantLanguageString; 227 ; 228 } 229 230 /** 231 * Function to returns all language information 232 * @return <Array> 233 */ 234 public static function getAllLanguages() { 235 return Vtiger_Language::getAll(); 236 } 237 238 /** 239 * Function to get the label name of the Langauge package 240 * @param <String> $name 241 */ 242 public static function getLanguageLabel($name) { 243 $db = PearDatabase::getInstance(); 244 $languageResult = $db->pquery('SELECT label FROM vtiger_language WHERE prefix = ?', array($name)); 245 if ($db->num_rows($languageResult)) { 246 return $db->query_result($languageResult, 0, 'label'); 247 } 248 return false; 249 } 250 251 } 252 253 function vtranslate($key, $moduleName = '') { 254 $args = func_get_args(); 255 $formattedString = call_user_func_array(array('Vtiger_Language_Handler', 'getTranslatedString'), $args); 256 array_shift($args); 257 array_shift($args); 258 if (is_array($args) && !empty($args)) { 259 $formattedString = call_user_func_array('vsprintf', array($formattedString, $args)); 260 } 261 return $formattedString; 262 } 263 264 function vJSTranslate($key, $moduleName = '') { 265 $args = func_get_args(); 266 return call_user_func_array(array('Vtiger_Language_Handler', 'getJSTranslatedString'), $args); 267 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:08:37 2014 | Cross-referenced by PHPXref 0.7.1 |