III. Xây dựng mô-đun – Building modules
12. Quốc tế hóa
Mỗi mô-đun có thể cung cấp các bản dịch riêng trong thư mục i18n, bằng cách đặt tên là LANG.po trong đó LANG là mã ngôn ngữ cho ngôn ngữ hoặc kết hợp ngôn ngữ và quốc gia khi chúng khác nhau (ví dụ: pt.po hoặc pt_BR.po). Bản dịch sẽ được Odoo tải tự động cho tất cả các ngôn ngữ đã bật. Các nhà phát triển luôn sử dụng tiếng Anh khi tạo mô-đun, sau đó xuất các thuật ngữ mô-đun bằng tính năng xuất POT gettext của Odoo (Settings ‣ Translations ‣ Import/Export ‣ Export Translation mà không cần chỉ định ngôn ngữ), để tạo tệp POT mẫu mô-đun, sau đó lấy các tệp PO đã dịch. Nhiều IDE có các plugin hoặc chế độ để chỉnh sửa và hợp nhất các tệp PO / POT.
Mẹo
Các tệp Đối tượng di động do Odoo tạo ra được xuất bản trên Transifex, giúp dễ dàng dịch phần mềm.
|- idea/ # The module directory |- i18n/ # Translation files
| - idea.pot # Translation Template (exported from Odoo) | - fr.po # French translation
| - pt_BR.po # Brazilian Portuguese translation | (...)
Mẹo
Theo mặc định, xuất POT của Odoo chỉ trích xuất nhãn bên trong tệp XML hoặc định nghĩa trường bên trong trong mã Python, nhưng bất kỳ chuỗi Python nào cũng có thể được dịch theo cách này bằng cách bao quanh nó với hàm odoo._() (ví dụ: . _("Label"))
Bài tập
Dịch mô-đun
Chọn ngôn ngữ thứ hai để cài đặt Odoo của bạn. Dịch mô-đun của bạn bằng cách sử dụng các cơ sở do Odoo cung cấp.
13. Báo cáo
Báo cáo in
Odoo sử dụng một công cụ báo cáo dựa trên QWeb, Twitter Bootstrap và
Wkhtmltopdf.
Báo cáo là sự kết hợp của hai yếu tố:
● ir.actions.report cấu hình các tham số cơ bản khác nhau cho báo cáo (loại mặc định, cho dù báo cáo nên được lưu vào cơ sở dữ liệu sau khi tạo,...)
● <fieldname="model">account.invoice</field>
● <fieldname="report_type">qweb-pdf</field>
● <fieldname="report_name">account.report_invoice</field>
● <fieldname="report_file">account.report_invoice</field>
● <fieldname="attachment_use"eval="True"/>
● <fieldname="attachment">(object.state in ('open','paid')) and ● ('INV'+(object.number or '').replace('/','')+'.pdf')</field>
● <fieldname="binding_model_id"ref="model_account_invoice"/>
● <fieldname="binding_type">report</field>
● </record>
Mẹo
Bởi vì nó lớn hơn một hành động tiêu chuẩn, như với Wizards, thường hữu ích khi thêm báo cáo dưới dạng mục theo ngữ cảnh trên cây và / hoặc chế độ xem biểu mẫu của mô hình được báo cáo thông qua trường binding_model_id .
Ở đây chúng tôi cũng đang sử dụng binding_type để báo cáo nằm trong menu ngữ cảnh báo cáo thay vì báo cáo hành động. Không có sự khác biệt kỹ thuật nhưng đặt các yếu tố vào đúng nơi giúp người dùng.
● Chế độ xem QWeb tiêu chuẩn cho báo cáo thực tế: ● <tt-call="web.html_container">
● <tt-foreach="docs"t-as="o">
● <tt-call="web.external_layout">
● <divclass="page">
● <h2>Report title</h2>
● </div>
● </t>
● </t>
● </t>
bối cảnh kết xuất tiêu chuẩn cung cấp một số yếu tố, quan trọng nhất là:
docs
hồ sơ mà báo cáo được in
user
người dùng in báo cáo
Vì báo cáo là các trang web tiêu chuẩn, chúng có sẵn thông qua URL và các tham số đầu ra có thể được thao tác thông qua URL này, ví dụ: phiên bản HTML của báo cáo Hóa đơn có sẵn
thông qua http://localhost:8069/report/html/account.report_invoice/1 (nếu tài khoản được
cài đặt) và phiên bản PDF thông qua
http://localhost:8069/report/pdf/account.report_invoice/1.
Nguy hiểm
Nếu có vẻ như báo cáo PDF của bạn bị thiếu các kiểu (tức là văn bản xuất hiện nhưng kiểu / bố cục khác với phiên bản html), có lẽ quy trình wkhtmltopdf của bạn không thể truy cập máy chủ web của bạn để tải xuống.
Nếu bạn kiểm tra nhật ký máy chủ của mình và thấy rằng các kiểu CSS không được tải xuống khi tạo báo cáo PDF, chắc chắn đây là vấn đề.
Quá trình wkhtmltopdf sẽ sử dụng tham số hệ thống web.base.url làm đường dẫn gốc cho
tấtcả các tệp được liên kết, nhưng tham số này được tự động cập nhật mỗi khi Quản trị viên đăng
nhập. Nếu máy chủ của bạn nằm phía sau một số loại proxy, điều đó không thể đạt được. Bạn có thể khắc phục điều này bằng cách thêm một trong các tham số hệ thống:
● report.url, trỏ đến URL có thể tiếp cận từ máy chủ của bạn (có thể là http://localhost:8069
hoặcmột cái gì đó tương tự). Nó sẽ chỉ được sử dụng cho mục đích cụ thể này.
● web.base.url.freeze, khi được đặt thành True,sẽ dừng cập nhật tự động choweb.base.url.
Bài tập
Tạo báo cáo cho mô hình Phiên
Đối với mỗi phiên, nó sẽ hiển thị tên của phiên, bắt đầu và kết thúc và liệt kê những người tham dự phiên.
Dashboards
Bài tập
Xác định Bảng điều khiển
Xác định bảng thông tin chứa dạng xem biểu đồ bạn đã tạo, dạng xem lịch phiên và dạng xem danh sách của các khóa học (có thể chuyển sang dạng xem biểu mẫu). Bảng điều khiển này sẽ có sẵn thông qua menuitem trong menu và tự động hiển thị trong máy khách web khi menu chính OpenAcademy được chọn.