سؤال

في حين يعود كنت أقرأ W3C المادة علىإعادة استخدام السلاسل في كتابتها المحتوى'،الذي يحتوي على بعض النصائح المفيدة حول التدويل ، ولكن الذي يبدو لي على خلاف ويؤته الجافة (لا تكرر نفسك) مبدأ القضاء على البرمجية المتكررة.

اتخاذ سبيل المثال ، قد يكون لدينا بعض التعليمات البرمجية مثل هذا...

print "The printer is ";
if (printer.working) {
    print "on.\n";
} else {
    print "off.\n";
}

print "The stapler is ";
if (stapler.working) {
    print "on.\n";
} else {
    print "off.\n";
}

غريزتي القضاء على التكرار على النحو التالي تقريبا...

report-state(printer, "printer");
report-state(stapler, "stapler");

function report-state(name, object) {
    print "The "+name+" is ";
    if (object.working) {
        print "on\n";
    } else {
        print "off\n";
    }
}

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

لذا أعتقد سؤالي هو كيف المطورين الآخرين اقترب موازنة مبدأ الجافة مع التدويل من الكود ؟

جزء مني يريد أن يجادل أن التدويل هو واحد من تلك البرمجة المتطرفة "أنت ليست بحاجة إليها ، "الحالات.على الجانب الآخر ومع ذلك ، إعادة بيع ديون مع مبدأ الجافة في الاعتبار المفترض أن توازن هذا من قبل مما يجعل من السهل لتنفيذ وظائف كما هو مطلوب, ليس من الصعب كما هو الحال هنا.

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

المحلول

كنت في محاولة للحفاظ على إكمال الجمل في اللغة الموارد.كما قلت لك قد تحتاج إلى كلمات مختلفة في سياقات مختلفة.ولكن المشكلة الأكبر هي أن ترتيب الجمل قد تكون مختلفة في لغات مختلفة.وذلك بناء سلاسل من الكلمات يمكن أن يسبب مشاكل.

مجرد مخزن

The printer is on
The printer is off
The stapler is on
The stapler is off

في اللغة الموارد لكل لغة.التكرار هنا هو أقل من الصيانة الصداع من محاولة معرفة مكان كل واحد من الكلمات سوف يطفو على السطح في التطبيق الخاص بك.

نصائح أخرى

100% أتفق مع Mendelt.

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

  The printer is on: Imprimanta este pornită // feminine
  The printer is off: Imprimanta este oprită
  The stapler is on: Perforatorul este pornit // masculine
  The stapler is off: Perforatorul este oprit

انظر أيضا http://www.mihai-nita.net/article.php?artID=20060430a

أنا أتفق مع Mendelt Siebenga عندما يقول يجب أن نضع كامل الجمل أو العبارات في اللغة ملفات الموارد.الاختلافات في قواعد اللغة دائما تمنعك من القيام كلمة واحدة استبدال جميع اللغات.هذا لا يزال يؤدي إلى أقل المتكررة رمز من المثال الأول لأنك تحتاج فقط إلى التحقق من نوع الكائن الدولة ، ثم طباعة الرسالة المناسبة من الموارد لغة.

نحن لا نحاول إنشاء رسالة سلاسل من خلال البرنامج التلاعب لأن loc.فريق لا يمكن أن نرى لهم.

Loc.فريق يفضلون في الواقع منفصلة ولكن ما يقرب من الرسائل المكررة.إلا أنها لن تقبل معلمات الرسائل.

E. g. ، "إن %(الأجهزة) ٪ %(on_or_off)%."

المعلمات يمكن أن تنهار ولكن على الأقل هو أكثر وضوحا إلى الموضع الفريق عندما سوف تعمل ومتى لا يكون كذلك.

اعتقد ان ذلك يعتمد على مستوى من اللغة الجودة التي كنت تهدف إلى تحقيق.

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

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

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

أود أن أقترح باستخدام CMS بدلا من hardcoding في النصوص القيم لتغطية التوطين.

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