Bagikan melalui


Globalisasi format tanggal/waktu/angka Anda

Desain aplikasi Anda agar siap secara global dengan memformat tanggal, waktu, nomor, nomor telepon, dan mata uang dengan tepat. Anda kemudian akan dapat menyesuaikan aplikasi Anda untuk budaya, wilayah, dan bahasa tambahan di pasar global.

Pendahuluan

Saat membuat aplikasi, jika Anda berpikir lebih luas daripada satu bahasa dan budaya, Anda akan memiliki lebih sedikit (jika ada) masalah tak terduga saat aplikasi Anda tumbuh ke pasar baru. Misalnya, tanggal, waktu, angka, kalender, mata uang, nomor telepon, satuan pengukuran, dan ukuran kertas adalah semua item yang dapat ditampilkan secara berbeda dalam budaya atau bahasa yang berbeda.

Wilayah dan budaya yang berbeda menggunakan format tanggal dan waktu yang berbeda. Ini termasuk konvensi untuk urutan hari dan bulan dalam tanggal, untuk pemisahan jam dan menit dalam waktu, dan bahkan untuk tanda baca apa yang digunakan sebagai pemisah. Selain itu, tanggal dapat ditampilkan dalam berbagai format panjang ("Rabu, 28 Maret 2012") atau format pendek ("28/3/12"), yang bervariasi di seluruh budaya. Dan, tentu saja, nama dan singkatan untuk hari-hari dalam seminggu dan bulan dalam setahun berbeda antara bahasa.

Anda dapat mempratinjau format yang digunakan untuk bahasa yang berbeda. Buka Pengaturan> Waktu &bahasa>& bahasa, dan klik Tanggal, waktu, & pengaturan>regional Ubah format tanggal, waktu, atau angka. Pada tab Format , pilih bahasa dari menu drop-down Format dan pratinjau format dalam Contoh.

Topik ini menggunakan istilah "daftar bahasa profil pengguna", "daftar bahasa manifes aplikasi", dan "daftar bahasa runtime aplikasi". Untuk detail tentang apa arti istilah tersebut dan cara mengakses nilainya, lihat Memahami bahasa profil pengguna dan bahasa manifes aplikasi.

Memformat tanggal dan waktu untuk daftar bahasa runtime aplikasi

Jika Anda perlu mengizinkan pengguna memilih tanggal, atau memilih waktu, gunakan kontrol kalender, tanggal, dan waktu standar. Ini secara otomatis menggunakan format tanggal dan waktu terbaik untuk daftar bahasa runtime aplikasi.

Jika Anda perlu menampilkan tanggal atau waktu sendiri maka Anda dapat menggunakan kelas DateTimeFormatter. Secara default, DateTimeFormatter secara otomatis menggunakan format tanggal dan waktu terbaik untuk daftar bahasa runtime aplikasi. Jadi, kode di bawah ini memformat DateTime tertentu dengan cara terbaik untuk daftar tersebut. Sebagai contoh, asumsikan bahwa daftar bahasa manifes aplikasi Anda menyertakan bahasa Inggris (Amerika Serikat), yang juga merupakan default Anda, dan Jerman (Jerman). Jika tanggal saat ini adalah 6 Nov 2017 dan daftar bahasa profil pengguna berisi bahasa Jerman (Jerman) terlebih dahulu, maka formatter memberikan "06.11.2017". Jika daftar bahasa profil pengguna berisi bahasa Inggris (Amerika Serikat) terlebih dahulu (atau jika tidak berisi bahasa Inggris atau Jerman), formatter memberikan "6/11/2017" (karena "en-US" cocok, atau digunakan sebagai default).

    // Use the DateTimeFormatter class to display dates and times using basic formatters.

    var shortDateFormatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("shortdate");
    var shortTimeFormatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("shorttime");

    var dateTimeToFormat = DateTime.Now;

    var shortDate = shortDateFormatter.Format(dateTimeToFormat);
    var shortTime = shortTimeFormatter.Format(dateTimeToFormat);

    var results = "Short Date: " + shortDate + "\n" +
                  "Short Time: " + shortTime;

Anda dapat menguji kode di atas pada PC Anda sendiri seperti ini.

Format tanggal dan waktu untuk daftar bahasa profil pengguna

