Codeigniter Multi-lang将lang代码添加到URL(set_userdata)

时间:2015-10-20 13:12:20

标签: php codeigniter multilingual

我正在开发之前创建的Codeigniter项目。我遇到了这个功能:

    public function change_language()
    {
    $string_value  = $this->input->post('lang_code');
    $rows = $this->Common_model->getTableData('language', array('code' => $string_value))->row();
    $this->session->set_userdata('language',$rows->name);
    $this->session->set_userdata('locale',$string_value);
    }

数据库:

----------------------------------------
  id  |  code  |  name  |  img_path    
----------------------------------------
  1   |  en    | English| images/en.png
  2   |  ru    | Russian| images/ru.png

该功能正常工作并加载语言文件的内容。网站正在翻译,所有en / ru的URL保持不变。因为没有,如果非默认页面没有被Google索引。我怎样才能添加' ru'和' ru'在域名之后?

途径:

    <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/*
| -------------------------------------------------------------------------
| URI ROUTING
| -------------------------------------------------------------------------
| This file lets you re-map URI requests to specific controller functions.
|
| Typically there is a one-to-one relationship between a URL string
| and its corresponding controller class/method. The segments in a
| URL normally follow this pattern:
|
|   example.com/class/method/id/
|
| In some instances, however, you may want to remap this relationship
| so that a different class/function is called than the one
| corresponding to the URL.
|
| Please see the user guide for complete details:
|
|   http://codeigniter.com/user_guide/general/routing.html
|
| -------------------------------------------------------------------------
| RESERVED ROUTES
| -------------------------------------------------------------------------
|
| There area two reserved routes:
|
|   $route['default_controller'] = 'welcome';
|
| This route indicates which controller class should be loaded if the
| URI contains no data. In the above example, the "welcome" class
| would be loaded.
|
|   $route['404_override'] = 'errors/page_missing';
|
| This route will tell the Router what URI segments to use if those provided
| in the URL cannot be matched to a valid route.
|
*/
$route['default_controller']    = "home";
$route['search']                = "search/index";
$route['rooms/(:num)']          = "rooms/index/$1";
$route['rooms/(:num)/preview']  = "rooms/index/$1/preview";
$route['rooms/new']             = "rooms/newlist";
$route['tell_a_friend']         = "referrals/tell_a_friend";
$route['users/profile/(:num)']  = "users/vouch";
$route['404_override']          = '';
$route['hosting']          = 'listings';
// Ilan route
$group_langs = 'en|ru';
$route["($group_langs)"] = $route['default_controller'];
$route["($group_langs)/(:any)$"] = "$2";
$route["contact"] = "pages/contact";
$route["contact/(:any)"] = "pages/contact/$1";

$route["amazing-czech-republic"] = "amazing_czech_republic";


$route["news/prague_news/(:any)"] = "/news/prague_news/$1";


$route['administrator']           = 'administrator/backend';
$route['administrator/login']   = 'administrator/auth/login';

