public class SelectFormat
extends Format
java.lang.Object | ||
↳ | java.text.Format | |
↳ | android.icu.text.SelectFormat |
SelectFormat
支持通过基于关键词选择短语来创建国际化消息。 该模式指定如何将关键字映射到短语并提供默认短语。 提供给format方法的对象是一个与关键字匹配的字符串。 如果匹配,则选择相应的短语; 否则,使用默认短语。
SelectFormat
for Gender Agreement注意:通常,选择格式是通过 MessageFormat
与 select
参数类型完成的,而不是使用独立 SelectFormat
。
选择格式的主要用例是基于性别的变调。 当名字或名词插入句子时,其性别可以影响代词,动词形式,文章和形容词。 对于性别无法确定的情况,需要特别注意。 影响因语言而异:
一些其他语言的名词类别与性别无关,但在语法使用方面相似。 一些非洲语言有大约20个名词类。
注意:对于某个句子中某 个人的性别,我们通常只需要区分女性,男性和其他/未知。
为了使本地化人员能够创建将语言的性别依赖考虑在内的句子模式,软件必须提供关于与名词或名字相关的性别的信息MessageFormat
。 可以区分两种主要情况:
生成的关键字作为独立于与其关联的名称或名词的参数提供给MessageFormat
。 例如,要生成诸如“Jean去巴黎”的消息,将提供三个单独的论点:作为参数0的人的姓名,作为参数1的人的性别以及作为参数2的城市的名称。英语的句型,其中人的性别对这个简单的句子没有影响,根本不参考论点1:
{0} went to {2}.
注意:整个句子应该包含在每个短语中(并且部分重复)。 否则,译员将不得不接受关于如何将句子的位移入和移出消息的选择参数的培训。 (下面的例子不遵循这个建议!)
法语句子模式,其中人的性别影响分词形式,使用基于参数1的选择格式:
{0} est {1, select, female {allée} other {allé}} à {2}.
模式可以嵌套,以便在必要时处理数字和性别的交互。 例如,如果上面的句子应该允许插入几个人的姓名,那么可以使用以下句子模式(参数0是人名列表,参数1是人数,参数2是他们的组合性别,以及论点3城市名称):
{0} {1, plural, one {est {2, select, female {allée} other {allé}}} other {sont {2, select, female {allées} other {allés}}} }à {3}.
SelectFormat
模式字符串为每个用户定义的关键字定义短语输出。 该模式是(关键字,消息)对的序列。 关键字是“模式标识符”:[^ [[:Pattern_Syntax:] [:Pattern_White_Space:]]] +
每条消息都是一个用{大括号}括起来的MessageFormat模式字符串。
您总是必须为默认关键字other
定义一个短语; 当提供给format
方法的关键字不匹配其他关键字时,将返回此短语。 如果模式未提供other
的短语,则提供的方法将返回错误U_DEFAULT_KEYWORD_MISSING
。
关键字和消息之间的Pattern_White_Space被忽略。 消息内的Pattern_White_Space被保留并输出。
Example: MessageFormat msgFmt = new MessageFormat("{0} est " + "{1, select, female {allée} other {allé}} à Paris.", new ULocale("fr")); Object args[] = {"Kirti","female"}; System.out.println(msgFmt.format(args));
生成输出:
Kirti est allée à Paris.
Public constructors |
|
---|---|
SelectFormat(String pattern) 为给定的模式字符串创建一个新的 |
Public methods |
|
---|---|
void |
applyPattern(String pattern) 设置此选择格式使用的模式。 |
boolean |
equals(Object obj) 指示其他某个对象是否“等于”这一个。 |
StringBuffer |
format(Object keyword, StringBuffer toAppendTo, FieldPosition pos) 选择给定关键字的短语。 |
final String |
format(String keyword) 选择给定关键字的短语。 |
int |
hashCode() 返回对象的哈希码值。 |
Object |
parseObject(String source, ParsePosition pos)
|
String |
toPattern() 返回此 |
String |
toString() 返回对象的字符串表示形式。 |
Inherited methods |
|
---|---|
From class java.text.Format
|
|
From class java.lang.Object
|
SelectFormat (String pattern)
为给定的模式字符串创建一个新的 SelectFormat
。
Parameters | |
---|---|
pattern |
String : the pattern for this SelectFormat . |
void applyPattern (String pattern)
设置此选择格式使用的模式。 模板及其解释在类描述中指定。
Parameters | |
---|---|
pattern |
String : the pattern for this select format. |
Throws | |
---|---|
IllegalArgumentException |
when the pattern is not a valid select format pattern. |
boolean equals (Object obj)
指示其他某个对象是否“等于”这一个。
equals
方法在非空对象引用上实现等价关系:
x
, x.equals(x)
should return true
. x
and y
, x.equals(y)
should return true
if and only if y.equals(x)
returns true
. x
, y
, and z
, if x.equals(y)
returns true
and y.equals(z)
returns true
, then x.equals(z)
should return true
. x
and y
, multiple invocations of x.equals(y)
consistently return true
or consistently return false
, provided no information used in equals
comparisons on the objects is modified. x
, x.equals(null)
should return false
. 类Object
的equals
方法实现了对象上最可能的等价关系; 也就是说,对于任何非空参考值x
和y
,当且仅当x
和y
指向同一对象( x == y
的值为true
)时,此方法返回true
。
请注意,无论何时覆盖此方法,通常都需要覆盖 hashCode
方法,以便维护 hashCode
方法的一般合同,该方法声明等同对象必须具有相同的哈希代码。
Parameters | |
---|---|
obj |
Object : the reference object with which to compare. |
Returns | |
---|---|
boolean |
true if this object is the same as the obj argument; false otherwise. |
StringBuffer format (Object keyword, StringBuffer toAppendTo, FieldPosition pos)
选择给定关键字的短语。 并将格式化的消息追加到给定的StringBuffer
。
Parameters | |
---|---|
keyword |
Object : a phrase selection keyword. |
toAppendTo |
StringBuffer : the selected phrase will be appended to this StringBuffer . |
pos |
FieldPosition : will be ignored by this method. |
Returns | |
---|---|
StringBuffer |
the string buffer passed in as toAppendTo, with formatted text appended. |
Throws | |
---|---|
IllegalArgumentException |
when the given keyword is not a String or not a "pattern identifier" |
String format (String keyword)
选择给定关键字的短语。
Parameters | |
---|---|
keyword |
String : a phrase selection keyword. |
Returns | |
---|---|
String |
the string containing the formatted select message. |
Throws | |
---|---|
IllegalArgumentException |
when the given keyword is not a "pattern identifier" |
int hashCode ()
返回对象的哈希码值。 这种方法支持哈希表,如HashMap
提供的哈希表。
一般合同 hashCode
是:
hashCode
method must consistently return the same integer, provided no information used in equals
comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application. equals(Object)
method, then calling the hashCode
method on each of the two objects must produce the same integer result. equals(java.lang.Object)
method, then calling the hashCode
method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables. 尽可能合理实用,类Object
定义的hashCode方法确实为不同的对象返回不同的整数。 (这通常通过将对象的内部地址转换为整数来实现,但Java TM编程语言不需要此实现技术。)
Returns | |
---|---|
int |
a hash code value for this object. |
Object parseObject (String source, ParsePosition pos)
SelectFormat
不支持此方法。
Parameters | |
---|---|
source |
String : the string to be parsed. |
pos |
ParsePosition : defines the position where parsing is to begin, and upon return, the position where parsing left off. If the position has not changed upon return, then parsing failed. |
Returns | |
---|---|
Object |
nothing because this method is not supported. |
Throws | |
---|---|
UnsupportedOperationException |
thrown always. |
String toPattern ()
返回此 SelectFormat
的模式
Returns | |
---|---|
String |
the pattern string |
String toString ()
返回对象的字符串表示形式。 通常, toString
方法返回一个“文本表示”该对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。
类Object
的toString
方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @
”以及对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
Returns | |
---|---|
String |
a string representation of the object. |