Ingat bahwa, secara default, DateTimeFormatter cocok dengan daftar bahasa runtime aplikasi. Dengan begitu, jika Anda menampilkan string seperti "Tanggal adalah <tanggal>", maka bahasa akan cocok dengan format tanggal.

Jika karena alasan apa pun Anda ingin memformat tanggal dan/atau waktu hanya sesuai dengan daftar bahasa profil pengguna, maka Anda dapat melakukannya menggunakan kode seperti contoh di bawah ini. Tetapi jika Anda melakukannya, pahami bahwa pengguna dapat memilih bahasa yang aplikasi Anda tidak memiliki string yang diterjemahkan. Misalnya, jika aplikasi Anda tidak dilokalkan ke dalam bahasa Jerman (Jerman), tetapi pengguna memilihnya sebagai bahasa pilihan mereka, maka itu dapat mengakibatkan tampilan string yang terlihat aneh seperti "Tanggalnya adalah 06.11.2017".

    // Use the DateTimeFormatter class to display dates and times using basic formatters.

    var userLanguages = Windows.System.UserProfile.GlobalizationPreferences.Languages;

    var shortDateFormatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("shortdate", userLanguages);

    var results = "Short Date: " + shortDateFormatter.Format(DateTime.Now);

Memformat angka dan mata uang dengan tepat

Budaya yang berbeda memformat angka secara berbeda. Perbedaan format dapat mencakup berapa banyak digit desimal yang akan ditampilkan, karakter apa yang akan digunakan sebagai pemisah desimal, dan simbol mata uang apa yang akan digunakan. Gunakan kelas di namespace NumberFormatting untuk menampilkan angka desimal, persen, atau permille, dan mata uang. Sebagian besar waktu, Anda akan ingin kelas formatter ini menggunakan format terbaik untuk profil pengguna. Tetapi Anda dapat menggunakan formatter untuk menampilkan mata uang untuk wilayah atau format apa pun.

Contoh ini menunjukkan cara menampilkan mata uang per profil pengguna, dan untuk sistem mata uang tertentu.

    // This scenario uses the CurrencyFormatter class to format a number as a currency.

    var userCurrency = Windows.System.UserProfile.GlobalizationPreferences.Currencies[0];

    var valueToBeFormatted = 12345.67;

    var userCurrencyFormatter = new Windows.Globalization.NumberFormatting.CurrencyFormatter(userCurrency);
    var userCurrencyValue = userCurrencyFormatter.Format(valueToBeFormatted);

    // Create a formatter initialized to a specific currency,
    // in this case US Dollar (specified as an ISO 4217 code) 
    // but with the default number formatting for the current user.
    var currencyFormatUSD = new Windows.Globalization.NumberFormatting.CurrencyFormatter("USD");
    var currencyValueUSD = currencyFormatUSD.Format(valueToBeFormatted);

    // Create a formatter initialized to a specific currency.
    // In this case it's the Euro with the default number formatting for France.
    var currencyFormatEuroFR = new Windows.Globalization.NumberFormatting.CurrencyFormatter("EUR", new[] { "fr-FR" }, "FR");
    var currencyValueEuroFR = currencyFormatEuroFR.Format(valueToBeFormatted);

    // Results for display.
    var results = "Fixed number (" + valueToBeFormatted + ")\n" +
                    "With user's default currency: " + userCurrencyValue + "\n" +
                    "Formatted US Dollar: " + currencyValueUSD + "\n" +
                    "Formatted Euro (fr-FR defaults): " + currencyValueEuroFR;

Anda dapat menguji kode di atas pada PC Anda sendiri dengan mengubah negara atau wilayah di Pengaturan> Time &Language>Region &language>Country atau region. Pilih negara atau wilayah (mungkin Islandia), dan jalankan kode lagi.

Menggunakan kalender yang sesuai budaya

Kalender berbeda di seluruh wilayah dan bahasa. Kalender Gregorian bukan default untuk setiap wilayah. Pengguna di beberapa wilayah dapat memilih kalender alternatif, seperti kalender era Jepang, atau kalender bulan Arab. Tanggal dan waktu pada kalender juga sensitif terhadap zona waktu yang berbeda dan waktu musim panas.

