Merge pull request #291 from an-anime-team/next

Release 3.9.2
This commit is contained in:
Observer KRypt0n_ 2023-11-13 21:30:56 +02:00 committed by GitHub
commit 8a399df08d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
49 changed files with 1554 additions and 553 deletions

View file

@ -5,6 +5,20 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
- Added Korean
- Added Dutch
- Added 4.2.0 voiceovers sizes
- Made free space checks resolve symlinks
### Changed
- Updated development libraries versions
- Updated Japanese
## [3.9.1] - 28.09.2023
### Added

924
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -2,7 +2,7 @@
name = "anime-game-launcher"
version = "3.9.1"
description = "Anime Game launcher"
authors = ["Nikita Podvirnyy <suimin.tu.mu.ga.mi@gmail.com>"]
authors = ["Nikita Podvirnyy <krypt0nn@vk.com>"]
homepage = "https://github.com/an-anime-team/an-anime-game-launcher"
repository = "https://github.com/an-anime-team/an-anime-game-launcher"
license = "GPL-3.0"
@ -19,17 +19,17 @@ glib-build-tools = "0.18"
[dependencies.anime-launcher-sdk]
git = "https://github.com/an-anime-team/anime-launcher-sdk"
tag = "1.11.2"
tag = "1.12.2"
features = ["all", "genshin"]
# path = "../anime-launcher-sdk" # ! for dev purposes only
[dependencies]
relm4 = { version = "0.6.0", features = ["macros", "libadwaita"] }
gtk = { package = "gtk4", version = "0.6", features = ["v4_8"] }
adw = { package = "libadwaita", version = "0.4", features = ["v1_2"] }
relm4 = { version = "0.7.0-beta.2", features = ["macros", "libadwaita"] }
gtk = { package = "gtk4", version = "0.7.3", features = ["v4_12"] }
adw = { package = "libadwaita", version = "0.5.3", features = ["v1_3"] }
rfd = { version = "0.12.0", features = ["xdg-portal"], default-features = false }
rfd = { version = "0.12.1", features = ["xdg-portal"], default-features = false }
open = "5.0.0"
whatadistro = "0.1.0"
@ -45,4 +45,4 @@ tracing-subscriber = "0.3"
fluent-templates = "0.8"
unic-langid = "0.9"
human-panic = "1.2.0"
human-panic = "1.2.2"

View file

@ -19,13 +19,15 @@ ru-ru = Русский
de-de = Deutsch
fr-fr = Français
es-es = Español
tr-tr = Türkçe
pt-br = Português
it-it = Italiano
id-id = Indonesia
zh-cn = 简体中文
ja-jp = 日本語
tr-tr = Türkçe
pl-pl = Polski
hu-hu = Magyar
sv-se = Svenska
pt-br = Português
pl-pl = Polski
nl-nl = Nederlands
zh-cn = 简体中文
ja-jp = 日本語
ko-kr = 한국어
id-id = Indonesia
vi-vn = Tiếng Việt

View file

@ -14,11 +14,11 @@ system = システム
borderless-window = ボーダーレスウィンドウ
virtual-desktop = 仮想デスクトップ
map-drive-c = Cドライブを作成する
map-drive-c-description = DOSデバイスに、WineプレフィックスのCドライブのソフトリンクを自動的に作成します
map-drive-c = WineプレフィックスにCドライブをマップする。
map-drive-c-description = prefixフォルダーの "dosdevices" フォルダーにCドライブのソフトリンクを自動的に作成します
map-game-folder = ゲームフォルダを作成する。
map-game-folder-description = DOSデバイスにゲームフォルダのソフトリンクを自動的に作成します
map-game-folder = Wineプレフィックスにゲームフォルダをマップする。
map-game-folder-description = prefixフォルダーの "dosdevices" フォルダーにゲームフォルダのソフトリンクを自動的に作成します
game = ゲーム

View file

@ -0,0 +1,20 @@
components = 컴포넌트
components-description = Wine과 DXVK 버전 관리
selected-version = 선택된 버전
recommended-only = 권장 전용
wine-version = Wine 버전
wine-recommended-description = 권장되는 Wine 버전만 표시
wine-options = Wine 설정
wine-use-shared-libraries = Wine 공유 라이브러리 사용
wine-use-shared-libraries-description = 선택한 Wine 빌드에서 시스템 라이브러리를 로드하도록 LD_LIBRARY_PATH 변수를 설정합니다
gstreamer-use-shared-libraries = GStreamer 공유 라이브러리 사용
gstreamer-use-shared-libraries-description = 선택한 Wine 빌드에서 GST_PLUGIN_PATH 변수에 설정된 GStreamer 라이브러리를 로드하도록 설정합니다
dxvk-version = DXVK 버전
dxvk-selection-disabled = Wine 그룹 기본 설정에 따라 DXVK 선택이 비활성화되어 있습니다
dxvk-recommended-description = 권장되는 DXVK 버전만 표시

View file

@ -0,0 +1,69 @@
game-settings-description = 게임 내 설정 및 계정 세션 관리
sandbox-settings-description = Flatpak과 유사한 Bubblewrap 샌드박스에서 게임을 실행합니다
environment-settings-description = 환경 변수 및 게임 실행 명령 지정
wine = Wine
synchronization = 동기화
wine-sync-description = 와인 내부 이벤트를 동기화하는 데 사용되는 기술
language = 언어
wine-lang-description = 와인 환경에서 사용되는 언어 입니다. 키보드 레이아웃 문제를 해결 할 수도 있습니다
system = 시스템
borderless-window = 테두리 없는 창
virtual-desktop = 가상 데스크톱
map-drive-c = Map drive C:
map-drive-c-description = 자동적으로 와인 구성에서 drive_c폴더를 dosdevices로 심볼릭 링크합니다
map-game-folder = Map game folder
map-game-folder-description = 게임 폴더를 dosdevices에 자동으로 심볼릭 링크합니다
game = 게임
hud = HUD
fsr = FSR
fsr-description = 게임을 모니터 크기에 맞게 업스케일링 합니다. 사용하려면 게임 설정에서 더 낮은 해상도를 선택하고 Alt+Enter를 누릅니다
ultra-quality = 울트라 퀄리티
quality = 퀄리티
balanced = 벨런스
performance = 성능
gamemode = 게임모드
gamemode-description = 프로세스중 게임이 가지는 우선순위 설정
gamescope = Gamescope
gamescope-description = Gamescope는 게임을 격리된 Xwayland 인스턴스에서 실행할 수 있게 해주는 Valve의 도구로, AMD, Intel, Nvidia GPU를 지원합니다
discord-rpc = Discord RPC
discord-rpc-description = Discord RPC를 사용하면 현재 게임을 플레이하고 있는 정보를 Discord에 제공하여 친구에게 알릴 수 있습니다
icon = 아이콘
title = 타이틀
description = 설명
fps-unlocker = FPS Unlocker
enabled = Enabled
fps-unlocker-description = 게임 메모리를 수정하여 프레임 렌더링 제한을 제거합니다. 안티 치트에 의해 감지 될 수 있습니다
power-saving = 절전
power-saving-description = 게임에 집중하지 않을 때(예: 탭아웃) 자동으로 FPS 제한을 10으로 설정하고 프로세스 우선순위를 낮춥니다
monitor = 모니터
monitor-description = 게임을 실행하고자 하는 모니터의 수
window-mode = 창 모드
borderless = 테두리 없는 창 모드
popup = 팝업
fullscreen = 전체 화면
priority = 우선 순위
priority-description = 게임 프로세스 우선 순위
realtime = 실시간
high = 높음
above-normal = 보통 이상
normal = 보통
below-normal = 보통 이하
low = 낮음

View file

@ -0,0 +1,7 @@
environment = 환경
game-command = 게임 명령어
game-command-description = 게임을 실행하는 데 사용되는 명령입니다. %command%는 런처에서 자동으로 생성된 값을 불러 오도록 합니다. 에: gamemoderun '%command%'
new-variable = 새 변수
name = 이름
value = 값
add = 추가

View file

