آموزش: ساختن بسته زبان فارسی برای جوملا 1.6: تفاوت بین نسخه‌ها   

از دانشنامه جوملا فارسی - مامبو فارسی
پرش به: ناوبری، جستجو
(صفحه‌ای جدید با 'در این آموزش می‌آموزیم که چگونه بسته زبان فارسی را ایجاد کنیم. برای اینکار از پیش...' ایجاد کرد)
(بدون تفاوت)

نسخهٔ ‏۱۴ مارس ۲۰۱۱، ساعت ۱۰:۰۲

در این آموزش می‌آموزیم که چگونه بسته زبان فارسی را ایجاد کنیم.

برای اینکار از پیشوند زبان فارسی که 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

ترجمه: تیم جوملا فارسی

Indent support.png
هر گونه سوال و یا مشکلی در این رابطه دارید، می‌توانید در انجمن تخصصی تیم جوملا فارسی جستجو کرده و در صورت عدم دریافت نتیجه مورد نظر، سوال جدیدی را مطرح کنید.
8.pngاستفاده از مطالب دانشنامه جوملا فارسی - مامبو فارسی با ذکر منبع ( دانشنامه جوملا فارسی ) و لینک مستقیم به http://docs.joomlafarsi.com بلامانع است.