Meerdere talen website
Ik heb een vraagje (alweer)
Je hebt wel eens vaker dat wanneer je naar een website gaat dat je kan kiezen in welke taal je de website wilt zien (bv. NL, EN, FR,...)
Ik heb al wat op google zitten zoeken naar wat tutorials, maar vind niet echt iets bruikbaars.
Weet misschien iemand van jullie waar ik naar moet zoeken of heeft iemand een script/tutorial voor me?
Dankje.
ff kijke of er iets tussen zit alvast bedankt
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
class Language
{
protected static $data = array();
protected static $language;
public static function setData(array $data)
{
self::$data = $data;
}
public static function getLanguages()
{
return array_keys(self::$data);
}
public static function setLanguage($language)
{
self::$language = $language;
}
public static function get($key)
{
if (!isset(self::$data[ self::$language ][$key])) {
return null;
}
return self::$data[ self::$language ][$key];
}
}
// Setup
$array = array(
'en' => array(
'home' => 'Welcome',
'about' => 'About us',
),
'nl' => array(
'home' => 'Welkom',
'about' => 'Over ons',
)
);
Language::setData($array);
// Taal kiezen, ook even kijken of de taal ondersteund wordt
if (isset($_GET['lang']) && in_array($_GET['lang'], Language::getLanguages()))
Language::setLanguage($_GET['lang']);
else
Language::setLanguage('nl');
// En dan toepassen
Language::get('home');
?>
class Language
{
protected static $data = array();
protected static $language;
public static function setData(array $data)
{
self::$data = $data;
}
public static function getLanguages()
{
return array_keys(self::$data);
}
public static function setLanguage($language)
{
self::$language = $language;
}
public static function get($key)
{
if (!isset(self::$data[ self::$language ][$key])) {
return null;
}
return self::$data[ self::$language ][$key];
}
}
// Setup
$array = array(
'en' => array(
'home' => 'Welcome',
'about' => 'About us',
),
'nl' => array(
'home' => 'Welkom',
'about' => 'Over ons',
)
);
Language::setData($array);
// Taal kiezen, ook even kijken of de taal ondersteund wordt
if (isset($_GET['lang']) && in_array($_GET['lang'], Language::getLanguages()))
Language::setLanguage($_GET['lang']);
else
Language::setLanguage('nl');
// En dan toepassen
Language::get('home');
?>
Gewijzigd op 24/10/2010 19:35:39 door Pim -
Pim - op 24/10/2010 18:56:37:
Of in een class. Nu even statisch, maar dat hoeft natuurlijk niet
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
class Language
{
protected static $data = array();
protected static $language;
public static function setData(array $data)
{
self::$data = $data;
}
public static function getLanguages()
{
return array_keys(self::$data);
}
public static function setLanguage($language)
{
self::$language = $language;
}
public static function get($key)
{
if (!isset(self::$data[ self::$language ][$key])) {
return null;
}
return self::$data[ self::$language ][$key];
}
}
// Setup
$array = array(
'en' => array(
'home' => 'Welcome',
'about' => 'About us',
),
'nl' => array(
'home' => 'Welkom',
'about' => 'Over ons',
)
);
Language::setData($array);
// Taal kiezen, ook even kijken of de taal ondersteund wordt
if (isset($_GET['lang']) && in_array($_GET['lang'], Language::getLanguages()))
Language::setLanguage($_GET['lang']);
else
Language::setLanguage('nl');
// En dan toepassen
Language::get('home');
?>
class Language
{
protected static $data = array();
protected static $language;
public static function setData(array $data)
{
self::$data = $data;
}
public static function getLanguages()
{
return array_keys(self::$data);
}
public static function setLanguage($language)
{
self::$language = $language;
}
public static function get($key)
{
if (!isset(self::$data[ self::$language ][$key])) {
return null;
}
return self::$data[ self::$language ][$key];
}
}
// Setup
$array = array(
'en' => array(
'home' => 'Welcome',
'about' => 'About us',
),
'nl' => array(
'home' => 'Welkom',
'about' => 'Over ons',
)
);
Language::setData($array);
// Taal kiezen, ook even kijken of de taal ondersteund wordt
if (isset($_GET['lang']) && in_array($_GET['lang'], Language::getLanguages()))
Language::setLanguage($_GET['lang']);
else
Language::setLanguage('nl');
// En dan toepassen
Language::get('home');
?>
?>
wel netter, maar veel meer code.
Wil jij bij elke string het volgende zetten?
Code (php)
Waarbij je ook nog eens moet zorgen dat de variabelen in de functies / methoden terecht komen.
Dan is gewoon
Toch even wat minder?
Nu kan je ook nog de volgende methode toevoegen en daarmee formated strings gebruiken
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
public static function getParams($key)
{
if(!isset(self::$data[ self::$language ][$key])) {
return null;
}
$params = func_get_args();
// Strip the key arg
array_shift($params);
return vsprintf(self::$data[ self::$language ][$key], $params);
}
$array = array(
'en' => array(
'user' => 'Welcome %s! Enjoy your stay at site.com'
),
'nl' => array(
'user' => 'Welkom %s! Veel plezier met uw bezoek bij site.com'
),
);
Language::setData($array);
Language::setLanguage('nl');
echo Language::getParams('user', 'Pim');
// Geeft: Welkom Pim! Veel plezier met uw bezoek bij site.com
?>
public static function getParams($key)
{
if(!isset(self::$data[ self::$language ][$key])) {
return null;
}
$params = func_get_args();
// Strip the key arg
array_shift($params);
return vsprintf(self::$data[ self::$language ][$key], $params);
}
$array = array(
'en' => array(
'user' => 'Welcome %s! Enjoy your stay at site.com'
),
'nl' => array(
'user' => 'Welkom %s! Veel plezier met uw bezoek bij site.com'
),
);
Language::setData($array);
Language::setLanguage('nl');
echo Language::getParams('user', 'Pim');
// Geeft: Welkom Pim! Veel plezier met uw bezoek bij site.com
?>
Gewijzigd op 24/10/2010 19:43:09 door Pim -
ik heb voor mijn webshop gebruik gemaakt van session. De teksten van de producten staan in meerdere talen in de database, en de teksten van dingen als algemene voorwaarden ook.
Dan gewoon bij de query een AND taal = '".mysql_real_escape_string($_GET['taal'])."', als ze der toch al in staan...
Milo S op 24/10/2010 20:45:43:
Dan gewoon bij de query een AND taal = '".mysql_real_escape_string($_GET['taal'])."', als ze der toch al in staan...
met $_GET moet ik in iedere link in mijn webshop een taal=nl of taal=en inbouwen, met $_SESSION heb je dat probleem niet.