/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Sprogvanskeligheder
Fra : Anders


Dato : 21-09-03 14:03

Jeg har lavet et index, der ser ud som det nedenstående. Som det kan
ses, så er siden lavet på Dansk, Svensk, Estisk og Engelsk. Problemet er
nu, at også (måske især) finlands svenskere også skal sendes ind på den
svenske side. Finlands svenskere har deres egen landekode "fi-sv", og
jeg har prøvet at smide den ind som en if sætning, men det betyder at
alle, uden undtagelse, bliver sendt til den svenske side. Hvordan løser
jeg dette, så sv+fi-sv bliver sendt til svensk og de øvrige til deres
respektiver sider???
<?
$lang = $HTTP_ACCEPT_LANGUAGE;
if ($lang==da) {
header("location: da/index.php3");
exit;
}
elseif ($lang==sv) {
header("location: sv/index.php3");
exit;
}
elseif ($lang==et){
header("location: et/index.php3");
exit;
} else {
header("location: da/index.php3");
exit;
}
?>



 
 
Jimmy (21-09-2003)
Kommentar
Fra : Jimmy


Dato : 21-09-03 14:17


"Anders" <abc@kaosfoto.com> wrote in message
news:3f6da1dd$0$141$edfadb0f@dread11.news.tele.dk...

> Finlands svenskere har deres egen landekode "fi-sv", og
> jeg har prøvet at smide den ind som en if sætning, men det betyder at
> alle, uden undtagelse, bliver sendt til den svenske side.

Hvordan gjorde du?

> Hvordan løser
> jeg dette, så sv+fi-sv bliver sendt til svensk og de øvrige til deres
> respektiver sider???

Jeg ville anvende en switch, men det er en smagssag.
Den kan tage flere cases:

switch ($HTTP_ACCEPT_LANGUAGE)
{
case "da":
...
break;
case "sv": case "fi-sv":
...
break;
}



