Transcript for:
Memahami Internationalization di Java

Halo teman-teman, selamat datang di video tutorial Java Internationalization di mana di sini kita akan membahas salah satu fitur Java yang menarik yaitu tentang Internationalization. Oke, sebelum kita mulai kita akan kenalan dulu ya. Jadi nama saya adalah Eko Kurniawan Kanedi. Saat ini saya kerja sebagai Technical Architect di salah satu e-commerce terbesar di Indonesia. Saya sendiri sudah kerja lebih dari 10 tahun dan di sela-sela kesibukan saya biasanya saya menyempatkan diri untuk berbagi konten soal programming ada di website Programmer Jamanau atau juga di YouTube channel Programmer Jamanau.

Oke, kalau teman-teman ingin diskusi secara langsung dengan saya, teman-teman bisa lewat Telegram, saya sering aktif di sana. Lalu teman-teman juga jangan lupa follow sosial medianya Programmer Jamanau ya, ada di Facebook, Instagram, YouTube, dan juga ada di Telegram channel. Kalau teman-teman butuh mentoring dari perusahaan teman-teman atau training atau workshop dan lain-lain ya, nah teman-teman juga bisa kirim email ke tempat saya ini, ke email saya ya.

Oke. Sebelum teman-teman belajar, jadi ini bukan materi yang pemula sekali ya, Java Internationalization ini. Ini materi yang lumayan harusnya udah dikuasain sama Java yang medium ke atas.

Jadi teman-teman sebelumnya harus mengerti beberapa hal dulu. Teman-teman tidak perlu khawatir, semuanya sudah ada kursenya. Ini saya masukkan link-nya ya, disini ada link-nya menuju kursenya. Jadi ini materi-materi yang teman-teman harus kuasai sebelum teman-teman mengikuti materi ini. Seperti Java Dasar, Java OOP, Standard Class, Generic Collection, Apache Maven, dan juga Unit Test.

Jadi pastikan teman-teman sudah mengerti semuanya dulu ya, karena kalau tidak mengerti saya nggak tanggung jawab kalau teman-teman bingung ketika mengikuti materi ini. Oke, agendanya apa sih? Kita agendanya bahas total tentang internationalization.

Jadi kita akan berkenalan dulu dengan internationalization itu apa. Ada local class, kita nanti bahas, ada resource bundle, ada... internationalization di dalam date, number, currency, ada message format dan lain-lain ya.

Ada banyak nanti materi yang akan kita bahas. Oke, nggak usah berlama-lama intronya, kita akan langsung masuk ke materi. Oke, sekarang kita akan berkenalan dulu dengan internationalization. Internationalization atau disingkat I18N ya.

Kenapa? Karena karakternya ada 18 di antara huruf I. yang depan sini dan juga huruf N.

Jadi I18N ya, Internationalization. Internationalization ini proses membuat desain aplikasi yang kita buat ya, itu bisa beradaptasi sesuai dengan bahasa dan juga tempat dari pengguna aplikasinya, tanpa harus melakukan perubahan pada kode program aplikasi yang kita buat. Jadi teman-teman bikin sekali aplikasi Java-nya, lalu ketika ada user yang misalnya dari negara Indonesia nanti dia ketika buka ya aplikasinya dalam bahasa Indonesia nah ketika teman-teman misalnya dijalankan oleh user misalnya di Amerika maka dia akan menggunakan bahasa Inggris seperti itu jadi aplikasi yang kita buat itu bisa beradaptasi sesuai dengan bahasa atau tempat ya atau negara di mana pengguna kita mengaksesnya jadi ini lebih bagus aplikasinya ya nggak perlu teman-teman bikin aplikasi bahasa Indonesia aplikasi bahasa Inggris itu nggak perlu Teman-teman bisa bikin fitur internationalization ini.

Java sendiri sudah mendukung internationalization, jadi kita bisa membuat aplikasi kita mendukung banyak bahasa, misalnya bahasa Indonesia, Inggris, dan lain-lain. Jadi teman-teman nggak butuh nambahin library, framework, itu nggak butuh. Kita cukup pakai bawaan Java standar, itu sudah ada semuanya.

Oke, kalau teman-teman dibilang mau bikin aplikasi yang mendukung internationalization, itu karakteristiknya seperti apa sih? Jadi ini karakteristiknya. Jadi ketika penambahan dukungan bahasa, tidak perlu melakukan perubahan kode program Java-nya.

Jadi kalau teman-teman misalnya, oke saya mau sekarang pertama kali dirilis pakai bahasa Indonesia. Nah ketika next-nya saya mau rilis pakai bahasa Inggris juga, misalnya bahasa Indonesia dan bahasa Inggris, maka saya tidak perlu merubah kode program Java kita. Jadi tidak ada perubahan di kode program Java-nya.

Jadi tampilan yang berupa teks label seperti misalnya status, label di komponen UI, misalnya semuanya tidak di hardcode di kode program. Jadi teman-teman tidak lagi ngehardcode tulisan ya berupa teks atau string itu ya di dalam kode programnya. Jadi semuanya itu disimpan di luar kode program. Dan dia akan diampil secara dinamis sesuai dengan bahasa atau lokasi pengguna aplikasinya.

Jadi nanti kita akan bikin sebuah file di mana file tersebut isinya adalah kata-kata. Tergantung bahasanya, kalau bahasa Inggris ya bahasa Inggris, bahasa Indonesia ya bahasa Indonesia. Nanti aplikasi kita bisa beradaptasi kalau misalnya dia bahasa Inggris gitu ya usernya, dari negara Inggris maka dia akan ngambil datanya, textnya itu tulisannya yang bahasa Inggris. Kalau dari Indonesia maka dia akan mengambil tulisannya yang bahasa Indonesia. Jadi lebih ke kode programnya tidak di hardcode ya tulisannya, tapi kita akan simpan di suatu tempat ya untuk menyimpan bahasa yang berbeda-beda, seperti itu.

Nah selain itu, biasanya aplikasinya akan mengikuti kultur lokasi user, seperti format tanggalnya, waktunya, angka, dan mata uang. Jadi kalau cuman teman-teman misalnya pakai format tanggalnya, misalnya dibuka di negara Indonesia, ya pakai format tanggalnya misalnya Indonesia. Kalau misalnya...

