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

از دانشنامه جوملا فارسی - مامبو فارسی
نسخهٔ تاریخ ‏۲۶ مهٔ ۲۰۱۲، ساعت ۱۲:۵۸ توسط Hamidy (بحث | مشارکت‌ها)

(تفاوت) → نسخهٔ قدیمی‌تر | نمایش نسخهٔ فعلی (تفاوت) | نسخهٔ جدیدتر ← (تفاوت)
پرش به: ناوبری، جستجو

مقدمه

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

برای اینکار از پیشوند زبان فارسی که fa-IR است استفاده می‌کنیم.

فایل‌های مورد نیاز

فایل‌های مورد نیاز در بسته زبان فارسی باید در شاخه‌ای به نام fa-IR_joomla_lang_full_1.6 قرار گیرد و در نهایت فشرده شود. (fa-IR_joomla_lang_full_1.6.zip)

این بسته از 3 فایل تشکیل شده که 2 فایل آن بصورت فشرده می‌باشد.

pkg_fa-IR.xml

site_fa-IR.zip

admin_fa-IR.zip

روش کار

ایجاد زبان فارسی بخش سایت

  • ابتدا یک شاخه برای فایل‌های زبان بخش سایت ایجاد کنید.
  • نام شاخه بخش سایت را site_fa-IR بگذارید.
  • تمامی فایل‌های زبان فارسی بخش سایت را در این شاخه کپی نمایید.
  • یک فایل به نام install.xml ایجاد کرده و کدهای زیر را درون آن کپی کنید.


<source lang="xml">

<?xml version="1.0" encoding="utf-8"?> <install version="1.6" client="site" type="language" method="upgrade"> <name>Persian/Farsi (Iran)</name>

   <tag>fa-IR</tag>
   <version>1.6.3</version>
   <creationDate>2011-05-22</creationDate>
   <author>Joomla Farsi Team</author>
   <authorEmail>[email protected]</authorEmail>
   <authorUrl>www.mambolearn.com / www.joomlafarsi.com</authorUrl>
   <copyright>Copyright (C) 2005 - 2011 Open Source Matters. All rights reserved</copyright>
   <license>GNU General Public License version 2 or later; see LICENSE.txt</license>
   <description>Persian fa-IR site pack for Joomla! 1.6.3</description>

<files> <filename>js/calendar.js</filename> <filename>js/calendar-setup.js</filename> <filename>js/index.html</filename> <filename>js/jalali.js</filename> <filename>index.html</filename> <filename>fa-IR.com_contact.ini</filename> <filename>fa-IR.com_content.ini</filename> <filename>fa-IR.com_mailto.ini</filename> <filename>fa-IR.com_media.ini</filename> <filename>fa-IR.com_messages.ini</filename> <filename>fa-IR.com_newsfeeds.ini</filename> <filename>fa-IR.com_search.ini</filename> <filename>fa-IR.com_users.ini</filename> <filename>fa-IR.com_weblinks.ini</filename> <filename>fa-IR.com_wrapper.ini</filename> <filename>fa-IR.files_joomla.sys.ini</filename> <filename>fa-IR.ini</filename> <filename>fa-IR.localise.php</filename> <filename>fa-IR.mod_articles_archive.ini</filename> <filename>fa-IR.mod_articles_archive.sys.ini</filename> <filename>fa-IR.mod_articles_categories.ini</filename> <filename>fa-IR.mod_articles_categories.sys.ini</filename> <filename>fa-IR.mod_articles_category.ini</filename> <filename>fa-IR.mod_articles_category.sys.ini</filename> <filename> .....ini</filename>

[...]

<filename file="meta">install.xml</filename> <filename file="meta">fa-IR.xml</filename> </files> </install>

</source>


  • فایل را ذخیره نمایید.


فایل fa-IR.xml

این فایل هم باید در شاخه زبان فارسی بخش سایت باشد.

کدهایی زیر درون این فایل باید قرار گیرد.


<source lang="xml">

<?xml version="1.0" encoding="utf-8"?> <metafile version="1.6" client="site"> <name>Persian/Farsi (Iran)</name> <version>1.6.3</version> <creationDate>2011-5-07</creationDate> <author>Joomla Farsi Team</author> <authorEmail>[email protected]</authorEmail> <authorUrl>www.mambolearn.com / www.joomlafarsi.com</authorUrl> <copyright>Copyright (C) 2005 - 2011 Open Source Matters. All rights reserved.</copyright> <license>GNU General Public License version 2 or later; see LICENSE.txt</license> <description>fa-IR site language</description> <files> <filename>fa-IR.com_contact.ini</filename> <filename>fa-IR.com_content.ini</filename> <filename>fa-IR.com_mailto.ini</filename> <filename>fa-IR.com_media.ini</filename> <filename>fa-IR.com_messages.ini</filename> <filename>fa-IR.com_newsfeeds.ini</filename> <filename>fa-IR.com_search.ini</filename> <filename>…...ini</filename>

[...]

</files> <metadata> <name>Persian/Farsi (Iran)</name> <tag>fa-IR</tag> <rtl>1</rtl> <locale>fa_IR.utf8, fa_IR.UTF-8, fa_IR, fa, farsi, farsi-ir, ir, iran, persian</locale> <firstDay>0</firstDay> </metadata> <params /> </metafile>

</source>


  • بجای [...] فایل‌های زبان فارسی را بصورت کامل بنویسید.
  • فایل را ذخیره کنید.
  • تمامی فایل‌های ترجمه زبان مربوط به site در شاخه language باید کپی شود.
  • شاخه بخش سایت را فشرده کرده تا بصورت site_fa-IR.zip شود.


