2013-10-14 13 views
16

Tôi đang sử dụng Angular-translate (mô-đun PascalPrecht).angular dịch tĩnh-loader-file PascalPrecht

tôi successed để làm cho nó làm việc theo tấm gương trong: http://www.ng-newsletter.com/posts/angular-translate.html

Tuy nhiên, tôi muốn có tất cả các bản dịch của tôi trong file json khác nhau sử dụng loader-tĩnh-tác phẩm, nhưng điều này không làm việc cho tôi. Tôi không chắc mình đang làm gì ở đây.

Trong mô-đun góc của tôi, tôi chỉ thay thế đoạn code làm việc (hiện nay là nhận xét) với các cuộc gọi loader-tĩnh:

angular.module('myApp.i18n', ['pascalprecht.translate']) 
    .config(['$translateProvider', function ($translateProvider) { 
     /*$translateProvider.translations('en', { 
      HOME: 'Home', 
      COMPANIES: 'Companies', 
      WHAT_TO_DO: 'What to do', 
      ABOUT: 'About us', 
      CONTACT: 'Contact' 
     }) 
     .translations('es', { 
      HOME: 'Inicio', 
      COMPANIES: 'Empresas', 
      WHAT_TO_DO: 'Qué hacer', 
      ABOUT: 'Nosotros', 
      CONTACT: 'Contacto' 
     });*/ 
     $translateProvider.preferredLanguage('es'); 

     $translateProvider.useStaticFilesLoader({ 
      prefix: '/languages/', 
      suffix: '.json' 
     }); 
}]); 

tôi đã thêm vào thư mục ứng dụng của tôi các tập tin:

/app/ngôn ngữ /en_US.json /app/languages/es.json

Khi tôi tải trang web nhà của tôi, tôi thấy lỗi tiếp theo trong giao diện điều khiển:

http://localhost:1234/languages/es.json 404 (Not Found) 

Nếu tôi loại bỏ đầu tiên '/' trong prefix của tôi, như thế này:

$translateProvider.useStaticFilesLoader({ 
       prefix: 'languages/', 
       suffix: '.json' 
      }); 

Sau đó, tôi nhận được lỗi tiếp theo trong giao diện điều khiển:

bất ngờ thẻ H

Xin lỗi, tôi nghĩ tôi không đảm bảo cách thức này sẽ hoạt động.

Trả lời

9

Đảm bảo rằng máy chủ của bạn gửi .json làm json chứ không phải dưới dạng văn bản thuần túy. Ngoài ra, hãy đảm bảo rằng tên của các tệp .json phụ thuộc vào khóa ngôn ngữ tương ứng.

Như bạn có thể đọc ở đây: http://angular-translate.github.io/docs/#/guide/12_asynchronous-loading ("Sử dụng staticFilesLoader")

Mã này có vẻ tốt với tôi, vì vậy khi bạn đã khắc phục sự cố máy chủ của bạn không gửi json như json, điều nên làm việc .

+0

Mmmm không chắc đây là vấn đề. Vui lòng chú ý đến URL mà máy chủ đang yêu cầu: http: // localhost: 1234/languages ​​/ es.json 404 (Không tìm thấy). Tuy nhiên nếu tôi viết url tiếp theo trong trình duyệt của mình: http: // localhost: 1234/app/languages ​​/ es.json Tôi nhận được tệp json là: [ { HOME: 'Inicio', \t CÔNG TY: 'Empresas', \t WHAT_TO_DO: 'Quà © hacer', \t GIỚI THIỆU: 'Nosotros', \t LIÊN HỆ: 'Contacto' } ]. Tôi nghĩ rằng vấn đề là nó không phải là tìm kiếm các nguồn tài nguyên bởi vì nó là bỏ qua/ứng dụng. – Rober

+0

Sau đó, chỉ cần thêm 'app /' vào tiền tố :) – PascalPrecht

+0

hehe không dễ dàng như vậy nữa: nếu tôi thêm tiền tố: 'app/languages ​​/', sau đó tôi nhận được lỗi lạ này: GET http: // localhost: 1234/app/app/languages ​​/ es.json 404 (Không tìm thấy). Lưu ý có hai ứng dụng. Và nếu tôi thêm: tiền tố: 'app/languages ​​/' Sau đó tôi nhận được: SyntaxError: Mã thông báo không mong muốn H – Rober

3

Tôi đã sửa nó. Như Pascal đã nói trong phần bình luận, vấn đề là tệp json có định dạng sai. Bạn phải đặt tất cả các giá trị giữa dấu ngoặc kép.

Đường dẫn đúng.

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