Some people around net are digging about how to make their website using multiple languages and allow users to switch this from within URL without modifying routes, adding new routes or using some prefixes/parameters in your controllers.
Some examples on what we are trying to get:
http://example.com/content - content with default language
http://example.com/en/content - content with english language
http://example.com/de/content - content with german language
http://example.com/ru/content - content with russian language
The simple trick is in modifying query url and checking if first element is withing langeages list. Then just to remove this one, to get modified url parameter.
First, you will need to alter your "config.php" file and add a list of all available languages.
Now we will have to create new file "MY_Router.php" in "/application/core" folder, with following content:
Thats it. Now for example default "welcome" route will be accessible thru "/", "/en", "/de", "/ru" url, you will just have to add some text![Smile Smile]()
There is also some other magic, how you can use your Database to get all text translated![Smile Smile]()
Enjoy!
Some examples on what we are trying to get:
http://example.com/content - content with default language
http://example.com/en/content - content with english language
http://example.com/de/content - content with german language
http://example.com/ru/content - content with russian language
The simple trick is in modifying query url and checking if first element is withing langeages list. Then just to remove this one, to get modified url parameter.
First, you will need to alter your "config.php" file and add a list of all available languages.
Code:
$config['language'] = 'english';
$config['languages'] = [
'english' => 'en',
'german' => 'de',
'russian' => 'ru'
];Now we will have to create new file "MY_Router.php" in "/application/core" folder, with following content:
Code:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class MY_Router extends CI_Router {
protected function _parse_routes()
{
// Language detection over URL
if($this->uri->segments[1] == $this->config->config['language']) {
unset($this->uri->segments[1]);
}
if(array_search($this->uri->segments[1], $this->config->config['languages'])) {
$this->config->config['language'] = array_search($this->uri->segments[1], $this->config->config['languages']);
unset($this->uri->segments[1]);
}
// Return default function
return parent::_parse_routes();
}
}Thats it. Now for example default "welcome" route will be accessible thru "/", "/en", "/de", "/ru" url, you will just have to add some text

There is also some other magic, how you can use your Database to get all text translated

Enjoy!