Вход Регистрация
Файл: oc-includes/osclass/core/Translation.php
Строк: 118
<?php if ( ! defined('ABS_PATH')) exit('ABS_PATH is not loaded. Direct access is not allowed.');

/*
 * Copyright 2014 Osclass
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

    
require_once osc_lib_path() . 'php-gettext/streams.php';
    require_once 
osc_lib_path() . 'php-gettext/gettext.php';

    class 
Translation {
        private 
$messages;
        private static 
$instance;

        public static function 
newInstance($install false) {
            if(!
self::$instance instanceof self) {
                
self::$instance = new self($install);
            }
            return 
self::$instance;
        }

        function 
__construct($install false) {
            if(!
$install) {
                
// get user/admin locale
                
if( OC_ADMIN ) {
                    
$locale osc_current_admin_locale();
                } else {
                    
$locale osc_current_user_locale();
                }

                
// load core
                
$core_file osc_translations_path() . $locale '/core.mo';
                
$this->_load($core_file'core');

                
// load messages
                
$messages_file osc_themes_path() . osc_theme() . '/languages/' $locale '/messages.mo';
                if(!
file_exists($messages_file)) {
                    
$messages_file osc_translations_path() . $locale '/messages.mo';
                }
                
$this->_load($messages_file'messages');

                
// load theme
                
$domain osc_theme();
                
$theme_file osc_themes_path() . $domain '/languages/' $locale '/theme.mo';
                if(!
file_exists($theme_file)) {
                    if(!
file_exists(osc_themes_path() . $domain)) {
                        
$domain 'modern';
                    }
                    
$theme_file osc_translations_path() . $locale '/theme.mo';
                }
                
$this->_load($theme_file$domain);

                
// load plugins
                
$aPlugins Plugins::listEnabled();
                foreach(
$aPlugins as $plugin) {
                    
$domain preg_replace('|/.*|'''$plugin);
                    
$plugin_file osc_plugins_path() . $domain '/languages/' $locale '/messages.mo';
                    if(
file_exists($plugin_file) ) {
                        
$this->_load($plugin_file$domain);
                    }
                }
            } else {
                
$core_file osc_translations_path() . osc_current_admin_locale() . '/core.mo';
                
$this->_load($core_file'core');
            }
        }

        function 
_get($domain) {
            if(!isset(
$this->messages[$domain])) {
                return 
false;
            }

            return 
$this->messages[$domain];
        }

        function 
_set($domain$reader) {
            if(isset(
$messages[$domain])) {
               
false;
            }

            
$this->messages[$domain] = $reader;
            return 
true;
        }

        function 
_load($file$domain) {
            if(!
file_exists($file)) {
                return 
false;
            }

            
$streamer = new FileReader($file);
            
$reader = new gettext_reader($streamer);
            return 
$this->_set($domain$reader);
        }
    }

?>
Онлайн: 0
Реклама