diff options
| author | crupest <crupest@outlook.com> | 2020-10-31 00:42:06 +0800 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-10-31 00:42:06 +0800 | 
| commit | a3c97f6fb6313da2e8c0fac0b4c08f2ef4265d0f (patch) | |
| tree | ee006874b0c93e9bfc76f141a092a8b9585a1f95 /FrontEnd/src/app/locales | |
| parent | 0c4caaebe2480e77918d5d7df234f0edaeab74ba (diff) | |
| parent | 7ce0846d9ec968da3ea4f7ebcc6db26db8e49089 (diff) | |
| download | timeline-a3c97f6fb6313da2e8c0fac0b4c08f2ef4265d0f.tar.gz timeline-a3c97f6fb6313da2e8c0fac0b4c08f2ef4265d0f.tar.bz2 timeline-a3c97f6fb6313da2e8c0fac0b4c08f2ef4265d0f.zip  | |
Merge pull request #161 from crupest/upgrade
Upgrade packages and split front end and back end.
Diffstat (limited to 'FrontEnd/src/app/locales')
| -rw-r--r-- | FrontEnd/src/app/locales/en/translation.ts | 202 | ||||
| -rw-r--r-- | FrontEnd/src/app/locales/scheme.ts | 182 | ||||
| -rw-r--r-- | FrontEnd/src/app/locales/zh/translation.ts | 195 | 
3 files changed, 579 insertions, 0 deletions
diff --git a/FrontEnd/src/app/locales/en/translation.ts b/FrontEnd/src/app/locales/en/translation.ts new file mode 100644 index 00000000..c7f33d1e --- /dev/null +++ b/FrontEnd/src/app/locales/en/translation.ts @@ -0,0 +1,202 @@ +import TranslationResource from "../scheme"; + +const translation: TranslationResource = { +  welcome: "Welcome!", +  search: "Search", +  loadFailReload: "Load failed, click <1>here</1> to reload.", +  serviceWorker: { +    availableOffline: +      "Timeline is now cached in your computer and you can use it offline. 🎉🎉🎉", +    upgradePrompt: "App is getting a new version!", +    upgradeNow: "Update Now", +    upgradeSuccess: +      "Congratulations! App update succeeded! Still you can use it offline. 🎉🎉🎉", +    externalActivatedPrompt: +      "A new version of app is activated. Please refresh the page. Or it may be broken.", +    reloadNow: "Refresh Now", +  }, +  nav: { +    settings: "Settings", +    login: "Login", +    about: "About", +  }, +  chooseImage: "Choose a image", +  loadImageError: "Failed to load image.", +  home: { +    go: "Go!", +    allTimeline: "All Timelines", +    joinTimeline: "Joined Timelines", +    ownTimeline: "Owned Timelines", +    offlinePrompt: +      "Oh oh, it seems you are offline. Here list some timelines cached locally. You can view them or click <1>here</1> to refresh.", +    createButton: "Create Timeline", +    createDialog: { +      title: "Create Timeline!", +      name: "Name", +      nameFormat: +        "Name must consist of only letter including non-English letter, digit, hyphen(-) and underline(_) and be no longer than 26.", +      badFormat: "Bad format.", +      noEmpty: "Empty is not allowed.", +      tooLong: "Too long.", +    }, +  }, +  operationDialog: { +    retry: "Retry", +    nextStep: "Next", +    previousStep: "Previous", +    confirm: "Confirm", +    cancel: "Cancel", +    ok: "OK!", +    processing: "Processing...", +    success: "Success!", +    error: "An error occured.", +  }, +  timeline: { +    messageCantSee: "Sorry, you are not allowed to see this timeline.😅", +    userNotExist: "The user does not exist!", +    timelineNotExist: "The timeline does not exist!", +    manage: "Manage", +    memberButton: "Member", +    send: "Send", +    deletePostFailed: "Failed to delete post.", +    sendPostFailed: "Failed to send post.", +    visibility: { +      public: "public to everyone", +      register: "only registed people can see", +      private: "only members can see", +    }, +    visibilityTooltip: { +      public: +        "Everyone including those without accounts can see content of the timeline.", +      register: +        "Only those who have an account and logined can see content of the timeline.", +      private: "Only members of this timeline can see content of the timeline.", +    }, +    dialogChangeProperty: { +      title: "Change Timeline Properties", +      visibility: "Visibility", +      description: "Description", +    }, +    member: { +      alreadyMember: "The user is already a member.", +      add: "Add", +      remove: "Remove", +    }, +    manageItem: { +      nickname: "Nickname", +      avatar: "Avatar", +      property: "Timeline Property", +      member: "Timeline Member", +      delete: "Delete Timeline", +    }, +    deleteDialog: { +      title: "Delete Timeline", +      inputPrompt: +        "This is a dangerous action. If you are sure to delete timeline<1>{{name}}</1>, please input its name below and click confirm button.", +      notMatch: "Name does not match.", +    }, +    postSyncState: { +      syncing: "Syncing", +      synced: "Synced", +      offline: "Offline", +    }, +    post: { +      deleteDialog: { +        title: "Confirm Delete", +        prompt: +          "Are you sure to delete the post? This operation is not recoverable.", +      }, +    }, +  }, +  user: { +    username: "username", +    password: "password", +    login: "login", +    rememberMe: "Remember Me", +    welcomeBack: "Welcome back!", +    verifyTokenFailed: "User login info is expired. Please login again!", +    verifyTokenFailedNetwork: +      "Verifying user login info failed. Please check your network and refresh page!", +  }, +  login: { +    emptyUsername: "Username can't be empty.", +    emptyPassword: "Password can't be empty.", +    badCredential: "Username or password is invalid.", +    alreadyLogin: "Already login! Redirect to home page in 3s!", +  }, +  userPage: { +    dialogChangeNickname: { +      title: "Change Nickname", +      inputLabel: "New nickname", +    }, +    dialogChangeAvatar: { +      title: "Change Avatar", +      previewImgAlt: "preview", +      prompt: { +        select: "Please select a picture.", +        crop: "Please crop the picture.", +        processingCrop: "Cropping picture...", +        uploading: "Uploading...", +        preview: "Please preview avatar", +      }, +      upload: "upload", +    }, +  }, +  settings: { +    subheaders: { +      account: "Account", +      customization: "Customization", +    }, +    languagePrimary: "Choose display language.", +    languageSecondary: +      "You language preference will be saved locally. Next time you visit this page, last language option will be used.", +    changePassword: "Change account's password.", +    logout: "Log out this account.", +    gotoSelf: +      "Click here to go to timeline of myself to change nickname and avatar.", +    dialogChangePassword: { +      title: "Change Password", +      prompt: +        "You are changing your password. You need to input the correct old password. After change, you need to login again and all old login will be invalid.", +      inputOldPassword: "Old password", +      inputNewPassword: "New password", +      inputRetypeNewPassword: "Retype new password", +      errorEmptyOldPassword: "Old password can't be empty.", +      errorEmptyNewPassword: "New password can't be empty.", +      errorRetypeNotMatch: "Password retyped does not match.", +    }, +    dialogConfirmLogout: { +      title: "Confirm Logout", +      prompt: +        "Are you sure to log out? All cached data in the browser will be deleted.", +    }, +  }, +  about: { +    author: { +      title: "Site Developer", +      fullname: "Fullname: ", +      nickname: "Nickname: ", +      introduction: "Introduction: ", +      introductionContent: "A programmer coding based on coincidence", +      links: "Links: ", +    }, +    site: { +      title: "Site Information", +      content: +        "The name of this site is <1>Timeline</1>, which is a Web App with <3>timeline</3> as its core concept. Its frontend and backend are both developed by <5>me</5>, and open source on GitHub. It is relatively easy to deploy it on your own server, which is also one of my goals. Welcome to comment anything in GitHub repository.", +      repo: "GitHub Repo", +    }, +    credits: { +      title: "Credits", +      content: +        "Timeline is works standing on shoulders of gaints. Special appreciation for many open source projects listed below or not. Related licenses could be found in GitHub repository.", +      frontend: "Frontend: ", +      backend: "Backend: ", +    }, +  }, +  admin: { +    title: "admin", +  }, +}; + +export default translation; diff --git a/FrontEnd/src/app/locales/scheme.ts b/FrontEnd/src/app/locales/scheme.ts new file mode 100644 index 00000000..9e3534ac --- /dev/null +++ b/FrontEnd/src/app/locales/scheme.ts @@ -0,0 +1,182 @@ +export default interface TranslationResource { +  welcome: string; +  search: string; +  chooseImage: string; +  loadImageError: string; +  loadFailReload: string; +  serviceWorker: { +    availableOffline: string; +    upgradePrompt: string; +    upgradeNow: string; +    upgradeSuccess: string; +    externalActivatedPrompt: string; +    reloadNow: string; +  }; +  nav: { +    settings: string; +    login: string; +    about: string; +  }; +  home: { +    go: string; +    allTimeline: string; +    joinTimeline: string; +    ownTimeline: string; +    offlinePrompt: string; +    createButton: string; +    createDialog: { +      title: string; +      name: string; +      nameFormat: string; +      badFormat: string; +      noEmpty: string; +      tooLong: string; +    }; +  }; +  operationDialog: { +    retry: string; +    nextStep: string; +    previousStep: string; +    confirm: string; +    cancel: string; +    ok: string; +    processing: string; +    success: string; +    error: string; +  }; +  timeline: { +    messageCantSee: string; +    userNotExist: string; +    timelineNotExist: string; +    manage: string; +    memberButton: string; +    send: string; +    deletePostFailed: string; +    sendPostFailed: string; +    visibility: { +      public: string; +      register: string; +      private: string; +    }; +    visibilityTooltip: { +      public: string; +      register: string; +      private: string; +    }; +    dialogChangeProperty: { +      title: string; +      visibility: string; +      description: string; +    }; +    member: { +      alreadyMember: string; +      add: string; +      remove: string; +    }; +    manageItem: { +      nickname: string; +      avatar: string; +      property: string; +      member: string; +      delete: string; +    }; +    deleteDialog: { +      title: string; +      inputPrompt: string; +      notMatch: string; +    }; +    postSyncState: { +      syncing: string; +      synced: string; +      offline: string; +    }; +    post: { +      deleteDialog: { +        title: string; +        prompt: string; +      }; +    }; +  }; +  user: { +    username: string; +    password: string; +    login: string; +    rememberMe: string; +    welcomeBack: string; +    verifyTokenFailed: string; +    verifyTokenFailedNetwork: string; +  }; +  login: { +    emptyUsername: string; +    emptyPassword: string; +    badCredential: string; +    alreadyLogin: string; +  }; +  userPage: { +    dialogChangeNickname: { +      title: string; +      inputLabel: string; +    }; +    dialogChangeAvatar: { +      title: string; +      previewImgAlt: string; +      prompt: { +        select: string; +        crop: string; +        processingCrop: string; +        preview: string; +        uploading: string; +      }; +      upload: string; +    }; +  }; +  settings: { +    subheaders: { +      account: string; +      customization: string; +    }; +    languagePrimary: string; +    languageSecondary: string; +    changePassword: string; +    logout: string; +    gotoSelf: string; +    dialogChangePassword: { +      title: string; +      prompt: string; +      inputOldPassword: string; +      inputNewPassword: string; +      inputRetypeNewPassword: string; +      errorEmptyOldPassword: string; +      errorEmptyNewPassword: string; +      errorRetypeNotMatch: string; +    }; +    dialogConfirmLogout: { +      title: string; +      prompt: string; +    }; +  }; +  about: { +    author: { +      title: string; +      fullname: string; +      nickname: string; +      introduction: string; +      introductionContent: string; +      links: string; +    }; +    site: { +      title: string; +      content: string; +      repo: string; +    }; +    credits: { +      title: string; +      content: string; +      frontend: string; +      backend: string; +    }; +  }; +  admin: { +    title: string; +  }; +} diff --git a/FrontEnd/src/app/locales/zh/translation.ts b/FrontEnd/src/app/locales/zh/translation.ts new file mode 100644 index 00000000..df316366 --- /dev/null +++ b/FrontEnd/src/app/locales/zh/translation.ts @@ -0,0 +1,195 @@ +import TranslationResource from "../scheme"; + +const translation: TranslationResource = { +  welcome: "欢迎!", +  search: "搜索", +  loadFailReload: "加载失败,<1>点击</1>重试。", +  serviceWorker: { +    availableOffline: "Timeline 已经缓存在本地,你可以离线使用它。🎉🎉🎉", +    upgradePrompt: "App 有新版本!", +    upgradeNow: "现在升级", +    upgradeSuccess: "App 升级成功,当然,你仍可以离线使用它。 🎉🎉🎉", +    externalActivatedPrompt: +      "一个新的 App 版本已经激活,请刷新页面使用,否则页面可能会出现故障。", +    reloadNow: "立刻刷新", +  }, +  nav: { +    settings: "设置", +    login: "登陆", +    about: "关于", +  }, +  chooseImage: "选择一个图片", +  loadImageError: "加载图片失败", +  home: { +    go: "冲!", +    allTimeline: "所有的时间线", +    joinTimeline: "加入的时间线", +    ownTimeline: "拥有的时间线", +    offlinePrompt: +      "你好像处于离线状态。以下是一些缓存在本地的时间线。你可以查看它们或者<1>点击</1>重新获取在线信息。", +    createButton: "创建时间线", +    createDialog: { +      title: "创建时间线!", +      name: "名字", +      nameFormat: +        "名字只能由字母、汉字、数字、下划线(_)和连字符(-)构成,且长度不能超过26.", +      badFormat: "格式错误", +      noEmpty: "不能为空", +      tooLong: "太长了", +    }, +  }, +  operationDialog: { +    retry: "重试", +    nextStep: "下一步", +    previousStep: "上一步", +    confirm: "确定", +    cancel: "取消", +    ok: "好的!", +    processing: "处理中...", +    success: "成功!", +    error: "出错啦!", +  }, +  timeline: { +    messageCantSee: "不好意思,你没有权限查看这个时间线。😅", +    userNotExist: "该用户不存在!", +    timelineNotExist: "该时间线不存在!", +    manage: "管理", +    memberButton: "成员", +    send: "发送", +    deletePostFailed: "删除消息失败。", +    sendPostFailed: "发送消息失败。", +    visibility: { +      public: "对所有人公开", +      register: "仅注册可见", +      private: "仅成员可见", +    }, +    visibilityTooltip: { +      public: "所有人都可以看到这个时间线的内容,包括没有注册的人。", +      register: "只有拥有本网站的账号且登陆了的人才能看到这个时间线的内容。", +      private: "只有这个时间线的成员可以看到这个时间线的内容。", +    }, +    dialogChangeProperty: { +      title: "修改时间线属性", +      visibility: "可见性", +      description: "描述", +    }, +    member: { +      alreadyMember: "该用户已经是一个成员。", +      add: "添加", +      remove: "移除", +    }, +    manageItem: { +      nickname: "昵称", +      avatar: "头像", +      property: "时间线属性", +      member: "时间线成员", +      delete: "删除时间线", +    }, +    deleteDialog: { +      title: "删除时间线", +      inputPrompt: +        "这是一个危险的操作。如果您确认要删除时间线<1>{{name}}</1>,请在下面输入它的名字并点击确认。", +      notMatch: "名字不匹配", +    }, +    postSyncState: { +      syncing: "同步中", +      synced: "同步成功", +      offline: "离线", +    }, +    post: { +      deleteDialog: { +        title: "确认删除", +        prompt: "确定删除这个消息?这个操作不可撤销。", +      }, +    }, +  }, +  user: { +    username: "用户名", +    password: "密码", +    login: "登录", +    rememberMe: "记住我", +    welcomeBack: "欢迎回来!", +    verifyTokenFailed: "用户登录信息已过期,请重新登陆!", +    verifyTokenFailedNetwork: +      "验证用户登录信息失败,请检查网络连接并刷新页面!", +  }, +  login: { +    emptyUsername: "用户名不能为空。", +    emptyPassword: "密码不能为空。", +    badCredential: "用户名或密码错误。", +    alreadyLogin: "已经登陆,三秒后导航到首页!", +  }, +  userPage: { +    dialogChangeNickname: { +      title: "更改昵称", +      inputLabel: "新昵称", +    }, +    dialogChangeAvatar: { +      title: "修改头像", +      previewImgAlt: "预览", +      prompt: { +        select: "请选择一个图片", +        crop: "请裁剪图片", +        processingCrop: "正在裁剪图片", +        uploading: "正在上传", +        preview: "请预览图片", +      }, +      upload: "上传", +    }, +  }, +  settings: { +    subheaders: { +      account: "账户", +      customization: "个性化", +    }, +    languagePrimary: "选择显示的语言。", +    languageSecondary: +      "您的语言偏好将会存储在本地,下次浏览时将自动使用上次保存的语言选项。", +    changePassword: "更改账号的密码。", +    logout: "注销此账号。", +    gotoSelf: "点击前往个人时间线修改昵称和头像!", +    dialogChangePassword: { +      title: "修改密码", +      prompt: +        "您正在修改密码,您需要输入正确的旧密码。成功修改后您需要重新登陆,而且以前所有的登录都会失效。", +      inputOldPassword: "旧密码", +      inputNewPassword: "新密码", +      inputRetypeNewPassword: "再次输入新密码", +      errorEmptyOldPassword: "旧密码不能为空。", +      errorEmptyNewPassword: "新密码不能为空", +      errorRetypeNotMatch: "两次输入的密码不一致", +    }, +    dialogConfirmLogout: { +      title: "确定注销", +      prompt: "您确定注销此账号?这将删除所有已经缓存在浏览器的数据。", +    }, +  }, +  about: { +    author: { +      title: "网站作者", +      fullname: "姓名:", +      nickname: "昵称:", +      introduction: "简介:", +      introductionContent: "一个基于巧合编程的代码爱好者。", +      links: "链接:", +    }, +    site: { +      title: "网站信息", +      content: +        "这个网站的名字叫 <1>Timeline</1>,是一个以<3>时间线</3>为核心概念的 Web App . 它的前端和后端都是由<5>我</5>开发,并且在 GitHub 上开源。大家可以相对轻松的把它们部署在自己的服务器上,这也是我的目标之一。欢迎大家前往 GitHub 仓库提出任何意见。", +      repo: "GitHub 仓库", +    }, +    credits: { +      title: "鸣谢", +      content: +        "Timeline 是站在巨人肩膀上的作品,感谢以下列出的和其他未列出的许多开源项目,相关 License 请在 GitHub 仓库中查看。", +      frontend: "前端:", +      backend: "后端:", +    }, +  }, +  admin: { +    title: "管理", +  }, +}; + +export default translation;  | 
