www.webdeveloper.com
Results 1 to 5 of 5

Thread: multilanguage site

Hybrid View

  1. #1
    Join Date
    Jan 2014
    Posts
    10

    multilanguage site

    I`m trying to creat multilanguage site with OOP php and mysql

    I have created 4 files

    1) index.php
    2) init.php
    3) lang.php
    4) database.php

    database.php

    PHP Code:
    <?php 
        $config 
    = array(
            
    'host'        => '127.0.0.1',
            
    'username'     => 'root',
            
    'password'     => '',
            
    'dbname'     => 'si'
        
    );
        
        
    $db = new PDO('mysql:host=' $config['host'] . ';dbname=' $config['dbname'],$config['username'],$config['password']);
        
    $db->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
        
    mysql_query('SET CHARACTER SET utf8');
        
    mysql_query('SET NAMES utf8');
    ?>
    lang.php

    PHP Code:
    <?php
        
    class Language 
        
    {
            private 
    $db;
            public function 
    __construct($database)
            {
                
    $this->db $database;
            }
            
            public function 
    pagetranslate($langname)
            {
                
    $query    $this->db->prepare("SELECT F.name, FT.trans
                                                FROM `languages` AS L
                                                INNER JOIN `transfunc` AS FT ON FT.langid = L.id
                                                INNER JOIN `func` AS F ON FT.funcid = F.id
                                                WHERE L.name =?"
    );
                
    $query->bindValue(1$langname);
                try
                {
                    
    $query->execute();
                    
    $pagetrans $query->fetch();                
                    return 
    $pagetrans;
                }
                catch(
    PDOException $e)
                {
                    die(
    $e->getMessage());
                }
            } 
        }
    init.php
    PHP Code:
    <?php
        
    if (ob_get_level() == 0){ob_start();}
        if (!isset(
    $_SESSION)){session_start();}
        
        require_once 
    'connect/database.php';
        require_once 
    'class/lang.php';
        
    $language    = new Language($db);
    ?>
    index.php

    HTML Code:
    <?php
    	if (!isset($_SESSION)){session_start();}
    	header('Cache-control: private');
    	if(isset($_GET['lang']))
    	{
    		$langname = $_GET['lang'];
    	}
    	else if(isset($_SESSION['lang']))
    	{
    		$langname = $_SESSION['lang'];
    	}
    	else if(isset($_COOKIE['lang']))
    	{
    		$langname = $_COOKIE['lang'];
    	}
    	else
    	{
    		$langname = 'ka';
    	}
    	include 'system/init.php';
    	$pagetrans = array();
    	$pagetrans = $language->pagetranslate($langname);
    		
    	function pageinfo($searchWord, $pagetrans)
    	{
    		foreach( $pagetrans as $key => $val )
    		{
    			if( $val["name"] == $searchWord )
    			{
    				return $val["trans"];
    			}
    		}
    	}
    ?>
    <!doctype html>
    <html>
    	<head>
            <meta charset="utf-8">
            <title><?php echo pageinfo('hometitle', $pagetrans); ?></title>
             </head>
            <body>
            </body>
    </html>
    and also I have created database

    my DB image

    and when I executing index.php
    it writting this error

    </br> <b>Nobice</b>
    please help me

    I do not understand what is the problem

    when I`m executing the selector in mysql workbench
    please look this image

    please help me!!!

  2. #2
    Join Date
    Aug 2004
    Location
    Ankh-Morpork
    Posts
    22,335
    Is that the entire error message? (And is it really spelled "Nobice" instead of "Notice"?)

    If it is a PHP-generated error, it should include the file where it was generated and the line number, as well as what the (potential) problem is.
    "Well done....Consciousness to sarcasm in five seconds!" ~ Terry Pratchett, Night Watch

    How to Ask Questions the Smart Way (not affiliated with this site, but well worth reading)

    My Blog
    cwrBlog: simple, no-database PHP blogging framework

  3. #3
    Join Date
    Jan 2014
    Posts
    4
    Does it have to be with MySQL? If not required, you can use what i use:

    Code:
    <?php
    
    error_reporting(E_ALL);
    
    global $lang; $lang = 0;
    
    function setlanguage($lng)
      {
        static $ERR = 0; $ERL = 0; $REL = 0; $Returnvalue = 0;
    
        if (strtolower(Trim($lng)) == 'english')
          {
            $GLOBALS['lang'] = 0;
          }
        if (strtolower(Trim($lng)) == 'spanish')
          {
            $GLOBALS['lang'] = 1;
          }
        if (strtolower(Trim($lng)) == 'french')
          {
            $GLOBALS['lang'] = 2;
          }
    
      }
    
    function trans($sentence)
      {
        static $ERR = 0; $ERL = 0; $REL = 0; $Returnvalue = 0;
    
        if ($GLOBALS['lang']==0) {return $sentence;}
    
        $sentences = array('Hello World' => array('Hola Mundo', 'Bonjour tout le monde'));
    
        return $sentences[$sentence][$GLOBALS['lang']];
    
      }
    
    setlanguage('spanish');
    
    echo trans('Hello World');
    
    ?>
    You can do it more sophisticated storing the translation string in another file, but i like this way because you can actually see what the translation reads in the original language.

  4. #4
    Join Date
    Jan 2014
    Posts
    4
    Seems like i cannot edit my own posts, this line:

    Code:
    return $sentences[$sentence][$GLOBALS['lang']];
    should be:

    Code:
    return $sentences[$sentence][$GLOBALS['lang']-1];

  5. #5
    Join Date
    Jan 2014
    Posts
    10
    ok
    I did this with this code

    SQL
    --
    -- Table structure for table `func`
    --

    CREATE TABLE IF NOT EXISTS `func` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(30) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

    --
    -- Dumping data for table `func`
    --

    INSERT INTO `func` (`id`, `name`) VALUES
    (1, 'hometitle');

    -- --------------------------------------------------------

    --
    -- Table structure for table `languages`
    --

    CREATE TABLE IF NOT EXISTS `languages` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(10) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

    --
    -- Dumping data for table `languages`
    --

    INSERT INTO `languages` (`id`, `name`) VALUES
    (1, 'ka'),
    (2, 'ru'),
    (3, 'en');

    -- --------------------------------------------------------

    --
    -- Table structure for table `transfunc`
    --

    CREATE TABLE IF NOT EXISTS `transfunc` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `funcid` int(11) NOT NULL,
    `langid` int(11) NOT NULL,
    `trans` text CHARACTER SET utf8 NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
    lang.php

    <?php
    class Language
    {
    private $db;
    public function __construct($database)
    {
    $this->db = $database;
    }

    public function pagetranslate($langname)
    {
    $query = $this->db->prepare("SELECT F.name, FT.trans
    FROM transfunc FT
    INNER JOIN func F ON FT.funcid = F.id
    INNER JOIN languages L ON FT.langid = L.id AND L.name =?");

    $query->bindValue(1, $langname, PDO::PARAM_STR);
    try
    {
    $query->execute();
    $row = array();
    $row = $query->fetchall();
    return $row;
    }
    catch(PDOException $e)
    {
    die($e->getMessage());
    }
    }
    }
    init.php

    <?php
    if (ob_get_level() == 0){ob_start();}
    if (!isset($_SESSION)){session_start();}

    require_once 'connect/database.php';
    require_once 'class/lang.php';
    $language = new Language($db);
    ?>
    index.php

    <?php
    if (!isset($_SESSION)){session_start();}
    header('Cache-control: private');
    if(isset($_GET['lang']))
    {
    $langname = $_GET['lang'];
    }
    else if(isset($_SESSION['lang']))
    {
    $langname = $_SESSION['lang'];
    }
    else if(isset($_COOKIE['lang']))
    {
    $langname = $_COOKIE['lang'];
    }
    else
    {
    $langname = 'ka';
    }
    include 'system/init.php';
    $trans = array();
    $trans = $language->pagetranslate($langname);
    function pageinfo($searchWord, $trans)
    {
    foreach( $trans as $key => $val )
    {
    if( $val["name"] == $searchWord )
    {
    return $val["trans"];
    }
    }
    }
    if (isset($_GET['page']))
    {
    $page = $_GET['page'];
    $pages = array('home','company','admin','login');
    if(in_array($page,$pages))
    {
    $page .= '.php';
    include($page);
    }
    else
    {
    header('location: index.php?lang='.$langname.'&page=home');
    exit();
    }
    }
    else
    {
    header('location: index.php?lang='.$langname.'&page=home');
    exit();
    }
    ?>
    home.php

    <?php
    if (!isset($_SESSION)){session_start();}
    header('Cache-control: private');
    if(isset($_GET['lang']))
    {
    $langname = $_GET['lang'];
    }
    else
    {
    $langname = 'ka';
    }
    if ($_SERVER['REQUEST_URI'] === '/s/home.php')
    {
    header('location: index.php?lang='.$langname.'&page=home');
    exit();
    }
    ?>
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title><?php echo pageinfo("hometitle", $trans); ?></title>
    </head>
    <body>
    </body>
    </html>
    it is working...
    but page loading is very very slow
    how can I solve this problem???

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center

"

"

X vBulletin 4.2.2 Debug Information

  • Page Generation 0.11198 seconds
  • Memory Usage 3,068KB
  • Queries Executed 13 (?)
More Information
Template Usage (33):
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_global_above_footer
  • (1)ad_global_below_navbar
  • (1)ad_global_header1
  • (1)ad_global_header2
  • (1)ad_navbar_below
  • (3)bbcode_code
  • (1)bbcode_html
  • (3)bbcode_php
  • (6)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)headinclude_bottom
  • (5)memberaction_dropdown
  • (1)navbar
  • (4)navbar_link
  • (1)navbar_moderation
  • (1)navbar_noticebit
  • (1)navbar_tabs
  • (2)option
  • (5)postbit
  • (5)postbit_onlinestatus
  • (5)postbit_wrapper
  • (1)showthread_list
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available (6):
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files (27):
  • ./showthread.php
  • ./global.php
  • ./includes/class_bootstrap.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/functions_navigation.php
  • ./includes/class_friendly_url.php
  • ./includes/class_hook.php
  • ./includes/class_bootstrap_framework.php
  • ./vb/vb.php
  • ./vb/phrase.php
  • ./includes/functions_facebook.php
  • ./includes/functions_calendar.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_notice.php
  • ./includes/functions_threadedmode.php
  • ./packages/vbattach/attach.php
  • ./vb/types.php
  • ./vb/cache.php
  • ./vb/cache/db.php
  • ./vb/cache/observer/db.php
  • ./vb/cache/observer.php 

