From f6617ff77dfa8f1467768a67f1d290684ae8a0d3 Mon Sep 17 00:00:00 2001 From: Deluan Date: Fri, 17 Apr 2020 21:54:41 -0400 Subject: [PATCH] Add Chinese Simplified translation --- ui/package-lock.json | 5 ++ ui/package.json | 1 + ui/src/i18n/cn.js | 136 +++++++++++++++++++++++++++++++++++++++++++ ui/src/i18n/index.js | 3 +- 4 files changed, 144 insertions(+), 1 deletion(-) create mode 100644 ui/src/i18n/cn.js diff --git a/ui/package-lock.json b/ui/package-lock.json index 70cf2f10f..ff5fb4ad5 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -13122,6 +13122,11 @@ "ra-core": "^3.3.3" } }, + "ra-language-chinese": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/ra-language-chinese/-/ra-language-chinese-2.0.5.tgz", + "integrity": "sha512-BwaqQWDNhQX/Ufe5Ki2GrJ3k5OGmH8dKrQn/npvRik80+tpN4Ew4vbyS8o4E74B4UfSJ8Sj10YdB0bA6FZnAOA==" + }, "ra-language-english": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ra-language-english/-/ra-language-english-3.2.0.tgz", diff --git a/ui/package.json b/ui/package.json index c1b25bd0a..7beaa789c 100644 --- a/ui/package.json +++ b/ui/package.json @@ -12,6 +12,7 @@ "md5-hex": "^3.0.1", "prop-types": "^15.7.2", "ra-data-json-server": "^3.3.3", + "ra-language-chinese": "^2.0.5", "ra-language-italian": "^3.0.0", "ra-language-portuguese": "^1.6.0", "react": "^16.13.1", diff --git a/ui/src/i18n/cn.js b/ui/src/i18n/cn.js new file mode 100644 index 000000000..ab8fd3e73 --- /dev/null +++ b/ui/src/i18n/cn.js @@ -0,0 +1,136 @@ +import deepmerge from 'deepmerge' +import chineseMessages from 'ra-language-chinese' + +export default deepmerge(chineseMessages, { + languageName: '简体中文', + resources: { + song: { + name: '歌曲 |||| 曲库', + fields: { + title: '标题', + artist: '歌手', + album: '专辑', + path: '路径', + genre: '类型', + compilation: '收录', + albumArtist: '专辑歌手', + duration: '时长', + year: '年份', + playCount: '播放次数', + trackNumber: '音轨 #', + size: '大小', + updatedAt: '上次更新' + }, + bulk: { + addToQueue: '稍后播放' + } + }, + album: { + name: '专辑 |||| 专辑', + fields: { + name: '名称', + albumArtist: '专辑歌手', + artist: '歌手', + duration: '时长', + songCount: '曲目数', + playCount: '播放次数', + compilation: '合辑', + year: '年份' + }, + actions: { + playAll: '播放', + playNext: '播放下一首', + addToQueue: '稍后播放', + shuffle: '刷新' + } + }, + artist: { + name: '歌手 |||| 歌手', + fields: { + name: '名称', + albumCount: '歌手数' + } + }, + user: { + name: '用户 |||| 用户', + fields: { + userName: '用户名', + isAdmin: '管理员', + lastLoginAt: '最后一次访问', + updatedAt: '上次修改', + name: '名称' + } + }, + player: { + name: '用户 |||| 用户', + fields: { + name: '名称', + transcodingId: '转码', + maxBitRate: '最大比特率', + client: '应用程序', + userName: '用户', + lastSeen: '最后一次访问' + } + }, + transcoding: { + name: '转码 |||| 转码', + fields: { + name: '名称', + targetFormat: '格式', + defaultBitRate: '默认比特率', + command: '命令' + } + } + }, + ra: { + auth: { + welcome1: '感谢您安装Navidrome!', + welcome2: '为了开始使用,请创建一个管理员账户', + confirmPassword: '确认密码', + buttonCreateAdmin: '创建管理员' + }, + validation: { + invalidChars: '请只使用字母和数字', + passwordDoesNotMatch: '密码不匹配' + } + }, + menu: { + library: '曲库', + settings: '设置', + version: '版本 %{version}', + theme: '主题', + personal: { + name: '个性化', + options: { + theme: '主题', + language: '语言' + } + } + }, + player: { + playListsText: '播放队列', + openText: '打开', + closeText: '关闭', + notContentText: '无音乐', + clickToPlayText: '点击播放', + clickToPauseText: '点击暂停', + nextTrackText: '下一首', + previousTrackText: '上一首', + reloadText: 'Reload', + volumeText: '音量', + toggleLyricText: '切换歌词', + toggleMiniModeText: '最小化', + destroyText: '损坏', + downloadText: '下载', + removeAudioListsText: '清空播放列表', + controllerTitle: '', + clickToDeleteText: `点击删除 %{name}`, + emptyLyricText: '无歌词', + playModeText: { + order: '顺序播放', + orderLoop: '列表循环', + singleLoop: '单曲循环', + shufflePlay: '随机播放' + } + } +}) diff --git a/ui/src/i18n/index.js b/ui/src/i18n/index.js index 4fd0cc11d..9412f7994 100644 --- a/ui/src/i18n/index.js +++ b/ui/src/i18n/index.js @@ -2,6 +2,7 @@ import deepmerge from 'deepmerge' import en from './en' import it from './it' import pt from './pt' +import cn from './cn' const addLanguages = (lang) => { Object.keys(lang).forEach((l) => (languages[l] = deepmerge(en, lang[l]))) @@ -9,7 +10,7 @@ const addLanguages = (lang) => { const languages = { en } // Add new languages to the object bellow -addLanguages({ it, pt }) +addLanguages({ cn, it, pt }) // "Hack" to make "albumSongs" resource use the same translations as "song" Object.keys(languages).forEach(