代码之家  ›  专栏  ›  技术社区  ›  ganjan

gettext在一个文件中工作,而不是在另一个文件中工作?

  •  0
  • ganjan  · 技术社区  · 15 年前

    我上班有点困难。我做了一个简单的测试文件,在这里我调用translate.php和echo T\ux(“XXXXX”),然后它被翻译了,但是当我尝试在函数中使用echo T\ux时,它不起作用。。

    翻译.php:

        <?php
    
    error_reporting(E_ALL | E_STRICT);
    
    // define constants
    define('PROJECT_DIR', realpath('./functions/'));
    //define('LOCALE_DIR', PROJECT_DIR .'/functions/locale');
    define('LOCALE_DIR', PROJECT_DIR .'locale');
    define('DEFAULT_LOCALE', 'en_US');
    
    require_once('gettext.inc');
    
    $supported_locales = array('en_US', 'sr_CS', 'de_CH');
    $encoding = 'UTF-8';
    
    $locale = (isset($_GET['lang']))? $_GET['lang'] : DEFAULT_LOCALE;
    
    // gettext setup
    T_setlocale(LC_MESSAGES, $locale);
    // Set the text domain as 'messages'
    $domain = 'messages';
    T_bindtextdomain($domain, LOCALE_DIR);
    T_bind_textdomain_codeset($domain, $encoding);
    T_textdomain($domain);
    
    //header("Content-type: text/html; charset=$encoding");
    ?>
    

    <?php
    require("translate.php"); 
    
    echo T_("test"); 
    
    ?>
    

    那只是一个测试,看看它是否有效,“测试”这个词被翻译成我希望达到的效果。实际的php文件会变得更复杂一些。

    信息.php

    <?php
    
        require("functions\info_functions.php");
    
        (...)
    
        class infopage extends Page
        {
            public function display()
            {
            (...)
    
            displayInfo();
    
            (...)
            }
        }   
    
    
        $homepage = new infopage(); 
        $homepage->display();   
    
    ?>
    

    info\u functions.php-这里的回声不会被翻译!

    <?php
    
    require("translate.php"); 
    
    echo T_("test"); 
    
                function displayInfo()
                {
    
                (...)
    
                echo T_("test"); 
    
                (...)
    
                }
    
    ?>  
    
    1 回复  |  直到 15 年前
        1
  •  1
  •   Oren    15 年前

    检查您的 LOCALE_DIR 环境变量实际上指向 displayInfo() . 发件人:

    // define constants
    define('PROJECT_DIR', realpath('./functions/'));
    //define('LOCALE_DIR', PROJECT_DIR .'/functions/locale');
    define('LOCALE_DIR', PROJECT_DIR .'locale');
    

    它看起来可能是一个相对的路径,从内部不起作用 info_functions.php 因为它与其他(测试)文件位于不同的目录中。