dibuka di Inggris atau di Amerika ya format tanggalnya pakai bahasa Inggris contohnya kalau hari misalnya Sunday, Monday gitu ya kalau di Indonesia kan pasti Senin, Selasa seperti itu angkanya juga kalau di Inggris kan mata uang yang ribuannya itu kan pemisahnya pakai koma kalau di Indonesia kan pakai titik seperti itu jadi dia ngikutin negaranya selain itu penambahan dukungan bahasa baru itu bisa dilakukan dengan cepat ya Jadi kalau teman-teman, oke tadi saya bilang tadinya bahasa Indonesia dan bahasa Inggris, kita mau nambahin bahasa misalnya Jepang gitu ya. Nah itu teman-teman tidak perlu ngelakuin perubahan kode program, jadi perubahan dukungan bahasanya cepat. Jadi teman-teman bisa tinggal tambahkan file bahasa Jepangnya, lalu dimasukkan ke projectnya dan otomatis jalan. Jadi ini adalah karakteristik aplikasi yang mendukung internationalization. Oke, sekarang kita akan bahas tentang lokal.

Di Java, bahasa dan negara itu sudah ada representasinya. Namanya adalah lokal. Jadi sudah direpresentikan dalam sebuah kelas yang namanya lokal. Nah, kelas lokal ini bisa digunakan sebagai representasi bahasa dan negara. Jadi gabungan ya antara bahasa dan negara.

Nah, kenapa ada bahasa dan juga negara? Kenapa tidak misalnya negara saja atau misalnya bahasa saja gitu ya? Karena kadang ada bahasa yang sama untuk... Negara yang berbeda. Contohnya bahasanya Inggris, negaranya Amerika.

Bahasanya Inggris, negaranya Inggris. Itu kan bahasanya sama ya. Atau dalam satu negara mungkin bisa beberapa bahasa.

Bisa juga seperti itu. Jadi karena kombinasinya bisa berbeda-beda, jadi ya teman-teman harus, apa ya silanya, harus bikin suatu kelas yang bisa dikombinasikan berubah-rubah antara bahasa dan juga negaranya. Jadi kita pakainya kelas lokal.

Lokal itu memiliki standar yang namanya IETF gitu ya, BCP 47, teman-teman bisa searching di Google, ini standarnya, jadi udah standar penulisan lokal dan juga penulisan ininya, negaranya, bahasa dan negaranya ya. Yang terdiri dari ini, RFC 4647, ini adalah spesifikasi untuk matching of language tags ya, ini untuk bahasa ya, dan ini untuk RFC 5646. Text for Identifying Language Jadi semuanya sudah standar Teman-teman kalau pengen lihat detailnya silahkan Saya nggak bahas di sini Nanti kita akan bahas contoh-contohnya aja Tapi kalau teman-teman pengen lihat detailnya Teman-teman bisa cari di Google ya Untuk ini, standarisasi ini Jadi ini sudah standar Jadi teman-teman ini bukan Apa ya silahnya Bukan orang-orang Java yang bikin standar sendiri Nggak, ini memang standar internasional Oke, sekarang kita bahas tentang penulisan bahasa dulu. Jadi kan tadi sudah saya bilang ya, ada bahasa, ada juga negara.

Oke, penulisan bahasa di dalam lokal menggunakan ISO 639 Alpha 2 atau Alpha 3. Artinya apa? Ada 2 karakter atau 3 karakter. Nah, ketika sebuah bahasa memiliki 2 pilihan, ada Alpha 2 dan juga Alpha 3, maka yang Alpha 2 yang dipakai. Artinya apa?

Artinya cuma yang 2 karakter yang dipakai. Oke, kalau teman-teman pengen tahu, teman-teman bisa di sini. Ini standar ISO 639, ya, alpha 2. Ya, teman-teman bisa buka di sini. Ini cara penulisan ininya.

Oke, saya perbesar dulu. Nah, ini penulisan bahasanya. Jadi kalau teman-teman mau pakai bahasa ini, Abasyan gitu ya, teman-teman pakainya yang ABK atau AB, ya.

Nah, atau kalau Indonesia... teman-teman cari Indonesia Indonesia disini pakenya ID atau IND pakenya ya kalau misalnya ada yang 2 seperti ini pakenya yang 2 ya, 2 karakter seperti ini kecuali yang 3 ya pakenya 3 kalau yang 2, 2 aja contohnya kalau misalnya Javanese gitu ya Javanese gitu ya, ini ada Java, ada, gak tau Sunda ada gak ya oh ada Sundanese gitu ya disini ada Su gitu ya, Sun oke Kalau misalnya Jepang, Jepan gitu ya, Jepanis juga ada, ini ya, Inggris, Inggris, nah juga Inggris juga ada, Inggris sudah banyak sih, nanti ada EN, ada Inggris. Jadi ini, ini nanti teman-teman saat diminta, oke silahkan pilih bahasanya teman-teman pakainya yang kode di sini ya.

Seperti ini. Oke kita balik ke slide. Nah selain itu gimana dengan penulisan negaranya? Penulisan negaranya juga sama.

Itu penulisan negaranya sudah standar juga ya. Sudah ada. Namanya adalah ISO 3166 Alpha 2. Nah di sini teman-teman bisa cek.

Contohnya country codes ya. Nah ini sudah sesuai dengan Alpha 2 dan juga Alpha 3. Kita pakainya yang Alpha 2 ya. Ini sudah standar. Nah ini ISO 3166 ya.

Jadi di sini negaranya. Kalau teman-teman pilih negara, silakan pakainya yang kode alfa 2. Contohnya kalau Indonesia. Indonesia. Itu ID ya. Jadi Indonesia.

Jadi jangan sampai salah sama India. India. Kalau India itu IN.

Jadi IND itu bukan Indonesia, tapi India. Kalau Indonesia adalah. IDN ya, bukan IND, tapi IDN.

Nah, ininya juga ID. Kalau misalnya Amerika, US pakainya. Jadi seperti ini. Jadi nanti ketika teman-teman bikin kelas lokal, nanti perlu ditentukan ininya, bahasanya, sama country codenya, negaranya, jadi teman-teman pakainya yang ini. Yang kode ini, alpha 2. Oke, next.

Gimana cara bikin lokal gitu ya, jadi bikin lokal itu simple banget, jadi teman-teman perlu tentukan dulu pertama language-nya apa, country-nya apa. Lalu setelah teman-teman bikin language dan country-nya, teman-teman silahkan bikin pakai new local gitu ya. Di sini yang pertama parameternya di constructor-nya adalah language-nya, dan yang kedua adalah country-nya.

Nah kita tahu untuk language ID itu adalah Indonesia, bahasa Indonesia, dan country ID itu negara Indonesia. Jadi disini kita bikin sebuah lokal ya dimana disini language dan country-nya adalah Indonesia dan Indonesia. Jadi seperti ini.

