| /* |
| * Copyright (C) 2007 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package android.content.res; |
| |
| import java.util.Locale; |
| |
| /* |
| * Yuck-o. This is not the right way to implement this. When the ICU PluralRules |
| * object has been integrated to android, we should switch to that. For now, yuck-o. |
| */ |
| |
| abstract class PluralRules { |
| |
| static final int QUANTITY_OTHER = 0x0000; |
| static final int QUANTITY_ZERO = 0x0001; |
| static final int QUANTITY_ONE = 0x0002; |
| static final int QUANTITY_TWO = 0x0004; |
| static final int QUANTITY_FEW = 0x0008; |
| static final int QUANTITY_MANY = 0x0010; |
| |
| static final int ID_OTHER = 0x01000004; |
| |
| abstract int quantityForNumber(int n); |
| |
| final int attrForNumber(int n) { |
| return PluralRules.attrForQuantity(quantityForNumber(n)); |
| } |
| |
| static final int attrForQuantity(int quantity) { |
| // see include/utils/ResourceTypes.h |
| switch (quantity) { |
| case QUANTITY_ZERO: return 0x01000005; |
| case QUANTITY_ONE: return 0x01000006; |
| case QUANTITY_TWO: return 0x01000007; |
| case QUANTITY_FEW: return 0x01000008; |
| case QUANTITY_MANY: return 0x01000009; |
| default: return ID_OTHER; |
| } |
| } |
| |
| static final String stringForQuantity(int quantity) { |
| switch (quantity) { |
| case QUANTITY_ZERO: |
| return "zero"; |
| case QUANTITY_ONE: |
| return "one"; |
| case QUANTITY_TWO: |
| return "two"; |
| case QUANTITY_FEW: |
| return "few"; |
| case QUANTITY_MANY: |
| return "many"; |
| default: |
| return "other"; |
| } |
| } |
| |
| static final PluralRules ruleForLocale(Locale locale) { |
| String lang = locale.getLanguage(); |
| if ("cs".equals(lang)) { |
| if (cs == null) cs = new cs(); |
| return cs; |
| } |
| else { |
| if (en == null) en = new en(); |
| return en; |
| } |
| } |
| |
| private static PluralRules cs; |
| private static class cs extends PluralRules { |
| int quantityForNumber(int n) { |
| if (n == 1) { |
| return QUANTITY_ONE; |
| } |
| else if (n >= 2 && n <= 4) { |
| return QUANTITY_FEW; |
| } |
| else { |
| return QUANTITY_OTHER; |
| } |
| } |
| } |
| |
| private static PluralRules en; |
| private static class en extends PluralRules { |
| int quantityForNumber(int n) { |
| if (n == 1) { |
| return QUANTITY_ONE; |
| } |
| else { |
| return QUANTITY_OTHER; |
| } |
| } |
| } |
| } |
| |