2009-10-02 31 views
5

Làm thế nào tôi có thể quốc tế hóa nói một bảng loại (với một cột tên) sang ngôn ngữ khác nhau. Làm thế nào về một bảng sản phẩm (bao gồm một tên và cột mô tả). Cách tốt nhất để quốc tế hóa nội dung của các bảng cơ sở dữ liệu này bằng Ruby on Rails là gì?Làm thế nào để quốc tế hóa nội dung trên Ruby on Rails?

Trả lời

6

Bạn đã lấy một cái nhìn tại địa chỉ: http://guides.rubyonrails.org/i18n.html

Nó mô tả một cách chi tiết làm thế nào để quốc tế hóa ứng dụng của bạn và

"cung cấp một cách dễ dàng sử dụng và mở rộng khuôn khổ để dịch của bạn ứng dụng cho một đơn tùy chỉnh ngôn ngữ khác ngoài tiếng Anh hay cho hỗ trợ đa ngôn ngữ trong ứng dụng của bạn."

Một số liên kết hữu ích:

+2

Tất cả các tham chiếu này không nói về dịch nội dung cơ sở dữ liệu ...như đá quý Globalize3 –

2

Nếu bạn muốn lưu trữ các giá trị cho các ngôn ngữ khác nhau trong db bên cạnh Rails tiêu chuẩn i18n (yml), bạn có thể làm một cái gì đó như thế này:

Sản phẩm tên bảng lĩnh vực:

  • name_en
  • name_fr
  • name_nl

Fetch giá trị đúng:

def i18n_db_value(object, attribute) 
    object.send("#{attribute.to_s}_#{I18n.locale}") if object 
end 
0

"cửa hàng nhiều phiên bản của nội dung trong mô hình và có một trang web" vs "cửa hàng chỉ có một phiên bản của nội dung trong mô hình nhưng có nhiều trang web"

http://ruby-lang.info/blog/localization-jfw

3

On RailsCasts có một bài viết thú vị về, sử dụng một viên ngọc gọi Globalize3. Mà chỉ cho phép bạn đặt mà Models sẽ được dịch và quản lý một dịch bảng cho mỗi mô hình, và hoạt động giống như i18n là các trang tĩnh ...

Hãy xem

http://railscasts.com/episodes/338-globalize3?view=asciicast

0

Bạn có thể ghi đè lên "tên" phương pháp trong mô hình Thể loại, có thể tìm kiếm bản dịch chính xác trong bảng khác.

Vì vậy mà, trong bảng hạng mục, bạn nên có trong trường "Tên" ngôn ngữ mặc định dịch, ví dụ "Khác". Và sau đó tìm kiếm "Khác" trong một bảng như:

transtations table 

en_text "Other" <--- You search this (default language) 
es_text "Otros" ---> You retrun this 
ca_text "Altres" ---> or this 


# Category table 
class Category < ActiveRecord::Base 
    def name 
    Translation.translate(read_attribute("name")) 
    end 
end 

# Your transltation model 
class Translation < ActiveRecord::Base 

    def self.translate(text) 

    locale=I18n.locale 
    if locale!="en"  # default locale: what is on the table "category" 

     trad=self.find_by_en_text(text) 
     if trad 
      return eval("trad.#{locale}_text") 
     end 
    end 

    return text 

    end 

end 
Các vấn đề liên quan