Class PluralRules
- java.lang.Object
-
- com.ibm.icu.text.PluralRules
-
- All Implemented Interfaces:
java.io.Serializable
public class PluralRules extends java.lang.Object implements java.io.Serializable
Defines rules for mapping non-negative numeric values onto a small set of keywords.
Rules are constructed from a text description, consisting of a series of keywords and conditions. The
select(double)
method examines each condition in order and returns the keyword for the first condition that matches the number. If none match,KEYWORD_OTHER
is returned.A PluralRules object is immutable. It contains caches for sample values, but those are synchronized.
PluralRules is Serializable so that it can be used in formatters, which are serializable.
For more information, details, and tips for writing rules, see the LDML spec, Part 3.5 Language Plural Rules
Examples:
"one: n is 1; few: n in 2..4"
This defines two rules, for 'one' and 'few'. The condition for 'one' is "n is 1" which means that the number must be equal to 1 for this condition to pass. The condition for 'few' is "n in 2..4" which means that the number must be between 2 and 4 inclusive - and be an integer - for this condition to pass. All other numbers are assigned the keyword "other" by the default rule.
"zero: n is 0; one: n is 1; zero: n mod 100 in 1..19"
This illustrates that the same keyword can be defined multiple times. Each rule is examined in order, and the first keyword whose condition passes is the one returned. Also notes that a modulus is applied to n in the last rule. Thus its condition holds for 119, 219, 319...
"one: n is 1; few: n mod 10 in 2..4 and n mod 100 not in 12..14"
This illustrates conjunction and negation. The condition for 'few' has two parts, both of which must be met: "n mod 10 in 2..4" and "n mod 100 not in 12..14". The first part applies a modulus to n before the test as in the previous example. The second part applies a different modulus and also uses negation, thus it matches all numbers not in 12, 13, 14, 112, 113, 114, 212, 213, 214...
Syntax:
rules = rule (';' rule)* rule = keyword ':' condition keyword = <identifier> condition = and_condition ('or' and_condition)* and_condition = relation ('and' relation)* relation = not? expr not? rel not? range_list expr = ('n' | 'i' | 'f' | 'v' | 't') (mod value)? not = 'not' | '!' rel = 'in' | 'is' | '=' | '≠' | 'within' mod = 'mod' | '%' range_list = (range | value) (',' range_list)* value = digit+ digit = 0|1|2|3|4|5|6|7|8|9 range = value'..'value
Each not term inverts the meaning; however, there should not be more than one of them.
The i, f, t, and v values are defined as follows:
- i to be the integer digits.
- f to be the visible decimal digits, as an integer.
- t to be the visible decimal digits—without trailing zeros—as an integer.
- v to be the number of visible fraction digits.
- j is defined to only match integers. That is j is 3 fails if v != 0 (eg for 3.1 or 3.0).
Examples are in the following table:
n i f v 1.0 1 0 1 1.00 1 0 2 1.3 1 3 1 1.03 1 3 2 1.23 1 23 2 An "identifier" is a sequence of characters that do not have the Unicode Pattern_Syntax or Pattern_White_Space properties.
The difference between 'in' and 'within' is that 'in' only includes integers in the specified range, while 'within' includes all values. Using 'within' with a range_list consisting entirely of values is the same as using 'in' (it's not an error).
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
PluralRules.AndConstraint
private static class
PluralRules.BinaryConstraint
private static interface
PluralRules.Constraint
static class
PluralRules.DecimalQuantitySamples
Deprecated.This API is ICU internal only.static class
PluralRules.DecimalQuantitySamplesRange
Deprecated.This API is ICU internal only.static class
PluralRules.Factory
Deprecated.This API is ICU internal only.static class
PluralRules.FixedDecimal
Deprecated.This API is ICU internal only.static interface
PluralRules.IFixedDecimal
Deprecated.This API is ICU internal only.static class
PluralRules.KeywordStatus
Status of the keyword for the rules, given a set of explicit values.static class
PluralRules.Operand
Deprecated.This API is ICU internal only.private static class
PluralRules.OrConstraint
static class
PluralRules.PluralType
Type of plurals and PluralRules.private static class
PluralRules.RangeConstraint
private static class
PluralRules.Rule
private static class
PluralRules.RuleList
static class
PluralRules.SampleType
Deprecated.This API is ICU internal only.(package private) static class
PluralRules.SimpleTokenizer
-
Field Summary
Fields Modifier and Type Field Description (package private) static UnicodeSet
ALLOWED_ID
(package private) static java.util.regex.Pattern
AND_SEPARATED
(package private) static java.util.regex.Pattern
AT_SEPARATED
private static java.lang.String
CATEGORY_SEPARATOR
(package private) static java.util.regex.Pattern
COMMA_SEPARATED
static PluralRules
DEFAULT
The default rules that accept any number and returnKEYWORD_OTHER
.private static PluralRules.Rule
DEFAULT_RULE
(package private) static java.util.regex.Pattern
DOTDOT_SEPARATED
static java.lang.String
KEYWORD_FEW
Common name for the 'paucal' or other special plural form.static java.lang.String
KEYWORD_MANY
Common name for the arabic (11 to 99) plural form.static java.lang.String
KEYWORD_ONE
Common name for the 'singular' plural form.static java.lang.String
KEYWORD_OTHER
Common name for the default plural form.static java.lang.String
KEYWORD_TWO
Common name for the 'dual' plural form.static java.lang.String
KEYWORD_ZERO
Common name for the 'zero' plural form.private java.util.Set<java.lang.String>
keywords
private static PluralRules.Constraint
NO_CONSTRAINT
static double
NO_UNIQUE_VALUE
Value returned bygetUniqueKeywordValue(java.lang.String)
when there is no unique value to return.static DecimalQuantity
NO_UNIQUE_VALUE_DECIMAL_QUANTITY
Deprecated.This API is ICU internal only.(package private) static java.util.regex.Pattern
OR_SEPARATED
private PluralRules.RuleList
rules
(package private) static java.util.regex.Pattern
SEMI_SEPARATED
private static long
serialVersionUID
private StandardPluralRanges
standardPluralRanges
(package private) static java.util.regex.Pattern
TILDE_SEPARATED
-
Constructor Summary
Constructors Modifier Constructor Description private
PluralRules(PluralRules.RuleList rules, StandardPluralRanges standardPluralRanges)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description private boolean
addConditional(java.util.Set<PluralRules.IFixedDecimal> toAddTo, java.util.Set<PluralRules.IFixedDecimal> others, double trial)
private static void
addRange(java.lang.StringBuilder result, double lb, double ub, boolean addSeparator)
private boolean
addSample(java.lang.String keyword, DecimalQuantity sample, int maxCount, java.util.Set<DecimalQuantity> result)
int
compareTo(PluralRules other)
Deprecated.internalboolean
computeLimited(java.lang.String keyword, PluralRules.SampleType sampleType)
Deprecated.internalstatic PluralRules
createRules(java.lang.String description)
Creates a PluralRules from a description if it is parsable, otherwise returns null.boolean
equals(PluralRules rhs)
Returns true if rhs is equal to this.boolean
equals(java.lang.Object rhs)
static PluralRules
forLocale(ULocale locale)
Provides access to the predefined cardinal-numberPluralRules
for a given locale.static PluralRules
forLocale(ULocale locale, PluralRules.PluralType type)
Provides access to the predefinedPluralRules
for a given locale and the plural type.static PluralRules
forLocale(java.util.Locale locale)
Provides access to the predefined cardinal-numberPluralRules
for a givenLocale
.static PluralRules
forLocale(java.util.Locale locale, PluralRules.PluralType type)
Provides access to the predefinedPluralRules
for a givenLocale
and the plural type.private static java.lang.String
format(double lb)
java.util.Collection<DecimalQuantity>
getAllKeywordDecimalQuantityValues(java.lang.String keyword)
Deprecated.This API is ICU internal only.java.util.Collection<java.lang.Double>
getAllKeywordValues(java.lang.String keyword)
Returns all the values that trigger this keyword, or null if the number of such values is unlimited.java.util.Collection<DecimalQuantity>
getAllKeywordValues(java.lang.String keyword, PluralRules.SampleType type)
Deprecated.This API is ICU internal only.static ULocale[]
getAvailableULocales()
Returns the set of locales for which PluralRules are known.java.util.Collection<DecimalQuantity>
getDecimalQuantitySamples(java.lang.String keyword)
Deprecated.ICU internal onlyjava.util.Collection<DecimalQuantity>
getDecimalQuantitySamples(java.lang.String keyword, PluralRules.SampleType sampleType)
Deprecated.ICU internal onlyPluralRules.DecimalQuantitySamples
getDecimalSamples(java.lang.String keyword, PluralRules.SampleType sampleType)
Deprecated.This API is ICU internal only.static ULocale
getFunctionalEquivalent(ULocale locale, boolean[] isAvailable)
Returns the 'functionally equivalent' locale with respect to plural rules.java.util.Set<java.lang.String>
getKeywords()
Returns a set of all rule keywords used in thisPluralRules
object.PluralRules.KeywordStatus
getKeywordStatus(java.lang.String keyword, int offset, java.util.Set<DecimalQuantity> explicits, Output<DecimalQuantity> uniqueValue)
Find the status for the keyword, given a certain set of explicit values.PluralRules.KeywordStatus
getKeywordStatus(java.lang.String keyword, int offset, java.util.Set<DecimalQuantity> explicits, Output<DecimalQuantity> uniqueValue, PluralRules.SampleType sampleType)
Deprecated.This API is ICU internal only.java.lang.String
getRules(java.lang.String keyword)
Deprecated.This API is ICU internal only.java.util.Collection<java.lang.Double>
getSamples(java.lang.String keyword)
Returns a list of integer values for which select() would return that keyword, or null if the keyword is not defined.java.util.Collection<java.lang.Double>
getSamples(java.lang.String keyword, PluralRules.SampleType sampleType)
Deprecated.ICU internal onlyDecimalQuantity
getUniqueKeywordDecimalQuantityValue(java.lang.String keyword)
Deprecated.This API is ICU internal only.double
getUniqueKeywordValue(java.lang.String keyword)
Returns the unique value that this keyword matches, orNO_UNIQUE_VALUE
if the keyword matches multiple values or is not defined for this PluralRules.int
hashCode()
(package private) java.lang.Boolean
isLimited(java.lang.String keyword)
boolean
isLimited(java.lang.String keyword, PluralRules.SampleType sampleType)
Deprecated.internalprivate static boolean
isValidKeyword(java.lang.String token)
boolean
matches(PluralRules.FixedDecimal sample, java.lang.String keyword)
Deprecated.This API is ICU internal only.static PluralRules
newInternal(java.lang.String description, StandardPluralRanges ranges)
Deprecated.This API is ICU internal only.private static java.lang.String
nextToken(java.lang.String[] tokens, int x, java.lang.String context)
private static PluralRules.Constraint
parseConstraint(java.lang.String description)
static PluralRules
parseDescription(java.lang.String description)
Parses a plural rules description and returns a PluralRules.private static PluralRules.Rule
parseRule(java.lang.String description)
private static PluralRules.RuleList
parseRuleChain(java.lang.String description)
private void
readObject(java.io.ObjectInputStream in)
java.lang.String
select(double number)
Given a floating-point number, returns the keyword of the first rule that applies to the number.java.lang.String
select(double number, int countVisibleFractionDigits, long fractionaldigits)
Deprecated.This API is ICU internal only.java.lang.String
select(FormattedNumber number)
Given a formatted number, returns the keyword of the first rule that applies to the number.java.lang.String
select(FormattedNumberRange range)
Given a formatted number range, returns the overall plural form of the range.java.lang.String
select(PluralRules.IFixedDecimal number)
Deprecated.This API is ICU internal only.java.lang.String
toString()
private static java.text.ParseException
unexpected(java.lang.String token, java.lang.String context)
private void
writeObject(java.io.ObjectOutputStream out)
private java.lang.Object
writeReplace()
-
-
-
Field Detail
-
ALLOWED_ID
static final UnicodeSet ALLOWED_ID
-
CATEGORY_SEPARATOR
private static final java.lang.String CATEGORY_SEPARATOR
- See Also:
- Constant Field Values
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
rules
private final PluralRules.RuleList rules
-
keywords
private final transient java.util.Set<java.lang.String> keywords
-
standardPluralRanges
private final transient StandardPluralRanges standardPluralRanges
-
KEYWORD_ZERO
public static final java.lang.String KEYWORD_ZERO
Common name for the 'zero' plural form.- See Also:
- Constant Field Values
-
KEYWORD_ONE
public static final java.lang.String KEYWORD_ONE
Common name for the 'singular' plural form.- See Also:
- Constant Field Values
-
KEYWORD_TWO
public static final java.lang.String KEYWORD_TWO
Common name for the 'dual' plural form.- See Also:
- Constant Field Values
-
KEYWORD_FEW
public static final java.lang.String KEYWORD_FEW
Common name for the 'paucal' or other special plural form.- See Also:
- Constant Field Values
-
KEYWORD_MANY
public static final java.lang.String KEYWORD_MANY
Common name for the arabic (11 to 99) plural form.- See Also:
- Constant Field Values
-
KEYWORD_OTHER
public static final java.lang.String KEYWORD_OTHER
Common name for the default plural form. This name is returned for values to which no other form in the rule applies. It can additionally be assigned rules of its own.- See Also:
- Constant Field Values
-
NO_UNIQUE_VALUE
public static final double NO_UNIQUE_VALUE
Value returned bygetUniqueKeywordValue(java.lang.String)
when there is no unique value to return.- See Also:
- Constant Field Values
-
NO_UNIQUE_VALUE_DECIMAL_QUANTITY
@Deprecated public static final DecimalQuantity NO_UNIQUE_VALUE_DECIMAL_QUANTITY
Deprecated.This API is ICU internal only.Value returned bygetUniqueKeywordDecimalQuantityValue(java.lang.String)
when there is no unique value to return.
-
NO_CONSTRAINT
private static final PluralRules.Constraint NO_CONSTRAINT
-
DEFAULT_RULE
private static final PluralRules.Rule DEFAULT_RULE
-
DEFAULT
public static final PluralRules DEFAULT
The default rules that accept any number and returnKEYWORD_OTHER
.
-
AT_SEPARATED
static final java.util.regex.Pattern AT_SEPARATED
-
OR_SEPARATED
static final java.util.regex.Pattern OR_SEPARATED
-
AND_SEPARATED
static final java.util.regex.Pattern AND_SEPARATED
-
COMMA_SEPARATED
static final java.util.regex.Pattern COMMA_SEPARATED
-
DOTDOT_SEPARATED
static final java.util.regex.Pattern DOTDOT_SEPARATED
-
TILDE_SEPARATED
static final java.util.regex.Pattern TILDE_SEPARATED
-
SEMI_SEPARATED
static final java.util.regex.Pattern SEMI_SEPARATED
-
-
Constructor Detail
-
PluralRules
private PluralRules(PluralRules.RuleList rules, StandardPluralRanges standardPluralRanges)
-
-
Method Detail
-
parseDescription
public static PluralRules parseDescription(java.lang.String description) throws java.text.ParseException
Parses a plural rules description and returns a PluralRules.- Parameters:
description
- the rule description.- Throws:
java.text.ParseException
- if the description cannot be parsed. The exception index is typically not set, it will be -1.
-
createRules
public static PluralRules createRules(java.lang.String description)
Creates a PluralRules from a description if it is parsable, otherwise returns null.- Parameters:
description
- the rule description.- Returns:
- the PluralRules
-
newInternal
@Deprecated public static PluralRules newInternal(java.lang.String description, StandardPluralRanges ranges) throws java.text.ParseException
Deprecated.This API is ICU internal only.- Throws:
java.text.ParseException
-
parseConstraint
private static PluralRules.Constraint parseConstraint(java.lang.String description) throws java.text.ParseException
- Throws:
java.text.ParseException
-
unexpected
private static java.text.ParseException unexpected(java.lang.String token, java.lang.String context)
-
nextToken
private static java.lang.String nextToken(java.lang.String[] tokens, int x, java.lang.String context) throws java.text.ParseException
- Throws:
java.text.ParseException
-
parseRule
private static PluralRules.Rule parseRule(java.lang.String description) throws java.text.ParseException
- Throws:
java.text.ParseException
-
parseRuleChain
private static PluralRules.RuleList parseRuleChain(java.lang.String description) throws java.text.ParseException
- Throws:
java.text.ParseException
-
addRange
private static void addRange(java.lang.StringBuilder result, double lb, double ub, boolean addSeparator)
-
format
private static java.lang.String format(double lb)
-
addConditional
private boolean addConditional(java.util.Set<PluralRules.IFixedDecimal> toAddTo, java.util.Set<PluralRules.IFixedDecimal> others, double trial)
-
forLocale
public static PluralRules forLocale(ULocale locale)
Provides access to the predefined cardinal-numberPluralRules
for a given locale. Same as forLocale(locale, PluralType.CARDINAL).ICU defines plural rules for many locales based on CLDR Language Plural Rules. For these predefined rules, see CLDR page at https://unicode-org.github.io/cldr-staging/charts/latest/supplemental/language_plural_rules.html
- Parameters:
locale
- The locale for which aPluralRules
object is returned.- Returns:
- The predefined
PluralRules
object for this locale. If there's no predefined rules for this locale, the rules for the closest parent in the locale hierarchy that has one will be returned. The final fallback always returns the default rules.
-
forLocale
public static PluralRules forLocale(java.util.Locale locale)
Provides access to the predefined cardinal-numberPluralRules
for a givenLocale
. Same as forLocale(locale, PluralType.CARDINAL).ICU defines plural rules for many locales based on CLDR Language Plural Rules. For these predefined rules, see CLDR page at https://unicode-org.github.io/cldr-staging/charts/latest/supplemental/language_plural_rules.html
- Parameters:
locale
- The locale for which aPluralRules
object is returned.- Returns:
- The predefined
PluralRules
object for this locale. If there's no predefined rules for this locale, the rules for the closest parent in the locale hierarchy that has one will be returned. The final fallback always returns the default rules.
-
forLocale
public static PluralRules forLocale(ULocale locale, PluralRules.PluralType type)
Provides access to the predefinedPluralRules
for a given locale and the plural type.ICU defines plural rules for many locales based on CLDR Language Plural Rules. For these predefined rules, see CLDR page at https://unicode-org.github.io/cldr-staging/charts/latest/supplemental/language_plural_rules.html
- Parameters:
locale
- The locale for which aPluralRules
object is returned.type
- The plural type (e.g., cardinal or ordinal).- Returns:
- The predefined
PluralRules
object for this locale. If there's no predefined rules for this locale, the rules for the closest parent in the locale hierarchy that has one will be returned. The final fallback always returns the default rules.
-
forLocale
public static PluralRules forLocale(java.util.Locale locale, PluralRules.PluralType type)
Provides access to the predefinedPluralRules
for a givenLocale
and the plural type.ICU defines plural rules for many locales based on CLDR Language Plural Rules. For these predefined rules, see CLDR page at https://unicode-org.github.io/cldr-staging/charts/latest/supplemental/language_plural_rules.html
- Parameters:
locale
- The locale for which aPluralRules
object is returned.type
- The plural type (e.g., cardinal or ordinal).- Returns:
- The predefined
PluralRules
object for this locale. If there's no predefined rules for this locale, the rules for the closest parent in the locale hierarchy that has one will be returned. The final fallback always returns the default rules.
-
isValidKeyword
private static boolean isValidKeyword(java.lang.String token)
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
select
public java.lang.String select(double number)
Given a floating-point number, returns the keyword of the first rule that applies to the number.- Parameters:
number
- The number for which the rule has to be determined.- Returns:
- The keyword of the selected rule.
-
select
public java.lang.String select(FormattedNumber number)
Given a formatted number, returns the keyword of the first rule that applies to the number. A FormattedNumber allows you to specify an exponent or trailing zeros, which can affect the plural category. To get a FormattedNumber, seeNumberFormatter
.- Parameters:
number
- The number for which the rule has to be determined.- Returns:
- The keyword of the selected rule.
-
select
public java.lang.String select(FormattedNumberRange range)
Given a formatted number range, returns the overall plural form of the range. For example, "3-5" returns "other" in English. To get a FormattedNumberRange, seeNumberRangeFormatter
. This method only works if PluralRules was created with a locale. If it was created from PluralRules.createRules(), or if it was deserialized, this method throws UnsupportedOperationException.- Parameters:
range
- The number range onto which the rules will be applied.- Returns:
- The keyword of the selected rule.
- Throws:
java.lang.UnsupportedOperationException
- If called on an instance without plural ranges data.
-
select
@Deprecated public java.lang.String select(double number, int countVisibleFractionDigits, long fractionaldigits)
Deprecated.This API is ICU internal only.Given a number, returns the keyword of the first rule that applies to the number.- Parameters:
number
- The number for which the rule has to be determined.- Returns:
- The keyword of the selected rule.
-
select
@Deprecated public java.lang.String select(PluralRules.IFixedDecimal number)
Deprecated.This API is ICU internal only.Given a number information, returns the keyword of the first rule that applies to the number.- Parameters:
number
- The number information for which the rule has to be determined.- Returns:
- The keyword of the selected rule.
-
matches
@Deprecated public boolean matches(PluralRules.FixedDecimal sample, java.lang.String keyword)
Deprecated.This API is ICU internal only.Given a number information, and keyword, return whether the keyword would match the number.- Parameters:
sample
- The number information for which the rule has to be determined.keyword
- The keyword to filter on
-
getKeywords
public java.util.Set<java.lang.String> getKeywords()
Returns a set of all rule keywords used in thisPluralRules
object. The rule "other" is always present by default.- Returns:
- The set of keywords.
-
getUniqueKeywordValue
public double getUniqueKeywordValue(java.lang.String keyword)
Returns the unique value that this keyword matches, orNO_UNIQUE_VALUE
if the keyword matches multiple values or is not defined for this PluralRules.- Parameters:
keyword
- the keyword to check for a unique value- Returns:
- The unique value for the keyword, or NO_UNIQUE_VALUE.
-
getUniqueKeywordDecimalQuantityValue
@Deprecated public DecimalQuantity getUniqueKeywordDecimalQuantityValue(java.lang.String keyword)
Deprecated.This API is ICU internal only.Returns the unique value that this keyword matches, orNO_UNIQUE_VALUE
if the keyword matches multiple values or is not defined for this PluralRules.- Parameters:
keyword
- the keyword to check for a unique value
-
getAllKeywordValues
public java.util.Collection<java.lang.Double> getAllKeywordValues(java.lang.String keyword)
Returns all the values that trigger this keyword, or null if the number of such values is unlimited.- Parameters:
keyword
- the keyword- Returns:
- the values that trigger this keyword, or null. The returned collection is immutable. It will be empty if the keyword is not defined.
-
getAllKeywordDecimalQuantityValues
@Deprecated public java.util.Collection<DecimalQuantity> getAllKeywordDecimalQuantityValues(java.lang.String keyword)
Deprecated.This API is ICU internal only.Returns all the values that trigger this keyword, or null if the number of such values is unlimited.- Parameters:
keyword
- the keyword- Returns:
- the values that trigger this keyword, or null. The returned collection is immutable. It will be empty if the keyword is not defined.
-
getAllKeywordValues
@Deprecated public java.util.Collection<DecimalQuantity> getAllKeywordValues(java.lang.String keyword, PluralRules.SampleType type)
Deprecated.This API is ICU internal only.Returns all the values that trigger this keyword, or null if the number of such values is unlimited.- Parameters:
keyword
- the keywordtype
- the type of samples requested, INTEGER or DECIMAL- Returns:
- the values that trigger this keyword, or null. The returned collection is immutable. It will be empty if the keyword is not defined.
-
getSamples
public java.util.Collection<java.lang.Double> getSamples(java.lang.String keyword)
Returns a list of integer values for which select() would return that keyword, or null if the keyword is not defined. The returned collection is unmodifiable. The returned list is not complete, and there might be additional values that would return the keyword.- Parameters:
keyword
- the keyword to test- Returns:
- a list of values matching the keyword.
-
getDecimalQuantitySamples
@Deprecated public java.util.Collection<DecimalQuantity> getDecimalQuantitySamples(java.lang.String keyword)
Deprecated.ICU internal onlyReturns a list of integer values for which select() would return that keyword, or null if the keyword is not defined. The returned collection is unmodifiable. The returned list is not complete, and there might be additional values that would return the keyword.- Parameters:
keyword
- the keyword to test- Returns:
- a list of values matching the keyword.
-
getSamples
@Deprecated public java.util.Collection<java.lang.Double> getSamples(java.lang.String keyword, PluralRules.SampleType sampleType)
Deprecated.ICU internal onlyReturns a list of values for which select() would return that keyword, or null if the keyword is not defined. The returned collection is unmodifiable. The returned list is not complete, and there might be additional values that would return the keyword. The keyword might be defined, and yet have an empty set of samples, IF there are samples for the other sampleType.- Parameters:
keyword
- the keyword to testsampleType
- the type of samples requested, INTEGER or DECIMAL- Returns:
- a list of values matching the keyword.
-
getDecimalQuantitySamples
@Deprecated public java.util.Collection<DecimalQuantity> getDecimalQuantitySamples(java.lang.String keyword, PluralRules.SampleType sampleType)
Deprecated.ICU internal onlyReturns a list of values for which select() would return that keyword, or null if the keyword is not defined. The returned collection is unmodifiable. The returned list is not complete, and there might be additional values that would return the keyword. The keyword might be defined, and yet have an empty set of samples, IF there are samples for the other sampleType.- Parameters:
keyword
- the keyword to testsampleType
- the type of samples requested, INTEGER or DECIMAL- Returns:
- a list of values matching the keyword.
-
addSample
private boolean addSample(java.lang.String keyword, DecimalQuantity sample, int maxCount, java.util.Set<DecimalQuantity> result)
-
getDecimalSamples
@Deprecated public PluralRules.DecimalQuantitySamples getDecimalSamples(java.lang.String keyword, PluralRules.SampleType sampleType)
Deprecated.This API is ICU internal only.Returns a list of values for which select() would return that keyword, or null if the keyword is not defined or no samples are available. The returned collection is unmodifiable. The returned list is not complete, and there might be additional values that would return the keyword.- Parameters:
keyword
- the keyword to testsampleType
- the type of samples requested, INTEGER or DECIMAL- Returns:
- a list of values matching the keyword.
-
getAvailableULocales
public static ULocale[] getAvailableULocales()
Returns the set of locales for which PluralRules are known.- Returns:
- the set of locales for which PluralRules are known, as a list
-
getFunctionalEquivalent
public static ULocale getFunctionalEquivalent(ULocale locale, boolean[] isAvailable)
Returns the 'functionally equivalent' locale with respect to plural rules. Calling PluralRules.forLocale with the functionally equivalent locale, and with the provided locale, returns rules that behave the same.
All locales with the same functionally equivalent locale have plural rules that behave the same. This is not exhaustive; there may be other locales whose plural rules behave the same that do not have the same equivalent locale.- Parameters:
locale
- the locale to checkisAvailable
- if not null and of length > 0, this will hold 'true' at index 0 if locale is directly defined (without fallback) as having plural rules- Returns:
- the functionally-equivalent locale
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object rhs)
- Overrides:
equals
in classjava.lang.Object
-
equals
public boolean equals(PluralRules rhs)
Returns true if rhs is equal to this.- Parameters:
rhs
- the PluralRules to compare to.- Returns:
- true if this and rhs are equal.
-
getKeywordStatus
public PluralRules.KeywordStatus getKeywordStatus(java.lang.String keyword, int offset, java.util.Set<DecimalQuantity> explicits, Output<DecimalQuantity> uniqueValue)
Find the status for the keyword, given a certain set of explicit values.- Parameters:
keyword
- the particular keyword (call rules.getKeywords() to get the valid ones)offset
- the offset used, or 0.0d if not. Internally, the offset is subtracted from each explicit value before checking against the keyword values.explicits
- a set ofDecimalQuantity
s that are used explicitly (eg [=0], "[=1]"). May be empty or null.uniqueValue
- If non null, set to the unique value.- Returns:
- the KeywordStatus
-
getKeywordStatus
@Deprecated public PluralRules.KeywordStatus getKeywordStatus(java.lang.String keyword, int offset, java.util.Set<DecimalQuantity> explicits, Output<DecimalQuantity> uniqueValue, PluralRules.SampleType sampleType)
Deprecated.This API is ICU internal only.Find the status for the keyword, given a certain set of explicit values.- Parameters:
keyword
- the particular keyword (call rules.getKeywords() to get the valid ones)offset
- the offset used, or 0.0d if not. Internally, the offset is subtracted from each explicit value before checking against the keyword values.explicits
- a set ofDecimalQuantity
s that are used explicitly (eg [=0], "[=1]"). May be empty or null.sampleType
- request KeywordStatus relative to INTEGER or DECIMAL valuesuniqueValue
- If non null, set to the unique value.- Returns:
- the KeywordStatus
-
getRules
@Deprecated public java.lang.String getRules(java.lang.String keyword)
Deprecated.This API is ICU internal only.
-
writeObject
private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException
- Throws:
java.io.IOException
-
readObject
private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException
- Throws:
java.io.IOException
java.lang.ClassNotFoundException
-
writeReplace
private java.lang.Object writeReplace() throws java.io.ObjectStreamException
- Throws:
java.io.ObjectStreamException
-
compareTo
@Deprecated public int compareTo(PluralRules other)
Deprecated.internal
-
isLimited
java.lang.Boolean isLimited(java.lang.String keyword)
-
isLimited
@Deprecated public boolean isLimited(java.lang.String keyword, PluralRules.SampleType sampleType)
Deprecated.internal
-
computeLimited
@Deprecated public boolean computeLimited(java.lang.String keyword, PluralRules.SampleType sampleType)
Deprecated.internal
-
-