2015-05-12 22 views
6

Ví dụ:Có thể có dấu gạch nối trong khóa yaml để sử dụng trong tệp i18n en.yml của tôi không?

en: 
    foobar-does-not-work: 'This is my value' 

Sau đó, nếu tôi làm:

t(foobar-does-not-work) # => returns nil 

này sẽ không phân tích trong yml Ruby. Có cách nào để làm cho nó hoạt động được không? Khóa của tôi dựa trên URL có dấu gạch ngang (-) trong đó.

+0

Tôi cho rằng việc sử dụng dấu gạch ngang trong khóa được phép và không nên gây ra sự cố. Bạn có chắc đó là dấu gạch ngang không? – zwippie

+0

@zwippie Tôi rất tích cực. Ruby không cho phép. – Trip

+0

Tôi đã thử nó và phiên bản Ruby của tôi cho phép. Bạn đang sử dụng phiên bản Ruby nào? – zwippie

Trả lời

5

Bạn đang sử dụng phiên bản ruby ​​nào? Bạn có thể cho chúng tôi thấy mã của bạn và lỗi không?

Nó làm việc cho tôi:

> require 'yaml' 
> YAML.load_file('foo.yml') 
{"en"=>{"foobar-does-not-work"=>"This is my value"}} 

Và nó hoạt động khi tôi thêm nó vào en.yml tôi:

> I18n.t('foobar-does-not-work') 
=> "This is my value" 

Bạn đã kiểm tra giá trị của I18n.locale?

+0

Hmm thú vị. Có vẻ như nó hoạt động trong giao diện điều khiển giống như ví dụ của bạn. Nhưng vì một số lý do khi tôi làm điều đó thông qua en.yml của tôi (tập tin Il8n), nó sẽ không tải. Đã cập nhật câu hỏi của tôi – Trip

1

Tôi nghĩ bạn chỉ đang sử dụng khóa sai khi gọi phương thức t. Xóa 'vi' khỏi khóa. Nó phải là:

t('foobar-does-not-work') 
+0

Điểm siêu tốt. Tôi chỉ kiểm tra mã của tôi, và tôi nhận ra rằng tôi chỉ đưa nó vào ví dụ. Nó vẫn không có vẻ hoạt động ngay cả khi vi đã bị xóa – Trip

1

Rõ ràng có vấn đề cơ bản cần được loại bỏ. Có rất tốt công cụ phân tích i18n YAML của bạn như là ứng dụng Rails, mà tôi đã tìm thấy cực kỳ hữu ích trong gỡ lỗi.

Cài đặt và chạy đá quý này i18n-tasks: https://github.com/glebm/i18n-tasks.

Để tạo một báo cáo toàn diện về các thành phần i18n của bạn:

$ i18n-tasks health 

Từ đặc điểm của chúng:

This gem analyses code statically for key usages, such as I18n.t('some.key'), in order to: 

Report keys that are missing or unused. 
Pre-fill missing keys, optionally from Google Translate. 
Remove unused keys. 
Thus addressing the two main problems of i18n gem design: 

Missing keys only blow up at runtime. 
Keys no longer in use may accumulate and introduce overhead, without you knowing it. 

Tôi không chắc viên ngọc đã được dự định được sử dụng như một công cụ gỡ lỗi i18n, nhưng tôi thấy nó hữu ích cho việc gỡ lỗi để tìm các vấn đề trong i18n.

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