2013-07-22 17 views
10

Tôi đang làm việc trên một số dự án dựa trên Backbone nơi tôi đang sử dụng i18next cho miền địa phương.i18next không tải tệp dịch

Tiếp theo là mã app.js tôi:

/* 
    This file is used to initialize your application. 
*/ 
require(['i18n','application','handlebars_Helpers'], function(i18n, Application) { 

    i18n.init({ 
     lng: 'en', 
     debug: true, 
     fallbackLng: false, 
     load:'unspecific', 
     resGetPath: "locales/__lng__/__ns__.json", 
     ns: { 
      namespaces: ['translation'] 
     } 
    }); 

    (new Application()).initialize(); 
}); 

Dịch file:

{ 
    "loginModule": { 
     "signin": "Sign In" 
    } 
} 

Sau đây là tập tin helper của tôi:

/** 
* Set of generic handlebars helpers 
*/ 
define(['i18n'], function(i18n) { 
    /** 
    * This helper provides i18Next in templates 
    * 
    * 
    * Usage: span {{t "my.key" }} 
    */ 
    Handlebars.registerHelper('t', function(i18n_key) { 
     var result = i18n.t(i18n_key); 
     return new Handlebars.SafeString(result); 
    }); 

    return Handlebars; 

}); 

Khi tôi đang tải trang của tôi thông qua localhost nó hiển thị cho tôi thông báo sau trong bảng điều khiển:

currentLng set to: en i18n.js:490 
GET http://localhost:8000/locales/en/translation.json?_=1374495189376 404 (Not Found) i18n.js:376 
failed loading: locales/en/translation.json 

Không hiểu tôi đang thiếu gì? hoặc tại sao lỗi này được hiển thị?

Trả lời

11

Bạn lưu tệp bản dịch vào thư mục nào? Hành vi mặc định cho i18n là, nó cố gắng tìm tệp bản địa hóa trong đường dẫn cụ thể: /locales/{lang-code}/{namespace}.json

Nếu bạn giữ tệp gốc, hãy cố gắng thay đổi mã khởi tạo như sau:

i18n.init({ 
    lang: 'en', 
    debug: true, 
    fallbackLng: false, 
    load:'unspecific', 
    resGetPath: "__ns__-__lng__.json", 
    ns: { 
     namespaces: ['translation'], 
     defaultNs: 'translation' 
    } 
}); 

này sẽ cố gắng để tải tập tin từ url sau đây: http://localhost:8000/translation-en.json

về cơ bản, hãy thử để kiểm tra vị trí của tập tin bản dịch, tên của tập tin dịch và xây dựng 'regGenPath' phù hợp, thông tin thêm có thể được tìm thấy trong i18n tài liệu http://i18next.com/node/pages/doc_init.html

+0

khi tôi sao chép URL từ firebug và dán nó vào thanh địa chỉ của trình duyệt, nó cho tôi thấy 404; Và tôi đã xóa "? _ = 1374495189376" nó hiển thị cho tôi tệp chính xác. Tại sao số bổ sung này được thêm vào? –

+0

Tôi đã thêm resGetPath. nhưng vẫn không hoạt động –

+1

Ok, "? _ = 1374495189376" được jQuery thêm vào để ngăn chặn các vấn đề về bộ nhớ đệm. Nó chỉ là một số ngẫu nhiên, và nó buộc trình duyệt tải xuống tệp, ngay cả khi nó nằm trong bộ nhớ cache của trình duyệt trước đó. Bạn sẽ phải kiểm tra phía máy chủ của ứng dụng. Có phải có một số thiết lập ngăn cản tải xuống các tệp tĩnh, nếu có một số chuỗi truy vấn được chuyển. – drax

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