예제 #1
0
파일: i18n.php 프로젝트: pietsch/search
/**
 * An "active" locale is simply one with a compiled PO file.
 * Getting a language to show up in the select box should be
 * as simple as:
 * 
 * $ cd ./locale/po/<lang>/LC_MESSAGES/
 * $ msgfmt -o ccsearch.mo ccsearch.po
 *
 */
function get_active_locales()
{
    $locales = array();
    # Sometimes the locale name returned by locale_get_display_language()
    # is ambiguous, as is the case with zh_TW, zh_HK and zh, which all
    # return the precise same characters.  In these cases we'll just append
    # a region.  This could potentially be done with
    # locale_get_display_region(), but unfortunately the region name may be
    # not precisely what we want.  For example zh_HK returns "Hong Kong SAR
    # China", which is inconsistent with what we have on the chooser. So we
    # have this fairly disagreeable, manual exception handling.
    $add_region = array('zh_TW' => '(台灣)', 'zh_HK' => '(香港)');
    // Just manually set up the default locale
    $locales['en'] = 'English';
    if (!is_dir(LOCALE_DIR)) {
        $msg = "The locale directory doesn't exist. Git it!";
        error_log($msg, 0);
        die($msg);
    }
    $h_dirs = opendir(LOCALE_DIR);
    while (false !== ($dir = readdir($h_dirs))) {
        if (is_dir(LOCALE_DIR . "/{$dir}") && preg_match("/^[a-z]{2,2}(_[A-Z]{2,4})?\$/", $dir, $matches)) {
            $mo_file = LOCALE_DIR . "/{$dir}/LC_MESSAGES/" . PROJECT_NAME . ".mo";
            if (is_readable($mo_file)) {
                if (array_key_exists($dir, $add_region)) {
                    $locales[$dir] = locale_get_display_language($dir, $dir) . " {$add_region[$dir]}";
                } else {
                    $locales[$dir] = locale_get_display_language($dir, $dir);
                }
            }
        }
    }
    asort($locales);
    return $locales;
}
예제 #2
0
 /**
  * {@inheritdoc}
  */
 public function fetch(Parameters $params)
 {
     // Resultado Inicial
     $result = [];
     // Adaptador de Banco de Dados
     $db = $this->getServiceLocator()->get('db');
     // Expressão: Tipo
     $expression = 'CASE "a"."type"';
     $definition = (new AccountType())->getDefinition();
     foreach ($definition as $identifier => $value) {
         $expression = $expression . sprintf(" WHEN '%s' THEN '%s'", $identifier, $value);
     }
     $expression = $expression . ' END';
     // Construtor
     $eType = new Expression($expression);
     // Seletor
     $select = (new Select())->from(['a' => 'accounts'])->columns(['id', 'name', 'type' => $eType]);
     // Pesquisa: Tipo
     if ($params['type']) {
         $select->where(function ($where) use($params) {
             $where->equalTo('a.type', $params['type']);
         });
     }
     // Pesquisa: Palavras-Chave
     if ($params['keywords']) {
         // Filtro
         $select->where(function ($where) use($params) {
             // Idioma
             $language = locale_get_display_language(null, 'en');
             // Documento
             $document = new Expression('TO_TSVECTOR(\'' . $language . '\', "a"."name")' . ' || TO_TSVECTOR(\'' . $language . '\', "a"."description")');
             // Construção do Documento
             $search = (new Select())->from(['a' => 'accounts'])->columns(['account_id' => 'id', 'document' => $document]);
             // Pesquisa Interna
             $subselect = (new Select())->from(['search' => $search])->columns(['account_id'])->where(function ($where) use($params, $language) {
                 $where->expression('"search"."document" @@ TO_TSQUERY(\'' . $language . '\', ?)', sprintf("'%s'", addslashes($params['keywords'])));
             });
             // Aplicação do Filtro
             $where->in('a.id', $subselect);
         });
     }
     // Evento: Depois dos Filtros
     $this->getEventManager()->trigger('Balance\\Model\\Persistence\\Db\\Accounts::afterFilters', $select);
     // Ordenação
     $select->order(['a.position']);
     // Consulta
     $rowset = $db->query($select->getSqlString($db->getPlatform()))->execute();
     // Captura
     foreach ($rowset as $row) {
         $result[] = ['id' => (int) $row['id'], 'name' => $row['name'], 'type' => $row['type']];
     }
     // Apresentação
     return new ArrayIterator($result);
 }
