السلام عليكم
حاولت ان اعمل عدة لغات في برمحية, لكن
كيف أحل هذه المشكلة البرمجية؟
لدي متغير
$a_marhaba="مرحبا";
$qsm='marhaba';
وهنا جمعت المتغيرين لكن لا تطيع : مرحبا
echo $a_.$qsm;
أرغب في
الناتج يساوي: مرحبا
وبارك الله فيكم
السلام عليكم
حاولت ان اعمل عدة لغات في برمحية, لكن
كيف أحل هذه المشكلة البرمجية؟
لدي متغير
$a_marhaba="مرحبا";
$qsm='marhaba';
وهنا جمعت المتغيرين لكن لا تطيع : مرحبا
echo $a_.$qsm;
أرغب في
الناتج يساوي: مرحبا
وبارك الله فيكم
__________________
لا خير في كاتـــــــــ العلم ــــــــم.
كود PHP:
$a_marhaba = "مرحبا";
$qsm = 'marhaba';
echo $a_marhaba.$qsm;
الأخ يريد تكوين متغير من تركيب متغيرين (تسمى : variable variables)
وذلك عادة يكون بوضع علامتين دولار
مثلا
لكني لم اتعرض للموقف الذي تحاول حله من قبل ولم أنجح في حله في محاولتيكود PHP:
$id=name;
$name=ahmed;
echo $$id; //ahmed
يمكنك البحث عن حل او يمكنك استخدام طرق أخرى للوصول للمطلوب
__________________
-
لازالت المشكلة قائمة
نرجو المساعدة
__________________
لا خير في كاتـــــــــ العلم ــــــــم.
لماذا لا تضع متغير بمسار الملف ، فيكون مثل :
او عبارة عن مسار مجلد :كود PHP:
$lang = "lang/" . $this_lang . ".php";
؟؟كود PHP:
$lang = "lang/" . $this_lang . "/general.php";
و إن كنت مُصرا فجرب :
كود PHP:
<?
$a[ 'marhaba' ]="مرحبا" ;
$qsm = 'marhaba' ;
$test = $a[ $qsm ] ;
echo $test ;
?>
التعديل الأخير تم بواسطة خالد الحضري ; 03-09-2010 الساعة 04:10 AM
الحل يكمن في ال dynamic variables
لكن هناك طريقة جيدة ومعتمدة من php لتطوير السكربتات متعددة اللغات وهي طريقة gettextكود PHP:
<?php
$marhaba = "salam";
$qsm = "marhaba";
echo ${$qsm};
?>
وملفات اللغة تكون فيها على شكل .po
وهي طريقة ممتازة جدًا وتسهل كثيرًا على المبرمج لأنه يمكن ان نقوم باستخراج الكلمات والتعابير بواسطة برنامج مثل poEdit
كيف يعني؟
هناك دالة اسمها _ أو gettext
نضع بها كل الكلمات التي نريدها
وعندما نشغل البرنامج يقوم بسحب هذه الكلمات وفهرستها داخل ملف اللغة تلقائيًاكود PHP:
echo _("Hello World");
وبعدها نترجمها على كيفنا.
يعني بعد ما تخلص السكربت تقوم بعمل ملف اللغة وليس في اثناء التطوير
وهذه الطريقة بالمناسبة مستخدمة في سكربت الوردبرس والكثير من السكربتات الأخرى
كنت قد عملت طريقة مشابهه لها قديمًا ولكن طريقة ال gettext افضل بكثير بالطبع
http://www.swalif.net/softs/swalif54...6/#post2019094
المصادر:
http://php.net/manual/en/book.gettext.php
كلاس خاص بهذه العملية:
http://pboos.ch/wordpress/2010/07/ph...ttext-stylish/
مصدر عربي:
http://www.sami-s.com/programming/%D...7%D9%84%D8%AC/
التعديل الأخير تم بواسطة ahmad sadiq ; 03-09-2010 الساعة 08:12 AM
كما أذكر فملفات اللغة تكون على شكل .po أثناء تحريرها ، لكن يتم تصديرها لتكون على شكل .mo ، أليس كذلك ؟
فقد تعاملت بهذه الطريقة منذ مدة على مشروع لكني لم أرتح لها ، لأن العلة في الملف باللاحقة .mo هو أنك لا تستطيع تحريره بأي برنامج ، و إنما عليك حفظ نسخة من الملف .po كي تصدر منه ملف .mo كل مرة ترغب فيها بالتعديل على ملف اللغة !!
هل هذا صحيح أخي أحمد ؟
أم أن هناك طريقة غير هذه ؟
مرحبا
جئت إليكم فرحاً
لأقول: بحثت في الإنترنت وجربت حتى وجدت الحل:
تفضلوا
$a_marhaba = "مرحبا";
$qsm='marhaba';
$qsm = ${a_.$qsm};
echo $qsm;
باركولي ورمضان مبارك
__________________
لا خير في كاتـــــــــ العلم ــــــــم.
اي نعم يجب عليك حفظ نسخة .po دائمًا ، وعند التعديل تقوم بحفظ ملف اللغة فيتم تحديث .mo تلقائيًا(يتم تكييش ملف اللغة لصيغة ابسط واسرع)
وهذه من حسنات النظام لأن البرنامج سهل الاستخدام
+انت اصلا لن تعدل على الملف إلا مرة واحدة او مرات قليلة
ويمكن ان لا تستعمل النظام اصلا انما تقوم بتهيئة البرمجية لتعدد اللغات
ويمكن لأي شخص غير خبير بالبرمجة التعديل عليها
حتى شوف بالوردبرس
كيف ترجمة الاضافات امر سهل جدًا ويمكن لأي شخص ان يقوم بالترجمة
لمزيد من السهولة والراحة يمكن استخدام الكلاس المذكور في المشاركة بالاعلى
التعديل الأخير تم بواسطة ahmad sadiq ; 03-09-2010 الساعة 11:51 AM