add language make support to makefile

This commit is contained in:
Xuan Sang LE 2018-03-10 15:40:25 +01:00
parent 1b9e6e88fa
commit a624d853ed
9 changed files with 265 additions and 23 deletions

View File

@ -77,8 +77,8 @@ class BaseApplication extends this.OS.GUI.BaseModel
[{
text: _OS.APP[@name].meta.name,
child: [
{ text: __("About"), dataid: "#{@name}-about" },
{ text: __("Exit"), dataid: "#{@name}-exit" }
{ text: "__(About)", dataid: "#{@name}-about" },
{ text: "__(Exit)", dataid: "#{@name}-exit" }
]
}]
mn = mn.concat @menu() || []

View File

@ -9,7 +9,7 @@ class BaseModel
@on "exit", () -> me.quit()
@host = "#desktop"
@dialog = undefined
@subscribe "systemlocalechange", () ->
@subscribe "systemlocalechange", (name) ->
me.scheme.update() if me.scheme
render: (p) ->
_GUI.loadScheme p, @, @host

View File

@ -254,7 +254,7 @@ self.OS.API =
_API.get path, (d) ->
_OS.setting.system.locale = name
_API.lang = d
if f then f() else _courrier.trigger "systemlocalechange"
if f then f() else _courrier.trigger "systemlocalechange", name
, (e, s) ->
#_OS.setting.system.locale = "en_GB"
_courrier.oserror __("Language file {0} not found", path), e, s

View File

@ -388,12 +388,9 @@ self.OS.GUI =
#console.log _OS.setting
# load theme
_GUI.loadTheme _OS.setting.appearance.theme
# initDM
_API.setLocale _OS.setting.system.locale, () ->
_GUI.initDM()
_courrier.observable.one "syspanelloaded", () ->
# TODO load packages list then build system menu
_courrier.observable.on "systemlocalechange", () ->
_courrier.observable.on "systemlocalechange", (name) ->
($ "#syspanel")[0].update()
_API.packages.cache (ret) ->
@ -414,3 +411,6 @@ self.OS.GUI =
_GUI.pushServices (v for v in _OS.setting.system.startup.services)
(_GUI.launch a) for a in _OS.setting.system.startup.apps
#_GUI.launch "DummyApp"
# initDM
_API.setLocale _OS.setting.system.locale, () ->
_GUI.initDM()

View File

