Kom ihåg mig?

Göra sida tvåspråkig

 
Ämnesverktyg Visningsalternativ
Oläst 2005-11-01, 13:37 #11
Micke_Ns avatar
Micke_N Micke_N är inte uppkopplad
Medlem
 
Reg.datum: May 2004
Inlägg: 159
Micke_N Micke_N är inte uppkopplad
Medlem
Micke_Ns avatar
 
Reg.datum: May 2004
Inlägg: 159
Citat:
Originally posted by hnn@Nov 1 2005, 13:40
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
Är det någon som efterfrågat effektivitet/mest optimerat? Trodde snarare han ville veta vilket som var enklast
Micke_N är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-11-01, 15:34 #12
henkealf henkealf är inte uppkopplad
Medlem
 
Reg.datum: Jan 2004
Inlägg: 163
henkealf henkealf är inte uppkopplad
Medlem
 
Reg.datum: Jan 2004
Inlägg: 163
Citat:
Originally posted by kers@Nov 1 2005, 14:06
hint: ha en fil som definerar alla strängar/ord för ett särskilt språk och includa den
Är det inte bättre att "require" en fil med alla strängar/ord,
med "include" läses väl hela sidan in i modersidan?
henkealf är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-11-01, 18:27 #13
kers kers är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Nov 2004
Inlägg: 526
kers kers är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Nov 2004
Inlägg: 526
Citat:
Ursprungligen postat av henkealf
Citat:
Ursprungligen postat av kers
hint: ha en fil som definerar alla strängar/ord för ett särskilt språk och includa den
Är det inte bättre att require en fil med alla strängar/ord,
med include läses väl hela sidan in i modersidan?
Helt rätt, det är jag som yrar. Till mitt försvar kan jag bara säga att det var ett bra tag sen jag rörde PHP
kers är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-11-01, 19:08 #14
kullervos avatar
kullervo kullervo är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Dec 2003
Inlägg: 1 519
kullervo kullervo är inte uppkopplad
Bara ett inlägg till!
kullervos avatar
 
Reg.datum: Dec 2003
Inlägg: 1 519
Det här var den flummigaste tråden på länge. Jag har inte ett bra svar men jag vet att det finns ett mycket bra svar sedan gammalt här på WN. Tips för den som inte hittar: kika på hur phpBB & co. gjort.

Skillnaden på include() och require() är att include() genererar en Warning om filen saknas medans require() genererar ett Fatal Error. "In other words, use require() if you want a missing file to halt processing of the page. include() does not behave this way, the script will continue regardless." - se.php.net/include

Edit. Att lägga allting i XML låter iofs som en bra metod.
kullervo är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-11-01, 19:17 #15
henkealf henkealf är inte uppkopplad
Medlem
 
Reg.datum: Jan 2004
Inlägg: 163
henkealf henkealf är inte uppkopplad
Medlem
 
Reg.datum: Jan 2004
Inlägg: 163
Citat:
Originally posted by DeSoto@Nov 1 2005, 07:38
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.
Jag som inte har någon som helst koll på xml undrar;
Menar du att du skulle göra en xml-fil för t ex varje undersida?
Hur skulle textstyckena/orden lagras och hämtas?
Jag tar tacksamt emot ett exempel på hur detta skulle kunna lösas med xml.
henkealf är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-11-01, 19:27 #16
ZNs avatar
ZN ZN är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Apr 2003
Inlägg: 1 214
ZN ZN är inte uppkopplad
Har WN som tidsfördriv
ZNs avatar
 
Reg.datum: Apr 2003
Inlägg: 1 214
Skapa en fil för varje språk, och includa beroende på vilket man valt.

gb.lang.php:
<?php
define("_LANG_START_TOPIC", "Welcome");
define("_LANG_START_TEXT", "This is my page");
?>

se.lang.php:
<?php
define("_LANG_START_TOPIC", "Välkommen");
define("_LANG_START_TEXT", "Detta är min sida");
?>

Sen kan du t.ex requira beroende på vilket land IP är ifrån mha GeoIP:

require_once("geoip/geoip.inc");
$ip = $_SERVER['REMOTE_ADDR'];
$gi = geoip_open("geoip/geoip.dat",GEOIP_STANDARD);
$countrycode = geoip_country_code_by_addr($gi, $ip);
geoip_close($gi);

$countrycode = strtolower($countrycode);
switch($countrycode)
{
case 'se': // Swedish
require_once('languages/se.lang.php');
break;

default: // Default to English
require_once('languages/gb.lang.php');
break;
}

