languages now automatically populate in settings

This commit is contained in:
booploops 2022-01-26 15:50:32 -08:00
parent 20ccda2ea5
commit 6e34a72a09
4 changed files with 50 additions and 14 deletions

View file

@ -1,8 +1,8 @@
{ // Base File { // Base File
// i18n Info // i18n Info
"i18n.languageName": "English", // name of language in native language "i18n.languageName": "English US", // name of language in native language
"i18n.languageNameEnglish": "English", // name of language in English "i18n.languageNameEnglish": "English US", // name of language in English
"i18n.category": "main", // main = real language, fun = fun community languages "i18n.category": "main", // main = real language, fun = fun community languages
"i18n.authors": "@maikirakiwi", // Authors, if you contribute to this file feel free to add your name seperated with a space "i18n.authors": "@maikirakiwi", // Authors, if you contribute to this file feel free to add your name seperated with a space
@ -97,6 +97,7 @@
"term.clearAll": "Clear All", "term.clearAll": "Clear All",
"term.recentStations": "Recent Stations", "term.recentStations": "Recent Stations",
"term.language": "Language", "term.language": "Language",
"term.funLanguages": "Fun",
"term.noLyrics": "Loading... / Lyrics not found./ Instrumental.", "term.noLyrics": "Loading... / Lyrics not found./ Instrumental.",
"term.copyright": "Copyright", "term.copyright": "Copyright",
"term.rightsReserved": "All Rights Reserved.", "term.rightsReserved": "All Rights Reserved.",
@ -173,6 +174,13 @@
"action.playTracksLater": "Play ${app.selectedMediaItems.length} tracks later", "action.playTracksLater": "Play ${app.selectedMediaItems.length} tracks later",
"action.removeTracks": "Remove ${self.selectedItems.length} tracks from queue", "action.removeTracks": "Remove ${self.selectedItems.length} tracks from queue",
// Settings - General
"settings.header.general": "General",
"settings.option.general.language": "Language",
// Language optgroups
"settings.option.general.language.main": "Languages",
"settings.option.general.language.fun": "Fun Languages",
"settings.option.general.language.unsorted": "Unsorted",
// Settings - Audio // Settings - Audio
"settings.header.audio": "Audio", "settings.header.audio": "Audio",
"settings.header.audio.description": "Adjust the audio settings for Cider.", "settings.header.audio.description": "Adjust the audio settings for Cider.",

View file

@ -288,8 +288,6 @@ export class Win {
event.returnValue = process.platform; event.returnValue = process.platform;
}); });
console.warn(path.join(__dirname, "../../src/i18n/en_US.jsonc"))
electron.ipcMain.on("get-i18n", (event, key) => { electron.ipcMain.on("get-i18n", (event, key) => {
let i18nBase = fs.readFileSync(path.join(__dirname, "../../src/i18n/en_US.jsonc"), "utf8"); let i18nBase = fs.readFileSync(path.join(__dirname, "../../src/i18n/en_US.jsonc"), "utf8");
i18nBase = jsonc.parse(i18nBase) i18nBase = jsonc.parse(i18nBase)
@ -306,6 +304,24 @@ export class Win {
}); });
electron.ipcMain.on("get-i18n-listing", event => {
let i18nFiles = fs.readdirSync(path.join(__dirname, "../../src/i18n")).filter(file => file.endsWith(".jsonc"));
// read all the files and parse them
let i18nListing = []
for (let i = 0; i < i18nFiles.length; i++) {
let i18n = fs.readFileSync(path.join(__dirname, `../../src/i18n/${i18nFiles[i]}`), "utf8");
i18n = jsonc.parse(i18n)
i18nListing.push({
"code": i18nFiles[i].replace(".jsonc", ""),
"nameNative": i18n["i18n.languageName"] ?? i18nFiles[i].replace(".jsonc", ""),
"nameEnglish": i18n["i18n.languageNameEnglish"] ?? i18nFiles[i].replace(".jsonc", ""),
"category": i18n["i18n.category"] ?? "",
"authors": i18n["i18n.authors"] ?? ""
})
}
event.returnValue = i18nListing;
})
electron.ipcMain.on("get-gpu-mode", (event) => { electron.ipcMain.on("get-gpu-mode", (event) => {
event.returnValue = process.platform; event.returnValue = process.platform;
}); });

View file

@ -135,6 +135,7 @@ const app = new Vue({
mk: {}, mk: {},
quickPlayQuery: "", quickPlayQuery: "",
lz: ipcRenderer.sendSync("get-i18n", "en_US"), lz: ipcRenderer.sendSync("get-i18n", "en_US"),
lzListing: ipcRenderer.sendSync("get-i18n-listing"),
search: { search: {
term: "", term: "",
hints: [], hints: [],

View file

@ -534,16 +534,9 @@
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<select class="md-select" @change="$root.setLz('')" v-model="app.cfg.general.language"> <select class="md-select" @change="$root.setLz('')" v-model="app.cfg.general.language">
<option value="en_US">en_US</option> <optgroup :label="index" v-for="(categories, index) in getLanguages()">
<option value="el_GR">el_GR</option> <option v-for="lang in categories" :value="lang.code">{{lang.nameNative}} ({{ lang.nameEnglish }})</option>
<option value="ja_JP">ja_JP</option> </optgroup>
<option value="pt_BR">pt_BR</option>
<option value="tr_TR">tr_TR</option>
<option value="zh_CN">zh_CN</option>
<option value="zh_TW">zh_TW</option>
<option value="zh_HK">zh_HK</option>
<option value="en_HODOR">HODOR?</option>
<option value="en_SGA">Galactic</option>
</select> </select>
</div> </div>
</div> </div>
@ -649,6 +642,24 @@
} }
}, },
methods: { methods: {
getLanguages: function () {
let langs = this.$root.lzListing
let categories = {
"main": [],
"fun": [],
"unsorted": []
}
// sort by category if category is undefined or empty put it in "unsorted"
for (let i = 0; i < langs.length; i++) {
if (langs[i].category === undefined || langs[i].category === "") {
categories.unsorted.push(langs[i])
} else {
categories[langs[i].category].push(langs[i])
}
}
// return
return categories
},
addExperiment(flag) { addExperiment(flag) {
app.cfg.advanced.experiments.push(flag); app.cfg.advanced.experiments.push(flag);
}, },