سلام
من هم ميخوام تجربياتم رو در زمينه ترجمه افزونه ها براتون بنويسم. البته به اساتيد فن جسارت نشه! ولي شايد براي بعضي دوستان مبتدي كه دوست دارن خودشون افزونه ها رو ترجمه كنن بدرد بخوره.
بخش اول : فايل هاي زبان با فرمت *.ini
معمولي ترين حالت اينه كه افزونه اي كه ميخوايم ترجمه كنيم، يه فايل زبان از نوع ini داشته باشه. اين ساده ترين حالته. كافيه فايل زبان رو باز كنين و شروع به ترجمه عبارات كنين. معمولا از اين فايل 2 نسخه وجود داره. يكي براي بخش كاربري كامپوننت و يكي هم براي بخش مديريت (بيشتر تو كامپوننت ها اينجوريه). تو كامپوننت ها معمولا 2 تا پوشه site يا frontend و admin يا backend وجود داره. تو هركدوم هم معمولا يه پوشه lang يا language وجود داره. و تو اين پوشه، فايل هاي زبان واقع شده. البته اين يه قاعده كليه، ولي هميشه اينجوري نيست.
نكات:
1-1) اسم اين فايل زبان براي زبان انگليسي هميشه به شكلen-GB.extension_name.ini است كه ما براي زبان پارسي ازش يك كپي ميگيريم و اسم اون رو به شكل fa-IR.extension_name.ini تغيير ميديم.
1-2) بعد از ايجاد فايل براي زبان پارسي، اون رو با Notepad++ باز ميكنيم و اولين كاري كه مي كنيم اينه كه از منوي Encoding، گزينه Encode in UTF8 رو انتخاب مي كنيم.
1-3) بعد هم عبارات جلوي (=) رو ترجمه مي كنيم. اين عبارات تو بعضي فايل هاي زبان در بين علامت هاي " " واقع شدن.
1-4) بعضي كامپوننت ها يه فايل زبان ديگه هم دارن با نام en-GB.extension_name.menu.ini كه تو اين فايل عبارات مربوط به منوي اون كامپوننت تو بخش مديريت نوشته شده. اين فايل رو هم ميشه ازش كپي گرفت و به حالت پارسي درآورد (كافيه اول اسمش fa-IR بنويسين). همچنين براي بعضي از كامپوننت ها كه چنين فايلي وجود نداره، ميشه ايجاد كرد (اين براي كاربراي حرفه اي توصيه ميشه)
1-5) بعد از اتمام كار با فايل هاي زبان، بايد بريم سراغ فايل xml نصب كننده افزونه. اين فايل رو باز ميكنيم و ميگرديم دنبال عبارت <languages>. در اينجا فايل هاي زبان پيش فرض افزونه معرفي شده. به هرشكلي كه زبان هاي پيش فرض افزونه (مثلا انگليسي) معرفي شده، بايد فايل زبان پارسي رو هم كه ايجاد كرديم رو معرفي كنيم.
مثلا:
کد php:
<languages folder="site/lang">
<language tag="en-GB">en-GB/en-GB. extension_name.ini</language>
</languages>
حالت هاي متنوعي براي معرفي فايل هاي يك افزونه به فايل xml نصب كننده وجود داره كه تو افزونه هاي مختلف ديده ميشه. مثلا اينجا گفته شده كه فايل هاي زبان تو مسير site/lang واقع شده (زبان بخش كاربري). به همون شكلي كه زبان انگليسي رو معرفي كرده، زبان پارسي رو هم معرفي ميكنيم:
کد php:
<languages folder="site/lang">
<language tag="en-GB">en-GB/en-GB. extension_name.ini</language>
<language tag="fa-IR">fa-IR/fa-IR. extension_name.ini</language>
</languages>
توجه داشته باشيد كه تو اين مورد خاص، فايل هاي زبان تو پوشه هاي مجزا قرار گرفته. مثلا فايل زبان انگليسي تو مسير site/lang/en-GB واقع شده. پس ما بايد براي ايجاد فايل زبان پارسي، اول تو پوشه lang يه پوشه به نام fa-IR ايجاد كنيم، بعد فايل هاي زبان پارسي رو تو اون پوشه قرار بديم و در نهايت تو فايل xml معرفيشون كنيم.
همين كار رو با فايل هاي زبان بخش مديريت هم ميكنيم:
کد php:
<languages folder="admin/lang">
<language tag="en-GB">en-GB/en-GB. extension_name.ini</language>
<language tag="fa-IR">fa-IR/fa-IR. extension_name.ini</language>
</languages>
پس قاعده كلي اينه كه به هر شكلي براي افزونه فايل هاي زبان پيش فرض ايجاد شده و معرفي شده، به همون شكل فايل هاي زبان پارسي رو ايجاد كنيم و معرفي كنيم.
نمونه ي ديگه:
کد php:
<languages folder="administrator">
<language tag="en-GB">language/en-GB/en-GB.extension_name.ini</language>
<language tag="en-GB">language/en-GB/en-GB.extension_name.menu.ini</language>
<language tag="fa-IR">language/fa-IR/fa-IR.extension_name.ini</language>
<language tag="fa-IR">language/fa-IR/fa-IR.extension_name.menu.ini</language>
</languages>
تو اين مورد فايل هاي زبان تو مسير administrator/language/en-GB واقع شده. ما ابتدا در كنار پوشه en-GB يه پوشه fa-IR ايجاد مي كنيم. بعد از فايل هاي زبان انگليسي كپي مي گيريم و توي پوشه fa-IR قرار ميديم و اسمشون رو تغيير ميديم. بعد ترجمشون مي كنيم و در نهايت تو فايل xml معرفيشون مي كنيم.
يك نمونه ديگه:
کد php:
<languages>
<language tag="en-GB">Site/usr/locale/site/en-GB. extension_name.ini</language>
<language tag="fa-IR">Site/usr/locale/site/ fa-IR. extension_name.ini</language>
</languages>
در اين مورد، مشخصه كه فايل هاي زبان انگليسي و پارسي تو پوشه هاي مجزا نيستند. پس نيازي نيست اول پوشه اي به نام fa-IR ساخته بشه.
* بعضي از مترجمين فايل هاي زبان پارسي رو ايجاد نمي كنن و تو همون فايل هاي زبان انگليسي ترجمه رو انجام ميدن. با اين كار ديگه لازم نيست فايل xml رو تغيير بدين. اما عيبش اينه كه در اينصورت اون افزونه ديگه دو زبانه نخواهد بود.
* تو بعضي كامپوننت ها، عبارات مربوط به منوي كامپوننت بجاي اينكه تو يه فايل ini باشه، توخود فايل xml تعريف شده. مثلا:
کد php:
<menu img=”components/com_flippingbook/images/icon_fb.png”>FlippingBook</menu>
<submenu>
<menu link=”option=com_flippingbook&task=configuration” img=”components/com_flippingbook/images/icon_config.png”>Configuration</menu>
<menu link=”option=com_flippingbook&task=category_manager” img=”components/com_flippingbook/images/icon_cm.png”>Manage Categories</menu>
<menu link=”option=com_flippingbook&task=book_manager” img=”components/com_flippingbook/images/icon_bm.png”>Manage Books</menu>
</submenu>
تو اين كامپوننت ها براي اينكه منوي كامپوننت رو پارسي كنيم، بايد همين عبارات تعريف شده تو فايل xml رو ترجمه كنيم. اول فايل رو utf8 ميكنيم. بعد هم عبارات بين تگ هاي <menu> و </menu> رو ترجمه ميكنيم. در اين مورد خاص:
کد php:
<menu img=”components/com_flippingbook/images/icon_fb.png”>كامپوننت FlippingBook</menu>
<submenu>
<menu link=”option=com_flippingbook&task=configuration” img=”components/com_flippingbook/images/icon_config.png”>پيكربندي</menu>
<menu link=”option=com_flippingbook&task=category_manager” img=”components/com_flippingbook/images/icon_cm.png”>مديريت مجموعه ها</menu>
<menu link=”option=com_flippingbook&task=book_manager” img=”components/com_flippingbook/images/icon_bm.png”>مديريت كتاب ها</menu>
</submenu>
نكته مهم در مورد ماژول ها و پلاگين ها:
اگه دقت كرده باشين وقتي وارد مديريت ماژول يا پلاگين ميشين، يه سري پارامتر ها دارن كه با تنظيم اون ها، ميشه از اون ماژول يا پلاگين استفاده كرد. ترجمه اين پارامترها معمولا از طريق فايل زبان نيست و اين پارامترها معمولا تو فايل xml معرفي ميشن. به اين شكل:
کد php:
<param name="tabs_pos" type="radio" default="top" label="نمايش تب ها" description="مکان نمايش تب ها را تعيين کنيد">
همينطور كه ميبينيد بايد عبارات مربوط به label و description رو ترجمه كنين. البته بعضي وقت ها عبارت جلوي default هم بايد ترجمه بشه. معمولا وقتي كه پارامتر مربوطه از نوع كادر متن هست و تو اون كادر متن بايد عبارتي بطور پيشفرض قرار بگيره.
تو بعضي از ماژول ها و پلاگين ها، حتي با وجود ترجمه فايل زبان، باز هم افزونه ترجمه نميشه و بايد حتما فايل xml اون ها رو ترجمه كرد.
مورد ديگه:
کد php:
<param name="slider" type="radio" default="0" label="چرخش خودکار؟" description="آيا تب ها به صورت خودکار به چرخش درآيند؟">
<option value="0">خير</option>
<option value="1">بله</option>
</param>
كار ديگه اي كه با فايل xml ميشه كرد اينه كه تو تگ <description> توضيحات مربوط به اون افزونه رو پارسي كنين و همچنين نام خودتون رو به عنوان مترجم اونجا درج كنين. مثلا:
کد php:
<description>کتابخانه - مترجم: مجتبي پردل</description>
بعد از اين كه افزونه رو پارسي كردين، بايد دوباره ازش يه پكيج نصبي بسازين و براي تست، رو سايت جوملاييتون نصبش كنين. بعد از نصب، فايل هاي زبان افزونه به پوشه هاي مربوطه تو جوملا منتقل ميشه. فايل هاي زبان بخش كاربري به پوشه language/fa-IR و فايل هاي زبان بخش مديريت به پوشه administrator/language/fa-IR منتقل ميشن. و چون زبان پيش فرض جوملا پارسيه، پس اين فايل هاي زبان پارسي جديدا ايجاد شده، فراخواني ميشن.
روش ديگه اينه كه اول افزونه رو نصب كنين و بعد شروع به ترجمه كنين. مزيت اين كار اينه كه هر ترجمه اي انجام بدين، مستقيم نتيجه اون رو تو سايت ميبينين و با توجه به كاربرد هر كدوم از آيتم هاي كامپوننت در سايت، ميتونين بهترين ترجمه رو ارايه بدين.
در اين حالت روش كار مثل قبله. كافيه بعد از نصب افزونه، از فايل هاي زبانش كه به پوشه هاي en-GB تو بخش كاربري و مديريت جوملا منتقل شدن، يه كپي بگيرين و تو پوشه هاي fa-IR جوملا paste كنين. بعد نامش رو تغيير بدين و شروع كنين به ترجمه.
بخش دوم رو در آينده آموزش خواهم داد!