Обмен технологиями

Решение проблем интернационализации и локализации в Spring Boot

2024-07-12

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

Решение проблем интернационализации и локализации в Spring Boot

Привет всем, я редактор Weizhuan Taoke System 3.0, а также программист, который не носит длинные кальсоны зимой, но все равно должен сохранять прохладу в холодную погоду!

Обзор интернационализации и локализации

Интернационализация (сокращенно i18n) и локализация (сокращенно l10n) являются очень важными факторами при разработке приложений для глобальных пользователей. Интернационализация подразумевает разработку и внедрение программных продуктов таким образом, чтобы они могли адаптироваться к потребностям различных языков и культурных традиций. Локализация основана на интернационализации и адаптации в соответствии с конкретными регионами или языковыми привычками, чтобы обеспечить более удобный интерфейс.

1. Настройка интернационализации в Spring Boot

В Spring Boot интернационализация и локализация в основном достигаются с помощью файлов ресурсов и соответствующей поддержки, предоставляемой Spring. Давайте сначала посмотрим, как настроить и использовать эти функции.

1.1. Настройка файлов ресурсов.

В проекте Spring Boot вы можете использовать файлы свойств (*.properties) или файлы YAML для определения текстовой информации на разных языках. Обычно мы создаем соответствующий файл ресурсов для каждого языка, например messages.properties (файл по умолчанию), messages_en.properties (английский), messages_zh_CN.properties (упрощенный китайский) и т. д.

Пример файла ресурсов messages.properties:

greeting.message=Welcome to our application!
button.submit=Submit
label.username=Username
label.password=Password
  • 1
  • 2
  • 3
  • 4
1.2. Использование международных ресурсов в Spring Boot.

В Spring Boot пройдитеMessageSourceиLocaleResolverЗагружать и анализировать файлы ресурсов на разных языках и адаптировать их в соответствии с языковыми стандартами пользователя.

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. Используйте международные ресурсы.

В контроллере или службе передайтеMessageSourceЧтобы получить текстовую информацию в определенной локали.

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. Лучшие практики интернационализации и локализации

Помимо базовой настройки и использования, эффекты интернационализации и локализации можно дополнительно оптимизировать следующими способами:

  • Поддержка большего количества языков: Добавляйте файлы ресурсов на большем количестве языков в соответствии с потребностями пользователя.
  • Динамически переключать языки: поддержка пользователей для переключения языков в интерфейсе, например, с помощью параметров запроса или пользовательских настроек.
  • Локализованная дата, время и валюта: используйте инструменты форматирования, предоставляемые Spring, для локализации даты, времени и валюты.
  • Информация об исключении интернационализации: интернационализация информации об исключениях приложений для улучшения взаимодействия с пользователем.

в заключение

В этой статье рассказывается, как решить проблемы интернационализации и локализации в проектах Spring Boot, а также добиться многоязычной и региональной адаптации путем настройки файлов ресурсов, использования поддержки интернационализации, предоставляемой Spring, и лучших практик. Эти технологии и методы помогают разработчикам создавать удобные и профессиональные приложения для пользователей по всему миру.

Выпущено редактором Micro-earning Taoke System 3.0, это должен быть качественный продукт. При перепечатке указывайте источник!