@ -4,21 +4,40 @@ ord() {
}
grep --include=\*.{coffee,tag} -roh "$1" -e '__("[^"]*"' | while read -r line ; do
SUBSTRING=$(echo $line| cut -d'"' -f 2)
echo -e "\t\"$SUBSTRING\":\"$SUBSTRING\"," >> "tmp.json"
if test -f "$2" && [ ! -z "$(grep -F "\"$SUBSTRING\":" "$2")" ]
then
echo "Ignore: $SUBSTRING"
else
echo -e "\t\"$SUBSTRING\":\"$SUBSTRING\"," >> "tmp.json"
fi
done
grep --include=\*.{coffee,html} -roh "$1" -e '"__(.*)"' | while read -r line; do
grep --include=\*.{coffee,html,tag} -roh "$1" -e '\"__\([^\"]*\)\"' | while read -r line; do
len=$(( ${#line} - 6 ))
#echo $len
SUBSTRING=${line:4:len}
#echo $SUBSTRING
echo -e "\t\"$SUBSTRING\":\"$SUBSTRING\"," >> "tmp.json"
if test -f "$2" && [ ! -z "$(grep -F "\"$SUBSTRING\":" "$2")" ]
then
echo "Ignore: $SUBSTRING"
else
echo -e "\t\"$SUBSTRING\":\"$SUBSTRING\"," >> "tmp.json"
fi
done
sort tmp.json > tmp1.json
awk '!a[$0]++' "tmp1.json" > tmp.json
sed '$ s/.$//' tmp.json > tmp1.json
# remove duplicate entry
echo "remove duplicate line"
echo "{"> $2
cat tmp1.json >> $2
echo "}" >> $2
if test -f $2
then
cp $2 "$2.old"
sed '$ s/.$//' $2 > tmp.json
cat tmp.json > $2
echo "," >> $2
cat tmp1.json >> $2
echo "}" >> "$2"
else
echo "{"> "$2"
cat tmp1.json >> "$2"
echo "}" >> "$2"
fi
rm tmp.json tmp1.json

View File

@ -193,4 +193,27 @@
"Wrong format: it should be [name] url":"Sai định dạng: định dạng hợp lệ [name] url",
"Yes":"Có",
"{0} is not a directory":"{0} không phải là thư mục"
,
"April":"Tháng 4",
"August":"Tháng 8",
"December":"Tháng 12",
"February":"Tháng hai",
"Fri":"Sáu",
"January":"Tháng một",
"July":"Tháng 7",
"June":"Tháng 6",
"March":"Tháng 3",
"May":"Tháng 5",
"Mon":"Hai",
"November":"Tháng 11",
"October":"Tháng 10",
"Sat":"Bảy",
"Selected: {0} ({1} bytes)":"Đã chọn: {0} ({1} bytes)",
"September":"Tháng 9",
"Size":"Kích cỡ",
"Sun":"CN",
"Thu":"Năm",
"Tue":"Ba",
"Wed":"Tư"
}

View File

@ -0,0 +1,196 @@
{
"About":"Thông tin",
"About: {0}":"Thông tin: {0}",
"Add category":"Thêm danh mục",
"Add repository":"Thêm kho ứng dụng",
"Address":"Địa chỉ",
"Alive (ms)":"Hoạt động (ms)",
"Application installed":"Ứng dụng đã được cà đặt",
"Application {0} is not executable":"Ứng dụng {0} không thực thi được",
"Application":"Ứng dụng",
"Applications":"Các ứng dụng",
"Authentication":"Xác thực",
"Cancel":"Huỷ",
"Cannot Edit category":"Không thể sửa danh mục",
"Cannot add new category":"Không thể tạo mới danh mục",
"Cannot create {0}":"Không thể tạo {0}",
"Cannot delete all content of: {0} [{1}]":"Không thể xoá hết nội dung của: {0} [{1}]",
"Cannot delete the category: {0} [{1}]":"Không thể xoá danh mục: {0} [{1}]",
"Cannot delete the section: {0}":"Không thể xoá mục: {0}",
"Cannot delete: {0}":"Không thể xoá: {0}",
"Cannot down load the app {0}":"Không thể tải xuống ứng dụng {0}",
"Cannot export file for embedding to text":"Không thể xuất bản file để chèn vào text",
"Cannot fetch CV categories":"Không thể lấy danh mục CV",
"Cannot fetch the entry content":"Không thể truy vấn nội dung của mục",
"Cannot fetch user data":"Không thể truy vấn thông tin người dùng",
"Cannot install {0}":"Không thể cài đặt {0}",
"Cannot load 3rd library at: {0}":"Không thể tải về thư viện bên thứ 3: {0}",
"Cannot move section":"Không thể di chuyển mục",
"Cannot read service script: {0}":"Không thể tải về script của dịch vụ: {0}",
"Cannot render the PDF file":"Không thể hiển thị file PDF",
"Cannot save blog: {0}":"Không thể lưu blog: {0}",
"Cannot save section: {0}":"Không thể lưu mục: {0}",
"Cannot save system setting":"Không thể lưu cài đặt hệ thống",
"Cannot save user data":"Không thể lưu thông tin người dùng",
"Cannot share file: {0}":"Không thể chia sẻ file: {0}",
"Cannot uninstall package: {0}":"Không thể gỡ cài đặt ứng dụng: {0}",
"Categories":"Các danh mục",
"Clear all":"Xoá tất cả",
"Close tab":"Đóng tab",
"Close without saving ?":"Đóng không cần lưu ?",
"Close":"Đóng",
"Copy not yet implemented":"Chức năng copy chưa được cài đặt",
"Copy":"Copy",
"Created: {0}":"Tạo: {0}",
"Cut":"Cắt",
"Delete a post":"Xoá bài",
"Delete category":"Xoá danh mục",
"Delete section":"Xoá mục",
"Delete":"Xoá",
"Desktop":"Desktop",
"Dialog {0} not found":"Không tìm thấy hộp thoại {0}",
"Do you really want to delete this post ?":"Bạn muốn xoá bài này ?",
"Do you really want to delete: {0}?":"Bạn muốn xoá: {0}?",
"Download":"Tải về",
"Edit category":"Sửa danh mục",
"Edit repository":"Sửa kho ứng dụng",
"Edit":"Sửa",
"Email":"Email",
"Error find app by mimes {0}":"Lỗi khi tìm app bằng mime {0}",
"Error reading package meta data: {0}":"Lỗi khi đọc thông tin ứng dụng: {0}",
"Error saving file {0}":"Lỗi khi lưu file {0}",
"Exit":"Thoát",
"Fail to create directory: {0}":"Lỗi khi tạo folder: {0}",
"Fail to create {0}: {1}":"Lỗi khi tạo {0}: {1}",
"Fail to delete {0}: {1}":"Lỗi khi xoá {0}: {1}",
"Fail to delete: {0}":"Lỗi khi xoá: {0}",
"Fail to fetch packages list from: {0}":"Lỗi khi tải về danh sách ứng dụng từ: {0}",
"Fail to get file meta data: {0}":"Lỗi truy vấn thông tin file: {0}",
"Fail to make request: {0}":"Lỗi truy vấn: {0}",
"Fail to move file: {0} -> {1}":"Lỗi di chuyển file: {0} -> {1}",
"Fail to paste: {0}":"Lỗi khi dán: {0}",
"Fail to publish file: {0}":"Lỗi khi xuất bản file: {0}",
"Fail to query data from database: {0}":"Lỗi truy vấn cơ sở dữ liệu: {0}",
"Fail to read file: {0}":"Lỗi đọc file: {0}",
"Fail to rename to {0}: {1}":"Lỗi khi đổi tên file {0}: {1}",
"Fail to scan directory: {0}":"Lỗi khi quét thư mục: {0}",
"Fail to upload file to: {0}":"Lỗi khi tải file lên: {0}",
"Fail to upload to {0}: {1}":"Lỗi khi tải file lên {0}: {1}",
"Fail to write to file: {0}":"Lỗi khi ghi file: {0}",
"Fail to {0} package":"Lỗi {0} ứng dụng",
"File name":"Tên file",
"File not found {0}":"Không tìm thấy file {0}",
"File {0} copied":"Đã copy file {0}",
"File {0} cut":"Đã cắt file {0}",
"File":"File",
"Folder name":"Tên thư mục",
"Format : [name] url":"Định dạng : [name] url",
"Found {0} sections":"Tìm thấy {0} mục",
"From":"Từ",
"Full name must be entered":"Vui lòng điền họ và tên",
"Full name":"Họ và tên",
"Google Drive":"Google Drive",
"Hidden files":"File ẩn",
"Home":"Home",
"Icon view":"Xêm theo icon",
"Ignore all {0} unsaved files ?":"Bỏ qua {0} file chưa lưu ?",
"Install":"Cài đặt",
"Invalid package: Meta data file not found":"Ứng dụng không hợp lệ: không tìm thấy metadata",
"Kill process":"Đóng process",
"Language file {0} not found":"Không tìm thấy ngôn ngữ {0}",
"Launch":"Khởi chạy",
"List view":"Xem theo list",
"Location":"Vị trí",
"Log out":"Đăng xuất",
"Logout":"Đăng xuất",
"Mime type {0} is not supported":"Mime type {0} không được hổ trợ",
"Modify section entry":"Sửa mục",
"Move to":"Di chuyển vào",
"Name":"Tên",
"Navigation bar":"Thanh điều hướng",
"New file":"File mới",
"New folder":"Thư mục mới",
"New section entry for {0}":"Thêm mới mục trong {0}",
"New":"Tạo mới",
"No application available to open {0}":"Không tìm thấy ứng dụng dể đọc {0}",
"No post found: {0}":"Không tìm thấy bài: {0}",
"No":"Không",
"OS":"OS",
"Ok":"Có",
"Only {0} could be selected":"Chỉ file với mine {0} mới được chọn",
"Open file":"Mở file",
"Open with":"Mở với",
"Open":"Mở",
"Options":"Tuỳ chọn",
"Package uninstalled":"Đã gỡ bỏ ứng dụng",
"Parent can not be the category itself":"Danh mục cha không được trùng với danh mục hiện tại",
"Paste":"Dán",
"Phone":"Số điện thoại",
"Pid":"Pid",
"Please enter category name":"Vui lòng nhập tên danh mục",
"Please enter tags":"Vui lòng nhập tags",
"Please insert a title in the text: beginning with heading":"Vuil lòng nhập tiêu đề: bắt đầu bài bằng heading",
"Please select a category":"Vui lòng chọn danh mục",
"Please select a date":"Vui lòng chọn ngày",
"Please select a file":"Vui lòng chọn file",
"Please select a parent category":"Vui lòng chọn danh much cha",
"Please select a section to edit":"Vui lòng chọn mục để sửa",
"Please select a section to move":"Vuil lòng chọn mục để di chuyển",
"Preview":"Preview",
"Properties":"Thông tin",
"Quit without saving ?":"Thoát mà không lưu ?",
"Quit":"Thoát",
"Read more":"Đọc thêm",
"Refresh":"Làm mới",
"Rename":"Đổi tên",
"Repositories":"Các kho ứng dụng",
"Resource not found {0}":"Không tìm thấy tài nguyên {0}",
"Resource not found: {0}":"Không tìm thấy tài nguyên: {0}",
"Row {0}, col {1}, lines: {2}":"Hàng {0}, cột {1}, dòng: {2}",
"Save as":"Lưu như",
"Save":"Lưu",
"Section list is empty, please add one":"Danh sách mục rỗng, vui lòng tạo mới",
"Select image file":"Chọn file ảnh",
"Service":"Dịch vụ",
"Share file":"Chia sẻ",
"Shared url: {0}":"Liên kết chia sẻ: {0}",
"Shared":"Đã chia sẻ",
"Short biblio":"Tiểu sử ngắn",
"Sidebar":"Sidebar",
"Subtitle":"Tiêu đề con",
"System fail: Cannot init desktop manager":"Lỗi hệ thống: không thể khởi chạy trình quản lý desktop",
"System fail: Cannot init login screen":"Lỗi hệ thống: không thể khởi chạy màn hình đăng nhập",
"Tags":"Tags",
"This feature is not implemented yet":"Chức năng này chưa được cài đặt",
"Title or content must not be blank":"Tiêu đề hoặc nội dụng không được để trống",
"Title":"Tiêu đề",
"Toggle Full screen":"Bật/tắt toàn màn hình",
"Tree view":"Xem theo cây",
"Type":"Loại",
"Uninstall : {0}?":"Gỡ cài đặt : {0}?",
"Uninstall":"Gỡ cài đặt",
"Unknown API setting for {0}":"Không tìm thấy cài đặt API của {0}",
"Updated: {0}":"Đã cập nhật: {0}",
"Upload":"Tải lên",
"Url":"Url",
"User abort the authentication":"Người dùng huỷ xác thực",
"User data updated":"Thông tin người dùng đã được cập nhật",
"VDB Unknown condition for delete command":"VDB không rõ điều kiện cho lệnh xoá",
"VFS Cannot encode file: {0}":"VFS Không thể mã hoá file: {0}",
"VFS cannot create : {0}":"VFS không thể tạo : {0}",
"VFS cannot delete : {0}":"VFS không thể xoá : {0}",
"VFS cannot download file : {0}":"VFS không thể tải về : {0}",
"VFS cannot get meta data for {0}":"VFS không thể truy vấn thông tin của {0}",
"VFS cannot init {0}: {1}":"VFS không thể khởi động {0}: {1}",
"VFS cannot move : {0}":"VFS không thể di chuyển : {0}",
"VFS cannot read : {0}":"VFS không thể đọc : {0}",
"VFS cannot save : {0}":"VFS không thể lưu : {0}",
"VFS cannot write : {0}":"VFS không thể viết : {0}",
"VFS unknown action: {0}":"VFS không rõ hành động : {0}",
"VFS unknown handler: {0}":"VFS không rõ trình xữ lý: {0}",
"View":"Xem",
"Would you like to login to {0}?":"Bạn có muốn đăng nhập vào {0}?",
"Wrong format: it should be [name] url":"Sai định dạng: định dạng hợp lệ [name] url",
"Yes":"Có",
"{0} is not a directory":"{0} không phải là thư mục"
}

View File

@ -1,9 +1,12 @@
<afx-calendar-view>
<div><i class ="prevmonth" onclick={prevmonth}></i>{text}<i onclick={nextmonth} class="nextmonth"></i></div>
<div><i class ="prevmonth" onclick={prevmonth}></i>
<afx-label text = {mtext}></afx-label>
<afx-label text = {year}></afx-label>
<i onclick={nextmonth} class="nextmonth"></i></div>
<afx-grid-view data-id ={"grid_" + rid} style = "height:100%;" ref = "grid" header = {header}> </afx-grid-view>
<script >
this.header = [{value:__("Sun")},{value:__("Mon")},{value:__("Tue")},{value:__("Wed")},{value:__("Thu")},{value:__("Fri")},{value:__("Sat")}]
this.header = [{value:"__(Sun)"},{value:"__(Mon)"},{value:"__(Tue)"},{value:"__(Wed)"},{value:"__(Thu)"},{value:"__(Fri)"},{value:"__(Sat)"}]
this.root.observable = opts.observable
var self = this
this.day = 0
@ -62,7 +65,7 @@
self.year = date.getFullYear()
var now ={ d:(new Date()).getDate(), m:(new Date()).getMonth(), y:(new Date()).getFullYear()}
months = [__("January"), __("February"), __("March"), __("April"), __("May"), __("June"), __("July"), __("August"), __("September"), __("October"), __("November"), __("December")]
months = ["__(January)", "__(February)", "__(March)", "__(April)", "__(May)", "__(June)", "__(July)", "__(August)", "__(September)", "__(October)", "__(November)", "__(December)"]
this_month = new Date(self.year, self.month, 1)
next_month = new Date(self.year, self.month + 1, 1)
@ -70,7 +73,7 @@
// Find out when this month starts and ends.
first_week_day = this_month.getDay()
days_in_this_month = Math.round((next_month.getTime() - this_month.getTime()) / (1000 * 60 * 60 * 24))
self.text = months[self.month] + ' ' + self.year
self.mtext = months[self.month]
var rows = []
var row = []
// Fill the first week of the month with the appropriate number of blanks.

View File

@ -20,7 +20,7 @@
this.fetch = opts.fetch
this.chdir = opts.chdir
this.rid = $(self.root).attr("data-id") || Math.floor(Math.random() * 100000) + 1
this.header = [{value:__("File name")},{value: __("Type"), width:150}, {value: __("Size"), width:70}]
this.header = [{value:"__(File name)"},{value: "__(Type)", width:150}, {value: "__(Size)", width:70}]
self.root.set = function(k,v)
{
@ -149,6 +149,7 @@
}
else
refreshData()
//console.log("update")
//calibre_size()
})
self.on("mount", function(){