0

Alright, so I'm forced to create a multi-language support site in 4 languages (Greek, French, English and German). I have some ideas on how to set it up, although I would like a second opinion on this.

The first option is to include the file based on the user's settings.

/* 
------------------
Language: English   in   ENGLISH.PHP
------------------ 
*/

$lang['TITLE'] = 'My website page title';
$lang['HOME'] = 'Home';

/* 
------------------
Language: French  in   FRENCH.PHP
------------------
*/
$lang['TITLE'] = 'Titre site-web';
$lang['HOME'] = 'Accueil';

The file would be included accordingly: include_once 'ENGLISH.PHP'; etc.

The other option is to create one general file, but have the language output in an array:

$lang = array("en"=> array("TITLE"=>'My website page title',
                           "HOME" =>'Home'),

              "fr"=> array("TITLE"=>'Titre site-web',
                           "HOME" =>'Accueil'));



$set = $USER_INFO->langPref();   //  output:    en, fr, gr, de

echo $lang[$set]['TITLE'];

The second option seems easier to manage, but I'm not sure if there are any drawbacks to this method...

Any opinions?

By the way, I was planning on translating everything myself.

Dimitri
  • 1,906
  • 3
  • 25
  • 49
  • 2
    The keyword you want to type into a search engine is "internationalization", commonly abbreviated to "i18n". – IMSoP Jun 07 '13 at 01:09
  • Also see some tips here http://stackoverflow.com/questions/776807/create-a-webpage-with-multilanguage-in-php?rq=1 – IMSoP Jun 07 '13 at 01:11
  • Gettext support is pretty good in PHP, I would recommend going for that. – Ja͢ck Jun 07 '13 at 01:45

2 Answers2

2

Don't waste your time, use a framework, Symfony2 for example has a excellent internationalization component:

http://symfony.com/doc/current/components/intl.html

or CakePHP, even easier =)

http://book.cakephp.org/2.0/en/core-libraries/internationalization-and-localization.html

but...if you really...really want to do from scratch =) I recommend you to use something like .po files, here you are some article that could help; http://www.icanlocalize.com/site/tutorials/how-to-translate-with-gettext-po-and-pot-files/

I strongly recommend the use of a framework or even a CMS has this functionality built in...

I hope this can help.

Wils
  • 1,211
  • 17
  • 31
  • The Symfony component says it's an English-only emulation of the [`intl` extension/module](http://www.php.net/manual/en/book.intl.php); the CakePHP one looks like an integration of gettext, which is also [available as a PHP extension/module](http://www.php.net/manual/en/book.gettext.php). – IMSoP Jun 07 '13 at 01:14
  • From what I see, you still need to manually translate your .PO files for every language in CakePHP. How is that different from doing things from scratch? – Dimitri Jun 07 '13 at 02:27
  • @Dimitri The framework provides how the translations are stored and accessed. You're not going to find a pre-written library of strings translated into different languages, as every application needs different strings. – IMSoP Jun 07 '13 at 14:24
1

You can used .ini to store language:

set = $USER_INFO->langPref(); 
if(file_exists("PATH_TO_FOLDER_LANGUAGE/".$set.'.ini')){
    $arrLanguage= parse_ini_file("PATH_TO_FOLDER_LANGUAGE/".$set.'.ini');
}else{
    $arrLanguage = array();
    echo "Language file not found";
}

print_r($arrLanguage);

in ini file, it will be same:

TITLE=Titre site-web
HOME=Accueil'

read more about init file at here: http://en.wikipedia.org/wiki/INI_file

Hope it can help you!

Mr Jerry
  • 1,686
  • 3
  • 14
  • 22