added multilanguage support

This commit is contained in:
2022-06-10 21:49:13 -05:00
parent 5c29ba1ef2
commit 85ff5851b5
4 changed files with 77 additions and 54 deletions

View File

@@ -30,22 +30,6 @@ export default async function (
bundle: true,
minify: false,
// write: false, //TODO this will cause result.outputFiles to have the file contents so i can write the file instead
// watch: !watchCallback
// ? false
// : {
// onRebuild(err, _result) {
// console.log('onrebuild')
// let error = null
// if (err) {
// console.error(name, err)
// error = (err as BuildFailure).message
// }
// watchCallback(metaJson, error)
// },
// },
define: {
UserScriptName: `'${metaJson.name}'`,
UserScriptNamespace: `'${metaJson.namespace}'`,

View File

@@ -79,12 +79,20 @@ ${(Object.keys(meta) as Array<keyof UserScriptMetaFull>)
: key
key_str = key_str.padEnd(12, ' ')
if (typeof val === 'boolean') {
if (typeof val === 'boolean') { //bool
if (val) return `// @${key_str}`
} else if (typeof val === 'string') {
} else if (typeof val === 'string') { //string
return `// @${key_str} ${val}`
} else if (Array.isArray(val)) {
} else if (Array.isArray(val)) { //multiple
return val.map(v => `// @${key_str} ${v}`).join('\n')
} else if (typeof val === 'object') { //multilingual
let langs = val
return Object.keys(langs)
.map(lang => {
let langStr = lang === 'default' ? '' : `:${lang}`
return `// @${key_str}${langStr} ${langs[lang]}`
})
.join('\n')
}
return ''

View File

@@ -1,16 +1,22 @@
export type UserScriptMetaMultilingual = string | {
default: string
[lang: string]: string
}
export type UserScriptMetaMultiple = string | string[]
export interface UserScriptMetaPartial {
name?: string
name?: UserScriptMetaMultilingual
namespace?: string
match?: string | string[]
excludematch?: string | string[]
match?: UserScriptMetaMultiple
excludematch?: UserScriptMetaMultiple
version?: string
description?: string
description?: UserScriptMetaMultilingual
icon?: string
require?: string | string[]
resource?: string | string[]
require?: UserScriptMetaMultiple
resource?: UserScriptMetaMultiple
runat?: 'document-start' | 'document-end' | 'document-idle' | ''
noframes?: boolean
grant?: string | string[]
grant?: UserScriptMetaMultiple
injectinto?: 'page' | 'content' | 'auto' | ''
downloadURL?: string
supportURL?: string
@@ -19,7 +25,7 @@ export interface UserScriptMetaPartial {
}
export interface UserScriptMeta extends UserScriptMetaPartial {
name: string
name: UserScriptMetaMultilingual
namespace: string
version: string
downloadURL: string
@@ -28,15 +34,15 @@ export interface UserScriptMeta extends UserScriptMetaPartial {
}
export interface UserScriptMetaFull extends UserScriptMeta {
match: string | string[]
excludematch: string | string[]
description: string
match: UserScriptMetaMultiple
excludematch: UserScriptMetaMultiple
description: UserScriptMetaMultilingual
icon: string
require: string | string[]
resource: string | string[]
require: UserScriptMetaMultiple
resource: UserScriptMetaMultiple
runat: 'document-start' | 'document-end' | 'document-idle' | ''
noframes: boolean
grant: string | string[]
grant: UserScriptMetaMultiple
injectinto: 'page' | 'content' | 'auto' | ''
unwrap: boolean
}