آموزش: ساختن بسته زبان فارسی برای جوملا 1.6: تفاوت بین نسخهها
(صفحهای جدید با 'در این آموزش میآموزیم که چگونه بسته زبان فارسی را ایجاد کنیم. برای اینکار از پیش...' ایجاد کرد) |
|||
| سطر ۳۹۲: | سطر ۳۹۲: | ||
'''منبع: <nowiki>http://docs.joomla.org/Tutorial:Making_a_Language_Pack_for_Version_1.6</nowiki>''' | '''منبع: <nowiki>http://docs.joomla.org/Tutorial:Making_a_Language_Pack_for_Version_1.6</nowiki>''' | ||
| − | '''ترجمه: تیم جوملا فارسی''' | + | '''ترجمه: حمید شیرزاد - تیم [http://www.joomlafarsi.com/ جوملا فارسی] |
| − | + | ''' | |
{{معرفی پشتیبانی}} | {{معرفی پشتیبانی}} | ||
نسخهٔ ۱۴ مارس ۲۰۱۱، ساعت ۱۹:۱۳
در این آموزش میآموزیم که چگونه بسته زبان فارسی را ایجاد کنیم.
برای اینکار از پیشوند زبان فارسی که fa-IR است استفاده میکنیم.
1. این بسته از 3 فایل تشکیل شده که 2 فایل آن بصورت فشرده میباشد.
pkg_fa-IR.xml
site_fa-IR.zip
admin_fa-IR.zip
2. شما میتوانید برای بخش سایت یا بخش مدیریت 2 فایل جداگانه ایجاد کنید.
pkg_site_fa-IR.xml
یا
pkg_admin_fa-IR.xml
site_fa-IR.zip
یا
admin_fa-IR.zip
3. نام بستهها را میتوانید به شکل زیر درست کنید.
fa-IR_joomla_lang_full_1.6.0v1.zip
fa-IR_joomla_lang_site_1.6.0v1.zip در صورتیکه فقط برای سایت بخواهید و
fa-IR_joomla_lang_admin_1.6.0v1.zip در صورتیکه فقط برای مدیریت بخواهید.
4. اگر از فایلهای جدا برای بسته فایل زبان سایت یا مدیر استفاده میکنید، اسامی آنها هم باید متفاوت باشد. برای مثال pkg_site_fa-IR.xml and pkg_admin_fa-IR.xml.
همچنین در صورتیکه هر کدام از آنها بصورت مستقل بودند باید برای هر کدام فایلهای fa-IR.lib_joomla.ini و fa-IR.localise.php استفاده شوند.
محتویات
فایل pak_fa_IR.xml برای بسته زبان
<source lang="xml"><?xml version="1.0" encoding="UTF-8" ?> <extension type="package" version="1.6"> <name>Persian Language Pack</name> <packagename>fa-IR</packagename> <version>1.6</version> <url></url> <packager></packager> <packagerurl></packagerurl> <description>1.6 Joomla Persian Language Package</description> <files> <file type="language" client="site" id="fa-IR">site_fa-IR.zip</file> <file type="language" client="administrator" id="fa-IR">admin_fa-IR.zip</file> </files> </extension> </source>
یک فایل فشرده شده برای هر بخش (سایت و مدیریت)
site_fa-IR.zip
admin_fa-IR.zip
فایل install.xml برای site
<source lang="xml"><?xml version="1.0" encoding="utf-8" ?> <extension version="1.6" client="site" type="language" method="upgrade">
<name>Persian (Fa)</name> <tag>fa-IR</tag> <version>1.6</version> <creationDate>2011-03-14</creationDate> <author>Persian translation team : Joomla Farsi</author> <authorEmail>[email protected]</authorEmail> <authorUrl>www.joomlafarsi.com</authorUrl> <copyright>Copyright © 2005 - 2011 Joomlafarsi. All rights reserved.</copyright> <license>GNU General Public License version 2 or later; see LICENSE.txt</license> <description>Persian language pack for JoomlaFarsi! 1.6</description> <files>
<filename>index.html</filename>
<filename>fa-IR.com_admin.ini</filename>
<filename>fa-IR.com_admin.sys.ini</filename>
<filename> .....ini</filename> [...]
<filename>fa-IR.lib_joomla.ini</filename>
<filename>fa-IR.ini</filename> <filename file="meta">fa-IR.xml</filename>
<filename file="meta">install.xml</filename>
<filename>fa-IR.localise.php</filename>
</files>
<media destination="fa-IR"> <filename>index.html</filename> <filename>js/index.html</filename> <filename>js/calendar-setup.js</filename> <filename>js/calendar.js</filename> </media> </extension></source>
فایل install.xml برای administrator
<source lang="xml"><?xml version="1.0" encoding="utf-8" ?> <extension version="1.6" client="administrator" type="language" method="upgrade">
<name>Persian (Fa)</name> <tag>fa-IR</tag> <version>1.6</version> <creationDate>2011-03-14</creationDate> <author>Persian translation team : Joomla Farsi</author> <authorEmail>[email protected]</authorEmail> <authorUrl>www.joomlafarsi.com</authorUrl> <copyright>Copyright © 2005 - 2011 Joomlafarsi. All rights reserved.</copyright> <license>GNU General Public License version 2 or later; see LICENSE.txt</license> <description>Persian language pack for JoomlaFarsi! 1.6</description> <files>
<filename>index.html</filename>
<filename>fa-IR.com_admin.ini</filename>
<filename>fa-IR.com_admin.sys.ini</filename>
<filename> .....ini</filename> [...]
<filename>fa-IR.lib_joomla.ini</filename>
<filename>fa-IR.ini</filename> <filename file="meta">fa-IR.xml</filename>
<filename file="meta">install.xml</filename>
<filename>fa-IR.localise.php</filename>
</files>
<media destination="fa-IR"> <filename>index.html</filename> <filename>js/index.html</filename> <filename>js/calendar-setup.js</filename> <filename>js/calendar.js</filename> </media> </extension></source>
همه فایلهای ترجمه با پسوند ini
تمامی فایلهای ترجمه زبان مربوط به administrator و site در شاخه language باید کپی شود.
fa-IR.xmlفایل
<source lang="xml"><?xml version="1.0" encoding="utf-8"?> <metafile version="1.6" client="administrator" method="upgrade" > <tag>fa-IR</tag> <name>Persian (Fa)</name> <description>Persian administrator language for Joomla 1.6</description> <version>1.6</version> <creationDate>2011-03-14</creationDate>
<author>Persian translation team : Joomlafarsi</author>
<authorEmail>[email protected]</authorEmail>
<authorUrl>www.joomlafarsi.com</authorUrl>
<copyright>Copyright © 2005 - 2011 Joomlafarsi. All rights reserved.</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<metadata> <name>Persian (Fa)</name> <tag>fa-IR</tag> <rtl>0</rtl>
<locale>fa_IR.utf8, fa_IR.UTF-8, fa_IR.UTF-8@euro, Persian_Standard,persian, fa_IR, fa_IR, fa</locale>
<firstDay>1</firstDay>
</metadata> <params /> </metafile></source>
فایل fa-IR.localise.php
(بطور معمول این فایل در بخش site قرار میگیرد. این فایل در بسته admin زمانی قرار میگیرد که قرار است فقط بسته admin ارائه شود).
شرح این فایل:
این فایل جایگزین فایل fa-IR.ignore.php میشود تا بسته زبان سفارشی شود.
- نادیده گرفتن کلمات جستجو شده.
- تعریف حداقل و حداکثر طول جستجو کلمات.
- تعریف تعداد حروف نمایش داده شده برای نتایج جستجو.
- قابلیت تعریف عملکرد خاص برای بعضی از زبانها که در آن مقدار رشتهای میتواند در بسته زبان تغییر کند.(برای مثال زبان روسی)
- تعریف ترجمههای سفارشی(زمانی که از یونیکد برای پارامترهای آدرس در تنظیمات عمومی استفاده نمیکنید) و اطمینان از اینکه تغییر بعضی حروف و کدهای اسکی بدرستی انجام میگیرد در نواحی مختلف وقتی که SEF فعال است.
- تعریف تقویم سفارشی با اضافه کردن توابع و همچنین استفاده از فایلها جاوا.
کدهای فایل fa-IR.localise.php
<source lang="php"> /**
* fa-IR Date class * * @package Joomla.Site * @since 1.6 */
jimport('joomla.utilities.date'); class fa_IRDate extends JDate { const DAY_NUMBER = "\x027\x03"; const DAY_NUMBER2 = "\x030\x03"; const DAY_YEAR = "\x032\x03"; const MONTH_ABBR = "\x033\x03"; const MONTH_NAME = "\x034\x03"; const MONTH_NUMBER = "\x035\x03"; const MONTH_NUMBER2 = "\x036\x03"; const MONTH_LENGTH = "\x037\x03"; const YEAR_ABBR = "\x040\x03"; const YEAR_NAME = "\x041\x03"; const AM_LOWER = "\x042\x03"; const AM_UPPER = "\x043\x03"; const PERSIAN_EPOCH = 1948320.5;
protected static $month_names = array("فروردين","ارديبهشت","خرداد","تیر","مرداد","شهریور","مهر","آبان","آذر","دی","بهمن","اسفند");
/**
* Gets the date as a formatted string.
*
* @param string The date format specification string (see {@link PHP_MANUAL#date})
* @param boolean True to return the date string in the local time zone, false to return it in GMT.
* @return string The date string in the french republican calendar (see @link{http://en.wikipedia.org/wiki/French_Republican_Calendar}).
* @since 1.6
*/
public function calendar($format, $local = false)
{
// Do string replacements for date format options that can be translated.
$format = preg_replace('/(^|[^\\\])d/', "\\1".self::DAY_NUMBER2, $format);
$format = preg_replace('/(^|[^\\\])j/', "\\1".self::DAY_NUMBER, $format);
$format = preg_replace('/(^|[^\\\])z/', "\\1".self::DAY_YEAR, $format);
$format = preg_replace('/(^|[^\\\])M/', "\\1".self::MONTH_ABBR, $format);
$format = preg_replace('/(^|[^\\\])F/', "\\1".self::MONTH_NAME, $format);
$format = preg_replace('/(^|[^\\\])n/', "\\1".self::MONTH_NUMBER, $format);
$format = preg_replace('/(^|[^\\\])m/', "\\1".self::MONTH_NUMBER2, $format);
$format = preg_replace('/(^|[^\\\])t/', "\\1".self::MONTH_LENGTH, $format);
$format = preg_replace('/(^|[^\\\])y/', "\\1".self::YEAR_ABBR, $format);
$format = preg_replace('/(^|[^\\\])Y/', "\\1".self::YEAR_NAME, $format);
$format = preg_replace('/(^|[^\\\])a/', "\\1".self::AM_LOWER, $format);
$format = preg_replace('/(^|[^\\\])A/', "\\1".self::AM_UPPER, $format);
// Format the date. $return = parent::calendar($format, $local);
$jd = gregoriantojd($this->month, $this->day, $this->year); $jalaliDate = self::jd_to_persian($jd); $m = $jalaliDate['mon']; $d = $jalaliDate['day']; $y = $jalaliDate['year'];
// Manually modify the strings in the formated time. if (strpos($return, self::DAY_NUMBER) !== false) { $return = str_replace(self::DAY_NUMBER, $d , $return); } if (strpos($return, self::DAY_NUMBER2) !== false) { $return = str_replace(self::DAY_NUMBER2, sprintf("%02d",$d), $return); } if (strpos($return, self::DAY_YEAR) !== false) { $return = str_replace(self::DAY_YEAR, $jd - self::persian_to_jd(1,1,$y)+1, $return); } if (strpos($return, self::MONTH_ABBR) !== false) { $return = str_replace(self::MONTH_ABBR, self::$month_names[$m-1] , $return); } if (strpos($return, self::MONTH_NAME) !== false) { $return = str_replace(self::MONTH_NAME, self::$month_names[$m-1] , $return); } if (strpos($return, self::MONTH_NUMBER) !== false) { $return = str_replace(self::MONTH_NUMBER, $m , $return); } if (strpos($return, self::MONTH_NUMBER2) !== false) { $return = str_replace(self::MONTH_NUMBER2, sprintf("%02d", $m) , $return); } if (strpos($return, self::MONTH_LENGTH) !== false) { $return = str_replace(self::MONTH_LENGTH, $m < 7 ? 31 : $m < 12 ? 30 : self::leap_persian($y) ? 30 : 29 , $return); } if (strpos($return, self::YEAR_ABBR) !== false) { $return = str_replace(self::YEAR_ABBR, sprintf("%02d",$y % 100), $return); } if (strpos($return, self::YEAR_NAME) !== false) { $return = str_replace(self::YEAR_NAME, $y, $return); } if (strpos($return, self::AM_LOWER) !== false) { $return = str_replace(self::AM_LOWER, $this->format('a',$local)=='pm' ? 'ب ظ' : 'ق ظ', $return); } if (strpos($return, self::AM_UPPER) !== false) { $return = str_replace(self::AM_UPPER, $this->format('a',$local)=='pm' ? 'ب ظ' : 'ق ظ', $return); }
return $return; } public static function jd_to_persian($jd)
{
//var $year, $month, $day, $depoch, $cycle, $cyear, $ycycle,
// $aux1, $aux2, $yday;
$jd = floor($jd) + 0.5;
$depoch = $jd - self::persian_to_jd(1, 1, 475);
$cycle = floor($depoch / 1029983);
$cyear = $depoch % 1029983;
if ($cyear == 1029982) {
$ycycle = 2820;
} else {
$aux1 = floor($cyear / 366);
$aux2 = $cyear % 366;
$ycycle = floor(((2134 * $aux1) + (2816 * $aux2) + 2815) / 1028522) +
$aux1 + 1;
}
$year = $ycycle + (2820 * $cycle) + 474;
if ($year <= 0) {
$year--;
}
$yday = ($jd - self::persian_to_jd(1, 1, $year)) + 1;
$month = ($yday <= 186) ? ceil($yday / 31) : ceil(($yday - 6) / 30);
$day = ($jd - self::persian_to_jd($month, 1, $year)) + 1;
return array('year'=>$year, 'mon'=>$month,'day'=> $day);
} public static function persian_to_jd($month, $day, $year)
{
//var $epbase, $epyear;
$epbase = $year - (($year >= 0) ? 474 : 473);
$epyear = 474 + $epbase % 2820;
return $day +
(($month <= 7) ?
(($month - 1) * 31) :
((($month - 1) * 30) + 6)
) +
floor((($epyear * 682) - 110) / 2816) +
($epyear - 1) * 365 +
floor($epbase / 2820) * 1029983 +
self::PERSIAN_EPOCH;
}
public static function leap_persian($year) {
return (((((($year - (($year > 0) ? 474 : 473)) % 2820) + 474) + 38) * 682) % 2816) < 682;
}
} </source>
همچنین فایل calendar.js را هم در بسته اضافه نمایید.
منبع: http://docs.joomla.org/Tutorial:Making_a_Language_Pack_for_Version_1.6
ترجمه: حمید شیرزاد - تیم جوملا فارسی
هر گونه سوال و یا مشکلی در این رابطه دارید، میتوانید در انجمن تخصصی تیم جوملا فارسی جستجو کرده و در صورت عدم دریافت نتیجه مورد نظر، سوال جدیدی را مطرح کنید.|
|