Texten bytar du förståss ut mot konstanterna. Sen bör du bygga ut så att man kan välja språk själv, spara valet i en cookie t.ex.
Funkar utmärkt även med väldigt mycket besökare, statiska filer går snabbt att ladda jämfört med att t.ex tugga sönder databasen för att hämta konstanterna.
ZN är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-11-01, 19:49 #17
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
Har använt XML, dock inte genom att separera sidor, men tekniken jag använt fungerar även med separata översättningar per sida. Nyckeln till lösningen är att använda XPATH för att hämta rätt sträng.
Exempel:
Kod:
XML filen:
<dictionary>
 <page name="exempel1">
  <language name="en">
   <words key="HELLO">Hello</words>
   <words key="WELCOME_MSG">Welcome to my page</words>
  </language>
  <language name="se">
   <words key="HELLO">Hej</words>
   <words key="WELCOME_MSG">Välkommen till min sida</words>
  </language>
 </page>
 <page name="exempel2">
  <language name="en">
   <words key="LOGIN">Login</words>
  </language>
  <language name="se">
   <words key="LOGIN">Logga in</words>
  </language>
 </page>
</dictionary>
Vill du sedan ha ut välkomstmeddelandet på svenska för sidan "exempel1" använder du XPATH:
Kod:
/dictionary/page[@name='exempel1']/language[@name='se']/words[@key='WELCOME_MSG']
Ett extremt trvligt sätt att lägga upp sina språkfiler på...
eg0master är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-11-01, 22:59 #18
Axe Axe är inte uppkopplad
Medlem
 
Reg.datum: Oct 2005
Inlägg: 162
Axe Axe är inte uppkopplad
Medlem
 
Reg.datum: Oct 2005
Inlägg: 162
Citat:
Originally posted by kers@Nov 1 2005, 14:05
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
Det som PHP-utvecklarna tänkte sig var väl att man skulle jobba med: http://se2.php.net/manual/sv/function.gettext.php
Men den lösningen är nog smidigast för större projekt och flera språk. Det tar lite tid att sätta upp det där har jag en känsla av.

Jag brukar testa på webläsaren för att bestämma vilket språk som skall visas. Geoip berättar ju bara vilket land surfaren kommer ifrån och sitter jag i kina så är jag tacksam om jag får engelska som visas istället för kinesiska. Sannolikheten för att jag surfar på en dator med en webbläsare vars språk jag förstår är nog större än att jag med säkerhet kan säga att landet=språket. vilket språk ska man visa i Finland, Schweiz eller Kanada?

Require-filer med defines eller variabler brukar jag tycka är enkelt. byt språk genom att sätta en ny session bara. Variabler tenderar dock att vara något snabbare än konstanthanteringen i PHP.
Axe är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-11-01, 23:07 #19
hnn hnn är inte uppkopplad
Banned
 
Reg.datum: Mar 2004
Inlägg: 2 587
hnn hnn är inte uppkopplad
Banned
 
Reg.datum: Mar 2004
Inlägg: 2 587
Citat:
Ursprungligen postat av Axe
Citat:
Ursprungligen postat av kers
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
Det som PHP-utvecklarna tänkte sig var väl att man skulle jobba med: http://se2.php.net/manual/sv/function.gettext.php
Men den lösningen är nog smidigast för större projekt och flera språk. Det tar lite tid att sätta upp det där har jag en känsla av.

Jag brukar testa på webläsaren för att bestämma vilket språk som skall visas. Geoip berättar ju bara vilket land surfaren kommer ifrån och sitter jag i kina så är jag tacksam om jag får engelska som visas istället för kinesiska. Sannolikheten för att jag surfar på en dator med en webbläsare vars språk jag förstår är nog större än att jag med säkerhet kan säga att landet=språket. vilket språk ska man visa i Finland, Schweiz eller Kanada?

Require-filer med defines eller variabler brukar jag tycka är enkelt. byt språk genom att sätta en ny session bara. Variabler tenderar dock att vara något snabbare än konstanthanteringen i PHP.
GEO-IP är bra på ett sätt och det är inte o välja språk. Det är ifall du ska ladda ner och inget annat...
hnn är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-11-01, 23:11 #20
kullervos avatar
kullervo kullervo är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Dec 2003
Inlägg: 1 519
kullervo kullervo är inte uppkopplad
Bara ett inlägg till!
kullervos avatar
 
Reg.datum: Dec 2003
Inlägg: 1 519
Gettext var det jag syftade på. Tack för påminnelsen!
kullervo är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 
Ämnesverktyg
Visningsalternativ

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 01:50.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017