【问题标题】:How do I make a php if/switch statement according to the PHP lang of the site?如何根据网站的 PHP 语言制作 php if/switch 语句?
【发布时间】:2011-08-07 09:07:57
【问题描述】:

我的网站有一种更改语言的方法,每次更改时,我都会在源代码顶部看到类似这样的内容:

<html dir="ltr" lang="en-US">
<html dir="ltr" lang="zh-TW">

我认为使用 URL 也可以:

http://alexchen.info/en
http://alexchen.info/tw

或者可能是这样的:

?lang=es
?lang=en

因为这也有效:

http://alexchen.info/?lang=es
http://alexchen.info/?lang=en

我想知道使用它来制作 php if 语句(或 switch 语句)的最佳方法是什么。 例如:

if(lang=en) {
 // do this
}


if(lang=tw) {
 // do this
}

【问题讨论】:

    标签: php if-statement switch-statement


    【解决方案1】:

    如果您有?lang=en,您可以简单地通过$_GET 全局变量获取。但是,您应该首先将逻辑封装在一个函数中。

    function getLang()
    {
        return $_GET['lang'];
    }
    
    // ...
    
    if (getLang() == 'en') {
        // ...
    }
    

    【讨论】:

    • 由于某种原因很奇怪,执行var_dump($_GET['lang']); 返回NULL 我应该在哪里放置该函数?
    【解决方案2】:

    编写一个开关(在他们的documentation 中很容易找到):

    switch($lang) {
        case 'en-US':
            // do this
            break;
        case 'zh-TW':
            // do this
            break;
    }
    

    虽然这可能不是进行网站翻译的最佳方法。我自己没有做过很多多语言的东西,但是我看到很多框架在函数中包装文本块,比如

    echo T("sample text");
    

    然后T 函数会将该文本替换为翻译后的文本。这样一来,您就不会让整个站点到处都是 switch 语句。翻译可以存储在数据库中。如果缺少翻译,可以将其记录或作为空白条目插入到您的数据库中,以便您知道以后需要填写/翻译的内容,而无需挖掘您的网站试图找到所有需要翻译文本的地方。

    【讨论】:

    • 我在大多数网站上都使用_e('multilingual content'),但我有一个难以使用的文字:&lt;?php next_post_link( '%link', 'Next Project ' . _x( '', 'next post link', 'twentyten' ) . '' ); ?&gt;,我想不出其他方法。
    • 我不明白这里的困难...你要翻译“下一个项目”还是什么?
    • 是的,它需要我这样做:&lt;?php _e("&lt;!--:en--&gt;english text&lt;!--:--&gt;&lt;!--:de--&gt;german text&lt;!--:--&gt;"); ?&gt; 使用 Wordpress 插件翻译内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多