2016-08-05 21 views
8

Tôi đang làm việc trên một ứng dụng trong Rails 4 sử dụng i18n-active_record 0.1.0 để giữ bản dịch của tôi trong cơ sở dữ liệu thay vì trong tệp .yml. Nó hoạt động tốt.Dịch I18n với i18n-active_record: cùng một mẫu cho cùng một khóa

Một điều mà tôi đang phải vật lộn với, tuy nhiên, đó là mỗi bản ghi dịch là một bản ghi mỗi địa phương, ví dụ:

#1. { locale: "en", key: "hello", value: "hello") 
#2. { locale: "se", key: "hello", value: "hej") 

mà làm cho việc cập nhật cho họ một sức tẻ nhạt. Thay vào đó, tôi muốn có nó, ví dụ:

{ key: "hello", value_en: "hello", value_se: "hej" } 

hoặc tương tự để cập nhật tất cả các phiên bản của một khóa trong một biểu mẫu. Tôi dường như không thể tìm thấy bất cứ điều gì về điều đó, mà tôi đố.

Có cách nào để dễ dàng thực hiện việc này không? Bất kỳ loại hack nào cũng sẽ ổn.

Trả lời

0

Tôi đã kết thúc việc tạo chức năng Dịch của riêng mình bằng Globalize. Nó không rõ ràng dựa vào I18n vì vậy nó là một hệ thống song song nhưng nó hoạt động, mặc dù không đẹp và nó không phải là một thay thế cho I18n nhưng nó có chức năng quan trọng là có thể dễ dàng thêm một miền địa phương và xử lý tất cả các bản dịch trong một hình thức.

  • dịch mô hình với phím: string
  • Trong mô hình dịch:

    dịch: Giá trị globalize_accessors: miền địa phương => I18n.available_locales,: thuộc tính => [: value]

Trong ứng dụngHelper:

def t2(key_str) 
    key_stringified = key_str.to_s.gsub(":", "") 
    t = Transl8er.find_by_key(key_stringified) 
    if t.blank? 
     # Translation missing 
     if t.is_a? String 
     return_string = "Translation missing for #{key_str}" 
     else 
     return_string = key_str 
     end 
    else 
     begin 
     return_string = t.value.strip 
     rescue 
     return_string = t.value 
     end 
    end 
    return_string 
    end 
2

Bạn có thể tạo đối tượng ActiveRecord cho bảng dịch, sau đó tạo các chức năng đọc và ghi trên mô hình đó.

Chức năng đọc sẽ kéo tất cả các bản ghi được liên kết rồi kết hợp chúng thành một băm đơn.

Chức năng ghi sẽ lấy đầu vào băm đơn của bạn và chia chúng thành nhiều bản ghi để ghi/cập nhật.

+0

Tôi nhận được rằng trong lý thuyết nhưng làm thế nào để làm cho nó làm việc với đá quý và làm cho nó trong thực tế là một điều hoàn toàn khác nhau mặc dù. – Christoffer

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