Jadi nanti itu ketika teman-teman bikin aplikasi ya ada data usernya teman-teman di set user ini pakai lokal apa gitu ya. Ya mungkin bisa di ketika registrasi bisa dipilih gitu ya mau pakai bahasa apa misalnya seperti itu. Atau mau tengah jalan dirubah-rubah bahasanya mungkin bisa. Nanti ketika dipilih bahasanya misalnya bahasa Indonesia maka nanti kita bikin lokalnya lokal Indonesia. Kalau pilih misalnya bahasanya Inggris, nanti kita bikin lokalnya yang pakai bahasa Inggris.

Nah ketika teman-teman bikin sebuah objek lokal, teman-teman kalau pengen tahu language-nya apa, country-nya apa, teman-teman bisa pakai ini. Get language dan get country. Kalau get language otomatis dapatnya ID ya. Get country dapatnya adalah ID besar ini. Nah kalau teman-teman gunakan get display language, ini akan berubah menjadi tulisan.

Misalnya bahasa Indonesia atau Indonesia gitu ya. Get display country juga ini tulisan. Oke, biar lebih enak kita langsung praktikan aja.

Tapi sebelumnya kan kita belum bikin project ya. Kita akan bikin project menggunakan Apache Maven. Oke, saya akan masuk dulu ke development, YouTube.

Nah, biasanya kan kita bikin project Maven itu pakainya Maven archetype generate ya. Nah, ini banyak yang komplain sebelumnya di grupnya Discord Programmer Jamanau. Itu katanya lemot sekali. Untuk ngelakuin Maven Generate Project-nya memang ini tergantung koneksi internet ya.

Karena pertama kali yang dilakukan sama Maven itu adalah dia ngedownload semua archetype katalognya. Jadi ini agak sedikit lambat memang. Nah bahkan internetnya sudah cepat pun kadang-kadang masih lambat.

Kenapa? Karena biasanya tergantung kecepatan si server si Maven-nya. Jadi bahkan di SAC sekarang pun saya kalau perhatikan di sini pingnya cepat-cepat aja gitu ya. Nah tapi di sininya dapatnya lambat sekali ya.

Nah baru keluar, nah kenapa ini lambat? Karena dia harus download katalognya dulu ya. Kalau teman-teman disini keluarnya lambat, itu ya paling ditungguin sampai selesai download gitu ya.

Nah disini misalnya kita cari quick start ya. Ini sebenarnya otomatis pilih quick start sih yang 1744 kalau kita cari. Nah oke kita quick start. Oke, sekarang milih yang 110 yang quick startnya. Oke, kita cek yang 110 itu.

110, nah ya. Dia defaultnya pakai map-an archetype quick start. Jadi kita oke, pilih 110. Versinya 8. Group ID-nya programmer zaman now. Artifact-nya di sini misalnya belajar.

Java i18n biar gak kepanjangan ya, internationalization. Versinya samain, package-nya disini pakai package-nya programmer. zaman.now.i18n. Selesai?

Yes? Oke, selesai. Kita tinggal masuk ke folder belajar java i18n. Oke, saya akan buka pakai IntelliJ IDEA.

Oke, sudah terbuka. Saya besarkan dulu. Oke ya udah selesai. Next-nya seperti biasa karena di sini default-nya pakai JUnit versi 4. Jadi kita akan pakai yang versi 5. Jadi kita akan cari search.maven.org.

Lalu di sini kita akan cari JUnit Jupiter. Oke kita pilih yang ini ORJ JUnit Jupiter. cek semua versinya. Versi yang stabil itu versi 571. Jadi kita akan pilih 571. Kita akan copas yang ini.

Disini kita ganti. Dependensinya 571. Scope-nya kita ganti test. Kita akan repress disini. Tunggu sampai selesai. Nah, sudah.

Udah keluar ya 571 dan disini unit testnya otomatis error, nggak masalah karena memang kita udah nggak pakai JUnit 4 lagi, saya hapus ya, unit testnya saya delete. Oke kita akan back ke slide, jadi kita akan buat ya menggunakan local itu seperti apa, jadi disini kita akan buat dulu filenya namanya local test. Oke kita akan bikin unit test, di sini namanya ada test new local.

Oke, oke local gitu ya. Jadi kita bisa pakai, oke ini saya sudah set ya Java-nya. Java-nya versi berapa nih Java-nya? Oh 17 ya, saya ganti ke 15 dulu ya. Saya pakai 15, teman-teman silahkan sesuaikan.

Biar kita bisa pakai fitur-fitur Java 15. Oke saya refresh. Oke selesai kita bisa pakai var lokal ini belum kayaknya kita akan rubah dulu kalau teman-teman disini kelihatannya belum bisa ya Java 15 kita akan rubah di preferencenya oh sorry bukan preferensi project structure jadi kita akan buka project structure nya disini oke bentar nah ini ya project structure nah silakan dipilih java 15 harusnya udah sih ya Oh di sini modulnya masih java 7 kita ganti ke java 15 nah selesai apply oke nah ini bisa udah bisa java 15 oke var local sama dengan new local gitu ya ada di package namanya java util nah disini tinggal teman-teman masukkan ada dua parameter ya language sama country nya disini language country-nya apa. Ya, di sini misalnya var language-nya adalah ID, ya, Indonesia. Var ininya country-nya ID besar. Oke, ya.

Jadi sama dengan slide ini, ID, ID. Oke, kita cek. Sekarang kita akan print out local.get country-nya apa. Get language, kebalik.

Get display language sama get display country. Nah, kita lihat ya hasilnya seperti apa. Kita cek, kita running.

Oke, ini hasilnya seperti ini. Nah, di sini ada sedikit perbedaan kalau teman-teman perhatikan ya. Nah, di sini local get language-nya a in ya. Loh, kenapa jadi in gitu ya? Padahal kan kita masukinnya id.

Lalu country-nya sih benar, ID, ID besar. Bahasanya, display language-nya itu adalah Indonesian, ya bahasa Indonesian. Lalu get display country-nya adalah Indonesia. Jadi nama negaranya Indonesia, bahasanya adalah Indonesian.

Nah di sini pertanyaannya kenapa berubah jadi IN? Jadi ID itu sebenarnya spesifikasi baru ya. Nah jadi IN itu spesifikasi lama. Jadi zaman dulu itu dulu gitu ya, awalnya ketika...

spesifikasinya keluar itu kodenya bukan ID tapi N cuma karena Ada sedikit ambigu dengan India, jadi akhirnya dirubah jadi ID. Nah, cuma masalahnya Java di awal-awal itu kan udah terlanjur pakai spesifikasi awal gitu ya. Nah, agar tidak berubah, tidak nge-break ketika upgrade versi Java, akhirnya dia secara otomatis dikonversi dari yang tadinya misalnya ID, dia akan otomatis dikonversi menjadi IN. Jadi contohnya kalau teman-teman perhatikan di sini, ya, lokal, kita cari, dilihat source codenya. Oke, di sini ada disk lokal.