@ -0,0 +1,66 @@
launcher-folder-opening-error = 런처 폴더를 열지 못했습니다
game-folder-opening-error = 게임 폴더를 열지 못했습니다
config-file-opening-error = 구성 파일을 열지 못했습니다
debug-file-opening-error = 디버그 파일을 열지 못했습니다
wish-url-search-failed = Wishes URL을 찾지 못했습니다
wish-url-opening-error = Wishes URL을 열지 못했습니다
wine-run-error = Wine을 사용하여 {$executable} 실행 파일을 실행하지 못했습니다
game-launching-failed = 게임을 실행하지 못했습니다
failed-get-selected-wine = 선택한 Wine 버전을 가져오는 데 실패했습니다
downloading-failed = 다운로드 실패
unpacking-failed = 압축 해제 실패
kill-game-process-failed = 게임 프로세스를 종료하지 못했습니다
game-file-repairing-error = 게임 파일 복구에 실패했습니다
integrity-files-getting-error = 무결성 검증 파일을 가져오지 못했습니다
background-downloading-failed = 배경 화면을 다운로드하지 못했습니다
components-index-sync-failed = 구성 요소 인덱스를 동기화하지 못했습니다
components-index-verify-failed = 컴포넌트 인덱스를 확인하지 못했습니다
config-update-error = 구성 저장에 실패했습니다
wine-prefix-update-failed = Wine 접두사를 업데이트하지 못했습니다
dxvk-install-failed = DXVK를 설치하지 못했습니다
voice-package-deletion-error = 음성 패키지를 삭제하지 못했습니다
game-diff-finding-error = 게임의 변경사항을 찾지 못했습니다
patch-info-fetching-error = 패치 정보를 가져오지 못했습니다
launcher-state-updating-error = 런처 상태를 업데이트하지 못했습니다
package-not-available = 패키지 {$package}를 사용할 수 없습니다
wine-download-error = Wine을 다운로드하지 못했습니다
wine-unpack-errror = Wine 압축을 풀지 못했습니다
wine-install-failed = Wine을 설치하지 못했습니다
dxvk-download-error = DXVK를 다운로드하지 못했습니다
dxvk-unpack-error = DXVK 압축 해제를 실패했습니다
dxvk-apply-error = DXVK를 적용하지 못했습니다
downloaded-wine-list-failed = 다운로드한 Wine 버전을 나열하지 못했습니다
patch-sync-failed = 패치 폴더 동기화에 실패했습니다
patch-state-check-failed = 패치 폴더 상태 확인에 실패했습니다
game-patching-error = 게임 패치에 실패했습니다
# Disable telemetry
telemetry-servers-disabling-error = Telemetry 서버를 비활성화하지 못했습니다
# Sandbox
documentation-url-open-failed = 문서 URL을 열지 못했습니다
# Game
game-session-add-failed = 게임 세션 추가에 실패했습니다
game-session-update-failed = 게임 세션 업데이트에 실패했습니다
game-session-remove-failed = 게임 세션을 제거하지 못했습니다
game-session-set-current-failed = 현재 게임 세션을 설정하지 못했습니다
game-session-apply-failed = 게임 세션 적용에 실패했습니다
# Enhancements
discord-rpc-icons-fetch-failed = Discord RPC 아이콘을 가져오는 데 실패했습니다
discord-rpc-icon-download-failed = Discord RPC 아이콘 다운로드를 실패했습니다

View file

@ -0,0 +1,65 @@
welcome = 환영합니다
welcome-page-message =
안녕하세요! An Anime Game Launcher에 오신 것을 환영합니다
게임을 실행하기 전에 몇 가지 사항을 준비하고 기본 구성 요소를 다운로드해야 합니다
tos-violation-warning = ToS 위반 경고
tos-violation-warning-message =
이 런처는 {company-name} 또는 {company-alter-name}과 전혀 관련이 없는 비공식 도구입니다
이 도구는 Linux에서 {game-name}을 쉽게 플레이할 수 있도록 설계되었으며, 번거로움을 덜고 게임을 설치 및 실행하기 위한 목적으로 제작되었습니다
이는 기존 구성 요소를 사용하고 사용자 경험을 단순화하여 이를 구현됩니다
그러나 여기에 사용된 일부 구성 요소는 {company-name}의 {game-name} 서비스 약관을 위반할 수 있습니다
이 런처를 사용하는 경우, 플레이어 계정이 {company-name}/{company-alter-name}에 의해 TOS를 준수하지 않는 것으로 식별될 수 있습니다
이 경우 계정이 TOS를 위반하는 것이므로 {company-name}/{company-alter-name}은 원하는 대로 자유롭게 조치를 취할 수 있습니다. 물론 차단도 포함됩니다
비공식적인 자격으로 게임을 플레이하는 것에 대한 위험을 이해했다면 확인을 눌러 계속합니다
tos-dialog-title = 저희가 하고자 하는 말을 이해하셨나요?
tos-dialog-message =
1. 이 프로젝트에 대한 정보를 게시하지 마세요.
2. 일부 수정된 클라이언트를 사용하여 남용하지 마세요.
3. 저희의 디스코드 또는 매트릭스 서버에서 예외적으로 질문이 허용됩니다.
dependencies = 의존성
missing-dependencies-title = 일부 의존성이 누락되었습니다!
missing-dependencies-message = 설치 작업을 계속하기 전에 시스템에 일부 패키지를 설치해야 합니다
default-paths = 기본 경로
choose-default-paths = 기본 경로 선택
show-all-folders = 고급 설정
show-all-folders-subtitle = 추가 경로 선택 설정 표시. 원하는대로...
runners-folder = 실행 폴더
dxvks-folder = DXVK 폴더
wine-prefix-folder = Wine 폴더
global-game-installation-folder = 글로벌 게임 설치 폴더
chinese-game-installation-folder = 중국어 게임 설치 폴더
fps-unlocker-folder = FPS 잠금 해제 폴더
components-index = 구성 요소 색인
patch-folder = 패치 폴더
temp-folder = 임시 폴더
migrate = 마이그레이션
select-voice-packages = 음성 패키지 선택
download-components = 구성 요소 다운로드
download-dxvk = DXVK 다운로드
apply-dxvk = DXVK 적용
finish = 완료
finish-title = 모든 작업이 완료되었습니다!
finish-message = 모든 기본 구성 요소가 다운로드되었습니다. 이제 런처를 다시 시작하고 게임을 다운로드할 수 있습니다. 저희 소프트웨어에 오신 것을 환영합니다!

View file

@ -0,0 +1,7 @@
game-sessions = 게임 세션
active-sessions = 활성 세션
active-session-description = 현재 이 게임 세션이 선택되어 있습니다. 각 게임 실행 후 업데이트가 가능합니다
update-session = 현재 Wine 접두사 레지스트리 값을 사용하여 세션을 업데이트합니다
delete-session = 세션 삭제

View file

@ -0,0 +1,13 @@
game-resolution = 게임 해상도
gamescope-resolution = 게임 범위 해상도
upscaling = 업스케일링
integer-scaling = 정수 스케일링
integer-scaling-description = 각 픽셀을 정수로 구성된 정사각형 또는 직사각형의 동일한 색상 픽셀 그룹으로 변환합니다. Full HD에서 4K로 업스케일링할 때 선명도 손실을 방지합니다
gamescope-fsr-description = 더 나은 업스케일링 품질을 위해 AMD에서 개발한 오픈 소스 업스케일링 기술입니다
nis-description = Nvidia가 독점 DLSS 솔루션에 대한 낮은 오버헤드 대안으로 공급업체 간, 낮은 오버헤드로 개발한 오픈 소스 업스케일링 기술입니다. 즉, Nvidia GPU는 물론 AMD 및 Intel GPU에서도 작동합니다
other-settings = 기타 설정
framerate-limit = 프레임 속도 제한
unfocused-framerate-limit = 초점이 맞지 않는 프레임 속도 제한

View file

