Berbagi teknologi

Memecahkan masalah internasionalisasi dan lokalisasi di Spring Boot

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Memecahkan masalah internasionalisasi dan lokalisasi di Spring Boot

Halo semuanya, Saya editor Weizhuang Taoke System 3.0, dan saya juga seorang programmer yang tidak memakai celana panjang di musim dingin, tetapi tetap harus anggun dalam cuaca dingin!

Tinjauan Internasionalisasi dan Lokalisasi

Internasionalisasi (disingkat i18n) dan lokalisasi (disingkat l10n) merupakan pertimbangan yang sangat penting ketika mengembangkan aplikasi untuk pengguna global. Internasionalisasi mengacu pada desain dan implementasi produk perangkat lunak sehingga dapat beradaptasi dengan kebutuhan bahasa dan kebiasaan budaya yang berbeda; lokalisasi didasarkan pada internasionalisasi dan adaptasi menurut wilayah atau kebiasaan bahasa tertentu untuk memberikan pengalaman yang lebih ramah pengguna.

1. Konfigurasi internasionalisasi di Spring Boot

Di Spring Boot, internasionalisasi dan lokalisasi terutama dicapai melalui file sumber daya dan dukungan terkait yang disediakan oleh Spring. Pertama-tama mari kita lihat cara mengonfigurasi dan menggunakan fitur-fitur ini.

1.1. Konfigurasikan file sumber daya

Dalam proyek Spring Boot, Anda dapat menggunakan file properti (*.properties) atau file YAML untuk menentukan informasi teks dalam berbagai bahasa. Biasanya, kami akan membuat file sumber daya yang sesuai untuk setiap bahasa, seperti messages.properties (file default), messages_en.properties (Bahasa Inggris), messages_zh_CN.properties (Cina Sederhana), dll.

Contoh properti pesan file sumber daya:

greeting.message=Welcome to our application!
button.submit=Submit
label.username=Username
label.password=Password
  • 1
  • 2
  • 3
  • 4
1.2. Menggunakan sumber daya internasional di Spring Boot

Di Spring Boot, lulusMessageSourceDanLocaleResolverUntuk memuat dan mengurai file sumber daya dalam berbagai bahasa, dan beradaptasi sesuai dengan Lokal pengguna.

package cn.juwatech.localization;

import cn.juwatech.Application;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver;

import java.util.Locale;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Bean
    public LocaleResolver localeResolver() {
        AcceptHeaderLocaleResolver resolver = new AcceptHeaderLocaleResolver();
        resolver.setDefaultLocale(Locale.US); // 设置默认Locale
        return resolver;
    }

    @Bean
    public MessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("classpath:messages");
        messageSource.setDefaultEncoding("UTF-8");
        return messageSource;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
1.3. Menggunakan sumber daya internasional

Di pengontrol atau layanan, lewatiMessageSourceUntuk mendapatkan informasi teks di bawah Lokal tertentu.

package cn.juwatech.localization;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GreetingController {

    @Autowired
    private MessageSource messageSource;

    @GetMapping("/greeting")
    public String greeting() {
        Locale locale = LocaleContextHolder.getLocale();
        return messageSource.getMessage("greeting.message", null, locale);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

2. Praktik terbaik internasionalisasi dan lokalisasi

Selain konfigurasi dan penggunaan dasar, efek internasionalisasi dan lokalisasi dapat lebih dioptimalkan dengan cara berikut:

  • Mendukung lebih banyak bahasa: Tambahkan file sumber daya dalam lebih banyak bahasa sesuai kebutuhan pengguna.
  • Beralih bahasa secara dinamis: Mendukung pengguna untuk beralih bahasa pada antarmuka, seperti melalui parameter permintaan atau pengaturan pengguna.
  • Tanggal, waktu dan mata uang yang dilokalkan: Gunakan alat pemformatan yang disediakan oleh Spring untuk melokalisasi tanggal, waktu, dan mata uang.
  • Informasi pengecualian internasionalisasi: Internasionalisasikan informasi pengecualian aplikasi untuk meningkatkan pengalaman pengguna.

Kesimpulannya

Artikel ini memperkenalkan cara mengatasi masalah internasionalisasi dan lokalisasi dalam proyek Spring Boot, dan mencapai adaptasi multi-bahasa dan regional dengan mengonfigurasi file sumber daya, menggunakan dukungan internasionalisasi yang disediakan oleh Spring, dan praktik terbaik. Teknologi dan metode ini membantu pengembang membangun aplikasi yang ramah dan profesional untuk pengguna global.

Diproduksi oleh editor Micro-earning Taoke System 3.0, produk tersebut harus berkualitas tinggi. Harap sebutkan sumbernya saat mencetak ulang!