[PHP] Standaard manieren voor taalselectie

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Zynth
  • Registratie: September 2001
  • Laatst online: 17-09 16:56
Ik ben bezig met een website waar mensen vantevoren een taal
moeten selecteren waarin ze de site willen bekijken.
Aangezien de content van de site wijzigbaar moet zijn
(dus elke taal moet veranderd kunnen worden door de admin)
moet er een "dynamische taalselectie" worden toegepast.
Zijn er standaard methoden waarop dit het best gedaan kan worden?
Ik kan wel voor elke bezoeker een php-sessie starten met daarin de gekozen
taal, maar efficiënt lijkt mij anders ;)
Verder wordt dit vrij vaak gedaan, waardoor ik dacht dat er misschien
een soort standaard manier voor was.
Omdat de admin alle content zelf moet kunnen wijzigen, zal deze dus in
files of een database moeten worden opgeslagen. Het nadeel is, omdat er
een taalselectie is, dat er dynamisch tekst geladen moet worden.
Het lijk me ook niet efficient om àlle tekstjes van de hele website in een
databeest te gooien, omdat er nogal wat bezoekers verwacht worden. (veeel)

Wat kan ik het beste doen?

Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 17-09 16:59

Johnny

ondergewaardeerde internetguru

Ik snap je verhaal niet echt.
Zynth schreef op 16 november 2003 @ 19:51:
Ik ben bezig met een website waar mensen vantevoren een taal
moeten selecteren waarin ze de site willen bekijken.
ok, begrijpelijk.
Aangezien de content van de site wijzigbaar moet zijn
(dus elke taal moet veranderd kunnen worden door de admin)
moet er een "dynamische taalselectie" worden toegepast.
Je wilt dus een apart CMS bouwen, en de admin moet voor iedere taal de tekst kunnen veranderen? Spreekt jouw admin zoveel talen?
Zijn er standaard methoden waarop dit het best gedaan kan worden?
Ik kan wel voor elke bezoeker een php-sessie starten met daarin de gekozen
taal, maar efficiënt lijkt mij anders ;)
Er zijn gaan standaard methoden, alle methoden hebben voor- en nadelen. Je zou een cookie kunnen gebruiken, dan hoeft de bezoeker niet steeds de taal opnieuw te kiezen. Je zou ook bezoekers kunnen doorverwijzen naar een ander (sub)domein , bijvoorbeeld taal.domein.ext.
Verder wordt dit vrij vaak gedaan, waardoor ik dacht dat er misschien
een soort standaard manier voor was.
Omdat de admin alle content zelf moet kunnen wijzigen, zal deze dus in
files of een database moeten worden opgeslagen. Het nadeel is, omdat er
een taalselectie is, dat er dynamisch tekst geladen moet worden.
Het lijk me ook niet efficient om àlle tekstjes van de hele website in een
databeest te gooien, omdat er nogal wat bezoekers verwacht worden. (veeel

Wat kan ik het beste doen?
Als je echt zoveel overhead worden verwacht kun je wat aan de slag met caching, dan kun je de load enorm beperken. Je zou ook zwaardere servers kunnen nemen, of het geheel spreiden over verschillende domeinen/databases (aparte website per land/taal met een centraal beheer).

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Acties:
  • 0 Henk 'm!

  • Zynth
  • Registratie: September 2001
  • Laatst online: 17-09 16:56
Het moet inderdaad zo worden dat er een cms komt waarin de admin voor iedere taal de tekst kan veranderen. Hij spreek inderdaad zoveel talen ;)
(worden er rond de 6 waarschijnlijk).
Verder krijgt de site niet de grootte van een amazon.com o.i.d.
maar de site moet zeker wel bestand zijn tegen minstens 200.000 bezoekers per dag.

De belangrijkste vraag om mee te beginnen lijkt me,
is afvragen of de teksten in een databeest of in files moeten
komen. Heeft iemand ervaring met zoiets op zo'n schaal?
subdomeinen is misschien wel weer iets teveel van het goede.

(btw, hou houdt bijvoorbeeld dit forum bij wie ik ben? ook via sessies?)

[ Voor 7% gewijzigd door Zynth op 16-11-2003 20:23 ]


Acties:
  • 0 Henk 'm!

  • DR
  • Registratie: December 2000
  • Niet online

DR

Zynth schreef op 16 november 2003 @ 20:17:
Het moet inderdaad zo worden dat er een cms komt waarin de admin voor iedere taal de tekst kan veranderen. Hij spreek inderdaad zoveel talen ;)
(worden er rond de 6 waarschijnlijk).
Gettext gebruiken?
Tis iig precies voor dit soort dingen bedoelt :P

indien php:
http://nl3.php.net/gettext

Acties:
  • 0 Henk 'm!

  • Zynth
  • Registratie: September 2001
  • Laatst online: 17-09 16:56
hmm, dat zou op zich wel kunnen,
alleen vind ik het er niet erg handig uitzien.
Bij veel sites zie je trouwens constant, op welke link je ook klikt,
achter de link .php?lang=nl staan.

Op zich zou dat ideaal zijn, omdat je zo niet iedereen een sessie hoeft te geven.
Maar is er een manier om bijvoorbeeld in een include-filetje
(die je vervolgens in élke pagina include) iets te schrijven
wat alle urls in de pagina aanpast door er ?lang=$lang achter te zetten?

