|
| Sprog-versionering af site, hvordan? Fra : Jakob Munck |
Dato : 13-02-06 20:48 |
|
Jeg påtænker at lave en portal, hvor de centrale tekster og menuer skal
kunne vises på dansk, engelsk, tysk og fransk, altså på 4 sprog, efter
brugerens valg. Men jeg spekulerer over, hvordan man egentlig lettest laver
en sådan sproglig versionering? Det handler vel om at have teksterne i nogle
tekstfiler, hvorfra de hentet ind til siderne, hvor de skal bruges. Eller er
det bedre at have teksterne i en database, hvorfra de hentes?
Jeg kan ikke helt overskue, hvad der er den bedste måde at lave en sådan
versionering, så hvis nogen har erfaring med det, vil jeg meget gerne høre.
Hvad gør man? Hvordan gør man det?
v.h.
Jakob
| |
Johan Holst Nielsen (13-02-2006)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 13-02-06 21:00 |
|
Jakob Munck wrote:
> Jeg påtænker at lave en portal, hvor de centrale tekster og menuer skal
> kunne vises på dansk, engelsk, tysk og fransk, altså på 4 sprog, efter
> brugerens valg. Men jeg spekulerer over, hvordan man egentlig lettest laver
> en sådan sproglig versionering? Det handler vel om at have teksterne i nogle
> tekstfiler, hvorfra de hentet ind til siderne, hvor de skal bruges. Eller er
> det bedre at have teksterne i en database, hvorfra de hentes?
>
> Jeg kan ikke helt overskue, hvad der er den bedste måde at lave en sådan
> versionering, så hvis nogen har erfaring med det, vil jeg meget gerne høre.
> Hvad gør man? Hvordan gør man det?
Afhænger meget af hvor tit det skal redigeres, hvor meget man gider gøre
ud af det osv....
Du kan vælge blot at lave en fil - som includes med alt tekst i er
konstanter, variabler eller hvad du ønsker.
Hvis du vil over i lidt mere kan f.eks. gettext være en mulighed -
funger er rigtigt godt når det først er oppe og køre - tjek
www.php.net/gettext
Alternativt er PEAR Translation/Translation2 pakker også en mulighed :)
www.pear.php.net/translation2
www.pear.php.net/translation
:)
Håber det kunne bruge det til lidt.
Mvh
Johan
| |
Jakob Munck (15-02-2006)
| Kommentar Fra : Jakob Munck |
Dato : 15-02-06 08:02 |
|
> Du kan vælge blot at lave en fil - som includes med alt tekst i er
> konstanter, variabler eller hvad du ønsker.
>
Det virker umiddelbart som det mest simple. Men hvordan får man så brugeren
til at vælge indlæsning af netop de includes, som har at gøre med hans
sproglige præferancer?
v.h.
Jakob
| |
Johan Holst Nielsen (15-02-2006)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 15-02-06 11:23 |
|
Jakob Munck wrote:
>>Du kan vælge blot at lave en fil - som includes med alt tekst i er
>>konstanter, variabler eller hvad du ønsker.
>>
>
> Det virker umiddelbart som det mest simple. Men hvordan får man så brugeren
> til at vælge indlæsning af netop de includes, som har at gøre med hans
> sproglige præferancer?
f.eks.
<?php
session_start();
$allowLanguages = array('en','da','de');'
$defaultLanguage = 'en';
$currentLanguage = '';
if(isset($_GET['setLanguage']) &&
in_array($_GET['setLanguage'],$allowLanguages)) {
$_SESSION['lang'] = $_GET['setLanguage'];
$currentLanguage = $_GET['setLanguage'];
}
elseif(in_array($_SESSION['lang'],$allowLanguages)) {
$currentLanguage = $_SESSION['lang'];
}
else {
$currentLanguage = $defaultLanguage;
}
require('./language/LANG_'.$currentLanguage.'.inc.php');
?>
Kunne være en muligt :) Blot ud fra hovedet - så måske kan det laves
lidt smukkere og smartere :)
Men kort sagt - du skrifter sprog via GET parametren - der sidder en
session. Du kan evt. udskifte denne med en cookie - så den virker over
flere session på dit website - sidst, men ikke mindst - kunne du krydre
den med lidt ip2country :)
mvh
Johan
?>
| |
Jakob Munck (15-02-2006)
| Kommentar Fra : Jakob Munck |
Dato : 15-02-06 12:04 |
|
Tak for hjælpen, jeg ser på det.
v.h.
Jakob
| |
Leif Neland (15-02-2006)
| Kommentar Fra : Leif Neland |
Dato : 15-02-06 13:17 |
|
Jakob Munck wrote:
>> Du kan vælge blot at lave en fil - som includes med alt tekst i er
>> konstanter, variabler eller hvad du ønsker.
>>
>
>
> Det virker umiddelbart som det mest simple. Men hvordan får man så
> brugeren til at vælge indlæsning af netop de includes, som har at
> gøre med hans sproglige præferancer?
>
>
Du bør se på brugerens foretrukne sprog i browseren, i variablen
$_SERVER["HTTP_ACCEPT_LANGUAGE"]
Jeg har for eksemplets skyld valgt dansk, svensk, engelsk og amerikansk, og
får dette:
"da,sv;q=0.8,en;q=0.5,en-us;q=0.3"
Så algoritmen må være:
Hvis (sprogvalg via get-variabel og sproget findes)
{Brug dette sprog og gem det i session-variabel}
Ellers hvis (sprog i session-variabel og sproget findes)
{brug dette sprog}
Ellers hvis (sprogvalg i $_SERVER["HTTP_ACCEPT_LANGUAGE"] og dette sprog
findes)
{brug dette sprog}
Ellers {brug standard sprog}
Det er vigtigt at verificere at det valgte sprog findes, så man ikke kan
snyde serveren med f.ex.
showpage.php?language=../../../etc/passwd/
Leif
Du vælger så det første sprog af brugerens ønsker, hvis du har det
| |
Johan Holst Nielsen (15-02-2006)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 15-02-06 13:47 |
|
Leif Neland wrote:
> Jakob Munck wrote:
>
>>>Du kan vælge blot at lave en fil - som includes med alt tekst i er
>>>konstanter, variabler eller hvad du ønsker.
>>>
>>
>>
>>Det virker umiddelbart som det mest simple. Men hvordan får man så
>>brugeren til at vælge indlæsning af netop de includes, som har at
>>gøre med hans sproglige præferancer?
>>
>>
>
> Du bør se på brugerens foretrukne sprog i browseren, i variablen
> $_SERVER["HTTP_ACCEPT_LANGUAGE"]
>
> Jeg har for eksemplets skyld valgt dansk, svensk, engelsk og amerikansk, og
> får dette:
> "da,sv;q=0.8,en;q=0.5,en-us;q=0.3"
>
> Så algoritmen må være:
> Hvis (sprogvalg via get-variabel og sproget findes)
> {Brug dette sprog og gem det i session-variabel}
> Ellers hvis (sprog i session-variabel og sproget findes)
> {brug dette sprog}
> Ellers hvis (sprogvalg i $_SERVER["HTTP_ACCEPT_LANGUAGE"] og dette sprog
> findes)
> {brug dette sprog}
> Ellers {brug standard sprog}
HTTP_ACCEPT_LANGUAGE er fint - men mange bruger det ikke :) Jeg har
"en-us" som eneste - og ville egentlig gerne læse dansk. Men den er fint
at smide med. Men nogle der har en opfattelse af hvor mange der egentlig
indstiller dem til sine behov?
Synes dog også sagnes man kan lave en ip2country - og den vil typisk
være mere præcis (okay - ved der er udenlandskdanskere - men de kan nok
finde ud af at skifte sprog).
> Det er vigtigt at verificere at det valgte sprog findes, så man ikke kan
> snyde serveren med f.ex.
> showpage.php?language=../../../etc/passwd/
Yes :) Det er der dog også taget højde for i mit eksempel :)
mvh
Johan
| |
Leif Neland (15-02-2006)
| Kommentar Fra : Leif Neland |
Dato : 15-02-06 21:58 |
|
> HTTP_ACCEPT_LANGUAGE er fint - men mange bruger det ikke :) Jeg har
> "en-us" som eneste - og ville egentlig gerne læse dansk. Men den er
> fint at smide med. Men nogle der har en opfattelse af hvor mange der
> egentlig indstiller dem til sine behov?
>
Oftest så er sproget som default det samme som standardsproget i OS'et, dvs
er din windows svensk, så er browserens foretrukne sprog også svensk. Og det
er vel passende for vel 98% af brugerne.
Leif
| |
Johan Holst Nielsen (15-02-2006)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 15-02-06 22:31 |
|
Leif Neland wrote:
>>HTTP_ACCEPT_LANGUAGE er fint - men mange bruger det ikke :) Jeg har
>>"en-us" som eneste - og ville egentlig gerne læse dansk. Men den er
>>fint at smide med. Men nogle der har en opfattelse af hvor mange der
>>egentlig indstiller dem til sine behov?
>>
>
> Oftest så er sproget som default det samme som standardsproget i OS'et, dvs
> er din windows svensk, så er browserens foretrukne sprog også svensk. Og det
> er vel passende for vel 98% af brugerne.
Ja :) Muligvis - men mange kører jo med Engelsk software (f.eks. hader
jeg dansk windows, firefox, ie, thunderbird osv). Men det er muligvis
korrekt. Men ville gerne stadig se en statistik over hvor mange der
_tilpasser_ accept language til deres behov.
mvh
Johan
| |
Leif Neland (16-02-2006)
| Kommentar Fra : Leif Neland |
Dato : 16-02-06 06:48 |
|
---- Original Message ----
From: "Johan Holst Nielsen" <spam@phpgeek.dk>
Newsgroups: dk.edb.internet.webdesign.serverside.php
Sent: Wednesday, February 15, 2006 10:31 PM
Subject: Re: Sprog-versionering af site, hvordan?
> Leif Neland wrote:
>>> HTTP_ACCEPT_LANGUAGE er fint - men mange bruger det ikke :) Jeg har
>>> "en-us" som eneste - og ville egentlig gerne læse dansk. Men den er
>>> fint at smide med. Men nogle der har en opfattelse af hvor mange der
>>> egentlig indstiller dem til sine behov?
>>>
>>
>> Oftest så er sproget som default det samme som standardsproget i
>> OS'et, dvs er din windows svensk, så er browserens foretrukne sprog
>> også svensk. Og det er vel passende for vel 98% af brugerne.
>
> Ja :) Muligvis - men mange kører jo med Engelsk software (f.eks. hader
> jeg dansk windows, firefox, ie, thunderbird osv). Men det er muligvis
> korrekt. Men ville gerne stadig se en statistik over hvor mange der
> _tilpasser_ accept language til deres behov.
>
IE og Opera har dansk som foretrukket sprog som standard.
Firefox har ikke noget, og sendte slet ikke HTTP_ACCEPT_LANGUAGE før jeg
udfyldt det.
Leif
| |
|
|