Memahami Internationalization di Java

Aug 20, 2024

Catatan Kuliah: Java Internationalization

Pendahuluan

  • Nama pengajar: Eko Kurniawan Kanedi
  • Pekerjaan saat ini: Technical Architect di e-commerce terbesar di Indonesia.
  • Pengalaman: Lebih dari 10 tahun dalam programming.
  • Sumber belajar: Website dan YouTube channel Programmer Jamanau.

Tujuan Kuliah

  • Memahami konsep Internationalization (I18N) dalam Java.
  • Materi ini diperuntukkan bagi yang sudah menguasai Java tingkat menengah ke atas.
  • Materi yang perlu dikuasai sebelum mengikuti kuliah ini:
    • Java Dasar
    • Java OOP
    • Standard Class
    • Generic Collection
    • Apache Maven
    • Unit Test

Agenda

  • Pembahasan Internationalization (I18N)
  • Local class
  • Resource bundle
  • Internationalization dalam date, number, currency
  • Message format

Pengertian Internationalization (I18N)

  • Proses membuat aplikasi yang dapat beradaptasi dengan bahasa dan lokasi pengguna tanpa mengubah kode program.
  • Contoh penggunaan:
    • Aplikasi dalam bahasa Indonesia untuk pengguna di Indonesia.
    • Aplikasi dalam bahasa Inggris untuk pengguna di Amerika.
  • Java mendukung I18N tanpa perlu library tambahan.

Karakteristik Aplikasi yang Mendukung I18N

  • Penambahan dukungan bahasa tanpa mengubah kode program.
  • Teks label disimpan di luar kode program dan diambil secara dinamis.
  • Mengikuti kultur lokasi pengguna (format tanggal, waktu, angka, mata uang).
  • Penambahan dukungan bahasa baru dapat dilakukan dengan cepat.

Konsep Lokal

  • Bahasa dan negara direpresentasikan dalam kelas Locale.
  • Menggunakan standar IETF BCP 47 untuk penulisan lokal.
  • Penulisan bahasa menggunakan ISO 639 Alpha 2 atau Alpha 3.
  • Penulisan negara menggunakan ISO 3166 Alpha 2.

Contoh Penulisan Lokal

  • Contoh:
    • Bahasa Indonesia: ID
    • Bahasa Inggris: EN
    • Bahasa Jepang: JA
  • Cara membuat objek Locale:
    Locale locale = new Locale("id", "ID");  
    
  • Metode untuk mengambil bahasa dan negara:
    • getLanguage()
    • getCountry()
    • getDisplayLanguage()
    • getDisplayCountry()

Resource Bundle

  • Kelas untuk menyimpan data yang dapat berubah sesuai dengan lokal yang dipilih.
  • Data disimpan dalam file properties.
  • Contoh pembuatan file properties:
    hello=hello  
    goodbye=goodbye  
    
  • Cara mengambil data menggunakan ResourceBundle:
    ResourceBundle bundle = ResourceBundle.getBundle("message");  
    String hello = bundle.getString("hello");  
    

Internationalization di Resource Bundle

  • Memerlukan file properties sesuai dengan lokal.
  • Contoh file: message_in_ID.properties untuk bahasa Indonesia.
  • Jika file lokal tidak ada, akan menggunakan file default message.properties.

Internationalization dalam Tipe Data Date

  • Kelas yang digunakan adalah SimpleDateFormat.
  • Mendukung pemformatan dan parsing tanggal.
  • Contoh pembuatan objek SimpleDateFormat:
    SimpleDateFormat sdf = new SimpleDateFormat("EEEE dd MMMM yyyy", Locale.forLanguageTag("id-ID"));  
    
  • Parsing dari string ke objek Date dan sebaliknya sudah didukung.

Contoh Penggunaan

  • Format tanggal:
    String formattedDate = sdf.format(new Date());  
    
  • Parsing string menjadi date:
    Date date = sdf.parse("Rabu 3 Maret 2021");  
    

Kesimpulan

  • Internationalization dalam Java memudahkan pembuatan aplikasi yang dapat beradaptasi dengan berbagai bahasa dan lokasi pengguna.
  • Kelas-kelas seperti Locale, ResourceBundle, dan SimpleDateFormat membantu dalam implementasi I18N.
  • Memungkinkan pengembang untuk menambahkan dukungan bahasa baru dengan cepat tanpa mengubah kode program yang ada.