@ -0,0 +1,70 @@
appearance = 모양
modern = 모던
classic = 클래식
update-background = 배경 화면 변경
update-background-description = 런처용 공식 배경 화면을 다운로드합니다. 대신 사용자 지정 이미지를 사용하도록 비활성화할 수 있습니다
launcher-language = 런처 언어
launcher-language-description = 런처 재시작 후 적용됩니다
game-edition = 게임 에디션
global = 글로벌
china = 중국
game-environment = 게임 환경
game-environment-description = 추가 결제와 같은 특정 기능 얻기
game-voiceovers = 게임 보이스오버
game-voiceovers-description = 다운로드한 게임 보이스오버 목록을 표시합니다. 게임 설정에서 선택할 수 있습니다
english = 영어
japanese = 일본어
korean = 한국어
chinese = 중국어
migrate-installation = 설치 마이그레이션
migrate-installation-description = 게임 설치 폴더를 변경할 수 있는 특수 창 열기
repair-game = 게임 복구
status = 상태
game-version = 게임 버전
game-not-installed = 설치되지 않음
game-predownload-available = 게임 업데이트 사전 다운로드 가능: {$old} -> {$new}
game-update-available = 게임 업데이트 사용 가능: {$old} -> {$new}
game-outdated = 게임이 너무 오래되어 업데이트할 수 없습니다. 최신 버전: {$latest}
player-patch-version = 플레이어 패치 버전
player-patch-version-description = Linux에서 게임을 플레이할 수 있는 메인 패치입니다
patch-not-available = 사용할 수 없음
patch-not-available-tooltip = 패치 서버에 연결할 수 없음
patch-outdated = 오래된 패치({$current})
patch-outdated-tooltip = 패치가 오래되었습니다. 현재:{$current} 최신:{$latest}
patch-preparation = 준비
patch-preparation-tooltip = 패치가 개발 중입니다
patch-testing-tooltip = 테스트 패치를 사용할 수 있습니다
patch-not-applied-tooltip = 패치가 적용되지 않았습니다
apply-main-patch = 메인 패치 적용
apply-main-patch-description = 실험적 기능입니다. 이 옵션을 비활성화하면 패치를 적용하지 않고 게임을 실행할 수 있습니다. 작동하지 않거나 수동으로 파일을 수정해야 할 수 있습니다. 사용법을 알고 있는 경우에만 사용하세요.
disable-mhypbase = mhypbase 비활성화
disable-mhypbase-description = 실험적 기능입니다. 활성화 된 경우, 런처는 메인 패치 적용 중에 mhypbase.dll을 비활성화합니다. 이는 현재 XLUA 패치와 동일합니다. 성능을 향상시키고 CPU 사용을 줄입니다
ask-superuser-permissions = 슈퍼유저 권한 요청
ask-superuser-permissions-description = 런처가 이를 사용하여 호스트 파일을 자동으로 업데이트합니다. Flatpak 에디션에서는 필요하지 않습니다
launcher-behavior = 런처 동작
launcher-behavior-description = 게임을 시작할 때 런처 창이 수행해야 할 작업
wine-tools = Wine 도구
command-line = 명령줄
registry-editor = 레지스트리 편집기
explorer = 탐색기
task-manager = 작업 관리자
configuration = 구성
debugger = 디버거

View file

@ -0,0 +1,75 @@
custom = 사용자 지정
none = 없음
default = 기본값
details = 세부 정보
options = 옵션
width = 너비
height = 높이
# Menu items
launcher-folder = 런처 폴더
game-folder = 게임 폴더
config-file = 구성 파일
debug-file = 디버그 파일
wish-url = Wishes 열기
about = 정보
close = 닫기
hide = 숨기기
nothing = 없음
save = 저장
continue = 계속
resume = 재개
exit = 종료
check = 체크
restart = 재시작
agree = 동의
loading-data = 데이터 로드 중
downloading-background-picture = 배경 사진 다운로드 중
updating-components-index = 구성 요소 목록 업데이트 중
loading-game-version = 게임 버전 로드 중
loading-patch-status = 패치 상태 로드 중
loading-launcher-state = 런처 상태 로딩 중
loading-launcher-state--game = 런처 상태 로딩 중: 게임 버전 확인 중
loading-launcher-state--voice = 런처 상태 로드 중: {$locale} 음성 확인 중
loading-launcher-state--patch = 런처 상태 로드 중: 설치된 패치 확인 중
checking-free-space = 여유 공간 확인 중
downloading = 다운로드 중
unpacking = 압축 해제 중
verifying-files = 파일 검증 중
repairing-files = 파일 복구 중
migrating-folders = 폴더 마이그레이션 중
applying-hdiff = hdiff 패치 적용 하는 중
removing-outdated = 오래된 파일 제거 중
components-index-updated = 구성 요소 목록이 업데이트되었습니다
launch = 실행
migrate-folders = 폴더 마이그레이션
migrate-folders-tooltip = 게임 폴더 구조 변경
apply-patch = 패치 적용
disable-telemetry = 원격 측정 비활성화
download-wine = Wine 다운로드
create-prefix = Prefix 생성
update = 업데이트
download = 다운로드
predownload-update = {$version}업데이트 사전 다운로드 ({$size})
kill-game-process = 게임 프로세스 종료
main-window--patch-unavailable-tooltip = 패치 서버를 사용할 수 없으며 런처에서 게임의 패치 상태를 확인할 수 없습니다. 사용자 책임 하에 게임을 실행할 수 있습니다
main-window--patch-outdated-tooltip = 패치가 오래되었거나 준비 중이므로 사용할 수 없습니다. 나중에 다시 돌아와서 상태를 확인하세요
main-window--version-outdated-tooltip = Version is too outdated and can't be updated
preferences = 버전이 너무 오래되어 업데이트할 수 없습니다
general = 일반
enhancements = 성능

View file

@ -0,0 +1,28 @@
sandbox = 샌드박스
sandbox-description = 격리된 환경에서 게임을 실행하여 개인 데이터에 액세스하지 못하도록 합니다
enable-sandboxing = 샌드박스 활성화
enable-sandboxing-description = 루트 파일 시스템의 읽기 전용 복사본에서 게임을 실행합니다
hide-home-directory = 홈 디렉토리 숨기기
hide-home-directory-description = 게임에서 /home, /var/home/$USER, $HOME 폴더를 분리합니다
hostname = hostname
additional-arguments = 추가 인수
private-directories = 비공개 디렉토리
private-directories-description = 이 폴더는 빈 가상 파일 시스템(tmpfs)으로 대체되며, 샌드박스가 적용된 게임에서 원래 콘텐츠를 사용할 수 없습니다
path = 경로
shared-directories = 공유 디렉터리
shared-directories-description = 이 디렉터리는 호스트 시스템의 디렉터리에 심볼릭 링크됩니다
original-path = 기존 경로
new-path = 새 경로
read-only = 읽기 전용
read-only-description = 게임에서 이 디렉터리에 데이터 쓰기를 금지합니다
symlinks = 심볼릭 링크
symlinks-description = 샌드박스 내부에 원래 경로를 심볼릭 링크합니다

View file

@ -0,0 +1,20 @@
components = Componenten
components-description = Beheer je Wine en DXVK versies
selected-version = Geselecteerde versie
recommended-only = Alleen aanbevolen
wine-version = Wine version
wine-recommended-description = Laat alleen aanbevolen Wine versies zien
wine-options = Wine instellingen
wine-use-shared-libraries = Gebruik Wine shared libraries
wine-use-shared-libraries-description = Stel LD_LIBRARY_PATH variabele in on systeem libraries the gebruiken van de geselecteerde Wine build
gstreamer-use-shared-libraries = Gebruik gstreamer shared libraries
gstreamer-use-shared-libraries-description = Stel GST_PLUGIN_PATH variabele in om gstreamer libraries te gebruiken van de geselecteerde Wine build
dxvk-version = DXVK versie
dxvk-selection-disabled = DXVK selectie is uigeschakeld door je Wine group instellingen
dxvk-recommended-description = Laat alleen aanbevolen DXVK versies zien

View file