Nah, di sini ada convert old ISO code, ya, di sini. Jadi ada di konversi. Pengkonversiannya simple, ya, cuma beberapa bahasa saja, nggak ngefek ke semua bahasa. Jadi kalau bahasanya HE gitu ya, saya kurang tahu HE itu apa, kode apa, dia akan diganti menjadi IW.

kalau misalnya language-nya yi diganti sama ji kalau language-nya id yang Indonesia ya itu diganti jadi in jadi cuma ini doang, ini kodenya jadi nggak usah bingung kenapa tiba-tiba jadi in gitu ya language-nya karena memang diganti sama java secara otomatis biar backward compatible dengan versi java-java yang lama oke jadi mulai sekarang teman-teman kalau bahasa Indonesia spesial ya itu pakenya in ya bukan lagi id oke kita running Nah hasilnya keluar EN ya ID. Indonesian dan Indonesia. Jadi ini tentang lokal ya. Kalau teman-teman mau coba lagi ini lokal yang US contohnya. US.

Bahasanya EN misalnya ya. English. Dan country-nya US. Kita akan lihat hasilnya.

Nah EN ya US. Bahasanya English dan negaranya adalah United States. Nah jadi seperti ini tentang kelas lokal ya. Nextnya teman-teman bakal selalu pakai kelas ini dalam menggunakan fitur Java Internationalization. Sekarang kita akan bahas tentang resource bundle.

Resource bundle itu adalah sebuah kelas. Kelas ini digunakan sebagai bundle yang berisikan data yang bisa berubah sesuai dengan lokal yang dipilih. Jadi biasanya kan kalau teman-teman bikin... tulisan gitu ya misalnya di aplikasi teman-teman ya kita langsung pakai tulisan teks biasa pakai string gitu ya. Nah kalau misalnya teman-teman pengen aplikasinya bisa support internationalization nah direkomendasikan teman-teman menggunakan yang namanya resource bundle.

Jadi dengan menggunakan resource bundle teman-teman bisa memasukkan data ya di mana data tersebut bisa berubah-ubah sesuai dengan lokal yang kita pilih. Jadi resource bundle ini cocok digunakan untuk menyimpan data internationalization, di mana semua data akan disimpan dalam sebuah properties file. Jadi nanti data tulisannya itu tidak akan dihardcode lagi di aplikasi kita, melainkan akan disimpan dalam bentuk properties file. Oke, sebelumnya kalau teman-teman sudah mengikuti materi saya di Java Standard Classes, di sana sudah saya bahas tentang properties. Jadi saat kita menggunakan resource bundle, kita perlu membuat properties file.

Di dalam resource sebagai tempat untuk resource bundle melakukan lookup data. Jadi tiap kita manggil atau mau mengambil data dari resource bundle, itu sebenarnya dia akan melakukan lookup ke dalam properties filenya. Jadi kalau sebelumnya kan teman-teman sudah belajar tentang kelas properties, dimana di sana ya mirip sebenarnya kayak resource bundle, cuma bedanya kalau properties itu tidak mendukung internationalization.

Tapi kalau misalnya teman-teman menggunakan resource bundle, itu mendukung internationalization. Oke misalnya kita membuat file namanya properties ya dengan nama message.properties di dalam resource. Jadi teman-teman harus memasukkan nama filenya, sorry filenya di dalam resource ya. Kenapa di dalam resource? Biar nanti bisa dibundle dalam aplikasinya.

Kalau tidak di dalam resource nanti ketika teman-teman compile project mavennya dia tidak akan dibundle. Jadi teman-teman harus masukkan di dalam resource. Contohnya, contoh kita akan buat sebuah file namanya message.properties ya.

Nah disini kita akan bikin kalau properties itu kan isinya key value, key-nya apa sama dengan value-nya apa. Disini contohnya hello sama dengan hello, goodbye sama dengan goodbye seperti ini. Oke kita akan coba buat. Oke disini jadi disini tidak ada ya sebelumnya.

Jadi teman-teman kalau tidak ada karena kita bikinnya pakai unit test jadi saya akan bikinnya di unit test. Kalau teman-teman bikin aplikasi biasa mungkin di dalam main ya. Jadi saya disini bikin di test.

Di dalam tes ini kita akan bikin sebuah directory namanya resources ya ingat resources ya jangan sampai salah. Oke resources sudah disini ada resources nah disini baru kita menambahkan. filenya ya file propertiesnya ingat kalau teman-teman di unit test di sini tapi kalau di aplikasi di sini di sini teman-teman bikin directory resources ya kalau di sini nanti di dalam main ya nanti di sini akan di bundle dalam aplikasinya kalau sudah di compile menjadi jar kalau misalnya di unit test dia tidak akan di bundle tapi nanti kalau teman-teman ngerunning unit test dia akan load filenya dari resource ini oke kita akan bikin di sini nama filenya adalah message.properties.

Oke selesai lalu kita akan buat samakan ya sama sini hello sama dengan hello goodbye sama dengan goodbye oke selesai. Jadi seperti ini aja. Jadi tiap teman-teman mau bikin data yang nanti mau di internationalization silahkan teman-teman masukkan ke dalam properties ini Nah selanjutnya gimana caranya kalau kita ingin menggunakan resource bundle untuk mengambil data dari file properties tadi.

Simple sekali caranya teman-teman bisa gunakan resource bundle ya titik get bundle. Oh disini nama file propertiesnya tidak perlu menggunakan dot properties nggak perlu cukup masukkan nama filenya aja extensionnya tidak perlu. Jadi oke kita akan buat disini saya akan buat disini unit test baru namanya resource bundle test.

Jadi disini saya akan bikin test, test resource bundle ya. Jadi kita bikinnya var tadi namanya apa nih resource bundle ya. Sama dengan resource bundle ya ada di java.util paketnya..get bundle ya.

Lalu disini ininya. propertiesnya, properties filenya ya tidak perlu memasukkan kata resources nggak perlu ini otomatis masuk ke dalam resources nggak perlu juga memasukkan file.properties nggak perlu ya karena kita udah tahu kalau ini cuma nge-load data properties saja jadi cukup masukkan nama filenya yaitu message seperti ini ya jadi sama kayak ini ini message.properties jadi kita cukup pakai kata messagenya saja ya nama filenya oke selanjutnya gimana kalau kita mau mengambil tiap ini Key-nya hello dan value-nya adalah goodbye. Caranya simple. Jadi teman-teman gunakan get string. Tinggal get string, get string.