Untuk memastikan bahwa format kalender pilihan digunakan, Anda bisa menggunakan kontrol kalender, tanggal, dan waktu standar. Untuk skenario yang lebih kompleks, di mana bekerja langsung dengan operasi pada tanggal kalender mungkin diperlukan, Windows.Globalization menyediakan kelas Kalender yang memberikan representasi kalender yang sesuai untuk budaya, wilayah, dan jenis kalender tertentu.

Memformat nomor telepon dengan tepat

Telepon angka diformat secara berbeda di seluruh wilayah. Jumlah digit, bagaimana digit dikelompokkan, dan signifikansi bagian tertentu dari nomor telepon bervariasi antar negara. Mulai dari Windows 10, versi 1607, Anda dapat menggunakan kelas di namespace layanan Telepon NumberFormatting untuk memformat nomor telepon dengan tepat untuk wilayah saat ini.

Telepon NumberInfo mengurai string digit dan memungkinkan Anda untuk: menentukan apakah digit adalah nomor telepon yang valid di wilayah saat ini; membandingkan dua angka untuk kesetaraan; dan untuk mengekstrak berbagai bagian fungsional dari nomor telepon, seperti kode negara atau kode area geografis.

Telepon NumberFormatter memformat string digit atau Telepon NumberInfo untuk ditampilkan, bahkan ketika string digit mewakili nomor telepon parsial. Anda dapat menggunakan pemformatan nomor parsial ini untuk memformat angka saat pengguna memasukkan angka.

Contoh di bawah ini menunjukkan cara menggunakan Telepon NumberFormatter untuk memformat nomor telepon saat dimasukkan. Setiap kali teks berubah dalam Kotak Teks bernama phoneNumberInputTextBox, konten kotak teks diformat menggunakan wilayah default saat ini dan ditampilkan dalam TextBlock bernama phoneNumberOutputTextBlock. Untuk tujuan demonstrasi, string juga diformat menggunakan wilayah untuk Selandia Baru, dan ditampilkan dalam TextBlock bernama phoneNumberOutputTextBlockNZ.

    using Windows.Globalization.PhoneNumberFormatting;

    PhoneNumberFormatter currentFormatter, NZFormatter;

    public MainPage()
    {
        this.InitializeComponent();

        // Use the default formatter for the current region
        this.currentFormatter = new PhoneNumberFormatter();

        // Create an explicit formatter for New Zealand. 
        PhoneNumberFormatter.TryCreate("NZ", out this.NZFormatter);
    }

    private void phoneNumberInputTextBox_TextChanged(object sender, TextChangedEventArgs e)
    {
        // Format for the default region.
        this.phoneNumberOutputTextBlock.Text = currentFormatter.FormatPartialString(this.phoneNumberInputTextBox.Text);

        // If the NZFormatter was created successfully, format the partial string for the NZ TextBlock.
        if(this.NZFormatter != null)
        {
            this.phoneNumberOutputTextBlockNZ.Text = this.NZFormatter.FormatPartialString(this.phoneNumberInputTextBox.Text);
        }
    }

Anda dapat menguji kode di atas pada PC Anda sendiri dengan mengubah negara atau wilayah di Pengaturan> Time &Language>Region &language>Country atau region. Pilih negara atau wilayah (mungkin Selandia Baru untuk mengonfirmasi bahwa format cocok), dan jalankan kode lagi. Untuk data pengujian, Anda dapat melakukan pencarian web untuk nomor telepon bisnis di Selandia Baru.

Preferensi bahasa dan budaya pengguna

Untuk skenario di mana Anda ingin menyediakan fungsionalitas yang berbeda hanya berdasarkan pada preferensi bahasa, wilayah, atau budaya pengguna, Windows memberi Anda cara untuk mengakses preferensi tersebut, melalui Windows.System.UserProfile.GlobalizationPreferences. Jika diperlukan, gunakan kelas GlobalizationPreferences untuk mendapatkan nilai wilayah geografis pengguna saat ini, bahasa pilihan, mata uang pilihan, dan sebagainya. Tetapi ingat bahwa jika string/gambar aplikasi Anda tidak dilokalkan untuk bahasa pilihan pengguna, maka tanggal dan waktu dan data lain yang diformat untuk bahasa pilihan tersebut tidak akan cocok dengan string yang Anda tampilkan.

API penting

Sampel