>  기사  >  Java  >  Spring Boot를 통해 다국어 지원 및 국제 애플리케이션 달성

Spring Boot를 통해 다국어 지원 및 국제 애플리케이션 달성

PHPz
PHPz원래의
2023-06-23 09:09:062216검색

세계화가 발전함에 따라 점점 더 많은 웹사이트와 애플리케이션에서 다국어 지원과 국제화 기능을 제공해야 합니다. 개발자에게 이러한 기능을 구현하는 것은 언어 번역, 날짜, 시간, 통화 형식 등 여러 측면을 고려해야 하기 때문에 쉬운 작업이 아닙니다. 그러나 Spring Boot 프레임워크를 사용하면 다국어 지원과 국제 애플리케이션을 쉽게 구현할 수 있습니다.

먼저 Spring Boot에서 제공하는 LocaleResolver 인터페이스를 이해해보자. LocaleResolver 인터페이스는 Locale 객체를 구문 분석하고 반환하는 데 사용되는 인터페이스입니다. Locale 객체는 사용자가 사용하는 언어, 지역 및 관련 정보를 나타냅니다. Spring Boot에서 LocaleResolver 인터페이스에는 CookieLocaleResolver와 AcceptHeaderLocaleResolver라는 두 가지 구현이 있습니다.

CookieLocaleResolver는 브라우저 쿠키를 통해 Locale 개체를 구문 분석합니다. 사용자가 언어를 선택하면 Locale 개체가 브라우저에 설정되고 쿠키에 저장됩니다. 따라서 다음에 사용자가 웹사이트를 방문하면 CookieLocaleResolver는 쿠키에서 Locale 개체를 읽을 수 있습니다.

AcceptHeaderLocaleResolver는 HTTP 요청 헤더의 Accept-Language 필드를 통해 Locale 개체를 확인합니다. 사용자가 Accept-Language 헤더가 포함된 요청을 보내면 AcceptHeaderLocaleResolver는 Locale 객체를 구문 분석하여 반환합니다.

LocaleResolver 인터페이스 외에도 Spring Boot는 MessageSource 인터페이스도 제공합니다. MessageSource 인터페이스는 다국어 메시지를 구문 분석하고 처리하는 데 사용됩니다. Spring Boot에서 MessageSource 인터페이스에는 ResourceBundleMessageSource와 ReloadableResourceBundleMessageSource라는 두 가지 구현이 있습니다.

ResourceBundleMessageSource는 제공된 속성 파일에서 다중 언어 메시지를 구문 분석하는 간단한 구현입니다. 특성 파일에는 키-값 쌍이 포함되어 있습니다. 여기서 키는 메시지 식별자이고 값은 메시지 자체입니다. 예를 들어, 영어 및 중국어 메시지의 경우 속성 파일은 다음과 같습니다.

# messages_en_US.properties
hello=Hello world!

# messages_zh_CN.properties
hello=你好,世界!

사용자에게 메시지를 표시해야 하는 경우 MessageSource 인터페이스를 사용하여 해당 메시지를 얻은 다음 이를 사용자에게 표시할 수 있습니다.

ReloadableResourceBundleMessageSource는 ResourceBundleMessageSource와 매우 유사하지만 애플리케이션이 실행되는 동안 속성 파일을 다시 로드할 수 있습니다. 이는 자주 업데이트되는 메시지가 필요한 애플리케이션에 유용합니다.

다국어 지원 및 국제 애플리케이션을 구현할 때 일반적으로 날짜, 시간 및 통화 형식 문제를 고려해야 합니다. Spring Boot는 이러한 문제를 해결하기 위해 FormattingConversionServiceFactoryBean 클래스를 제공합니다. 이를 사용하여 날짜, 시간 및 통화 형식을 정의하고 다국어 응용 프로그램에서 유효하게 만들 수 있습니다.

다음은 날짜, 시간 및 통화 형식을 정의하기 위해 FormattingConversionServiceFactoryBean 클래스를 사용하는 예입니다.

@Configuration
public class AppConfig {
  @Bean
  public FormattingConversionServiceFactoryBean formattingConversionServiceFactoryBean() {
    FormattingConversionServiceFactoryBean factoryBean = new FormattingConversionServiceFactoryBean();
    factoryBean.setRegisterDefaultFormatters(false);
    factoryBean.setFormatters(Set.of(dateTimeFormatter(), dateFormatter(), numberFormatter()));
    return factoryBean;
  }

  private DateTimeFormatter dateTimeFormatter() {
    return DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).withLocale(LocaleContextHolder.getLocale());
  }

  private DateTimeFormatter dateFormatter() {
    return DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).withLocale(LocaleContextHolder.getLocale());
  }

  private NumberFormatter numberFormatter() {
    return new NumberFormatter(NumberFormat.getCurrencyInstance(LocaleContextHolder.getLocale()));
  }
}

위 코드에서는 날짜, 시간 및 통화 형식을 정의하기 위해 FormattingConversionServiceFactoryBean을 생성합니다. DateTimeFormatter 및 NumberFormatter를 사용하여 날짜 시간 및 통화 형식을 정의하고 LocaleContextHolder.getLocale() 메서드를 사용하여 현재 사용자의 Locale 객체를 가져옵니다.

마지막으로 여러 언어를 지원하려면 애플리케이션에 LocaleResolver 및 MessageSource를 설정해야 합니다. Spring Boot에서 제공하는 @EnableWebMvc 및 @Configuration 주석을 사용하여 이를 달성할 수 있습니다. 다음은 샘플 구성 클래스입니다.

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
  @Bean
  public LocaleResolver localeResolver() {
    AcceptHeaderLocaleResolver resolver = new AcceptHeaderLocaleResolver();
    resolver.setDefaultLocale(Locale.US);
    return resolver;
  }

  @Bean
  public MessageSource messageSource() {
    ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    messageSource.setBasenames("messages");
    messageSource.setFallbackToSystemLocale(false);
    return messageSource;
  }

  @Override
  public void addInterceptors(InterceptorRegistry registry) {
    LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
    localeChangeInterceptor.setParamName("lang");
    registry.addInterceptor(localeChangeInterceptor);
  }
}

위 코드에서는 WebConfig 구성 클래스를 생성하고 @EnableWebMvc 주석을 사용하여 Spring MVC 기능을 활성화했습니다. LocaleResolver() Bean과 messageSource() Bean을 사용하여 LocaleResolver와 MessageSource를 설정합니다. 또한 addInterceptors() 메소드를 사용하여 LocaleChangeInterceptor를 추가했으며 이 인터셉터에서는 "lang" 매개변수를 사용하여 사용자 언어를 전환했습니다.

결론적으로 Spring Boot에서 제공하는 LocaleResolver 인터페이스, MessageSource 인터페이스, FormattingConversionServiceFactoryBean 클래스를 통해 다국어 지원 및 국제 애플리케이션을 쉽게 구현할 수 있습니다. 위의 방법을 사용하면 사용자의 다양한 언어, 문화 및 지역 요구 사항을 충족하는 글로벌 애플리케이션을 보다 쉽고 편리하게 구축할 수 있습니다.

위 내용은 Spring Boot를 통해 다국어 지원 및 국제 애플리케이션 달성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.