Jadi di sini kita gunakan contohnya resource bundle get string. Lalu di sini misalnya hello. Lalu di sini goodbye.

Nah seperti ini. Kita print out ya. Oke, selesai.

Kita lihat, apakah benar cloud? Nah, hasilnya ini hello dan ini goodbye. Jadi, sudah benar sekarang. Jadi, kita ketika get string hello, ini keluarnya hello yang di sini.

Jadi, kalau teman-teman mau ganti hello world, misalnya tinggal ganti di sini. Kode programnya tidak akan perlu dirubah. Tinggal teman-teman running. Nah, keluar hello world. Jadi seperti ini awal untuk resource bundle.

Next-nya ini kan, ini kan belum internationalization ya, jadi ya masih tetap kalau misalnya diganti ya gitu-gitu aja gitu ya. Nggak berubah sesuai dengan bahasanya. Ini hello, ini goodbye. Oke, sekarang kita bahas tentang internationalization di dalam resource bundle. Jadi kode sebelumnya kita hanya menggunakan resource bundle sebagai objek untuk mengambil data dari properties file.

Artinya apa? Jadi artinya ini nggak ada bedanya ya sebenarnya dengan class properties. Karena class properties pun kita gunakan untuk mengambil data di dalam properties file.

Yang membedakan apa kalau gitu? Yang membedakan adalah dalam resource bundle kita bisa melakukan yang namanya internationalization. Jadi yang mendukung multi bahasa atau multi lokal. Nah namun untuk melakukan ini kita perlu menyediakan properties file sesuai dengan lokalnya. Jadi...

Si Java itu bukan berarti dia bisa otomatis translate dari bahasa A ke bahasa B ya, enggak, enggak seperti itu. Jadi teman-teman tetap harus menyediakan. Jadi teman-teman bikin file bahasa Indonesia, file bahasa Inggris, file bahasa Jepang, dan seterusnya.

Selanjutnya apa? Selanjutnya si resource banner ini bisa memilih, nanti kalau teman-teman mau pakai bahasa Indonesia, dia akan nge-load properties filenya yang bahasa Indonesia. Kalau teman-teman mau pakai bahasa Inggris, dia akan nge-load properties filenya yang bahasa Inggris.

Jadi seperti itu. Nah kalau teman-teman mau menambahkan support untuk lokal yang lain, contohnya kan sebelumnya tadi kita pakai message.property sisinya pakai bahasa Inggris ya. Nah misalnya kita akan support bahasa Indonesia. Kalau kita support bahasa Indonesia artinya kita perlu bikin properties file sesuai dengan lokalnya. Nah gimana caranya?

Misalnya kalau kita ingin mendukung bahasa Indonesia ya, artinya bahasanya IN dan negaranya adalah ID kan dia harus pakai lokal ya. Jadi bahasanya IN dan negaranya ID maka kita perlu membuat nama filenya adalah message underscore IN underscore ID. Jadi ini adalah language-nya, ini adalah country-nya, dot properties. Jadi seperti ini ya.

Nah. Filenya butuh diawali dengan message. Kenapa?

Karena kenapa di sini ada message ya? Karena sebelumnya kita menggunakan nama filenya message. Jadi ini bukan wajib ya? Enggak.

Teman-teman kalau nama filenya depannya message ya berarti harus message underscore lokalnya. Kalau teman-teman depannya filenya adalah contohnya tulisan gitu ya, yaudah berarti tulisan underscore nama lokalnya. Jadi harus disesuaikan dengan ininya, nama file message properties yang sebelumnya teman-teman buat. Jadi properties filenya kalau namanya A ya berarti harus A underscore nama lokalnya. Kalau B ya B underscore nama lokalnya ya.

Jadi contohnya seperti ini kita akan bikin sebuah file lagi message ya sama kayak sebelumnya. Sebelumnya kan message.properties kita pakenya message underscore lokalnya in underscore id.properties. Isinya adalah sama keynya harus sama ya. Kalau tidak nanti otomatis hilang datanya. Jadi harus sama keynya.

Tapi value-nya teman-teman bisa ganti. Contohnya kalau untuk hello kita pakai bahasa Indonesia hello. Kalau untuk goodbye kita pakai bahasa Indonesia selamat tinggal. Kita akan coba tambahkan di sini. Jadi di dalam resource kita bikin satu file baru.

Nama filenya adalah message underscore in. In kecil karena ini adalah bahasa Indonesia. Underscore id ini negaranya Indonesia. Lalu titik properties. Selesai.

Nah, di sini saya akan copas saja. Ini saya copas dari message plus properties. Selesai. Ini tinggal kita ganti.

Halo. Ini selamat tinggal. Selesai. Nah, sekarang apa yang terjadi kalau saya running di sini?

Ya, test resource bundle-nya. Ini saya coba running. Keluarnya masih tetap hello dan goodbye. Kenapa?

Karena memang lokal saya di sini laptop saya bahasanya pakai bahasa Inggris gitu ya. Laptop saya. Jadi ya ketika saya running, pakai keluarnya yang message defaultnya.

Kenapa? Karena INID itu nggak dipakai. Oke, kita back ke slide.

Nah ini kalau teman-teman pengen maksa, oke saya nggak mau ngikutin bawaan laptopnya misalnya atau bawaan komputernya. Saya pengen maksa. berubah lokalnya.

Nah untuk berubah lokalnya saat teman-teman membuat resource bundle dengan menggunakan get bundle, di belakang itu ada parameter lokal. Teman-teman bisa bikin lokalnya contohnya disini kita bikin lokal Indonesia, lalu kita bikin new local in, dan ininya id lalu kita masukkan kesini. Nah secara otomatis nanti si resource bundle ini akan nge-load data propertiesnya yang berbahasa Indonesia. Jadi seperti itu. Oke kita akan coba.

Ini test resource bundle ya, kita akan buat lagi di sini test resource bundle Indonesia. Jadi di sini saya akan bikin local Indonesia sama dengan new local ya. Lalu di sini adalah in, language-nya dan country-nya adalah id.

Oke, jadi ketika get bundle saya di sini harus tambahkan localnya. Jadi ada parameter yang kedua namanya local kita masukkan Indonesia. Oke, selesai ya. Ini saya kecilin dulu. Nah, oke.

Sekarang kita coba running. Nah, sekarang kalau teman-teman perhatikan. Yang keluarnya adalah ini.

Ya, bahasa Indonesia sekarang. Jadi di sini halo. Di sini selamat tinggal. Kalau yang ini kita running. Ini hello dan disini adalah goodbye ya.

Jadi kalau yang ini pakainya yang message.properties. Kalau yang ini pakainya adalah message underscore in ya. Sesuai dengan ini.

