Flerspråkig hemsida, visa olika texter beroende på parameter?

Permalänk

Flerspråkig hemsida, visa olika texter beroende på parameter?

Ber om ursäkt för dålig rubrik, svårt att hitta något som beskriver min fråga både kort och bra Ska börja med att säga att jag inte sysslat med webbprogrammering/hemsideutveckling på många många år vid det här laget och att jag verkligen skulle behöva finslipa kunskapen lite, vilket gör att jag även ser detta projekt som gratis utbildning.

Problemet jag nu stött på är att sidan jag ska jobba med är tänkt att vara flerspråkig. Sidan kommer i huvudsak utformas på engelska, all text, alla menyer etc kommer skrivas på engelska till att börja med. Tanken är att i början köra något "Google translate-liknande" automatiskt översättnings-script för att användare som väljer andra språk åtminstone ska ha ett humm om vad det handlar om, för att allt eftersom göra riktiga professionella översättningar av samtliga språk (för närvarande kommer vi behöva översätta sidan till åtminstone 5 språk). Mina tankegångar går i att jag skulle vilja kunna köra auto-översättning på samtliga sidor, och när som helst kunna byta ut den automatiska texten mot den manuellt översatta.

Har googlat runt lite och sett många alternativ för flerspråksstöd. De flesta handlar om att skapa undermappar på sidan med en ny för varje språk, xxx.com/en, /se osv. Något som jag tycker verkar vara väldigt mycket jobb för något som borde kunna skötas på ett betydligt enklare sätt. Började fundera själv i banor på att lagra all text i en databas, och beroende på en parameter användaren anger i en php-fil som inkluderas i alla undersidor så laddas olika texter till hemsidan. Typ

If = $lang = 'sv'; { $loadText = 'sv';}

men har noll koll på hur mycket belastning för webbservern det skulle innebära med såpass "mycket" förfrågningar till databasen så fort en text ska visas på hemsidan. Databasen kommer redan användas för ett forum på hemsidan och för att hålla i användarinformation osv.

Funderade även på om man skulle kunna göra något liknande, men med textfiler som läses in med php/html? Då kommer ju det andra problemet att jag även skulle behöva integrera php-kod och html-taggar mitt i allt, och som jag förstått går det inte att lösa så webbläsaren kan tolka det som annat än text om man väljer att visa en textfil.

Tacksam för alla typer av förslag/synpunkter kring detta!

Permalänk
99:e percentilen
Skrivet av Tuborgarn:

Började fundera själv i banor på att lagra all text i en databas, och beroende på en parameter användaren anger i en php-fil som inkluderas i alla undersidor så laddas olika texter till hemsidan. Typ

If = $lang = 'sv'; { $loadText = 'sv';}

Till att börja med är den koden lite konstig. Så menade du nog:

if ($lang == "sv") { $loadText = "sv"; }

(Även den kodsnutten är, trots att den ej är felaktig, dock inte speciellt välskriven eller användbar.)

Det finns färdiga bibliotek/lösningar man kan använda för flerspråksstöd, men jag har tyvärr ingen erfarenhet av sådana.

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Medlem

Om vi tar WordPress som exempel har ju de översättningsbar text, som i koden definieras med __('din output', 'ditt översättningsnamespace'); eller _e('din output', 'namespace');

Man gör sedan översättningar i en separat fil. Så om du vill implementera något liknande kan du då definiera en funktion för att echoa översättningsbar text. Vet inte exakt hur den skulle fungera, men typ

<?php function _t($text, $space) { $lang = $options['lang']; if ($lang != "enGB") : //read from CSV to array here, or create an array from a file using file_get_contents. reading something like $lang . '.csv' or $lang . '.txt' $langarray = array(file_get_contents($lang . '.txt')); $string = $langarray[$space][$text]; if ($string) : echo $string; else : echo autoTranslate($text); //Detta om du automatiskt vill översätta text som ännu inte översatts manuellt endif; else : echo $text; endif; } ?>

Language-filen måste självklart vara korrekt formaterad för att du direkt ska kunna skapa en array, så typ

//svSE 'mittNamespace' => array ( 'translate this' => 'översätt detta', 'home' => 'hem' )

Det här var bara någon sorts exempel för att ge en idé av hur du skulle kunna göra. sen kan du säkert komma på bättre sätt, men det är en början! Sen det där med namespaces är ju självklart inget du måste ha om du gör så här, så den kan man ju skippa helt om man vill.

Visa signatur

Citera för svar!|Fraktfritt hos INET|Min hemsida
Fractal Design Define R3|Corsair AX 850W|Gigabyte Nvidia GeForce GTX 570|Corsair Vengeance 1600MHz 2x4GB|ASRock P67 Extreme4|Intel Core i5 2500K|2x Samsung Spinpoint F3 1TB|Samsung Blu-Ray läsare
Nikon D7000|Nikon 60mm macro|Nikon 18-70|Nikon 55-300|Nikon 10.5 Fisheye