Most visited

Recently visited

Added in API level 24

SelectFormat

public class SelectFormat
extends Format

java.lang.Object
   ↳ java.text.Format
     ↳ android.icu.text.SelectFormat


SelectFormat支持通过基于关键词选择短语来创建国际化消息。 该模式指定如何将关键字映射到短语并提供默认短语。 提供给format方法的对象是一个与关键字匹配的字符串。 如果匹配,则选择相应的短语; 否则,使用默认短语。

Using SelectFormat for Gender Agreement

注意:通常,选择格式是通过 MessageFormatselect参数类型完成的,而不是使用独立 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}.

Patterns and Their Interpretation

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.

Summary

Public constructors

SelectFormat(String pattern)

为给定的模式字符串创建一个新的 SelectFormat

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)

SelectFormat不支持此方法。

String toPattern()

返回此 SelectFormat的模式

String toString()

返回对象的字符串表示形式。

Inherited methods

From class java.text.Format
From class java.lang.Object

Public constructors

SelectFormat

Added in API level 24
SelectFormat (String pattern)

为给定的模式字符串创建一个新的 SelectFormat

Parameters
pattern String: the pattern for this SelectFormat.

Public methods

applyPattern

Added in API level 24
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.

equals

Added in API level 24
boolean equals (Object obj)

指示其他某个对象是否“等于”这一个。

equals方法在非空对象引用上实现等价关系:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values 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.
  • For any non-null reference value x, x.equals(null) should return false.

Objectequals方法实现了对象上最可能的等价关系; 也就是说,对于任何非空参考值xy ,当且仅当xy指向同一对象( 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.

format

Added in API level 24
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"

format

Added in API level 24
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"

hashCode

Added in API level 24
int hashCode ()

返回对象的哈希码值。 这种方法支持哈希表,如HashMap提供的哈希表。

一般合同 hashCode是:

  • Whenever it is invoked on the same object more than once during an execution of a Java application, the 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.
  • If two objects are equal according to the equals(Object) method, then calling the hashCode method on each of the two objects must produce the same integer result.
  • It is not required that if two objects are unequal according to the 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.

parseObject

Added in API level 24
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.

toPattern

Added in API level 24
String toPattern ()

返回此 SelectFormat的模式

Returns
String the pattern string

toString

Added in API level 24
String toString ()

返回对象的字符串表示形式。 通常, toString方法返回一个“文本表示”该对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。

ObjecttoString方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @ ”以及对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:

 getClass().getName() + '@' + Integer.toHexString(hashCode())
 

Returns
String a string representation of the object.

Hooray!