Underscore id sesuai dengan ini.properties. Jadi ini keluarnya yang bahasa Indonesia. Oke.

Nah sekarang dengan demikian ya teman-teman sekarang udah bisa support ini. Internationalization. Jadi kodenya sama ya. Ini kodenya sama.

Tinggal teman-teman nanti ganti aja lokalnya, nanti sesuaikan dengan usernya. Jadi kalau mungkin di database usernya nanti ada semacam lokalnya, nanti tinggal di load dari database user, tinggal dimasukkan ke dalam parameter ini. Jadi nanti kalau usernya adalah orang Indonesia, ya keluarnya bahasa Indonesia.

Kalau usernya orang Inggris, ya nanti keluarnya defaultnya bahasa Inggris misalnya seperti itu. Nah, gimana kalau misalnya tidak ada propertis untuk lokalnya? Nah, apa yang terjadi kalau misalnya ada lokal yang tidak tersedia dalam file propertisnya?

Jadi, contohnya kan kita sebelumnya sudah bikin propertis yang defaultnya. Defaultnya adalah pakai bahasa Inggris. Nah, selanjutnya kita bikin juga propertis yang Indonesia. Message underscore EN underscore ID. Nah, gimana kalau misalnya kita menggunakan lokalnya EN underscore US.

Sedangkan tidak ada file message EN underscore US propertis. Nah apa yang terjadi? Kalau misalnya filenya tidak ditemukan, tidak ada resource properties ini, maka yang akan terjadi adalah secara default resource bundle akan menggunakan message.properties.

Jadi pastikan di dalam message.properties yang defaultnya, itu teman-teman pakai bahasa yang defaultnya. Jadi kalau teman-teman pakai bahasa defaultnya adalah bahasa Inggris, yaudah masukin bahasa Inggris di sana. Kalau teman-teman defaultnya pakai bahasa Indonesia, yaudah tinggal masukin bahasa Indonesia di sana.

Kita akan coba, jadi contohnya di sini kita pakai resource bundle yang not found ya. Jadi di sini misalnya saya pakai en ya, tapi di sini adalah us. Oke artinya apa? Artinya kan tidak ada file enus ya, di sini cuma ada filenya message properties sama message enid. Yang enusnya tidak ada.

Nah apa yang terjadi kalau kita coba running? Nah lihat, dia akan fallbacknya ke si message.properties. Jadi kalau tidak ada, kayak misalnya teman-teman ada registrasi dari user dari Jepang gitu ya, jadi teman-teman pakai lokalnya lokal Jepang. Tapi karena teman-teman tidak ada ya, properties untuk file lokal Jepang, maka teman-teman akan fallback ke defaultnya. Contohnya kalau di sini ya, di message properties ini defaultnya adalah pakai bahasa Inggris.

Jadi yang keluarnya adalah bahasa Inggris. Jadi tenang aja ya, tidak akan terjadi error. Kalau ternyata memang tidak ada lokalnya, gitu ya ya memang baliknya ke default properties filenya jadi tidak akan terjadi error jadi teman-teman bisa tenang ya enggak perlu khawatir oke nah amankah membuat resource bundle terus menerus jadi kalau teman-teman perhatikan ini kan cara pembuatan resource bundle nya kan kita menggunakan resource bundle get bundle gitu ya nah apa yang terjadi kalau teman-teman ngelakuin ini terus menerus gitu ya nah misalnya di tempat A di tempat B di tempat C padahal kodenya sama gitu-gitu juga gitu ya resource bundle.getbundle Cara membuat resource bundle kan menggunakan static method yang namanya getBundle.

Di dalam implementasi getBundle telah diimplementasikan yang namanya caching. Caching artinya jika kita mengambil resource yang sama dengan lokal yang sama tidak akan dibuat ulang. Melainkan akan menggunakan resource bundle yang sudah tersedia.

Hal ini menjadi aman kalau sebenarnya teman-teman membuat resource bundle terus-menerus dengan lokal yang sama atau properties file yang sama. Jadi tenang aja, nggak usah khawatir. Untuk memastikan teman-teman kalau perhatikan di sini resource bundle get bundle, kalau kita lihat kodenya isinya, dia akan memanggil get bundle implementation.

Kalau kita klik, dia akan masuk ke sini, get bundle implementation. Kalau kita klik, di sini kalau teman-teman perhatikan kodenya, ini lumayan panjang, ini ada juga get bundle implementation. Nah, di sini ada cache.

Jadi intinya apa? Intinya adalah... Kalau misalnya lokalnya belum pernah teman-teman load sebagai resource bundle ya, properties filenya, dia akan dimasukkan ke dalam cache ini, cache list ya.

Kalau misalnya sudah, teman-teman langsung ambil dari cache list ini ya. Dia langsung diambil bundlenya di sini. Jadi teman-teman nggak usah khawatir kalau teman-teman berkali-kali misalnya.

Teman-teman manggil ini 100 kali pun nggak masalah gitu ya. 100 kali gitu ya, seperti ini, ini nggak masalah ya. Tidak akan membuat objek berkali-kali kok.

Ini cuma dibikin sekali aja. Ya ketika pertama kali di load. Jadi disini dibikin sekali.

Selanjutnya ketika teman-teman panggil lagi. Dia sebenarnya akan mengakses objek yang sama. Jadi kalau teman-teman coba.

Ya kita akan coba resource bundle 1 dan resource bundle 2. Nah kita akan. Oke jangan disini deh ya. Biar kita buat aja yang baru. Jadi kita akan buat testnya. Test resource bundle.

multiple times jadi kita akan buat resource bundle yang 1 dan 2 Oke kita akan coba print out Apakah dia sama objeknya atau beda resource 1 sama dengan resource 2 Oke ini resource 1 ya kita akan coba running nah lihat ini true ya Jadi nggak usah khawatir ketika teman-teman get bundle, get bundle terus gitu ya. Sebenarnya dia balikin objek yang sama. Jadi nggak usah khawatir tentang memorinya jadi bengkak ataupun apapun. Jadi udah di handle dengan baik sama si Java class resource bundlenya.

Jadi ini adalah kelas yang teman-teman bisa gunakan untuk mendukung internationalization di dalam kode program java teman-teman. Sekarang kita akan bahas tentang internationalization di dalam tipe data dat dan juga time. Atau sebenarnya di java itu digabung ya. Jadi kelasnya itu namanya dat. Oke, untuk tipe data string mungkin sederhana ya.

Nah, jadinya kalau misalnya kita mau support internasionalisasi tinggal gunakan resource bundle. Nah, gimana kalau tipe datanya date atau waktu? Kalau date atau waktu itu kan agak sedikit ribet ya. Terutama kalau soal tanggal sih ya.

