android xml

时间:2017-02-20 09:24:19

标签: android xml translation

我必须在android中输入一个xml字符串,用于用户年龄。我必须处理sutch案件:

  1. "你3个月大了#34; (对于使用儿童简介的父母)
  2. "你是1岁"
  3. "您是1岁零1个月"
  4. "你是1岁零3个月"
  5. "你已经2岁了"
  6. "你是3岁零1个月"
  7. "你已经5岁零3个月了#34;
  8. 正如你只看到英语,我需要6个不同的案例。对于另一种语言更多。另外,我不想把字符串分成两个复数,因为在同一种语言中,句子中的世界顺序是不同的。

    到现在为止,我只使用复数作为一个数量。在文档中,我没有看到任何提示如何纠正解决sutch问题?

    实际解决方案:

    xml中的

    <string name="age_1">You are %1$s old</string>
    <string name="age_2">You are %1$s and %2$s old</string>
    
    <plurals name="age_months">
        <item quantity="one">%d month</item>
        <item quantity="other">%d months</item>
    </plurals>
    
    <plurals name="age_years">
        <item quantity="one">%d year</item>
        <item quantity="other">%d years</item>
    </plurals>
    

    在代码中:

       if(years == 0) {
          String m = res.getQuantityString(R.plurals.age_months, months, months);
          ageTextView.setText(String.format(res.getString(R.age_1), m);
       } else if (months == 0){
          String y = res.getQuantityString(R.plurals.age_years, years, years);
          ageTextView.setText(String.format(res.getString(R.age_1), y);
        } else {
          String m = res.getQuantityString(R.plurals.age_months, months, months);
          String y = res.getQuantityString(R.plurals.age_years, years, years);
          ageTextView.setText(String.format(res.getString(R.age_2), y, m);
    
        }
    

    但我正在寻找在xml中使用一个复数内容的东西:

       <plurals name="age_months">
            <item quantityA="one" quantityB="one">You are %1$d year %2$d month</item>
            <item quantityA="other"quantityB="one">You are %1$d years %2d month</item>
    ...
        </plurals>
    

2 个答案:

答案 0 :(得分:0)

所以似乎没有比我使用的更好的解决方案:

在xml中:

<string name="age_1">You are %1$s old</string>
<string name="age_2">You are %1$s and %2$s old</string>

<plurals name="age_months">
    <item quantity="one">%d month</item>
    <item quantity="other">%d months</item>
</plurals>

<plurals name="age_years">
    <item quantity="one">%d year</item>
    <item quantity="other">%d years</item>
</plurals>

代码中的一些逻辑:

   if(years == 0) {
      String m = res.getQuantityString(R.plurals.age_months, months, months);
      ageTextView.setText(String.format(res.getString(R.age_1), m);
   } else if (months == 0){
      String y = res.getQuantityString(R.plurals.age_years, years, years);
      ageTextView.setText(String.format(res.getString(R.age_1), y);
    } else {
      String m = res.getQuantityString(R.plurals.age_months, months, months);
      String y = res.getQuantityString(R.plurals.age_years, years, years);
      ageTextView.setText(String.format(res.getString(R.age_2), y, m);

    }

答案 1 :(得分:-2)

检查一下。

数量字符串(复数)

https://developer.android.com/guide/topics/resources/string-resource.html#Plurals

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <plurals
        name="plural_name">
        <item
            quantity=["zero" | "one" | "two" | "few" | "many" | "other"]
            >text_string</item>
    </plurals>
</resources>