Joomla! (DAY 7) - Joomsport (DAY 5): Localization - Adding Traditional Chinese

62 篇文章 0 订阅

Back End:


DropDown Main Menu


The first thing need to take care is the main menu. In the drop down vertical menu, each item accords to one component installed, and each component has one item linking with it in the menu:


admin-menu  

We've already explained that the data for this drop down menu is stored in data table '#__components' in MySQL. So if you want to change the text label, just update the corresponding record directly:


component-table


We would not waste time here.


Horizental Sub Menu:


That menu is generated by the code in 'admin.joomsport.php':


// Load the submenu.
addSubmenu(JRequest::getCmd('task', 'joomsport'));
function addSubmenu($vName)
{
	JSubMenuHelper::addEntry(
		JText::_('BLBE_TOURNAMENT'),
		'index.php?option=com_joomsport&task=tourn_list',
		$vName == 'tourn_list' || $vName == 'tour_edit' || $vName == ''
	);

	JSubMenuHelper::addEntry(
		JText::_('BLBE_SEASON'),
		'index.php?option=com_joomsport&task=season_list',
		$vName == 'season_list' || $vName == 'season_edit'
	);
........

The text 'BLBE_TOURNAMENT' is just a key in some kind of 'language file', which stores key-value pair, and the value of that key will be evaluated in the expression and shown in HTML finally. So, now search for words ‘BLBE_TOURNAMENT’ through out the whole project:


language-file


The four highlighten files have the same content, after trying one by one, the file under 'administrator/language/en-GB/' is the right one.  Change its content:


BLBE_TT_LASTNAME="Enter Last Name"
BLBE_NICKNAME="Nickname"
BLBE_TT_NICKNAME="Enter Nickname"
BLBE_TOURNAMENT="賽事"
BLBE_TOURNAMENTNAME="Tournament name"
BLBE_SELTOURNAMENT="Select Tournament"
BLBE_TT_SELTOURNAMENT="Select Tournament to assign the Season"
BLBE_SEASON="Season"
BLBE_SEASONNAME="Season name"

Then go the the administration page again:


chinese-language


It's done. Under directory 'administrator/components/com_joomsport/Language', there is one folder named 'BE', it should stand for 'Back End', and the 'FE' should stand for 'Front End'.

 

Front End


As we know, Joomla! let user has the capability to specify languages for front end and back end separately. And the language for front end is generally designed for end user level. Joomsport takes this issue into account, and it has a panel for that at back end.


language


But so far we have no idea about where does the language file reside. Change some words in the new created language file and search the words through the project.


traditional-chinese


search-panel


But Eclipse return 0 result. Have to change the way of thinking. Take a look at front end firstly:


front-end-output


And, this view is 'ltable' with leyout 'default'. We should go to and open file '/components/com_joomsport/views/ltable/tmpl/default.php'.


<th width="20" class="sort asc" axis="int" id="tblrank_id">
	<?php echo $this->bl_lang['BL_TBL_RANK'];?>
</th>

And in '/components/com_joomsport/views/ltable/view.html.php':


class bleagueViewltable extends JView
{
	function display($tpl = null)
	{
		......
		
		require_once(JPATH_ROOT.DS.'components'.DS.'com_joomsport'.DS.'bl_lang.php');

		$this->assignRef('bl_lang', $bl_lang);
		
		......

The variable '$bl_lang' should come from 'bl_lang_php'. Open  'bl_lang_php': 


<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
$db	=& JFactory::getDBO();
require_once ( JPATH_ROOT.'/media/bearleague/languages/default.php' );

$query = "SELECT lang_file FROM #__bl_languages WHERE is_default = 1";
$db->setQuery($query);
$lang_file = $db->loadResult();

if ($lang_file)
{

	if (preg_match("/[0-9a-z]/", $lang_file))
	{
		//dumpMessage('reach here in preg');
		//$filelink = JPATH_ROOT.'/media/bearleague/languages/'.$lang_file.'.php';
		//dump($filelink, 'filelink');
		//$ex = file_exists($filelink);
		//dump($ex, 'file exist?');
		require_once ( JPATH_ROOT.'/media/bearleague/languages/'.$lang_file.'.php' );
	}

}
?>

It is a little wierd that put the language file under 'media/../'.  This script load the default language file, and then get the language file currently in use, and then load it. The '#__bl_languages' table is:


language-table


And put some 'dump' statement to trace the intrim variables, according to the output, that the file 'Traditional Chinese.php' does exist! But why can't find it. 


In fact the reason is that Eclipse will not actively, automatically refresh the project, even you close your Eclipse, you need to refresh by yourself mannually. 


traditional-chinese

 

Localising The Whole Site


At this point, we have localised the joomsport component, but not Joomla! stie yet. It is pretty simple to add language (other than English of course), go to the official site for language package distribution, and download language pack file:


http://joomlacode.org/gf/project/jtranslation/frs/?action=FrsReleaseView&release_id=324


And install the two zip files, and go to 'language manager' to set the default language.

language-manager


REFS:

http://kb.siteground.com/article/How_to_install_a_new_language_in_Joomla_15.html

http://help.joomla.org/content/view/1651/243/





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值