Kalau misalnya waktu mungkin agak sama ya, hampir semua negara mungkin sama. Nah, yang membedakan mungkin kayak ini, kayak tanggal. Kayak contohnya nama hari kan beda-beda tiap negara mungkin ya.

Atau nama bulan juga beda-beda. Nah, gimana dengan hal seperti ini? Apakah kita harus lakukan manual gitu ya, disimpan di dalam resource, kalau hari Senin bahasa Inggrisnya apa, hari Selasa bahasa Inggrisnya apa, dan sebagainya. Nah, untungnya di Java itu tidak perlu kita lakukan. Ini semuanya sudah didukung juga untuk internationalization tipe data, date, dan juga time.

Di Java kan kita sudah tahu ya, saya sudah bahas juga di dalam Java Standard Classes, kalau misalnya tanggal dan juga waktu itu direpresentasikan dengan kelas yang namanya date, ada di Java Util Date. Nah bagaimana misalnya kita ingin menampilkan tanggal dalam bahasa Indonesia? Atau misalnya dalam bahasa Inggris?

Atau misalnya bahasa yang lainnya? Nah gimana nih? Nah untungnya di Java, internationalization itu di DAT sudah disediakan. Dia disupport menggunakan kelas yang namanya DAT formatter.

Jadi nanti teman-teman bisa gunakan kelas yang namanya DAT formatter. Oke, sekarang kita bahas tentang DAT formatter. Jadi DAT formatter ini merupakan kelas yang bisa kita gunakan untuk melakukan parsing. Parsing itu merubah.

dari string ke date atau format. Format itu merubah dari date ke string, jadi kebalikannya. Jadi date formatter digunakan untuk merubah dari string ke date atau kebalikannya, dari date ke string.

Oke, date format mendukung internationalization. Jika misalnya kita ingin melakukan format atau parse, sehingga kita bisa menerima data dengan data misalnya Sunday, Monday, atau misalnya data bahasa Indonesia Minggu, Senin itu juga bisa. Jadi ini sudah didukung.

Nah, datformat itu adalah abstract class. Jadi, teman-teman perlu pakai implementasinya. Nah, bagaimana implementasinya? Implementasinya adalah sudah disediakan juga sama si Java, namanya adalah simple datformat.

Jadi, teman-teman bisa gunakan class yang namanya simple datformat. Kenapa? Karena kalau datformatnya saja dia adalah abstract class.

Sebelum teman-teman belajar tentang simple datformat, teman-teman perlu mengetahui pattern. Pattern itu adalah pola. teman-teman ngelakuin parsing atau format si tipe data date. Jadi seperti apa? Ini adalah patternnya.

Jadi patternnya itu ada banyak ya. Teman-teman bisa lihat detailnya di sini. Ini halamannya saya screenshot ya. Ini dari halaman dokumentasi resminya di kelas simple date format.

Jadi ini adalah patternnya. Jadi kalau teman-teman mau representasikan era misalnya, teman-teman gunakan G, G besar. Kalau year, teman-teman bisa gunakan Y ya. Nah ini Y kecil ya, year. Lalu Y besar adalah week year seperti ini.

Jadi kalau misalnya 96 dia jadinya 09 seperti ini. Saya sih lebih suka pakai yang Y ini, Y kecil. Kalau M berarti month in year. Month in year itu seperti Juli, Jul 07 seperti itu.

Kalau L month in year stand alone for my. Ini sebenarnya saya agak bingung sih maksudnya apa. Nah habis itu ada W yaitu week in year. Jadi bisa week gitu ya. Ada W besar, ada week in month gitu ya.

Ini minggu dalam tahun, kalau ini minggu dalam bulan ya. Kalau ini day ya, day in year. Jadi ini day besar itu hari dalam tahun. Jadi contohnya kalau hari ke 100, hari ke 200 gitu ya. Ini adalah seperti ini.

Kalau daynya kecil ini day in month, hari dalam bulan. Jadi cuma sampai mungkin 31. Dan lain-lain ini banyak banget ya. Jadi teman-teman bisa gunakan seperti ini. Nah gimana kalau ada 2 kayak gini nih ini kan ada 96 eh 1996 ada 96. Nah ini kalau teman-teman Y nya 4 kali maka dia akan pakai yang ini ya. Pokoknya kalau di atas 3 atau 4 ke atas gitu ya itu pasti pakenya formatnya yang ini.

Kalau teman-teman Y nya 2 kali maka teman-teman akan gunakan formatnya yang ini. Begitu juga bulan kalau teman-teman M nya 4 kali maka dia akan gunakan yang ini. Kalau M nya 2 kali dia akan gunakan yang ini.

Kalau M nya 3 kali teman-teman akan dapatnya yang ini. Begitu juga ini kalau teman-teman mau ya. Kalau misalnya E-nya berapa kali, itu yang 4 kali, itu pakainya Choose Day. Kalau E-nya cuma 2 kali, teman-teman pakainya yang 2 doang gitu ya. Jadi ini formatnya.

Teman-teman nggak perlu hapalkan sih ya. Teman-teman tinggal buka aja alaman dokumentasi ini. Nanti kalau teman-teman butuh formater.

patternnya seperti apa, teman-teman tinggal buka halaman ini. Oke, seperti apa sih cara penggunaannya? Jadi contoh penggunaannya seperti ini.

Jadi teman-teman nanti bikin simple depth format ya objeknya lalu ketika buat simple depth format di sini teman-teman masukkan patternnya. Jadi pattern ini teman-teman mau nanti polanya bentuknya seperti apa. Contohnya saya pakai EEE besar 4 kali artinya apa? Kalau EEE besar 4 kali Nah ini E besar ya, 4 kali artinya saya akan menampilkan tulisan harinya, hari yang full, seperti ini, Tuesday misalnya.

Nah selanjutnya saya DD 2 kali, artinya DD itu adalah day, day dalam month, ya berarti di sini akan keluar tanggalnya. Lalu MMM, M itu adalah monthnya, M ya, month dalam tahun, dan saya pakai 4 artinya nanti keluarnya seperti ini, Juli. Dan YYY atau year ya, sebanyak 4 kali, berarti saya akan pakai full year seperti ini, oke ya. Jadi seperti itu kita akan sambil coba jadi kalau teman-teman coba kita akan bikin dulu nama file unit testnya adalah datformat test kita akan bikin testnya test datformat jadi kita pakenya simple var datformat misalnya sama dengan new simple datformat. Oh disini patternnya ya jadi patternnya contohnya kita akan bikin E-E-E-E ini adalah hari ya, setelah itu D-D tanggal M-M-M-M itu bulan dalam tulisan full, setelah itu Y-Y-Y-Y ya, sama kan sama yang ini, nah ini sama oke.