$route['administrator/admin_key/viewAdmin_key/(:any)'] = 'info';
$route['administrator/backend/(:any)'] = 'info';
$route['administrator/settings/lang_front/(:any)'] = 'info';
$route['administrator/settings/lang_back/(:any)'] = 'info';
$route['administrator/settings/home_meta_settings/(:any)'] = 'info';
$route['administrator/settings/change_password/(:any)'] = 'info';
$route['administrator/settings/how_it_works/(:any)'] = 'info';
$route['administrator/email/settings/(:any)'] = 'info';
$route['administrator/email/mass_email/(:any)'] = 'info';
$route['administrator/members/add/(:any)'] = 'info';
$route['administrator/members/changepassword/(:num)/(:any)'] = 'info';
$route['administrator/members/edit/(:num)/(:any)'] = 'info';
$route['administrator/lists/addlist/(:num)'] = 'administrator/lists/managelist/(:num)';
$route['administrator/lists/managelist/(:num)/(:any)'] = 'info';
$route['administrator/lists/view_aminity/(:any)'] = 'info';
$route['administrator/lists/view_all/(:any)'] = 'info';
$route['administrator/property_type/view_property/(:any)'] = 'info';
$route['administrator/property_type/view_all_property/(:any)'] = 'info';
$route['administrator/neighbourhoods/addcity/(:any)'] = 'info';
$route['administrator/neighbourhoods/viewcity/(:any)'] = 'info';
$route['administrator/neighbourhoods/addcity_place/(:any)'] = 'info';
$route['administrator/neighbourhoods/viewcity_place/(:any)'] = 'info';
$route['administrator/neighbourhoods/editcity_place/(:num)/(:any)'] = 'info';
$route['administrator/neighbourhoods/editcity/(:num)/(:any)'] = 'info';
$route['administrator/neighbourhoods/addcategory/(:any)'] = 'info';
$route['administrator/neighbourhoods/viewcategory/(:any)'] = 'info';
$route['administrator/neighbourhoods/editcategory/(:num)/(:any)'] = 'info';
$route['administrator/neighbourhoods/addpost/(:any)'] = 'info';
$route['administrator/neighbourhoods/viewpost/(:any)'] = 'info';
$route['administrator/neighbourhoods/editpost/(:num)/(:any)'] = 'info';
$route['administrator/neighbourhoods/addphotographer/(:any)'] = 'info';
$route['administrator/neighbourhoods/viewphotographer/(:any)'] = 'info';
$route['administrator/neighbourhoods/editphotographer/(:num)/(:any)'] = 'info';
$route['administrator/neighbourhoods/addtag/(:any)'] = 'info';
$route['administrator/neighbourhoods/viewtag/(:any)'] = 'info';
$route['administrator/neighbourhoods/edittag/(:num)/(:any)'] = 'info';
$route['administrator/neighbourhoods/addknowledge/(:any)'] = 'info';
$route['administrator/neighbourhoods/viewknowledge/(:any)'] = 'info';
$route['administrator/neighbourhoods/editknowledge/(:num)/(:any)'] = 'info';
$route['administrator/payment/finance/(:num)/(:any)'] = 'info';
$route['administrator/payment/details/(:num)/(:any)'] = 'info';
$route['administrator/payment/manage_gateway/(:num)/(:any)'] = 'info';
$route['administrator/payment/paymode/(:num)/(:any)'] = 'info';
$route['administrator/social/fb_settings/(:any)'] = 'info';
$route['administrator/social/twitter_settings/(:any)'] = 'info';
$route['administrator/social/google_settings/(:any)'] = 'info';
$route['administrator/managemetas/editmetas/(:num)/(:any)'] = 'info';
$route['administrator/page/viewPages/(:any)'] = 'info';
$route['administrator/page/addPage/(:any)'] = 'info';
$route['administrator/page/editPage/(:num)/(:any)'] = 'info';
$route['administrator/coupon/add_coupon/(:any)'] = 'info';
$route['administrator/coupon/view_all_coupon/(:any)'] = 'info';
$route['administrator/coupon/edit_coupon/(:num)/(:any)'] = 'info';
$route['administrator/help/viewhelp/(:any)'] = 'info';
$route['administrator/help/addhelp/(:any)'] = 'info';
$route['administrator/help/edithelp/(:num)/(:any)'] = 'info';
$route['administrator/faq/viewFaqs/(:any)'] = 'info';
$route['administrator/faq/editfaq/(:num)/(:any)'] = 'info';
$route['administrator/faq/addFaq/(:any)'] = 'info';
$route['administrator/contact/(:any)'] = 'info';
$route['administrator/joinus/viewJoinus/(:any)'] = 'info';
$route['administrator/cancellation/viewcancellation/(:any)'] = 'info';
$route['administrator/cancellation/editCancellation/(:num)/(:any)'] = 'info';


// Include cache routes-mark

/* End of file routes.php */
/* Location: ./application/config/routes.php */

require_once APPPATH . 'cache/routes.php';

1 个答案:

答案 0 :(得分:0)

您想设置example.com/en/controllerexample.com/ru/controller?通常不是最佳做法,但这会有所帮助:Building a multi-language navigation menu in CodeIgniter

对我的一个项目有用的是向页面添加?hl=ru参数。 链接将这些引用为<link href="https://example.com/controller?hl=ru" hreflang="ru" rel="alternate">。这使得多语言网站的链接变得干净,对搜索引擎优化来说是最好的,并且在CI中设置起来更容易。