From 9a16d3e4defafe0db825074c925d430f47c15dfe Mon Sep 17 00:00:00 2001 From: jysperm Date: Sun, 5 Oct 2014 06:37:51 +0800 Subject: [PATCH] i18n translate --- app.coffee | 2 + core/locale/en.json | 7 +- core/locale/zh_CN.json | 181 ++++++++++-------- core/model/account.coffee | 4 +- core/router/account.coffee | 2 +- .../{setting.coffee => preferences.coffee} | 2 +- .../{setting.jade => preferences.jade} | 34 ++-- core/view/layout.jade | 2 +- core/view/panel.jade | 4 +- core/view/ticket/view.jade | 6 +- package.json | 92 ++++----- plugin/rpvhost/locale/zh_CN.json | 3 + sample/rpvhost.config.coffee | 2 +- 13 files changed, 181 insertions(+), 160 deletions(-) rename core/static/script/account/{setting.coffee => preferences.coffee} (96%) rename core/view/account/{setting.jade => preferences.jade} (59%) create mode 100644 plugin/rpvhost/locale/zh_CN.json diff --git a/app.coffee b/app.coffee index 7b13bf6..fcdafbc 100644 --- a/app.coffee +++ b/app.coffee @@ -70,6 +70,8 @@ exports.run = -> res.locals.config = app.config res.locals.t = res.t = app.i18n.getTranslator req + res.locals.config.web.name = res.t app.config.web.t_name + res.locals.selectHook = (name) -> return app.pluggable.selectHook req.account, name diff --git a/core/locale/en.json b/core/locale/en.json index 3b04ba3..4418d79 100644 --- a/core/locale/en.json +++ b/core/locale/en.json @@ -12,7 +12,7 @@ "common": { "error": "Error" }, - "account": { + "account": { "": "Account", "signup": "Register", "login": "Login", @@ -24,7 +24,7 @@ "panel": { "": "Control Panel" }, - "ticket": { + "ticket": { "": "Support Tickets", "type": "Type", "title": "Title", @@ -39,7 +39,7 @@ "finish_ticket": "Finish", "reopen_ticket": "Reopen" }, - "plan": { + "plan": { "": "Plan" }, "admin": { @@ -56,6 +56,5 @@ } }, "plugins": { - } } diff --git a/core/locale/zh_CN.json b/core/locale/zh_CN.json index 12793db..be3a4a1 100644 --- a/core/locale/zh_CN.json +++ b/core/locale/zh_CN.json @@ -1,88 +1,105 @@ { - "app": { - "name": "RootPanel", - "description": "一个插件化的 Linux 虚拟主机管理系统。" + "app": { + "name": "RootPanel", + "description": "一个插件化的 Linux 虚拟主机管理系统。" + }, + "plans": { + "sample": { + "name": "示例", + "description": "每月 8 元,按小时计费" }, - "plans": { - "sample": { - "name": "示例", - "description": "每月 8 元,按小时计费" - }, - "test": { - "name": "测试", - "description": "按量付费,7 天不使用自动关闭" - } - }, - "common": { - "error": "错误", - "success": "成功" - }, - "languages": { - "zh_CN": "简体中文", - "en": "English", - "auto": "自动" - }, - "error_code": { - "username_exist": "用户名已存在" + "test": { + "name": "测试", + "description": "按量付费,7 天不使用自动关闭" + } + }, + "common": { + "error": "错误", + "success": "成功", + "save": "保存", + "apply": "使用", + "change": "修改" + }, + "languages": { + "zh_CN": "简体中文", + "en": "English", + "auto": "自动" + }, + "error_code": { + "username_exist": "用户名已存在" + }, + "account": { + "": "帐号", + "register": "注册", + "login": "登录", + "username": "用户名", + "email": "邮箱", + "password": "密码", + "logout": "注销", + "preferences": "首选项" + }, + "panel": { + "": "管理面板", + "overview": "概况" + }, + "ticket": { + "": "工单", + "title": "标题", + "status": "状态", + "create": "创建", + "reply": "回复", + "replies": "全部回复", + "create_ticket": "创建工单", + "create_reply": "创建回复", + "ticket_list": "工单列表", + "close_ticket": "关闭", + "finish_ticket": "完成", + "reopen_ticket": "重新打开", + "creator": "创建者", + "members": "成员" + }, + "plan": { + "": "套餐", + "subscribe": "订购", + "unsubscribe": "退订", + "balance": "余额", + "remaining_time": "剩余时长", + "currency": { + "cny": "CNY" + } + }, + "admin": { + "admin_panel": "管理员面板" + }, + "time": { + "day": "天" + }, + "notification_title": { + "ticket": "<%= title %> | 工单" + }, + "view": { + "layout": { + "navigation": "展开导航" }, "account": { - "": "帐号", - "register": "注册", - "login": "登录", - "username": "用户名", - "email": "邮箱", - "password": "密码", - "logout": "注销" + "password2": "重复", + "already_register": "已有帐号?", + "no_account": "还没有账户?", + "password_inconsistent": "两次输入的密码不一致" }, - "panel": { - "": "管理面板", - "overview": "概况" - }, - "ticket": { - "": "工单", - "title": "标题", - "status": "状态", - "create": "创建", - "reply": "回复", - "replies": "全部回复", - "create_ticket": "创建工单", - "create_reply": "创建回复", - "ticket_list": "工单列表", - "close_ticket": "关闭", - "finish_ticket": "完成", - "reopen_ticket": "重新打开", - "creator": "创建者", - "members": "成员" - }, - "plan": { - "": "套餐", - "subscribe": "订购", - "unsubscribe": "退订", - "balance": "余额", - "remaining_time": "剩余时长", - "currency": { - "cny": "CNY" - } - }, - "admin": { - "admin_panel": "管理员面板" - }, - "time": { - "day": "天" - }, - "notification_title": { - "ticket": "<%= title %> | 工单" - }, - "view": { - "layout": { - "navigation": "展开导航" - }, - "account": { - "password2": "重复", - "already_register": "已有帐号?", - "no_account": "还没有账户?", - "password_inconsistent": "两次输入的密码不一致" - } - }, - "plugins": {} + "preferences": { + "options": "信息和偏好", + "qq": "QQ", + "coupon_code": "兑换代码", + "code": "代码", + "update_password": "修改密码", + "old_password": "原密码", + "new_password": "新密码", + "repeat_password": "重复密码", + "update_email": "修改邮箱", + "current_email": "当前邮箱", + "new_email": "新邮箱" + } + }, + "plugins": {} } diff --git a/core/model/account.coffee b/core/model/account.coffee index b3ffac6..dbf8c16 100644 --- a/core/model/account.coffee +++ b/core/model/account.coffee @@ -19,7 +19,7 @@ sample = groups: ['root'] - settings: + preferences: avatar_url: 'http://ruby-china.org/avatar/efcc15b92617a95a09f514a9bff9e6c3?s=58' language: 'zh_CN' timezone: 'Asia/Shanghai' @@ -78,7 +78,7 @@ exports.register = (account, callback) -> groups: [] - settings: + preferences: avatar_url: "//ruby-china.org/avatar/#{utils.md5(email)}?s=58" language: 'auto' timezone: config.i18n.default_timezone diff --git a/core/router/account.coffee b/core/router/account.coffee index ae5f8a6..e487d6d 100644 --- a/core/router/account.coffee +++ b/core/router/account.coffee @@ -138,7 +138,7 @@ exports.post '/update_email', requireAuthenticate, (req, res) -> , -> res.json {} -exports.post '/update_settings', requireAuthenticate, (req, res) -> +exports.post '/update_preferences', requireAuthenticate, (req, res) -> modifiers = $set: {} diff --git a/core/static/script/account/setting.coffee b/core/static/script/account/preferences.coffee similarity index 96% rename from core/static/script/account/setting.coffee rename to core/static/script/account/preferences.coffee index 39d9c07..d2d5eca 100644 --- a/core/static/script/account/setting.coffee +++ b/core/static/script/account/preferences.coffee @@ -1,6 +1,6 @@ $ -> $('.action-save').click -> - request '/account/update_settings/', + request '/account/update_preferences/', qq: $('.form-setting .input-qq').val() , -> alert t 'common.success' diff --git a/core/view/account/setting.jade b/core/view/account/preferences.jade similarity index 59% rename from core/view/account/setting.jade rename to core/view/account/preferences.jade index 27291b8..6e5fc83 100644 --- a/core/view/account/setting.jade +++ b/core/view/account/preferences.jade @@ -1,68 +1,68 @@ extends ../layout prepend header - title 个人信息 | #{config.web.name} + title #{t('account.preferences')} | #{config.web.name} block main .row - header 信息设置 + header= t('view.preferences.options') form.form-setting.form-horizontal .form-group - label.col-sm-2.col-md-offset-1.control-label QQ + label.col-sm-2.col-md-offset-1.control-label= t('view.preferences.qq') .col-sm-5 input.input-qq.form-control(type='text', value=account.settings.qq) .form-group .col-sm-offset-3 - button.action-save.btn.btn-lg.btn-success(type='button') 保存 + button.action-save.btn.btn-lg.btn-success(type='button')= t('common.save') .row - header 兑换代码 + header= t('view.preferences.coupon_code') form.form-coupon.form-horizontal .form-group - label.col-sm-2.col-md-offset-1.control-label 代码 + label.col-sm-2.col-md-offset-1.control-label= t('view.preferences.code') .col-sm-5 input.input-coupon_code.form-control(type='text') .form-group .col-sm-offset-3 - button.action-use.btn.btn-lg.btn-success(type='button') 使用 + button.action-use.btn.btn-lg.btn-success(type='button')= t('common.apply') .row - header 修改密码 + header= t('view.preferences.update_password') form.form-password.form-horizontal .form-group - label.col-sm-2.col-md-offset-1.control-label 原密码 + label.col-sm-2.col-md-offset-1.control-label= t('view.preferences.old_password') .col-sm-5 input.input-old_password.form-control(type='password') .form-group - label.col-sm-2.col-md-offset-1.control-label 新密码 + label.col-sm-2.col-md-offset-1.control-label= t('view.preferences.new_password') .col-sm-5 input.input-password.form-control(type='password') .form-group - label.col-sm-2.col-md-offset-1.control-label 重复密码 + label.col-sm-2.col-md-offset-1.control-label= t('view.preferences.repeat_password') .col-sm-5 input.input-password2.form-control(type='password') .form-group .col-sm-offset-3 - button.action-update-password.btn.btn-lg.btn-info(type='button') 修改 + button.action-update-password.btn.btn-lg.btn-info(type='button')= t('common.change') .row - header 修改邮箱 + header= t('view.preferences.update_email') form.form-email.form-horizontal .form-group - label.col-sm-2.col-md-offset-1.control-label 当前邮箱 + label.col-sm-2.col-md-offset-1.control-label= t('view.preferences.current_email') .col-sm-5 input.form-control(value=account.email, disabled) .form-group - label.col-sm-2.col-md-offset-1.control-label 密码 + label.col-sm-2.col-md-offset-1.control-label= t('account.password') .col-sm-5 input.input-password.form-control(type='password') .form-group - label.col-sm-2.col-md-offset-1.control-label 新邮箱 + label.col-sm-2.col-md-offset-1.control-label= t('view.preferences.new_email') .col-sm-5 input.input-email.form-control(type='text') .form-group .col-sm-offset-3 - button.action-update-email.btn.btn-lg.btn-info(type='button') 修改 + button.action-update-email.btn.btn-lg.btn-info(type='button')= t('common.change') append footer diff --git a/core/view/layout.jade b/core/view/layout.jade index b5217b0..8774e79 100644 --- a/core/view/layout.jade +++ b/core/view/layout.jade @@ -36,7 +36,7 @@ html a(href='/panel/')= t('panel.') if app.models.mAccount.inGroup(account, 'root') li - a(href='/admin/') 管理员面板 + a(href='/admin/')= t('admin.admin_panel') li a#logout(href='/account/logout/')= t('account.logout') else diff --git a/core/view/panel.jade b/core/view/panel.jade index 7c6715a..b30cb61 100644 --- a/core/view/panel.jade +++ b/core/view/panel.jade @@ -45,9 +45,9 @@ block main prepend sidebar .row p - a.btn.btn-lg.btn-success(href='/ticket/list/') 工单 + a.btn.btn-lg.btn-success(href='/ticket/list/')= t('ticket.') p - a.btn.btn-lg.btn-success(href='/account/setting/') 首选项 + a.btn.btn-lg.btn-success(href='/account/preferences/')= t('account.preferences') append footer script(src='/script/panel.js') diff --git a/core/view/ticket/view.jade b/core/view/ticket/view.jade index 96aaa91..5096a51 100644 --- a/core/view/ticket/view.jade +++ b/core/view/ticket/view.jade @@ -28,7 +28,7 @@ block main for reply in ticket.replies li.list-group-item.clearfix a.pull-left - img(src= reply.account.settings.avatar_url) + img(src= reply.account.preferences.avatar_url) .list-content p!= reply.content_html p @@ -63,7 +63,7 @@ prepend sidebar header= t('ticket.creator') li.list-group-item.clearfix a.pull-left - img(src= ticket.account.settings.avatar_url) + img(src= ticket.account.preferences.avatar_url) p span.label.label-info= ticket.account.username br @@ -73,7 +73,7 @@ prepend sidebar header= t('ticket.members') for member in ticket.members a.pull-left - img(src= member.settings.avatar_url, alt= member.username) + img(src= member.preferences.avatar_url, alt= member.username) append footer script(src='/script/ticket/view.js') diff --git a/package.json b/package.json index 837efea..6b6414c 100644 --- a/package.json +++ b/package.json @@ -1,49 +1,49 @@ { - "name": "rootpanel", - "version": "0.8.0", - "description": "A linux virtual host management system with extensibility", - "homepage": "http://rpvhost.net", - "license": "AGPL-3.0", - "repository": { - "type": "git", - "url": "https://github.com/jysperm/RootPanel.git" - }, - "contributors": [ - { - "name": "jysperm", - "email": "jysperm@gmail.com", - "url": "http://jysperm.me" - } - ], - "scripts": { - "start": "node start.js" - }, - "bin": { - "rp-fix-permissions": "./bin/rp-fix-permissions.coffee", - "rp-system-sync": "./bin/rp-system-sync.coffee", - "rp-migration": "./bin/rp-migration.coffee", - "rp-clean": "./bin/rp-clean.coffee" - }, - "dependencies": { - "negotiator": "^0.4.8", - "async": "^0.9.0", - "coffee-script": "^1.7.1", - "connect": "^2.17.3", - "express": "^4.8.4", - "harp": "^0.13.0", - "jade": "^1.3.1", - "markdown": "^0.5.0", - "middleware-injector": "^0.1.1", - "moment-timezone": "^0.2.2", - "mongodb": "^1.4.8", - "mysql": "^2.4.2", - "nodemailer": "^1.2.1", - "redis": "^0.12.1", - "request": "^2.40.0", - "tmp": "^0.0.24", - "underscore": "^1.6.0", - "json-stable-stringify": "^1.0.0", - "counter-cache": "^0.1.0", - "cookie-parser": "^1.3.3" + "name": "rootpanel", + "version": "0.8.0", + "description": "A linux virtual host management system with extensibility", + "homepage": "http://rpvhost.net", + "license": "AGPL-3.0", + "repository": { + "type": "git", + "url": "https://github.com/jysperm/RootPanel.git" + }, + "contributors": [ + { + "name": "jysperm", + "email": "jysperm@gmail.com", + "url": "http://jysperm.me" } + ], + "scripts": { + "start": "node start.js" + }, + "bin": { + "rp-fix-permissions": "./bin/rp-fix-permissions.coffee", + "rp-system-sync": "./bin/rp-system-sync.coffee", + "rp-migration": "./bin/rp-migration.coffee", + "rp-clean": "./bin/rp-clean.coffee" + }, + "dependencies": { + "negotiator": "^0.4.8", + "async": "^0.9.0", + "coffee-script": "^1.7.1", + "connect": "^2.17.3", + "express": "^4.8.4", + "harp": "^0.13.0", + "jade": "^1.3.1", + "markdown": "^0.5.0", + "middleware-injector": "^0.1.1", + "moment-timezone": "^0.2.2", + "mongodb": "^1.4.8", + "mysql": "^2.4.2", + "nodemailer": "^1.2.1", + "redis": "^0.12.1", + "request": "^2.40.0", + "tmp": "^0.0.24", + "underscore": "^1.6.0", + "json-stable-stringify": "^1.0.0", + "counter-cache": "^0.1.0", + "cookie-parser": "^1.3.3" + } } diff --git a/plugin/rpvhost/locale/zh_CN.json b/plugin/rpvhost/locale/zh_CN.json new file mode 100644 index 0000000..ea354b1 --- /dev/null +++ b/plugin/rpvhost/locale/zh_CN.json @@ -0,0 +1,3 @@ +{ + "site_name": "RP 主机" +} diff --git a/sample/rpvhost.config.coffee b/sample/rpvhost.config.coffee index b77a62b..1ab1586 100644 --- a/sample/rpvhost.config.coffee +++ b/sample/rpvhost.config.coffee @@ -1,6 +1,6 @@ module.exports = web: - name: 'RP 主机' + t_name: 'plugins.rpvhost.site_name' url: 'http://rpvhost.net' listen: '/home/rpadmin/rootpanel.sock' google_analytics_id: 'UA-49193300-2'