Nah selanjutnya udah bikin berarti ini kita udah bikin date format ya, selanjutnya apa yang dilakukan? Selanjutnya adalah kita bisa gunakan date format titik format ya, format ini untuk ngelakuin format berubah dari tipe data waktu menjadi string, atau kalau parse ya. parse itu digunakan untuk tipe data tadinya string ya string tulisan tanggal format seperti ini patternnya menjadi tipe data date tapi ingat ya kalau parsenya itu teman-teman inputnya salah contohnya kan inputnya kita patternnya seperti ini kalau teman-teman coba inputkan data yang patternnya salah gitu ya maka teman-teman akan otomatis terjadi error exception ya kita akan pakai format dulu format disini misalnya new date New date itu berarti saat ini sekarang ya.

Oke kita akan print out. Oke disini adalah var formatnya hasilnya. Ini berupa string.

Lalu kita akan print out format. Oke kita akan coba running. Kita lihat hasilnya.

Hasilnya adalah Wednesday 3 March 2021. Karena laptop saya pakai bahasa Inggris. Jadi ini keluarnya pakai bahasa Inggris. Jadi seperti ini.

Jadi kalau teman-teman mau konversi dari tipe data date menjadi tulisan gitu ya, teks, itu teman-teman jangan lakukan manual gitu ya, jangan lakukan manual tanggal berapa dicek, bulan berapa dan sebagainya itu nggak perlu manual gitu ya. Teman-teman cukup gunakan yang simple date format ini. Nah sekarang pertanyaannya gimana internationalization di dalam date format. Jadi di dalam ini, simple date format sebenarnya ada parameter yang kedua, namanya adalah local.

Jadi teman-teman bisa tambahkan lokal juga di sini. Jadi contohnya kita mau formatnya dalam bahasa Indonesia misalnya ya. Jadi teman-teman sesimpel bikin lokal bahasa Indonesia di sini. Lalu teman-teman masukkan lokalnya ke sini. Nanti ketika teman-teman lakukan format, harusnya ini string formatnya dalam tulisan bahasa Indonesia.

Oke, untuk memastikan kita coba. Jadi saya ini akan buat, saya akan copy paste. Lalu di sini Indonesia. Oke, kita akan bikin lokal dulu. Par Indonesia sama dengan new log.

lokal disini n disini ID ya aduh disini ketika bikin simple date format teman-teman tinggal silakan tambahkan Indonesia di belakangnya ya ini ada parameter yang ini parameter patternnya dan parameter lokalnya oke setelah itu kita akan coba running nah lihat keluarnya adalah Rabu 3 Maret 2021 ya lihat ini Marutnya bahasa Indonesia dan rabunya pun bahasa Indonesia ya. Jadi seperti ini kalau teman-teman mau ngelakuin internationalization ya untuk tipe data date. Jadi teman-teman nggak perlu ngelakuin manual ya.

Gimana kalau kita mau ke Jepang oke kita akan saya kalau Jepang lokalnya gimana ya. Kita iseng aja ya Japan. Japan berarti JP ya country-nya. ini kita akan buat disini copas japan ini oke sorry ini JP ya lalu disini bahasanya japan japanis JA berarti ya Ini JA.

Oke, selesai. Kita coba running. Nah, hasilnya kayak gini. Nah, ini untuk memastikan benar atau enggaknya, coba kita pakai Google Translate ya. Apakah benar atau tidak.

Kita akan coba Jepang ya. Pilih, paste. Nah, benar nih. Rabu 3 Maret 2021. Ini bisa Jepangnya. Jadi, teman-teman enak banget kan kalau teman-teman mau konversi dari tipe data.

date menjadi bahasa apapun ya teman-teman tinggal gunakan simple date format. Simple date format lalu disini lokalnya apa? Ini kita ganti ya jadi Japan berarti.

Nah seperti ini. Jadi semuanya sudah didukung ya kalau untuk international session tipe data tanggal dan waktu. Jadi teman-teman nggak perlu pusing lagi untuk konversi.

Oke selanjutnya gimana kalau untuk parsing. Jadi kalau misalnya tadi kan ini ya istilahnya itu ngeformat ya dari tipe data date menjadi string. Nah gimana kalau kebalikannya dari string menjadi date? Nah itu juga bisa teman-teman tinggal gunakan parse. Tapi kalau parse teman-teman pastikan data stringnya itu beneran valid.

Kalau tidak valid dia akan error namanya parse exception. Jadi ini kalau contohnya teman-teman mau input dari aplikasi desktop atau aplikasi ini ya aplikasi web kan biasanya dalam bentuk string gitu ya. Nah teman-teman bisa pakai datformat ini untuk nge-parsing datanya dari tipe data string tersebut menjadi tipe data dat.

Oke kita akan coba jadi yang bahasa Indonesia dulu disini misalnya. Oke kita akan coba ini datformat parse misalnya ya. Jadi disini kita akan var date sama dengan date format titik parse ya. Tekstnya apa? Jadi kita harus sesuaikan dengan patternnya.

Disini misalnya selasa gitu ya. Samakan saja misalnya Rabu tanggal, eh bulan 3. Sorry tanggal 3 bulan Maret 2021 misalnya. Nah ini otomatis error ya kalau misalnya ini ada exception jadi kita bisa handle tambahkan try catch dia akan keluar parse exception saya akan print out.

Di sini misalnya error parse saya tambahkan e.get message. Oke kalau misalnya sudah kita akan print out datenya. Oke kita coba running. Nah keluarnya seperti ini, ini tipe data tanggalnya, berarti sudah benar ya. Dan kalau misalnya saya error, contohnya salah EI, kita coba running.

Nah keluarnya ini, error parse, unparse, dead, salah EI ini. Jadi kalau misalnya error ya seperti itu keluarnya ya. Oke, nah gimana kalau kita coba pakai yang bahasa Jepang oke, biar nggak penasaran kita coba pakai bahasa Jepang apakah bisa parsing juga. parse japan ini JA ya tadi ya JP Jepang lalu saya lupa tadi tulisan Jepangnya seperti apa kita coba running ini dulu deh yang japan ini kita copas pindahkan ke sini Oke kita coba running.

Nah sukses. Berarti kita juga bisa pakai inputnya pakai bahasa Jepang untuk kita konversi menjadi tipe data date. Jadi ini adalah internationalization di tipe data date dan juga time.

Jadi semuanya sudah otomatis di handle sama Java terutama kelas date format dan juga simple date format. Jadi teman-teman tidak perlu lagi melakukan internationalization untuk tipe data waktu ini secara manual.