diff --git a/package.json b/package.json index ca72e47e..25e68733 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "electron-window-state": "^5.0.3", "express": "^4.17.2", "get-port": "^5.1.1", + "jsonc": "^2.0.0", "lastfmapi": "^0.1.1", "mdns-js": "github:bitfocus/node-mdns-js", "mpris-service": "^2.1.2", @@ -135,12 +136,12 @@ "backgroundColor": "transparent", "setBuildNumber": true }, - "nsis": { + "nsis": { "oneClick": false, "perMachine": false, "allowToChangeInstallationDirectory": true, - "license": "LICENSE", - "deleteAppDataOnUninstall": true + "license": "LICENSE", + "deleteAppDataOnUninstall": true }, "win": { "target": [ diff --git a/src/i18n/en_GB.jsonc b/src/i18n/en_GB.jsonc new file mode 100644 index 00000000..0788726a --- /dev/null +++ b/src/i18n/en_GB.jsonc @@ -0,0 +1,3 @@ +{ + "home.friendsListeningTo": "Bruv's Listening To" +} \ No newline at end of file diff --git a/src/i18n/en_US.jsonc b/src/i18n/en_US.jsonc index 5fcf9dcf..26290d9c 100644 --- a/src/i18n/en_US.jsonc +++ b/src/i18n/en_US.jsonc @@ -25,6 +25,9 @@ "term.queue": "Queue", "term.search": "Search", "term.library": "Library", + "term.listenNow": "Listen Now", + "term.browse": "Browse", + "term.radio": "Radio", "term.recentlyAdded": "Recently Added", "term.songs": "Songs", "term.albums": "Albums", @@ -171,5 +174,5 @@ // Web Remote "remote.web.title": "Cider Remote", - "remote.web.description": "Scan the QR code to pair your phone up with this Cider instance", + "remote.web.description": "Scan the QR code to pair your phone up with this Cider instance" } \ No newline at end of file diff --git a/src/i18n/ja_JP.jsonc b/src/i18n/ja_JP.jsonc index bf8c14bb..60ac26a5 100644 --- a/src/i18n/ja_JP.jsonc +++ b/src/i18n/ja_JP.jsonc @@ -171,4 +171,5 @@ // Web Remote "remote.web.title": "Cider リモート", "remote.web.description": "QRコードを使用して、Ciderとスマートフォンをペアリングする", + } diff --git a/src/i18n/tr_TR.jsonc b/src/i18n/tr_TR.jsonc index 10d6bf3e..206e3c6e 100644 --- a/src/i18n/tr_TR.jsonc +++ b/src/i18n/tr_TR.jsonc @@ -91,5 +91,5 @@ "settings.header.connectivity": "Diğer Servisler", "settings.header.connectivity.description": "Cider'i diğer servislere bağlayarak deneyiminizi zenginleştirin.", "settings.header.experimental": "Deneysel", - "settings.header.experimental.description": "Cider'deki deneysel özelliklere erişim sağlayın. (Not: Bazı özellikler düzgün çalışmayabilir.)", + "settings.header.experimental.description": "Cider'deki deneysel özelliklere erişim sağlayın. (Not: Bazı özellikler düzgün çalışmayabilir.)" } \ No newline at end of file diff --git a/src/i18n/zh_CN.jsonc b/src/i18n/zh_CN.jsonc index 6cf2cb74..44afaaf8 100644 --- a/src/i18n/zh_CN.jsonc +++ b/src/i18n/zh_CN.jsonc @@ -172,5 +172,5 @@ // Web Remote "remote.web.title": "Cider 远程控制", - "remote.web.description": "扫描以下的二维码以控制 Cider", + "remote.web.description": "扫描以下的二维码以控制 Cider" } diff --git a/src/i18n/zh_TW.jsonc b/src/i18n/zh_TW.jsonc index 09bafe28..f8ae2145 100644 --- a/src/i18n/zh_TW.jsonc +++ b/src/i18n/zh_TW.jsonc @@ -172,5 +172,5 @@ // Web Remote "remote.web.title": "Cider 遠控", - "remote.web.description": "掃描以下的行動條碼以控制 Cider", + "remote.web.description": "掃描以下的行動條碼以控制 Cider" } \ No newline at end of file diff --git a/src/main/base/win.ts b/src/main/base/win.ts index fb959568..70402c14 100644 --- a/src/main/base/win.ts +++ b/src/main/base/win.ts @@ -12,6 +12,7 @@ import * as os from "os"; import * as mm from 'music-metadata'; import fetch from 'electron-fetch' import {wsapi} from "./wsapi"; +import * as jsonc from "jsonc"; export class Win { win: any | undefined = null; @@ -287,6 +288,24 @@ export class Win { event.returnValue = process.platform; }); + console.warn(path.join(__dirname, "../../src/i18n/en_US.jsonc")) + + electron.ipcMain.on("get-i18n", (event, key) => { + let i18nBase = fs.readFileSync(path.join(__dirname, "../../src/i18n/en_US.jsonc"), "utf8"); + i18nBase = jsonc.parse(i18nBase) + try { + let i18n = fs.readFileSync(path.join(__dirname, `../../src/i18n/${key}.jsonc`), "utf8"); + i18n = jsonc.parse(i18n) + Object.assign(i18nBase, i18n) + }catch(e) { + console.error(e); + event.returnValue = e; + } + + event.returnValue = i18nBase; + + }); + electron.ipcMain.on("get-gpu-mode", (event) => { event.returnValue = process.platform; }); diff --git a/src/renderer/index.js b/src/renderer/index.js index fa069330..14df5ea7 100644 --- a/src/renderer/index.js +++ b/src/renderer/index.js @@ -134,9 +134,7 @@ const app = new Vue({ platform: "", mk: {}, quickPlayQuery: "", - lz: { - - }, + lz: ipcRenderer.sendSync("get-i18n", "en_US"), search: { term: "", hints: [], @@ -339,6 +337,12 @@ const app = new Vue({ }, }, methods: { + setLz(lang) { + if(lang == "") { + lang = this.cfg.general.language + } + this.lz = ipcRenderer.sendSync("get-i18n", lang) + }, getLz(message) { if(this.lz[message]) { return this.lz[message] @@ -499,6 +503,7 @@ const app = new Vue({ }, async init() { let self = this + this.setLz(this.cfg.general.language) clearTimeout(this.hangtimer) this.mk = MusicKit.getInstance() let needsReload = (typeof localStorage["music.ampwebplay.media-user-token"] == "undefined") diff --git a/src/renderer/views/components/mediaitem-artwork.ejs b/src/renderer/views/components/mediaitem-artwork.ejs index 7e169943..79ffa4f9 100644 --- a/src/renderer/views/components/mediaitem-artwork.ejs +++ b/src/renderer/views/components/mediaitem-artwork.ejs @@ -3,6 +3,7 @@ v-observe-visibility="{callback: visibilityChanged}">
@@ -22,6 +23,10 @@ type: [String, Number], required: false }, + bgcolor: { + type: String, + default: '' + }, url: { type: String, default: '' diff --git a/src/renderer/views/components/mediaitem-list-item.ejs b/src/renderer/views/components/mediaitem-list-item.ejs index b691ee69..b99f68e0 100644 --- a/src/renderer/views/components/mediaitem-list-item.ejs +++ b/src/renderer/views/components/mediaitem-list-item.ejs @@ -28,6 +28,7 @@
@@ -102,6 +103,10 @@ this.getClasses() }, methods: { + getBgColor() { + let color = `#${(this.item.attributes.artwork != null && this.item.attributes.artwork.bgColor != null) ? (this.item.attributes.artwork.bgColor) : ``}` + return color + }, async checkLibrary() { if(this.addedToLibrary) {return this.addedToLibrary} if(this.item.type.includes("library-playlists") || this.item.type.includes("station")) { diff --git a/src/renderer/views/components/mediaitem-square.ejs b/src/renderer/views/components/mediaitem-square.ejs index 67fae157..0a2cca53 100644 --- a/src/renderer/views/components/mediaitem-square.ejs +++ b/src/renderer/views/components/mediaitem-square.ejs @@ -11,6 +11,7 @@ :video="(item.attributes != null && item.attributes.editorialVideo != null) ? (item.attributes.editorialVideo.motionDetailSquare ? item.attributes.editorialVideo.motionDetailSquare.video : (item.attributes.editorialVideo.motionSquareVideo1x1 ? item.attributes.editorialVideo.motionSquareVideo1x1.video : '')) : '' " :size="size" shadow="subtle" + :bgcolor="getBgColor()" :type="item.type"> diff --git a/src/renderer/views/pages/settings.ejs b/src/renderer/views/pages/settings.ejs index 1337a2f5..d330161d 100644 --- a/src/renderer/views/pages/settings.ejs +++ b/src/renderer/views/pages/settings.ejs @@ -508,6 +508,22 @@ + +
+
+ Language +
+
+ +
+