Page 1 of 1

Re: Multiple languages support?

Posted: Mon Mar 09, 2009 10:03 am
by purplerain12
Hallo Bert,

Voor zover ik weet word multi language nog niet standaard ondersteund. Vanaf versie 2 zal dit wel het geval zijn.

Alby heeft wel een onoficieel multi language systeem geschreven, deze kun je hier downloaden:
http://dev.cmsmadesimple.org/project/fi ... ackage-201

Hier zit ook een handleiding bij, deze kun je hier downloaden:
http://forum.cmsmadesimple.org/index.ph ... 458.0.html

Het is niet de beste oplossing, je zult er wat tabellen voor moeten wijzigen in je database. Maar het is wel de enigste oplossing op dit moment.

Groet,

Bas

Re: Multiple languages support?

Posted: Mon Mar 09, 2009 6:03 pm
by Rolf
Hallo Bert,

Ook binnen de normale CMSMS installatie zou je een meertalige site kunnen maken.
Zie http://forum.cmsmadesimple.org/index.ph ... 589.0.html
Voor erg grote sites zou dit toch wat lastig kunnen worden... Bomen en het bos en zo  ;)

Zelf heb ik eens gekozen voor drie aparte installaties op één database, werkt op zich prima.
Alleen iedere keer 3x upgrade uitvoeren, iets minder handig.  :-\

Groet, Rolf

Re: Multiple languages support?

Posted: Wed Mar 11, 2009 6:02 am
by RonnyK
Ikzelf gebruik nog wel eens de volgende logica....

Structuur van de pagina's:

- Home
- NL
  - NLpage1
  - NLpage2
- EN
  - Enpage1
  - Enpage2
- FR
  - FRpage1
  - FRpage2

Code:
   
              {cms_selflink page="en" image="uploads/flags/lang_en.gif" alt="English" imageonly=1}
              {cms_selflink page="fr" image="uploads/flags/lang_fr.gif" alt="French" imageonly=1}
              {cms_selflink page="nl" image="uploads/flags/lang_nl.gif" alt="Nederlands" imageonly=1}
   
{menu} dient met de parameter (start_level) te worden uitgebreidt, zodat enkel de sub-pagins's van de gekozen taal getoond worden.

Code:
{menu template='simple_navigation.tpl' start_level='2' collapse='1'}

Wat ik een voordeel vind van deze methode, is dat de structuur onder de verschillende talen niet identiek hoeft te zijn.

De logica hieronder kan EXTRA worden gebruikt, maar is niet noodzakelijk voor de werking.

Extra 1:

Mocht je ook nog willen dat gebaseerd op de taal van de bezoeker, deze automatisch naar zijn specifieke taal homepage gaat, dan als extraatje ....

Maak een UDT "browserlanguage" aan:

Code:
{
$lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
if (substr($lang, 0, 2) == 'en')
{
header("Location: index.php?page=en");
} elseif (substr($lang, 0, 2) == 'fr')
{
header("Location: index.php?page=fr");
} else {
header("Location: index.php?page=nl");
}
}
De logica hierbij is dat gekeken wordt wat zijn taal is, en dat als deze bekend is, als hoofdpagina je daarheen stuurt, anders naar de standaard-pagina, hierboven 'nl'. Let wel, dit zijn de aliassen....

'Home' bevat enkel deze UDT als content, en aangezien Home mijn default pagina is, doet deze een re-direct naar de taal-homepage.

Extra 2:

Overigens heb ik ook nog wel een voorbeeld, hoe je middels smarty, binnen 1 template de logica kunt laten meelopen, waarmee je search e.d. ook als label, afhankelijk van de taal in de goede taal weergeeft...

Ook dit is niet nodig voor de werking, je kunt ook met meerdere templates werken, of 1 als je geen search e.d. gebruikt.
   
   {get_root_page_alias assign="root_page_alias"}
   {if $root_page_alias eq 'fr'}
   {search searchtext="frans" lang="fr_FR"}
   {elseif $root_page_alias eq 'en'}
   {search searchtext="engels" lang="en_US"}
   {else}
   {search searchtext="nederlands" lang="nl_NL"}
   {/if}
   
   
Hierbij wordt de toppagina (zijnde de gekozen taal) uitgelezen middels een UDT, genaamd "get_root_page_alias".
global $gCms;
global $smarty;

$manager =& $gCms->GetHierarchyManager();

$var = 'root_page_alias';
if( isset($params['assign']) && $params['assign'] != '' )
{
  $var = $params['assign'];
}
$result = "NO RESULT";
$thisPage = $gCms->variables['content_id'];
$currentNode = &$manager->sureGetNodeById($thisPage);
while( isset($currentNode) && $currentNode->getLevel() >= 0 )
{
    $currentContent =& $currentNode->getContent();
    $result = $currentContent->Alias();
    $currentNode =& $currentNode->getParentNode();
}
$smarty->assign($var,$result);
Ronny

Re: Multiple languages support?

Posted: Fri Mar 13, 2009 9:58 am
by RonnyK
Bert,

je kunt hem i.i.g. plaatsen in de Tips & Trucs onder het NL-board, met uitleg over de werking. Daarnaast kan het ook in het Tips & Tricks board op het Engelstalige deel van het Forum.

Ronny