[Rails] 언어 전환 기능
※일본어화 대응은 이미 실장되고 있는 것을 상정하고 있습니다.
완성 이미지
구현 및 설명
언어 전환은 URL에 매개변수를 추가하여 전환합니다.
예를 들어 일본어라면 exapmle.com/?locale=ja
영어라면 exapmle.com/?locale=en
같은 느낌입니다.
① application_controller
app/controllers/application_controller.rbclass ApplicationController < ActionController::Base
before_action :set_locale
def default_url_options
{ locale: I18n.locale }
end
private
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
end
해설
app/controllers/application_controller.rbclass ApplicationController < ActionController::Base
before_action :set_locale
private
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
end
set_locale
는 URL에 매개 변수를 추가하는 프로세스를 작성합니다.
구체적으로는 exapmle.com/?locale=ja
와 같이 URL에 파라미터가 붙어 있으면 그것을 사용해, 없으면 디폴트의 파라미터 없음의 URL를 사용한다고 하는 처리입니다.
왜 application_controller.rb
의 before_action
에 set_locale
를 지정하고 있는가 하면,application_controller.rb
는 모든 컨트롤러에 상속되었습니다. 즉 모든 controller를 실행하기 전에 set_locale
가 실행된다는 구조입니다.
app/controllers/application_controller.rb def default_url_options
{ locale: I18n.locale }
end
default_url_options
는 기본적으로 항상 실행되는 메소드 인 것처럼,
여기서 쓰고 있는 것은 exapmle.com/?locale=ja
와 같은 파라미터를 디폴트 상태, 즉 최초로 사이트에 액세스했을 때부터 붙인다고 하는 처리입니다.
② 언어 .yml 파일 만들기
이번에는 일본어와 영어로 언어를 전환하므로 config/locales에 ja.yml과 en.yml 파일을 작성하여 각 언어를 기술해 나갑니다.
※이번은 완성 이미지와 같이 검색 페이지의 타이틀 부분을 변경하는 것을 상정하고 있습니다.
config/locales/events.ja.ymlja:
events:
search-title: "イベントを探す"
config/locales/events.en.ymlen:
events:
search-title: "Search Event"
③ 해당 부분의 HTML을 재작성
이번에 언어 전환이 하고 싶은 이벤트를 찾는 부분을 다시 써 갑니다.
(변경 전)
app/views.title
%h2 イベントを探す
(변경 후)
app/views.title
%h2= I18n.t('events.search-title')
해설
I18n.t('events.search-title')
여기서 방금 만든 locales 파일에 있는 events의 search-title 부분을 지정하고 있습니다.
언어 전환 버튼 만들기
그리고는 언어 전환을 위한 버튼을 만들어 완성입니다.
버튼은 모든 페이지에 설치하고 싶기 때문에 app/views/layouts/aplication.html
의 부분에 기술합니다.
app/views/layouts/aplication.html.haml%lang.lang-container
- if I18n.locale == :en
= link_to '日本語', url_for(locale: :ja)
- else
= link_to 'English', url_for(locale: :en)
link_to
의 url_for
를 사용하면 파라미터만 변경할 수 있습니다.
이것으로 완성.
Reference
이 문제에 관하여([Rails] 언어 전환 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/aaaasahi_17/items/f0be7bb7f3b30a2330e9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
언어 전환은 URL에 매개변수를 추가하여 전환합니다.
예를 들어 일본어라면
exapmle.com/?locale=ja
영어라면 exapmle.com/?locale=en
같은 느낌입니다.① application_controller
app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
before_action :set_locale
def default_url_options
{ locale: I18n.locale }
end
private
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
end
해설
app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
before_action :set_locale
private
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
end
set_locale
는 URL에 매개 변수를 추가하는 프로세스를 작성합니다.구체적으로는
exapmle.com/?locale=ja
와 같이 URL에 파라미터가 붙어 있으면 그것을 사용해, 없으면 디폴트의 파라미터 없음의 URL를 사용한다고 하는 처리입니다.왜
application_controller.rb
의 before_action
에 set_locale
를 지정하고 있는가 하면,application_controller.rb
는 모든 컨트롤러에 상속되었습니다. 즉 모든 controller를 실행하기 전에 set_locale
가 실행된다는 구조입니다.app/controllers/application_controller.rb
def default_url_options
{ locale: I18n.locale }
end
default_url_options
는 기본적으로 항상 실행되는 메소드 인 것처럼,여기서 쓰고 있는 것은
exapmle.com/?locale=ja
와 같은 파라미터를 디폴트 상태, 즉 최초로 사이트에 액세스했을 때부터 붙인다고 하는 처리입니다.② 언어 .yml 파일 만들기
이번에는 일본어와 영어로 언어를 전환하므로 config/locales에 ja.yml과 en.yml 파일을 작성하여 각 언어를 기술해 나갑니다.
※이번은 완성 이미지와 같이 검색 페이지의 타이틀 부분을 변경하는 것을 상정하고 있습니다.
config/locales/events.ja.yml
ja:
events:
search-title: "イベントを探す"
config/locales/events.en.yml
en:
events:
search-title: "Search Event"
③ 해당 부분의 HTML을 재작성
이번에 언어 전환이 하고 싶은 이벤트를 찾는 부분을 다시 써 갑니다.
(변경 전)
app/views
.title
%h2 イベントを探す
(변경 후)
app/views
.title
%h2= I18n.t('events.search-title')
해설
I18n.t('events.search-title')
여기서 방금 만든 locales 파일에 있는 events의 search-title 부분을 지정하고 있습니다.
언어 전환 버튼 만들기
그리고는 언어 전환을 위한 버튼을 만들어 완성입니다.
버튼은 모든 페이지에 설치하고 싶기 때문에
app/views/layouts/aplication.html
의 부분에 기술합니다.app/views/layouts/aplication.html.haml
%lang.lang-container
- if I18n.locale == :en
= link_to '日本語', url_for(locale: :ja)
- else
= link_to 'English', url_for(locale: :en)
link_to
의 url_for
를 사용하면 파라미터만 변경할 수 있습니다.이것으로 완성.
Reference
이 문제에 관하여([Rails] 언어 전환 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/aaaasahi_17/items/f0be7bb7f3b30a2330e9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)