本文整理汇总了PHP中bind_textdomain_codeset函数的典型用法代码示例。如果您正苦于以下问题:PHP bind_textdomain_codeset函数的具体用法?PHP bind_textdomain_codeset怎么用?PHP bind_textdomain_codeset使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了bind_textdomain_codeset函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: smarty_function_locale
/**
* ------------------------------------------------------------------------- *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Lesser General Public *
* License as published by the Free Software Foundation; either *
* version 2.1 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this library; if not, write to the Free Software *
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
* ------------------------------------------------------------------------- *
*
* @package smarty-gettext
* @link https://github.com/smarty-gettext/smarty-gettext/
* @author Karlheinz Toni <karlheinz.toni@gmail.com>
* @author Boleslaw Tekielski <bolek@gvault13.pl>
* @author Elan Ruusamäe <glen@delfi.ee>
* @copyright 2012 Karlheinz Toni
* @copyright 2015 Boleslaw Tekielski
* @copyright 2015 Elan Ruusamäe
*/
function smarty_function_locale($params, &$smarty)
{
static $stack;
// init stack as array
if ($stack === null) {
$stack = array();
}
$path = null;
$template_dirs = method_exists($smarty, 'getTemplateDir') ? $smarty->getTemplateDir() : $smarty->template_dir;
$path_param = isset($params['path']) ? $params['path'] : '';
$domain = isset($params['domain']) ? $params['domain'] : 'messages';
$stack_operation = isset($params['stack']) ? $params['stack'] : 'push';
foreach ((array) $template_dirs as $template_dir) {
$path = $template_dir . $path_param;
if (is_dir($path)) {
break;
}
}
if (!$path && $stack_operation != 'pop') {
trigger_error("Directory for locales not found (path='{$path_param}')", E_USER_ERROR);
}
if ($stack_operation == 'push') {
$stack[] = array($domain, $path);
} elseif ($stack_operation == 'pop') {
if (count($stack) > 1) {
array_pop($stack);
}
list($domain, $path) = end($stack);
} else {
trigger_error("Unknown stack operation '{$stack_operation}'", E_USER_ERROR);
}
bind_textdomain_codeset($domain, 'UTF-8');
bindtextdomain($domain, $path);
textdomain($domain);
}
示例2: iniTranslation
/**
* Init Translation system using gettext
*
* @param object $locale instance of Zend_Locale
*
* @return void
*/
public function iniTranslation($locale, array $availableDomains = array())
{
if (!$locale instanceof Zend_Locale) {
$locale = new Zend_Locale($locale);
}
$localeDirPath = $this->getConfig('localeDirPath');
// init available gettext domains
foreach ($availableDomains as $domain) {
bindtextdomain($domain, $localeDirPath);
bind_textdomain_codeset($domain, 'UTF-8');
}
// set first domain has default domain
$defaultDomain = array_shift($availableDomains);
textdomain($defaultDomain);
$localeWithEncoding = $locale . '.utf8';
// mandatory for gettext
if (putenv('LANGUAGE') != $locale->getLanguage()) {
throw new BaseZF_Service_GetText_Exception(sprintf('Could not set the ENV variable LANGUAGE = %s', $locale));
}
if (setlocale(LC_MESSAGES, $localeWithEncoding) !== $localeWithEncoding) {
throw new BaseZF_Service_GetText_Exception(sprintf('Unable to set locale "%s" to value "%s", please check installed locales on system', 'LC_MESSAGES', $localeWithEncoding));
}
if (setlocale(LC_TIME, $localeWithEncoding) !== $localeWithEncoding) {
throw new BaseZF_Service_GetText_Exception(sprintf('Unable to set locale "%s" to value "%s", please check installed locales on system', 'LC_TIME', $localeWithEncoding));
}
return $this;
}
示例3: set
/**
* Sets i18n locale language
*
* sets the language for i18n php gettext module
* (gettext has to be enabled in the php.ini)
*
*/
function set()
{
if (extension_loaded('gettext')) {
// try and find the default locale
$default_lang = preg_replace('/-/', '_', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
$locale = 'en_US';
$locale_dir = "./locale";
$directories = getdirectories($locale_dir, "");
foreach ($directories as $directory) {
$buf = substr($directory, strlen($locale_dir) + 1, strlen($directory) - strlen($locale_dir));
if (preg_match("/" . $buf . "/i", $default_lang)) {
$locale = $buf;
break;
}
}
// set locale
$language = isset($_COOKIE['ari_lang']) ? $_COOKIE['ari_lang'] : $locale;
putenv("LANG={$language}");
putenv("LANGUAGE={$language}");
setlocale(LC_MESSAGES, $language);
bindtextdomain('ari', './locale');
bind_textdomain_codeset('ari', 'UTF-8');
textdomain('ari');
} else {
function _($str)
{
return $str;
}
}
}
示例4: translate
function translate($lang, $test = 0)
{
global $LOCALE_PATH;
putenv("LANGUAGE={$lang}");
bindtextdomain("zarafa", "{$LOCALE_PATH}");
if (STORE_SUPPORTS_UNICODE == false) {
bind_textdomain_codeset('zarafa', "windows-1252");
} else {
bind_textdomain_codeset('zarafa', "utf-8");
}
textdomain('zarafa');
setlocale(LC_ALL, $lang);
$trans_array["Sent Items"] = _("Sent Items");
$trans_array["Outbox"] = _("Outbox");
$trans_array["Deleted Items"] = _("Deleted Items");
$trans_array["Inbox"] = _("Inbox");
$trans_array["Calendar"] = _("Calendar");
$trans_array["Contacts"] = _("Contacts");
$trans_array["Drafts"] = _("Drafts");
$trans_array["Journal"] = _("Journal");
$trans_array["Notes"] = _("Notes");
$trans_array["Tasks"] = _("Tasks");
$trans_array["Junk E-mail"] = _("Junk E-mail");
return $trans_array;
}
示例5: setDomain
/** Set domain name.
*
* @param string $dir Directory path, where to find domain. In this directory current locale named subdirectory will be searched.
* @param string $domain Domain name - filename without MO extension.
* @param string $codeset Domain file codeset.
*
* @return $this
*/
public final function setDomain($dir, $domain, $codeset = 'UTF-8')
{
bindtextdomain($domain, $dir);
bind_textdomain_codeset($domain, $codeset);
$this->domains[] = $domain;
return $this;
}
示例6: setOptions
public function setOptions($options)
{
if (!is_array($options)) {
throw new \Exception('Invalid options');
}
if (!isset($options['locale'])) {
throw new \Exception('Parameter "locale" is required');
}
if (strpos($options['locale'], '..') !== false) {
throw new \Exception('Locale has dangerous characters');
}
if (!isset($options['domains'])) {
throw new \Exception('domains must be specified and it must be an array.');
}
if (isset($options['compileAlways']) && $options['compileAlways'] === true) {
$compiler = new Compiler();
$compiler->compileLocale(['locale' => $options['locale'], 'domains' => $options['domains'], 'localeDir' => $options['localeDir'], 'localeCacheDir' => $options['localeCacheDir']]);
}
$codeset = 'UTF-8';
putenv('LANG=' . $options['locale'] . '.' . $codeset);
putenv('LANGUAGE=' . $options['locale'] . '.' . $codeset);
setlocale(LC_ALL, $options['locale'] . '.' . $codeset);
foreach ($options['domains'] as $domain) {
bindtextdomain($domain, $options['localeCacheDir']);
bind_textdomain_codeset($domain, $codeset);
}
$this->domains = $options['domains'];
$this->defaultDomain = reset($options['domains']);
textdomain($this->defaultDomain);
}
示例7: __construct
public function __construct($lang = 'en_EN', $domain = 'default')
{
/* ./locale/en_EN/LC_MESSAGES/default.po */
$fnMO = dirname(__FILE__) . '/locale/' . $lang . '/LC_MESSAGES/' . $domain . '.mo';
if (!file_exists($fnMO)) {
$fnPO = substr($fnMO, 0, -2) . 'po';
if (file_exists($fnPO) && is_readable($fnPO)) {
$this->_moConverter($fnPO);
}
}
@putenv('LC_ALL=' . $lang);
@setlocale(LC_ALL, $lang);
if (function_exists('bindtextdomain')) {
bindtextdomain($domain, dirname(__FILE__) . '/locale');
}
if (function_exists('bind_textdomain_codeset')) {
bind_textdomain_codeset($domain, 'UTF-8');
}
if (function_exists('textdomain')) {
textdomain($domain);
}
$this->_defaultFunction = false;
$this->_cache = array();
if (function_exists('gettext')) {
$this->_defaultFunction = true;
} else {
$_tmp = $this->_moRead($fnMO, $lang);
if (is_array($_tmp)) {
$this->_cache = $_tmp[$lang];
}
unset($_tmp);
}
}
示例8: bindTextDomain
/**
* {@inheritdoc}
*/
public function bindTextDomain($textDomain, $codeSet = null)
{
$this->bendTextDomains[$textDomain] = array();
$textDomainDir = bindtextdomain($textDomain, $this->directory);
$translationFileDir = $textDomainDir . DIRECTORY_SEPARATOR . StringUtils::beforeFirst(setlocale(LC_MESSAGES, '0'), '.') . DIRECTORY_SEPARATOR . 'LC_MESSAGES';
$moFilePath = $translationFileDir . DIRECTORY_SEPARATOR . $textDomain . '.mo';
$poFilePath = $translationFileDir . DIRECTORY_SEPARATOR . $textDomain . '.po';
if (file_exists($moFilePath) === true) {
$this->bendTextDomains[$textDomain]['file_path'] = $moFilePath;
$this->bendTextDomains[$textDomain]['type'] = 'mo';
} elseif (file_exists($poFilePath) === true && $this->poParserInterface instanceof PoParserInterface === true) {
$this->bendTextDomains[$textDomain]['file_path'] = $poFilePath;
$this->bendTextDomains[$textDomain]['type'] = 'po';
$this->bendTextDomains[$textDomain]['plural_expr'] = false;
$this->bendTextDomains[$textDomain]['entries'] = $this->poParserInterface->extract($poFilePath);
$this->bendTextDomains[$textDomain]['plural_expr'] = '$' . $this->defaultPluralRule . ';';
// Default plural rule
$this->bendTextDomains[$textDomain]['plurals'] = 2;
if (isset($this->bendTextDomains[$textDomain]['entries']['']) === true) {
foreach ($this->bendTextDomains[$textDomain]['entries']['']['msgstr'] as $meta) {
if (preg_match('/Plural-Forms:\\s+nplurals=(\\d+);\\s+(plural=[^;]+)/', $meta, $matches) === 0) {
continue;
}
$this->bendTextDomains[$textDomain]['plurals'] = (int) $matches[1];
$this->bendTextDomains[$textDomain]['plural_expr'] = '$' . $matches[2] . ';';
}
}
} else {
return;
}
$textDomainCodeSet = $codeSet !== null ? $codeSet : $this->defaultCodeSet;
if (bind_textdomain_codeset($textDomain, $textDomainCodeSet) === $textDomainCodeSet) {
$this->bendTextDomains[$textDomain]['code_set'] = $textDomainCodeSet;
}
}
示例9: init_gettext
/**
* Initialise our use of Gettext
*/
function init_gettext($domain, $location)
{
bindtextdomain($domain, $location);
$codeset = bind_textdomain_codeset($domain, "UTF-8");
textdomain($domain);
dbg_error_log("I18N", "Bound domain =%s= to location =%s= using character set =%s=", $domain, $location, $codeset);
}
示例10: defineLanguage
public function defineLanguage()
{
setlocale(LC_MESSAGES, $this->locales[$this->language]);
bindtextdomain($this->route['view'], 'language');
textdomain($this->route['view']);
bind_textdomain_codeset($this->route['view'], 'UTF-8');
}
示例11: localization_setup
function localization_setup()
{
global $lang, $domain, $encoding, $available_locales, $preferred_lang;
// Choose a default language based on the client's HTTP headers.
// TODO: Replace HTTP::negotiateLanguage with something less buggy.
// (See http://www.dracos.co.uk/web/php/HTTP/ for details.)
$supported = $available_locales;
$preferred_lang = HTTP::negotiateLanguage($supported, $lang);
if ($preferred_lang) {
$lang = $preferred_lang;
}
// Override the default if the user has an explicit cookie or query string.
$force_lang = get_requested_lang();
if ($force_lang) {
$lang = $force_lang;
}
if ($available_locales[$lang]) {
// Set the locale.
$locale = $available_locales[$lang][0];
setlocale(LC_ALL, $locale);
// Find the locale directory.
$path_parts = pathinfo(__FILE__);
$this_dir = $path_parts["dirname"];
bindtextdomain($domain, "{$this_dir}/../locale");
// Set up gettext message localization.
textdomain($domain);
bind_textdomain_codeset($domain, $encoding);
}
// Tell clients to cache different languages separately.
header("Vary: Accept-Language");
}
示例12: init
function init($language, $baseDir)
{
if (!is_file($baseDir . 'language/' . $language . '/LC_MESSAGES/pommo.mo')) {
Pommo::kill('Unknown Language (' . $language . ')');
}
// if LC_MESSAGES is not available.. make it (helpful for win32)
if (!defined('LC_MESSAGES')) {
define('LC_MESSAGES', 6);
}
// load gettext emulation layer if PHP is not compiled w/ gettext support
if (!function_exists('gettext')) {
require_once $baseDir . 'lib/gettext/gettext.php';
require_once $baseDir . 'lib/gettext/gettext.inc';
}
// set the locale
if (!Pommo_Helper_L10n::_setLocale(LC_MESSAGES, $language, $baseDir)) {
// *** SYSTEM LOCALE COULD NOT BE USED, USE EMULTATION ****
require_once $baseDir . 'lib/gettext/gettext.php';
require_once $baseDir . 'lib/gettext/gettext.inc';
if (!Pommo_Helper_L10n::_setLocaleEmu(LC_MESSAGES, $language, $baseDir)) {
Pommo::kill('Error setting up language translation!');
}
} else {
// *** SYSTEM LOCALE WAS USED ***
if (!defined('_poMMo_gettext')) {
// set gettext environment
$domain = 'pommo';
bindtextdomain($domain, $baseDir . 'language');
textdomain($domain);
if (function_exists('bind_textdomain_codeset')) {
bind_textdomain_codeset($domain, 'UTF-8');
}
}
}
}
示例13: bindTextDomainCodeset
/**
* Specify the character encoding in which the messages
* from the DOMAIN message catalog will be returned.
*
* @param string $domain
* @param string $codeset
* @return string
*/
public function bindTextDomainCodeset($domain, $codeset)
{
if ($this->driver->hasLocaleAndFunction('bind_textdomain_codeset')) {
return bind_textdomain_codeset($domain, $codeset);
}
return $this->driver->bindTextDomainCodeset($domain, $codeset);
}
示例14: registerTextDomains
protected function registerTextDomains()
{
foreach (func_get_args() as $domain) {
bindtextdomain($domain, __DIR__ . '/../Resources/translations');
bind_textdomain_codeset($domain, 'UTF-8');
}
}
示例15: setUp
protected function setUp()
{
// override bootstrap settings
bindtextdomain("default", E7_PATH . "/tests/i18n");
textdomain("default");
bind_textdomain_codeset("default", 'UTF-8');
}