2014-11-03 1 views
0

현재 지구화 보석에 약간의 문제가 있습니다.세계화 :보기에 현재 로케일 정보를 표시하는 방법

나는 현재 상황을 설명한다 : 나는 질문이라는 모델을 가지고있다. EN : 나는

class CreateTranslationsTable < ActiveRecord::Migration 
    def up 
     Question.create_translation_table! :wording => :string, :answer1 => :string, :answer2 => :string, :answer3 => :string, :answer4 => :string 
    def end 

    def down 
     Question.drop_translation_table! 
    def end 

내 기본 로케일이 번역 테이블을 생성하는 마이그레이션을 생성, 그리고

class Question < ActiveRecord::Base 
    translates :wording, :answer1, :answer2, :answer3, :answer4 
end 

: 모든 데이터를 저장하지 않고, 그것을 만든 후, 나는 모델에 다음 줄을 추가했다. 그 후 데이터를 추가했습니다.

rails c을 실행하고 Question.first.wording 명령을 실행하면 정상적으로 작동합니다. '레일 c'를 실행할 때 I18n.locale = :es을 입력하면 Question.first.wording은 처음에 넣은 영어 텍스트를 계속 표시합니다.

나는 내가 번역 된 모든 컬럼을 삭제했다는 것을 한 가지 시도했다. (데이터 마이 그 레이션 후에 문서를 Globalize에 지정한 것과 같다. 제 경우에는 처음부터 마이 그 레이션 할 데이터가 없다) . 그 후 롤백 (Question 모델에서 삭제 한 열을 다시 얻음)을 수행 한 다음 을 사용하여 Question.first.wording을 실행하면 작동합니다. 즉 Question.first.wordingnil을 반환합니다.

그런 다음 Ruby on Rails 가이드 에 지정된대로 'Locale from Url Params'을 구현했습니다. 즉, ': locale'매개 변수의 첫 번째 URL 매개 변수를 의미합니다. 현재 문제 : 내가 입력 한 URL이 http://localhost.com/es/questions/이므로보기에는 스페인어로 표시해야하는 정보가 영어로 표시됩니다.

어떻게 스페인어 정보를보기에 표시 할 수 있습니까?

답변

0

내 실수.

def default_url_options(options={}) 
    { locale: params[:locale] } 
end 

실제로 'I18n.locale'변수를 설정합니다 : 나는 URL을 설정하는 작업 (application_controller.rb에서) 코드하여 chunck 문서에서 해석했다. 내가 한 일은 application_controller.rb에서이 문제를 해결할 수있는 다음 단계입니다.

before_action :change_to_current_locale 
def change_to_current_locale 
    I18n.locale = params[:locale] 
end 

그게 작동했습니다.

관련 문제