0
点赞
收藏
分享

微信扫一扫

android 匈牙利语环境下,联系人的姓名顺序颠倒


联系人姓名由prefix / given name / middle name / family name / suffix组成。世界各地对于姓名显示的顺利是不同的。
例如中国习惯是:family name +  middle name + given name
     西方习惯是:given name + middle name + family name
Google定义了这几种类型:
FullNameStyle.UNDEFINED  //未定义
FullNameStyle.CHINESE   //中国
FullNameStyle.KOREAN     //韩国
FullNameStyle.JAPANESE   //日本
FullNameStyle.CJK     //中日韩之一
FullNameStyle.WESTERN    //西方
      匈牙利这个国家比较特殊,按照传统观念是属于西方的,但是姓名显示习惯却是family name +  given name + middle name
 [SOLUTION]
1、请先保证有添加匈牙利语(请参考FAQ04326\FAQ03761)
2、修改DataRowHandlerForStructuredName.java (alps\packages\providers\contactsprovider\src\com\android\providers\contacts)
修改

public void fixStructuredNameComponents(ContentValues augmented, ContentValues update) {

final String unstruct = update.getAsString(StructuredName.DISPLAY_NAME);

final boolean touchedUnstruct = !TextUtils.isEmpty(unstruct);

final boolean touchedStruct = !areAllEmpty(update, STRUCTURED_FIELDS);

if (touchedUnstruct && !touchedStruct) {

NameSplitter.Name name = new NameSplitter.Name();

mSplitter.split(name, unstruct);

name.toValues(update);

} else if (!touchedUnstruct

&& (touchedStruct || areAnySpecified(update, STRUCTURED_FIELDS))) {

// We need to update the display name when any structured components

// are specified, even when they are null, which is why we are checking

// areAnySpecified. The touchedStruct in the condition is an optimization:

// if there are non-null values, we know for a fact that some values are present.

NameSplitter.Name name = new NameSplitter.Name();

name.fromValues(augmented);

// As the name could be changed, let's guess the name style again.

name.fullNameStyle = FullNameStyle.UNDEFINED;

mSplitter.guessNameStyle(name);

int unadjustedFullNameStyle = name.fullNameStyle;

name.fullNameStyle = mSplitter.getAdjustedFullNameStyle(name.fullNameStyle);



//XT and

//final String joined = mSplitter.join(name, true, true);

String mLanguage = mSplitter.getLanguage();

if ((name.fullNameStyle == FullNameStyle.UNDEFINED || name.fullNameStyle == FullNameStyle.WESTERN) && mLanguage.equals("hu")){

final String joined = mSplitter.join(name, false, true); //中间的参数为false,即为boolean givenNameFirst,决定是否givenName在最前面

}else{

final String joined = mSplitter.join(name, true, true);

}

//XT and end

update.put(StructuredName.DISPLAY_NAME, joined);

update.put(StructuredName.FULL_NAME_STYLE, unadjustedFullNameStyle);

update.put(StructuredName.PHONETIC_NAME_STYLE, name.phoneticNameStyle);

} else if (touchedUnstruct && touchedStruct){

if (!update.containsKey(StructuredName.FULL_NAME_STYLE)) {

update.put(StructuredName.FULL_NAME_STYLE,

mSplitter.guessFullNameStyle(unstruct));

}

if (!update.containsKey(StructuredName.PHONETIC_NAME_STYLE)) {

update.put(StructuredName.PHONETIC_NAME_STYLE,

mSplitter.guessPhoneticNameStyle(unstruct));

}

}

}


    
3、修改NameSplitter.java (alps\packages\providers\contactsprovider\src\com\android\providers\contacts)
新增函数

public String getLanguage(){

return mLanguage;

}

举报

相关推荐

0 条评论