> $lang = $HTTP_ACCEPT_LANGUAGE;
> if ($lang==da) {

Kan det passe, at der ikke skal citationstegn omkring det du sammenligner
på?

Mvh
Jimmy



Peter Brodersen (21-09-2003)
Kommentar
Fra : Peter Brodersen


Dato : 21-09-03 18:01

On Sun, 21 Sep 2003 15:17:17 +0200, "Jimmy" <nyhedsgruppe@get2net.dk>
wrote:

>> $lang = $HTTP_ACCEPT_LANGUAGE;
>> if ($lang==da) {
>
>Kan det passe, at der ikke skal citationstegn omkring det du sammenligner
>på?

Hvis "da" ikke er en konstant i forvejen, så vil det virke. Men det
kan kun anbefales at sætte citationstegn rundt om.

Den direkte sammenligning er nu ikke så hensigtsmæssig. Min
$_SERVER['ACCEPT_LANGUAGE'] er for eksempel lig med:
   da,en-us;q=0.7,en;q=0.3

Jeg synes dog desværre ikke, jeg lige kan se nogen passende
PEAR-pakker, der kan parse linjen fornuftigt. Jeg vil dog ikke
udelukke, at jeg blot er dårlig til at lede.

--
- Peter Brodersen

Ugens sprogtip: terabyte (og ikke terrabyte)

Anders Wegge Jakobse~ (21-09-2003)
Kommentar
Fra : Anders Wegge Jakobse~


Dato : 21-09-03 18:48

"Peter" == Peter Brodersen <usenet@ter.dk> writes:

....

> Den direkte sammenligning er nu ikke så hensigtsmæssig. Min
> $_SERVER['ACCEPT_LANGUAGE'] er for eksempel lig med:
>    da,en-us;q=0.7,en;q=0.3

> Jeg synes dog desværre ikke, jeg lige kan se nogen passende
> PEAR-pakker, der kan parse linjen fornuftigt. Jeg vil dog ikke
> udelukke, at jeg blot er dårlig til at lede.

Muligvis kan HTTP::negotiateLanguage() bruges.

--
/Wegge <http://outside.bakkelygaard.dk/~wegge/>
echo mail: !#^."<>"|tr "<> mail:" dk@wegge

Peter Brodersen (21-09-2003)
Kommentar
Fra : Peter Brodersen


Dato : 21-09-03 19:19

On 21 Sep 2003 19:48:01 +0200, Anders Wegge Jakobsen
<wegge@bakkelygaard.dk> wrote:

> Muligvis kan HTTP::negotiateLanguage() bruges.

Det ser faktisk ret fornuftigt ud.

--
- Peter Brodersen

Ugens sprogtip: terabyte (og ikke terrabyte)

Gustav (21-09-2003)
Kommentar
Fra : Gustav


Dato : 21-09-03 18:25

Anders wrote:

> Jeg har lavet et index, der ser ud som det nedenstående. Som det kan
> ses, så er siden lavet på Dansk, Svensk, Estisk og Engelsk. Problemet er
> nu, at også (måske især) finlands svenskere også skal sendes ind på den
> svenske side. Finlands svenskere har deres egen landekode "fi-sv", og
> jeg har prøvet at smide den ind som en if sætning, men det betyder at
> alle, uden undtagelse, bliver sendt til den svenske side. Hvordan løser
> jeg dette, så sv+fi-sv bliver sendt til svensk og de øvrige til deres
> respektiver sider???
> <?
> $lang = $HTTP_ACCEPT_LANGUAGE;
> if ($lang==da) {
> header("location: da/index.php3");
> exit;
> }
> elseif ($lang==sv) {
> header("location: sv/index.php3");
> exit;
> }
> elseif ($lang==et){
> header("location: et/index.php3");
> exit;
> } else {
> header("location: da/index.php3");
> exit;
> }
> ?>
>
>

Hvorfor ikke bare gøre sådan her:

<?php
$lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];

if ($lang == "da") {
   header("Location: da/index.php3");
   exit;
}
elseif (($lang == "sv") || ($lang == "fi-sv")) {
   header("Location: sv/index.php3");
   exit;
}
elseif ($lang == "et"){
   header("Location: et/index.php3");
   exit;
} else {
   header("Location: da/index.php3");
   exit;
}
?>

Det virker

Du kunne også lave sådan at danskerne blev sendt til da/index.php3 og at
alle der ikke kom fra et af de lande blev sendt til chooselang.php

Gustav


Dennis Møllegaard Pe~ (21-09-2003)
Kommentar
Fra : Dennis Møllegaard Pe~


Dato : 21-09-03 19:10

On Sun, 21 Sep 2003 19:25:06 +0200, Gustav wrote:

> Hvorfor ikke bare gøre sådan her:
>
> $lang = _SERVER['HTTP_ACCEPT_LANGUAGE'];

Som Peter også hinter, så vil det nok ikke virke for mange, herunder mig
selv.
Min $_SERVER['HTTP_ACCEPT_LANGUAGE'] rt 'en;q=1.0,da;q=0.9';

Den vil ikke blive fanget af dine if()s. (hvis man ser bort fra
else'n).

Nu har jeg ikke tjekket RFC'en, men jeg ville tro du skal splitte stringen med
komma som seperator og så tage de enkelte elementer herfra, og splitte
igen med semikolon som seperator og så kan du lave dit check. Eller noget
i den retning.

Men det er altså kun et gæt Husk at teste med flere browsere end lige
blot din egen.

--
Dennis Møllegaard Pedersen, Denmark
replace spam with my firstname spam@moellegaard.dk
PGP fingerprint = 5A23 2E7D 7F4F 7FBE 39AC CDEF 55A0 FF70 87C0 59D9


Gustav (21-09-2003)
Kommentar
Fra : Gustav


Dato : 21-09-03 19:24

Dennis Møllegaard Pedersen wrote:

> On Sun, 21 Sep 2003 19:25:06 +0200, Gustav wrote:
>
>
>>Hvorfor ikke bare gøre sådan her:
>>
>>$lang = _SERVER['HTTP_ACCEPT_LANGUAGE'];
>
>
> Som Peter også hinter, så vil det nok ikke virke for mange, herunder mig
> selv.
> Min $_SERVER['HTTP_ACCEPT_LANGUAGE'] rt 'en;q=1.0,da;q=0.9';
>
> Den vil ikke blive fanget af dine if()s. (hvis man ser bort fra
> else'n).
>
> Nu har jeg ikke tjekket RFC'en, men jeg ville tro du skal splitte stringen med
> komma som seperator og så tage de enkelte elementer herfra, og splitte
> igen med semikolon som seperator og så kan du lave dit check. Eller noget
> i den retning.
>
> Men det er altså kun et gæt Husk at teste med flere browsere end lige
> blot din egen.
>

Jeg har aldrig brugt den variabel før. Men jeg gik udfra at det system
han postede virkede. Så jeh tilpassede det bare så det virkede hvis den
variabel havde indeholdt det hans system så ud til at gøre

Gustav


Søg
Reklame
Statistik
Spørgsmål : 177518
Tips : 31968
Nyheder : 719565
Indlæg : 6408647
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste