كيف يمكنني ريفاكتور علامات HTML من الممتلكات الملفات ؟

StackOverflow https://stackoverflow.com/questions/13225

سؤال

لقد قمت مؤخرا ورثت تدويلها النص الثقيل الدعامات 1.1 تطبيق ويب.العديد من ملفات JSP تبدو مثل:

<p>
    <bean:message key="alert" />
</p>

و خصائص الملفات تبدو مثل:

messages.properties
alert=Please update your <a href="/address.do">address</a> and <a href="/contact.do">contact information</a>.

مع الترجمات في ن اللغات الأخرى (messages_fr.خصائص ، إلخ).

المشاكل:

  1. الجافة انتهاك - لدي N المراجع إلى الدعامات العمل Url بدلا من 1 ، الأمر الذي يجعل إعادة بيع ديون عمل عناوين عرضة للخطأ.
  2. مختلطة المخاوف - طلبي هو توصيف الآن في أكثر من مجرد ملفات JSP, مما يجعل من الصعب على شبكة الإنترنت متخصص لقرص العلامات (باستخدام CSS ، إلخ).
  3. بعد ترجمة العلامات - في أي وقت تلقي حديثا ترجمة النص ، يجب أن تقرر ما المحيطي مع <a>...</a> العلامات.من السهل الإنجليزية ولكن أقل من ذلك غير مألوف في اللغات.

لقد تعتبر إضافة النائبة في رسائل الملف, مثل:

alert=Please update your {0} and {1}.

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

ما الذي يمكنني القيام به لتحسين هذا ؟

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

المحلول

تجنب خلق روابط طويلة كتل من النص.تفضل أقصر النص التي يمكن أن تكون بمثابة منطقيا كاملة ومستقلة الرابط.

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

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

التفكير في الأمر شيئا مثل هذا قد يكون أقل القبيح:

<p>Please update your address and contact information.
<br />
<a href="/address.do">update address</a>
<br />
<a href="/contact.do">update contact information</a></p>

لكن أنا لست مصمم واجهة المستخدم.

نصائح أخرى

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

ربما:

#
alert=Please update your {0}address{1} and {2}contact information{3}.

الرسالة رسالة الوسم API يسمح فقط 5 حدودي الحجج

آه!أنا ألوم بلدي الجهل الكامل الدعامات API.

على حد تعبير دليل:

بعض الميزات في هذا taglib كما تتوفر في خادم جافا صفحات العلامة القياسية مكتبة (JSTL).على الدعامات فريق تشجع على استخدام العلامات القياسية على الدعامات محددة الكلمات عندما يكون ذلك ممكنا.

وربما كنت يمكن أن تفعل هذا مع http://java.sun.com/jsp/jstl/fmt taglib.

<fmt:bundle basename="messages">
    <fmt:message key="alert">
        <fmt:param value='<a href="/">' />
        <fmt:param value="</a>" />
        <fmt:param value='<a href="/">' />
        <fmt:param value="</a>" />
    </fmt:message>
</fmt:bundle>

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

أنا لا أعرف الدعامات ، ولكن إذا كان أي شيء مثل javaserver Faces (نفس المهندس المعماري) ، ثم هناك على الأرجح الدعم لتكوين بديل التحكم.أود إما استبدال الرقابة القائمة مع أكثر مرونة أو إضافة واحدة جديدة.

في أي وقت تلقي حديثا ترجمة النص يجب أن تقرر ما تحيط مع <a>...</a> العلامات.

لا توجد وسيلة يمكنك أن تقومي بذلك و أرى أن هذا خطأ في الترجمة العملية (أنا سابق التعريب مهندس السابق المطور تعريب أدوات).على {0} الشخصيات التي ينبغي إدراجها في الملفات التي يتم إرسالها إلى المترجمين.التعريب المبادئ التوجيهية ينبغي أن يفسر سلسلة سياق و معنى أي متغيرات.

يمكنك برمجيا من صحة الملكية حزم على العودة.سلسلة محددة regex قد تفعل خدعة.ليس خارج العوالم من إمكانية أن "العنوان" و "معلومات الاتصال" سوف مبادلة النظام أثناء الترجمة.

أبسط حل هو إعادة تصميم الرسائل إلى تقديم:

<a href="/address.do">Please update your address.</a>
<a href="/contact.do">Please update your contact information.</a>

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

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