Taal keuze integreren
Ik heb al een tijdje een PHP website, en ben net aan handig genoem om zelf pagina's toe te voegen, de CSS een beetje te tunen, etcetera
Nu wil ik graag een taal keuze, dmv vlaggetjes, op de site hebben. Zodanig dat de bezoeker zelf kan kiezen welke (beschikbare) taal hij/zij wil. Dat hoeft wat mij betreft geen automatische taal detectie te zijn, simpel default op Nederlands, en keuze voor bijv. Duits en/of Engels.
Ik heb op het forum gekeken, en ben ook een paar dingen tegen gekomen. Helaas ontbreekt het mij aan voldoende kennis, vandaar mijn vraag:
Wie kan mij helpen door een taalkeuze op mijn site in te stellen, zover dat ik als leek het weer zelf verder op kan pakken? (vergoeding bespreekbaar)
Alvast mijn hartelijke dank,
Met vriendelijke groet,
Melle Dirksen
set_language.php (?taal=engels)
Code (php)
index.php
Code (php)
languages/engels.php
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$lang['welkom'] = "Welcome";
$lang['inhoud'] = "Welcome on my website.";
//etc..
?>
$lang['welkom'] = "Welcome";
$lang['inhoud'] = "Welcome on my website.";
//etc..
?>
languages/frans.php
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$lang['welkom'] = "Bienvenue";
$lang['inhoud'] = "Bienvenue sur mon site.";
//etc..
?>
$lang['welkom'] = "Bienvenue";
$lang['inhoud'] = "Bienvenue sur mon site.";
//etc..
?>
languages/nederlands.php
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$lang['welkom'] = "Welkom";
$lang['inhoud'] = "Welkom op mijn site..";
//etc...
?>
$lang['welkom'] = "Welkom";
$lang['inhoud'] = "Welkom op mijn site..";
//etc...
?>
Dit is het...
Als je dit op je site wil inbouwen kan ik er van de week wel even naar kijken.
PM me in dat geval even ...
Gewijzigd op 26/07/2011 16:19:20 door - Ariën -
Dank voor je snelle antwoord!
Op zich denk ik te begrijpen hoe ik de bestanden/scripts die je noemt moet oppakken, máár: dit definieert (begrijp mij goed; zoals ik het zie, een leek;-) ) in eerste instantie de tekst van je 'home' page. Hoe definieer je (vervolgens) de inhoud van je verdere pagina's? Of begrijp ik het wellicht toch niet helemaal goed?
Voor het geval dit van nut is, mijn site staat op www.o27.nl
Nogmaals dank,
mvg
Melle
Maar goed, er is inmiddels PM overleg tussen ons.
@aar, je moet natuurlijk gewoon = doen ipv ==
fixt, editor deed wat lastig... :/
nu werk ik met de cms freeguppy freeguppy.org deze heeft standaard de keuze uit 1 taal, of twee en die kan je dan instellen middels admin.
dit wil ik eigenlijk ook auto hebben.
voorbeeld van de index
header("Pragma: no-cache");
define("CHEMIN", "");
include("inc/includes.inc");
en in includes.inc staat dan dit
*/
if (@preg_match("!//|/\*|#|:/|\.\./|%2E\./|\.%2E/|%2E%2E/|document.cookie|/script!i", $_SERVER["QUERY_STRING"])) {
die("Requête non autorisée - Request not allowed");
}
if (stristr($_SERVER["SCRIPT_NAME"], "includes.inc")) {
header("location:../index.php");
die();
}
$mpversion = "4.6.15";
$mpdate = "30 June 2011";
$lang = array("","");
include(CHEMIN."inc/reglobals.inc");
include(CHEMIN."data/config.inc");
if (!headers_sent()) header("Content-type: text/html; charset=$charset;");
if (version_compare(phpversion(), '5.1', '>=')) {
// La valeur du timezone sera configurable en admin dans la prochaine version majeure
date_default_timezone_set('Europe/Paris');
}
/// Test et nettoyage des paramétres qui doivent être des entiers positifs ou nuls
function TestInteger($name) {
global ${$name};
$n = preg_match('!^([0-9]+)!', ${$name}, $res);
if ($n == 0 || $res[1] == '')
unset(${$name});
else
${$name} = $res[1];
}
TestInteger('pg');
TestInteger('id');
TestInteger('num');
$usercookie = "GuppYUser";
$userprefs = array();
if (!empty($_COOKIE[$usercookie])) {
$userprefs = explode("||",$_COOKIE[$usercookie]);
$userprefs[0] = strip_tags($userprefs[0]);
$userprefs[1] = preg_replace("![^a-zA-Z0-9_]!i","",substr(strip_tags($userprefs[1]),0,20));
$userprefs[2] = strip_tags($userprefs[2]);
$userprefs[3] = strip_tags($userprefs[3]);
$userprefs[4] = strip_tags($userprefs[4]);
$userprefs[5] = strip_tags($userprefs[5]);
$userprefs[6] = str_replace("\n","<br />",strip_tags($userprefs[6]));
if (($userprefs[0] == $lang[0] || $userprefs[0] == $lang[1]) && empty($lng)) {
$lng = $userprefs[0];
}
$userprefs[7] = strip_tags($userprefs[7]);
$userprefs[8] = strip_tags($userprefs[8]);
$userprefs[9] = strip_tags($userprefs[9]);
$userprefs[10] = strip_tags($userprefs[10]);
}
$lng = strip_tags($lng);
if (empty($lng)) {
$lng = $lang[0];
} elseif (($lng != $lang[0]) && ($lng != $lang[1])) {
$lng = $lang[0];
}
include(CHEMIN."inc/functions.php");
if ($userprefs[1] != "" && FileDBExist(USEREP.$userprefs[1].DBEXT)) {
$dbmsg = ReadDBFields(USEREP.$userprefs[1].DBEXT);
if ($userprefs[7] != $dbmsg[0][0]) {
for ($i = 0; $i < 12; $i++) {
$userprefs[$i] = "";
}
setcookie($usercookie, "");
?>
<script type="text/javascript" language="javascript">
alert('illegal cookie values or bad password');
window.location="";
</script>
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?php
header("location:".CHEMIN."user.php?lng=".$lng);
}
} else {
$userprefs[0] = "";
$userprefs[1] = "";
$userprefs[2] = "";
$userprefs[3] = "";
$userprefs[4] = "";
$userprefs[5] = "";
$userprefs[6] = "";
$userprefs[7] = "";
$userprefs[8] = "";
$userprefs[9] = "";
$userprefs[10] = "";
$userprefs[11] = "";
setcookie($usercookie, "");
}
StartTimer();
if (!isset($_SERVER['REQUEST_URI'])) {
$REQUEST_URI = $_SERVER['SCRIPT_NAME']."?".$_SERVER['QUERY_STRING'];
}
$endurl = strip_tags($REQUEST_URI);
if (!empty($userprefs[4])) {
include(CHEMIN.INCREP."lang/".$userprefs[4]."-web".INCEXT);
}
else {
include(CHEMIN.INCREP."lang/".$lng."-web".INCEXT);
}
if (strpos($endurl, "/admin/") !== false) {
include(CHEMIN.INCREP."lang/".$lng."-admin".INCEXT);
include(CHEMIN.INCREP."lang/".$lng."-web".INCEXT); // corrected with 4.6.14g
}
$flag1 = CHEMIN.INCREP."lang/".$lang[0].".gif";
$flag2 = CHEMIN.INCREP."lang/".$lang[1].".gif";
if (stristr($_SERVER['SCRIPT_NAME'], "calendar.php") === false) {
include(CHEMIN.INCREP."log.inc");
}
$xposbox = array();
if($userprefs[10]!="") {
$page[14]=$userprefs[10];
}
if (isset($selskin)) {
$page[14] = preg_replace("`[^-a-z0-9_]`i","",$selskin);
}
if (is_file(CHEMIN."skin/".$page[14]."/skin".INCEXT)) {
include(CHEMIN."skin/".$page[14]."/skin".INCEXT);
} else {
include(CHEMIN."skin/no_skin/skin".INCEXT);
}
if (is_file(CHEMIN."skin/".$page[14]."/confskin".INCEXT)) {
include(CHEMIN."skin/".$page[14]."/confskin".INCEXT);
} else {
include(CHEMIN."skin/no_skin/confskin".INCEXT);
}
if ($userprefs[3] == '') {
$left_empty = true;
foreach($xposbox['L'] as $emplac) {
if (!empty($emplac)) {
$left_empty = false;
break;
}
}
if ($left_empty) {
$userprefs[3] = 'R';
} else {
$right_empty = true;
foreach($xposbox['R'] as $emplac) {
if (!empty($emplac)) {
$right_empty = false;
break;
}
}
if ($right_empty) {
$userprefs[3] = 'L';
} else {
$userprefs[3] = 'LR';
}
}
}
$userAgent = $_SERVER['HTTP_USER_AGENT'];
if ((strpos($userAgent, "MSIE") !== false) and (strpos($userAgent, "compatible") !== false)
and (strpos($userAgent, "Opera")=== false) and (strpos($userAgent, "Gecko") === false)
and (strpos($userAgent, "Konqueror") === false))
$browser = "OK";
elseif ((strpos($userAgent, "Gecko") !== false) and (strpos($userAgent, "Safari") === false) and (strpos($userAgent, "Konqueror") === false))
$browser = "OK";
elseif (strpos($userAgent, "Konqueror") !== false)
$browser = "OK";
elseif (strpos($userAgent, "Safari") !== false)
$browser = "OK";
elseif (strpos($userAgent, "Opera") !== false) {
$version = (float)substr($userAgent, strpos($userAgent, 'Opera/') + 6, 3);
$browser = $version >= 9.0 ? "OK" : "KO";
}
else
$browser = "KO";
if (strpos($endurl, "/admin/") === false) {
if ($serviz[44] == "on" && ($userprefs[1] == '' || ( $serviz[31] != '' && $serviz[31] != $userprefs[1]))) {
header('Location: maintenance.php');
}
}
ik vind nergens de taal verwijzing terug
die staan in de map inc/lang/nl-web.inc en nl-admin.inc
hoe .of kan jou truuk ook hier worden ingesteld
script is opensource
header("location:".CHEMIN."user.php?lng=".$lng);
}
} else {
$userprefs[0] = "";
$userprefs[1] = "";
$userprefs[2] = "";
$userprefs[3] = "";
$userprefs[4] = "";
$userprefs[5] = "";
$userprefs[6] = "";
$userprefs[7] = "";
$userprefs[8] = "";
$userprefs[9] = "";
$userprefs[10] = "";
$userprefs[11] = "";
setcookie($usercookie, "");
}
StartTimer();
if (!isset($_SERVER['REQUEST_URI'])) {
$REQUEST_URI = $_SERVER['SCRIPT_NAME']."?".$_SERVER['QUERY_STRING'];
}
$endurl = strip_tags($REQUEST_URI);
if (!empty($userprefs[4])) {
include(CHEMIN.INCREP."lang/".$userprefs[4]."-web".INCEXT);
}
else {
include(CHEMIN.INCREP."lang/".$lng."-web".INCEXT);
}
if (strpos($endurl, "/admin/") !== false) {
include(CHEMIN.INCREP."lang/".$lng."-admin".INCEXT);
include(CHEMIN.INCREP."lang/".$lng."-web".INCEXT); // corrected with 4.6.14g
}
$flag1 = CHEMIN.INCREP."lang/".$lang[0].".gif";
$flag2 = CHEMIN.INCREP."lang/".$lang[1].".gif";
if (stristr($_SERVER['SCRIPT_NAME'], "calendar.php") === false) {
include(CHEMIN.INCREP."log.inc");
}
$xposbox = array();
if($userprefs[10]!="") {
$page[14]=$userprefs[10];
}
if (isset($selskin)) {
$page[14] = preg_replace("`[^-a-z0-9_]`i","",$selskin);
}
if (is_file(CHEMIN."skin/".$page[14]."/skin".INCEXT)) {
include(CHEMIN."skin/".$page[14]."/skin".INCEXT);
} else {
include(CHEMIN."skin/no_skin/skin".INCEXT);
}
if (is_file(CHEMIN."skin/".$page[14]."/confskin".INCEXT)) {
include(CHEMIN."skin/".$page[14]."/confskin".INCEXT);
} else {
include(CHEMIN."skin/no_skin/confskin".INCEXT);
}
if ($userprefs[3] == '') {
$left_empty = true;
foreach($xposbox['L'] as $emplac) {
if (!empty($emplac)) {
$left_empty = false;
break;
}
}
if ($left_empty) {
$userprefs[3] = 'R';
} else {
$right_empty = true;
foreach($xposbox['R'] as $emplac) {
if (!empty($emplac)) {
$right_empty = false;
break;
}
}
if ($right_empty) {
$userprefs[3] = 'L';
} else {
$userprefs[3] = 'LR';
}
}
}
$userAgent = $_SERVER['HTTP_USER_AGENT'];
if ((strpos($userAgent, "MSIE") !== false) and (strpos($userAgent, "compatible") !== false)
and (strpos($userAgent, "Opera")=== false) and (strpos($userAgent, "Gecko") === false)
and (strpos($userAgent, "Konqueror") === false))
$browser = "OK";
elseif ((strpos($userAgent, "Gecko") !== false) and (strpos($userAgent, "Safari") === false) and (strpos($userAgent, "Konqueror") === false))
$browser = "OK";
elseif (strpos($userAgent, "Konqueror") !== false)
$browser = "OK";
elseif (strpos($userAgent, "Safari") !== false)
$browser = "OK";
elseif (strpos($userAgent, "Opera") !== false) {
$version = (float)substr($userAgent, strpos($userAgent, 'Opera/') + 6, 3);
$browser = $version >= 9.0 ? "OK" : "KO";
}
else
$browser = "KO";
if (strpos($endurl, "/admin/") === false) {
if ($serviz[44] == "on" && ($userprefs[1] == '' || ( $serviz[31] != '' && $serviz[31] != $userprefs[1]))) {
header('Location: maintenance.php');
}
}
ik vind nergens de taal verwijzing terug
die staan in de map inc/lang/nl-web.inc en nl-admin.inc
hoe .of kan jou truuk ook hier worden ingesteld
script is opensource
Ik denk dat daar meer expertise zal zijn m.b.t e.v.t. modificaties aan hun CMS.