Строковые массивы
В любом файле внутри подкаталога /res/values можно указать в качестве ресурса массив строк. Для этого применяется XML-узел string-array. Как и узел ресурсов string, он является дочерним узлом resources. В листинге 3.10 приведен пример указания массива в ресурсном файле.
Листинг 3.10. Определение строковых массивов (XML)
>resources …<
… другие ресурсы
>string-array name="test array"<
>item
>item
>item
>/string-array<
… другие ресурсы >/resources<
При наличии определения ресурса строкового массива его можно выбрать в Java- коде, как показано в листинге 3.11.
Листинг 3.11. Определение строковых массивов (Java-код)
// Получение доступа к объекту Resources из активности Resources res = ваша-активность.getResources();
String strings[] = res.getStringArray(R.array.test array);
// Вывод параметров for (String s: strings)
{
Log.d("example", s);
}
Множественные числа
Ресурс plurals — это набор строк, которые представляют собой различные способы описания численных величин, например, количества яиц (egg) в корзине:
There is 1 egg.
There are 2 eggs.
There are 0 eggs.
There are 100 eggs.
Для чисел 2, 0 и 100 предложения совпадают, но для 1 отличается. Android позволяет использовать подобную вариацию в качестве ресурса plurals. В листинге 3.12 показано, как применять такие вариации в ресурсном файле в зависимости от количества.
Листинг 3.12. Определение множественных чисел (XML)
>resources…<
>plurals name="eggs in a nest text"<
>item quantity="one"
>/resources<
Две вариации представлены в виде двух отдельных строк одного числительного. Теперь можно использовать Java-код вроде показанного в листинге 3.13 для применения этого множественного числа при выводе строки с указанием количества. Первый параметр в методе getQuantityString() — это идентификатор ресурса множественного числа. Второй параметр указывает на нужную строку. Если значение количества равно 1, строка берется без изменений. Но если значение не равно 1, необходимо указать еще и третий параметр, значение которого вставляется вместо %d. При использовании строк форматирования в ресурсе множественных чисел всегда необходимо указывать не менее трех параметров. Второй параметр может несколько сбивать с толку; единственное отличие, которое учитывается — равно ли его значение 1 или отлично от 1.
Листинг 3.13. Определение множественных чисел (Java-код)
Resources res = ваша-активность.getResources();
String si = res.getQuantityString(R.plurals.eggs in a nest text, 0,0);
String s2 = res.getQuantityString(R.plurals.eggs in a nest text, 1,1);
String s3 = res.getQuantityString(R.plurals.eggs in a nest text, 2,2);
String s4 = res.getQuantityString(R.plurals.eggs in a nest text, 10,10);
Код в листинге 3.13 приводит к появлению соответствующей строки, нужной как раз для данного множественного числа.
А какие еще возможны варианты для атрибута quantity предыдущего узла item? Чтобы хорошо разобраться в этом вопросе, настоятельно рекомендуется изучить исходный код файлов Resources.java и PluralRules.java в дистрибутиве исходного кода Android. Одна из ссылок в разделе “Ссылки” в конце главы содержит выдержки из этих ресурсных файлов.
В английском языке возможны только значения one и other, однако в русском и других восточнославянских языках необходимо указывать значения one (для 1), few (для 2-4) и other в остальных случаях.
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.