@ -0,0 +1,69 @@
game-settings-description = Beheer in-game instelling en account sessies
sandbox-settings-description = Start het spel in een bubblewrap sandbox, net als wat Flatpak doet
environment-settings-description = Stel environment variabelen en spel start commands in
wine = Wine
synchronization = Synchronisatie
wine-sync-description = Technologie die gebruikt wordt om Wine evenementen the synchroniseren
language = Taal
wine-lang-description = Taal die gebruikt wordt in de Wine omgeving. Kan toetsenbord layout problemen oplossen.
system = Systeem
borderless-window = Randloos venster
virtual-desktop = Virtueel bureaublad
map-drive-c = Koppel schijf C:
map-drive-c-description = Automatisch een symbolische koppeling maken tussen de map drive_c van de Wine prefix naar de dosdevices
map-game-folder = Koppel spelmap
map-game-folder-description = Verbind de spelmap automatisch met de dosdevices
game = Spel
hud = HUD
fsr = FSR
fsr-description = Schaalt het spel op naar je monitorformaat. Om dit te gebruiken, selecteer je een lagere resolutie in de spelinstellingen en druk je op Alt+Enter
ultra-quality = Ultra qualiteit
quality = Qualiteit
balanced = Gebalanceerd
performance = Prestatie
gamemode = Gamemode
gamemode-description = Geef het spel een hogere prioriteit dan andere processen
gamescope = Gamescope
gamescope-description = Gamescope is een hulpmiddel van Valve om je programma's te isoleren in een Xwayland omgeving. Het ondersteund AMD, Intel en Nvidia videokaarten
discord-rpc = Discord RPC
discord-rpc-description = Discord RPC laat informatie zien in Discord dat je het spel aan het spelen bent
icon = Icoon
title = Titel
description = Omschrijving
fps-unlocker = FPS Unlocker
enabled = Ingeschakeld
fps-unlocker-description = Haalt het FPS limit weg van het spel door het geheugen aan te passen. Kan gedetecteerd worden door ant-cheat
power-saving = Energiebesparing
power-saving-description = Zet het FPS limit automatisch op 10 en een lage process prioriteit waneer het spel focus verliest (bijvoorbeeld als je niet op het spel gefocust bent)
monitor = Monitor
monitor-description = Nummer van de monitor waar je het spel op wilt starten
window-mode = Venster Mode
borderless = Randloos
popup = Popup
fullscreen = Volledig scherm
priority = Prioriteit
priority-description = Spel process prioriteit
realtime = Realtime
high = Hoog
above-normal = Boven Normaal
normal = Normall
below-normal = Onder Normal
low = Laag

View file

@ -0,0 +1,7 @@
environment = Omgeving
game-command = Spel commando
game-command-description = Commando dat gebruikt wordt om het spel te started. %command% wordt automatisch gegenereerd door de launcher. Bijvoorbeeld: gamemoderun '%command%'
new-variable = Nieuwe variabele
name = Naam
value = Waarde
add = Voeg Toe

View file

@ -0,0 +1,66 @@
launcher-folder-opening-error = Kan de launcher map niet openen
game-folder-opening-error = Kan de spel map niet openen
config-file-opening-error = Kan het configuratiebestand niet openen
debug-file-opening-error = Kan debugbestand niet openen
wish-url-search-failed = Geen wishes URL gevonden
wish-url-opening-error = Kan wishes URL niet openen
wine-run-error = Kan {$executable} niet starten met Wine
game-launching-failed = Kan het spel niet starten
failed-get-selected-wine = Kan de geselecteerde Wine versie niet krijgen
downloading-failed = Downloaden gefaalt
unpacking-failed = Uitpakken gefaalt
kill-game-process-failed = Kan het spel's process niet stoppen
game-file-repairing-error = Kan het spel's bestanden niet repareren
integrity-files-getting-error = Failed to get integrity files
background-downloading-failed = Kan achtergrondfoto's niet downloaden
components-index-sync-failed = Kan de componenten index niet synchroniseren
components-index-verify-failed = Kan de componenten index niet verifiëren
config-update-error = Kan configuratie niet opslaan
wine-prefix-update-failed = Kan de Wine prefix niet updaten
dxvk-install-failed = Kan DXVK niet installeren
voice-package-deletion-error = Kan het spraakpakket niet verwijderen
game-diff-finding-error = Kan speldiff niet vinden
patch-info-fetching-error = Kan patchgegevens niet ophalen
launcher-state-updating-error = Kan de status van de launcher niet updaten
package-not-available = Pakket niet beschikbaar: {$package}
wine-download-error = Kan Wine niet downloaden
wine-unpack-errror = Kan Wine niet uitpakken
wine-install-failed = Kan Wine niet installeren
dxvk-download-error = Kan DXVK niet downloaden
dxvk-unpack-error = Kan DXVK niet uitpakken
dxvk-apply-error = Kan DXVK niet toepassen
downloaded-wine-list-failed = Kan gedownloade Wine versies niet weergeven
patch-sync-failed = Kan de patchmap niet synchroniseren
patch-state-check-failed = Kan de status van de patchmap niet controleren
game-patching-error = Kan het spel niet patchen
# Disable telemetry
telemetry-servers-disabling-error = Kan telemetrieservers niet uitschakelen
# Sandbox
documentation-url-open-failed = Kan de documentatie-URL niet openen
# Game
game-session-add-failed = Kan gamesessie niet toevoegen
game-session-update-failed = Kan de gamesessie niet updaten
game-session-remove-failed = Kan gamesessie niet verwijderen
game-session-set-current-failed = Kan de huidige gamesessie niet instellen
game-session-apply-failed = Kan gamesessie niet toepassen
# Enhancements
discord-rpc-icons-fetch-failed = Kan Discord RPC-pictogrammen niet ophalen
discord-rpc-icon-download-failed = Kan het Discord RPC-pictogram niet downloaden

View file

@ -0,0 +1,64 @@
welcome = Welkon
welcome-page-message =
Hallo! Welkom bij de An Anime Game Launcher
We moeten een aantal dingen voorbereiden en standaardcomponenten downloaden voordat je het spel kunt spelen
tos-violation-warning = Waarschuwing voor overtreding van ToS
tos-violation-warning-message =
Deze launcher is niet officiëel en heeft op geen enkele manier betrekking met {company-name} of {company-alter-name}.
Dit programma is ontworpen om het spelen van {game-name} op Linux makkelijker te maken, en is gemaakt met als enig doel on het spel makkelijiker te installeren en spelen op Linux
Dit gebeurt door bestaande componenten te gebruiken en de ervaring voor de gebruiker eenvoudig te maken.
Sommige hier gebruikte componenten zijn echter waarschijnlijk in strijd met de servicevoorwaarden van {company-name} voor {game-name}.
Als je deze launcher gebruikt, kan je account worden geïdentificeerd als niet-conform met de TOS door {company-name}/{company-alter-name} wijzigen.
Als dit gebeurt, is {company-name}/{company-alter-name} vrij om te doen wat ze willen, omdat je account de Servicevoorwaarden zou schenden. Inclusief een game ban.
Als je het risico snapt om het spel te spelen in een onofficiële manier, druk dan op OK om door te gaan
tos-dialog-title = Weet je zeker dat je begrijpt wat we zeggen?
tos-dialog-message =
1. Publiceer geen informatie over dit project
2. Maak er geen misbruik van door een aantal modded clients en dergelijke te gebruiken
3. Stel uitzonderlijk vragen in onze Discord- of Matrixserver
dependencies = Dependencies
missing-dependencies-title = Je mist een aantal dependencies!
missing-dependencies-message = Je moet enkele pakketten op je systeem installeren voordat je doorgaat met het installatieproces
default-paths = Standaardpaden
choose-default-paths = Kies standaardpaden
show-all-folders = Ik weet wat ik doe
show-all-folders-subtitle = Toon aanvullende padselectie-instellingen. Doe wat ik zeg...
runners-folder = Runners map
dxvks-folder = DXVKs map
wine-prefix-folder = Wine prefix map
global-game-installation-folder = Globale spelversie installatiemap
chinese-game-installation-folder = Chinese spelversie installatiemap
fps-unlocker-folder = FPS Unlocker map
components-index = Componentenindex
patch-folder = Patch map
temp-folder = Tijdelijke map
migrate = Migreer
select-voice-packages = Selecteer spraakpakketten
download-components = Download componenten
download-dxvk = Download DXVK
apply-dxvk = Pas DXVK toe
finish = Maak af
finish-title = Alles is klaar!
finish-message = Alle basiscomponenten zijn gedownload. Nu kun je de launcher opnieuw starten en het spel downloaden. Welkom bij onze club!

View file

@ -0,0 +1,7 @@
game-sessions = Game sessions
active-sessions = Actieve sessie
active-session-description = Momenteel geselecteerde gamesessie. Updates na het opstarten van het spel
update-session = Update de sessie met de huidige registerwaarden voor Wine prefixes
delete-session = Verwijder sessie

View file

