00001 <?php
00002
00018 import('lib.pkp.classes.i18n.PKPLocale');
00019
00020 define('LOCALE_COMPONENT_APPLICATION_COMMON', 0x00000101);
00021 define('LOCALE_COMPONENT_OMP_MANAGER', 0x00000102);
00022 define('LOCALE_COMPONENT_OMP_SUBMISSION', 0x00000104);
00023 define('LOCALE_COMPONENT_OMP_EDITOR', 0x00000108);
00024 define('LOCALE_COMPONENT_OMP_ADMIN', 0x0000010F);
00025 define('LOCALE_COMPONENT_OMP_DEFAULT_SETTINGS', 0x00000111);
00026
00027 class AppLocale extends PKPLocale {
00032 function getSupportedLocales() {
00033 static $supportedLocales;
00034 if (!isset($supportedLocales)) {
00035 if (defined('SESSION_DISABLE_INIT') || !Config::getVar('general', 'installed')) {
00036 $supportedLocales = AppLocale::getAllLocales();
00037 } elseif (($press =& Request::getPress())) {
00038 $supportedLocales = $press->getSupportedLocaleNames();
00039 } else {
00040 $site =& Request::getSite();
00041 $supportedLocales = $site->getSupportedLocaleNames();
00042 }
00043 }
00044 return $supportedLocales;
00045 }
00046
00051 function getSupportedFormLocales() {
00052 static $supportedFormLocales;
00053 if (!isset($supportedFormLocales)) {
00054 if (defined('SESSION_DISABLE_INIT') || !Config::getVar('general', 'installed')) {
00055 $supportedFormLocales = AppLocale::getAllLocales();
00056 } elseif (($press =& Request::getPress())) {
00057 $supportedFormLocales = $press->getSupportedFormLocaleNames();
00058 } else {
00059 $site =& Request::getSite();
00060 $supportedFormLocales = $site->getSupportedLocaleNames();
00061 }
00062 }
00063 return $supportedFormLocales;
00064 }
00065
00071 function getLocale() {
00072 static $currentLocale;
00073 if (!isset($currentLocale)) {
00074 if (defined('SESSION_DISABLE_INIT') || !Config::getVar('general', 'installed')) {
00075
00076
00077
00078 $locale = Request::getUserVar('setLocale');
00079 if (empty($locale) || !in_array($locale, array_keys(AppLocale::getSupportedLocales()))) $locale = Request::getCookieVar('currentLocale');
00080 } else {
00081 $sessionManager =& SessionManager::getManager();
00082 $session =& $sessionManager->getUserSession();
00083 $locale = $session->getSessionVar('currentLocale');
00084
00085 $press =& Request::getPress();
00086 $site =& Request::getSite();
00087
00088 if (!isset($locale)) {
00089 $locale = Request::getCookieVar('currentLocale');
00090 }
00091
00092 if (isset($locale)) {
00093
00094 if ($press != null) {
00095 $locales =& $press->getSupportedLocaleNames();
00096 } else {
00097 $locales =& $site->getSupportedLocaleNames();
00098 }
00099
00100 if (!in_array($locale, array_keys($locales))) {
00101 unset($locale);
00102 }
00103 }
00104
00105 if (!isset($locale)) {
00106
00107 if ($press != null) {
00108 $locale = $press->getPrimaryLocale();
00109 }
00110
00111 if (!isset($locale)) {
00112 $locale = $site->getPrimaryLocale();
00113 }
00114 }
00115 }
00116
00117 if (!AppLocale::isLocaleValid($locale)) {
00118 $locale = LOCALE_DEFAULT;
00119 }
00120
00121 $currentLocale = $locale;
00122 }
00123 return $currentLocale;
00124 }
00125
00130 function getLocalePrecedence() {
00131 static $localePrecedence;
00132 if (!isset($localePrecedence)) {
00133 $localePrecedence = array(AppLocale::getLocale());
00134
00135 $press =& Request::getPress();
00136 if ($press && !in_array($press->getPrimaryLocale(), $localePrecedence)) $localePrecedence[] = $press->getPrimaryLocale();
00137
00138 $site =& Request::getSite();
00139 if ($site && !in_array($site->getPrimaryLocale(), $localePrecedence)) $localePrecedence[] = $site->getPrimaryLocale();
00140 }
00141 return $localePrecedence;
00142 }
00143
00148 function getPrimaryLocale() {
00149 static $locale;
00150 if ($locale) return $locale;
00151
00152 if (defined('SESSION_DISABLE_INIT') || !Config::getVar('general', 'installed')) return $locale = LOCALE_DEFAULT;
00153
00154 $press =& Request::getPress();
00155
00156 if (isset($press)) {
00157 $locale = $press->getPrimaryLocale();
00158 }
00159
00160 if (!isset($locale)) {
00161 $site =& Request::getSite();
00162 $locale = $site->getPrimaryLocale();
00163 }
00164
00165 if (!isset($locale) || !AppLocale::isLocaleValid($locale)) {
00166 $locale = LOCALE_DEFAULT;
00167 }
00168
00169 return $locale;
00170 }
00171
00176 function installLocale($locale) {
00177 parent::installLocale($locale);
00178
00179 $genreDao =& DAORegistry::getDAO('GenreDAO');
00180 $genreDao->installLocale($locale);
00181
00182 $userGroupDao =& DAORegistry::getDAO('UserGroupDAO');
00183 $userGroupDao->installLocale($locale);
00184 }
00185
00190 function uninstallLocale($locale) {
00191 parent::uninstallLocale($locale);
00192
00193 $genreDao =& DAORegistry::getDAO('GenreDAO');
00194 $genreDao->uninstallLocale($locale);
00195
00196 $userGroupDao =& DAORegistry::getDAO('UserGroupDAO');
00197 $userGroupDao->deleteSettingsByLocale($locale);
00198 }
00199
00205 function makeComponentMap($locale) {
00206 $componentMap = parent::makeComponentMap($locale);
00207 $baseDir = "locale/$locale/";
00208 $componentMap[LOCALE_COMPONENT_APPLICATION_COMMON] = $baseDir . 'locale.xml';
00209 $componentMap[LOCALE_COMPONENT_OMP_MANAGER] = $baseDir . 'manager.xml';
00210 $componentMap[LOCALE_COMPONENT_OMP_SUBMISSION] = $baseDir . 'submission.xml';
00211 $componentMap[LOCALE_COMPONENT_OMP_EDITOR] = $baseDir . 'editor.xml';
00212 $componentMap[LOCALE_COMPONENT_OMP_ADMIN] = $baseDir . 'admin.xml';
00213 $componentMap[LOCALE_COMPONENT_OMP_DEFAULT_SETTINGS] = $baseDir . 'defaultSettings.xml';
00214 return $componentMap;
00215 }
00216 }
00217
00218 ?>