예제 #3
0
 /**
  * 
  * @return string
  */
 public static function getDisplayLanguage($lng)
 {
     $current = Yii::$app->language;
     //$language=Locale::getDisplayLanguage($lng, $current);
     $language = locale_get_display_language($lng, $current);
     //$local=Locale::getDisplayLanguage($lng, $lng);
     $local = locale_get_display_language($lng, $lng);
     if ($lng == $current) {
         return $language;
     } else {
         return $language . ' (' . $local . ')';
     }
 }
 public function getGlobals()
 {
     $supported_locales = array();
     $supported_full_locales = array();
     if ($this->container->hasParameter('t73_biz_translocation.supported_locales')) {
         $supported_locales = $this->container->getParameter('t73_biz_translocation.supported_locales');
         foreach ($supported_locales as $locale) {
             $supported_full_locales[$locale] = locale_get_display_language($locale);
         }
     }
     $default_locale = array('code' => 'en', 'name' => locale_get_display_language('en'));
     if ($this->container->hasParameter('framework.default_locale')) {
         $locale = $this->container->getParameter('framework.default_locale');
         $default_locale = array('code' => $locale, 'name' => locale_get_display_language($locale));
     }
     return array('default_locale' => $default_locale, 'supported_locales' => $supported_locales, 'supported_full_locales' => $supported_full_locales);
 }
 /**
  * Collects data for the given Request and Response.
  *
  * @param Request    $request   A Request instance
  * @param Response   $response  A Response instance
  * @param \Exception $exception An Exception instance
  *
  * @api
  */
 public function collect(Request $request, Response $response, \Exception $exception = null)
 {
     $current_locale = locale_get_display_language($request->attributes->get('_locale', $request->getLocale()));
     $requested_locale = locale_get_display_language($request->headers->get('accept-language'));
     $this->data = array('current_locale' => $current_locale, 'requested_locale' => $requested_locale, 'display_in_wdt' => $this->getDisplayInWdt());
 }
예제 #6
0
 /**
  * @Route("/{_locale}", defaults={"_locale": "en"},
  *     requirements={"_locale": "en|fr"}
  * )
  */
 public function homepageAction($_locale)
 {
     $language = locale_get_display_language($_locale);
     $url = $this->generateUrl('blog_show', array('_locale' => $_locale, 'year' => 2015, 'title' => 'foobar'));
     return new Response('<html><body>Welcome ' . $language . ' home! <hr/>' . $url . '</body></html>');
 }
예제 #7
0
 /**
  * {@inheritdoc}
  */
 public function fetch(Parameters $params)
 {
     // Adaptador de Banco de Dados
     $db = $this->getServiceLocator()->get('db');
     // Seletor
     $select = (new Select())->from(['p' => 'postings'])->columns(['id', 'datetime', 'description'])->order(['p.datetime DESC']);
     // Pesquisa: Palavras-Chave
     if ($params['keywords']) {
         // Filtro
         $select->where(function ($where) use($params) {
             // Linguagem
             $language = locale_get_display_language(null, 'en');
             // Documento
             $document = new Expression('TO_TSVECTOR(\'' . $language . '\', STRING_AGG("a"."name", \' \'))' . ' || TO_TSVECTOR(\'' . $language . '\', STRING_AGG("p"."description", \' \'))');
             // Construção do Documento
             $search = (new Select())->from(['p' => 'postings'])->columns(['posting_id' => 'id', 'document' => $document])->join(['e' => 'entries'], 'p.id = e.posting_id', [])->join(['a' => 'accounts'], 'a.id = e.account_id', [])->group(['p.id']);
             // Pesquisa Interna
             $subselect = (new Select())->from(['search' => $search])->columns(['posting_id'])->where(function ($where) use($params, $language) {
                 $where->expression('"search"."document" @@ TO_TSQUERY(\'' . $language . '\', ?)', sprintf("'%s'", addslashes($params['keywords'])));
             });
             // Aplicação do Filtro
             $where->in('p.id', $subselect);
         });
     }
     // Pesquisa: Conta
     if ($params['account_id']) {
         // Consulta Interna
         $subselect = (new Select())->from(['e' => 'entries'])->columns(['posting_id'])->where(function ($where) use($params) {
             $where->equalTo('e.account_id', $params['account_id']);
         });
         // Aplicar Filtro
         $select->where(function ($where) use($subselect) {
             $where->in('p.id', $subselect);
         });
     }
     // Conversão para Banco de Dados
     $formatter = $this->buildDateFormatter();
     // Pesquisa: Data e Hora Inicial
     if ($params['datetime_begin']) {
         // Filtrar Valor
         $datetime = date('c', $formatter->parse($params['datetime_begin']));
         // Filtro
         $select->where(function ($where) use($datetime) {
             $where->greaterThanOrEqualTo('p.datetime', $datetime);
         });
     }
     // Pesquisa: Data e Hora Final
     if ($params['datetime_end']) {
         // Filtrar Valor
         $datetime = date('c', $formatter->parse($params['datetime_end']));
         // Filtro
         $select->where(function ($where) use($datetime) {
             $where->lessThanOrEqualTo('p.datetime', $datetime);
         });
     }
     // Evento: Antes de Consultar
     $this->getEventManager()->trigger('Balance\\Model\\Persistence\\Db\\Postings::afterFilters', $select);
     // Paginação
     $result = new Paginator\Paginator(new Paginator\Adapter\DbSelect($select, $db));
     // Página?
     if ($params['page']) {
         // Configurar Página Atual
         $result->setCurrentPageNumber($params['page']);
     }
     // Apresentação
     return $result;
 }
