How to do Internationalization(I18n) and Localization(L10n) in Liferay

I would like ot share my finding about I18n and L10n in Liferay. I have created blog entry at my personal blog site.

How to do Internationalization(I18n) and Localization(L10n) in Liferay

=============================================================

Never shy away from re using stuff which already exists ... It gives more time to innovate...

Blogs
Hi Mahipalsinh,

This is very nice. Would you mind creating a wiki article (or extending an existing one if any) with this information?

That way it'll be easier to find and extend by others. Of course, add a link to your blog entry as the precursor or the wiki article.
Sure , I will do that. after my vacation :-).
For anyone who is looking for a link to this.
https://blogs.oracle.com/mahipal/entry/how_to_i18n_and_l10n

Thanks Mahi.
This internationalization is perfectly working for me
Internationalization(i18n) in liferay 6.1
Complete working program


My project name is AUIproj.

In Language.properties which labels or the data we want to translate then we have to write inside this file. Suppose in my AUIproj I just want to change the name of my labels and my title only so we have to follow these steps:
Step 1:
First create a folder inside docroot/WEB-INF/src by the name of content, inside content folder, create a file Language.properties.

Step 2:
copy this content to Language.properties
javax.portlet.title=AUI Portlet
product-name=Product Name
product-serial=Product Serial

Step 3:
right click on project then build language lots of supported language files will create inside your content folder automatically and all files contain the same contents that present in your
Language.properties files.

Step 4:
Now we have to just write that specific labels name on that specific file and change the contents on that place.
Use google translator and paste them suppose for hindi I just wrote in hindi file like
javax.portlet.title=भाषा
product-name=उत्पाद नाम
product-serial=उत्पाद धारावाहिक
The name of hindi Language file is Language_hi_IN.properties.


In init.jsp I declared lots of taglib, lots of java classes by import statements.

init.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib uri="http://liferay.com/tld/aui" prefix="aui" %>
<%@ taglib uri="http://liferay.com/tld/portlet" prefix="liferay-portlet" %>
<%@ taglib uri="http://liferay.com/tld/security" prefix="liferay-security" %>
<%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme" %>
<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>
<%@ taglib uri="http://liferay.com/tld/util" prefix="liferay-util" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Calendar" %>
<%@ page import="java.util.Collections" %>
<%@ page import="com.liferay.portal.kernel.util.HtmlUtil" %>
<%@ page import="com.liferay.portal.kernel.util.ParamUtil" %>
<%@ page import="com.liferay.portal.kernel.util.CalendarFactoryUtil" %>
<%@ page import="com.liferay.portal.kernel.dao.search.ResultRow" %>
<%@ page import="com.liferay.portal.kernel.dao.search.SearchEntry" %>
<%@ page import="com.liferay.portal.kernel.exception.SystemException" %>
<%@ page import="com.liferay.portal.kernel.util.WebKeys" %>
<%@ page import="com.liferay.portal.security.permission.ActionKeys" %>
<%@ page import="com.liferay.portal.kernel.util.ListUtil" %>
<%@ page import="com.liferay.portal.service.permission.PortalPermissionUtil" %>
<%@ page import="com.liferay.portal.service.permission.PortletPermissionUtil" %>
<%@ page import="javax.portlet.PortletURL" %>
<liferay-theme:defineObjects />



In view.jsp just imported init.jsp
view.jsp
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ include file="init.jsp" %>
<portlet:defineObjects />

This is the <b>AUI Portlet</b> portlet in View mode.

<portlet:actionURL name="addProduct" var="addProductURL" />
<aui:form action="<%= addProductURL.toString() %>" method="post">
<aui:fieldset>
<aui:input name="productName" />
<aui:input name="productSerial" />
<aui:button-row>
<aui:button type="submit" />
</aui:button-row>
</aui:fieldset>
</aui:form>

build.xml
<?xml version="1.0"?>
<!DOCTYPE project>

<project name="AUIproj-portlet" basedir="." default="deploy">
<import file="../build-common-portlet.xml" />
<target name="build-lang">
<antcall target="build-lang-cmd">
<param name="lang.dir" value="docroot/WEB-INF/src/content" />
<param name="lang.file" value="Language" />
</antcall>
</target>
</project>
Paste this line just in portlet.xml just after <supports> tag
<resource-bundle>content.Language</resource-bundle>