Acties:
  • 0 Henk 'm!

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 17-09 17:05
Wat je zou kunnen doen:

Maak 'translation files' (Ik zelf maak het lieft gebruikt van defines)
PHP:
1
define("_WELCOME", Welkom op onze site");

In de code die geprint word doe ik dan:
PHP:
1
print"(<html><head></head><body>\n "._WELCOME"</body></html>");


Taal voorkeur sla ik op in een cookie

Dan heb ik een functie die de cookie uit leest en het juiste taalbestandje include.

Voor de dinamische pagina's die ik opsla in een database maak ik wederom verschillende versies voor verschillende talen.

Met een functie die de juiste text uit de DB haalt aan de hand hen een taal cookie.

Als er geen cookie is dan laat ik de standaart taal zien, en een selectie box met verschillende talen.

Acties:
  • 0 Henk 'm!

Verwijderd

ik zou volledig gaan voor een database systeem
taal ->> taal_content >> content
dat zijn dan de drie tabellen.

gebruik caching voor het te versnellen bvb.
Hoe ik het doe is een custom user control met één property in namelijk CURR. Hierin staat de current taal index. Die kan ik dan toepassen op mijn taalArray. Ik haal dus wel elke keer elke taal binnen.

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
hmmm....deze discussie heb ik al vrij vaak voorbij zien komen en valt ook redelijk wat met de search over te vinden. Lees dat eerst eens door zou ik zeggen

Acties:
  • 0 Henk 'm!

  • Zynth
  • Registratie: September 2001
  • Laatst online: 17-09 16:56
hoe bedoel je cachen?
een complete database oplossing zou wel kunnen, maar dat wordt misschien nogal resource slurpend of niet? Alle menu-items, namen van invulvelden etc, moeten dan aaaalllleeemaaal uit de database komen.

Ik zou trouwens best benieuwd zijn naar een grafiek of cijfers oid,
waaraan je kan zien wat de resources zijn van bepaalde dingen.
(iets uit mysql halen, een file includen etc etc)

Acties:
  • 0 Henk 'm!

Verwijderd

Zynth schreef op 16 november 2003 @ 23:08:
hoe bedoel je cachen?
een complete database oplossing zou wel kunnen, maar dat wordt misschien nogal resource slurpend of niet? Alle menu-items, namen van invulvelden etc, moeten dan aaaalllleeemaaal uit de database komen.

Ik zou trouwens best benieuwd zijn naar een grafiek of cijfers oid,
waaraan je kan zien wat de resources zijn van bepaalde dingen.
(iets uit mysql halen, een file includen etc etc)
De eigenlijke content moet je plaatsen in database (product omschrijvingen etc) maar de knoppen enzo moet je in recourse files plaatsen

Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Hey, dit is ook nieuw voor mij... Wat zijn 'Resource files'?
En hoe zet je daar die knoppen enzo in?

[ Voor 9% gewijzigd door Room42 op 17-11-2003 08:21 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

Verwijderd

Room42 schreef op 17 november 2003 @ 08:21:
Hey, dit is ook nieuw voor mij... Wat zijn 'Resource files'?
En hoe zet je daar die knoppen enzo in?
dat is de .net versie.
je kan blijkbaar 'translation files' gebruiken zoals Suepahfly zegt:
Je maakt dan per taal zo een bestand op in de vorm van:
define("_Submit","Doorzenden");
define("_cancel", "Anuleren");
je plaatst dit in php-file
Je include de juiste file (per taal zo'n file) en je roept de info ervan op doormiddel van de variable
"_submit" op te roepen.

Acties:
  • 0 Henk 'm!

  • mjax
  • Registratie: September 2000
  • Laatst online: 20:58
Als het voornamelijk een statische site betreft, kun je natuurlijk ook vanuit het CMS voor elke taal statische HTML pagina's genereren die dan aan de bezoekers geserveerd worden. Op dit manier blijft je site retesnel en wordt absoluut niet vertraagd door taalonafhankelijkheden.

Voor de dynamische gedeeltes gebruik je dan gewoon WEL de in de database opgeslagen vertalingen.

Acties:
  • 0 Henk 'm!

Verwijderd

De TS heeft het over minstens 200.000 bezoekers per dag.
Stel je hebt 200 bezoekers per minuut (= best veel.. ). Als je er van uit gaat dat er 15 uur per dag bezoekers op je site zitten (weet niet of het een internationale site is? Dan zal dit gewoon 24 uur zijn), dat er dus 15 noemenswaardige uren zijn.
Dan zou dit inhouden dat je 200x60x15 bezoekers hebt, oftewel 180.000 bezoekers.

Volgens mij kom je dan echt niet veel problemen tegen. Je kunt mijn inziens gewoon lekker met een (MySql) Database werken of met includes.
En uiteraard gewoon met sessies cq cookies, zou niet weten waarom niet? Een cookie is nog altijd een clientside proces waar jouw server geen last van heeft.

En databases als MySql kunnen volgens mij veel meer request dan 200.000 per dag aan. Kan er ook helemaal naast zitten, dan hoor ik dit graag..

Kortom; kies een methode en optimaliseer deze. Bijvoorbeeld met sessies (sessies kunnen ook langer duren ism cookies) of IP gebonden. Daarna is het gewoon van belang om te optimaliseren lijkt me.

/me zou (een) taaltabel(en) aanmaken en deze beheerbaar maken middels een Webbased interface, oftewel een simpel CMS.
Pagina: 1