@ -0,0 +1,13 @@
game-resolution = Spelresolutie
gamescope-resolution = Gamescope resolutie
upscaling = Opschaling
integer-scaling = Schalen van gehele getallen
integer-scaling-description = Verandert elke pixel in een vierkante of rechthoekige groep van een geheel aantal pixels met dezelfde kleur. Voorkomt scherpteverlies bij het schalen van Full HD naar 4K
gamescope-fsr-description = Een open-source opschalingstechniek ontwikkeld door AMD voor een betere opschalingskwaliteit
nis-description = Een open source opschalingstechniek ontwikkeld door Nvidia als een cross-vendor, low-overhead alternatief voor hun eigen DLSS-oplossing, wat betekent dat het werkt op AMD- en Intel GPU's en Nvidia GPU's
other-settings = Andere instellingen
framerate-limit = Frameratelimiet
unfocused-framerate-limit = Ongefocuste frameratelimiet

View file

@ -0,0 +1,72 @@
appearance = Uiterlijk
modern = Modern
classic = Klassiek
update-background = Achtergrondafbeelding bijwerken
update-background-description = Download de officiële achtergrondafbeelding voor de launcher. Je kunt het uitschakelen om in plaats daarvan je eigen afbeelding te gebruiken
launcher-language = Launcher taal
launcher-language-description = Past toe na opnieuw opstarten
game-edition = Spelversie
global = Globaal
china = China
game-environment = Spelomgeving
game-environment-description = Ontvang specifieke functies zoals extra betaalmethoden
game-voiceovers = Spel voice-over
game-voiceovers-description = Lijst met gedownloade spel voice-overs. Je kunt ze selecteren in de spelinstellingen
english = Engels
japanese = Japans
korean = Koreaans
chinese = Chinees
migrate-installation = Migreer installatie
migrate-installation-description = Open een venster waarin je de installatiemap het spel kunt wijzigen
repair-game = Repareer spel
status = Status
game-version = Spelversie
game-not-installed = niet geïnstalleerd
game-predownload-available = Spel-update vooraf downloaden beschikbaar: {$old} -> {$new}
game-update-available = Spel-update beschikbaar: {$old} -> {$new}
game-outdated = Het spel is te oud en kan niet worden bijgewerkt. Nieuwste versie: {$latest}
player-patch-version = Patchversie voor spel
player-patch-version-description = Main patch waarmee je het spel op Linux kunt spelen
patch-not-available = niet beschikbaar
patch-not-available-tooltip = Patchservers zijn onbereikbaar
patch-outdated = verouderd ({$current})
patch-outdated-tooltip = Patch is oud: {$current} -> {$latest}
patch-preparation = voorbereiding
patch-preparation-tooltip = Patch is in ontwikkeling
patch-testing-tooltip = Testpatch is beschikbaar
patch-not-applied-tooltip = Patch is niet toegepast
apply-main-patch = Breng de main patch aan
apply-main-patch-description = Experimenteel. Als je dit uitschakelt, kun je het spel uitvoeren zonder de patch toe te passen. Dit werkt mogelijk niet, of vereist handmatige bestandsaanpassingen. Gebruik dit als je weet wat je doet
disable-mhypbase = Schakel mhypbase uit
disable-mhypbase-description = Experimenteel. Indien ingeschakeld, zal het opstartprogramma mhypbase.dll uitschakelen tijdens het aanbrengen van de main patch, wat momenteel gelijkwaardig is aan de xlua-patch. Verbetert de prestaties en vermindert het CPU-gebruik
ask-superuser-permissions = Vraag superuser-machtigingen
ask-superuser-permissions-description = Launcher zal ze gebruiken om je hosts-bestand automatisch bij te werken. Dit is niet nodig in de flatpak-editie
launcher-behavior = Launcher gedrag
launcher-behavior-description = Wat moet het laucner-venster doen als het spel wordt gestart?
wine-tools = Wine tools
command-line = Command line
registry-editor = Register-editor
explorer = Explorer
task-manager = Taakbeheer
configuration = Configuratie
debugger = Debugger

View file

@ -0,0 +1,75 @@
custom = Aangepast
none = Geen
default = Standaard
details = Details
options = Instellingen
width = Breedte
height = Hoogte
# Menu items
launcher-folder = Launcher map
game-folder = Spelmap
config-file = Configuratiebestand
debug-file = Debugbestand
wish-url = Open wishes
about = Over
close = Sluit
hide = Verberg
nothing = Niks
save = Opslaan
continue = Hervatten
resume = Doorgaan
exit = Sluit
check = Controleer
restart = Opnieuw opstarten
agree = Mee eens
loading-data = Data aan het laden
downloading-background-picture = Achtergrondafbeelding downloaden
updating-components-index = Componentenindex bijwerken
loading-game-version = Spelversie laden
loading-patch-status = Patchstatus laden
loading-launcher-state = Status de launcher wordt geladen
loading-launcher-state--game = Laadstatus van de launcher: spelversie verifiëren
loading-launcher-state--voice = Laadstatus van de launcher: verificatie van de voice-over van {$locale}
loading-launcher-state--patch = Laadstatus van de launcher: geïnstalleerde patch verifiëren
checking-free-space = Vrije ruimte controleren
downloading = Downloaden
unpacking = Uitpakken
verifying-files = Bestanden verifiëren
repairing-files = Bestanden repareren
migrating-folders = Mappen migreren
applying-hdiff = Toepassen van hdiff patches
removing-outdated = Oude bestanden verwijderen
components-index-updated = Componentenindex is bijgewerkt
launch = Start
migrate-folders = Migreer mappen
migrate-folders-tooltip = Update de structuur van spelmappen
apply-patch = Pas patch toe
disable-telemetry = Schakel telemetrie uit
download-wine = Download Wine
create-prefix = Creër prefix
update = Update
download = Download
predownload-update = Update van {$version} ({$size}) vooraf downloaden
kill-game-process = Stop het spelproces
main-window--patch-unavailable-tooltip = Patchservers zijn niet beschikbaar en de launcher kan de patchstatus van de game niet verifiëren. Je mag het spel op eigen risico uitvoeren
main-window--patch-outdated-tooltip = Patch is oud of in voorbereiding, dus niet beschikbaar voor gebruik. Kom later terug om de status ervan te bekijken
main-window--version-outdated-tooltip = De versie is te oud en kan niet worden bijgewerkt
preferences = Voorkeuren
general = Algemeen
enhancements = Verbeteringen

View file

@ -0,0 +1,28 @@
sandbox = Sandbox
sandbox-description = Voer het spel uit in een geïsoleerde omgeving, zodat het geen toegang heeft tot je persoonlijke gegevens
enable-sandboxing = Schakel sandboxing in
enable-sandboxing-description = Voer het spel uit in een read-only kopie van je root filesysteem
hide-home-directory = Verberg homemap
hide-home-directory-description = Isoleer je /home, /var/home/$USER, en $HOME mappen van het spel
hostname = Hostnaam
additional-arguments = Aanvullende argumenten
private-directories = Privémappen
private-directories-description = Deze mappen worden vervangen door een leeg virtueel bestandssysteem (tmpfs) en hun originele inhoud zal niet beschikbaar zijn voor spellen in de sandbox
path = Pad
shared-directories = Gedeelde mappen
shared-directories-description = Deze mappen worden symbolisch gekoppeld aan mappen in je hostsysteem
original-path = Oorspronkelijk pad
new-path = Nieuw pad
read-only = Read-only
read-only-description = Verbied het spel om gegevens naar deze map te schrijven
symlinks = Symlinks
symlinks-description = Symlink het oorspronkelijke pad naar het nieuwe pad in je sandbox

View file

@ -168,7 +168,7 @@ if command == "unused":
output += f"[en/{all_entries[i][0]}]\n [Unused]\n"
output += f" {all_entries[i][1]} | {i} = {every_variable[i].strip()}\n"
output = re.sub("\[en", "\n[en", output)
output = re.sub("\\[en", "\n[en", output)
if not output:
print("Nothing is unused")
@ -187,7 +187,7 @@ elif command == "missing":
output += f"[{missing_entries[i]}]\n [Missing]\n"
output += f" {script_entries[i][1]} | {i}\n"
output = re.sub("\[src/", "\n[src/", output)
output = re.sub("\\[src/", "\n[src/", output)
if not output:
print("Nothing is missing")
sys.exit()

View file

@ -20,11 +20,13 @@ pub const SUPPORTED_LANGUAGES: &[LanguageIdentifier] = &[
langid!("id-id"),
langid!("zh-cn"),
langid!("ja-jp"),
langid!("ko-kr"),
langid!("hu-hu"),
langid!("sv-se"),
langid!("pt-br"),
langid!("pl-pl"),
langid!("vi-vn")
langid!("vi-vn"),
langid!("nl-nl")
];
pub static mut LANG: LanguageIdentifier = langid!("en-us");

