Friday, May 1, 2009

Easy Multi-Language for your website

Hi Friends & Techies,
I came after a long back time with more tips & i'll share you more frequently in coming months. Now in the post i'll start sharing about how to create Multi-language website using php.

First we must plan for the multilingual website
1) Every time when we add new language it should support the website without anymore alteration in the Web pages
2) Must have unique variable for each & every page for the content [so there wont be redeclaring].
3) For more user friendly use more text and design your pages with css. Avoid using images [Until you need it].
4) After designing your template, put all the contents in main language. Make it aligned and look out for browser compatibility
5) Going for Multi-language option
6) Create a file called "defines.php"
7) In the defines.php you define language for file
if($_COOKIE['language']==""){
$lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];//Detecting Default Browser language
}
else {
$lang = $_COOKIE['language'];//Detecting if cookie was set
}
switch($lang){
case "en":
require("lang/english.php"); // where the content in english is stored
break;
case "cn":
require("lang/chinese.php"); // where the content in chinese is stored
break;
case "zh-CN":
require("lang/chinese.php");
break;
case "zh-cn":
require("lang/chinese.php");
break;
default:
require("lang/english.php");
break;
}
8) Include the above file in all the webpages in your website

include('includes/defines.php');

9) In all the webpages you must change/add the meta tag information
<1meta http-equiv="content-type" content="text/html; charset=UTF-8"> //Remove 1 in the meta tag

10) for creating a new language you must save the file in UTF-8 format.
Follow the steps to save it in UTF-8
a. Open the notepad (start->run->type "notepad")
b. Save the file as "chinese.php".
c. In the save option Enter file name as "chinese.php" , Save as Type as "All Files", In encoding as "UTF-8" ;
11) Now with as usual PHP Syntax create some unique variable.
12) For chinese translation Go to Google Translation.
13) Copy the translated text and paste it in notepad for a particular variable.
14) Create a webpage, include the defines.php file, print the variable defined in chinese.php file

For Demo: Multilingual Website

Thats it, you've created multilingual website. If you've any doubt, just comment to this post i'll reply as soon as possible.

20 comments:

Anonymous said...

I am new to to php

Can I see a example of what this will be in step 11?
PHP Syntax create some unique variable.

thanks

Sathish Kumar said...

Hi,
Unique variable means if you're using $country = "India" means you should not use declare another variable $country = "Pakistan" you can use $country = "India" in english language $country = "some french word" in french.php.

Никола said...

Hi Your Guide isn`t Correct.
I can`t Understand Deffline are you using or what, can You make new guide with full steps what exacly to do please

Damir said...

How to change language without load page? (where is the ajax script for this?)

thank's

Vijaya Kumar S said...

See this link for multi language website,
http://www.vijayakumar.org/easy-multilangual-english-tamil-website-creation-using-php.html

raj said...

do i need to set alphabet or my paragraphs from english site to arabic? How variables are set for this? Please illustrate with example. Thanks in advance.
Rajiv

Sathish Kumar said...

Hi Raj,
You don't need to set alphabets.
You need to assign respective words from english to Arabic.

For Example:
let we choose english word: How are you?

These word should be translated to French

In english.php
$text = "How are you";

In french.php
$text = "Comment êtes-vous?";

In index.php
after detecting particular language
echo $text;

AikoChu said...

hi, I am totally new to php, so could u plz teach me how to write the code in the button side? (when I need to click the "eng" or "chinese" button, how can it to be detected and transform to other page?)

Amit Sinha said...

I have created language file to create multiple language site in php but it only changes static content how can i change dynamic content please give me any idea.

Amit Sinha said...

I have created language file in php to make multiple language site but i don't know how to change language after selecting the language from drop down and how to change dynamic value, please advice me how can i change dynamic value in multiple language in php, it's very urgent.

Sathish said...

Hi Amit,
If you want to make it dynamic then you need to use translator service from google or you need to store the text in different languages in the database.

Anonymous said...

I am creating site with multilanguage. I have converted the static content with variables. But what about the dynamic content that is coming from tables. What must be done for that content. should i make other tables or fields in existing tables.

thanks
sachin

Anonymous said...

Hey!!

Actually I am new to Php (I have no Idea about this language). I created my simple website in html and css.. So when I do have 6 web-pages( nav links), where do I keep those files?? You said ,we need to create a polish.php file but How do I distinguish all my web pages in this one file??
please help
Thank you,

Justyna

Pirata said...
This comment has been removed by the author.
Pirata said...

There's miss a function in the href when we click on the flag. For example:

i have an index.php that have:

include ("defines.php");

a href="" img src="languages/en.png" width="16" height="16" /a

where en.png is the english flag.

What i have to write on href to change the language to english. (original language is portuguese)

Sathish said...

@Pirata:
You can pass the index.php?lang=en
after the page reloads then you've to set the cookie & reload the index.php file again.

after setting the cookie
header("location:index.php");

karnti said...

hai I am Web Site Developer Cum Seo Programmer.

I Do Not Understand in J query Library and java script.

Mihai said...

I've also tried to make an tutorial base on the same subject, it's a multi-language php class using xml files which support utf-8 http://www.lampcoder.com/create-a-multi-languages-website-using-php-oop-and-xml/

Multilingual web sites said...

A multi-language website is a website that provides its visitors with content in two or more languages.

Multilingual web sites

Maryam Mirmoloukan said...

thanks for your post :)
but how about data in database ???
how should they translate???