forked from akanyan/STARTLINER
feat: onboarding i18n
This commit is contained in:
@ -1,3 +0,0 @@
|
||||
If you're stuck on this screen, restart the game.
|
||||
|
||||
If the problem persists, <a href="https://gitea.tendokyu.moe/Dniel97/SEGAguide/wiki/FAQ#game-is-stuck-at-checking-distribution-server" target="_blank">check your network configuration</a>
|
@ -1,8 +0,0 @@
|
||||
You can access this page any time by right-clicking the START button.
|
||||
|
||||
Additional resources:
|
||||
|
||||
- <a href="https://gitea.tendokyu.moe/Dniel97/SEGAguide/wiki/FAQ" target="_blank">SEGAguide</a>
|
||||
- <a href="https://two-torial.xyz/" target="_blank">two-torial</a>
|
||||
|
||||
## Have fun
|
@ -1,3 +0,0 @@
|
||||
You also have to calibrate the lever, or you may get the error 3301.
|
||||
|
||||
Go to lever settings (<span class="bg-black text-white">レバー設定</span>), move the lever to both edges, then press "end" (<span class="bg-black text-white">終了</span>) and "save" (<span class="bg-black text-white">保存する</span>).
|
@ -1,3 +0,0 @@
|
||||
You might get stuck on this screen for several minutes. _This is normal_. The game just takes a long time to load data.
|
||||
|
||||
If you install <code>7EVENDAYSHOLIDAYS/LoadBoost</code>, subsequent launches will be much faster.
|
@ -1,7 +0,0 @@
|
||||
You might get stuck on the following screen:
|
||||
|
||||
<div class="p-2 mt-1 mb-1 bg-black text-white">Aグループの基準機から設定を取得</div>
|
||||
|
||||
In which case, you should go to the test menu, and in game settings <span class="bg-black text-white">ゲーム設定</span> switch from "follow the standard machine" <span class="bg-black text-white">基準機に従う</span> to "standard machine" <span class="bg-black text-white">基準機</span>.
|
||||
|
||||
The test menu can be accessed with %TESTMENU%.
|
@ -7,6 +7,9 @@ import { fromKeycode } from '../keyboard';
|
||||
import { useClientStore, usePrfStore } from '../stores';
|
||||
import { prettyPrint } from '../util';
|
||||
import { VueMarkdownIt } from '@f3ve/vue-markdown-it';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
const prf = usePrfStore();
|
||||
const client = useClientStore();
|
||||
@ -25,6 +28,11 @@ interface Datum {
|
||||
const game = computed(() => prf.current?.meta.game);
|
||||
|
||||
const processText = (s: string) => {
|
||||
// Why do I have to do this
|
||||
s = s
|
||||
.split('\n')
|
||||
.map((l) => l.trim())
|
||||
.join('\n');
|
||||
if (prf.current!.data.keyboard?.data.enabled) {
|
||||
const testKey = prf.current!.data.keyboard?.data.test;
|
||||
const readable = fromKeycode(testKey);
|
||||
@ -38,9 +46,14 @@ const processText = (s: string) => {
|
||||
return s.replace('%TESTMENU%', 'a button on the back of the controller');
|
||||
};
|
||||
|
||||
const loadPage = async (title: string) => {
|
||||
const loadPage = (title: string, messages?: object) => {
|
||||
return {
|
||||
text: await (await fetch(`/help-${title}.md`)).text(),
|
||||
text: t(`onboarding.${title}`, {
|
||||
endlink: '</a>',
|
||||
black: '<span class="bg-black text-white">',
|
||||
end: '</span>',
|
||||
...messages,
|
||||
}),
|
||||
image: `help-${title}.png`,
|
||||
};
|
||||
};
|
||||
@ -75,14 +88,25 @@ const data: ComputedRef<Datum[]> = computed(() => {
|
||||
return res;
|
||||
});
|
||||
|
||||
const counter = ref(0);
|
||||
|
||||
onMounted(async () => {
|
||||
[standardOngeki, systemProcessing, lever, server, finaleOngeki] =
|
||||
await Promise.all([
|
||||
loadPage('standard'),
|
||||
loadPage('standard', {
|
||||
bigblack: '<div class="p-2 mt-1 mb-1 bg-black text-white">',
|
||||
endbig: '</div>',
|
||||
}),
|
||||
loadPage('ongeki-system-processing'),
|
||||
loadPage('ongeki-lever'),
|
||||
loadPage('chunithm-server'),
|
||||
loadPage('finale'),
|
||||
loadPage('chunithm-server', {
|
||||
link: '<a href="https://gitea.tendokyu.moe/Dniel97/SEGAguide/wiki/FAQ#game-is-stuck-at-checking-distribution-server" target="_blank">',
|
||||
}),
|
||||
loadPage('finale', {
|
||||
segaguide:
|
||||
'<a href="https://gitea.tendokyu.moe/Dniel97/SEGAguide/wiki/FAQ" target="_blank">',
|
||||
twotorial: '<a href="https://two-torial.xyz/" target="_blank">',
|
||||
}),
|
||||
]);
|
||||
standardOngeki = {
|
||||
...standardOngeki,
|
||||
@ -102,8 +126,6 @@ onMounted(async () => {
|
||||
};
|
||||
});
|
||||
|
||||
const counter = ref(0);
|
||||
|
||||
const exitLabel = computed(() => {
|
||||
return props.firstTime === true && counter.value < data.value.length - 1
|
||||
? 'Skip'
|
||||
|
@ -8,7 +8,7 @@ import { usePrfStore } from '../stores';
|
||||
import { Patch } from '../types';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
const { t } = useI18n();
|
||||
const { t, te } = useI18n();
|
||||
|
||||
const prf = usePrfStore();
|
||||
|
||||
@ -51,14 +51,14 @@ const hexModel = computed({
|
||||
|
||||
// Doesn't need to be reactive
|
||||
const nameKey = `patch.${props.patch?.id}`;
|
||||
let name = t(nameKey);
|
||||
if (name === nameKey) {
|
||||
name = props.patch?.name ?? 'No name';
|
||||
}
|
||||
const name = te(nameKey) ? t(nameKey) : props.patch?.name;
|
||||
|
||||
const tooltipKey = `patch.${props.patch?.id}-tooltip`;
|
||||
const tooltip = te(tooltipKey) ? t(tooltipKey) : props.patch?.tooltip;
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<OptionRow :title="name" :tooltip="patch?.tooltip" :greytext="patch?.id">
|
||||
<OptionRow :title="name" :tooltip="tooltip" :greytext="patch?.id">
|
||||
<ToggleSwitch
|
||||
v-if="patch?.type === undefined"
|
||||
:model-value="prf.current!.data.patches?.[patch!.id!] !== undefined"
|
||||
|
@ -139,11 +139,10 @@ const checkSegatoolsIni = async (target: string) => {
|
||||
</OptionRow>
|
||||
<OptionRow
|
||||
:title="names?.io"
|
||||
:tooltip="
|
||||
t('cfg.segatools.installTooltip', {
|
||||
:tooltip="`${t('cfg.segatools.ioModulesDesc')}
|
||||
${t('cfg.segatools.installTooltip', {
|
||||
thing: t('cfg.segatools.ioModules'),
|
||||
})
|
||||
"
|
||||
})}`"
|
||||
>
|
||||
<Select
|
||||
v-model="prf.current!.data.sgt.io2"
|
||||
|
@ -53,7 +53,11 @@ export default {
|
||||
"No compatible patches found. Make sure you're using unpacked and unpatched files.",
|
||||
forceLoad: 'Force load',
|
||||
// Example patch name override
|
||||
'standard-no-encryption': 'No encryption',
|
||||
// 'standard-no-encryption': 'No encryption',
|
||||
// 'standard-no-encryption-tooltip': 'Will also disable TLS',
|
||||
// It is also possible to add a tooltip where there normally is none
|
||||
// 'standard-maximum-tracks-tooltip': 'The number of tracks per credit',
|
||||
// For more info check https://gitea.tendokyu.moe/akanyan/STARTLINER/wiki/Translation-%26-Localization
|
||||
},
|
||||
cfg: {
|
||||
afterRestart: 'Applied after a restart',
|
||||
@ -65,6 +69,7 @@ export default {
|
||||
'STARTLINER expects unpacked executables put into otherwise clean data.',
|
||||
hooks: 'Hooks',
|
||||
ioModules: 'IO modules',
|
||||
ioModulesDesc: 'This should match your desired input method.',
|
||||
installTooltip: '{thing} can be downloaded from the package store.',
|
||||
},
|
||||
display: {
|
||||
@ -154,4 +159,44 @@ export default {
|
||||
verbose: 'Detailed logs',
|
||||
},
|
||||
},
|
||||
onboarding: {
|
||||
standard: `
|
||||
You might get stuck on the following screen:
|
||||
|
||||
{bigblack}Aグループの基準機から設定を取得{endbig}
|
||||
|
||||
In which case, you should go to the test menu, and in game settings {black}ゲーム設定{end} switch from "follow the standard machine" {black}基準機に従う{end} to "standard machine" {black}基準機{end}.
|
||||
|
||||
The test menu can be accessed with %TESTMENU%.
|
||||
`,
|
||||
|
||||
'ongeki-system-processing': `
|
||||
You might get stuck on this screen for several minutes. _This is normal_. The game just takes a long time to load data.
|
||||
|
||||
If you install <code>7EVENDAYSHOLIDAYS/LoadBoost</code>, subsequent launches will be much faster.
|
||||
`,
|
||||
|
||||
'ongeki-lever': `
|
||||
You also have to calibrate the lever, or you may get the error 3301.
|
||||
|
||||
Go to lever settings ({black}レバー設定{end}), move the lever to both edges, then press "end" ({black}終了{end}) and "save" ({black}保存する{end}).
|
||||
`,
|
||||
|
||||
'chunithm-server': `
|
||||
If you're stuck on this screen, restart the game.
|
||||
|
||||
If the problem persists, {link}check your network configuration{endlink}
|
||||
`,
|
||||
|
||||
finale: `
|
||||
You can access this page any time by right-clicking the START button.
|
||||
|
||||
Additional resources:
|
||||
|
||||
- {segaguide}SEGAguide{endlink}
|
||||
- {twotorial}two-torial{endlink}
|
||||
|
||||
## Have fun
|
||||
`,
|
||||
},
|
||||
};
|
||||
|
Reference in New Issue
Block a user