From 800dee183ab258657d8d44b6edb5230119101149 Mon Sep 17 00:00:00 2001
From: Observer KRypt0n_
Date: Sun, 20 Feb 2022 10:50:33 +0200
Subject: [PATCH 1/5] Updated uwu and Italian
---
public/locales/it-it.yaml | 33 +++++++++++++++++----------------
public/locales/uwu.yaml | 18 +++++++++---------
2 files changed, 26 insertions(+), 25 deletions(-)
diff --git a/public/locales/it-it.yaml b/public/locales/it-it.yaml
index 10dcb52..e466357 100644
--- a/public/locales/it-it.yaml
+++ b/public/locales/it-it.yaml
@@ -23,7 +23,7 @@ launcher:
game:
downloading: Scaricando il gioco...
unpacking: Decomprimendo il gioco...
- applying_changes: Applying changes...
+ applying_changes: Applicando i cambiamenti...
deleting_outdated: Cancellando file vecchi...
# Voice packages installation
@@ -42,12 +42,12 @@ launcher:
update: Aggiorna
apply_changes:
- title: Apply changes
- hint: Apply hdiff changes to the game files
+ title: Applica cambiamenti
+ hint: Applica i cambiamenti di hdiff ai file di gioco
remove_outdated:
- title: Remove outdated
- hint: Remove outdated game files
+ title: Elimina file vecchi
+ hint: Elimina file di gioco vecchi
# When the game should be patched
patching:
@@ -301,8 +301,8 @@ notifications:
# HDiffPatch couldn't successfully apply game files changes
game_changes_applying_error:
- title: An error occurred during game updating
- body: '{files} files couldn''t be updated by the hdiff patch'
+ title: Si è verificato un errore nell'aggiornamento del gioco
+ body: '{files} files non sono stati aggiornati dalla patch hdiff
# ToS violation warning window
tos_violation:
@@ -324,18 +324,19 @@ tos_violation:
# Analytics window
analytics:
- title: Yanfei's commission...
- header: Participate in anonymous data collection
+ title: La commissione di Yanfei...
+ header: Partecipa nella collezione di dati anonimi
body:
- - To count the active user base for Linux, Yanfei would like to collect your IP address everytime the game updates
- - The IP address will be hashed for security purpose
+ - Per contare il numero di giocatori attivi su Linux, Yanfei vorrebbe collezionare il tuo indirizzo IP ogni volta che il gioco si aggiorna
+ - L'indirizzo IP sarà hashato per motivi di sicurezza
actions:
share_country:
- title: Share country
- hint: Allow Yanfei to store the country your IP address registered in to make statistics more detailed. No other data than the country will be stored
+ title: Condividi paese
+ hint: Permetti a Yanfei di registrare lo stato del tuo indirizzo IP per raccogliere statistiche più dettagliate.
+ Nessun''altro dato oltre al paese verrà registrato.
- participate: Participate
- skip: Skip
- skip_forever: Skip and don't ask again
\ No newline at end of file
+ participate: Partecipa
+ skip: Rifiuta
+ skip_forever: Rifiuta e non chiedere più
\ No newline at end of file
diff --git a/public/locales/uwu.yaml b/public/locales/uwu.yaml
index a8d8b05..033ea6a 100644
--- a/public/locales/uwu.yaml
+++ b/public/locales/uwu.yaml
@@ -325,18 +325,18 @@ tos_violation:
# Analytics window
analytics:
- title: Yanfei's commission...
- header: Participate in anonymous data collection
+ title: Yanfei's commission... (≧◡≦)
+ header: pawticipate in a-anonymous data cowwection
body:
- - To count the active user base for Linux, Yanfei would like to collect your IP address everytime the game updates
- - The IP address will be hashed for security purpose
+ - to count the active u-user base fow winux, yanfei wouwd wike to c-cowwect youw ip addwess evewytime the g-game updates
+ - the ip addwess will be hashed f-fow secuwity puwpose
actions:
share_country:
- title: Share country
- hint: Allow Yanfei to store the country your IP address registered in to make statistics more detailed. No other data than the country will be stored
+ title: share countwy
+ hint: awwow yanfei t-to store the countwy y-youw ip addwess w-wegistewed in to make statistics more detaiwed (* ^ ω ^) n-no other data than the countwy will be stowed
- participate: Participate
- skip: Skip
- skip_forever: Skip and don't ask again
\ No newline at end of file
+ participate: pawticipate
+ skip: skip
+ skip_forever: skip and don't ask again
\ No newline at end of file
From 75f2ad66ed6d1bc3a937dd1b290c30a1e32a8f53 Mon Sep 17 00:00:00 2001
From: Observer KRypt0n_
Date: Sun, 20 Feb 2022 13:29:06 +0200
Subject: [PATCH 2/5] Added initial Chinese game version support - added
`zh-cn` locale - added `server` field to `config.yaml` file that indicates
currently using game server - `global` or `cn` its default value is based
on the system language - `constants.paths.gameDataDir` returns path based on
`server` config property - `constants.placeholders.uppercase.full` was
changed to an object: + global: + cn: -
in `constants.uri.*` changed second fields: + api + telemetry they're
following the same format as `full` placeholder - `constants.versionsUri()`
and `constants.backgroundUri()` are functions now their output depends on
server you're passing as a parameter - added `Game.server` field (global /
cn) - `PatchInfo` type now contains `server` field - `Patch.getPatchInfo()`
also depends on `Game.server` value - reworked `Background.get()` method to
support cn game api
---
README.md | 14 +-
public/locales/de-de.yaml | 1 +
public/locales/en-us.yaml | 1 +
public/locales/es-es.yaml | 1 +
public/locales/fr-fr.yaml | 1 +
public/locales/hu-hu.yaml | 1 +
public/locales/id-id.yaml | 1 +
public/locales/it-it.yaml | 1 +
public/locales/nb-no.yaml | 1 +
public/locales/ru-ru.yaml | 1 +
public/locales/uwu.yaml | 1 +
public/locales/zh-cn.yaml | 344 +++++++++++++++++++++++++++++++
src/defaultSettings.ts | 13 +-
src/i18n.ts | 1 +
src/splash.svelte | 2 +-
src/tos-violation.svelte | 2 +-
src/ts/Constants.ts | 69 +++++--
src/ts/Game.ts | 18 +-
src/ts/Launcher.ts | 8 +-
src/ts/Patch.ts | 23 ++-
src/ts/launcher/Background.ts | 32 ++-
src/ts/launcher/Locales.ts | 3 +-
src/ts/launcher/states/Launch.ts | 2 +-
src/ts/types/Patch.d.ts | 5 +
24 files changed, 503 insertions(+), 43 deletions(-)
create mode 100644 public/locales/zh-cn.yaml
diff --git a/README.md b/README.md
index 453b8c0..f9020d8 100644
--- a/README.md
+++ b/README.md
@@ -48,6 +48,16 @@ flatpak install launcher.moe com.gitlab.KRypt0n_.an-anime-game-launcher
Some additional configuration is possible when using the flatpak. For info about this, see [this page](https://gitlab.com/lane__/an-anime-game-launcher-flatpak/-/blob/master/README.md)
+## Chinese version
+
+To use Chinese version of the game make sure that you have
+
+```yaml
+server: cn
+```
+
+field in your `config.yaml` file (settings -> launcher folder). If your system uses the Chinese language - then it should be selected automatically. If not, then close the launcher, replace `server: global` with `server: cn`, and run it again. After that launcher will download the Chinese version of the game and the patch
+
# Status
| Game version | Launcher version | Patch version |
@@ -159,8 +169,8 @@ This is our current roadmap goals. You can find older ones [here](repository/pag
* ToS Violation Window *(2.1.0)*
* Add `latest.log` file generation *(2.1.2)*
* Add an option to show terminal with the wine's log of the game *(7375c743, released in 2.1.3)*
-* Statistics window
-* Add Chinese game's version support (due to changes in the Krock's patch)
+* Statistics window *(e0a09323)*
+* Add Chinese game's version support (due to changes in the Krock's patch)
* Implement manual config flushing functionality from the Empathize's API
* Add analytics window
* Dark progress bar design
diff --git a/public/locales/de-de.yaml b/public/locales/de-de.yaml
index 395f8f3..d8e632e 100644
--- a/public/locales/de-de.yaml
+++ b/public/locales/de-de.yaml
@@ -92,6 +92,7 @@ settings:
hu-hu: Magyar
id-id: Bahasa Indonesia
nb-no: Norsk
+ zh-cn: 中国
uwu: Engwish
# Spiel sprachpaket auswahl
diff --git a/public/locales/en-us.yaml b/public/locales/en-us.yaml
index 02ae16d..12931e7 100644
--- a/public/locales/en-us.yaml
+++ b/public/locales/en-us.yaml
@@ -92,6 +92,7 @@ settings:
hu-hu: Magyar
id-id: Bahasa Indonesia
nb-no: Norsk
+ zh-cn: 中国
uwu: Engwish
# Game voice pack language
diff --git a/public/locales/es-es.yaml b/public/locales/es-es.yaml
index 509dbbc..15999c1 100644
--- a/public/locales/es-es.yaml
+++ b/public/locales/es-es.yaml
@@ -92,6 +92,7 @@ settings:
hu-hu: Magyar
id-id: Bahasa Indonesia
nb-no: Norsk
+ zh-cn: 中国
uwu: Engwish
# Idioma del paquete de voz
diff --git a/public/locales/fr-fr.yaml b/public/locales/fr-fr.yaml
index 47d82ca..18efbfc 100644
--- a/public/locales/fr-fr.yaml
+++ b/public/locales/fr-fr.yaml
@@ -95,6 +95,7 @@ settings:
hu-hu: Magyar
id-id: Bahasa Indonesia
nb-no: Norsk
+ zh-cn: 中国
uwu: Engwish
# Game voice pack language
diff --git a/public/locales/hu-hu.yaml b/public/locales/hu-hu.yaml
index c459240..f9493c1 100644
--- a/public/locales/hu-hu.yaml
+++ b/public/locales/hu-hu.yaml
@@ -92,6 +92,7 @@ settings:
hu-hu: Magyar
id-id: Bahasa Indonesia
nb-no: Norsk
+ zh-cn: 中国
uwu: Engwish
# Game voice pack language
diff --git a/public/locales/id-id.yaml b/public/locales/id-id.yaml
index ed99d82..02a6cb8 100644
--- a/public/locales/id-id.yaml
+++ b/public/locales/id-id.yaml
@@ -92,6 +92,7 @@ settings:
hu-hu: Magyar
id-id: Bahasa Indonesia
nb-no: Norsk
+ zh-cn: 中国
uwu: Engwish
# Game voice pack language
diff --git a/public/locales/it-it.yaml b/public/locales/it-it.yaml
index e466357..04cf446 100644
--- a/public/locales/it-it.yaml
+++ b/public/locales/it-it.yaml
@@ -92,6 +92,7 @@ settings:
hu-hu: Magyar
id-id: Bahasa Indonesia
nb-no: Norsk
+ zh-cn: 中国
uwu: Engwish
# Game voice pack language
diff --git a/public/locales/nb-no.yaml b/public/locales/nb-no.yaml
index f59c18d..3e876b6 100644
--- a/public/locales/nb-no.yaml
+++ b/public/locales/nb-no.yaml
@@ -92,6 +92,7 @@ settings:
hu-hu: Magyar
id-id: Bahasa Indonesia
nb-no: Norsk
+ zh-cn: 中国
uwu: Engwish
# Game voice pack language
diff --git a/public/locales/ru-ru.yaml b/public/locales/ru-ru.yaml
index 27a15c8..3c50520 100644
--- a/public/locales/ru-ru.yaml
+++ b/public/locales/ru-ru.yaml
@@ -92,6 +92,7 @@ settings:
hu-hu: Magyar
id-id: Bahasa Indonesia
nb-no: Norsk
+ zh-cn: 中国
uwu: Engwish
# Язык озвучки в игре
diff --git a/public/locales/uwu.yaml b/public/locales/uwu.yaml
index 033ea6a..22663c1 100644
--- a/public/locales/uwu.yaml
+++ b/public/locales/uwu.yaml
@@ -92,6 +92,7 @@ settings:
hu-hu: Magyar
id-id: Bahasa Indonesia
nb-no: Norsk
+ zh-cn: 中国
uwu: Engwish
# Game voice pack language
diff --git a/public/locales/zh-cn.yaml b/public/locales/zh-cn.yaml
new file mode 100644
index 0000000..12931e7
--- /dev/null
+++ b/public/locales/zh-cn.yaml
@@ -0,0 +1,344 @@
+# Splash window
+splash:
+ title: Loading launcher
+ phrases:
+ - Doing some important stuff...
+ - Bullying Paimon...
+ - Pulling for Yae...
+ - Farming materials...
+ - Passing Abyss...
+ - Collecting achievements...
+ - Building phys Qiqi...
+ - Making sacrifices for 5*...
+ - Finding friends for co-op...
+
+# Launcher window
+launcher:
+ # Progress bar
+ progress:
+ pause: Pause
+ resume: Resume
+
+ # Game installation
+ game:
+ downloading: Downloading game...
+ unpacking: Unpacking game...
+ applying_changes: Applying changes...
+ deleting_outdated: Deleting outdated files...
+
+ # Voice packages installation
+ voice:
+ deleting: Deleting voice packages...
+ downloading: Downloading {voice} voice package...
+ unpacking: Unpacking {voice} voice package...
+
+ # Launcher states
+ states:
+ # When the game should be installed or updated
+ installation:
+ install_wine: Install Wine
+ install_dxvk: Install DXVK
+ install: Install
+ update: Update
+
+ apply_changes:
+ title: Apply changes
+ hint: Apply hdiff changes to the game files
+
+ remove_outdated:
+ title: Remove outdated
+ hint: Remove outdated game files
+
+ # When the game should be patched
+ patching:
+ # Patch unavailable
+ unavailable:
+ title: Patch unavailable
+ hint: This game version has no anti-cheat patch.
+ Please, wait a few days before there will be a test or stable version
+
+ # Patch is in testing
+ test:
+ title: Apply test patch
+ hint: This game version has an experimental anti-cheat patch.
+ You can wait a few days until it is stable or apply it at your own risk
+
+ # Patch is stable
+ stable: Apply patch
+
+ # When the game is ready for playing
+ ready:
+ launch: Launch
+ predownload: Pre-download update
+
+# Settings window
+settings:
+ # General
+ general:
+ title: General
+ items:
+ # Language selection
+ lang:
+ # Launcher language
+ launcher:
+ title: Launcher
+ items:
+ en-us: English (US)
+ ru-ru: Русский
+ es-es: Español
+ de-de: Deutsch
+ fr-fr: Français
+ it-it: Italiano
+ hu-hu: Magyar
+ id-id: Bahasa Indonesia
+ nb-no: Norsk
+ zh-cn: 中国
+ uwu: Engwish
+
+ # Game voice pack language
+ voice:
+ title: Voice pack
+ tooltip: You will have to manually select the new voice pack in the game
+ items:
+ en-us: English (US)
+ ja-jp: Japanese
+ ko-kr: Korean
+ zh-cn: Chinese
+
+ # Launcher theme
+ theme:
+ title: Theme
+ items:
+ system: System
+ light: Light
+ dark: Dark
+
+ # Discord RPC
+ discord:
+ title: Discord RPC
+ settings:
+ title: Discord RPC settings
+ items:
+ timer: Show estimated time spent
+ in-launcher: Launcher text
+ in-game: In-game text
+ selectIcon: Select icon
+
+ # Some buttons
+ buttons:
+ winetricks: winetricks
+ winecfg: winecfg
+ launcher: launcher folder
+ game: game folder
+
+ # Enhancements
+ enhancements:
+ title: Enhancements
+
+ # Enhancements related to the wine
+ wine:
+ title: Wine
+ items:
+ # HUD
+ hud:
+ title: HUD
+ items:
+ none: None
+ dxvk: DXVK
+ mangohud: MangoHUD
+
+ # Wine synchronization
+ winesync:
+ title: Wine synchronization
+ tooltip: ESync is a mechanism of synchronizing multi-thread operations. It can improve your game performance.
+ FSync is an improved version of ESync that works on specific kernel versions
+ items:
+ none: None
+ esync: ESync
+ fsync: FSync
+ futex2: Futex2
+
+ # AMD FSR
+ fsr:
+ title: Enable AMD FSR
+ tooltip: This option enables AMD FidelityFX Super Resolution (FSR)
+ which will scale your game resolution without losing FPS
+
+ # Wine Virtual Desktop
+ winevd:
+ title: Virtual Desktop
+ settings:
+ title: Virtual Desktop settings
+ items:
+ width: Width
+ height: Height
+
+ # Enhancements related to the game
+ game:
+ title: Game
+ items:
+ # GameMode
+ gamemode:
+ title: Use GameMode
+ tooltip:
+ enabled: It is a software that can improve the game performance
+ disabled: ⚠️ You don't have gamemode package installed
+
+ # Borderless Window
+ borderless_window:
+ title: Allow borderless window
+ tooltip: Removes the window borders when playing in windowed mode.
+ To play in a fullscreen borderless window, press alt+enter when playing on fullscreen
+
+ # Unlock FPS
+ fps_unlocker:
+ title: Unlock FPS
+ tooltip: This option will unlock maximum of the 60 fps limitation
+
+ # Use separate terminal window to run the game
+ use_terminal:
+ title: Use terminal
+ tooltip: With this option enabled launcher will run the wine command in a separate terminal window
+
+ # Enhancements related to the launcher
+ launcher:
+ title: Launcher
+ items:
+ # Delete logs
+ purge_logs:
+ # Game logs (DXVK)
+ game:
+ title: Delete DXVK logs
+ tooltip: With this option enabled your launcher will automatically
+ delete DXVK log files
+
+ # Launcher logs
+ launcher:
+ title: Delete launcher logs
+ tooltip: Amount of time after which launcher will delete its old log files
+ items:
+ 1d: 1 day
+ 3d: 3 days
+ 5d: 5 days
+ 7d: 1 week
+ 14d: 2 weeks
+ never: Never
+
+ # Runners
+ runners:
+ title: Wine version
+ items:
+ recommended:
+ title: Show recommended only
+ tooltip: This option will hide unplayable wine versions
+
+ # DXVKs
+ dxvks:
+ title: DXVK
+ items:
+ recommended:
+ title: Show recommended only
+ tooltip: This option will hide old DXVK versions
+
+ # Shaders
+ shaders:
+ title: Shaders
+ items:
+ shaders:
+ title: Shaders
+ tooltip: Use Home button to toggle shaders in the game
+ items:
+ none: None
+ custom: Custom
+
+ author: 'Author: {author}'
+ no_images: No images added
+ not_installed: You haven't installed vkBasalt and reshade-shaders library
+
+ # Environmantal variables manager
+ environment:
+ title: Environment
+ items:
+ # Table rows
+ table:
+ name: Name
+ value: Value
+
+ # Table buttons
+ buttons:
+ add: Add
+ delete: Delete
+
+# Notifications
+notifications:
+ # Launcher update
+ launcher_update_available:
+ title: 'Launcher update available: {from} -> {to}'
+ body: You can download a new version of the launcher from the project's repository at {repository}
+
+ # Before telemetry check when iputils is not downloaded
+ iputils_package_required:
+ title: An Anime Game Launcher
+ body: You must have iputils installed for telemetry checking
+
+ # When telemetry servers are not disabled
+ telemetry_not_disabled:
+ title: An Anime Game Launcher
+ body: Telemetry servers are not disabled
+
+ # Before patch applying when xdelta3 package is not downloaded
+ xdelta3_package_required:
+ title: An Anime Game Launcher
+ body: You must download xdelta3 package to apply the patch
+
+ # If patch wasn't applied because of some error
+ patch_applying_error:
+ title: An Anime Game Launcher
+ body: Patch wasn't applied successfully. Please, check your log file to find a reason of it, or ask someone in our discord server
+
+ # Patch repositories are not available
+ patch_repos_unavailable:
+ title: An Anime Game Launcher
+ body: None of the patch repositories are available. You'll be able to run the game, but launcher can't be sure is it patched properly
+
+ # HDiffPatch couldn't successfully apply game files changes
+ game_changes_applying_error:
+ title: An error occurred during game updating
+ body: '{files} files couldn''t be updated by the hdiff patch'
+
+# ToS violation warning window
+tos_violation:
+ title: ToS violation warning
+ heading: ⚠️ Be warned
+ body: This launcher is an unofficial tool, in no way related to {company} nor {company_alterego}.
+ This tool is designed to facilitate playing {game} on Linux,
+ and was built with the sole purpose of installing and running the game with less hassle.
+ It does so by using existing components and making the experience simple for the user.
+ However, some components used here likely break the {company} Terms of Service for {game}.
+ If you are using this launcher, your player account could become identified as TOS-non-compliant by {company}/{company_alterego}.
+ If this happens, as your account would be disobeying TOS, {company}/{company_alterego} are free to do what they want. Including banning.
+ If you understand the risk of trying to play the game in an unofficial capacity, press OK and let's go researching the world of Teyvat!
+ buttons:
+ ok:
+ title: I understand the risk
+ tooltip: You really should read this text above. It's important
+ cancel: Cancel
+ discord: Our discord server
+
+# Analytics window
+analytics:
+ title: Yanfei's commission...
+ header: Participate in anonymous data collection
+
+ body:
+ - To count the active user base for Linux, Yanfei would like to collect your IP address everytime the game updates
+ - The IP address will be hashed for security purpose
+
+ actions:
+ share_country:
+ title: Share country
+ hint: Allow Yanfei to store the country your IP address registered in to make statistics more detailed. No other data than the country will be stored
+
+ participate: Participate
+ skip: Skip
+ skip_forever: Skip and don't ask again
\ No newline at end of file
diff --git a/src/defaultSettings.ts b/src/defaultSettings.ts
index 5aa7baf..2d47a44 100644
--- a/src/defaultSettings.ts
+++ b/src/defaultSettings.ts
@@ -1,17 +1,26 @@
-import { Configs, promisify } from './empathize';
+import { Configs } from './empathize';
import constants from './ts/Constants';
import Locales from './ts/launcher/Locales';
+const systemLocale = await Locales.system();
+
export default new Promise(async (resolve) => {
await Configs.defaults({
lang: {
- launcher: await Locales.system(),
+ launcher: systemLocale,
voice: [
'en-us'
]
},
+ /**
+ * Game server
+ *
+ * Available options: "global" and "cn"
+ */
+ server: systemLocale === 'zh-cn' ? 'cn' : 'global',
+
folders: {
/**
* Path to wine prefix
diff --git a/src/i18n.ts b/src/i18n.ts
index db473c1..76965ac 100644
--- a/src/i18n.ts
+++ b/src/i18n.ts
@@ -11,6 +11,7 @@ register('it-it', () => Locales.get('it-it'));
register('hu-hu', () => Locales.get('hu-hu'));
register('id-id', () => Locales.get('id-id'));
register('nb-no', () => Locales.get('nb-no'));
+register('zh-cn', () => Locales.get('zh-cn'));
register('uwu', () => Locales.get('uwu'));
Locales.default().then((locale) => {
diff --git a/src/splash.svelte b/src/splash.svelte
index e392381..a1d8040 100644
--- a/src/splash.svelte
+++ b/src/splash.svelte
@@ -62,7 +62,7 @@
{$_(`splash.phrases.${phrase}`, {
values: {
// Required by de-de locale
- game: constants.placeholders.uppercase.full
+ game: constants.placeholders.uppercase.full.global
}
})}
diff --git a/src/tos-violation.svelte b/src/tos-violation.svelte
index 23c8958..0fa8f6c 100644
--- a/src/tos-violation.svelte
+++ b/src/tos-violation.svelte
@@ -58,7 +58,7 @@
values: {
company: constants.placeholders.uppercase.company,
company_alterego: constants.placeholders.uppercase.company_alterego,
- game: constants.placeholders.uppercase.full
+ game: constants.placeholders.uppercase.full.global
}
})}
diff --git a/src/ts/Constants.ts b/src/ts/Constants.ts
index 59ed46a..f45a5dd 100644
--- a/src/ts/Constants.ts
+++ b/src/ts/Constants.ts
@@ -1,5 +1,9 @@
+import type { AvailableLocales } from './launcher/Locales';
+
import { Configs } from '../empathize';
+import Game from './Game';
+
declare const Neutralino;
declare const NL_CWD;
@@ -142,7 +146,13 @@ class Paths
*/
public static get gameDataDir(): Promise
{
- return new Promise(async (resolve) => resolve(`${await this.gameDir}/${constants.placeholders.uppercase.first + constants.placeholders.uppercase.second}_Data`));
+ return new Promise(async (resolve) => {
+ const folder = await Game.server === 'global' ?
+ constants.placeholders.uppercase.first + constants.placeholders.uppercase.second :
+ constants.placeholders.uppercase.full.cn;
+
+ resolve(`${await this.gameDir}/${folder}_Data`);
+ });
}
/**
@@ -188,7 +198,10 @@ export default class constants
/**
* Anime Game
*/
- full: atob('R2Vuc2hpbiBJbXBhY3Q='),
+ full: {
+ global: atob('R2Vuc2hpbiBJbXBhY3Q='),
+ cn: atob('WXVhblNoZW4=')
+ },
/**
* anAnimeCompany
@@ -215,35 +228,55 @@ export default class constants
}
};
+ protected static readonly api = {
+ key: {
+ global: 'gcStgarh',
+ cn: 'eYd89JmJ'
+ },
+ launcher_id: {
+ global: 10,
+ cn: 18
+ }
+ };
+
public static readonly uri = {
- api: `https://sdk-os-static.${this.placeholders.lowercase.company}.com/hk4e_global/mdk/launcher/api`,
+ api: {
+ global: `https://sdk-os-static.${this.placeholders.lowercase.company}.com/hk4e_global/mdk/launcher/api`,
+ cn: `https://sdk-static.${this.placeholders.lowercase.company}.com/hk4e_cn/mdk/launcher/api`
+ },
patch: {
origin: 'https://notabug.org/Krock/dawn',
additional: 'https://dev.kaifa.ch/Maroxy/dawn'
},
- launcher: 'https://gitlab.com/KRypt0n_/an-anime-game-launcher',
- discord: 'https://discord.gg/ck37X6UWBp',
- telemetry: [
- atob('bG9nLXVwbG9hZC1vcy5taWhveW8uY29t'),
- atob('b3ZlcnNlYXVzcGlkZXIueXVhbnNoZW4uY29t')
- ],
+ telemetry: {
+ global: [
+ atob('bG9nLXVwbG9hZC1vcy5taWhveW8uY29t'),
+ atob('b3ZlcnNlYXVzcGlkZXIueXVhbnNoZW4uY29t')
+ ],
+ cn: [
+ atob('bG9nLXVwbG9hZC5taWhveW8uY29t'),
+ atob('dXNwaWRlci55dWFuc2hlbi5jb20=')
+ ]
+ },
winetricks: 'https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks',
fpsunlock: {
unlocker: `https://github.com/34736384/${this.placeholders.lowercase.first}-fps-unlock/releases/download/v1.4.2/unlockfps.exe`,
bat: 'https://dev.kaifa.ch/Maroxy/an-anime-game-aur/raw/branch/fpsunlock/fpsunlock.bat'
},
+ launcher: 'https://gitlab.com/KRypt0n_/an-anime-game-launcher',
+ discord: 'https://discord.gg/ck37X6UWBp',
analytics: 'https://aagl.launcher.moe/stat/'
};
- // TODO: cache drops at that dates instead of the 7 days period
- /*public static readonly cacheDropDates = [
- new Date('November 24, 2021').getTime(), // 2.3.0 half 1 release
- new Date('December 15, 2021').getTime(), // 2.3.0 half 2 release
- new Date('January 5, 2022').getTime() // 2.4.0 half 1 release
- ];*/
-
public static readonly paths = Paths;
- public static readonly versionsUri: string = `${this.uri.api}/resource?key=gcStgarh&launcher_id=10`;
- public static readonly backgroundUri: string = `${this.uri.api}/content?filter_adv=true&launcher_id=10&key=gcStgarh&language=`;
+ public static versionsUri(server: 'global' | 'cn'): string
+ {
+ return `${this.uri.api[server]}/resource?key=${this.api.key[server]}&launcher_id=${this.api.launcher_id[server]}`;
+ }
+
+ public static backgroundUri(server: 'global' | 'cn', lang: AvailableLocales): string
+ {
+ return `${this.uri.api[server]}/content?filter_adv=true&key=${this.api.key[server]}&launcher_id=${this.api.launcher_id[server]}&language=${lang}`;
+ }
}
diff --git a/src/ts/Game.ts b/src/ts/Game.ts
index 18c8578..b03b153 100644
--- a/src/ts/Game.ts
+++ b/src/ts/Game.ts
@@ -7,7 +7,7 @@ import type {
import type { Stream as DownloadingStream } from '@empathize/framework/dist/network/Downloader';
-import { fetch, Domain, promisify, Downloader, Cache, Debug, Package } from '../empathize';
+import { fetch, Domain, promisify, Downloader, Cache, Debug, Package, Configs } from '../empathize';
import { DebugThread } from '@empathize/framework/dist/meta/Debug';
import constants from './Constants';
@@ -25,6 +25,18 @@ class Stream extends AbstractInstaller
export default class Game
{
+ protected static _server: 'global' | 'cn' | null = null;
+
+ public static get server(): Promise<'global' | 'cn'>
+ {
+ return new Promise(async (resolve) => {
+ if (!this._server)
+ this._server = (await Configs.get('server')) as 'global' | 'cn';
+
+ resolve(this._server);
+ })
+ }
+
/**
* Get current installed game version
*
@@ -64,7 +76,7 @@ export default class Game
public static getLatestData(): Promise
{
return new Promise(async (resolve, reject) => {
- const response = await fetch(constants.versionsUri);
+ const response = await fetch(constants.versionsUri(await this.server));
if (response.ok)
{
@@ -266,7 +278,7 @@ export default class Game
else
{
const pipeline = promisify({
- callbacks: await constants.uri.telemetry.map((domain) => {
+ callbacks: await constants.uri.telemetry[await this.server].map((domain) => {
return new Promise((resolve) => {
Domain.getInfo(domain).then((info) => resolve(info.available));
});
diff --git a/src/ts/Launcher.ts b/src/ts/Launcher.ts
index bd2f2de..d09a4dc 100644
--- a/src/ts/Launcher.ts
+++ b/src/ts/Launcher.ts
@@ -112,7 +112,11 @@ export default class Launcher
{
locale.set(record.pop().data.locale);
- Background.get().then((uri) => document.getElementsByClassName('background')[0]!.setAttribute('src', uri));
+ Background.get().then((uri) => {
+ if (uri)
+ document.getElementsByClassName('background')[0]!.setAttribute('src', uri);
+ });
+
this.getSocial().then((uri) => document.getElementById('social-iframe')!.setAttribute('src', uri));
}
}
@@ -140,6 +144,8 @@ export default class Launcher
/**
* Get launcher social buttons uri
+ *
+ * TODO: Chinese URI
*/
public getSocial(): Promise
{
diff --git a/src/ts/Patch.ts b/src/ts/Patch.ts
index 4a06bdc..216bbe5 100644
--- a/src/ts/Patch.ts
+++ b/src/ts/Patch.ts
@@ -343,7 +343,7 @@ export default class Patch
else
{
fetch(`${patchUri}/raw/master/${version.replaceAll('.', '')}/patch_files/unityplayer_patch_os.vcdiff`, this.fetchTimeout)
- .then((response) => {
+ .then(async (response) => {
// Return an error if patch's server is unavailable
if (response.status === null)
rejectOutput(new Error(`${source} patch repository is unreachable`));
@@ -356,7 +356,8 @@ export default class Patch
version: version,
state: 'preparation',
applied: false,
- source: source
+ source: source,
+ server: await Game.server
});
}
@@ -370,7 +371,7 @@ export default class Patch
rejectOutput(new Error(`${source} patch repository is unreachable`));
else patcherResponse.body(this.fetchTimeout)
- .then((response) => {
+ .then(async (response) => {
// Return an error if patch's server is unavailable
if (response === '')
rejectOutput(new Error(`${source} patch repository is unreachable`));
@@ -386,22 +387,28 @@ export default class Patch
version: version,
state: response.includes(stableMark) ? 'stable' : 'testing',
applied: false,
- source: source
+ source: source,
+ server: await Game.server
};
- const originalPlayer = /if \[ "\${sum}" == "([a-z0-9]{32})" \]; then/mg.exec(response);
+ const hashesMatches = [...response.matchAll(/if \[ "\${sum}" == "([a-z0-9]{32})" \]; then/mg)];
// If we could get original UnityPlayer.dll hash - then we can
// compare it with actual UnityPlayer.dll hash and say whether the patch
// was applied or not
- if (originalPlayer !== null)
+ if (hashesMatches.length === 2)
{
+ const originalPlayer = {
+ global: hashesMatches[0][1],
+ cn: hashesMatches[1][1]
+ }[patchInfo.server];
+
constants.paths.gameDir.then((gameDir) => {
Neutralino.filesystem.readBinaryFile(`${gameDir}/UnityPlayer.dll`)
.then((currPlayer: ArrayBuffer) => {
- patchInfo.applied = md5(currPlayer) != originalPlayer[1];
+ patchInfo.applied = md5(currPlayer) != originalPlayer;
- resolveOutput(patchInfo, originalPlayer[1]);
+ resolveOutput(patchInfo, originalPlayer);
})
.catch(() => resolveOutput(patchInfo));
});
diff --git a/src/ts/launcher/Background.ts b/src/ts/launcher/Background.ts
index 1f2a0d1..48dcdd0 100644
--- a/src/ts/launcher/Background.ts
+++ b/src/ts/launcher/Background.ts
@@ -2,19 +2,41 @@ import { fetch } from '../../empathize';
import constants from '../Constants';
import Locales from './Locales';
+import Game from '../Game';
export default class Background
{
/**
* Get background uri
+ *
+ * @return null if uri is not available
*/
- public static get(): Promise
+ public static get(): Promise
{
return new Promise(async (resolve) => {
- fetch(constants.backgroundUri + Locales.fallback((await Locales.default()) ?? 'en-us'))
- .then((header) => header.body().then((body) => {
- resolve(JSON.parse(body).data.adv.background);
- }));
+ const server = await Game.server;
+ const locale = Locales.fallback((await Locales.default()) ?? 'en-us');
+
+ const tryToFetch = (server: 'global' | 'cn'): Promise => {
+ return new Promise((resolve) => {
+ fetch(constants.backgroundUri(server, locale))
+ .then((header) => header.body().then((body) => {
+ const data = JSON.parse(body);
+
+ if (data.message !== 'OK' || data.data.adv === null)
+ {
+ if (server === 'global')
+ resolve(null);
+
+ else tryToFetch('global').then(resolve);
+ }
+
+ else resolve(data.data.adv.background);
+ }));
+ });
+ };
+
+ tryToFetch(server).then(resolve);
});
}
diff --git a/src/ts/launcher/Locales.ts b/src/ts/launcher/Locales.ts
index 1e13624..1de0c30 100644
--- a/src/ts/launcher/Locales.ts
+++ b/src/ts/launcher/Locales.ts
@@ -11,6 +11,7 @@ type AvailableLocales =
// Supported by the game's API
| 'en-us' | 'ru-ru' | 'es-es'
| 'de-de' | 'fr-fr' | 'id-id'
+ | 'zh-cn'
// Unsupported by the game's API
| 'it-it' | 'hu-hu' | 'uwu'
@@ -24,7 +25,7 @@ export default class Locales
* List of locales supported by the game's API
*/
public static readonly supportedLocales: AvailableLocales[] = [
- 'en-us', 'ru-ru', 'es-es', 'de-de', 'fr-fr', 'id-id'
+ 'en-us', 'ru-ru', 'es-es', 'de-de', 'fr-fr', 'id-id', 'zh-cn'
];
/**
diff --git a/src/ts/launcher/states/Launch.ts b/src/ts/launcher/states/Launch.ts
index 9175067..b488e8a 100644
--- a/src/ts/launcher/states/Launch.ts
+++ b/src/ts/launcher/states/Launch.ts
@@ -247,7 +247,7 @@ export default (launcher: Launcher): Promise => {
// Game was closed
else
{
- const stopTime = Date.now();
+ // const stopTime = Date.now();
Windows.current.show();
Windows.current.center(1280, 700);
diff --git a/src/ts/types/Patch.d.ts b/src/ts/types/Patch.d.ts
index b66fd3c..1ee339d 100644
--- a/src/ts/types/Patch.d.ts
+++ b/src/ts/types/Patch.d.ts
@@ -19,6 +19,11 @@ type PatchInfo = {
* Source where this info was got from
*/
source?: 'origin' | 'additional';
+
+ /**
+ * Used game server
+ */
+ server: 'global' | 'cn';
};
export type {
From 37a6e16e2c423c996111c6122ce7149bea8d6ec4 Mon Sep 17 00:00:00 2001
From: Observer KRypt0n_
Date: Sun, 20 Feb 2022 13:31:37 +0200
Subject: [PATCH 3/5] Updated roadmap goals
---
README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index f9020d8..45589f1 100644
--- a/README.md
+++ b/README.md
@@ -169,10 +169,10 @@ This is our current roadmap goals. You can find older ones [here](repository/pag
* ToS Violation Window *(2.1.0)*
* Add `latest.log` file generation *(2.1.2)*
* Add an option to show terminal with the wine's log of the game *(7375c743, released in 2.1.3)*
-* Statistics window *(e0a09323)*
-* Add Chinese game's version support (due to changes in the Krock's patch)
+* Add analytics window *(e0a09323)*
+* Add Chinese game's version support (due to changes in the Krock's patch) *(75f2ad66)*
* Implement manual config flushing functionality from the Empathize's API
-* Add analytics window
+* Game statistics window
* Dark progress bar design
* Changelog window
* Screenshots explorer
From 2eb2c9863706dd3bedcb3849144e36afccddbdff Mon Sep 17 00:00:00 2001
From: Observer KRypt0n_
Date: Sun, 20 Feb 2022 13:33:11 +0200
Subject: [PATCH 4/5] Fixed `defaultSettings.ts` work
---
src/defaultSettings.ts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/defaultSettings.ts b/src/defaultSettings.ts
index 2d47a44..47d511e 100644
--- a/src/defaultSettings.ts
+++ b/src/defaultSettings.ts
@@ -3,9 +3,9 @@ import { Configs } from './empathize';
import constants from './ts/Constants';
import Locales from './ts/launcher/Locales';
-const systemLocale = await Locales.system();
-
export default new Promise(async (resolve) => {
+ const systemLocale = await Locales.system();
+
await Configs.defaults({
lang: {
launcher: systemLocale,
From 24702074d2fed80493e85b6d7f9bd8bc996ea1c0 Mon Sep 17 00:00:00 2001
From: SiHuan
Date: Sun, 20 Feb 2022 20:28:59 +0800
Subject: [PATCH 5/5] add zh-cn translation
---
public/locales/de-de.yaml | 2 +-
public/locales/en-us.yaml | 2 +-
public/locales/es-es.yaml | 2 +-
public/locales/fr-fr.yaml | 2 +-
public/locales/hu-hu.yaml | 2 +-
public/locales/id-id.yaml | 2 +-
public/locales/it-it.yaml | 2 +-
public/locales/nb-no.yaml | 2 +-
public/locales/ru-ru.yaml | 2 +-
public/locales/uwu.yaml | 2 +-
public/locales/zh-cn.yaml | 291 +++++++++++++++++++-------------------
11 files changed, 155 insertions(+), 156 deletions(-)
diff --git a/public/locales/de-de.yaml b/public/locales/de-de.yaml
index d8e632e..d05c9f3 100644
--- a/public/locales/de-de.yaml
+++ b/public/locales/de-de.yaml
@@ -92,7 +92,7 @@ settings:
hu-hu: Magyar
id-id: Bahasa Indonesia
nb-no: Norsk
- zh-cn: 中国
+ zh-cn: 简体中文
uwu: Engwish
# Spiel sprachpaket auswahl
diff --git a/public/locales/en-us.yaml b/public/locales/en-us.yaml
index 12931e7..98e527e 100644
--- a/public/locales/en-us.yaml
+++ b/public/locales/en-us.yaml
@@ -92,7 +92,7 @@ settings:
hu-hu: Magyar
id-id: Bahasa Indonesia
nb-no: Norsk
- zh-cn: 中国
+ zh-cn: 简体中文
uwu: Engwish
# Game voice pack language
diff --git a/public/locales/es-es.yaml b/public/locales/es-es.yaml
index 15999c1..7696ebd 100644
--- a/public/locales/es-es.yaml
+++ b/public/locales/es-es.yaml
@@ -92,7 +92,7 @@ settings:
hu-hu: Magyar
id-id: Bahasa Indonesia
nb-no: Norsk
- zh-cn: 中国
+ zh-cn: 简体中文
uwu: Engwish
# Idioma del paquete de voz
diff --git a/public/locales/fr-fr.yaml b/public/locales/fr-fr.yaml
index 18efbfc..a2eb5eb 100644
--- a/public/locales/fr-fr.yaml
+++ b/public/locales/fr-fr.yaml
@@ -95,7 +95,7 @@ settings:
hu-hu: Magyar
id-id: Bahasa Indonesia
nb-no: Norsk
- zh-cn: 中国
+ zh-cn: 简体中文
uwu: Engwish
# Game voice pack language
diff --git a/public/locales/hu-hu.yaml b/public/locales/hu-hu.yaml
index f9493c1..159523b 100644
--- a/public/locales/hu-hu.yaml
+++ b/public/locales/hu-hu.yaml
@@ -92,7 +92,7 @@ settings:
hu-hu: Magyar
id-id: Bahasa Indonesia
nb-no: Norsk
- zh-cn: 中国
+ zh-cn: 简体中文
uwu: Engwish
# Game voice pack language
diff --git a/public/locales/id-id.yaml b/public/locales/id-id.yaml
index 02a6cb8..48801b9 100644
--- a/public/locales/id-id.yaml
+++ b/public/locales/id-id.yaml
@@ -92,7 +92,7 @@ settings:
hu-hu: Magyar
id-id: Bahasa Indonesia
nb-no: Norsk
- zh-cn: 中国
+ zh-cn: 简体中文
uwu: Engwish
# Game voice pack language
diff --git a/public/locales/it-it.yaml b/public/locales/it-it.yaml
index 04cf446..47e2639 100644
--- a/public/locales/it-it.yaml
+++ b/public/locales/it-it.yaml
@@ -92,7 +92,7 @@ settings:
hu-hu: Magyar
id-id: Bahasa Indonesia
nb-no: Norsk
- zh-cn: 中国
+ zh-cn: 简体中文
uwu: Engwish
# Game voice pack language
diff --git a/public/locales/nb-no.yaml b/public/locales/nb-no.yaml
index 3e876b6..6d936aa 100644
--- a/public/locales/nb-no.yaml
+++ b/public/locales/nb-no.yaml
@@ -92,7 +92,7 @@ settings:
hu-hu: Magyar
id-id: Bahasa Indonesia
nb-no: Norsk
- zh-cn: 中国
+ zh-cn: 简体中文
uwu: Engwish
# Game voice pack language
diff --git a/public/locales/ru-ru.yaml b/public/locales/ru-ru.yaml
index 3c50520..20e622b 100644
--- a/public/locales/ru-ru.yaml
+++ b/public/locales/ru-ru.yaml
@@ -92,7 +92,7 @@ settings:
hu-hu: Magyar
id-id: Bahasa Indonesia
nb-no: Norsk
- zh-cn: 中国
+ zh-cn: 简体中文
uwu: Engwish
# Язык озвучки в игре
diff --git a/public/locales/uwu.yaml b/public/locales/uwu.yaml
index 22663c1..0787eee 100644
--- a/public/locales/uwu.yaml
+++ b/public/locales/uwu.yaml
@@ -92,7 +92,7 @@ settings:
hu-hu: Magyar
id-id: Bahasa Indonesia
nb-no: Norsk
- zh-cn: 中国
+ zh-cn: 简体中文
uwu: Engwish
# Game voice pack language
diff --git a/public/locales/zh-cn.yaml b/public/locales/zh-cn.yaml
index 12931e7..ef44af5 100644
--- a/public/locales/zh-cn.yaml
+++ b/public/locales/zh-cn.yaml
@@ -1,87 +1,86 @@
# Splash window
splash:
- title: Loading launcher
+ title: 启动器加载中
phrases:
- - Doing some important stuff...
- - Bullying Paimon...
- - Pulling for Yae...
- - Farming materials...
- - Passing Abyss...
- - Collecting achievements...
- - Building phys Qiqi...
- - Making sacrifices for 5*...
- - Finding friends for co-op...
+ - 一些重要的事情...
+ - 抽神子...
+ - 捡材料...
+ - 凹深渊...
+ - 收集成就...
+ - 培养武神七七...
+ - 为五星献祭...
+ - 寻找联机好友...
# Launcher window
launcher:
# Progress bar
progress:
- pause: Pause
- resume: Resume
+ pause: 暂停
+ resume: 恢复
# Game installation
game:
- downloading: Downloading game...
- unpacking: Unpacking game...
- applying_changes: Applying changes...
- deleting_outdated: Deleting outdated files...
+ downloading: 下载游戏中...
+ unpacking: 解压游戏中...
+ applying_changes: 应用更改...
+ deleting_outdated: 删除过期文件...
# Voice packages installation
voice:
- deleting: Deleting voice packages...
- downloading: Downloading {voice} voice package...
- unpacking: Unpacking {voice} voice package...
+ deleting: 删除语音包...
+ downloading: 下载 {voice} 语音包中...
+ unpacking: 解压 {voice} 语音包中...
# Launcher states
states:
# When the game should be installed or updated
installation:
- install_wine: Install Wine
- install_dxvk: Install DXVK
- install: Install
- update: Update
+ install_wine: 安装 Wine
+ install_dxvk: 安装 DXVK
+ install: 安装
+ update: 更新
apply_changes:
- title: Apply changes
- hint: Apply hdiff changes to the game files
+ title: 应用更改
+ hint: 对游戏文件应用 hdiff 更改
remove_outdated:
- title: Remove outdated
- hint: Remove outdated game files
+ title: 移除过期
+ hint: 移除过期的游戏文件
# When the game should be patched
patching:
# Patch unavailable
unavailable:
- title: Patch unavailable
- hint: This game version has no anti-cheat patch.
- Please, wait a few days before there will be a test or stable version
+ title: 补丁不可用
+ hint: 这个游戏版本还没有反作弊补丁。
+ 请稍等几天,会有稳定或者测试版本的补丁
# Patch is in testing
test:
- title: Apply test patch
- hint: This game version has an experimental anti-cheat patch.
- You can wait a few days until it is stable or apply it at your own risk
+ title: 应用测试版补丁
+ hint: 这个游戏版本有一个实验性的反作弊补丁。
+ 你可以在它稳定之前等上几天,或者自担风险地应用测试补丁
# Patch is stable
- stable: Apply patch
+ stable: 应用补丁
# When the game is ready for playing
ready:
- launch: Launch
- predownload: Pre-download update
+ launch: 启动
+ predownload: 预下载更新
# Settings window
settings:
# General
general:
- title: General
+ title: 通用
items:
# Language selection
lang:
# Launcher language
launcher:
- title: Launcher
+ title: 启动器
items:
en-us: English (US)
ru-ru: Русский
@@ -92,48 +91,48 @@ settings:
hu-hu: Magyar
id-id: Bahasa Indonesia
nb-no: Norsk
- zh-cn: 中国
+ zh-cn: 简体中文
uwu: Engwish
# Game voice pack language
voice:
- title: Voice pack
- tooltip: You will have to manually select the new voice pack in the game
+ title: 语音包
+ tooltip: 你只能在游戏中手动选择新的语音包
items:
- en-us: English (US)
- ja-jp: Japanese
- ko-kr: Korean
- zh-cn: Chinese
+ en-us: 英语(美国)
+ ja-jp: 日语
+ ko-kr: 汉语
+ zh-cn: 中文
# Launcher theme
theme:
- title: Theme
+ title: 主题
items:
- system: System
- light: Light
- dark: Dark
+ system: 跟随系统
+ light: 明亮
+ dark: 暗色
# Discord RPC
discord:
title: Discord RPC
settings:
- title: Discord RPC settings
+ title: Discord RPC 设置
items:
- timer: Show estimated time spent
- in-launcher: Launcher text
- in-game: In-game text
- selectIcon: Select icon
+ timer: 显示预估耗时
+ in-launcher: 启动器内文本
+ in-game: 游戏内文本
+ selectIcon: 选择图标
# Some buttons
buttons:
winetricks: winetricks
winecfg: winecfg
- launcher: launcher folder
- game: game folder
+ launcher: 启动器文件夹
+ game: 游戏文件夹
# Enhancements
enhancements:
- title: Enhancements
+ title: 增强功能
# Enhancements related to the wine
wine:
@@ -143,202 +142,202 @@ settings:
hud:
title: HUD
items:
- none: None
+ none: 无
dxvk: DXVK
mangohud: MangoHUD
# Wine synchronization
winesync:
- title: Wine synchronization
- tooltip: ESync is a mechanism of synchronizing multi-thread operations. It can improve your game performance.
- FSync is an improved version of ESync that works on specific kernel versions
+ title: Wine 同步
+ tooltip: ESync 是一种同步多线程操作的机制。它可以提高你的游戏性能。
+ FSync 是 ESync 的改进版,可用于特定的内核版本
items:
- none: None
+ none: 无
esync: ESync
fsync: FSync
futex2: Futex2
# AMD FSR
fsr:
- title: Enable AMD FSR
- tooltip: This option enables AMD FidelityFX Super Resolution (FSR)
- which will scale your game resolution without losing FPS
+ title: 开启 AMD FSR
+ tooltip: 这个选项开启 AMD FidelityFX Super Resolution (FSR)
+ 它可以在不掉帧的情况下提高游戏分辨率
# Wine Virtual Desktop
winevd:
- title: Virtual Desktop
+ title: 虚拟桌面
settings:
- title: Virtual Desktop settings
+ title: 虚拟桌面设置
items:
- width: Width
- height: Height
+ width: 宽
+ height: 高
# Enhancements related to the game
game:
- title: Game
+ title: 游戏
items:
# GameMode
gamemode:
- title: Use GameMode
+ title: 使用 GameMode
tooltip:
- enabled: It is a software that can improve the game performance
- disabled: ⚠️ You don't have gamemode package installed
+ enabled: 这是一个能够提高游戏性能的软件
+ disabled: ⚠️ 你没有安装 gamemode 软件包
# Borderless Window
borderless_window:
- title: Allow borderless window
- tooltip: Removes the window borders when playing in windowed mode.
+ title: 允许无边框窗口
+ tooltip: 移除窗口模式下的窗口边框。
To play in a fullscreen borderless window, press alt+enter when playing on fullscreen
# Unlock FPS
fps_unlocker:
- title: Unlock FPS
- tooltip: This option will unlock maximum of the 60 fps limitation
+ title: 解锁帧率
+ tooltip: 这个选项将会解锁最高 60 帧的限制
# Use separate terminal window to run the game
use_terminal:
- title: Use terminal
- tooltip: With this option enabled launcher will run the wine command in a separate terminal window
+ title: 使用终端
+ tooltip: 启用该选项后,启动器将在一个单独的终端窗口中运行 wine 命令
# Enhancements related to the launcher
launcher:
- title: Launcher
+ title: 启动器
items:
# Delete logs
purge_logs:
# Game logs (DXVK)
game:
- title: Delete DXVK logs
- tooltip: With this option enabled your launcher will automatically
- delete DXVK log files
+ title: 删除 DXVK 日志
+ tooltip: 启用该选项后,您的启动器将自动
+ 删除 DXVK 日志文件。
# Launcher logs
launcher:
- title: Delete launcher logs
- tooltip: Amount of time after which launcher will delete its old log files
+ title: 删除启动器日志
+ tooltip: 日志保留时间
items:
- 1d: 1 day
- 3d: 3 days
- 5d: 5 days
- 7d: 1 week
- 14d: 2 weeks
- never: Never
+ 1d: 1 天
+ 3d: 3 天
+ 5d: 5 天
+ 7d: 1 周
+ 14d: 2 周
+ never: 永久
# Runners
runners:
- title: Wine version
+ title: Wine 版本
items:
recommended:
- title: Show recommended only
- tooltip: This option will hide unplayable wine versions
+ title: 只显示推荐
+ tooltip: 这个选项会隐藏不能正常游玩的 wine 版本
# DXVKs
dxvks:
title: DXVK
items:
recommended:
- title: Show recommended only
- tooltip: This option will hide old DXVK versions
+ title: 只显示推荐
+ tooltip: 这个选先会隐藏老的 DXVK 版本
# Shaders
shaders:
- title: Shaders
+ title: 着色器
items:
shaders:
- title: Shaders
- tooltip: Use Home button to toggle shaders in the game
+ title: 着色器
+ tooltip: 在游戏中使用 HOME 键切换着色器
items:
- none: None
- custom: Custom
+ none: 无
+ custom: 自定义
- author: 'Author: {author}'
- no_images: No images added
- not_installed: You haven't installed vkBasalt and reshade-shaders library
+ author: '作者:{author}'
+ no_images: 无图片
+ not_installed: 你还没有安装 vkBasalt 和 reshade-shaders 库
# Environmantal variables manager
environment:
- title: Environment
+ title: 环境变量
items:
# Table rows
table:
- name: Name
- value: Value
+ name: 键
+ value: 值
# Table buttons
buttons:
- add: Add
- delete: Delete
+ add: 添加
+ delete: 删除
# Notifications
notifications:
# Launcher update
launcher_update_available:
- title: 'Launcher update available: {from} -> {to}'
- body: You can download a new version of the launcher from the project's repository at {repository}
+ title: '启动器更新可用:{from} -> {to}'
+ body: 你可以从位于 {repository} 的项目仓库下载新版本的启动器
# Before telemetry check when iputils is not downloaded
iputils_package_required:
- title: An Anime Game Launcher
- body: You must have iputils installed for telemetry checking
+ title: 二次元游戏启动器
+ body: 为了检查遥测服务的状态你必须安装 iputils
# When telemetry servers are not disabled
telemetry_not_disabled:
- title: An Anime Game Launcher
- body: Telemetry servers are not disabled
+ title: 二次元游戏启动器
+ body: 遥测服务未禁用
# Before patch applying when xdelta3 package is not downloaded
xdelta3_package_required:
- title: An Anime Game Launcher
- body: You must download xdelta3 package to apply the patch
+ title: 二次元游戏启动器
+ body: 为了应用补丁你必须安装 xdelta3
# If patch wasn't applied because of some error
patch_applying_error:
- title: An Anime Game Launcher
- body: Patch wasn't applied successfully. Please, check your log file to find a reason of it, or ask someone in our discord server
+ title: 二次元游戏启动器
+ body: 补丁安装失败。请检查日志以找到原因,或者在我们的 discord 服务器上获取帮助
# Patch repositories are not available
patch_repos_unavailable:
- title: An Anime Game Launcher
- body: None of the patch repositories are available. You'll be able to run the game, but launcher can't be sure is it patched properly
+ title: 二次元游戏启动器
+ body: 没有可用的补丁仓库。你可以运行游戏,但启动器不能确定它是否打了补丁。
# HDiffPatch couldn't successfully apply game files changes
game_changes_applying_error:
- title: An error occurred during game updating
- body: '{files} files couldn''t be updated by the hdiff patch'
+ title: 游戏更新中发生了一个错误
+ body: '{files} 文件没有被 hdiff 不补丁更新'
# ToS violation warning window
tos_violation:
- title: ToS violation warning
- heading: ⚠️ Be warned
- body: This launcher is an unofficial tool, in no way related to {company} nor {company_alterego}.
- This tool is designed to facilitate playing {game} on Linux,
- and was built with the sole purpose of installing and running the game with less hassle.
- It does so by using existing components and making the experience simple for the user.
- However, some components used here likely break the {company} Terms of Service for {game}.
- If you are using this launcher, your player account could become identified as TOS-non-compliant by {company}/{company_alterego}.
- If this happens, as your account would be disobeying TOS, {company}/{company_alterego} are free to do what they want. Including banning.
- If you understand the risk of trying to play the game in an unofficial capacity, press OK and let's go researching the world of Teyvat!
+ title: 违反服务条款警告
+ heading: ⚠️ 请注意
+ body: 这个启动器是一个非官方工具,与 {company} 和 {company_alterego} 无关。
+ 设计这个工具是为了在 Linux 上更方便的游玩 {game},
+ 构建它的唯一目的是减少安装和运行游戏中的麻烦。
+ 它通过结合现有的项目并简化用户操作来达到上述目标。
+ 然而,这里使用的一些组件可能违反了 {company} 对于 {game} 的服务条款。
+ 如果你使用这个启动器, 你的游戏帐号可能被 {company}/{company_alterego} 认定为违反服务条款。
+ 如果发生这种情况,因为你违反了服务条款, {company}/{company_alterego} 可以采取任何他们认为合适的措施, 包括封禁帐号。
+ 如果你理解使用非官方客户端游玩的风险, 按下确定来探索提瓦特吧!
buttons:
ok:
- title: I understand the risk
- tooltip: You really should read this text above. It's important
- cancel: Cancel
- discord: Our discord server
+ title: 我理解风险
+ tooltip: 你真的应该阅读上述文字。这很重要
+ cancel: 取消
+ discord: 我们的 discord 服务器
# Analytics window
analytics:
- title: Yanfei's commission...
- header: Participate in anonymous data collection
+ title: 烟绯的委托...
+ header: 参与匿名数据收集
body:
- - To count the active user base for Linux, Yanfei would like to collect your IP address everytime the game updates
- - The IP address will be hashed for security purpose
+ - 为了统计 Linux 的用户活跃数据,烟绯想在每次游戏更新时收集你的 IP 地址。
+ - 安全起见, IP 地址将被加密。
actions:
share_country:
- title: Share country
- hint: Allow Yanfei to store the country your IP address registered in to make statistics more detailed. No other data than the country will be stored
+ title: 分享地区
+ hint: 为使统计数据更加详细,允许烟绯存储你的 IP 地址注册国家。除了国家之外,没有其他数据会被存储
- participate: Participate
- skip: Skip
- skip_forever: Skip and don't ask again
\ No newline at end of file
+ participate: 加入
+ skip: 跳过
+ skip_forever: 跳过并不再询问
\ No newline at end of file