2014-07-10 15 views
10

Tôi sẽ tạo một ứng dụng web với Polymer. Đối với ứng dụng web đó, tôi cần bản địa hóa. Có cách nào để làm bản địa hóa Polymer không? Có ai từng thực hiện bản địa hóa trong ứng dụng web Polymer không?Bản địa hóa trong Polymer?

+0

Tôi sử dụng L20n. Kiểm tra tại đây: http: //stackoverflow.com/questions/35677198/tutorial-solution-for-node-js-polymer-i18n-based-on-l20n-library – AlexNasonov

Trả lời

0

Tôi đã tự tạo một triển khai. Nhìn vào những gì tôi đã làm thì không khó để làm.

13

I18n và l10n cũng có trong danh sách việc cần làm của tôi. Hiện tại tôi đang chuyển một ứng dụng từ AngularJS sang Polymer. Back-end là Ruby on Rails. Tôi sử dụng đá quý i18n-js chuyển đổi các tệp dịch Rails (en.yml, de.yml và vv) thành một tệp JavaScript lớn chứa một đối tượng I2n với tất cả các bản dịch. Viên ngọc này cũng cung cấp một thư viện JavaScript để thực hiện các bản dịch văn bản và các bản địa hóa giá trị. Nhưng có những thư viện JavaScript khác cung cấp một chức năng tương tự.

Ngôn ngữ hiện tại được đặt từ phản hồi của yêu cầu HTTP, trả về người dùng Tiêu đề chấp nhận ngôn ngữ.

Không có gì Polymer cụ thể cho đến thời điểm này.

Sau đó tôi đã tạo một loạt các bộ lọc biểu thức Polymer toàn cầu thực hiện các phép biến đổi miền địa phương khác nhau trên chuỗi đầu vào của chúng. Đây là phương pháp giống như phương pháp tôi đã học để sử dụng trong ứng dụng AngularJS. Bộ lọc dịch trông giống như sau (I18n.t là chức năng dịch của thư viện JavaScript)

PolymerExpressions.prototype.i18n = function(key) { 
    return I18n.t(key); 
}; 

và được sử dụng như vậy

<paper-button label="{{ 'action.help' | i18n }}"></paper-button> 

Một nội địa hóa ngày có thể được viết như

{{ someDate | i18n_date('short') }} 

Tôi đã đóng gói các bộ lọc i18n và các chức năng trợ giúp bổ sung thành một phần tử Polymer, vì vậy tôi cũng có thể bao gồm phần tử này trong phần tử khác và sử dụng bản dịch functio ns từ bên trong mã JavaScript của nó.

Phần tử i18n cũng được bao gồm trong phần tử ứng dụng chính của tôi, nơi nó khởi tạo thư viện I18n và đặt ngôn ngữ mặc định và hiện tại.

+0

Điều này có vẻ tuyệt vời! Bạn sẽ đặt gói của bạn trên GitHub? –

+0

@dirk điều này thật tuyệt vời. Bạn có thể chia sẻ mã với thế giới không? Hiện tại không có nhiều thứ. –

0

Không nhận thức được Polymer -way đang thực hiện i18n, tôi khuyên bạn nên thực hiện phía máy chủ đó.

Trong trường hợp khung là Spring, tôi sẽ triển khai các phần tử tùy chỉnh dưới dạng jsp và xử lý i18n như bình thường với các thẻ <spring:message />.

Chỉ báo trước là việc chuyển đổi ngôn ngữ của ứng dụng sẽ yêu cầu tải lại hoàn toàn. Nhưng khi chuyển đổi ngôn ngữ thường không được thực hiện thường xuyên, tôi không nghĩ đây là vấn đề.

0

Đối với Polymer 1.0 Tôi vừa xuất bản một phần tử đơn giản (nhiều trong phát triển) (xem nó trên gitlab hoặc đọc về nó here).Nó tải các tập tin dịch không đồng bộ và sử dụng khá đơn giản:

<!-- Import it in head --> 
<link rel="import" href="bower_components/quaintous-i18n/quaintous-i18n.html"> 
<!-- initialize it in body --> 
<quaintous-i18n locales-path="/locales/fa.json"></quaintous-i18n> 

Bây giờ bạn có thể sử dụng nó trong nhiều cách khác nhau:

  • Trong thuộc tính tính: chỉ cần thêm I18N như yếu tố của bạn behavior và dịch dữ liệu của bạn các ràng buộc, ví dụ {{__('hello')}}
  • Trong ngữ cảnh chung, chỉ cần sử dụng đối tượng I18N, ví dụ: I18N.__('hello')
Các vấn đề liên quan