본문 바로가기
Back-End/Ruby

rails i18n 하는 방법, rails 언어처리 (5분 내외)

by Junmannn 2022. 12. 8.
반응형

rails 언어처리 방법에 대해서 한번 포스팅을 해보려 합니다.

학생때야 하나의 언어로 처리를 하였겠지만, 본격적으로 실무를 하게 될 때면, 여러 가지의 언어를 동시에 사용해야 하는 경우가 생깁니다. 과연 rails 에서는 이 부분을 어떻게 처리하는지 코드와 함께 알아보도록 하겠습니다.

 

1. i18n(다중언어처리)를 위한 gem 을 설치합니다

 

루트 폴더 부분의 Gemlfile을 열어 한 줄을 추가해줍니다

# locale
gem 'rails-i18n'

 

 

gem을 설치했으므로 터미널에서 bundle i 를 실행해줍니다

 

 

 

 

2. app/controllers/application_controller.rb 파일에 언어 세팅을 합니다

def set_locale
    I18n.locale = params[:locale] || session[:locale] || I18n.default_locale
    session[:locale] = I18n.locale
end

1) parameter 전달로 언어를 보내는 경우, 전달받은 언어로 언어를 세팅하기
2) rails session에 저장이 되어있는 경우, 저장된 언어로 세팅하기

3) 둘 다 아니라면 기본 언어세팅으로 설정하기

 

 

 

4. config/application.rb의 module 부분에 내가 사용할 언어들을 선언해둡니다

config.i18n.available_locales = [:en, :kr]
config.i18n.default_locale = :en

저는 영어와 한국어 두 언어를 사용하기 위해 두 가지 언어만 선언을 해 두었습니다. 더 많으시다면 그대로 변경을 하시면 됩니다

 

 

 

 

5. 선언한 언어별 파일을 만들어 줍니다

config/locales 폴더에는 en.yml 이 기본적으로 있을 것입니다. (없다면 생성해주시면 됩니다) 해당 파일이 영어 처리를 위한 파일입니다.

저는 한국어를 추가해주기위해 config/locales 폴더에 kr.yml 파일을 추가했습니다

config/locales/en.yml

en:
  home:
    index:
      hello: "Hello world"
      welcome: "Welcome!"

config/locales/kr.yml

kr:
  home:
    index:
      hello: "안녕하세요"
      welcome: "환영합니다!"

해당 파일의 구조에 대해 설명드릴게요.

해당 구조는 hello 란 것을 여러 곳에서 사용할 수 있기에 여러 폴더 구조로 만든 것입니다. 기본적으로 rails의 html 구조는 views/home/index.html.erb 와 같은 구조를 가지게 됩니다. 이를 위해 저는 파일별로 만들어 둔 것입니다.

 

 

 

6. 해당 변환 언어 확인 방법

<h1>
	<%= t 'home.index.welcome'%>
</h1>
<li><%=link_to 'English', root_path(locale: :en)%> </li>
<li><%=link_to 'Korean', root_path(locale: :kr)%> </li>

t 를 앞에 붙이는 작업으로 i18n 을 사용하실 수 있습니다.

아래는 각각 영어, 한국어로 변환을 할 수 있는 a 태그를 두었습니다.

 

 

 

결과물

해당 링크를 클릭하게 되면, url 마지막에는 /?locale=kr 과 같이 링크가 붙게 됩니다 ~! (모든 라우팅에 보낼 필요는 없습니다)

반응형