Rumah > Java > javaTutorial > Pengantarabangsaan di Jawa

Pengantarabangsaan di Jawa

PHPz
Lepaskan: 2024-07-31 09:00:41
asal
639 orang telah melayarinya

Internationalisation in Java

Pengantarabangsaan (sering disingkat sebagai i18n) merujuk kepada mereka bentuk dan menyediakan perisian agar mudah disesuaikan dengan pelbagai bahasa, wilayah dan budaya tanpa memerlukan perubahan kejuruteraan pada kod. Ini biasanya diikuti oleh penyetempatan (sering disingkat sebagai l10n), yang melibatkan penyesuaian perisian antarabangsa kepada tempat tertentu, termasuk menterjemah teks, pelarasan untuk konvensyen tempatan dan mengubah suai elemen khusus setempat yang lain.

Matlamatnya adalah untuk menjadikan perisian cukup fleksibel untuk menyokong berbilang tempat dengan mengasingkan logik teras daripada elemen khusus tempat seperti bahasa dan konvensyen budaya.

ResourceBundle

Menyetempatkan mesej teks dalam program Java biasa agak mudah menggunakan kelas ResourceBundle yang disediakan oleh bahasa pengaturcaraan. Kelas ResourceBundle memudahkan untuk memuatkan, atribut nilai kunci khusus setempat yang ditakrifkan dalam fail sifat. Fail sifat ini dikenali sebagai himpunan sumber.

ResourceBundle resources = 
        ResourceBundle.getBundle("messages", Locale.FRANCE);
String greeting = resources.getString("greeting.hello");
assertEquals("Bonjour le monde", greeting);

String greetingUsername = 
        MessageFormat.format(resources.getString("greeting.username"), "Ayo");
assertEquals("Bonjour Ayo", greetingUsername);
Salin selepas log masuk

Menggunakan i8n-resource-bundle

Kaedah lain untuk menyetempatkan mesej teks dalam program Java adalah menggunakan perpustakaan pihak ketiga. Salah satu perpustakaan tersebut ialah i18n-resource-bundle. Pustaka ini adalah pelaksanaan ke atas ResourceBundle yang dibincangkan sebelum ini.

Kebergantungan

Tambah kebergantungan di bawah dalam pom.xml anda jika anda menggunakan Maven

<dependency>
    <groupId>io.github.jelilio</groupId>
    <artifactId>i18n-resource-bundle</artifactId>
    <version>0.0.2</version>
</dependency>
Salin selepas log masuk

Jika anda lebih suka Gradle, gunakan ini sebaliknya;

implementation 'io.github.jelilio:i18n-resource-bundle:0.0.2'
Salin selepas log masuk

MessageSource

i8n-resource-bundle menyediakan antara muka MessageSource yang mentakrifkan beberapa kaedah untuk menyelesaikan mesej. Ia mempunyai dua pelaksanaan, ResourceBundleMessageSource dan ReloadableResourceBundleMessageSource. Kedua-dua pelaksanaan mengakses himpunan sumber menggunakan nama asas yang ditentukan serupa dengan Java ResourceBundle. ResourceBundleMessageSource menyelesaikan mesej membentuk himpunan sumber untuk tempat yang berbeza dengan bergantung pada pelaksanaan ResourceBundle Java dalam kombinasi dengan MessageFormat untuk penghuraian mesej.

ResourceBundleMessageSource messageSource = 
        new ResourceBundleMessageSource();
messageSource.setBasenames("messages");

String greeting = messageSource
        .getMessage("greeting.hello", null, Locale.FRANCE);
assertEquals("Bonjour le monde", greeting);

String greetingUsername = messageSource
        .getMessage("greeting.username", new String[]{"Ayo"}, Locale.FRANCE);
assertEquals("Bonjour Ayo", greetingUsername);
Salin selepas log masuk

ReloadableResourceBundleMessageSource

Tidak seperti ResourceBundleMessageSource, ReloadableResourceBundleMessageSource menggunakan tika Properties Java sebagai struktur data tersuainya untuk mesej yang memuatkannya menggunakan strategi berbeza yang membenarkan memuatkan semula fail sifat berdasarkan perubahan cap waktu dan pengekodan aksara tertentu tanpa perlu memulakan semula aplikasi.

ReloadableResourceBundleMessageSource messageSource = 
        new ReloadableResourceBundleMessageSource();
messageSource.setBasenames("messages");

String greeting = messageSource
        .getMessage("greeting.hello", null, Locale.FRANCE);
assertEquals("Bonjour le monde", greeting);

String greetingUsername = messageSource
        .getMessage("greeting.username", new String[]{"Ayo"}, Locale.US);
assertEquals("Bonjour Ayo", greetingUsername);
Salin selepas log masuk

Kesimpulan

Dalam panduan ringkas ini, kami belajar untuk melaksanakan pengantarabangsaan (i18n) dalam aplikasi Java menggunakan ResourceBundle dan i18n-resource-bundle. kami mengetahui cara himpunan sumber diselesaikan berdasarkan nama tempat yang dibekalkan dan melihat contoh dalam tindakan.

Rujukan

  • Tutorial Java™ - Mengasingkan Data Khusus Tempatan
  • i18n-resource-bundle
  • Kod sumber: i18n-in-java

Atas ialah kandungan terperinci Pengantarabangsaan di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan