From 527520566d67b3e5de8a31da155cd2e76b67787c Mon Sep 17 00:00:00 2001 From: kwaroran Date: Sat, 16 Mar 2024 14:40:10 +0900 Subject: [PATCH] Add Multilanguage support for creator notes --- src/lib/ChatScreens/CreatorQuote.svelte | 8 +--- src/lib/SideBars/CharConfig.svelte | 5 ++- src/lib/UI/GUI/MultiLangDisplay.svelte | 35 ++++++++++++++++ src/lib/UI/GUI/MultiLangInput.svelte | 54 +++++++++++++++++++++++++ src/lib/UI/Realm/RealmHubIcon.svelte | 6 ++- src/lib/UI/Realm/RealmPopUp.svelte | 6 +-- src/lib/UI/Realm/RealmUpload.svelte | 31 ++++++++------ src/ts/util.ts | 41 ++++++++++++++++++- 8 files changed, 158 insertions(+), 28 deletions(-) create mode 100644 src/lib/UI/GUI/MultiLangDisplay.svelte create mode 100644 src/lib/UI/GUI/MultiLangInput.svelte diff --git a/src/lib/ChatScreens/CreatorQuote.svelte b/src/lib/ChatScreens/CreatorQuote.svelte index 5d6ab518..7ec06132 100644 --- a/src/lib/ChatScreens/CreatorQuote.svelte +++ b/src/lib/ChatScreens/CreatorQuote.svelte @@ -5,17 +5,13 @@ -
- {#await ParseMarkdown(quote) then md} - {@html md} - {/await} -
+ + +
+
+ {#each Object.keys(valueObject) as lang} + {#if lang !== 'xx' || Object.keys(valueObject).length === 1} + + {/if} + {/each} +
+ {#if markdown} +
+ {#await ParseMarkdown(valueObject[selectedLang]) then md} + {@html md} + {/await} +
+ {:else} +
+ {valueObject[selectedLang]} +
+ {/if} +
\ No newline at end of file diff --git a/src/lib/UI/GUI/MultiLangInput.svelte b/src/lib/UI/GUI/MultiLangInput.svelte new file mode 100644 index 00000000..cfdde0fd --- /dev/null +++ b/src/lib/UI/GUI/MultiLangInput.svelte @@ -0,0 +1,54 @@ + + +
+ {#each Object.keys(valueObject) as lang} + {#if lang !== 'xx'} + + {/if} + {/each} + +
+{#if addingLang} +
+ {#each languageCodes as lang} + + {/each} +
+{/if} + { + updateValue() + onInput() +}} additionalClass={className} /> \ No newline at end of file diff --git a/src/lib/UI/Realm/RealmHubIcon.svelte b/src/lib/UI/Realm/RealmHubIcon.svelte index 9b87d4dc..d1cceef9 100644 --- a/src/lib/UI/Realm/RealmHubIcon.svelte +++ b/src/lib/UI/Realm/RealmHubIcon.svelte @@ -3,6 +3,7 @@ import { alertNormal } from "src/ts/alert"; import { hubURL, type hubType } from "src/ts/characterCards"; import { trimNonLatin } from "src/ts/storage/globalApi"; + import { parseMultilangString } from "src/ts/util"; export let onClick = () => {} export let chara:hubType @@ -10,11 +11,12 @@ - {/if} @@ -79,16 +82,18 @@ import { shareRisuHub } from "src/ts/characterCards"; import { DataBase, type character } from "src/ts/storage/database"; import TextInput from "../GUI/TextInput.svelte"; - import TextAreaInput from "../GUI/TextAreaInput.svelte"; import Button from "../GUI/Button.svelte"; import SelectInput from "../GUI/SelectInput.svelte"; import { CCLicenseData } from "src/ts/creation/license"; import OptionInput from "../GUI/OptionInput.svelte"; + import { parseMultilangString } from "src/ts/util"; + import MultiLangInput from "../GUI/MultiLangInput.svelte"; export let close = () => {} export let char:character let tags="" let privateMode = false let nsfwMode = false let license = "" + let creatorNotes: {[code:string]:string} = parseMultilangString(char.creatorNotes) \ No newline at end of file diff --git a/src/ts/util.ts b/src/ts/util.ts index 2dc3157b..934ab92d 100644 --- a/src/ts/util.ts +++ b/src/ts/util.ts @@ -383,4 +383,43 @@ export function BufferToText(data:Uint8Array){ return Buffer.from(data).toString('utf-8') } return new TextDecoder().decode(data) -} \ No newline at end of file +} + +export function encodeMultilangString(data:{[code:string]:string}){ + let result = '' + if(data.en){ + result = data.en + } + for(const key in data){ + result = `${result}\n` + + } + return result +} + +export function parseMultilangString(data:string){ + let result:{[code:string]:string} = {} + const regex = /