Finally at first time build language and if you change any data on properties files then build language else no need to build language again and again. But some time it is showing some warnings like in future …...properties file will modified so to again build language and this time the contents of hindi properties file will not change.
Finally go to control panel of liferay -> Test test -> my account -> miscellaneous-> display settings -> Language select hindi and you can see the the title and our labels will change into Hindi language. If you face any problem then please share with me
Thanks and regards
asif aftab
This internationalization is perfectly working for me
Internationalization(i18n) in liferay 6.1
Complete working program


My project name is AUIproj.

In Language.properties which labels or the data we want to translate then we have to write inside this file. Suppose in my AUIproj I just want to change the name of my labels and my title only so we have to follow these steps:
Step 1:
First create a folder inside docroot/WEB-INF/src by the name of content, inside content folder, create a file Language.properties.

Step 2:
copy this content to Language.properties
javax.portlet.title=AUI Portlet
product-name=Product Name
product-serial=Product Serial

Step 3:
right click on project then build language lots of supported language files will create inside your content folder automatically and all files contain the same contents that present in your
Language.properties files.

Step 4:
Now we have to just write that specific labels name on that specific file and change the contents on that place.
Use google translator and paste them suppose for hindi I just wrote in hindi file like
javax.portlet.title=भाषा
product-name=उत्पाद नाम
product-serial=उत्पाद धारावाहिक
The name of hindi Language file is Language_hi_IN.properties.


In init.jsp I declared lots of taglib, lots of java classes by import statements.

init.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib uri="http://liferay.com/tld/aui" prefix="aui" %>
<%@ taglib uri="http://liferay.com/tld/portlet" prefix="liferay-portlet" %>
<%@ taglib uri="http://liferay.com/tld/security" prefix="liferay-security" %>
<%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme" %>
<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>
<%@ taglib uri="http://liferay.com/tld/util" prefix="liferay-util" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Calendar" %>
<%@ page import="java.util.Collections" %>
<%@ page import="com.liferay.portal.kernel.util.HtmlUtil" %>
<%@ page import="com.liferay.portal.kernel.util.ParamUtil" %>
<%@ page import="com.liferay.portal.kernel.util.CalendarFactoryUtil" %>
<%@ page import="com.liferay.portal.kernel.dao.search.ResultRow" %>
<%@ page import="com.liferay.portal.kernel.dao.search.SearchEntry" %>
<%@ page import="com.liferay.portal.kernel.exception.SystemException" %>
<%@ page import="com.liferay.portal.kernel.util.WebKeys" %>
<%@ page import="com.liferay.portal.security.permission.ActionKeys" %>
<%@ page import="com.liferay.portal.kernel.util.ListUtil" %>
<%@ page import="com.liferay.portal.service.permission.PortalPermissionUtil" %>
<%@ page import="com.liferay.portal.service.permission.PortletPermissionUtil" %>
<%@ page import="javax.portlet.PortletURL" %>
<liferay-theme:defineObjects />



In view.jsp just imported init.jsp
view.jsp
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ include file="init.jsp" %>
<portlet:defineObjects />

This is the <b>AUI Portlet</b> portlet in View mode.

<portlet:actionURL name="addProduct" var="addProductURL" />
<aui:form action="<%= addProductURL.toString() %>" method="post">
<aui:fieldset>
<aui:input name="productName" />
<aui:input name="productSerial" />
<aui:button-row>
<aui:button type="submit" />
</aui:button-row>
</aui:fieldset>
</aui:form>

build.xml
<?xml version="1.0"?>
<!DOCTYPE project>

<project name="AUIproj-portlet" basedir="." default="deploy">
<import file="../build-common-portlet.xml" />
<target name="build-lang">
<antcall target="build-lang-cmd">
<param name="lang.dir" value="docroot/WEB-INF/src/content" />
<param name="lang.file" value="Language" />
</antcall>
</target>
</project>
Paste this line just in portlet.xml just after <supports> tag
<resource-bundle>content.Language</resource-bundle>

Finally at first time build language and if you change any data on properties files then build language else no need to build language again and again. But some time it is showing some warnings like in future …...properties file will modified so to again build language and this time the contents of hindi properties file will not change.
Finally go to control panel of liferay -> Test test -> my account -> miscellaneous-> display settings -> Language select hindi and you can see the the title and our labels will change into Hindi language. If you face any problem then please share with me
Thanks and regards
asif aftab