【发布时间】:2014-02-12 03:30:43
【问题描述】:
我刚开始使用 PHP OOP,我想写一个类来制作一个多语言网站。我从 this 开始,但我想使用 OOP,所以我想出了这个:
Language.php
<?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;
}
}
}
index.php
<?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>
虽然这非常有效,但我不确定这是正确的方法。我没有找到很多关于如何使用 OOP 做到这一点的教程,所以我有以下疑问:
- 这是正确的做法吗?
- 此代码可维护吗?
- 在数据库中创建一个包含所有不同语言的表是否更有意义?
- 我仍在努力理解“抽象类”。是否会创建一个抽象类 language.php,然后将该类与其他语言类(english.php、italian.php 等)扩展(我希望这是正确的术语)。
【问题讨论】:
-
这个问题似乎是题外话,因为它属于另一个网络站点:codereview.stackexchange.com
-
我什至不知道 codereview.stackexchange.com。我现在该怎么办?从这里删除并发布到其他网站?
-
我认为你不需要这样做,你的问题会迁移(如果 moredators 会这样做)
-
您可能会发现这个问题很有用:Best practice multi language website
标签: php oop multilingual