View file

@ -65,16 +65,18 @@ impl SimpleComponent for AboutDialog {
"Deutsch — @caem",
"Français — @zeGolem https://github.com/zeGolem",
"Español — Lautaro Garavano https://github.com/Rattlehead15",
"Português — @kafushy",
"Italiano — @QuazarOmega https://github.com/quazar-omega",
"Türkçe — @Kaozix https://github.com/Kaozix1776",
"Türkçe — Kayra Nachfolger https://github.com/kayranachfolger",
"Italiano — @QuazarOmega https://github.com/quazar-omega",
"Indonesia — @yumekarisu https://github.com/yumekarisu",
"简体中文 — Caibin Chen https://github.com/tigersoldier",
"日本語 — @zozonteq https://github.com/zozonteq",
"Polski — Dominik Opyd https://github.com/oritwoen",
// Hungarian?
"Svenska — Jakob Fridesjö https://github.com/jakobfridesjo",
"Português — @kafushy",
"Polski — Dominik Opyd https://github.com/oritwoen",
"Nederlands — @everlyy https://github.com/everlyy",
"简体中文 — Caibin Chen https://github.com/tigersoldier",
"日本語 — @zozonteq https://github.com/zozonteq",
"한국어 — @project-dy https://github.com/project-dy",
"Indonesia — @yumekarisu https://github.com/yumekarisu",
"Tiếng Việt — Nguyễn Hữu Chánh https://github.com/Chanhnh"
].join("\n"),
@ -93,14 +95,17 @@ impl SimpleComponent for AboutDialog {
"<p>Added</p>",
"<ul>",
"<li>Added Vietnamese</li>",
"<li>Added support for segmented zip archives (fixed initial game downloading)</li>",
"<li>Added Korean</li>",
"<li>Added Dutch</li>",
"<li>Added 4.2.0 voiceovers sizes</li>",
"<li>Made free space checks resolve symlinks</li>",
"</ul>",
"<p>Changed</p>",
"<ul>",
"<li>Updated Chinese</li>",
"<li>Updated development libraries versions</li>",
"<li>Updated Japanese</li>",
"</ul>"
].join("\n"),
@ -113,7 +118,7 @@ impl SimpleComponent for AboutDialog {
connect_close_request[sender] => move |_| {
sender.input(AboutDialogMsg::Hide);
gtk::Inhibit(false)
gtk::glib::Propagation::Proceed
}
}
}

View file

@ -1,8 +1,6 @@
use std::path::PathBuf;
use relm4::prelude::*;
use relm4::component::*;
use adw::prelude::*;
use super::ComponentsListMsg;

View file

@ -1,6 +1,4 @@
use relm4::prelude::*;
use relm4::component::*;
use adw::prelude::*;
use super::ComponentGroupMsg;

View file

@ -1,6 +1,4 @@
use relm4::prelude::*;
use relm4::component::*;
use adw::prelude::*;
use anime_launcher_sdk::anime_game_core::prelude::*;

View file

@ -1,7 +1,6 @@
use std::path::PathBuf;
use relm4::prelude::*;
use relm4::component::*;
use gtk::prelude::*;
use adw::prelude::*;

View file

@ -1,8 +1,6 @@
use std::path::PathBuf;
use relm4::prelude::*;
use relm4::component::*;
use adw::prelude::*;
use crate::*;
@ -79,13 +77,16 @@ impl SimpleAsyncComponent for DefaultPathsApp {
adw::ActionRow {
set_title: &tr!("launcher-folder"),
set_icon_name: Some("folder-symbolic"),
set_activatable: true,
#[watch]
set_subtitle: model.launcher.to_str().unwrap(),
connect_activated => DefaultPathsAppMsg::ChoosePath(Folders::Launcher)
connect_activated => DefaultPathsAppMsg::ChoosePath(Folders::Launcher),
add_prefix = &gtk::Image {
set_icon_name: Some("folder-symbolic")
}
},
},
@ -117,90 +118,114 @@ impl SimpleAsyncComponent for DefaultPathsApp {
adw::ActionRow {
set_title: &tr!("runners-folder"),
set_icon_name: Some("folder-symbolic"),
set_activatable: true,
#[watch]
set_subtitle: model.runners.to_str().unwrap(),
connect_activated => DefaultPathsAppMsg::ChoosePath(Folders::Runners)
connect_activated => DefaultPathsAppMsg::ChoosePath(Folders::Runners),
add_prefix = &gtk::Image {
set_icon_name: Some("folder-symbolic")
}
},
adw::ActionRow {
set_title: &tr!("dxvks-folder"),
set_icon_name: Some("folder-symbolic"),
set_activatable: true,
#[watch]
set_subtitle: model.dxvks.to_str().unwrap(),
connect_activated => DefaultPathsAppMsg::ChoosePath(Folders::DXVK)
connect_activated => DefaultPathsAppMsg::ChoosePath(Folders::DXVK),
add_prefix = &gtk::Image {
set_icon_name: Some("folder-symbolic")
}
},
adw::ActionRow {
set_title: &tr!("wine-prefix-folder"),
set_icon_name: Some("folder-symbolic"),
set_activatable: true,
#[watch]
set_subtitle: model.prefix.to_str().unwrap(),
connect_activated => DefaultPathsAppMsg::ChoosePath(Folders::Prefix)
connect_activated => DefaultPathsAppMsg::ChoosePath(Folders::Prefix),
add_prefix = &gtk::Image {
set_icon_name: Some("folder-symbolic")
}
},
adw::ActionRow {
set_title: &tr!("global-game-installation-folder"),
set_icon_name: Some("folder-symbolic"),
set_activatable: true,
#[watch]
set_subtitle: model.game_global.to_str().unwrap(),
connect_activated => DefaultPathsAppMsg::ChoosePath(Folders::GameGlobal)
connect_activated => DefaultPathsAppMsg::ChoosePath(Folders::GameGlobal),
add_prefix = &gtk::Image {
set_icon_name: Some("folder-symbolic")
}
},
adw::ActionRow {
set_title: &tr!("chinese-game-installation-folder"),
set_icon_name: Some("folder-symbolic"),
set_activatable: true,
#[watch]
set_subtitle: model.game_china.to_str().unwrap(),
connect_activated => DefaultPathsAppMsg::ChoosePath(Folders::GameChina)
connect_activated => DefaultPathsAppMsg::ChoosePath(Folders::GameChina),
add_prefix = &gtk::Image {
set_icon_name: Some("folder-symbolic")
}
},
adw::ActionRow {
set_title: &tr!("fps-unlocker-folder"),
set_icon_name: Some("folder-symbolic"),
set_activatable: true,
#[watch]
set_subtitle: model.fps_unlocker.to_str().unwrap(),
connect_activated => DefaultPathsAppMsg::ChoosePath(Folders::FpsUnlocker)
connect_activated => DefaultPathsAppMsg::ChoosePath(Folders::FpsUnlocker),
add_prefix = &gtk::Image {
set_icon_name: Some("folder-symbolic")
}
},
adw::ActionRow {
set_title: &tr!("components-index"),
set_icon_name: Some("folder-symbolic"),
set_activatable: true,
#[watch]
set_subtitle: model.components.to_str().unwrap(),
connect_activated => DefaultPathsAppMsg::ChoosePath(Folders::Components)
connect_activated => DefaultPathsAppMsg::ChoosePath(Folders::Components),
add_prefix = &gtk::Image {
set_icon_name: Some("folder-symbolic")
}
},
adw::ActionRow {
set_title: &tr!("temp-folder"),
set_icon_name: Some("folder-symbolic"),
set_activatable: true,
#[watch]
set_subtitle: model.temp.to_str().unwrap(),
connect_activated => DefaultPathsAppMsg::ChoosePath(Folders::Temp)
connect_activated => DefaultPathsAppMsg::ChoosePath(Folders::Temp),
add_prefix = &gtk::Image {
set_icon_name: Some("folder-symbolic")
}
},
},

View file

@ -1,6 +1,4 @@
use relm4::prelude::*;
use relm4::component::*;
use adw::prelude::*;
use anime_launcher_sdk::is_available;

View file

