سؤال

أنا أستخدم رسائل التدويل GWT. ال وثائق لأشكال الجمع يقول هذا يجب أن يعمل:

@DefaultMessage("{0} {1,number} hours {2}")
@PluralText({"one", "an hour"})
String hours(String prefix, @PluralCount int count, String suffix);

حسنًا ، لا. مهما كانت قيمة count لا يزال يسلم DefaultMessage (على سبيل المثال "1 ساعة"). نفس الشيء إذا استخدمت ملف .properties:

hours[one]=an hour
hours[few]=some hours
hours={0} {1,number} hours {2}

هل هناك خطأ في المستندات أو في GWT (أنا أستخدم GWT 2.0.3) أو في داخلي؟ إذا كان أي من السابقين ، أي شخص يعرف عن الحل؟

تعديل: المزيد من القرائن لهذا اللغز. يمكنني الحصول على معالجة الجمع مع العمل إذا لم أعتمد على معالجة اللغة الافتراضية. هذا هو ، أنا بحاجة:

  • في ملف GWT.XML الخاص بالوحدة النمطية:

    <extend-property name="locale" values="en"/>

  • في رسائلي ، يدوي:

    @DefaultLocale("en")

    public interface MyMessages extends Messages { ...

  • قم بتحميل لغة "EN" صراحة عن طريق إلحاق عنوان URL

    &locale=en

يرى http://groups.google.com/group/google-web-toolkit/browse_thread/thread/80ae300213cc6adb حيث نشرت هذا السؤال.

تحرير 2: السبب في دخولي إلى أرض GWT Plurals هو أنني أقوم بإنشاء وحدة طوابع زمنية نسبية قابلة للقراءة "GWT البشرية". مفتوح من مصادر في جيثب: http://github.com/pez/gwt-relative-time يرجى التحقق من ذلك. سيكون لديها قريبا جدا أشكال فردية صحيحة ودعم لبعض اللغات. =)

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

المحلول 2

التعود على الإجابة على أسئلتي الخاصة =) إليك مشاركة عبر "الإجابة" الخاصة بي على مجموعة Google GWT:

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

أردت إضافة بعض الأماكن إلى الوحدة النمطية الخاصة بي. اعتقدت أنني يمكن أن أحصل على لوحة غلاية لملف الخصائص إذا استخدمت @Generate حاشية. ملاحظة. لقد لاحظت أنه خلق كلاهما _en.properties ملف و _default.properties. ما هو أكثر ؛ ال _en ملف يفتقر تمامًا إلى معلومات النموذج الجمع! ال _default كان ملفهم رغم ذلك.

ثم انتقلت _defaults ملف إلى نفس الدليل مثل TimeMessages.java ملف وإعادة تسميته TimeMessages_default.properties.

مع هذا في مكان يمكنني إزالته <extend-property name="locale" values="en"/> من ملف .gwt.xml الخاص بالوحدة النمطية الخاصة بي ، والأهم من ذلك ، &locale=en من عنوان URL عند تشغيل تطبيقي. ما زلت بحاجة إلى @DefaultLocale("en") رغم ذلك ، على الرغم من أن الوثائق تنص بوضوح على أن هذا ليس ضروريًا.

في الختام ، إذا واجهت هذه المشكلة ، فحاول:

  • توليد ملفات الخصائص باستخدام @Generate
  • مكان YourMessages_default.properties جنبا إلى جنب مع YourMessages.java
  • قم بتعبئة واجهة YourMessages مع @DefaultLocale("en") حاشية. ملاحظة.

عن ذلك @Generate. هذا ما نجح بالنسبة لي. قبل امتداد واجهة الرسالة مباشرة:

@Generate(format = {"com.google.gwt.i18n.rebind.format.PropertiesFormat"})

قال سجل GWT إنه قام بإنشاء ملف الخصائص الخاص بي ، لكنني لم أتمكن من العثور عليه. لقد أصلحت ذلك عن طريق إضافة علم البرمجيات -extra extras ثم وجدت ملفات الخصائص التي تم إنشاؤها في extras الدليل. بما في ذلك هذه المعلومات هنا منذ أن قضيت أكثر من ساعة في اكتشافها.

نصائح أخرى

كما أعتقد أنه سيوفر للناس الوقت لمعرفة أن قاعدة الجمع الإنجليزية الافتراضية تدعم فقط "other" و "one".

defaultrule_en.java الاستخدامات defaultrule_1_0n.java

لذلك عليك إعادة تعريف DefaultRule_en.java إذا كنت تريد استخدام "none","two",few"... يمكنك رؤية القواعد المتاحة في الحزمة com.google.gwt.i18n.client.impl.plurals.

حل آخر من قائمة مشكلات GWT هنا:

عليك تحديد defaultlocale في mymessages.java:

@DefaultLocale("en")
public interface MyMessages extends Messages {
   public String items(@PluralCount @Optional int count);
}

وفي mymessages.properties:

items={0} items
items[one]=one item

شيء آخر وجدته هو أنه يمكنك تحديد موقع احتياطي مثل هذا:u003Cset-property-fallback name="locale" value="en"/> في ملف الوحدة النمطية XML

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