سؤال

أنا بناء الإنجليزية/الفرنسية الموقع و كنت أتساءل إذا كان هناك أفضل ممارسة مثل هذا العمل.

  1. تكرار الموقع و جعل الفرنسية و الإنجليزية مجلد الموقع المناسب داخل.

  2. باستخدام PHP إلى تبادل المحتوى مع علامات html.على سبيل المثال.إذا($lang=='ar'):

  3. استخدام php لمبادلة المحتوى فقط وترك علامات html نفسها على حد سواء.على سبيل المثال.إذا كانت البيانات في كل مكان.هل سيكون هذا سيئا بالنسبة الكفاءة ؟

أي اقتراحات أخرى سيكون موضع تقدير

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

المحلول

لدينا إطار في (إذا) موقعنا يذهب الدولي أن يعمل مثل هذا...

المجلد هيكل ؛

/
  lang/
    english/
      images/
      text/
    dutch/
      images/
      text/

أي النص أو الصور التي هي لغة محددة يتم إزالتها من الصفحة مباشرة و الاستعاضة عن الثوابت.على سبيل المثال على شاشة تسجيل الدخول ، ونحن قطرة في ؛

echo TEXT_LOGIN_WELCOME;

والتي تم تعريفها في /lang/english/text/login.php ؛

define('TEXT_LOGIN_WELCOME', 'Welcome, please login:');

ولكن في /lang/dutch/text/login.php هو تعريفه ؛

define('TEXT_LOGIN_WELCOME', 'Welcome, please login (in dutch):'); 

;-)

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

الشيء جيدة حول هذا النظام هو أن كل لغة معلومات مركزية.عندما كنت في حاجة لإضافة لغة جديدة ، ببساطة نسخ الرئيسية (اللغة الإنجليزية؟) مجلد, تسميته, الرمز البريدي كل شيء وإرسالها إلى خدمة الترجمة إلى عمل السحر.بالطبع الجانب السلبي من هذا النظام هو الحفاظ على حد سواء لغات المحتوى تنمو...إذا كان أي شخص لديه أي أفكار فيما يخص هذا ثم أحب أن أسمع لهم!

راجع للشغل, إذا كنت في نهاية المطاف الحاجة إلى تخمين موقع المستخدم عن طريق IP, قد ترغب في التحقق geoIP.

نصائح أخرى

استخدام نظام النموذجيه. هندى قالب المحرك هو على الارجح واحدة من أكثر معروفة PHP منها.ليس فقط لا templating النظام يخدم الغرض المحدد كنت تحاول إنجاز ، كما أنه يجعل الحفاظ على الصفحات أسهل بكثير من فصل عرض رمز من المحتوى (والذي يسمح لك أيضا استخدام نفس القالب على الكثير من صفحات المحتوى المختلفة ذات طبيعة مماثلة).

وأبسط وسيلة أنصحك استخدام i18n تدويل طريقة & gettext كتالوجات (.po الملفات).
الشهير وورد المشروع استخدامه كذلك.

1 - تكرار الموقع بأكمله سوف يجبرك على تكرار كل رمز اتصال ومتابعة في 2 مجلدات :-[

2 - إذا كنت تقصد somenting مثل

<?php if($lang=='en') { ?>  
  <p>English text</p>  
<? } else { ?>  
  <p>Text français</p>  
<? } ?>

هذا الحل هو الأمثل لإدارة لغتين في نفس الصفحة.
ولكن لا يزال لديك تكرار الكلمات.

3 - تغيير المحتوى فقط انها حقا رضا.
ربما تتكاثر للبيانات يمكن أن تثقل php تجميع...أنا لا أعرف.
على أي حال الوثيقة يمكن أن يكون أكثر إيجازا مع هذا النهج:

<?php            
  function interpreter($buffer) {
    $pieces = explode('#', $buffer);

    if (isset($_GET['lang'])) $begin=$_GET['lang'];
    else $begin = 1;  // 1 to display français, 2 to display english

    $tot = count($pieces);          

    for ($i=$begin; $i<$tot; $i+=3) {  // remove one language
    unset($pieces[$i]); }

    foreach ($pieces as $value) {  // recompose the text
    $output .= $value; }

    return $output;
  }

  ob_start("interpreter");      
?>

<a href="?lang=#1#2#">#Français#English#</a>
<p>#English text#Texte français#.</p>

<?php ob_end_flush() ?>

النص بين ob_start و ob_end_flush تحليل بعد php تجميع.
هذا يعني أن تتأثر السلاسل القادمة على سبيل المثال.من صدى البيان ، ليس داخل < ?php ?> العلامات.
أيضا المحتوى القادمة من php تشمل يتأثر.
ولكن ليس external css أو جافا سكريبت.

الحفاظ على الاهتمام محدد # ليس caracter بعد استخدامها في أماكن أخرى.
ربما يفضلون استبدال || أو ^^

بالطبع في المستقبل الذي يمكن أن تتكيف مع هذا الحل في 3 لغات أو أكثر.ولكن إذا كان لديك لإدراج "اللغة الثالثة الترجمة" في العديد من خطوط الموقع الكبير, ربما الحل من MatW يناسب لك.

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