@ -1,8 +1,6 @@
use std::path::PathBuf;
use relm4::prelude::*;
use relm4::component::*;
use adw::prelude::*;
use anime_launcher_sdk::anime_game_core::prelude::*;
@ -163,11 +161,13 @@ impl SimpleAsyncComponent for DownloadComponentsApp {
#[watch]
set_subtitle: &model.downloading_wine_version,
#[watch]
set_icon_name: match model.downloading_wine {
Some(true) => Some("emblem-ok-symbolic"),
Some(false) => None, // Some("process-working"),
None => None
add_prefix = &gtk::Image {
#[watch]
set_icon_name: match model.downloading_wine {
Some(true) => Some("emblem-ok-symbolic"),
Some(false) => None, // Some("process-working"),
None => None
}
},
add_prefix = &gtk::Spinner {
@ -184,11 +184,13 @@ impl SimpleAsyncComponent for DownloadComponentsApp {
#[watch]
set_subtitle: &model.creating_prefix_path,
#[watch]
set_icon_name: match model.creating_prefix {
Some(true) => Some("emblem-ok-symbolic"),
Some(false) => None, // Some("process-working"),
None => None
add_prefix = &gtk::Image {
#[watch]
set_icon_name: match model.creating_prefix {
Some(true) => Some("emblem-ok-symbolic"),
Some(false) => None, // Some("process-working"),
None => None
}
},
add_prefix = &gtk::Spinner {
@ -205,11 +207,13 @@ impl SimpleAsyncComponent for DownloadComponentsApp {
#[watch]
set_subtitle: &model.downloading_dxvk_version,
#[watch]
set_icon_name: match model.downloading_dxvk {
Some(true) => Some("emblem-ok-symbolic"),
Some(false) => None, // Some("process-working"),
None => None
add_prefix = &gtk::Image {
#[watch]
set_icon_name: match model.downloading_dxvk {
Some(true) => Some("emblem-ok-symbolic"),
Some(false) => None, // Some("process-working"),
None => None
}
},
add_prefix = &gtk::Spinner {
@ -223,11 +227,13 @@ impl SimpleAsyncComponent for DownloadComponentsApp {
adw::ActionRow {
set_title: &tr!("apply-dxvk"),
#[watch]
set_icon_name: match model.applying_dxvk {
Some(true) => Some("emblem-ok-symbolic"),
Some(false) => None, // Some("process-working"),
None => None
add_prefix = &gtk::Image {
#[watch]
set_icon_name: match model.applying_dxvk {
Some(true) => Some("emblem-ok-symbolic"),
Some(false) => None, // Some("process-working"),
None => None
}
},
add_prefix = &gtk::Spinner {

View file

@ -1,6 +1,4 @@
use relm4::prelude::*;
use relm4::component::*;
use adw::prelude::*;
use crate::*;

View file

@ -1,5 +1,4 @@
use relm4::prelude::*;
use relm4::component::*;
use gtk::prelude::*;
use adw::prelude::*;

View file

@ -1,6 +1,4 @@
use relm4::prelude::*;
use relm4::component::*;
use adw::prelude::*;
use anime_launcher_sdk::config::ConfigExt;

View file

@ -1,6 +1,4 @@
use relm4::prelude::*;
use relm4::component::*;
use adw::prelude::*;
use anime_launcher_sdk::is_available;

View file

@ -1,6 +1,5 @@
use relm4::{
prelude::*,
component::*,
actions::*,
MessageBroker
};
@ -415,8 +414,8 @@ impl SimpleComponent for App {
Some(LauncherState::TelemetryNotDisabled) => "security-high-symbolic",
Some(LauncherState::VoiceOutdated(_)) |
Some(LauncherState::GameOutdated(_)) |
Some(LauncherState::VoiceOutdated(_)) |
None => "window-close-symbolic"
},
@ -611,7 +610,7 @@ impl SimpleComponent for App {
});
}
gtk::Inhibit::default()
gtk::glib::Propagation::Proceed
}
}
}
@ -1076,14 +1075,14 @@ impl SimpleComponent for App {
LauncherState::WineNotInstalled => download_wine::download_wine(sender, self.progress_bar.sender().to_owned()),
LauncherState::PrefixNotExists => create_prefix::create_prefix(sender),
LauncherState::VoiceUpdateAvailable(diff) |
LauncherState::VoiceNotInstalled(diff) |
LauncherState::GameUpdateAvailable(diff) |
LauncherState::GameNotInstalled(diff) =>
LauncherState::GameNotInstalled(diff) |
LauncherState::VoiceUpdateAvailable(diff) |
LauncherState::VoiceNotInstalled(diff) =>
download_diff::download_diff(sender, self.progress_bar.sender().to_owned(), diff.to_owned()),
LauncherState::VoiceOutdated(_) |
LauncherState::GameOutdated(_) => ()
LauncherState::GameOutdated(_) |
LauncherState::VoiceOutdated(_) => ()
}
}

View file

@ -1,6 +1,4 @@
use relm4::prelude::*;
use relm4::component::*;
use gtk::prelude::*;
use crate::tr;

View file

@ -1,5 +1,4 @@
use relm4::prelude::*;
use relm4::component::*;
use relm4::factory::*;
use adw::prelude::*;
@ -20,7 +19,6 @@ impl AsyncFactoryComponent for Variable {
type Input = EnvironmentPageMsg;
type Output = EnvironmentPageMsg;
type CommandOutput = ();
type ParentInput = EnvironmentPageMsg;
type ParentWidget = adw::PreferencesGroup;
view! {
@ -34,7 +32,8 @@ impl AsyncFactoryComponent for Variable {
set_valign: gtk::Align::Center,
connect_clicked[sender, index] => move |_| {
sender.output(EnvironmentPageMsg::Remove(index.clone()));
sender.output(EnvironmentPageMsg::Remove(index.clone()))
.unwrap();
}
}
}
@ -50,10 +49,6 @@ impl AsyncFactoryComponent for Variable {
value: init.1
}
}
fn forward_to_parent(output: Self::Output) -> Option<Self::ParentInput> {
Some(output)
}
}
pub struct EnvironmentPage {
@ -164,7 +159,9 @@ impl SimpleAsyncComponent for EnvironmentPage {
tracing::info!("Initializing environment settings");
let mut model = Self {
variables: AsyncFactoryVecDeque::new(adw::PreferencesGroup::new(), sender.input_sender()),
variables: AsyncFactoryVecDeque::builder()
.launch_default()
.forward(sender.input_sender(), std::convert::identity),
name_entry: adw::EntryRow::new(),
value_entry: adw::EntryRow::new()

View file

@ -1,5 +1,4 @@
use relm4::prelude::*;
use relm4::component::*;
use relm4::factory::*;
use adw::prelude::*;
@ -24,7 +23,6 @@ impl AsyncFactoryComponent for GameSession {
type Input = GamePageMsg;
type Output = GamePageMsg;
type CommandOutput = ();
type ParentInput = GamePageMsg;
type ParentWidget = adw::PreferencesGroup;
view! {
@ -48,7 +46,8 @@ impl AsyncFactoryComponent for GameSession {
set_valign: gtk::Align::Center,
connect_clicked[sender, index] => move |_| {
sender.output(GamePageMsg::UpdateSession(index.current_index()));
sender.output(GamePageMsg::UpdateSession(index.current_index()))
.unwrap();
}
},
@ -61,14 +60,16 @@ impl AsyncFactoryComponent for GameSession {
set_valign: gtk::Align::Center,
connect_clicked[sender, index] => move |_| {
sender.output(GamePageMsg::RemoveSession(index.current_index()));
sender.output(GamePageMsg::RemoveSession(index.current_index()))
.unwrap();
}
},
set_activatable: true,
connect_activated[sender, index] => move |_| {
sender.output(GamePageMsg::SetCurrent(index.current_index()));
sender.output(GamePageMsg::SetCurrent(index.current_index()))
.unwrap();
}
}
}
@ -80,10 +81,6 @@ impl AsyncFactoryComponent for GameSession {
) -> Self {
init
}
fn forward_to_parent(output: Self::Output) -> Option<Self::ParentInput> {
Some(output)
}
}
pub struct GamePage {
@ -162,7 +159,9 @@ impl SimpleAsyncComponent for GamePage {
tracing::info!("Initializing game settings");
let mut model = Self {
sessions: AsyncFactoryVecDeque::new(adw::PreferencesGroup::new(), sender.input_sender()),
sessions: AsyncFactoryVecDeque::builder()
.launch_default()
.forward(sender.input_sender(), std::convert::identity),
sessions_root_widget: gtk::CheckButton::new(),
session_name_entry: adw::EntryRow::new()

View file

@ -1,5 +1,4 @@
use relm4::prelude::*;
use relm4::component::*;
use relm4::factory::{
AsyncFactoryComponent,
@ -45,7 +44,6 @@ impl AsyncFactoryComponent for DiscordRpcIcon {
type Input = EnhancementsAppMsg;
type Output = EnhancementsAppMsg;
type CommandOutput = ();
type ParentInput = EnhancementsAppMsg;
type ParentWidget = adw::ExpanderRow;
view! {
@ -70,7 +68,8 @@ impl AsyncFactoryComponent for DiscordRpcIcon {
set_activatable: true,
connect_activated[sender, index] => move |_| {
sender.output(EnhancementsAppMsg::SetDiscordRpcIcon(index.clone()));
sender.output(EnhancementsAppMsg::SetDiscordRpcIcon(index.clone()))
.unwrap();
}
}
}
@ -83,11 +82,6 @@ impl AsyncFactoryComponent for DiscordRpcIcon {
) -> Self {
init
}
#[inline]
fn forward_to_parent(output: Self::Output) -> Option<Self::ParentInput> {
Some(output)
}
}
pub struct EnhancementsApp {
@ -102,7 +96,7 @@ pub struct EnhancementsApp {
#[derive(Debug)]
pub enum EnhancementsAppMsg {
SetGamescopeParent(adw::PreferencesWindow),
SetGamescopeParent,
SetDiscordRpcIcon(DynamicIndex),
@ -721,7 +715,10 @@ impl SimpleAsyncComponent for EnhancementsApp {
tracing::info!("Initializing enhancements settings");
let mut model = Self {
discord_rpc_icons: AsyncFactoryVecDeque::new(adw::ExpanderRow::new(), sender.input_sender()),
discord_rpc_icons: AsyncFactoryVecDeque::builder()
.launch_default()
.forward(sender.input_sender(), std::convert::identity),
discord_rpc_root_check_button: gtk::CheckButton::new(),
gamescope: GamescopeApp::builder()
@ -792,6 +789,7 @@ impl SimpleAsyncComponent for EnhancementsApp {
model.discord_rpc_icons.guard().push_back(DiscordRpcIcon {
check_button,
name: icon.name.clone(),
path: cache_file.clone()
});
@ -818,8 +816,8 @@ impl SimpleAsyncComponent for EnhancementsApp {
async fn update(&mut self, msg: Self::Input, sender: AsyncComponentSender<Self>) {
match msg {
EnhancementsAppMsg::SetGamescopeParent(parent) => {
self.gamescope.widget().set_transient_for(Some(&parent));
EnhancementsAppMsg::SetGamescopeParent => unsafe {
self.gamescope.widget().set_transient_for(super::main::PREFERENCES_WINDOW.as_ref());
}
EnhancementsAppMsg::SetDiscordRpcIcon(index) => {

View file

@ -1,5 +1,4 @@
use relm4::prelude::*;
use relm4::component::*;
use relm4::factory::*;
use adw::prelude::*;
@ -24,7 +23,6 @@ macro_rules! impl_directory {
type Input = SandboxPageMsg;
type Output = SandboxPageMsg;
type CommandOutput = ();
type ParentInput = SandboxPageMsg;
type ParentWidget = adw::PreferencesGroup;
view! {
@ -41,7 +39,8 @@ macro_rules! impl_directory {
set_valign: gtk::Align::Center,
connect_clicked[sender, index] => move |_| {
sender.output($msg(index.clone()));
sender.output($msg(index.clone()))
.unwrap();
}
}
}
@ -57,10 +56,6 @@ macro_rules! impl_directory {
to: init.1
}
}
fn forward_to_parent(output: Self::Output) -> Option<Self::ParentInput> {
Some(output)
}
}
}
}
@ -335,9 +330,17 @@ impl SimpleAsyncComponent for SandboxPage {
tracing::info!("Initializing sandbox settings");
let mut model = Self {
private_paths: AsyncFactoryVecDeque::new(adw::PreferencesGroup::new(), sender.input_sender()),
shared_paths: AsyncFactoryVecDeque::new(adw::PreferencesGroup::new(), sender.input_sender()),
symlink_paths: AsyncFactoryVecDeque::new(adw::PreferencesGroup::new(), sender.input_sender()),
private_paths: AsyncFactoryVecDeque::builder()
.launch_default()
.forward(sender.input_sender(), std::convert::identity),
shared_paths: AsyncFactoryVecDeque::builder()
.launch_default()
.forward(sender.input_sender(), std::convert::identity),
symlink_paths: AsyncFactoryVecDeque::builder()
.launch_default()
.forward(sender.input_sender(), std::convert::identity),
private_path_entry: adw::EntryRow::new(),

View file

@ -1,6 +1,4 @@
use relm4::prelude::*;
use relm4::component::*;
use adw::prelude::*;
use anime_launcher_sdk::config::ConfigExt;

View file

@ -1,6 +1,4 @@
use relm4::prelude::*;
use relm4::component::*;
use gtk::prelude::*;
use adw::prelude::*;

View file

@ -1,5 +1,5 @@
use relm4::prelude::*;
use relm4::component::*;
use relm4::factory::{
AsyncFactoryVecDeque,
AsyncFactoryComponent,
@ -41,7 +41,6 @@ impl AsyncFactoryComponent for VoicePackageComponent {
type Input = GeneralAppMsg;
type Output = GeneralAppMsg;
type CommandOutput = ();
type ParentInput = GeneralAppMsg;
type ParentWidget = adw::ExpanderRow;
view! {
@ -97,11 +96,8 @@ impl AsyncFactoryComponent for VoicePackageComponent {
async fn update(&mut self, msg: Self::Input, sender: AsyncFactorySender<Self>) {
self.installed = !self.installed;
sender.output(msg);
}
fn forward_to_parent(output: Self::Output) -> Option<Self::ParentInput> {
Some(output)
sender.output(msg)
.unwrap();
}
}
@ -543,7 +539,9 @@ impl SimpleAsyncComponent for GeneralApp {
tracing::info!("Initializing general settings");
let mut model = Self {
voice_packages: AsyncFactoryVecDeque::new(adw::ExpanderRow::new(), sender.input_sender()),
voice_packages: AsyncFactoryVecDeque::builder()
.launch_default()
.forward(sender.input_sender(), std::convert::identity),
migrate_installation: MigrateInstallationApp::builder()
.launch(())
@ -655,7 +653,7 @@ impl SimpleAsyncComponent for GeneralApp {
self.migrate_installation.widget().set_transient_for(Some(window.widget()));
}
self.migrate_installation.widget().show();
self.migrate_installation.widget().present();
}
GeneralAppMsg::RepairGame => {

View file

@ -1,5 +1,4 @@
use relm4::prelude::*;
use relm4::component::*;
use gtk::prelude::*;
use adw::prelude::*;
@ -64,7 +63,7 @@ impl SimpleAsyncComponent for PreferencesApp {
});
}
gtk::Inhibit::default()
gtk::glib::Propagation::Proceed
}
}
}
@ -94,12 +93,10 @@ impl SimpleAsyncComponent for PreferencesApp {
PREFERENCES_WINDOW = Some(widgets.preferences_window.clone());
}
#[allow(unused_must_use)] {
model.enhancements.sender().send(EnhancementsAppMsg::SetGamescopeParent(widgets.preferences_window.clone()));
model.enhancements.emit(EnhancementsAppMsg::SetGamescopeParent);
model.general.sender().send(GeneralAppMsg::UpdateDownloadedWine);
model.general.sender().send(GeneralAppMsg::UpdateDownloadedDxvk);
}
model.general.emit(GeneralAppMsg::UpdateDownloadedWine);
model.general.emit(GeneralAppMsg::UpdateDownloadedDxvk);
AsyncComponentParts { model, widgets }
}
@ -108,9 +105,8 @@ impl SimpleAsyncComponent for PreferencesApp {
tracing::debug!("Called preferences window event: {:?}", msg);
match msg {
#[allow(unused_must_use)]
PreferencesAppMsg::SetGameDiff(diff) => {
self.general.sender().send(GeneralAppMsg::SetGameDiff(diff));
self.general.emit(GeneralAppMsg::SetGameDiff(diff));
}
#[allow(unused_must_use)]