Hooks Called (71):
  • init_startup
  • friendlyurl_resolve_class
  • init_startup_session_setup_start
  • database_pre_fetch_array
  • database_post_fetch_array
  • init_startup_session_setup_complete
  • global_bootstrap_init_start
  • global_bootstrap_init_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • load_show_variables
  • load_forum_show_variables
  • global_state_check
  • global_bootstrap_complete
  • global_start
  • style_fetch
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • strip_bbcode
  • friendlyurl_clean_fragment
  • friendlyurl_geturl
  • forumjump
  • cache_templates
  • cache_templates_process
  • template_register_var
  • template_render_output
  • fetch_template_start
  • fetch_template_complete
  • parse_templates
  • fetch_musername
  • notices_check_start
  • notices_noticebit
  • process_templates_complete
  • friendlyurl_redirect_canonical
  • showthread_post_start
  • showthread_query_postids_threaded
  • showthread_threaded_construct_link
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • memberaction_dropdown
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • build_navigation_data
  • build_navigation_array
  • check_navigation_permission
  • process_navigation_links_start
  • process_navigation_links_complete
  • set_navigation_menu_element
  • build_navigation_menudata
  • build_navigation_listdata
  • build_navigation_list
  • set_navigation_tab_main
  • set_navigation_tab_fallback
  • navigation_tab_complete
  • fb_like_button
  • showthread_complete
  • page_templates