%PDF-1.7 GIF89;
| Server IP : 104.20.45.2 / Your IP : 172.16.20.3 Web Server : Apache/2.4.25 (Debian) System : Linux f64a392e70de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : application ( 1000) PHP Version : 5.6.40 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /app/classes/i18n/ |
Upload File : |
<?php
/**
* @file classes/i18n/AppLocale.inc.php
*
* Copyright (c) 2013-2019 Simon Fraser University
* Copyright (c) 2003-2019 John Willinsky
* Distributed under the GNU GPL v2. For full terms see the file docs/COPYING.
*
* @class AppLocale
* @ingroup i18n
*
* @brief Provides methods for loading locale data and translating strings identified by unique keys
*
*/
import('lib.pkp.classes.i18n.PKPLocale');
define('LOCALE_COMPONENT_APPLICATION_COMMON', 0x00000101);
define('LOCALE_COMPONENT_OJS_AUTHOR', 0x00000102);
define('LOCALE_COMPONENT_OJS_EDITOR', 0x00000103);
define('LOCALE_COMPONENT_OJS_MANAGER', 0x00000104);
define('LOCALE_COMPONENT_OJS_ADMIN', 0x00000105);
define('LOCALE_COMPONENT_OJS_DEFAULT', 0x00000106);
class AppLocale extends PKPLocale {
/**
* Get all supported UI locales for the current context.
* @return array
*/
function getSupportedLocales() {
static $supportedLocales;
if (!isset($supportedLocales)) {
if (defined('SESSION_DISABLE_INIT') || !Config::getVar('general', 'installed')) {
$supportedLocales = AppLocale::getAllLocales();
} elseif (($journal =& Request::getJournal())) {
$supportedLocales = $journal->getSupportedLocaleNames();
} else {
$site =& Request::getSite();
$supportedLocales = $site->getSupportedLocaleNames();
}
}
return $supportedLocales;
}
/**
* Get all supported form locales for the current context.
* @return array
*/
function getSupportedFormLocales() {
static $supportedFormLocales;
if (!isset($supportedFormLocales)) {
if (defined('SESSION_DISABLE_INIT') || !Config::getVar('general', 'installed')) {
$supportedFormLocales = AppLocale::getAllLocales();
} elseif (($journal =& Request::getJournal())) {
$supportedFormLocales = $journal->getSupportedFormLocaleNames();
} else {
$site =& Request::getSite();
$supportedFormLocales = $site->getSupportedLocaleNames();
}
}
return $supportedFormLocales;
}
/**
* Return the key name of the user's currently selected locale (default
* is "en_US" for U.S. English).
* @return string
*/
function getLocale() {
static $currentLocale;
if (!isset($currentLocale)) {
if (defined('SESSION_DISABLE_INIT') || !Config::getVar('general', 'installed')) {
// If the locale is specified in the URL, allow
// it to override. (Necessary when locale is
// being set, as cookie will not yet be re-set)
$locale = Request::getUserVar('setLocale');
if (empty($locale) || !in_array($locale, array_keys(AppLocale::getSupportedLocales()))) $locale = Request::getCookieVar('currentLocale');
} else {
$sessionManager =& SessionManager::getManager();
$session =& $sessionManager->getUserSession();
$locale = Request::getUserVar('uiLocale');
$journal =& Request::getJournal();
$site =& Request::getSite();
if (!isset($locale)) {
$locale = $session->getSessionVar('currentLocale');
}
if (!isset($locale)) {
$locale = Request::getCookieVar('currentLocale');
}
if (isset($locale)) {
// Check if user-specified locale is supported
if ($journal != null) {
$locales =& $journal->getSupportedLocaleNames();
} else {
$locales =& $site->getSupportedLocaleNames();
}
if (!in_array($locale, array_keys($locales))) {
unset($locale);
}
}
if (!isset($locale)) {
// Use journal/site default
if ($journal != null) {
$locale = $journal->getPrimaryLocale();
}
if (!isset($locale)) {
$locale = $site->getPrimaryLocale();
}
}
}
if (!AppLocale::isLocaleValid($locale)) {
$locale = LOCALE_DEFAULT;
}
$currentLocale = $locale;
}
return $currentLocale;
}
/**
* Get the stack of "important" locales, most important first.
* @return array
*/
function getLocalePrecedence() {
static $localePrecedence;
if (!isset($localePrecedence)) {
$localePrecedence = array(AppLocale::getLocale());
$journal =& Request::getJournal();
if ($journal && !in_array($journal->getPrimaryLocale(), $localePrecedence)) $localePrecedence[] = $journal->getPrimaryLocale();
$site =& Request::getSite();
if ($site && !in_array($site->getPrimaryLocale(), $localePrecedence)) $localePrecedence[] = $site->getPrimaryLocale();
}
return $localePrecedence;
}
/**
* Retrieve the primary locale of the current context.
* @return string
*/
function getPrimaryLocale() {
static $locale;
if ($locale) return $locale;
if (defined('SESSION_DISABLE_INIT') || !Config::getVar('general', 'installed')) return $locale = LOCALE_DEFAULT;
$journal =& Request::getJournal();
if (isset($journal)) {
$locale = $journal->getPrimaryLocale();
}
if (!isset($locale)) {
$site =& Request::getSite();
$locale = $site->getPrimaryLocale();
}
if (!isset($locale) || !AppLocale::isLocaleValid($locale)) {
$locale = LOCALE_DEFAULT;
}
return $locale;
}
/**
* Make a map of components to their respective files.
* @param $locale string
* @return array
*/
function makeComponentMap($locale) {
$componentMap = parent::makeComponentMap($locale);
$baseDir = "locale/$locale/";
$componentMap[LOCALE_COMPONENT_APPLICATION_COMMON] = $baseDir . 'locale.xml';
$componentMap[LOCALE_COMPONENT_OJS_AUTHOR] = $baseDir . 'author.xml';
$componentMap[LOCALE_COMPONENT_OJS_EDITOR] = $baseDir . 'editor.xml';
$componentMap[LOCALE_COMPONENT_OJS_MANAGER] = $baseDir . 'manager.xml';
$componentMap[LOCALE_COMPONENT_OJS_ADMIN] = $baseDir . 'admin.xml';
$componentMap[LOCALE_COMPONENT_OJS_DEFAULT] = $baseDir . 'default.xml';
return $componentMap;
}
}
if (!class_exists('Locale')) {
class Locale extends AppLocale {
// This is used for backwards compatibility (bug #5240)
}
}
?>