MVC Framework (CakePHP) en een meertalige website

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • chronoz
  • Registratie: Maart 2010
  • Laatst online: 09-10-2022
Ik wil mijn oude website omzetten naar een MVC framework, om meer te leren over het framework. Nu heb ik al redelijk veel tijd gespendeerd aan lezen en oefenen, maar meertaligheid lijkt een vrij specifiek onderwerp waar slechts een beperkte hoeveelheid informatie van is.

Op het internet vind ik veel tutorials met i18n, maar het meeste is niet van toepassing:
  • Ze werken met language files (.po) waarin vertalingen staan.
  • Ze gaan er vanuit dat de website bijvoorbeeld 20 pagina's heeft, allemaal in verschillende talen.
  • Mijn website verschilt best veel per taal en uiteindelijk valt 90% van de multi-linguele tutorials ook af.
  • Er staan weinig voorbeelden van code in controllers voor meertalige websites. Ik zou graag voorbeelden zien van code in controllers voor multi-linguele websites en hoe je dus met de language-informatie omgaat die je doorgestuurd krijgt van de routes.
In mijn geval is er sprake van 2 talen en is het menu van beide talen ook vrij verschillend. Ik zou dus waarschijnlijk een hele bende if- en elses moeten gaan gebruiken in de default.ctp.

Ik heb zowel verschillende inhoud als hergebruikte php-code. Op het moment is veel php-code gewoon gekopieerd en geplakt voor Nederlandstalig en Engelstalig. Een smerige oplossing zoals de meesten zouden zeggen en de code is ook niet gescheiden van de opmaak.
  • Een combinatie van Nederlandse en Engelse views, bij voorkeur gooi ik gewoon alle html bestanden in een map en laat ik deze inladen door de pages-controller. Ik heb dit op het moment geregeld door 2 aangepaste routes toe te voegen en in de PagesController te controleren op "language", maar ik weet totaal niet of dit een goede polossing is.
  • Hierbij wil ik nog wel graag de mogelijkheid hebben om /nl/contact en /en/contact door hetzelfde Controller te laten verwerken. Ik weet ook niet of het slim is om structureel te controleren wat de taal is en op basis daarvan de view te sturen, het lijkt mij de meest logische oplossing, maar het ingenieuze MVC-model was ik sowieso ook niet zelf op gekomen, dus misschien is er iets beters.
code:
1
2
Router::connect('/en/*', array('controller' => 'pages', 'action' => 'display', 'language' => 'en'));
Router::connect('/nl/*', array('controller' => 'pages', 'action' => 'display', 'language' => 'nl'));


Op het moment gebruik ik includes (met controles) die .html bestanden en .php bestanden includes uit een specifieke nl- en en- mappen. Hierdoor werken zowel /nl/info.html als /nl/contact.html, gezien de php-code gewoon wordt uitgevoerd.

Moet ik steeds de language-parameter gaan gebruiken om te bepalen welke view er gestuurd zou moeten worden bij dynamische pagina's? Op een gegeven moment, bij quizzen, forums, polls zou het wel erg veel discipline vereisen om niet makkelijk code te gaan kopiëren en plakken.

Ik heb al redelijk wat geoefend en gelezen met/over cakephp, maar ik denk dat ik pas echt veel zou bijleren als ik er eenmaal diep in zit door het proberen van mijn website om te zetten. Ik zou het echter zonde vinden om structureel anti-conventioneel te gaan werken en/of simpelweg te beginnen met een slechte basis voor meertaligheid. Gezien ik mijn webdevelopment wil verbeteren, zou ik me wel graag gewoon aan de conventies houden. Algemene tips zijn ook gewoon welkom!

Website in huidige vorm: *snip* niet relevant; we zien alleen het resultaat en niet de code, waar 't nou net om gaat ;)

[ Voor 1% gewijzigd door RobIII op 22-07-2011 22:55 ]