예제 #8
0
    if ($new2bwoptions != $Settings->getSetting('kBitOptions')) {
        $Settings->setSetting('kBitOptions', $new2bwoptions);
        $success[] = T_("Bandwidth Options Updated");
    }
    // Call validate&change functions for changed items
}
$templateEngine->assign("location", $Settings->getSetting('locationName'));
$templateEngine->assign("mboptions", $Settings->getSetting('mbOptions'));
$templateEngine->assign("timeoptions", $Settings->getSetting('timeOptions'));
$templateEngine->assign("bwoptions", $Settings->getSetting('kBitOptions'));
// Locale stuff
$locale = $Settings->getSetting('locale');
$fmt = new NumberFormatter($locale, NumberFormatter::CURRENCY);
$templateEngine->assign("locale", $locale);
$templateEngine->assign("currency", $fmt->getSymbol(NumberFormatter::CURRENCY_SYMBOL));
$templateEngine->assign("language", locale_get_display_language($locale));
$templateEngine->assign("region", locale_get_display_region($locale));
$templateEngine->assign("support_name", $Settings->getSetting('supportContactName'));
$templateEngine->assign("support_link", $Settings->getSetting('supportContactLink'));
$templateEngine->assign("website_name", $Settings->getSetting('websiteName'));
$templateEngine->assign("website_link", $Settings->getSetting('websiteLink'));
$templateEngine->assign("available_languages", \Grase\Locale::getAvailableLanguages());
if (sizeof($error) > 0) {
    $templateEngine->assign("error", $error);
}
if (sizeof($success) > 0) {
    $templateEngine->assign("success", $success);
}
// Location
function updateLocation($location)
{
예제 #9
0
 public function prepareView(\Nethgui\View\ViewInterface $view)
 {
     parent::prepareView($view);
     $user = $this->getRequest()->getUser();
     $view->setTemplate('Nethgui\\Template\\Login');
     $tmp = array();
     foreach ($this->getLocales() as $l) {
         $lang = substr($l, 0, 2);
         if (\extension_loaded('intl')) {
             $tmp[$l] = sprintf('%s (%s)', ucfirst(\locale_get_display_language($l, $lang)), \locale_get_display_region($l, $lang));
         } else {
             $tmp[$lang][$l] = $l;
         }
     }
     $view['languageDatasource'] = \Nethgui\Renderer\AbstractRenderer::hashToDatasource($tmp, TRUE);
     $this->xhtmlDecoratorParams['disableHeader'] = TRUE;
     $this->xhtmlDecoratorParams['disableMenu'] = TRUE;
     $this->xhtmlDecoratorParams['disableFooter'] = FALSE;
     $isAuthenticatedUserLoggingInAgain = $user->isAuthenticated() && !$this->getRequest()->isMutation();
     $isUnauthUserRequest = !$user->isAuthenticated() && !$this->getRequest()->isMutation() && $this->parameters['path'];
     if ($isAuthenticatedUserLoggingInAgain) {
         $this->httpResponse->setStatus(302)->addHeader('Location: ' . $view->getSiteUrl() . $view->getModuleUrl('/'));
     } elseif ($isUnauthUserRequest) {
         $this->httpResponse->setStatus(403, 'Forbidden');
     }
 }
예제 #10
0
/**
 * Translate a language using INTL extension
 * 
 * @param string $locale
 * @param string $language
 */
function translate_locale($locale, $language)
{
    if (is_null($language)) {
        return null;
    } elseif (is_array($language)) {
        foreach ($language as $lang) {
            $out = translate_locale($locale, $lang);
            if (!empty($out)) {
                return $out;
            }
        }
    } elseif (is_string($language)) {
        $languageName = locale_get_display_language($locale, $language);
        $languageName = trim($languageName);
        if (empty($languageName) || strcasecmp($languageName, $locale) === 0) {
            return null;
        }
        if (strcasecmp($language, 'en') !== 0) {
            $englishName = locale_get_display_language($locale, 'en');
            if (empty($englishName) || strcasecmp($englishName, $locale) === 0 || strcasecmp($englishName, $languageName) === 0) {
                return null;
            }
        }
        $defaultLanguage = locale_get_primary_language(__DEFAULT_LOCALE__);
        if (strcasecmp($language, $defaultLanguage) !== 0) {
            $defaultName = locale_get_display_language($locale, __DEFAULT_LOCALE__);
            if (empty($defaultName) || strcasecmp($defaultName, $locale) === 0 || strcasecmp($defaultName, $languageName) === 0) {
                return null;
            }
        }
        $defaultLocale = locale_get_default();
        $defaultLanguage = locale_get_primary_language($defaultLocale);
        if (strcasecmp($language, $defaultLanguage) !== 0) {
            $defaultName = locale_get_display_language($locale, $defaultLocale);
            if (empty($defaultName) || strcasecmp($defaultName, $locale) === 0 || strcasecmp($defaultName, $languageName) === 0) {
                return null;
            }
        }
        return $languageName;
    } else {
        echo "Error: \$language must be a string or array.\n";
        exit(1);
    }
    return null;
}