7

嗨,在我的应用程序中,我需要根据用户设置的语言环境显示输入地址。有没有人在Android平台上工作或地址格式或有任何指针。

4

2 回答 2

6

查看googlei18n/libaddressinput:Google 的邮政地址库,为 Android 和 Chromium 提供支持。项目中有两个模块:android 和 :common。您应该只需要 :common 来格式化地址以显示区域设置。

import android.location.Address;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import com.google.i18n.addressinput.common.AddressData;
import com.google.i18n.addressinput.common.FormOptions;
import com.google.i18n.addressinput.common.FormatInterpreter;
...
public static String getFormattedAddress(@NonNull final Address address, 
                                         @NonNull final String regionCode) {
    final FormatInterpreter formatInterpreter
            = new FormatInterpreter(new FormOptions().createSnapshot());
    final AddressData addressData = (new AddressData.Builder()
            .setAddress(address.getThoroughfare())
            .setLocality(address.getLocality())
            .setAdminArea(address.getAdminArea())
            .setPostalCode(address.getPostalCode())
            .setCountry(regionCode) // REQUIRED
            .build());
    // Fetch the address lines using getEnvelopeAddress,
    List<String> addressFragments = formatInterpreter.getEnvelopeAddress(addressData);
    // join them, and send them to the thread.
    return TextUtils.join(System.getProperty("line.separator"),
            addressFragments);
}

注意:regionCode 必须是有效的 iso2 国家代码,因为这是格式解释器从中提取地址格式的地方。(如果您好奇,请参阅RegionDataConstants以获取格式列表。)

设置地址的 2 字母 CLDR 区域代码;请参阅地址数据#getPostalCountry()。与传递给构建器的其他值不同,区域代码永远不能为空。

示例:美国

801 栗子街
ST。密苏里州路易斯 63101

示例:JP

〒1600023
NISHISHINJUKU
3-2-11 NISHISHINJUKU SHINJUKU-KU TOKYO

于 2016-12-03T07:58:23.993 回答
-1

我在其他平台上做了相当多的本地化。以下是 Android 本地化指南:http: //developer.android.com/guide/topics/resources/localization.html#using-framework

一种方法是使用本地化资源来存储与您想要的每个语言环境的地址布局相对应的 MessageFormat 字符串。从那里,您需要参考全球地址块标准,并为您需要的每个语言环境创建格式字符串。

于 2012-06-29T21:38:24.387 回答