![]() |
Multilanguage databaser för varje språk?
Jag har en tabell med olika kategorier, Bilar, Båtar, Hus.
Hur ska man gå tillväga om man har en sida som kan visa flera språk(Svenska, Engelska, Tyska) och man vill att Bilar ska bli Cars och Hus bli Houses? Min teori är att i tabbellen så har man olika fält: category_name_swedish och category_name_english och så hämtar man bara den kolumnen man behöver vid fråga? Är det en okej metod? Eller ska man helt enkelt köra på olika databaser? |
Det låter som fel approach, läs istället om gettext.
|
Har försökt lära mig vad det är innan men jag förstår inte. Kan du länka ett exempel på hur det används i Apache?
|
Gettext är alltså ett bibliotek avsedd för multilanguage som finns till många programmeringsspråk såsom PHP, Python, NodeJS, etc..
Det har alltså ingenting med apache, nginx eller lightttpd att göra. Man skapar en .po fil per språk man vill stödja innehållande alla strängar du använder på din sajt/applikation, man kör sedan dessa filer genom msgfmt som skapar binära filer (.mo) som gettext kan läsa. Ett av de många exempel (i PHP) hittar du här. |
Tack!! :) Men vart kan man ladda ner biblioteket till PHP. Den här sidan är så luddig.http://www.gnu.org/software/gettext/
|
Gettext ingår i PHP per default, läs mer på deras sida.
|
Tack, nu har jag fått det till att fungera! ;)
|
Värt att nämna är att du inte bör använda det här för content utan endast för statiska texter i gränssnittet.
Titta även på att kombinera gettext med PHPs sprintf(). Det är riktigt kraftfullt för att försöka att skriva ut halvdynamiska strängar. Såhär skriver du ut en sträng som kan översättas med en dynamisk substräng: PHP-kod:
|
Nae, jag får det inte att funka. Och Google hjälper ju inte ett dugg.
Jag har förstått att man ska börja med en POT fil. Sen ifrån den ska man översätta så man får .po filer. Och sen typ gör man .po filerna till .mo filer. Men hur gör jag en POT fil? Allt jag hittar är till Wordpress :S. |
Det finns massor med information om detta om du söker i Google. Du kan exempelvis använda Poedit.
|
Jag har sökt på Google och det hjälper inte mig. Förstår mig inte på Poedit, vill bara kunna skriva in mina strängar någonstans. Det går inte. Och allt jag hittar på Google är typ Wordpress.
|
Citat:
1. Skapa en .po i en textredigerare, vilken du väljer är helt upp till dig (vi, nano, emacs, notepad...). Filen skall innehålla 2 saker (msgid samt msgstr), den ena är texten i ursprungsspråket och den andra översättningen. Se yapig po filen. 2. Kod:
pocompile <.po fil> <.mo fil> Det är inte svårare än så! Jag hittar hur många tutorials som helst i ämnet... |
ganska bra tutorial
http://phpmaster.com/localizing-php-applications-1/ Annars kan du ju alltid använda en databaslösning med texter http://www.gsdesign.ro/blog/multilan...sign-approach/ Det kan vara att föredra i ditt fall att bara ha en enkel tabell med texter om du bara ska göra en enkel lookup mot en key och ett language <?php echo Translate("unik_text_nyckel") ?> (Givet då att språk valet hanteras i "Translate" funktionen) |
Citat:
Tabell Kategorier (KatID, KategoriNamn) KatID=1, Kategorinamn= Bilar KatID=2, Kategorinamn= Båtar Tabell Sprak (LangID, SprakNamn) LangID=1, Spraknamn= Svenska LangID=2, Spraknamn= Engelska Tabell KategoriSprak (KatID, LangID, Namn) KatID=1, LangID=1, Namn= Bilar KatID=1, LangID=2, Namn= Cars KatID=2, LangID=1, Namn= Båtar KatID=2, LangID=2, Namn= Boats Sen kör du bara select Namn from KategoriSprak where KatID=1 and LangID=1 för Svenska bilen respektive select Namn from KategoriSprak where KatID=1 and LangID=2 för Engelska bilen. E du effektiv skapar du en storeproc med langID=1 som default, så blir det svenska om du inte skickar med något annat... Självklart sätter du nycklar och indexerar LangID och KatID i alla tabellerna. |
Kommer nog använda danjels tips. gettext vill jag inte ge mig in på i detta projekt. Då jag endast behöver sidan på 2 språk så känns databaslösning som det bästa alternativet.
|
Alla tider är GMT +2. Klockan är nu 20:42. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson