MapleStory Cookie With Halo

๐Ÿƒ Spring

[Spring]๋ฉ”์‹œ์ง€ ์†Œ์Šค ์„ค์ •

๋‰ด์ด NUEY 2025. 3. 12. 12:19
๋ฐ˜์‘ํ˜•

 

ํ™˜๊ฒฝ์„ค์ •

 

์Šคํ”„๋ง์€ ๊ธฐ๋ณธ์ ์ธ ๋ฉ”์‹œ์ง€ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

โ†’ ์ธํ„ฐํŽ˜์ด์Šค MessageSource ์˜ ๊ตฌํ˜„์ฒด์ธ ResourceBundleMessageSource๋ฅผ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•˜๋ฉด๋œ๋‹ค.

 

  1. ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ
    • code
      @Bean
      public MessageSource messageSource() {
      	ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
      	messageSource.setBasenames("messages", "errors");
      	messageSource.setDefaultEncoding("utf-8");
      	return messageSource;
      }
       @SpringBootApplication์ด๋‚˜  @ComponantScan์ด ์žˆ๋Š” ํด๋ž˜์Šค์—์„œ ์œ„ ์ฝ”๋“œ๋ฅผ ์ ์œผ๋ฉด ๋œ๋‹ค.


  2. ์Šคํ”„๋ง ๋ถ€ํŠธ (Gradle)
    • ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ๋“ฑ๋กํ•˜์ง€ ์•Š์•„๋„ ์ž๋™์œผ๋กœ MessageSource๋ฅผ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ์ž๋™ ๋“ฑ๋กํ•œ๋‹ค.

    • application.properties์— ๊ธฐ๋ณธ์„ค์ •์€ spring.message.basename=messages ์ด๋ ‡๊ฒŒ ๋˜์–ด์žˆ๋Š” ๊ฑฐ์™€ ๊ฐ™์€๋ฐ,
      spring.message.basename=messages, config.i18n.messages ์™€ ๊ฐ™์ด ์ถ”๊ฐ€์ž‘์„ฑํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.



 

ํ…Œ์ŠคํŠธ์—์„œ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

 

  1. ํŒŒ์ผ์ƒ์„ฑ
    • resource ํด๋” ์•„๋ž˜์— ๋งŒ๋“ ๋‹ค.
  2. ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ ์–ด๋ณธ๋‹ค.
  3. ๋ฉ”์‹œ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ
    • MessageSource์— ๋“ฑ๋กํ•œ ์ด๋ฆ„์œผ๋กœ  ms.getMessage("hello", null, null); ์ด๋ ‡๊ฒŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

  4. ๊ธฐ๋ณธ ๋ฉ”์‹œ์ง€์™€ ํŒŒ๋ผ๋ฏธํ„ฐ ์‚ฌ์šฉํ•˜๊ธฐ

    • ms.getMessage("no_code", null, "๊ธฐ๋ณธ ๋ฉ”์‹œ์ง€", null);
      "no_code"๋ผ๋Š” ์ด๋ฆ„์˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์—†์œผ๋ฉด param์ด 4๊ฐœ์ผ ๋•Œ ์„ธ๋ฒˆ์งธ์— ๊ธฐ๋ณธ ๋ฉ”์‹œ์ง€๋ฅผ ์ ์„ ์ˆ˜ ์žˆ๋‹ค.

    • ms.getMessage("hello.name", new Object[]{"Spring"}, null);
      new Object[]{"Spring"} ๋ผ๋Š” ๊ฐ’์„ ๋„ฃ์œผ๋ฉด ๊ธฐ์กด ๋ฉ”์‹œ์ง€์™€ ํ•ฉ์ณ์ง„ ๋ฉ”์‹œ์ง€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

  5. ๊ตญ์ œํ™”

    •  ms.getMessage("hello", null, Locale.ENGLISH
      param ๋งˆ์ง€๋ง‰์— Locale ์ง€์—ญ์„ ์ง€์ •ํ•˜๋ฉด ๋˜๋Š”๋ฐ, ์ด ๋•Œ ๋งŒ์•ฝ ๋“ฑ๋ก๋˜์ง€ ์•Š์€ ์ง€์—ญ์ด ์žˆ์œผ๋ฉด ๊ธฐ๋ณธ message ๋นˆ์„ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•œ๋‹ค.

 


 

 

ํƒ€์ž„๋ฆฌํ”„์— ์ ์šฉํ•˜๊ธฐ
#{...}

 

  • ์ ์šฉ ํ™”๋ฉด
    label์˜ l์„ ๋น ํŠธ๋ ธ๋‹ค. ์ด ์˜ค๋ฅ˜๋กœ ๋ฉ”์‹œ์ง€๋กœ ๊ต์ฒด๋œ ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜์žˆ๋‹ค.
  • messages.properties ์— ์ฝ”๋“œ ์ถ”๊ฐ€.
  • thymeleaf ํ™”๋ฉด
  • th:text="#{๋ฉ”์‹œ์ง€}" ์ด์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
    •  <h2 th:text="#{page.item}"> 
    •  <label for="itemId" th:text="#{label.item.id}"> 

  • ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์‚ฌ์šฉ๋ฒ•
    • <p th:text="#{hello.name(${item.itemName})}"></p>
  • ๊ตญ์ œํ™”
    1. messages_en.properties๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

    2. ํฌ๋กฌ ์„ค์ •์—์„œ ์˜์–ด๋ฅผ 1์ˆœ์œ„๋กœ ์ง€์ •ํ•œ๋‹ค.

    3. ์œ„์—์„œ ํƒ€์ž„๋ฆฌํ”„์— ๋™์ผํ•œ ์ด๋ฆ„์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž๋™์œผ๋กœ ๊ตญ์ œํ™” ๋˜์–ด์žˆ๋‹ค.


์Šคํ”„๋ง ๊ตญ์ œํ™” ๋ฉ”์‹œ์ง€ ์„ ํƒ์—์„œ Locale ์„ ํƒ ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์œผ๋ฉด,
LocaleResolver๋ฅผ ๊ฒ€์ƒ‰ํ•ด ์ •๋ณด๋ฅผ ์ฐพ์•„ ์‚ฌ์šฉํ•˜๋ฉด๋œ๋‹ค.

โ€ป ์ฐธ์กฐ : https://www.inflearn.com/roadmaps/373E

๋ฐ˜์‘ํ˜•