| FAQ |
| Kalender |
|
|
#1 | ||
|
|||
|
Medlem
|
Hur gör man enklast en websida tvåspråkig? Inget annat än språken ska variera.
Det handlar om ca 20 undersidor skrivna i php, med diverse formulär och annat meck. Är det lättast att för varje textstycke skapa en variabel, och lagra alla dessa variablar i en separatsida och sedan require ("languagevariables.php"); längst upp i varje php-dokument? Andra tips? |
||
|
|
Svara med citat
|
|
|
#2 | ||
|
|||
|
Mycket flitig postare
|
En kombination av enkelhet och snygghet är väl att göra något istil med detta:
Kod:
language.php
-----------------
function translate($str,$lang)
{
$LANG_EN['hej'] = 'hello';
if ('en' == $lang) {
if (isset($LANG[$str]))
return $LANG[$str])
}
/* else if med fler språk om du har mer än 2 språk */
return $str; /* Default language and fall through if string does not exist */
}
dina filer.php
----------------
require('language.php');
echo translate('ok','en');
echo translate('ok','se');
echo translate('hej','en');
echo translate('hej','se');
|
||
|
|
Svara med citat
|
|
|
#3 | |||
|
||||
|
Flitig postare
|
Jag hade delat upp texterna i XML-filer. Absolut inte en enda stor fil för all text, eftersom det vore onödigt krävande. Sen använder du en sessionsvariabel/cookie för att det ska bli något annat språk än svenska, och beroende på denna cookie så hämtar du olika XML-filer.
|
|||
|
|
Svara med citat
|
|
|
#4 | |||
|
||||
|
Medlem
|
Ett annat mycket enkelt sätt är att gör en mapp/subdomän som t ex heter ENG (eller vad som önskas) och så lägger du din översättning i denna.
|
|||
|
|
Svara med citat
|
|
|
#5 | |||
|
||||
|
Flitig postare
|
Citat:
|
|||
|
|
Svara med citat
|
|
|
#6 | |||
|
||||
|
Medlem
|
Självklart. det blir dubbelt av allt(bara att kopiera allt till en annan mapp och översätta det som behövs översättas). Men eftersom jag inte har det minsta koll på hur du strukturerat upp din sida vilket jag inte heller kunde utläsa av ditt inlägg) så är mitt exempel nog det "enklaste" inte sagt att det är det effektivaste.
Men har du t ex redan Svenska språket (eller annat 1:a språk) i en databas så är det kanske enklare att bara lägga till ett språk x i databasen och skyffla ut det när det önskas. |
|||
|
|
Svara med citat
|
|
|
#7 | ||
|
|||
|
Nykomling
|
På en sida har jag kod enligt nedanstående, som lösning på detta. $nationality kommer ur http://www.maxmind.com/app/geoip_country men där gör man naturligtvis som man vill.
Är det databasdrivet är det förstås snyggare att sköta det där, men jag tycker detta är rätt okej om man ändå skulle ha texten inline. Separata språkfiler är ju elegantare men kanske overkill i vissa sammanhang. Kod:
<?php
function sweEng($swe, $eng) {
global $nationality;
if ($nationality == 'SE')
return $swe;
else
return $eng;
}
$thumbnail = sweEng('Miniatyr', 'Thumbnail');
?>
<img src="..." alt="..." title="<?php=sweEng('Fotografi av', 'Photo by')?> Foo Bar" />
...
|
||
|
|
Svara med citat
|
|
|
#8 | ||
|
|||
|
Banned
|
Snacka om dom flesta här är värdelösa inom optimering...
I ALLA SPRÅK så är IF .. ELSE IF ... ELSE väldigt slött. Har man många IF .. Else If .. Else så är det bättre att använda switch() / Select Case |
||
|
|
Svara med citat
|
|
|
#9 | ||
|
|||
|
Mycket flitig postare
|
Det smidigaste sättet är antagligen att göra som phputvecklarna har tänkt sig att ni ska göra:
http://se.php.net/manual/en/function.define.php |
||
|
|
Svara med citat
|
|
|
#10 | ||
|
|||
|
Mycket flitig postare
|
hint: ha en fil som definerar alla strängar/ord för ett särskilt språk och includa den
|
||
|
|
Svara med citat
|
| Svara |
|
|