android — Форматирование адреса на основе локали в Android" />

Форматирование адреса на основе локали в Android

Привет, в моем приложении мне нужно отобразить адрес ввода в соответствии с языком, установленным пользователем. Кто-нибудь работал или форматировал адреса, или имеет какие-нибудь указатели на платформе Android.

7 голосов | спросил shailbenq 30 J0000006Europe/Moscow 2012, 01:25:04

2 ответа


0

Ознакомьтесь с googlei18n /libaddressinput: библиотекой почтовых адресов Google, включающей Android и Chromium . В проекте два модуля: android и: 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 для списка форматов, если вам интересно.)

  

Устанавливает двухбуквенный код региона CLDR адреса; увидеть   AddressData # getPostalCountry (). В отличие от других значений, переданных   строитель, код региона никогда не может быть нулевым.

Пример: США

  

801 CHESTNUT ST   
ST. ЛУИ, МО 63101

Пример: JP

  

〒1600023   
NishiShinjuku   
3-2-11 НИШИШИНДЖУКУ СИНДЖУКУ-КУ ТОКИО

ответил Funktional 3 SatEurope/Moscow2016-12-03T10:58:23+03:00Europe/Moscow12bEurope/MoscowSat, 03 Dec 2016 10:58:23 +0300 2016, 10:58:23
0

Я сделал немало локализации на других платформах. Вот руководство по локализации для Android: http://developer.android .com /гид /темы /ресурсы /localization.html # с использованием-рамка

Один из подходов заключается в использовании локализованных ресурсов для хранения строк MessageFormat, которые соответствуют макету адреса для каждой локали, которую вы хотите. Оттуда вам понадобится ссылка на глобальные стандарты блоков адресов и создать строки формата для каждой локали, которая вам нужна.

ответил James 30 J0000006Europe/Moscow 2012, 01:38:24

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132