sql >> Database teknologi >  >> RDS >> Mysql

Mest effektive tilgang til flersproget PHP-websted

Et par overvejelser:

1. Oversættelser
Hvem skal lave oversættelserne? Personer, der også har forbindelse til siden? Et oversættelsesbureau? Når du bruger Gettext, vil du arbejde med 'pot' (.po) filer. Disse filer indeholder meddelelses-id'et og meddelelsesstrengen (oversættelsen). Eksempel:

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

Nu ser dette fint ud og forståeligt for alle, der har brug for at oversætte dette. Men hvad sker der, når du bruger søgeord, som Mike foreslår, i stedet for hele sætninger? Hvis nogen har brug for at oversætte et msgid kaldet "address_home", har han eller hun ingen anelse om, om dette skal være en overskrift "Hjemadresse", eller at det er en hel sætning. I dette tilfælde skal du sørge for at tilføje kommentarer til filen lige før du kalder på gettext-funktionen, som sådan:

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

Brug af xgettext --add-comments=/// Når du opretter .po-filerne, tilføjes disse kommentarer. Jeg tror dog ikke, at Gettext er beregnet til at blive brugt på denne måde. Også, hvis du har brug for at tilføje kommentarer med hver tekst, du vil vise, vil du a) sandsynligvis lave en fejl på et tidspunkt, b) hele dit script vil blive fyldt med teksterne alligevel, kun i kommentarformularen, c) kommentarerne skal placeres direkte over Gettext funktion, som ikke altid er praktisk, afhængigt af funktionens placering i din kode.

2. Vedligeholdelse
Når dit websted vokser (endnu længere) og dine sprogfiler sammen med det, kan det blive ret svært at vedligeholde alle de forskellige oversættelser på denne måde. Hver gang du tilføjer en tekst, skal du oprette nye filer, sende filerne til oversættere, modtage filerne tilbage, sikre dig, at strukturen stadig er intakt (ivrige oversættere er altid glade for at oversætte syntaksen også, hvilket gør hele filen ubrugelig :)), og afslut med at importere de nye oversættelser. Det kan selvfølgelig lade sig gøre, men vær opmærksom på mulige problemer i denne forbindelse med store websteder og mange forskellige sprog.

En anden mulighed:Kombiner dit 2. og 3. alternativ:

Personligt finder jeg det mere nyttigt at styre oversættelsen ved hjælp af et (simpelt) CMS, holde variablerne og oversættelserne i en database og selv eksportere de relevante tekster til sprogfiler:

  1. tilføj variabler til databasen (f.eks.:id, side, variabel);
  2. tilføj oversættelser til disse variabler (f.eks.:id, varId, sprog, oversættelse);
  3. vælg relevante variabler og oversættelser, skriv dem til en fil;
  4. inkluder den relevante sprogfil på dit websted;
  5. opret din egen funktion til at vise en variabeltekst:

text('var'); eller måske noget som __('faq','register','lost_password_text');

Punkt 3 kan være så simpelt som at vælge alle de relevante variabler og oversættelser fra databasen, placere dem i et array og skrive det serlialiserede array til en fil.

Fordele:

  1. Vedligeholdelse. Vedligeholdelse af teksterne kan være meget nemmere for store projekter. Du kan gruppere variabler efter side, sektioner eller andre dele på dit websted, ved blot at tilføje en kolonne til din database, der definerer, hvilken del af webstedet denne variabel tilhører. På den måde kan du hurtigt trække en liste frem over alle de variable, der bruges i f.eks. FAQ-siden.

  2. Oversættelse. Du kan vise variablen med alle oversættelser af alle de forskellige sprog på en enkelt side. Dette kan være nyttigt for folk, der kan oversætte tekster til flere sprog på samme tid. Og det kan være nyttigt at se andre oversættelser for at få en fornemmelse af konteksten, så oversættelsen bliver så god som muligt. Du kan også forespørge i databasen for at finde ud af, hvad der er blevet oversat, og hvad der ikke er. Måske tilføje tidsstempler for at holde styr på mulige forældede oversættelser.

  3. Adgang. Det afhænger af, hvem der skal oversætte. Du kan omslutte CMS'et med et simpelt login for at give adgang til folk fra et oversættelsesbureau, hvis det er nødvendigt, og kun tillade dem at ændre bestemte sprog eller endda visse dele af webstedet. Hvis dette ikke er en mulighed, kan du stadig udlæse dataene til en fil, der kan oversættes manuelt og importere den senere (selvom dette kan komme med de samme problemer som nævnt før). Du kan tilføje en af ​​de oversættelser, der allerede er der (engelsk eller et andet hovedsprog) som kontekst for oversætteren.

Alt i alt tror jeg, at du vil opdage, at du vil have meget mere kontrol over oversættelserne på denne måde, især i det lange løb. Jeg kan ikke fortælle dig noget om hastigheden eller effektiviteten af ​​denne tilgang sammenlignet med den native gettext-funktion. Men afhængigt af størrelsen af ​​sprogfilerne, tror jeg ikke, det vil være den store forskel. Hvis du grupperer variablerne efter side eller sektion, kan du altid kun inkludere de nødvendige dele.



  1. Hvordan ejendomsforvaltere kan forbedre effektiviteten med en database

  2. Hvordan kan jeg foretage en migrering i laravel 5.5?

  3. problem i mange til mange forhold

  4. Sådan ændres datoformat i Oracle-database