Rumah  >  Artikel  >  Java  >  Pengantarabangsaan di Jawa

Pengantarabangsaan di Jawa

PHPz
PHPzasal
2024-07-31 09:00:41551semak imbas

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);

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>

Jika anda lebih suka Gradle, gunakan ini sebaliknya;

implementation 'io.github.jelilio:i18n-resource-bundle:0.0.2'

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);

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);

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!

Kenyataan:
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