ایجاد فایل زبان فارسی بخش مدیریت

  • ابتدا یک شاخه برای فایل‌های زبان بخش مدیریت ایجاد کنید.
  • نام شاخه بخش مدیریت را admin_fa-IR بگذارید.
  • تمامی فایل‌های زبان فارسی بخش مدیریت را در این شاخه کپی نمایید.
  • یک فایل به نام install.xml ایجاد کرده و کدهای زیر را درون آن کپی کنید.


<source lang="xml">

<?xml version="1.0" encoding="utf-8" ?> <install version="1.6" client="administrator" type="language" method="upgrade"> // change to client="site" if site pack

   <name>Persian/Farsi (Iran)</name>
   <tag>fa-IR</tag>
   <version>1.6.3</version>
   <creationDate>2011-05-22</creationDate>
   <author>Joomla Farsi Team</author>
   <authorEmail>[email protected]</authorEmail>
   <authorUrl>www.mambolearn.com / www.joomlafarsi.com</authorUrl>
   <copyright>Copyright (C) 2005 - 2011 Open Source Matters. All rights reserved</copyright>
   <license>GNU General Public License version 2 or later; see LICENSE.txt</license>
   <description>Persian fa-IR Administrator pack for Joomla! 1.6.3</description>

<files>

       <filename>index.html</filename>
       <filename>fa-IR.com_admin.ini</filename>

<filename>fa-IR.com_admin.sys.ini</filename> <filename>fa-IR.com_banners.ini</filename> <filename>fa-IR.com_banners.sys.ini</filename> <filename>fa-IR.com_cache.ini</filename> <filename>fa-IR.com_cache.sys.ini</filename> <filename>fa-IR.com_categories.ini</filename> <filename>fa-IR.com_categories.sys.ini</filename> <filename>fa-IR.com_checkin.ini</filename> <filename>fa-IR.com_checkin.sys.ini</filename> <filename> .....ini</filename>

[...]

<filename file="meta">install.xml</filename> <filename file="meta">fa-IR.xml</filename> </files> </install>

</source>


  • فایل را ذخیره نمایید.


فایل fa-IR.xml

این فایل هم باید در شاخه زبان فارسی بخش مدیریت باشد.

کدهایی زیر درون این فایل باید قرار گیرد.


<source lang="xml">

<?xml version="1.0" encoding="utf-8"?> <metafile version="1.6" client="site"> <name>Persian/Farsi (Iran)</name> <version>1.6.3</version> <creationDate>2011-5-10</creationDate> <author>Joomla Farsi Team</author> <authorEmail>[email protected]</authorEmail> <authorUrl>www.mambolearn.com / www.joomlafarsi.com</authorUrl> <copyright>Copyright (C) 2005 - 2011 Open Source Matters. All rights reserved.</copyright> <license>GNU General Public License version 2 or later; see LICENSE.txt</license> <description>fa-IR site language</description> <files> <filename>fa-IR.com_admin.ini</filename> <filename>fa-IR.com_admin.sys.ini</filename> <filename>fa-IR.com_banners.ini</filename> <filename>fa-IR.com_banners.sys.ini</filename> <filename>fa-IR.com_cache.ini</filename> <filename>fa-IR.com_cache.sys.ini</filename> <filename>fa-IR.com_categories.ini</filename> <filename>fa-IR.com_categories.sys.ini</filename> <filename>fa-IR.com_checkin.ini</filename> <filename>fa-IR.com_checkin.sys.ini</filename> <filename>fa-IR.com_config.ini</filename> <filename>fa-IR.com_config.sys.ini</filename> <filename>fa-IR.com_contact.ini</filename> <filename>…...ini</filename>

[...]

</files> <metadata> <name>Persian/Farsi (Iran)</name> <tag>fa-IR</tag> <rtl>1</rtl> <locale>fa_IR.utf8, fa_IR.UTF-8, fa_IR, fa, farsi, farsi-ir, ir, iran, persian</locale> <firstDay>0</firstDay> </metadata> <params />

</source>


  • بجای [...] فایل‌های زبان فارسی را بصورت کامل بنویسید.
  • فایل را ذخیره کنید.
  • تمامی فایل‌های ترجمه زبان مربوط به administrator در شاخه language باید کپی شود.
  • شاخه بخش مدیریت را فشرده کرده تا بصورت admin_fa-IR.zip شود.

ایجاد فایل pkg_fa-IR.xml

  • یک فایل به نام pkg_fa-IR.xml ایجاد کنید و کدهای زیر را درون آن کپی نمایید.


<source lang="xml">

<?xml version="1.0" encoding="UTF-8" ?> <extension type="package" version="1.6"> <name>Persian / Farsi - fa-IR Language Pack</name> <packagename>fa-IR</packagename> <version>1.6.3</version> <url>1</url> <packager></packager> <packagerurl></packagerurl> <description>1.6.3 Joomla Farsi Language Package</description> <files>

       <file type="language" client="administrator" id="fa-IR">admin_fa-IR.zip</file>
       <file type="language" client="site" id="fa-IR">site_fa-IR.zip</file>

</files> </extension>

</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 را هم در شاخه site_fa-IR در شاخه js اضافه نمایید.

در پایان

خب شما فایل‌های site_fa-IR.zip و admin_fa-IR.zip و pkg_fa-IR.xml را ایجاد کردید. هر سه فایل را در شاخه‌ای به نام fa-IR_joomla_lang_full_1.6 کپی نموده و شاخه را فشرده نمایید.

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

روش افزودن زبان فارسی به جوملا 1.6 را مطالعه کنید تا بسته زبان فارسی به جوملای شما اضافه شود.



منبع: http://docs.joomla.org/Tutorial:Making_a_Language_Pack_for_Version_1.6

ترجمه: گروه آموزش - تیم جوملا فارسی

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