سؤال

لدي كل MVC-نموذج إعداد واستخدام HTML وجهات النظر قوالب.ولكن لدي الألمانية سلاسل هناك أود أن تترجم إلى لغات أخرى في بعض نقطة.

ما هي أفضل طريقة للقيام بذلك ؟ وأنا أعلم أنني يجب أن تستخدم Zend_Translate, ولكن هل يجب أن تنفذ مكالمة واحدة إلى ترجمة وظيفة كل كلمة في عرض القوالب ؟

هل كانت مفيدة؟

المحلول

أولا وقبل كل شيء ، أود أن اقترح استخدام أكمل العبارات كأساس الترجمة الخاصة بك.مع الكلمات دائما يكون لديك مشكلة أن اللغات لا تتفق عندما يتعلق الأمر بناء الجملة.

ثم عليك أن تختار واحدة من متوفرة Zend_Transalate محولات:مجموعة, Csv, Gettext ، Ini ، Tbx, Tmx, Qt, Xliff أو XmlTm.معظمهم من محولات معايير الصناعة لتخزين معلومات الترجمة, لذلك ربما سيكون كافيا إذا اخترت مجموعة, Csv أو Ini بداية لسهولة الاستخدام.يرجى الاطلاع 49.2.1.كيف تقرر أي ترجمة محول لاستخدام في الإطار زند دليل.

// setup your translation
$translate = new Zend_Translate('csv', '/my/path/source-de.csv', 'de');
$translate->addTranslation('/my/path/source-en.csv', 'en');
// add the translation adapter to the registry
Zend_Registry::set('Zend_Translate', $translate);

كما أن هناك Zend_View_Helper_Translate أن الوصول الموحد Zend_Registry دخول Zend_Translate كما الافتراضي الترجمة المصدر, يمكنك استخدام ما يلي في وجهات النظر الخاصة بك:

[...]
<title><?php echo this->translate('Title'); ?></title>
[...]
<p>You can also do <?php echo $this->translate('Hello %1$s', $this->userName); ?></p>
[...]

يرجى ملاحظة أن هذا فقط هو مقدمة قصيرة إلى Zend_Translate و لا يعني عرض كامل الوظائف المنصوص عليها في هذا المكون.على سبيل المثال هناك الكثير مما يمكن قوله حول تحديد لغة الترجمة محول سوف تستخدم.

أنا أقترح عليك قراءة ما يلي في الإطار زند دليل لأن التعريب يمكن أن تكون مسألة معقدة ، Zend_Translate لا يمكن وصفها تماما هنا:

نصائح أخرى

لا، لم يكن لديك لترجمة كل كلمة واحدة. فكرة الترجمة في هذا المعنى هو أكثر من فكرة ترجمة الرسالة.

في مشروعي الحالي نقوم به نوعين من الترجمات. عندما يكون فقط ستكون النصية القصيرة، ونحن اكتب هذا مباشرة في شفرة المصدر لأغراض القراءة.

وأي بمعنى.

<?=$this->translate('Add');?>
<?=$this->translate('Delete');?>
<?=$this->translate('Are you sure you want to delete %1$s?', $thing);?>

ولكن إذا كانت الرسالة وقتا أطول، ونحن عادة اتباع معيار لوضع علامة عليه لنظام الترجمة:

<?=$this->translate('controller-action_form-information');?>

ووالفكرة هي أنه يمكنك ثم الاستعاضة عن ذلك مع نص طويل جدا في أداة الترجمة وأنها تحافظ على السيناريو عرض أنيق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top