sql >> Databasteknik >  >> RDS >> Mysql

Mest effektiva tillvägagångssätt för flerspråkig PHP-webbplats

Några överväganden:

1. Översättningar
Vem ska göra översättningarna? Personer som också är anslutna till sidan? En översättningsbyrå? När du använder Gettext kommer du att arbeta med 'pot' (.po)-filer. Dessa filer innehåller meddelande-ID och meddelandesträngen (översättningen). Exempel:

msgid "A string to be translated would go here"  
msgstr ""

Nu ser det här bra och förståeligt ut för alla som behöver översätta det här. Men vad händer när du använder nyckelord, som Mike föreslår, istället för hela meningar? Om någon behöver översätta ett msgid som heter "adress_hem" har han eller hon ingen aning om detta ska vara en rubrik "Hemadress" eller att det är en hel mening. I det här fallet, se till att lägga till kommentarer till filen precis innan du anropar gettext-funktionen, som så:

/// This is a comment that will be included in the pot file for the translators
gettext("ready_for_lost_episode");

Använder xgettext --add-comments=/// när du skapar .po-filerna kommer dessa kommentarer att läggas till. Jag tror dock inte att Gettext är tänkt att användas på detta sätt. Dessutom, om du behöver lägga till kommentarer med varje text du vill visa kommer du a) förmodligen att göra ett fel någon gång, b) hela skriptet kommer att fyllas med texterna ändå, bara i kommentarsformuläret, c) kommentarerna måste placeras direkt ovanför Gettext funktion, som inte alltid är bekväm, beroende på funktionens position i din kod.

2. Underhåll
När din webbplats växer (ännu längre) och dina språkfiler tillsammans med den, kan det bli ganska svårt att underhålla alla olika översättningar på detta sätt. Varje gång du lägger till en text måste du skapa nya filer, skicka ut filerna till översättare, ta emot filerna tillbaka, se till att strukturen fortfarande är intakt (ivriga översättare är alltid glada att översätta syntaxen också, vilket gör hela filen oanvändbar :)), och avsluta med att importera de nya översättningarna. Det går, visst, men var medveten om eventuella problem i detta avseende med stora webbplatser och många olika språk.

Ett annat alternativ:kombinera ditt andra och tredje alternativ:

Personligen tycker jag att det är mer användbart att hantera översättningen med ett (enkelt) CMS, behålla variablerna och översättningarna i en databas och själv exportera de relevanta texterna till språkfiler:

  1. lägg till variabler i databasen (t.ex.:id, sida, variabel);
  2. lägg till översättningar till dessa variabler (t.ex.:id, varId, språk, översättning);
  3. välj relevanta variabler och översättningar, skriv dem till en fil;
  4. inkludera den relevanta språkfilen på din webbplats;
  5. skapa din egen funktion för att visa en variabeltext:

text('var'); eller kanske något som __('faq','register','lost_password_text');

Punkt 3 kan vara så enkelt som att välja alla relevanta variabler och översättningar från databasen, lägga dem i en array och skriva den serlialiserade arrayen till en fil.

Fördelar:

  1. Underhåll. Att underhålla texterna kan vara mycket lättare för stora projekt. Du kan gruppera variabler efter sida, sektioner eller andra delar på din webbplats, genom att helt enkelt lägga till en kolumn i din databas som definierar vilken del av webbplatsen denna variabel tillhör. På så sätt kan du snabbt dra upp en lista över alla variabler som används i t.ex. sidan med vanliga frågor.

  2. Översätter. Du kan visa variabeln med alla översättningar av alla olika språk på en enda sida. Detta kan vara användbart för personer som kan översätta texter till flera språk samtidigt. Och det kan vara bra att se andra översättningar för att få en känsla för sammanhanget så att översättningen blir så bra som möjligt. Du kan också fråga databasen för att ta reda på vad som har översatts och vad som inte har översatts. Lägg kanske till tidsstämplar för att hålla reda på eventuella föråldrade översättningar.

  3. Tillgång. Det beror på vem som ska översätta. Du kan omsluta CMS med en enkel inloggning för att ge åtkomst till personer från en översättningsbyrå om det behövs, och bara tillåta dem att ändra vissa språk eller till och med vissa delar av webbplatsen. Om detta inte är ett alternativ kan du fortfarande mata ut data till en fil som kan översättas manuellt och importera den senare (även om detta kan komma med samma problem som nämnts tidigare.). Du kan lägga till en av översättningarna som redan finns där (engelska eller ett annat huvudspråk) som sammanhang för översättaren.

Sammantaget tror jag att du kommer att upptäcka att du kommer att ha mycket mer kontroll över översättningarna på det här sättet, särskilt i det långa loppet. Jag kan inte berätta något om hastigheten eller effektiviteten av detta tillvägagångssätt jämfört med den inbyggda gettext-funktionen. Men beroende på storleken på språkfilerna tror jag inte att det blir någon större skillnad. Om du grupperar variablerna efter sida eller sektion kan du alltid inkludera endast de nödvändiga delarna.



  1. Hur man ersätter (null) värden med 0 utgång i PIVOT

  2. Skicka tabell som parameter till SQL Server UDF

  3. CAST och IsNumeric

  4. Hur man kör ett SQL Server Agent Job med T-SQL