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 과 같이 링크가 붙게 됩니다 ~! (모든 라우팅에 보낼 필요는 없습니다)
'Back-End > Ruby' 카테고리의 다른 글
관련 데이터 필터링: Ruby on Rails에서 두 번의 조인을 활용한 방법 (0) | 2023.09.15 |
---|---|
Rails 오류 "You have already activated... " 해결하기 (0) | 2023.09.06 |
Rails CRUD - 데이터 저장이 잘 되었는지 확인하는 방법 (0) | 2022.10.03 |
(해결 방법) rails devise sign_up 오류 devise sign up error (0) | 2022.05.24 |
(해결) LoadError: cannot load such file -- sass (0) | 2022.05.19 |