매일 레일 스 양약 의 Adding Support for Localization

오늘 은 Rails 가 서로 다른 locale 에 대한 지원 을 살 펴 보 겠 습 니 다. 저 희 는 Globalize 플러그 인 을 사용 합 니 다.

ruby script/plugin install \
  http://svn.globalize-rails.org/svn/globalize/globalize/trunk

그리고 migration 파일 을 만 듭 니 다.

ruby script/generate globalize

그리고 실행

rake db:migrate

그리고 config / environment. rb 에 언어 와 기본 locale 을 설정 해 야 합 니 다.

include Globalize
Locale.set_base_language 'en-US'
Locale.set 'en-US'

그리고 저 희 는 사용자 가 locale 을 선택 할 수 있 도록 합 니 다.

class AccountsController < ApplicationController

  def login
    authentication....
    session[:user] = user.id
    session[:locale] = user.locale
    redirect_to (go_url || home_url)
  end

  def logout
    @session[:user] = nil
    redirect_to home_url
  end

  def change_locale
    session[:locale] = params[:locale] unless params[:locale].blank?
  end

end

그리고 어 플 리 케 이 션 컨트롤 러 에 before 를 추가 합 니 다.filter

before_filter :set_locale
def set_locale
  Locale.set session[:locale] unless session[:locale].blank?
  true
end

Globalize 의 helper 방법 을 살 펴 보 겠 습 니 다. t () 는 translations 이 고 / () 는 printf - looking 입 니 다. 예 를 들 어

<% unless params[:search].blank? %>
  <p><%= "Found %d products." / @products.size %></p>
<% end %>

<%= link_to "Remove".t, :action => 'remove', :id => item.product_id %>

시간 과 화폐 에 대해 loc () 방법 을 사용 합 니 다.

<%= Time.now.loc "%H:%M %Z" %>

Globalize 는 Model 까지 번역 할 수 있 습 니 다.

class Product < ActiveRecord::Base
  translates :name, :description
end

주의해 야 할 것 은 레일 스 프로그램 이 utf 8 인 코딩 을 일치 하 게 사용 해 야 한 다 는 것 입 니 다.
1,config/environment.rb

$KCODE ='u'
require 'jcode'

2,config/database.yml
MySQL

encoding: utf8

PostgreSQL

encoding: unicode

3,ApplicationController

after_filter :set_charset
def set_charset
  unless @headers["Content-Type"] =~ /charset/i
    @headers["Content-Type"] ||= ""
    @headers["Content-Type"] += "; charset=utf-8"
  end
end

더 자세 한 정보 참조
http://www.globalize-rails.org

좋은 웹페이지 즐겨찾기