From 5b249e8e1e39dfe777a8a2d417c3d44b6229d096 Mon Sep 17 00:00:00 2001 From: roniragilimankhoirul Date: Tue, 19 Sep 2023 00:06:00 +0700 Subject: [PATCH 1/2] Add Indonesian translation --- .../src/main/java/jadx/gui/utils/NLS.java | 1 + .../resources/i18n/Messages_id_ID.properties | 422 ++++++++++++++++++ 2 files changed, 423 insertions(+) create mode 100644 jadx-gui/src/main/resources/i18n/Messages_id_ID.properties diff --git a/jadx-gui/src/main/java/jadx/gui/utils/NLS.java b/jadx-gui/src/main/java/jadx/gui/utils/NLS.java index 4b6762299ad..90cdc4b2e8d 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/NLS.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/NLS.java @@ -39,6 +39,7 @@ public class NLS { LANG_LOCALES.add(new LangLocale("ko", "KR")); LANG_LOCALES.add(new LangLocale("pt", "BR")); LANG_LOCALES.add(new LangLocale("ru", "RU")); + LANG_LOCALES.add(new LangLocale("id", "ID")); LANG_LOCALES.forEach(NLS::load); diff --git a/jadx-gui/src/main/resources/i18n/Messages_id_ID.properties b/jadx-gui/src/main/resources/i18n/Messages_id_ID.properties new file mode 100644 index 00000000000..5311de078f5 --- /dev/null +++ b/jadx-gui/src/main/resources/i18n/Messages_id_ID.properties @@ -0,0 +1,422 @@ +language.name=Indonesian + +menu.file=Berkas +menu.view=Tampilan +menu.recent_projects=Proyek Terbaru +menu.no_recent_projects=Tidak ada proyek terbaru +menu.preferences=Preferensi +menu.sync=Sinkronisasi dengan editor +menu.flatten=Tampilkan paket yang diratakan +menu.heapUsageBar=Tampilkan penggunaan memori +menu.alwaysSelectOpened=Selalu Pilih Berkas/Kelas yang Terbuka +menu.dock_log=Kaitkan pemantau log +menu.navigation=Navigasi +menu.text_search=Pencarian Teks +menu.class_search=Pencarian Kelas +menu.comment_search=Pencarian Komentar +menu.goto_main_activity=Pergi ke Activitas Utama +menu.tools=Alat +menu.plugins=Plugin +menu.decompile_all=Deskompilasi semua kelas +menu.reset_cache=Reset cache kode +menu.deobfuscation=Deobfikasi +menu.log=Pemantau Log +menu.help=Bantuan +menu.about=Tentang +menu.quark=Mesin Quark +menu.update_label=Versi baru %s tersedia! + +file.open_action=Buka berkas ... +file.add_files_action=Tambahkan berkas +file.open_title=Buka berkas +file.open_project=Buka proyek +file.new_project=Proyek baru +file.save_project=Simpan proyek +file.save_project_as=Simpan proyek sebagai... +file.reload=Muat ulang berkas +file.live_reload=Muat ulang otomatis +file.live_reload_desc=Muat ulang berkas secara otomatis saat ada perubahan +file.open_mappings=Buka pemetaan... +file.save_mappings=Simpan pemetaan +file.save_mappings_as=Simpan pemetaan sebagai... +file.close_mappings=Tutup pemetaan +file.save_all=Simpan semua +file.save=Simpan +file.export_gradle=Simpan sebagai proyek gradle +file.save_all_msg=Pilih direktori untuk menyimpan sumber yang telah didekompilasi +file.exit=Keluar + +start_page.title=Halaman Awal +start_page.start=Mulai +start_page.recent=Proyek Terbaru + +tree.inputs_title=Input +tree.input_files=Berkas +tree.input_scripts=Skrip +tree.sources_title=Kode Sumber +tree.resources_title=Sumber Daya +tree.loading=Memuat... + +progress.load=Memuat +progress.save_mappings=Menyimpan pemetaan +progress.decompile=Deskompilasi +progress.canceling=Membatalkan + +error_dialog.title=Kesalahan +error_dialog.not_found=%s tidak ditemukan + +search.previous=Sebelumnya +search.next=Berikutnya +search.mark_all=Tandai Semua +search.regex=Regex +search.match_case=Sama huruf +search.whole_word=Seluruh kata +search.find=Cari +search.results=%s%d hasil + +tabs.copy_class_name=Salin Nama +tabs.close=Tutup +tabs.closeOthers=Tutup yang Lain +tabs.closeAll=Tutup Semua +tabs.closeAllRight=Tutup Semua yang Kanan +tabs.code=Kode +tabs.smali=Smali + +nav.back=Kembali +nav.forward=Maju + +message.taskTimeout=Tugas melebihi batas waktu %d ms. +message.userCancelTask=Tugas dibatalkan oleh pengguna. +message.memoryLow=JADX kekurangan memori. Harap restart dengan peningkatan ukuran heap maksimum. +message.taskError=Tugas gagal dengan kesalahan (periksa log untuk detailnya). +message.errorTitle=Kesalahan +message.load_errors=Pemuatan gagal.\nJumlah kesalahan: %d\nKlik OK untuk membuka penampil log. +message.no_classes=Tidak ada kelas yang dimuat, tidak ada yang dapat didekompilasi! + +message.saveIncomplete=Simpan tidak lengkap.
%s
%d kelas atau sumber daya tidak disimpan! +message.indexIncomplete=Indeks beberapa kelas dilewati.
%s
%d kelas tidak diindeks dan tidak akan muncul dalam hasil pencarian! +message.indexingClassesSkipped=JADX kekurangan memori. Oleh karena itu %d kelas tidak diindeks.
Jika Anda ingin semua kelas diindeks, restart JADX dengan ukuran heap maksimum yang lebih besar. + +heapUsage.text=Penggunaan memori JADX: %.2f GB dari %.2f GB + +common_dialog.ok=OK +common_dialog.cancel=Batal +common_dialog.add=Tambah +common_dialog.update=Perbarui +common_dialog.remove=Hapus +common_dialog.reset=Reset + +file_dialog.supported_files=Berkas yang didukung +file_dialog.load_dir_title=Muat direktori +file_dialog.load_dir_confirm=Muat semua berkas dari direktori? + +search_dialog.open=Buka +search_dialog.cancel=Batal +search_dialog.open_by_name=Cari teks: +search_dialog.search_button=Cari +search_dialog.search_history=Riwayat pencarian +search_dialog.auto_search=Pencarian otomatis +search_dialog.search_in=Cari definisi dari: +search_dialog.class=Kelas +search_dialog.method=Metode +search_dialog.field=Bidang +search_dialog.code=Kode +search_dialog.options=Opsi pencarian: +search_dialog.ignorecase=Non-ketetapan huruf besar kecil +search_dialog.load_more=Muat lebih banyak +search_dialog.load_all=Muat semua +search_dialog.stop=Berhenti +search_dialog.results_incomplete=Ditemukan %d+ +search_dialog.results_complete=Ditemukan %d (lengkap) +search_dialog.resources_load_errors=Kesalahan pemuatan: %d +search_dialog.resources_skip_by_size=Dilewati karena ukuran: %d +search_dialog.resources_check_logs=(klik untuk memeriksa log) +search_dialog.col_node=Node +search_dialog.col_code=Kode +search_dialog.sort_results=Sortir hasil +search_dialog.regex=Regex +search_dialog.active_tab=Hanya tab aktif +search_dialog.comments=Komentar +search_dialog.resource=Sumber daya +search_dialog.keep_open=Tetap terbuka +search_dialog.tip_searching=Mencari + +usage_dialog.title=Pencarian penggunaan +usage_dialog.label=Penggunaan untuk: + +comment_dialog.title.add=Tambahkan komentar kode +comment_dialog.title.update=Perbarui komentar kode +comment_dialog.label=Komentar: +comment_dialog.usage=Gunakan Shift + Enter untuk memulai baris baru + +log_viewer.title=Pemantau Log +log_viewer.log_level=Tingkat log: +log_viewer.mode=Mode: +log_viewer.modes=Semua|Semua skrip|Skrip saat ini +log_viewer.hide=Sembunyikan +log_viewer.dock=Kaitkan +log_viewer.undock=Lepas kaitan +log_viewer.clear=Bersihkan + +about_dialog.title=Tentang JADX + +preferences.title=Preferensi +preferences.deobfuscation=Deobfikasi +preferences.appearance=Tampilan +preferences.shortcuts=Pintas +preferences.select_shortcuts=Pilih grup pintas tertentu +preferences.decompile=Deskompilasi +preferences.plugins=Plugin +preferences.project=Proyek +preferences.other=Lainnya +preferences.language=Bahasa +preferences.lineNumbersMode=Mode nomor baris editor +preferences.jumpOnDoubleClick=Aktifkan lompat saat dua kali klik +preferences.useAlternativeFileDialog=Gunakan dialog berkas alternatif +preferences.check_for_updates=Periksa pembaruan saat memulai +preferences.useDx=Gunakan dx/d8 untuk mengonversi bytecode Java +preferences.decompilationMode=Mode deskompilasi +preferences.codeCacheMode=Mode cache kode +preferences.usageCacheMode=Mode cache data penggunaan +preferences.showInconsistentCode=Tampilkan kode yang tidak konsisten +preferences.escapeUnicode=Escape unicode +preferences.replaceConsts=Ganti konstanta +preferences.respectBytecodeAccessModifiers=Hormati pengubah akses bytecode +preferences.useImports=Gunakan pernyataan impor +preferences.useDebugInfo=Gunakan info debug +preferences.inlineAnonymous=Inline kelas anonim +preferences.inlineMethods=Inline metode +preferences.inlineKotlinLambdas=Izinkan untuk menggantikan Lambdas Kotlin +preferences.moveInnerClasses=Pindahkan kelas dalam ke kelas induk +preferences.extractFinally=Ekstrak blok finally +preferences.fsCaseSensitive=File sistem bersifat sensitif huruf besar-kecil +preferences.skipResourcesDecode=Jangan dekode sumber daya +preferences.useKotlinMethodsForVarNames=Gunakan metode Kotlin untuk mengganti nama variabel +preferences.commentsLevel=Tingkat komentar kode +preferences.autoSave=Simpan otomatis +preferences.threads=Jumlah utas pemrosesan +preferences.excludedPackages=Package yang dikecualikan +preferences.excludedPackages.tooltip=Daftar nama paket yang dipisahkan spasi yang tidak akan di deskompilasi atau diindeks (menghemat RAM) +preferences.excludedPackages.button=Edit +preferences.excludedPackages.editDialog=Daftar nama paket yang dipisahkan spasi yang tidak akan di deskompilasi atau diindeks (menghemat RAM)
contoh: android.support +preferences.cfg=Hasilkan grafik CFG metode (dalam format 'dot') +preferences.raw_cfg=Hasilkan grafik CFG mentah +preferences.integerFormat=Format bilangan bulat +preferences.font=Font editor +preferences.smali_font=Font monospasi (Smali/Hex) +preferences.laf_theme=Tema +preferences.theme=Tema editor +preferences.start_jobs=Deskompilasi latar belakang otomatis +preferences.select_font=Ubah +preferences.select_smali_font=Ubah +preferences.deobfuscation_on=Aktifkan deobfikasi +preferences.generated_renames_mapping_file_mode=Mode penanganan file pemetaan +preferences.deobfuscation_min_len=Panjang nama minimum +preferences.deobfuscation_max_len=Panjang nama maksimum +preferences.deobfuscation_source_alias=Gunakan nama berkas sumber sebagai alias nama kelas +preferences.deobfuscation_res_name_source=Sumber nama sumber daya yang lebih baik +preferences.save=Simpan +preferences.cancel=Batal +preferences.reset=Reset +preferences.reset_message=Reset pengaturan ke nilai default? +preferences.reset_title=Reset pengaturan +preferences.copy=Salin ke papan klip +preferences.copy_message=Semua nilai pengaturan telah disalin ke papan klip +preferences.rename=Ganti nama identitas +preferences.rename_case=Untuk memperbaiki masalah sensitivitas huruf besar-kecil +preferences.rename_valid=Untuk membuatnya valid +preferences.rename_printable=Untuk membuatnya dapat dicetak +preferences.search_group_title=Pencarian +preferences.search_results_per_page=Hasil per halaman (0 - tanpa batas) +preferences.res_file_ext=Ekstensi berkas sumber daya ('xml|html', * untuk semua) +preferences.res_skip_file=Lewati berkas sumber daya jika lebih besar (MB) (0 - nonaktifkan) + +preferences.plugins.install=Instal plugin +preferences.plugins.install_btn=Instal +preferences.plugins.uninstall_btn=Uninstal +preferences.plugins.location_id_label=Lokasi id: +preferences.plugins.plugin_jar=Pilih berkas jar Plugin +preferences.plugins.plugin_jar_label=atau +preferences.plugins.update_all=Perbarui Semua +preferences.plugins.details=Detail Plugin +preferences.plugins.task.installing=Menginstal plugin +preferences.plugins.task.uninstalling=Menguninstal plugin +preferences.plugins.task.updating=Mengperbarui plugin +preferences.plugins.task.downloading_list=Mengunduh daftar plugin + +preferences.cache=Cache +preferences.cache.location=Lokasi cache +preferences.cache.location_default=Direktori sistem cache aplikasi +preferences.cache.location_local=Direktori yang sama dengan berkas proyek +preferences.cache.location_custom=Lokasi kustom: +preferences.cache.change_notice=* untuk cache yang sudah ada, perubahan akan diterapkan setelah cache dihapus atau direset secara manual +preferences.cache.table.title=Daftar Cache +preferences.cache.table.project=Cache untuk proyek +preferences.cache.table.size=Penggunaan disk +preferences.cache.btn.usage=Hitung penggunaan +preferences.cache.btn.delete_selected=Hapus yang Dipilih +preferences.cache.btn.delete_all=Hapus Semua +preferences.cache.task.usage=Menghitung ukuran cache +preferences.cache.task.delete=Menghapus cache + +msg.open_file=Harap buka berkas +msg.saving_sources=Menyimpan sumber +msg.language_changed_title=Bahasa diubah +msg.language_changed=Bahasa baru akan ditampilkan saat aplikasi dimulai kembali. +msg.warning_title=Peringatan +msg.common_mouse_shortcut=Ini adalah tombol yang sering digunakan, apakah Anda yakin ingin mengaitkannya dengan tindakan? +msg.duplicate_shortcut=Pintas %s sudah diatur pada tindakan "%s" dari kategori "%s", lanjutkan? +msg.project_error_title=Kesalahan +msg.project_error=Proyek tidak dapat dimuat +msg.cmd_select_class_error=Gagal memilih kelas\n%s\nKelas tidak ada. +msg.cant_add_comment=Tidak dapat menambahkan komentar di sini + +popup.bytecode_col=Tampilkan Bytecode Dalvik +popup.line_wrap=Baris Wrap +popup.undo=Kembalikan +popup.redo=Ulang +popup.cut=Potong +popup.copy=Salin +popup.paste=Tempel +popup.delete=Hapus +popup.select_all=Pilih Semua +popup.frida=Salin sebagai potongan Frida +popup.xposed=Salin sebagai potongan Xposed +popup.find_usage=Cari Penggunaan +popup.go_to_declaration=Pergi ke Deklarasi +popup.exclude=Kecualikan +popup.exclude_packages=Kecualikan paket +popup.add_comment=Komentar +popup.search_comment=Cari komentar +popup.rename=Ganti nama +popup.search=Cari "%s" +popup.search_global=Cari Global "%s" +popup.remove=Hapus +popup.add_files=Tambahkan berkas +popup.add_scripts=Tambahkan skrip +popup.new_script=Skrip baru +popup.json_prettify=JSON Prettify + +script.run=Jalankan +script.save=Simpan +script.auto_complete=Auto Lengkapi +script.check=Periksa +script.format=Format Ulang +script.log=Tampilkan log + +exclude_dialog.title=Selektor Paket +exclude_dialog.ok=OK +exclude_dialog.select_all=Pilih semua +exclude_dialog.deselect=Batal pilih +exclude_dialog.invert=Balik pilihan + +confirm.save_as_title=Konfirmasi Simpan Sebagai +confirm.save_as_message=%s sudah ada.\nApakah Anda ingin menggantinya? +confirm.not_saved_title=Simpan proyek +confirm.not_saved_message=Simpan proyek saat ini sebelum melanjutkan? + +certificate.cert_type=Tipe +certificate.serialSigVer=Versi Tanda Tangan +certificate.serialNumber=Nomor Seri +certificate.cert_subject=Subjek +certificate.serialValidFrom=Berlaku dari +certificate.serialValidUntil=Berlaku hingga +certificate.serialPubKeyType=Tipe Kunci Publik +certificate.serialPubKeyExponent=Eksponen +certificate.serialPubKeyModulus=Modulus +certificate.serialPubKeyModulusSize=Ukuran Modulus (bit) +certificate.serialSigType=Tipe Tanda Tangan +certificate.serialSigOID=OID Tanda Tangan +certificate.serialMD5=Sidik Jari MD5 +certificate.serialSHA1=Sidik Jari SHA-1 +certificate.serialSHA256=Sidik Jari SHA-256 +certificate.serialPubKeyY=Y + +apkSignature.signer=Penandatangan +apkSignature.verificationSuccess=Verifikasi tanda tangan berhasil +apkSignature.verificationFailed=Verifikasi tanda tangan gagal +apkSignature.signatureSuccess=Tanda tangan APK yang valid v%d ditemukan +apkSignature.signatureFailed=Tanda tangan APK yang tidak valid v%d ditemukan +apkSignature.errors=Kesalahan +apkSignature.warnings=Peringatan +apkSignature.exception=Verifikasi APK gagal +apkSignature.unprotectedEntry=Berkas yang tidak dilindungi oleh tanda tangan APK v1. Modifikasi yang tidak sah pada entri-entri ini hanya dapat terdeteksi oleh tanda tangan APK v2 dan yang lebih tinggi. + +issues_panel.label=Masalah: +issues_panel.errors=%d kesalahan +issues_panel.warnings=%d peringatan +issues_panel.tooltip=Buka di penampil log + +debugger.process_selector=Pilih proses untuk debugging +debugger.step_into=Langkah Masuk (F7) +debugger.step_over=Langkah Atas (F8) +debugger.step_out=Langkah Keluar (Shift + F8) +debugger.run=Jalankan (F9) +debugger.stop=Hentikan debugger dan hentikan aplikasi +debugger.pause=Jeda +debugger.rerun=Jalankan Ulang +debugger.cfm_dialog_title=Keluar saat debugging +debugger.cfm_dialog_msg=Apakah Anda yakin ingin mengakhiri debugger? + +debugger.popup_set_value=Tetapkan Nilai +debugger.popup_change_to_zero=Ubah menjadi 0 +debugger.popup_change_to_one=Ubah menjadi 1 +debugger.popup_copy_value=Salin Nilai + +logcat.pause=Jeda Logcat +logcat.start=Lanjutkan Logcat +logcat.clear=Kosongkan Logcat + +logcat.error_fail_start=Gagal memulai Logcat +logcat.process=Proses +logcat.level=Tingkat +logcat.default=Bawaan +logcat.verbose=Verbose +logcat.debug=Debug +logcat.info=Info +logcat.warn=Peringatan +logcat.error=Kesalahan +logcat.fatal=Fatal +logcat.silent=Diam +logcat.logcat=Logcat +logcat.select_attached=Pilih Terlampir +logcat.select_all=Pilih Semua +logcat.unselect_all=Batal Pilih Semua + +set_value_dialog.label_value=Nilai +set_value_dialog.btn_set=Tetapkan Nilai +set_value_dialog.title=Tetapkan Nilai +set_value_dialog.neg_msg=Gagal menetapkan nilai. +set_value_dialog.sel_type=Pilih jenis untuk menetapkan nilai. + +adb_dialog.addr=Alamat ADB +adb_dialog.port=Port ADB +adb_dialog.path=Path ADB +adb_dialog.launch_app=Jalankan Aplikasi +adb_dialog.start_server=Menajalankan Server ADB +adb_dialog.refresh=Segarkan +adb_dialog.tip_devices=%d perangkat +adb_dialog.device_node=Perangkat +adb_dialog.missing_path=Harus memberikan path ADB untuk menjalankan server ADB. +adb_dialog.waiting=Menunggu untuk terhubung ke server ADB... +adb_dialog.connecting=Menghubungkan ke server ADB, alamat: %s:%s... +adb_dialog.connect_okay=Server ADB terhubung, alamat: %s:%s +adb_dialog.connect_fail=Gagal menghubungkan ke server ADB. +adb_dialog.disconnected=Server ADB terputus. +adb_dialog.start_okay=Server ADB dijalankan pada port: %s. +adb_dialog.start_fail=Gagal menjalankan server ADB pada port: %s! +adb_dialog.forward_fail=Gagal meneruskan dengan alasan tertentu. +adb_dialog.being_debugged_msg=Proses ini sepertinya sedang di-debug, apakah kita harus melanjutkan? +adb_dialog.unknown_android_ver=Gagal mendapatkan versi rilis Android, gunakan Android 8 sebagai default? +adb_dialog.being_debugged_title=Sedang Didebug oleh Pihak Lain. +adb_dialog.init_dbg_fail=Gagal menginisialisasi debugger. +adb_dialog.msg_read_mani_fail=Gagal mendekode AndroidManifest.xml +adb_dialog.no_devices=Tidak dapat menemukan perangkat apa pun untuk memulai aplikasi. +adb_dialog.restart_while_debugging_title=Memulai Ulang Saat Debugging +adb_dialog.restart_while_debugging_msg=Anda sedang debugging sebuah aplikasi, apakah Anda yakin ingin memulai ulang sesi? +adb_dialog.starting_debugger=Memulai debugger... + +action.variant=%s (variant) +action_category.menu_toolbar=Menu / Toolbar +action_category.code_area=Area Kode +action_category.plugin_script=Plugin Script From 8445dfa1823332d6642b46eaf443ac623a000fa4 Mon Sep 17 00:00:00 2001 From: Skylot Date: Wed, 20 Sep 2023 19:08:17 +0100 Subject: [PATCH 2/2] fix load i18n resources with deprecated language codes --- jadx-gui/src/main/java/jadx/gui/utils/NLS.java | 15 +++++++-------- jadx-gui/src/test/java/jadx/gui/TestI18n.java | 14 ++++++++++++++ 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/jadx-gui/src/main/java/jadx/gui/utils/NLS.java b/jadx-gui/src/main/java/jadx/gui/utils/NLS.java index 90cdc4b2e8d..d7c06fe2678 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/NLS.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/NLS.java @@ -1,6 +1,5 @@ package jadx.gui.utils; -import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import java.net.URL; @@ -51,20 +50,20 @@ public class NLS { private NLS() { } - private static void load(LangLocale locale) { - ResourceBundle bundle; - ClassLoader classLoader = ClassLoader.getSystemClassLoader(); - String resName = String.format("i18n/Messages_%s.properties", locale.get()); - URL bundleUrl = classLoader.getResource(resName); + private static void load(LangLocale lang) { + Locale locale = lang.get(); + String resName = String.format("i18n/Messages_%s.properties", locale.toLanguageTag().replace('-', '_')); + URL bundleUrl = NLS.class.getClassLoader().getResource(resName); if (bundleUrl == null) { throw new JadxRuntimeException("Locale resource not found: " + resName); } + ResourceBundle bundle; try (Reader reader = new InputStreamReader(bundleUrl.openStream(), StandardCharsets.UTF_8)) { bundle = new PropertyResourceBundle(reader); - } catch (IOException e) { + } catch (Exception e) { throw new JadxRuntimeException("Failed to load " + resName, e); } - LANG_LOCALES_MAP.put(locale, bundle); + LANG_LOCALES_MAP.put(lang, bundle); } public static String str(String key) { diff --git a/jadx-gui/src/test/java/jadx/gui/TestI18n.java b/jadx-gui/src/test/java/jadx/gui/TestI18n.java index 1a77582e1df..456114dd26d 100644 --- a/jadx-gui/src/test/java/jadx/gui/TestI18n.java +++ b/jadx-gui/src/test/java/jadx/gui/TestI18n.java @@ -8,6 +8,7 @@ import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Locale; import java.util.Properties; import java.util.Set; @@ -15,6 +16,9 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; +import jadx.gui.utils.LangLocale; +import jadx.gui.utils.NLS; + import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.empty; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -36,6 +40,16 @@ public static void init() { assertTrue(Files.exists(guiJavaPath)); } + @Test + public void verifyLocales() { + for (LangLocale lang : NLS.getLangLocales()) { + Locale locale = lang.get(); + System.out.println("Language: " + locale.getLanguage() + " - " + locale.getDisplayLanguage() + + ", country: " + locale.getCountry() + " - " + locale.getDisplayCountry() + + ", language tag: " + locale.toLanguageTag()); + } + } + @Test public void filesExactlyMatch() throws IOException { Files.list(i18nPath).forEach(p -> {