News:

Want to get involved in developing SMF, then why not lend a hand on our github!

Main Menu

Simple way to have a Multilingual Forum

Started by Nabil1, December 07, 2008, 03:21:39 PM

Previous topic - Next topic

Nabil1

This is a very simple idea to switch between two Languages in the same forum
suppose that you want to have 2 languages on your forum , just do the following :

language A and language B , language A is the default language it has for example 4 Categories and 15 Boards
DO NOT COUNT the Boards  , Just the Categories , so lets say 4

then add the Categories of Language B with its Boards simply AFTER the last Category in Language A
what I'm going to do is to give you some simple Code to switch between Language A and B  , it makes no Sense to show them both
isnt it .
it is better to let the user Choose which Language he wants to see , first of all you need to make two links or (buttons) one for Language A and the
other is for Language B , so you can do the following
in BoardIndex.template.php FIND :

<td valign="bottom">', theme_linktree(), '</td>


replace with

<td valign="bottom"><table cellspacing="0" cellpadding="0" width="100%"><tr><td align="left" style="padding-left:5px">Forum</td><td align="right" style="padding-right:5px">
Set to &nbsp;<a href="index.php?lang=1"><font style="font-family:verdana">Language A</font></a> / <a href="index.php?lang=2"><font style="font-family:verdana">Language B</font></a></td><tr></table></td>


dont forget to replace Language A and B with your Languages

in BoardIndex.template.php find

$first = true;


add before

/////////////////////////NEW FUNCTION/////////////////////
$seelanguage=$_REQUEST['lang']; $count1=-1;

if ($seelanguage==2){
setcookie("lan","language",time()+21600); header('Location:index.php');
}
////////////// to see if cookie or variable is there ////////
if ($_COOKIE['lan'])
{
$selmethod=1;
} else { $selmethod=2; };

if ($seelanguage==1){
setcookie("lan","",time()-21600); header('Location:index.php');
};
///////////////////////////////// END FUNCTION //////////////


in BoardIndex.template.php Find :

foreach ($context['categories'] as $category)
{


add after

$count1+=1;
if ($selmethod==1){
if ($count1<4){
continue;
}
};

if ($selmethod==2){
if ($count1>3){
continue;
}
};


Important : see above if ($count1<4) the number 4 should be replaced with How many categories you have for Language A , Remember .. the Categories NOT the Boards
                see above ($count1>3) the Number 3 here ,  if your Language A Categories are 4 for Example then the number should be  4-1 = 3


spiros

Will that mean that when you switch language category/board names change also?

Nabil1

#2
Quote
Will that mean that when you switch language category/board names change also?
it will change to Language B or A (Catrgories and Boards) which you have added and traslated yourself.
if you choose Language B for example the Categories & Boards  of Language A will be Hidden, instead of them you'll see Categories and Boards Of B .


By the way , the user's setting / Choice will be saved for 6 Hours , that means when he leaves the Site and come back again , he will see his language , I think 6 hours is enough after that the user should switch to his language again , this saving works if the user uses a Browser with cookies enabled.

spiros

I still do not understand where one translates the cat/board strings.

Nabil1

Quote
I still do not understand where one translates the cat/board strings.
The above Code does not Translate , it switches between two groups of boards
which you can specify for two languages .

spiros

A, OK.
I only wish there was a simple way like that to translate cat/board names.

Advertisement: