当前位置: 首页 > 知识库问答 >
问题:

多语言网站-PHP类-正确的做法是什么?[关闭]

拓拔松
2023-03-14
<?php

class Language {

    private $UserLng;
    private $langSelected;
    public $lang = array();


    public function __construct($userLanguage){

        $this->UserLng = $userLanguage;
    }

    public function userLanguage(){

        switch($this->UserLng){
            /*
            ------------------
            Language: English
            ------------------
            */
            case "en":
                $lang['PAGE_TITLE'] = 'My website page title';
                $lang['HEADER_TITLE'] = 'My website header title';
                $lang['SITE_NAME'] = 'My Website';
                $lang['SLOGAN'] = 'My slogan here';
                $lang['HEADING'] = 'Heading';

                // Menu

                $lang['MENU_LOGIN'] = 'Login';
                $lang['MENU_SIGNUP'] = 'Sign up';
                $lang['MENU_FIND_RIDE'] = 'Find Ride';
                $lang['MENU_ADD_RIDE'] = 'Add Ride';
                $lang['MENU_LOGOUT'] = 'Logout';

                return $lang;
                break;

                /*
                ------------------
                Language: Italian
                ------------------
                */

            case "it":
                $lang['PAGE_TITLE'] = 'Il titolo della mia pagina';
                $lang['HEADER_TITLE'] = 'Il mio titolo';
                $lang['SITE_NAME'] = 'Il nome del mio sito';
                $lang['SLOGAN'] = 'Uno slogan';
                $lang['HEADING'] = 'Heading';

                // Menu

                $lang['MENU_LOGIN'] = 'Entra';
                $lang['MENU_SIGNUP'] = 'Registrati';
                $lang['MENU_FIND_RIDE'] = 'Trova gruppi';
                $lang['MENU_ADD_RIDE'] = 'Aggiungi gruppo';
                $lang['MENU_LOGOUT'] = 'Esci';

                return $lang;
                break;

        }
    }
}
<?php 
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);//Detecting Default Browser language
$language = New Language($lang);
$langArray = array();
$langArray =  $language->userLanguage();
?>

<div class="cssmenu">
    <ul>
        <li> class="active"><a href="/login"><?php echo $langArray['MENU_LOGIN']?></a></li>                                                                                         
        <li><a href="/rides"><?php echo $langArray['MENU_FIND_RIDE']?></a></li>                                               
        <li><a  id ="btnShow"><?php echo $langArray['MENU_ADD_RIDE']?></a></li>                                              
        <li><a href="/logout.php"><?php echo $langArray['MENU_LOGOUT']?> </a></li>                                                   
        <li><a href="/register"><?php echo $langArray['MENU_SIGNUP']?></a></li>
    </ul>
</div>
    null

共有1个答案

罗允晨
2023-03-14

你非常在轨道上,除了一个位,你的数据和代码交织在一起,这不是一个好的设计形式。不同的人使用不同的方法来处理I18N。我更喜欢使用.INI文件,你可以在不同的INI文件中拥有数据,甚至可以添加部分,如果你想的话。使用您的示例,您可以执行以下操作:

--en.ini

PAGE_TITLE = 'My website page title'
HEADER_TITLE = 'My website header title'
SITE_NAME' = 'My Website'
SLOGAN = 'My slogan here'
HEADING = 'Heading'

--it.ini

PAGE_TITLE = 'Il titolo della mia pagina'
HEADER_TITLE = 'Il mio titolo'
SITE_NAME = 'Il nome del mio sito'
SLOGAN = 'Uno slogan'
HEADING = 'Heading'
<?php

class Language {

private $UserLng;
private $langSelected;
public $lang = array();


public function __construct($userLanguage){

    $this->UserLng = $userLanguage;
    //construct lang file
    $langFile = '/path/to/ini/files/'. $this->UserLng . '.ini';
    if(!file_exists($langFile)){
        throw new Execption("Language could not be loaded"); //or default to a language
    }

    $this->lang = parse_ini_file($langFile);
}

public function userLanguage(){
    return $this->lang;
}

}
 类似资料:
  • 本来想学golang,看到有人说不适合写业务适合写中间件,又有人说go是面向error编程。java吧又转go

  • 问题内容: 我正在尝试在内添加HTML代码段,但无法使用包含功能。看来的当前语法与以前的语法不同:我看到许多示例使用 但是在官方文档中,它说使用 但随后在页面下方显示为 无论如何,我尝试了 我的代码片段不是很多代码,但是有很多事情要做。这可能会引起问题,所以我只用单词代替了内容,仍然一无所获。 我还尝试过直接在页面中声明模板,如下所示: 并遍历了引用脚本的所有变体,仍然一无所获。 我的页面还有很多

  • 问题内容: 我是一名新的Python程序员,他正在从2.6.4跃升至3.1.1。在我尝试使用“ else if”语句之前,一切都很好。解释器在“ else if”中的“ if”之后给了我一个语法错误,原因是我似乎无法弄清。 我可能缺少一些非常简单的东西;但是,我无法自行找到答案。 问题答案: 在python中,“ else if”被拼写为“ elif”。 另外,您还需要在和之后加上一个冒号。 简单

  • 我已经建立了一个多语言的网站,它的默认语言是英语,它被翻译成更多的语言。我们已经选择了子目录URL策略,这样我们的URL就像、等,默认语言应该从这些URL中省略吗?所以不是 我们可以用 (默认站点语言,本例中为EN) 在SEO、UX、最佳实践方面哪个更好? 附注。我读过这个和这个,但重点是是否翻译URL是最优的,他们没有真正解决我的问题。请注意,在我的情况下,要么保留英文措辞(,),要么在不可能的

  • 如何为下面的代码获得正确的模。我被困在这里了。我正在使用类型转换来获得结果。我需要返回。正确的方式是什么。