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

Release 3.7.1
This commit is contained in:
Observer KRypt0n_ 2023-06-11 12:34:45 +02:00 committed by GitHub
commit 7a281c3f8c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
86 changed files with 1596 additions and 537 deletions

View file

@ -11,6 +11,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
- Added Discord RPC icon selection
- Added Japanese
- Added Hungarian
### Fixed
- Fixed progress bar style after running game repairer
- Fixed repair button functionality (#186)
- Fixed default launcher language selection at the first start
- Fixed some installer updates reporting (including "checking free space")
### Changed
- Reworked game sessions selection
- Updated Indonesian
- Updated French
- Made initial tasks async which has decreased startup time
- Updated fps unlocker to 2.1.1
### Removed
- Removed 3.7.0 workaround
- Removed patch mirror migration
## [3.7.0] - 24.05.2023
### Added
- Added Italian
- Added Indonesian
- Added dynamic main button icon switching

306
Cargo.lock generated
View file

@ -39,17 +39,17 @@ dependencies = [
[[package]]
name = "aho-corasick"
version = "1.0.1"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04"
checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41"
dependencies = [
"memchr",
]
[[package]]
name = "anime-game-core"
version = "1.10.3"
source = "git+https://github.com/an-anime-team/anime-game-core?tag=1.10.3#045a5442a8d4d15326abbd3c294ec934603947d1"
version = "1.12.1"
source = "git+https://github.com/an-anime-team/anime-game-core?tag=1.12.1#af3b58e1657a19d0c8069956f3c2ac610704fc46"
dependencies = [
"anyhow",
"bzip2",
@ -96,8 +96,8 @@ dependencies = [
[[package]]
name = "anime-launcher-sdk"
version = "1.4.5"
source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.4.5#af03ab65d4350b35711d9ce118702844f79daf9e"
version = "1.7.2"
source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.7.2#14882b44e6f70cff763c5f3750e079fccd73670b"
dependencies = [
"anime-game-core",
"anyhow",
@ -244,7 +244,7 @@ checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.16",
"syn 2.0.18",
]
[[package]]
@ -287,15 +287,9 @@ checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.16",
"syn 2.0.18",
]
[[package]]
name = "async_once"
version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2ce4f10ea3abcd6617873bae9f91d1c5332b4a778bd9ce34d0cd517474c1de82"
[[package]]
name = "atomic-waker"
version = "1.1.1"
@ -331,9 +325,9 @@ checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff"
[[package]]
name = "base64"
version = "0.21.1"
version = "0.21.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f1e31e207a6b8fb791a38ea3105e6cb541f55e4d029902d3039a4ad07cc4105"
checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d"
[[package]]
name = "base64ct"
@ -422,18 +416,16 @@ dependencies = [
[[package]]
name = "cached"
version = "0.43.0"
version = "0.44.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bc2fafddf188d13788e7099295a59b99e99b2148ab2195cae454e754cc099925"
checksum = "b195e4fbc4b6862bbd065b991a34750399c119797efff72492f28a5864de8700"
dependencies = [
"async-trait",
"async_once",
"cached_proc_macro",
"cached_proc_macro_types",
"futures",
"hashbrown 0.13.2",
"instant",
"lazy_static",
"once_cell",
"thiserror",
"tokio",
@ -441,9 +433,9 @@ dependencies = [
[[package]]
name = "cached_proc_macro"
version = "0.16.0"
version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e10ca87c81aaa3a949dbbe2b5e6c2c45dbc94ba4897e45ea31ff9ec5087be3dc"
checksum = "b48814962d2fd604c50d2b9433c2a41a0ab567779ee2c02f7fba6eca1221f082"
dependencies = [
"cached_proc_macro_types",
"darling",
@ -460,9 +452,9 @@ checksum = "3a4f925191b4367301851c6d99b09890311d74b0d43f274c0b34c86d308a3663"
[[package]]
name = "cairo-rs"
version = "0.17.0"
version = "0.17.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a8af54f5d48af1226928adc1f57edd22f5df1349e7da1fc96ae15cf43db0e871"
checksum = "ab3603c4028a5e368d09b51c8b624b9a46edcd7c3778284077a6125af73c9f0a"
dependencies = [
"bitflags",
"cairo-sys-rs",
@ -474,9 +466,9 @@ dependencies = [
[[package]]
name = "cairo-sys-rs"
version = "0.17.0"
version = "0.17.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f55382a01d30e5e53f185eee269124f5e21ab526595b872751278dfbb463594e"
checksum = "691d0c66b1fb4881be80a760cb8fe76ea97218312f9dfe2c9cc0f496ca279cb1"
dependencies = [
"glib-sys",
"libc",
@ -494,9 +486,9 @@ dependencies = [
[[package]]
name = "cfg-expr"
version = "0.15.1"
version = "0.15.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8790cf1286da485c72cf5fc7aeba308438800036ec67d89425924c4807268c9"
checksum = "e70d3ad08698a0568b0562f22710fe6bfc1f4a61a367c77d0398c562eadd453a"
dependencies = [
"smallvec",
"target-lexicon",
@ -620,16 +612,6 @@ dependencies = [
"typenum",
]
[[package]]
name = "ctor"
version = "0.1.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096"
dependencies = [
"quote",
"syn 1.0.109",
]
[[package]]
name = "darling"
version = "0.14.4"
@ -713,7 +695,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.16",
"syn 2.0.18",
]
[[package]]
@ -750,7 +732,7 @@ dependencies = [
"num-traits",
"proc-macro2",
"quote",
"syn 2.0.16",
"syn 2.0.18",
]
[[package]]
@ -771,7 +753,7 @@ checksum = "5e9a1f9f7d83e59740248a6e14ecf93929ade55027844dfcea78beafccc15745"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.16",
"syn 2.0.18",
]
[[package]]
@ -812,11 +794,11 @@ dependencies = [
[[package]]
name = "field-offset"
version = "0.3.5"
version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3cf3a800ff6e860c863ca6d4b16fd999db8b752819c1606884047b73e468535"
checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f"
dependencies = [
"memoffset 0.8.0",
"memoffset 0.9.0",
"rustc_version",
]
@ -946,9 +928,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
[[package]]
name = "form_urlencoded"
version = "1.1.0"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652"
dependencies = [
"percent-encoding",
]
@ -1036,7 +1018,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.16",
"syn 2.0.18",
]
[[package]]
@ -1071,9 +1053,9 @@ dependencies = [
[[package]]
name = "gdk-pixbuf"
version = "0.17.0"
version = "0.17.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b023fbe0c6b407bd3d9805d107d9800da3829dc5a676653210f1d5f16d7f59bf"
checksum = "695d6bc846438c5708b07007537b9274d883373dd30858ca881d7d71b5540717"
dependencies = [
"bitflags",
"gdk-pixbuf-sys",
@ -1085,9 +1067,9 @@ dependencies = [
[[package]]
name = "gdk-pixbuf-sys"
version = "0.17.0"
version = "0.17.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b41bd2b44ed49d99277d3925652a163038bd5ed943ec9809338ffb2f4391e3b"
checksum = "9285ec3c113c66d7d0ab5676599176f1f42f4944ca1b581852215bf5694870cb"
dependencies = [
"gio-sys",
"glib-sys",
@ -1141,9 +1123,9 @@ dependencies = [
[[package]]
name = "getrandom"
version = "0.2.9"
version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4"
checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
dependencies = [
"cfg-if",
"js-sys",
@ -1160,9 +1142,9 @@ checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4"
[[package]]
name = "gio"
version = "0.17.9"
version = "0.17.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d14522e56c6bcb6f7a3aebc25cbcfb06776af4c0c25232b601b4383252d7cb92"
checksum = "a6973e92937cf98689b6a054a9e56c657ed4ff76de925e36fc331a15f0c5d30a"
dependencies = [
"bitflags",
"futures-channel",
@ -1180,9 +1162,9 @@ dependencies = [
[[package]]
name = "gio-sys"
version = "0.17.4"
version = "0.17.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6b1d43b0d7968b48455244ecafe41192871257f5740aa6b095eb19db78e362a5"
checksum = "0ccf87c30a12c469b6d958950f6a9c09f2be20b7773f7e70d20b867fdf2628c3"
dependencies = [
"glib-sys",
"gobject-sys",
@ -1193,9 +1175,9 @@ dependencies = [
[[package]]
name = "glib"
version = "0.17.9"
version = "0.17.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a7f1de7cbde31ea4f0a919453a2dcece5d54d5b70e08f8ad254dc4840f5f09b6"
checksum = "d3fad45ba8d4d2cea612b432717e834f48031cd8853c8aaf43b2c79fec8d144b"
dependencies = [
"bitflags",
"futures-channel",
@ -1216,15 +1198,15 @@ dependencies = [
[[package]]
name = "glib-build-tools"
version = "0.17.0"
version = "0.17.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f8480c9ba9cc06aa8d5baf446037f8dc237bee127e9b62080c4db7e293d8ea0"
checksum = "7a65d79efe318ef2cbbbb37032b125866fd82c34ea44c816132621bbc552e716"
[[package]]
name = "glib-macros"
version = "0.17.9"
version = "0.17.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0a7206c5c03851ef126ea1444990e81fdd6765fb799d5bc694e4897ca01bb97f"
checksum = "eca5c79337338391f1ab8058d6698125034ce8ef31b72a442437fa6c8580de26"
dependencies = [
"anyhow",
"heck",
@ -1237,9 +1219,9 @@ dependencies = [
[[package]]
name = "glib-sys"
version = "0.17.4"
version = "0.17.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49f00ad0a1bf548e61adfff15d83430941d9e1bb620e334f779edd1c745680a5"
checksum = "d80aa6ea7bba0baac79222204aa786a6293078c210abe69ef1336911d4bdc4f0"
dependencies = [
"libc",
"system-deps",
@ -1272,9 +1254,9 @@ dependencies = [
[[package]]
name = "gobject-sys"
version = "0.17.4"
version = "0.17.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "15e75b0000a64632b2d8ca3cf856af9308e3a970844f6e9659bd197f026793d0"
checksum = "cd34c3317740a6358ec04572c1bcfd3ac0b5b6529275fae255b237b314bb8062"
dependencies = [
"glib-sys",
"libc",
@ -1283,9 +1265,9 @@ dependencies = [
[[package]]
name = "graphene-rs"
version = "0.17.1"
version = "0.17.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21cf11565bb0e4dfc2f99d4775b6c329f0d40a2cff9c0066214d31a0e1b46256"
checksum = "def4bb01265b59ed548b05455040d272d989b3012c42d4c1bbd39083cb9b40d9"
dependencies = [
"glib",
"graphene-sys",
@ -1294,9 +1276,9 @@ dependencies = [
[[package]]
name = "graphene-sys"
version = "0.17.0"
version = "0.17.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf80a4849a8d9565410a8fec6fc3678e9c617f4ac7be182ca55ab75016e07af9"
checksum = "1856fc817e6a6675e36cea0bd9a3afe296f5d9709d1e2d3182803ac77f0ab21d"
dependencies = [
"glib-sys",
"libc",
@ -1448,9 +1430,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
[[package]]
name = "idna"
version = "0.3.0"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c"
dependencies = [
"unicode-bidi",
"unicode-normalization",
@ -1597,12 +1579,11 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libadwaita"
version = "0.3.1"
version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1c4efd2020a4fcedbad2c4a97de97bf6045e5dc49d61d5a5d0cfd753db60700"
checksum = "1ab9c0843f9f23ff25634df2743690c3a1faffe0a190e60c490878517eb81abf"
dependencies = [
"bitflags",
"futures-channel",
"gdk-pixbuf",
"gdk4",
"gio",
@ -1610,15 +1591,14 @@ dependencies = [
"gtk4",
"libadwaita-sys",
"libc",
"once_cell",
"pango",
]
[[package]]
name = "libadwaita-sys"
version = "0.3.0"
version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0727b85b4fe2b1bed5ac90df6343de15cbf8118bfb96d7c3cc1512681a4b34ac"
checksum = "4231cb2499a9f0c4cdfa4885414b33e39901ddcac61150bc0bb4ff8a57ede404"
dependencies = [
"gdk4-sys",
"gio-sys",
@ -1632,9 +1612,9 @@ dependencies = [
[[package]]
name = "libc"
version = "0.2.144"
version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b00cc1c228a6782d0f076e7b232802e0c5689d41bb5df366f2a6b6621cfdfe1"
checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
[[package]]
name = "linux-raw-sys"
@ -1644,9 +1624,9 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
[[package]]
name = "lock_api"
version = "0.4.9"
version = "0.4.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16"
dependencies = [
"autocfg",
"scopeguard",
@ -1654,11 +1634,10 @@ dependencies = [
[[package]]
name = "log"
version = "0.4.17"
version = "0.4.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4"
dependencies = [
"cfg-if",
"value-bag",
]
@ -1725,6 +1704,15 @@ dependencies = [
"autocfg",
]
[[package]]
name = "memoffset"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
dependencies = [
"autocfg",
]
[[package]]
name = "miniz_oxide"
version = "0.6.2"
@ -1872,18 +1860,18 @@ dependencies = [
[[package]]
name = "object"
version = "0.30.3"
version = "0.30.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439"
checksum = "03b4680b86d9cfafba8fc491dc9b6df26b68cf40e9e6cd73909194759a63c385"
dependencies = [
"memchr",
]
[[package]]
name = "once_cell"
version = "1.17.1"
version = "1.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
[[package]]
name = "open"
@ -1919,9 +1907,9 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
[[package]]
name = "pango"
version = "0.17.4"
version = "0.17.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "52c280b82a881e4208afb3359a8e7fde27a1b272280981f1f34610bed5770d37"
checksum = "35be456fc620e61f62dff7ff70fbd54dcbaf0a4b920c0f16de1107c47d921d48"
dependencies = [
"bitflags",
"gio",
@ -1933,9 +1921,9 @@ dependencies = [
[[package]]
name = "pango-sys"
version = "0.17.0"
version = "0.17.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4293d0f0b5525eb5c24734d30b0ed02cd02aa734f216883f376b54de49625de8"
checksum = "3da69f9f3850b0d8990d462f8c709561975e95f689c1cdf0fecdebde78b35195"
dependencies = [
"glib-sys",
"gobject-sys",
@ -1949,6 +1937,29 @@ version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394e"
[[package]]
name = "parking_lot"
version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
dependencies = [
"lock_api",
"parking_lot_core",
]
[[package]]
name = "parking_lot_core"
version = "0.9.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447"
dependencies = [
"cfg-if",
"libc",
"redox_syscall 0.3.5",
"smallvec",
"windows-targets 0.48.0",
]
[[package]]
name = "password-hash"
version = "0.4.2"
@ -1980,9 +1991,9 @@ dependencies = [
[[package]]
name = "percent-encoding"
version = "2.2.0"
version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94"
[[package]]
name = "pin-project"
@ -2001,7 +2012,7 @@ checksum = "39407670928234ebc5e6e580247dd567ad73a3578460c5990f9503df207e8f07"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.16",
"syn 2.0.18",
]
[[package]]
@ -2092,18 +2103,18 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
[[package]]
name = "proc-macro2"
version = "1.0.58"
version = "1.0.60"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa1fb82fc0c281dd9671101b66b771ebbe1eaf967b96ac8740dcba4b70005ca8"
checksum = "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
version = "1.0.27"
version = "1.0.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f4f29d145265ec1c483c7c654450edde0bfe043d3938d6972630663356d9500"
checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488"
dependencies = [
"proc-macro2",
]
@ -2186,11 +2197,11 @@ dependencies = [
[[package]]
name = "regex"
version = "1.8.2"
version = "1.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d1a59b5d8e97dee33696bf13c5ba8ab85341c002922fba050069326b9c498974"
checksum = "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f"
dependencies = [
"aho-corasick 1.0.1",
"aho-corasick 1.0.2",
"memchr",
"regex-syntax",
]
@ -2203,9 +2214,9 @@ checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78"
[[package]]
name = "relm4"
version = "0.6.0-beta.1"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f169f698ce2e487eed2306898fcf262224a287d0e81480db4190e74cfec412cf"
checksum = "c80ef6bb7a142b6aaa01b96961c33127fffcda4741eb0ad82f07e18c9186681d"
dependencies = [
"async-trait",
"flume",
@ -2221,13 +2232,13 @@ dependencies = [
[[package]]
name = "relm4-macros"
version = "0.6.0-beta.1"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fa06febb3685960e7c1c44e21e44a3829325940b31d1e91391a43c32020c201"
checksum = "848a6e1b4954b7aa8155d4a234516d46ed543a614666adc1ea73a922bc841e2a"
dependencies = [
"proc-macro2",
"quote",
"syn 1.0.109",
"syn 2.0.18",
]
[[package]]
@ -2335,7 +2346,7 @@ version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b"
dependencies = [
"base64 0.21.1",
"base64 0.21.2",
]
[[package]]
@ -2415,22 +2426,22 @@ checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed"
[[package]]
name = "serde"
version = "1.0.163"
version = "1.0.164"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2113ab51b87a539ae008b5c6c02dc020ffa39afd2d83cffcb3f4eb2722cebec2"
checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.163"
version = "1.0.164"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8c805777e3930c8883389c602315a24224bcc738b63905ef87cd1420353ea93e"
checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.16",
"syn 2.0.18",
]
[[package]]
@ -2452,7 +2463,7 @@ checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.16",
"syn 2.0.18",
]
[[package]]
@ -2598,9 +2609,9 @@ dependencies = [
[[package]]
name = "syn"
version = "2.0.16"
version = "2.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a6f671d4b5ffdb8eadec19c0ae67fe2639df8684bd7bc4b83d986b8db549cf01"
checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e"
dependencies = [
"proc-macro2",
"quote",
@ -2609,9 +2620,9 @@ dependencies = [
[[package]]
name = "sysinfo"
version = "0.29.0"
version = "0.29.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "02f1dc6930a439cc5d154221b5387d153f8183529b07c19aca24ea31e0a167e1"
checksum = "9557d0845b86eea8182f7b10dff120214fb6cd9fd937b6f4917714e546a38695"
dependencies = [
"cfg-if",
"core-foundation-sys",
@ -2654,15 +2665,16 @@ checksum = "fd1ba337640d60c3e96bc6f0638a939b9c9a7f2c316a1598c279828b3d1dc8c5"
[[package]]
name = "tempfile"
version = "3.5.0"
version = "3.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998"
checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6"
dependencies = [
"autocfg",
"cfg-if",
"fastrand",
"redox_syscall 0.3.5",
"rustix",
"windows-sys 0.45.0",
"windows-sys 0.48.0",
]
[[package]]
@ -2682,7 +2694,7 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.16",
"syn 2.0.18",
]
[[package]]
@ -2697,9 +2709,9 @@ dependencies = [
[[package]]
name = "time"
version = "0.3.21"
version = "0.3.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f3403384eaacbca9923fa06940178ac13e4edb725486d70e8e15881d0c836cc"
checksum = "ea9e1b3cf1243ae005d9e74085d4d542f3125458f3a81af210d901dcd7411efd"
dependencies = [
"serde",
"time-core",
@ -2737,12 +2749,13 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "tokio"
version = "1.28.1"
version = "1.28.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0aa32867d44e6f2ce3385e89dceb990188b8bb0fb25b0cf576647a6f98ac5105"
checksum = "94d7b1cfd2aa4011f2de74c2c4c63665e27a71006b0a192dcd2710272e73dfa2"
dependencies = [
"autocfg",
"num_cpus",
"parking_lot",
"pin-project-lite",
"tokio-macros",
"windows-sys 0.48.0",
@ -2756,7 +2769,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.16",
"syn 2.0.18",
]
[[package]]
@ -2813,7 +2826,7 @@ checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.16",
"syn 2.0.18",
]
[[package]]
@ -2948,9 +2961,9 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"
[[package]]
name = "url"
version = "2.3.1"
version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb"
dependencies = [
"form_urlencoded",
"idna",
@ -2981,13 +2994,9 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
[[package]]
name = "value-bag"
version = "1.0.0-alpha.9"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55"
dependencies = [
"ctor",
"version_check",
]
checksum = "a4d330786735ea358f3bc09eea4caa098569c1c93f342d9aca0514915022fe7e"
[[package]]
name = "version-compare"
@ -3044,7 +3053,7 @@ dependencies = [
"once_cell",
"proc-macro2",
"quote",
"syn 2.0.16",
"syn 2.0.18",
"wasm-bindgen-shared",
]
@ -3078,7 +3087,7 @@ checksum = "e128beba882dd1eb6200e1dc92ae6c5dbaa4311aa7bb211ca035779e5efc39f8"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.16",
"syn 2.0.18",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@ -3157,9 +3166,13 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "wincompatlib"
version = "0.4.1"
version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3096bb9e88e30abe60a159e8fd55ad2ba140b389e67f3814b10db93303f70df8"
checksum = "d5f1df70b617ad08dc336d13f1c7998a95781313fd6a0bffa1f45857c8254581"
dependencies = [
"anyhow",
"minreq",
]
[[package]]
name = "windows"
@ -3185,15 +3198,6 @@ dependencies = [
"windows_x86_64_msvc 0.42.2",
]
[[package]]
name = "windows-sys"
version = "0.45.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
dependencies = [
"windows-targets 0.42.2",
]
[[package]]
name = "windows-sys"
version = "0.48.0"

View file

@ -17,15 +17,15 @@ glib-build-tools = "0.17"
[dependencies.anime-launcher-sdk]
git = "https://github.com/an-anime-team/anime-launcher-sdk"
tag = "1.4.5"
features = ["all", "genshin"]
tag = "1.7.2"
features = ["all", "genshin", "genshin-patch"]
# path = "../anime-launcher-sdk" # ! for dev purposes only
[dependencies]
relm4 = { version = "0.6.0-beta.1", features = ["macros", "libadwaita"] }
relm4 = { version = "0.6.0", features = ["macros", "libadwaita"] }
gtk = { package = "gtk4", version = "0.6", features = ["v4_8"] }
adw = { package = "libadwaita", version = "0.3", features = ["v1_2"] }
adw = { package = "libadwaita", version = "0.4", features = ["v1_2"] }
rfd = { version = "0.11", features = ["xdg-portal"], default-features = false }
open = "4.0"
@ -34,7 +34,7 @@ whatadistro = "0.1.0"
serde_json = "1.0"
anyhow = "1.0"
lazy_static = "1.4.0"
cached = { version = "0.43", features = ["proc_macro"] }
cached = { version = "0.44", features = ["proc_macro"] }
md-5 = { version = "0.10", features = ["asm"] }
tracing = "0.1"

View file

@ -23,3 +23,5 @@ tr-tr = Türkçe
it-it = Italiano
id-id = Indonesia
zh-cn = 简体中文
ja-jp = 日本語
hu-hu = Magyar

View file

@ -1,11 +1,11 @@
components = Komponenten
components-description = Verwalte deine Wine- und DXVK-Versionen
components-description = Verwalten Sie Ihre Wine- und DXVK-Versionen
selected-version = Ausgewählte version
selected-version = Ausgewählte Version
recommended-only = Nur empfohlene
wine-version = Wine version
wine-recommended-description = Nur empfohlene wine versionen anzeigen
wine-version = Wine-Version
wine-recommended-description = Nur empfohlene Wine-Versionen anzeigen
wine-options = Wine-Optionen
@ -15,6 +15,6 @@ wine-use-shared-libraries-description = Setzt die LD_LIBRARY_PATH-Variable, um S
gstreamer-use-shared-libraries = Gemeinsame gstreamer-Bibliotheken verwenden
gstreamer-use-shared-libraries-description = Setzt die Variable GST_PLUGIN_PATH, um die Gstreamer-Bibliotheken aus dem ausgewählten Wine-Build zu laden
dxvk-version = DXVK version
dxvk-selection-disabled = DXVK auswahl ist durch ihre Wine auswahl deaktiviert
dxvk-recommended-description = Nur empfohlene dxvk versionen anzeigen
dxvk-version = DXVK-Version
dxvk-selection-disabled = DXVK-Auswahl ist durch Ihre Wine-Auswahl deaktiviert
dxvk-recommended-description = Nur empfohlene DXVK-Versionen anzeigen

View file

@ -5,10 +5,10 @@ environment-settings-description = Definiere Umgebungsvariablen und ändere den
wine = Wine
synchronization = Synchronisation
wine-sync-description = Technologie zur Synchronisierung von Wine events
wine-sync-description = Technologie zur Synchronisierung von Wine-Events
language = Sprache
wine-lang-description = Sprache, die in der Wine umgebung verwendet wird. Kann Probleme mit dem Tastaturlayout beheben
wine-lang-description = Sprache, die in der Wine-Umgebung verwendet wird. Kann Probleme mit dem Tastaturlayout beheben
system = System
borderless-window = Randloses Fenster
@ -29,10 +29,11 @@ gamemode = Gamemode
gamemode-description = Dem Spiel den Vorrang vor den übrigen Prozessen geben
gamescope = Gamescope
gamescope-description = Gamescope ist ein Tool von Valve das es ermöglicht, Spiele in einer isolierten Xwayland-Instanz laufen zu lassen und unterstützt AMD-, Intel- und Nvidia-GPUs
gamescope-description = Gamescope ist ein Tool von Valve, das es ermöglicht, Spiele in einer isolierten Xwayland-Instanz laufen zu lassen und unterstützt AMD-, Intel- und Nvidia-GPUs
discord-rpc = Discord RPC
discord-rpc-description = Discord RPC ermöglicht es dir Discord die Information zu geben dass du gerade spielst, damit deine Freunde Bescheid wissen
discord-rpc-description =Discord RPC ermöglicht es Ihnen Discord die Information zu geben, dass Sie gerade spielen, damit Ihre Freunde Bescheid wissen
icon = Icon
title = Titel
description = Beschreibung

View file

@ -1,15 +1,15 @@
launcher-folder-opening-error = Launcher-Ordner konnte nicht geöffnet werden
game-folder-opening-error = Spieleordner konnte nicht geöffnet werden
config-file-opening-error = Konfig-Datei konnte nicht geöffnet werden
config-file-opening-error = Konfigurationsdatei konnte nicht geöffnet werden
debug-file-opening-error = Debug-Datei konnte nicht geöffnet werden
wish-url-search-failed = Kein Wünsche URL gefunden
wish-url-opening-error = Wünsche URL konnte nicht geöffnet werden
wine-run-error = Ausführung von {$executable} mit wine fehlgeschlagen
wine-run-error = Ausführung von {$executable} mit Wine fehlgeschlagen
game-launching-failed = Spiel konnte nicht gestartet werden
failed-get-selected-wine = Die ausgewählte Wine version konnte nicht abgerufen werden.
failed-get-selected-wine = Die ausgewählte Wine-Version konnte nicht abgerufen werden.
downloading-failed = Herunterladen fehlgeschlagen
unpacking-failed = Entpacken fehlgeschlagen
@ -20,13 +20,13 @@ background-downloading-failed = Download des Hintergrundbildes fehlgeschlagen
components-index-sync-failed = Komponentenindex konnte nicht synchronisiert werden
components-index-verify-failed = Komponentenindex konnte nicht verifiziert werden
config-update-error = Speichern der Konfiguration fehlgeschlagen
wine-prefix-update-failed = Aktualisierung des wine prefix fehlgeschlagen
wine-prefix-update-failed = Aktualisierung des Wine-Prefix fehlgeschlagen
dxvk-install-failed = DXVK konnte nicht installiert werden
voice-package-deletion-error = Sprachpaket konnte nicht gelöscht werden
game-diff-finding-error = Spiel-Diff nicht gefunden
patch-info-fetching-error = Patch-Informationen konnten nicht abgerufen werden
launcher-state-updating-error = Aktualisierung des Launcher status fehlgeschlagen
launcher-state-updating-error = Aktualisierung des Launcher-Status fehlgeschlagen
package-not-available = Paket ist nicht verfügbar: {$package}
wine-download-error = Download von Wine fehlgeschlagen
@ -34,9 +34,9 @@ wine-unpack-errror = Entpacken von Wine fehlgeschlagen
wine-install-failed = Installation von Wine fehlgeschlagen
dxvk-download-error = Download von DXVK fehlgeschlagen
dxvk-unpack-error = Entpacken von DXVK fehlgeschlagen
dxvk-apply-error = DXVK konnte nicht angewendet werden
dxvk-apply-error = Anwenden von DXVK fehlgeschlagen
downloaded-wine-list-failed = Auflistung der heruntergeladenen Wine versionen fehlgeschlagen
downloaded-wine-list-failed = Auflistung der heruntergeladenen Wine-Versionen fehlgeschlagen
patch-sync-failed = Synchronisierung des Patch-Ordners fehlgeschlagen
patch-state-check-failed = Status des Patchordners konnte nicht überprüft werden
@ -53,3 +53,8 @@ game-session-update-failed = Spielsitzung konnte nicht aktualisiert werden
game-session-remove-failed = Spielsitzung konnte nicht entfernt werden
game-session-set-current-failed = Aktuelle Spielsitzung konnte nicht eingestellt werden
game-session-apply-failed = Spielsitzung konnte nicht angewendet werden
# Enhancements
discord-rpc-icons-fetch-failed = Discord-RPC-Symbole konnten nicht abgerufen werden
discord-rpc-icon-download-failed = Discord RPC-Symbol konnte nicht heruntergeladen werden

View file

@ -3,25 +3,25 @@ welcome = Willkommen
welcome-page-message =
Hallo! Willkommen bei An Anime Game Launcher
Wir müssen einige Dinge vorbereiten und Standardkomponenten herunterladen, bevor du das Spiel starten kannst
Wir müssen einige Dinge vorbereiten und Standardkomponenten herunterladen, bevor Sie das Spiel starten können
tos-violation-warning = Warnung vor ToS-Verletzung
tos-violation-warning = Warnung vor AGB-Verletzung
tos-violation-warning-message =
Dieser Launcher ist ein inoffizielles Tool, das in keiner Weise mit {company-name} oder {company-alter-name} in verbindung steht.
Dieser Launcher ist ein inoffizielles Tool, das in keiner Weise mit {company-name} oder {company-alter-name} in Verbindung steht.
Dieses Tool soll das Spielen von {game-name} erleichtern auf Linux, und wurde mit dem einzigen Ziel entwickelt, das Spiel mit weniger Aufwand zu installieren und zu betreiben.
Dieses Tool soll das Spielen von {game-name} unter Linux erleichtern und wurde mit dem einzigen Ziel entwickelt, das Spiel mit weniger Aufwand zu installieren und zu betreiben.
Dies geschieht durch die Verwendung vorhandener Komponenten und die Vereinfachung der Erfahrung für den Benutzer.
Einige der hier verwendeten Komponenten verstoßen jedoch wahrscheinlich gegen die {company-name} Nutzungsbedingungen für {game-name}.
Wenn Sie diesen Launcher verwenden, könnte Ihr Spielerkonto als TOS-widrig identifiziert werden durch {company-name}/{company-alter-name}.
Wenn Sie diesen Launcher verwenden, könnte Ihr Spielerkonto durch {company-name}/{company-alter-name} als AGB-widrig identifiziert werden.
Sollte dies der Fall sein, würde Ihr Konto gegen die TOS verstoßen, {company-name}/{company-alter-name} sind frei zu tun, was sie wollen. Inklusive Ban.
Sollte dies der Fall sein, steht es {company-name}/{company-alter-name} frei, zu tun, was sie wollen, einschließlich eines Bans.
Wenn Sie sich über das Risiko bewusst sind das mit dem versuchen des Spiels spielen in inoffizieller Weise verbunden ist dann drücken Sie OK um fortzufahren.
Wenn Sie sich über das Risiko bewusst sind, das mit dem Versuch des spielens in inoffizieller Weise verbunden ist, dann drücken Sie OK, um fortzufahren.
tos-dialog-title = Sind Sie sicher, dass Sie verstehen, was wir sagen?
tos-dialog-message =
@ -30,7 +30,7 @@ tos-dialog-message =
3. Stellen Sie Fragen nur in unserem Discord oder auf dem Matrix-Server
dependencies = Abhängigkeiten
missing-dependencies-title = Sie vermissen einige Abhängigkeiten!
missing-dependencies-title = Es fehlen einige Abhängigkeiten!
missing-dependencies-message = Sie müssen einige Pakete auf Ihrem System installieren, bevor Sie mit der Installation fortfahren können
@ -40,7 +40,7 @@ show-all-folders = Ich weiß, was ich tue
show-all-folders-subtitle = Zusätzliche Pfadauswahl-Einstellungen anzeigen. Tu was ich sage...
runners-folder = Runners-Ordner
dxvks-folder = DXVKs-Ordner
wine-prefix-folder = Wine prefix-Ordner
wine-prefix-folder = Wine-Prefix-Ordner
global-game-installation-folder = Installationsordner der globalen Spielversion
chinese-game-installation-folder = Installationsordner der chinesischen Spielversion
fps-unlocker-folder = FPS Unlocker Ordner

View file

@ -3,5 +3,5 @@ game-sessions = Spielsitzungen
active-sessions = Aktive Sitzung
active-session-description = Derzeit ausgewählte Spielsitzung. Aktualisiert nach jedem Spielstart
update-session = Sitzung mit aktuellen Wine prefix Registrierungswerten aktualisieren
update-session = Sitzung mit aktuellen Wine-Prefix Registrierungswerten aktualisieren
delete-session = Sitzung löschen

View file

@ -2,9 +2,9 @@ appearance = Aussehen
modern = Modern
classic = Klassisch
update-background = Hintergrundbild aktualisieren
update-background-description = Lädt das offizielle Hintergrundbild herunter für den Launcher. SIe können es deaktiverien für ein benutzerdefiniertes Bild.
update-background-description = Lädt das offizielle Hintergrundbild für den Launcher herunter. Deaktivieren Sie dies für eine benutzerdefiniertes Hintergrundbild.
launcher-language = Launcher Sprache
launcher-language = Launcher-Sprache
launcher-language-description = Gilt nach Neustart
game-edition = Spiel-Edition
@ -14,7 +14,7 @@ china = China
game-environment = Spielumgebung
game-environment-description = Spezielle Funktionen wie zusätzliche Zahlungsmöglichkeiten
game-voiceovers = Spiel Sprachen
game-voiceovers = Spiel-Sprachen
game-voiceovers-description = Liste der heruntergeladenen Sprachausgabe für das Spiel. Sie können diese in den Spieleinstellungen auswählen
english = Englisch
japanese = Japanisch
@ -27,7 +27,7 @@ repair-game = Spiel Reparieren
status = Status
game-version = Spiel version
game-version = Spielversion
game-not-installed = nicht installiert
game-predownload-available = Vorab-Download von Spiel-Updates verfügbar: {$old} -> {$new}
@ -35,7 +35,7 @@ game-update-available = Spiel-Update verfügbar: {$old} -> {$new}
game-outdated = Das Spiel ist zu veraltet und kann nicht mehr aktualisiert werden. Letzte Version: {$latest}
player-patch-version = Hauptpatch-Version
player-patch-version-description = Hauptpatch, mit dem du das Spiel unter Linux spielen kannst
player-patch-version-description = Hauptpatch, mit dem Sie das Spiel unter Linux spielen können
xlua-patch-version = zusätzliche Patch-Version
xlua-patch-version-description = Zusätzlicher Patch, der einige Probleme behebt und die Leistung auf Low-End-PCs verbessert
@ -53,16 +53,14 @@ patch-testing-tooltip = Test-Patch ist verfügbar
patch-not-applied-tooltip = Patch ist nicht angewendet
apply-main-patch = Hauptpatch Anwenden
apply-main-patch-description =
Experimentell. Wenn Sie diese Option deaktivieren, können Sie das Spiel ausführen, ohne den Patch anzuwenden.
Dies könnte möglicherweise nicht funktionieren oder erfordert manuelle Änderungen an den Dateien. Verwenden Sie es nur wenn Sie wissen was Sie tun.
apply-main-patch-description = Experimentell. Wenn Sie diese Option deaktivieren, können Sie das Spiel ausführen, ohne den Patch anzuwenden. Dies könnte möglicherweise nicht funktionieren oder erfordert manuelle Änderungen an den Dateien. Verwenden Sie dies nur wenn Sie wissen was Sie tun.
apply-xlua-patch = Zusätzlichen Patch anwenden
ask-superuser-permissions = Superuser-Berechtigungen anfordern
ask-superuser-permissions-description = Launcher benötigt Superuser-Zugriff, um Ihre Hosts-Datei automatisch zu aktualisieren. Dies ist in der Flatpak-Edition nicht erforderlich
wine-tools = Wine tools
wine-tools = Wine-Tools
command-line = Befehlszeile
registry-editor = Registrierungs-Editor
explorer = Explorer

View file

@ -11,7 +11,7 @@ height = Höhe
launcher-folder = Launcher-Ordner
game-folder = Spielordner
config-file = Konfig-Datei
config-file = Konfigurationsdatei
debug-file = Debug-Datei
wish-url = Wünsche öffnen
about = Über
@ -27,15 +27,15 @@ restart = Neustarten
agree = Einverstanden
loading-data = Laden Daten
downloading-background-picture = Hintergrundbild am Herunterladen
updating-components-index = Aktualisiere index der Komponenten
loading-game-version = Lade version des Spiels
loading-patch-status = Lade version des Patch
loading-launcher-state = Lade Launcher status
loading-launcher-state--game = Launcher status am laden: Verifizierung der Spielversion
loading-launcher-state--voice = Launcher status am laden: Verifiziere {$locale} sprache
loading-launcher-state--patch = Launcher status am laden: Verifizierung des installierten Patch
loading-data = Lade Daten
downloading-background-picture = Hintergrundbild wird Herunterladen
updating-components-index = Aktualisiere Index der Komponenten
loading-game-version = Lade Version des Spiels
loading-patch-status = Lade Version des Patchs
loading-launcher-state = Lade Launcher Status
loading-launcher-state--game = Launcher status wird geladen: Verifizierung der Spielversion
loading-launcher-state--voice = Launcher status wird geladen: Verifizierung der {$locale} Sprache
loading-launcher-state--patch = Launcher status wird geladen: Verifizierung des installierten Patchs
checking-free-space = Überprüfe Freien Speicherplatz
@ -43,12 +43,12 @@ downloading = Lade Herunter
unpacking = Entpacken
verifying-files = Verifiziere Dateien
repairing-files = Repariere Dateien
migrating-folders = Migrating folders
applying-hdiff = Applying hdiff patches
removing-outdated = Removing outdated files
migrating-folders = Migrieren der Ordner
applying-hdiff = Anwenden der hdiff-Patches
removing-outdated = Entfernen veralteter Dateien
components-index-updated = Kompontentenverzeichnis würde aktualisiert
components-index-updated = Kompontentenverzeichnis wurde aktualisiert
launch = Starten
@ -61,7 +61,7 @@ update = Updaten
download = Herunterladen
predownload-update = Vorab-Update von Version {$version} herunterladen ({$size})
main-window--patch-unavailable-tooltip = Die Patch-Server sind nicht verfügbar und der Launcher kann den Patch-Status des Spiels nicht überprüfen. Du darfst das Spiel auf eigene Gefahr spielen.
main-window--patch-unavailable-tooltip = Die Patch-Server sind nicht verfügbar und der Launcher kann den Patch-Status des Spiels nicht überprüfen. Sie können das Spiel auf eigene Gefahr spielen.
main-window--patch-outdated-tooltip = Der Patch ist veraltet oder befindet sich in Vorbereitung und kann daher nicht verwendet werden. Kehren Sie später zurück, um den Status zu sehen.
main-window--version-outdated-tooltip = Die Version ist zu veraltet und kann nicht aktualisiert werden

View file

@ -33,6 +33,7 @@ gamescope-description = Gamescope is a tool from Valve that allows for games to
discord-rpc = Discord RPC
discord-rpc-description = Discord RPC allows you to provide Discord the info that you are currently playing the game to let your friends know
icon = Icon
title = Title
description = Description

View file

@ -53,3 +53,8 @@ game-session-update-failed = Failed to update game session
game-session-remove-failed = Failed to remove game session
game-session-set-current-failed = Failed to set current game session
game-session-apply-failed = Failed to apply game session
# Enhancements
discord-rpc-icons-fetch-failed = Failed to fetch Discord RPC icons
discord-rpc-icon-download-failed = Failed to download Discord RPC icon

View file

@ -53,9 +53,7 @@ patch-testing-tooltip = Test patch is available
patch-not-applied-tooltip = Patch is not applied
apply-main-patch = Apply main patch
apply-main-patch-description =
Experimental. Disabling this allows you to run the game without applying the patch.
This may not work, or require manual files modifications. Use if you know what you're doing
apply-main-patch-description = Experimental. Disabling this allows you to run the game without applying the patch. This may not work, or require manual files modifications. Use if you know what you're doing
apply-xlua-patch = Apply xlua patch

View file

@ -33,6 +33,7 @@ gamescope-description = Gamescope es una herramienta de Valve que permite que lo
discord-rpc = RPC de Discord
discord-rpc-description = RPC de Discord permite que Discord muestre públicamente que estás jugando al juego.
icon = Icon
title = Título
description = Descripción

View file

@ -53,3 +53,8 @@ game-session-update-failed = Fallo al actualizar sesión de juego
game-session-remove-failed = Fallo al eliminar sesión de juego
game-session-set-current-failed = Fallo al establecer sesión de juego actual
game-session-apply-failed = Fallo al aplicar sesión de juego
# Enhancements
discord-rpc-icons-fetch-failed = Failed to fetch Discord RPC icons
discord-rpc-icon-download-failed = Failed to download Discord RPC icon

View file

@ -53,9 +53,7 @@ patch-testing-tooltip = Está disponible un parche de prueba
patch-not-applied-tooltip = El parche no está aplicado
apply-main-patch = Aplicar parche principal
apply-main-patch-description =
Experimental. Deshabilitar esta opción te permitirá correr el juego sin aplicar el parche.
Esto podría no funcionar, o requerir modificaciones manuales a los archivos. Úsalo sólo si sabes lo que estás haciendo
apply-main-patch-description = Experimental. Deshabilitar esta opción te permitirá correr el juego sin aplicar el parche. Esto podría no funcionar, o requerir modificaciones manuales a los archivos. Úsalo sólo si sabes lo que estás haciendo
apply-xlua-patch = Aplicar parche Xlua

View file

@ -7,13 +7,13 @@ recommended-only = Versions recommandées uniquement
wine-version = Version de wine
wine-recommended-description = N'afficher que les versions recommandées de wine
wine-options = Wine options
wine-options = Options de wine
wine-use-shared-libraries = Use wine shared libraries
wine-use-shared-libraries-description = Set LD_LIBRARY_PATH variable to load system libraries from selected wine build
wine-use-shared-libraries = Utiliser les bibliothèques partagées de wine
wine-use-shared-libraries-description = Défini la variable LD_LIBRARY_PATH de façon à charger les bibliothèques systèmes de la version de wine choisi
gstreamer-use-shared-libraries = Use gstreamer shared libraries
gstreamer-use-shared-libraries-description = Set GST_PLUGIN_PATH variable to load gstreamer libraries from selected wine build
gstreamer-use-shared-libraries = Utiliser les bibliothèques partagées pour gstreamer
gstreamer-use-shared-libraries-description = Défini la variable GST_PLUGIN_PATH de façon à charger les bibliothèques gstreamer de la version de wine choisi
dxvk-version = Version de DXVK
dxvk-selection-disabled = La sélection de versions DXVK est désactivé par vos préférences de groupe wine

View file

@ -33,6 +33,7 @@ gamescope-description = Gamescope est un outil fait par Valve qui permet aux jeu
discord-rpc = Activité Discord
discord-rpc-description = Permet à Discord d'afficher à vos amis des informations sur le jeu auquel vous jouez actuellement
icon = Icône
title = Titre
description = Description

View file

@ -53,3 +53,8 @@ game-session-update-failed = Imposible de mettre à jour la session de jeu
game-session-remove-failed = Imposible de supprimer la session de jeu
game-session-set-current-failed = Imposible de sélectionner la session de jeu par défaut
game-session-apply-failed = Imposible d'appliquer la session de jeu
# Enhancements
discord-rpc-icons-fetch-failed = Impossible de récupérer les icônes pour le RPC Discord
discord-rpc-icon-download-failed = Impossible de télécharger les icônes pour le RPC Discord

View file

@ -52,10 +52,8 @@ patch-preparation-tooltip = Le patch est en développement
patch-testing-tooltip = Patch de test disponible
patch-not-applied-tooltip = Patch is not applied
apply-main-patch = Apply main patch
apply-main-patch-description =
Experimental. Disabling this allows you to run the game without applying the patch.
This may not work, or require manual files modifications. Use if you know what you're doing
apply-main-patch = Appliquer le patch principal
apply-main-patch-description = Expériment. Désactiver cette option permet de lancer le jeu sans le patch. Il n'est pas garanti que cette option marche, et des modifications manuelles seront potentiellement nécessaires. À n'utiliser que si vous savez ce que vous faites
apply-xlua-patch = Apply xlua patch

View file

@ -0,0 +1,20 @@
components = Komponensek
components-description = A Wine és DXVK verzióid beállításai
selected-version = Kiválasztott verzió
recommended-only = Csak ajánlott
wine-version = Wine verzió
wine-recommended-description = Csak ajánlott wine verziók mutatása
wine-options = Wine beállítások
wine-use-shared-libraries = Wine megosztott könyvtárak használata
wine-use-shared-libraries-description = LD_LIBRARY_PATH változó megadása, ezzel lehet a rendszerkönyvtárakat betölteni a választott wine verzióból
gstreamer-use-shared-libraries = Gstreamer megosztott könyvtárak használata
gstreamer-use-shared-libraries-description = GST_PLUGIN_PATH változó megadása, ezzel lehet a gstreamer könyvtárakat betölteni a választott wine verzióból
dxvk-version = DXVK verzió
dxvk-selection-disabled = DXVK selection is disabled by your wine group preferences
dxvk-recommended-description = Csak ajánlott dxvk verziók mutatása

View file

@ -0,0 +1,63 @@
game-settings-description = Játékbeállítások és fiókmenet beállítása
sandbox-settings-description = Játék futtatása egy 'bubblewrap sandbox'-ban, hasonló ahhoz amit a Flatpak csinál
environment-settings-description = Környezeti változók és játékindítási parancsok megadása
wine = Wine
synchronization = Szinkronizáció
wine-sync-description = Belső wine event-ek szinkronizálására használt
language = Nyelv
wine-lang-description = Wine-on belül használt nyelv. Billentyűkiosztás problémákat megoldhat
system = Rendszer
borderless-window = Kerettelen ablak(borderless)
virtual-desktop = Virtuális asztal
game = Játék
hud = HUD
fsr = FSR
fsr-description = Használatához futtasd a játékot kisebb felbontásban és nyomd meg az Alt+Enter-t. Az FSR a monitorodhoz igazítja minőségvesztés nélkül, így több lehet az FPS.
ultra-quality = Ultra Minőség
quality = Minőség
balanced = Egyensúlyozott
performance = Teljesítmény
gamemode = Gamemode
gamemode-description = Minden folyamat felett fusson a játék ( prioritás minden felett)
gamescope = Gamescope
gamescope-description = A Gamescope-al egy külön Xwayland folyamatban fut a játék. Támogatja az Intel, AMD és Nvidia videókártyákat
discord-rpc = Discord RPC
discord-rpc-description = Kiírja a Discord profilod alá hogy játszol a játékkal
icon = Icon
title = Title
description = Description
fps-unlocker = FPS Unlocker
enabled = Bekapcsolva
fps-unlocker-description = Eltávolítja az fps limitet. Az anti-cheat észreveheti
power-saving = Energiatakarékos
power-saving-description = Fókuszvesztésnél(pl. alt-tab) az FPS limitet 10-re állítja
monitor = Monitor
monitor-description = Ahány monitoron szeretnéd futtatni a játékot
window-mode = Ablak mód
borderless = Keretmentes
popup = Popup
fullscreen = Teljesképernyő
priority = Prioritás
priority-description = Játékfolyamat prioritás
realtime = Legmagasabb
high = Magas
above-normal = Normál felett
normal = Normál
below-normal = Normál alatt
low = Alacsony

View file

@ -0,0 +1,7 @@
environment = Környezet
game-command = Játék parancs
game-command-description = A parancs amivel futtatásra kerül a játék. Példa %command%-ot generál a launcher. Pl.: gamemoderun '%command%'
new-variable = Új változó
name = Név
value = Érték
add = Hozzáadás

View file

@ -0,0 +1,60 @@
launcher-folder-opening-error = Launcher mappa megnyitása sikertelen
game-folder-opening-error = Játék mappa megnyitása sikertelen
config-file-opening-error = Config fájl megnyitása sikertelen
debug-file-opening-error = Debug fájl megnyitása sikertelen
wish-url-search-failed = Nem találtam wish url-t
wish-url-opening-error = Nem tudtam megnyitni a wish url-t
wine-run-error = Nem sikerült a {$executable} futtatása wine-nal
game-launching-failed = Játékindítás sikertelen
failed-get-selected-wine = Kiválasztott wine verzió beszerzése sikertelen
downloading-failed = Sikertelen letöltés
unpacking-failed = Sikertelen kicsomagolás
game-file-repairing-error = Nem sikerült a játékfájlok javítása
integrity-files-getting-error = Integritásfájlok beszerzése sikertelen
background-downloading-failed = Háttérkép letöltése sikertelen
components-index-sync-failed = Failed to sync components index
components-index-verify-failed = Failed to verify components index
config-update-error = Sikertelen config mentés
wine-prefix-update-failed = Sikertelen wine prefix frissítés
dxvk-install-failed = DXVK telepítése sikertelen
voice-package-deletion-error = Hangcsomag törlése sikertelen
game-diff-finding-error = Játék diff megtalálása sikertelen
patch-info-fetching-error = Patch info beszerzése sikertelen
launcher-state-updating-error = Launcherállapot frissítése sikertelen
package-not-available = Ez a csomag nem elérhető: {$package}
wine-download-error = Wine letöltése sikertelen
wine-unpack-errror = Wine kicsomagolás sikertelen
wine-install-failed = Wine telepítés sikertelen
dxvk-download-error = DXVK letöltés sikertelen
dxvk-unpack-error = DXVK kicsomagolás sikertelen
dxvk-apply-error = DXVK alkalmazása sikertelen
downloaded-wine-list-failed = Nem sikerült listázni a letöltött wine verziókat
patch-sync-failed = Patch mappa szinkronizálása sikertelen
patch-state-check-failed = Patch mappa állapota ellenőrzése sikertelen
game-patching-error = Sikertelen játék patchelés
# Sandbox
documentation-url-open-failed = Failed to open documentation URL
# Game
game-session-add-failed = Játékmenet hozzáadása sikertelen
game-session-update-failed = Játékemenet frissítése sikertelen
game-session-remove-failed = Játékmenet eltávolítása sikertelen
game-session-set-current-failed = Jelen játékmenet beállítása sikertelen
game-session-apply-failed = Játékmenet alkalmazása sikertelen
# Enhancements
discord-rpc-icons-fetch-failed = Failed to fetch Discord RPC icons
discord-rpc-icon-download-failed = Failed to download Discord RPC icon

View file

@ -0,0 +1,65 @@
welcome = Üdvözöljük
welcome-page-message =
Hali! Üdvözlünk az An Anime Game Launcher-ben!
Elő kell készítenünk pár dolgot és letölteni pár alapértelmezett komponenst mielőtt futtathatod a játékot
tos-violation-warning = ToS megszegési figyelmeztetés
tos-violation-warning-message =
Ez a launcher egy nem hivatalos eszköz, semmi köze {company-name} és {comapny-alter-name}-hez.
Ez az eszköz arra készült, hogy lehetővé tegye {game-name} használatát Linux-on, és hogy megegyszerűsítse a telepítését és futtatását.
Ezt már létező komponensek felhasználásával teszi, ami egyszerűbbé teszi a felhasználó élményét.
Viszont, pár komponens megszegheti {company-name} Felhasználási Feltételeit(TOS) {game-name}-hez.
Ha használod ezt a launchert, a fiókodat TOS-megszegőként azonosíthatja a {company-name}/{company-alter-name}.
Ha ez megtörténik, mivel megszegi a fiókod a TOS-t, így {company-name}/{company-alter-name} bármit megtehet. Beleértve bannolhat is.
Ha megérted a játék nem hivatalos futtatásának kockázatait, nyomd meg az OK gombot a folytatáshoz.
tos-dialog-title = Are you sure you understand what we want to say?
tos-dialog-message =
1. Don't publish any information about this project
2. Don't abuse it by using some modded clients and so
3. Ask questions exceptionally in our discord or matrix server
dependencies = Dependenciák
missing-dependencies-title = Hiányzik pár dependenciád!
missing-dependencies-message = Telepítened kell pár csomagot mielőtt folytathatod a telepítést
default-paths = Alapértelmezett elérési utak
choose-default-paths = Alapértelmezett elérési utak kiválasztása
show-all-folders = Tudom mit csinálok
show-all-folders-subtitle = Extra elérési út kiválasztási beállítások mutatása. Tedd amit mondok...
runners-folder = Runnerek mappája
dxvks-folder = DXVKs mappa
wine-prefix-folder = Wine prefix mappa
global-game-installation-folder = Global játékverzió mappája
chinese-game-installation-folder = Kínai játékverzió mappája
fps-unlocker-folder = FPS Unlocker mappa
components-index = Components index
patch-folder = Patch mappa
temp-folder = Ideiglenes (temp) mappa
migrate = Migráció
select-voice-packages = Hangcsomagok kiválasztása
download-components = Komponensek letöltése
download-dxvk = DXVK letöltése
apply-dxvk = DXVK alkalmazása
finish = Befejezés
finish-title = Minden kész!
finish-message = Minden alap komponens letöltve. Újraindíthatod a launchert és letöltheted a játékot. Üdv a klubban!

View file

@ -0,0 +1,7 @@
game-sessions = Játékmenetek
active-sessions = Aktív játékmenet
active-session-description = Jelenleg kiválasztott játékmenet. Minden indítás után frissül
update-session = Játékmenet frissítése a jelenlegi wine prefix registry értékekkel
delete-session = Játékmenet eltávolítása

View file

@ -0,0 +1,13 @@
game-resolution = Játékfelbontás
gamescope-resolution = Gamescope felbontás
upscaling = Upscaling
integer-scaling = Integer scaling
integer-scaling-description = Minden kerek számnyi egyező színű pixelt egy négyzet vagy téglalap csoportba rak. Megelőzheti az élességvesztést Full HD - 4K upscalingnél
gamescope-fsr-description = Open-source upscaling technika az AMD-től jobb upscaling minőségért
nis-description = Open source upscaling technika az Nvidia-tól, alternatíva a DLSS-re, minden videókártyán működik. 16
other-settings = Egyéb beállítások
framerate-limit = FPS limit
unfocused-framerate-limit = Fókuszon kívüli FPS limit

View file

@ -0,0 +1,69 @@
appearance = Kinézet
modern = Modern
classic = Klasszikus
update-background = Háttérkép frissítése
update-background-description = Hivatalos launcher háttérkép letöltése. Kikapcsolással használhatsz egyedi képet helyette.
launcher-language = Launcher nyelv
launcher-language-description = Újraindítás után lép életbe
game-edition = Játék kiadás
global = Globális
china = Kínai
game-environment = Játék környezet
game-environment-description = Egyedi lehetőségek érhetőek el vele a játékban, mint például extra fizetési módok
game-voiceovers = Játék hangnyelv
game-voiceovers-description = Letöltött játékhangok listája. Megváltoztathatod a játékbeállításokban
english = Angol
japanese = Japán
korean = Koreai
chinese = Kínai
migrate-installation = Játékmappa migrálása
migrate-installation-description = Megnyit egy ablakot amivel megváltoztathatod a játékmappádat
repair-game = Játék javítása
status = Státusz
game-version = Játék verzió
game-not-installed = nincs telepítve
game-predownload-available = Játékfrissítés előtöltés elérhető: {$old} -> {$new}
game-update-available = Játékfrissítés elérhető: {$old} -> {$new}
game-outdated = A játékverzió túl régi és nem frissíthető. Legfrissebb: {$latest}
player-patch-version = Játékos patch verzió
player-patch-version-description = A fő patch amivel játszhatsz Linuxon
xlua-patch-version = Xlua patch verzió
xlua-patch-version-description = Extra patch ami javít pár problémán és jobb teljesítményt nyújt gyenge gépeken
patch-not-available = nem elérhető
patch-not-available-tooltip = A patch szerverek nem elérhetőek
patch-outdated = elavult ({$current})
patch-outdated-tooltip = A patch elavult: {$current} -> {$latest}
patch-preparation = előkészítés
patch-preparation-tooltip = A patch fejlesztés alatt áll
patch-testing-tooltip = Teszt patch elérhető
patch-not-applied-tooltip = A patch nincs alkalmazva
apply-main-patch = Fő patch alkalmazása
apply-main-patch-description = Kísérleti opció, a kikapcsolásával futtathatod a játékot patch nélkül. Lehet hogy nem fog működni, vagy a fájlokat manuálisan kell szerkesztened, akkor kapcsold ki ha tudod mit csinálsz.
apply-xlua-patch = Xlua patch alkalmazása
ask-superuser-permissions = Superuser engedély kérése
ask-superuser-permissions-description = A Launcher autómatikusan használni fogja hogy frissítse a hosts fájlodat. A Flatpak verzióhoz nem kell
wine-tools = Wine eszközök
command-line = Parancssor
registry-editor = Registry szerksztő
explorer = Explorer
task-manager = Feladatkezelő
configuration = Konfiguráció
debugger = Debugger

View file

@ -0,0 +1,70 @@
custom = Egyéni
none = Semelyik
default = Alap
details = Részletek
options = Beállítások
width = Szélesség
height = Magasság
# Menu items
launcher-folder = Launcher mappa
game-folder = Játék mappa
config-file = Config fájl
debug-file = Debug fájl
wish-url = Wishek megnyitása
about = Részletek
close = Bezárás
save = Mentés
continue = Folytatás
resume = Resume
exit = Kilépés
check = Ellenőrzés
restart = Újraindítás
agree = Agree
loading-data = Adatok betöltése
downloading-background-picture = Háttérkép letöltése
updating-components-index = Updating components index
loading-game-version = Játékverzió betöltése
loading-patch-status = Patch státusz betöltése
loading-launcher-state = Launcher állapot betöltése
loading-launcher-state--game = Launcher állapot betöltése: játékverzió ellenőrzése
loading-launcher-state--voice = Launcher állapot betöltése: {$locale} hangnyelv ellenőrzése
loading-launcher-state--patch = Launcher állapot betöltése: telepített patch ellenőrzése
checking-free-space = Szabad hely ellenőrzése
downloading = Letöltés
unpacking = Kicsomagolás
verifying-files = Fájlok ellenőrzése
repairing-files = Fájlok javítása
migrating-folders = Mappák migrálása
applying-hdiff = Hdiff patchek alkalmazása
removing-outdated = Elavult fájlok törlése
components-index-updated = A komponens index frissítve lett
launch = Indítás
migrate-folders = Mappák migrálása
migrate-folders-tooltip = Játékmappa struktúra frissítése
apply-patch = Patch alkalmazása
download-wine = Wine letöltése
create-prefix = Prefix létrehozása
update = Frissítés
download = Letöltés
predownload-update = {$version} verzió előtöltése ({$size})
main-window--patch-unavailable-tooltip = A patch szerverek nem elérhetőek és a launcher nem tudja ellenőrizni a játék patch státuszát. Saját felelősségre futtathatod a játékot
main-window--patch-outdated-tooltip = A patch jelenleg nem elérhető mert túl elavult, vagy előkészítés alatt áll. Nézz vissza később
main-window--version-outdated-tooltip = Ez a verzió túl elavult és nem lehet frissíteni
preferences = Preferenciák
general = Általános
enhancements = Fejlesztések

View file

@ -0,0 +1,28 @@
sandbox = Sandbox
sandbox-description = A játék futtatása egy elzárt környezetben, így nem férhet hozzá a privát adataidhoz
enable-sandboxing = Sandbox bekapcsolása
enable-sandboxing-description = A játék futtatása egy csak olvasható változatában a root fájlrendszerednek
hide-home-directory = Home mappa elrejtése
hide-home-directory-description = A /home, /var/home/$USER, és $HOME mappák elzárása a játéktól
hostname = Gépnév
additional-arguments = Extra opciók
private-directories = Privát mappák
private-directories-description = Ezek a mappák egy üres virtuális fájlrendszerrel (tmpfs) lesznek helyettesítve, a tartalmuk nem lesz elérhető a sandboxolt játéknak
path = Elérési út
shared-directories = Megosztott mappák
shared-directories-description = Ezek a mappák symlinkelve lesznek a te rendszeredben lévő mappákhoz
original-path = Eredeti elérési út
new-path = Új elérési út a sandboxnak
read-only = Csak olvasás
read-only-description = A játék eltiltása a játékmappába való írástól
symlinks = Symlinkek
symlinks-description = Eredeti elérési hely symlinkelése a sandboxon belüli újhoz

View file

@ -1,5 +1,5 @@
components = Components
components-description = Manage your Wine and DXVK versions
components = Komponen
components-description = Atur versi Wine dan DXVK
selected-version = Versi yang dipilih
recommended-only = Hanya yang direkomendasikan
@ -7,13 +7,13 @@ recommended-only = Hanya yang direkomendasikan
wine-version = Versi wine
wine-recommended-description = Hanya tampilkan versi wine yang direkomendasikan
wine-options = Wine options
wine-options = Opsi wine
wine-use-shared-libraries = Use wine shared libraries
wine-use-shared-libraries-description = Set LD_LIBRARY_PATH variable to load system libraries from selected wine build
wine-use-shared-libraries = Gunakan shared libraries wine
wine-use-shared-libraries-description = Tetapkan variabel LD_LIBRARY_PATH untuk memuat system libraries dari build wine yang dipilih
gstreamer-use-shared-libraries = Use gstreamer shared libraries
gstreamer-use-shared-libraries-description = Set GST_PLUGIN_PATH variable to load gstreamer libraries from selected wine build
gstreamer-use-shared-libraries = Gunakan shared libraries gstreamer
gstreamer-use-shared-libraries-description = Tetapkan variabel GST_PLUGIN_PATH untuk memuat system libraries dari build wine yang dipilih
dxvk-version = Versi DXVK
dxvk-selection-disabled = Pemilihan DXVK dinonaktfikan pada preferensi grup wine Anda

View file

@ -1,6 +1,6 @@
game-settings-description = Manage in-game settings and account session
sandbox-settings-description = Run the game in a bubblewrap sandbox, similar to what Flatpak does
environment-settings-description = Specify environment variables and game launching command
game-settings-description = Atur pengaturan dalam game dan sesi akun
sandbox-settings-description = Jalankan game dalam sandbox bubblewrap seperti yang dilakukan oleh Flatpak
environment-settings-description = Tentukan variable environment dan perintah peluncuran game
wine = Wine
@ -33,6 +33,7 @@ gamescope-description = Gamescope adalah alat dari Valve yang memungkinkan game
discord-rpc = Discord RPC
discord-rpc-description = Discord RPC memungkinkan Anda untuk memberitahu discord informasi bahwa Anda sedang bermain game agar teman-teman Anda tahu
icon = Icon untuk Discord RPC
title = Judul
description = Deskripsi

View file

@ -53,3 +53,8 @@ game-session-update-failed = Gagal memperbarui sesi game
game-session-remove-failed = Gagal menghapus sesi game
game-session-set-current-failed = Gagal menerapkan sesi game saat ini
game-session-apply-failed = Gagal menerapkan sesi game
# Enhancements
discord-rpc-icons-fetch-failed = Gagal mendapatkan icon untuk Discord RPC
discord-rpc-icon-download-failed = Gagal mengunduh icon untuk Discord RPC

View file

@ -52,10 +52,8 @@ patch-preparation-tooltip = Patch masih dalam pengembangan
patch-testing-tooltip = Patch tes tersedia
patch-not-applied-tooltip = Patch tidak diterapkan
apply-main-patch = Apply main patch
apply-main-patch-description =
Experimental. Disabling this allows you to run the game without applying the patch.
This may not work, or require manual files modifications. Use if you know what you're doing
apply-main-patch = Terapkan patch utama
apply-main-patch-description = Eksperimental. Menonaktifkan opsi ini akan menginzinkan Anda menjalankan game tanpa menerapkan patch. Hal ini mungkin tidak bekerja, atau membutuhkan modifikasi file secara manual. Gunakan jika Anda tahu apa yang Anda lakukan
apply-xlua-patch = Terapkan patch xlua

View file

@ -2,7 +2,7 @@ custom = Kustom
none = Kosong
default = Standar
details = Detail
options = Options
options = Opsi
width = Lebar
height = Tinggi

View file

@ -33,6 +33,7 @@ gamescope-description = Gamescope è uno strumento di Valve che permette ai gioc
discord-rpc = RPC di Discord
discord-rpc-description = L'RPC di Discord ti permette di fornire a Discord l'informazione che stai giocando a questo gioco e di farlo sapere ai tuoi amici
icon = Icona
title = Titolo
description = Descrizione

View file

@ -53,3 +53,8 @@ game-session-update-failed = Aggiornamento della sessione di gioco non riuscito
game-session-remove-failed = Rimozione della sessione di gioco non riuscita
game-session-set-current-failed = Impostazione della sessione di gioco attuale non riuscita
game-session-apply-failed = Applicazione della sessione di gioco non riuscita
# Enhancements
discord-rpc-icons-fetch-failed = Acquisizione della lista delle icone RPC di Discord non riuscita
discord-rpc-icon-download-failed = Scaricamento dell'icona RPC di Discord non riuscito

View file

@ -53,9 +53,7 @@ patch-testing-tooltip = La patch di test è disponibile
patch-not-applied-tooltip = La patch non è applicata
apply-main-patch = Applica la patch principale
apply-main-patch-description =
Sperimentale. Disabilitandola ti permette di eseguite il gioco senza applicare la patch.
Ciò potrebbe non funzionare o richiedere modifiche manuali ai file. Usala se sai cosa stai facendo
apply-main-patch-description = Sperimentale. Disabilitandola ti permette di eseguite il gioco senza applicare la patch. Ciò potrebbe non funzionare o richiedere modifiche manuali ai file. Usala se sai cosa stai facendo
apply-xlua-patch = Applica la patch xlua

View file

@ -0,0 +1,19 @@
components = コンポーネント
components-description = WineとDXVKのバージョンを管理する。
selected-version = バージョン選択
recommended-only = 推奨版のみを使う。
wine-version = Wineのバージョン
wine-recommended-description = 推奨するWineバージョンのみ
wine-options = Wineの設定
wine-use-shared-libraries = ワインの共有ライブラリを使う
wine-use-shared-libraries-description = 選択した wine ビルドからシステムライブラリをロードするように LD_LIBRARY_PATH を設定します
gstreamer-use-shared-libraries = gstreamerの共有ライブラリを使用する。
gstreamer-use-shared-libraries-description = 選択した wine ビルドからgstreamerライブラリをロードするように GST_PLUGIN_PATH を設定します
dxvk-version = DXVK バージョン
dxvk-selection-disabled = DXVK の選択は、ワインのグループ設定によって無効化されています。
dxvk-recommended-description = DXVK の推奨バージョンのみ表示する。

View file

@ -0,0 +1,62 @@
game-settings-description = ゲーム内設定と、アカウントセッションを管理します。
sandbox-settings-description = Flatpakと同様にバブルサンドボックスでゲームを実行します。
environment-settings-description = 環境変数と、ゲーム起動コマンド
wine = Wine
synchronization = 同期
wine-sync-description = Wine内部のイベントを同期するためのものです。
language =言語
wine-lang-description = wine環境で使用される言語です。キーボードの問題を修正できます。
system = システム
borderless-window = ボーダーレスウィンドウ
virtual-desktop = 仮想デスクトップ
game = ゲーム
hud = HUD
fsr = FSR
fsr-description = ゲームをモニターの解像度に合わせて拡大します。ゲーム内で、Alt+Enterをする必要があります。
ultra-quality = ハイクオリティ
quality = クオリティ
balanced = バランス
performance = パフォーマンス
gamemode = ゲームモード
gamemode-description = 他のプロセスよりもゲームを優先する。
gamescope = ゲームスコープ
gamescope-description = これは、Xwaylandセッションでインスタンスを分離して実行するためのValveが開発したツールです。AMD、Intel、NvidiaのGPUをサポートします。
discord-rpc = Discord RPC
discord-rpc-description = これを有効にすると、現在あなたがゲームをプレイしているということをディスコードのフレンドに知らせることができます。
icon = Discord RPC用のアイコン
title = タイトル
description = 説明
fps-unlocker = FPS上限解除
enabled = 機能を有効にする
fps-unlocker-description = ゲーム内のメモリを書き換えてFPSの上限を解除します。アンチチートによって検知されることはありません。
power-saving = 省電力
power-saving-description = タブアウトなどをしたときに、自動的にFPS制限をかけることで省電力化します。
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 used to launch the game. Placeholder %command% is generated automatically by the launcher. For example: gamemoderun '%command%'
new-variable = 新しい変数
name = 名前
value = 値
add = 追加

View file

@ -0,0 +1,60 @@
launcher-folder-opening-error = ランチャーフォルダを開くのに失敗しました。
game-folder-opening-error = ゲームフォルダを開くのに失敗しました
config-file-opening-error = 設定ファイルを開くのに失敗しました
debug-file-opening-error = デバッグファイルを開くのに失敗しました
wish-url-search-failed = 祈願履歴がありません
wish-url-opening-error = 祈願履歴ページを開けませんでした。
wine-run-error = wineを利用して{$executable} を実行するのに失敗しました。
game-launching-failed = ゲームの起動に失敗しました
failed-get-selected-wine = 選択されたwineバージョンを入手できませんでした。
downloading-failed = ダウンロードに失敗。
unpacking-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 = ゲームのパッチに失敗しました。
# Sandbox
documentation-url-open-failed = ドキュメントページを開けませんでした。
# 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,64 @@
welcome = ようこそ
welcome-page-message =
やぁAn Anime Game Launcherへようこそ
ゲームを実行する前に、いくつかのコンポーネントをダウンロードする必要があります!
tos-violation-warning = 利用規約違反
tos-violation-warning-message =
このランチャーは非公式なツールです。{company-name} や {company-alter-name} とは一切関係がございません.
このツールは {game-name} をLinux上でプレイするために作成されました。また、手間をかけずに {game-name} をLinux上にインストール、そして実行するように設計されています。
これは、既存のコンポーネントを使用し、ユーザーのインストールをシンプルにすることによって実現されます。
ただし、このプログラムで使う一部のコンポーネントは {company-name} や {game-name} の利用規約に違反している可能性があります。
このランチャーを使うにあたって、あなたのゲームアカウントは利用規約違反として、 {company-name}/{company-alter-name} に認識される可能性があります。
その場合、あなたのアカウントは利用規約に従わないため、 {company-name}/{company-alter-name} はBANを含め、何かしらの処分を行う可能性があります。
このリスクを理解した場合、OKボタンを押して続行してください。
tos-dialog-title = 私達が伝えたいことを理解しましたか?
tos-dialog-message =
1. このプロジェクトに関することを公にしないでください。
2. 改造したクライアントなどを利用して悪用しないでください。
3. 例外的に、DiscordやMatrixサーバーで質問してください。
dependencies = 依存関係
missing-dependencies-title = いくつかの依存関係を満たしていません。
missing-dependencies-message = あなたはいくつかのパッケージをインストールする必要があります。その後システムを再起動して続行してください。
default-paths = デフォルトのパス
choose-default-paths = デフォルトのパスを選択する
show-all-folders = すべてのフォルダを表示する。
show-all-folders-subtitle = 追加の設定を表示します。
runners-folder = ランナーフォルダ
dxvks-folder = DXVKs フォルダ
wine-prefix-folder = Wine プレフィックスフォルダ
global-game-installation-folder = グローバル版のインストールフォルダー
chinese-game-installation-folder = 中国版のインストールフォルダー
fps-unlocker-folder = FPSアンロッカーフォルダー
components-index = コンポーネントインデックス
patch-folder = パッチフォルダー
temp-folder = 一時的なフォルダ
migrate = Migrate
select-voice-packages = ボイスパッケージを選択してください。
download-components = コンポーネントをダウンロード
download-dxvk = DXVKをダウンロード
apply-dxvk = DXVKを適用
finish = 完了
finish-title = すべて完了しました。
finish-message = 基本的なコンポーネントのダウンロードが終了しました。ランチャーを再起動することで、ゲームのダウンロードを開始できます。私達のクラブへようこそ!

View file

@ -0,0 +1,6 @@
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 = Turns each pixel into a square or rectangular group of integer number of same-color pixels. Prevents sharpness loss when scaling Full HD to 4K
gamescope-fsr-description = An open-source upscaling technique developed by AMD for better upscaling quality
nis-description = An open source upscaling technique developed by Nvidia as a cross-vendor, low-overhead alternative to their proprietary DLSS solution, meaning it works on AMD and Intel GPUs as well as Nvidia GPUs
other-settings = その他の設定
framerate-limit = FPS制限
unfocused-framerate-limit = 非フォーカス時の最大FPS

View file

@ -0,0 +1,69 @@
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でプレイするためのメインのパッチです。
xlua-patch-version = Xlua のパッチバージョン
xlua-patch-version-description = これは追加のパッチで、低スペックなPCのパフォーマンスの改善や、いくつかの細かい問題点を修正できます。
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 = 実験的です。これを無効にするとパッチ無しでゲームを起動することができます。これが機能しない場合、手動でパッチを適用する必要があります。これが何を意味するのかを理解できない人は無効にするべきではないでしょう。
apply-xlua-patch = xluaパッチを適用する
ask-superuser-permissions = スーパーユーザーを尋ねる。
ask-superuser-permissions-description = あなたのホストのファイルを自動更新するために、 これらを利用します。flatpak版では必要ありません。
wine-tools = ワインツール
command-line = コマンドライン
registry-editor = レジストリエディタ
explorer = エクスプローラー
task-manager = タスクマネージャー
configuration = 構成
debugger = デバッガー

View file

@ -0,0 +1,70 @@
custom = カスタム
none = None
default = デフォルト
details = 詳細
options = オプション
width = 幅
height = 高さ
# Menu items
launcher-folder = ランチャーフォルダ
game-folder = ゲームフォルダ
config-file = 設定ファイル
debug-file = デバッグファイル
wish-url = 祈願履歴を開く
about = "An anime Game launcher"について
close = 閉じる
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 = パッチを適用する
download-wine = ワインをダウンロード
create-prefix = プレフィックスを作成
update = 更新
download = ダウンロード
predownload-update = {$version} の早期アップデート({$size})
main-window--patch-unavailable-tooltip = パッチサーバーが利用できないため、パッチの状態を確認することができません。リスクを理解した上で実行することができます。
main-window--patch-outdated-tooltip = パッチは期限切れか準備中のため利用できません。しばらく立ってからパッチステータスを確認してください。
main-window--version-outdated-tooltip = バージョンが古すぎるため、更新できませんでした。
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 = ホスト名
additional-arguments = 追加の引数
private-directories = プライベートディレクトリ
private-directories-description = これらのファイルは仮想のファイルシステムに置き換えれれます (tmpfs) 。もともとあったコンテンツは利用できなくなります。
path = パス
shared-directories = 共有ディレクトリ
shared-directories-description = これらのディレクトリはあなたのホストPCにシンボリックされます。
original-path = オリジナルファイルパス
new-path = 新しいパッチ
read-only = 読み出し専用
read-only-description = ゲームはこれらのディレクトリへの書き込みを禁止します。
symlinks = シンボリック
symlinks-description = サンドボックス内の元のパスを新しいパスにシンボリックリンクします。

View file

@ -33,6 +33,7 @@ gamescope-description = Программа от Valve, позволяющая з
discord-rpc = Discord RPC
discord-rpc-description = Discord RPC позволяет вам предоставлять Discord информацию об игре, в которую вы сейчас играете
icon = Иконка
title = Заголовок
description = Описание

View file

@ -53,3 +53,8 @@ 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

@ -53,9 +53,7 @@ patch-testing-tooltip = Доступна тестовая версия патч
patch-not-applied-tooltip = Патч не применен
apply-main-patch = Применять основной патч
apply-main-patch-description =
Экспериментально. Отключение опции позволяет запускать игру без применения патча.
Это может не работать или требовать ручного изменения файлов. Используйте если знаете что делаете
apply-main-patch-description = Экспериментально. Отключение опции позволяет запускать игру без применения патча. Это может не работать или требовать ручного изменения файлов. Используйте если знаете что делаете
apply-xlua-patch = Применять патч xlua

View file

@ -33,6 +33,7 @@ gamescope-description = Gamescope, oyunları izole edilmiş bir Xwayland içinde
discord-rpc = Discord RPC
discord-rpc-description = Discord RPC, Discord'a şu anda oyun oynadığınızı bildirmenizi sağlar. Bu sayede arkadaşlarınıza şu anda oyun oynadığınızı gösterebilirsiniz
icon = İkon
title = Başlık
description = Açıklama

View file

@ -53,3 +53,8 @@ game-session-update-failed = Oyun oturumu güncellenemedi
game-session-remove-failed = Oyun oturumu kaldırılamadı
game-session-set-current-failed = Oyun oturumu seçilemedi
game-session-apply-failed = Oyun oturumu uygulanamadı
# Enhancements
discord-rpc-icons-fetch-failed = Discord RPC ikonları alınamadı
discord-rpc-icon-download-failed = Discord RPC ikonları indirilemedi

View file

@ -53,9 +53,7 @@ patch-testing-tooltip = Test yaması mevcut
patch-not-applied-tooltip = Yama uygulanmamış
apply-main-patch = Ana yamayı uygula
apply-main-patch-description =
Deneysel. Bunu devre dışı bırakmak yamayı uygulamadan oyunu çalıştırmanızı sağlar.
Bu çalışmayabilir, ya da elle dosyaları değiştirmeyi gerektirebilir. Ne yaptığınızı biliyorsanız kullanın.
apply-main-patch-description = Deneysel. Bunu devre dışı bırakmak yamayı uygulamadan oyunu çalıştırmanızı sağlar. Bu çalışmayabilir, ya da elle dosyaları değiştirmeyi gerektirebilir. Ne yaptığınızı biliyorsanız kullanın.
apply-xlua-patch = Xlua yamasını uygula

View file

@ -33,6 +33,7 @@ gamescope-description = Gamescope 是 Valve 开发的工具,可以让游戏运
discord-rpc = Discord RPC
discord-rpc-description = Discord RPC 可以设置 Discord 状态,让你的好友知道你正在玩游戏
icon = Icon
title = 标题
description = 描述

View file

@ -53,3 +53,8 @@ game-session-update-failed = Failed to update game session
game-session-remove-failed = Failed to remove game session
game-session-set-current-failed = Failed to set current game session
game-session-apply-failed = Failed to apply game session
# Enhancements
discord-rpc-icons-fetch-failed = Failed to fetch Discord RPC icons
discord-rpc-icon-download-failed = Failed to download Discord RPC icon

View file

@ -53,9 +53,7 @@ patch-testing-tooltip = 有测试版补丁可用
patch-not-applied-tooltip = 补丁未应用
apply-main-patch = Apply main patch
apply-main-patch-description =
Experimental. Disabling this allows you to run the game without applying the patch.
This may not work, or require manual files modifications. Use if you know what you're doing
apply-main-patch-description = Experimental. Disabling this allows you to run the game without applying the patch. This may not work, or require manual files modifications. Use if you know what you're doing
apply-xlua-patch = 应用 xLua 补丁

View file

@ -20,6 +20,8 @@ pub const SUPPORTED_LANGUAGES: &[LanguageIdentifier] = &[
langid!("it-it"),
langid!("id-id"),
langid!("zh-cn"),
langid!("ja-jp"),
langid!("hu-hu")
];
static mut LANG: LanguageIdentifier = langid!("en-us");
@ -51,12 +53,19 @@ pub fn get_lang() -> LanguageIdentifier {
/// - `LC_MESSAGES`
/// - `LANG`
pub fn get_default_lang() -> LanguageIdentifier {
let lang = std::env::var("LC_ALL")
let current = std::env::var("LC_ALL")
.unwrap_or_else(|_| std::env::var("LC_MESSAGES")
.unwrap_or_else(|_| std::env::var("LANG")
.unwrap_or_else(|_| String::from("en_US.UTF-8"))));
.unwrap_or_else(|_| String::from("en_us"))))
.to_ascii_lowercase();
lang.parse().unwrap_or_else(|_| langid!("en-us"))
for lang in SUPPORTED_LANGUAGES {
if current.starts_with(lang.language.as_str()) {
return lang.clone();
}
}
get_lang()
}
pub fn format_lang(lang: &LanguageIdentifier) -> String {

View file

@ -4,7 +4,7 @@ use anime_launcher_sdk::config::ConfigExt;
use anime_launcher_sdk::genshin::config::{Config, Schema};
use anime_launcher_sdk::genshin::states::LauncherState;
use anime_launcher_sdk::genshin::consts::launcher_dir;
use anime_launcher_sdk::genshin::consts::*;
use anime_launcher_sdk::anime_game_core::prelude::*;
use anime_launcher_sdk::anime_game_core::genshin::prelude::*;
@ -46,11 +46,14 @@ lazy_static::lazy_static! {
/// Path to launcher folder. Standard is `$HOME/.local/share/anime-game-launcher`
pub static ref LAUNCHER_FOLDER: PathBuf = launcher_dir().expect("Failed to get launcher folder");
/// Path to launcher's cache folder. Standard is `$HOME/.cache/anime-game-launcher`
pub static ref CACHE_FOLDER: PathBuf = cache_dir().expect("Failed to get launcher's cache folder");
/// Path to `debug.log` file. Standard is `$HOME/.local/share/anime-game-launcher/debug.log`
pub static ref DEBUG_FILE: PathBuf = LAUNCHER_FOLDER.join("debug.log");
/// Path to `background` file. Standard is `$HOME/.local/share/anime-game-launcher/background`
pub static ref BACKGROUND_FILE: PathBuf = LAUNCHER_FOLDER.join("background");
/// Path to `background` file. Standard is `$HOME/.cache/anime-game-launcher/background`
pub static ref BACKGROUND_FILE: PathBuf = CACHE_FOLDER.join("background");
/// Path to `.keep-background` file. Used to mark launcher that it shouldn't update background picture
///
@ -72,6 +75,7 @@ fn main() {
std::fs::write(FIRST_RUN_FILE.as_path(), "").expect("Failed to create .first-run file");
// Set initial launcher language based on system language
// CONFIG is initialized lazily so it will contain following changes as well
let mut config = Config::get().expect("Failed to get config");
config.launcher.language = i18n::format_lang(&i18n::get_default_lang());

View file

@ -46,16 +46,31 @@ impl SimpleComponent for AboutDialog {
"Nikita Podvirnyy https://github.com/krypt0nn"
],
add_credit_section: (Some("Patch developer"), &[
"@Krock https://notabug.org/Krock/dawn"
// Took patch credits from the CREDITS.md;
// If you want to change your name, link, or have any other questions - contact me
add_credit_section: (Some("Patch credits"), &[
"@Krock https://notabug.org/Krock",
"@y0soro https://notabug.org/y0soro",
"@3Shain https://notabug.org/3Shain",
"@timbuntu https://www.playonlinux.com/de/profil-95714.html",
"@geearf2",
"@SeppNel https://www.playonlinux.com/en/profil-95643.html",
"@0x90 https://www.playonlinux.com/en/profil-96196.html",
"@Th1nkCh3ck https://notabug.org/Th1nkCh3ck",
"@humanik12",
"@Makksim https://notabug.org/Makksim",
"@Kowalski https://notabug.org/Kowalski",
"@WerWolv",
"@Various"
]),
add_credit_section: (Some("An Anime Team"), &[
"Nikita Podvirnyy https://github.com/krypt0nn",
"@Marie https://github.com/Mar0xy",
"@lane https://github.com/laurinneff",
"@jiro-too https://github.com/jiro-too",
"@cybik https://github.com/cybik",
"Marie Piontek https://github.com/Mar0xy",
"Luna Neff https://github.com/lunaneff",
"Renaud Lepage https://github.com/cybik",
"Soham Nandy https://github.com/natimerry",
"@mkrsym1 https://github.com/mkrsym1"
]),
@ -65,14 +80,16 @@ impl SimpleComponent for AboutDialog {
set_translator_credits: &[
"Русский, English — Nikita Podvirnyy https://github.com/krypt0nn",
"Deutsch — @Marie https://github.com/Mar0xy",
"Español — Lautaro Garavano https://github.com/Rattlehead15",
"Deutsch — Marie Piontek https://github.com/Mar0xy",
"Français — @zeGolem https://github.com/zeGolem",
"Español — Lautaro Garavano https://github.com/Rattlehead15",
"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"
"Italiano — @QuazarOmega https://github.com/quazar-omega",
"Indonesia — @yumekarisu https://github.com/yumekarisu",
"简体中文 — Caibin Chen https://github.com/tigersoldier",
"日本語 — @zozonteq https://github.com/zozonteq",
// Hungarian?
].join("\n"),
set_debug_info: &[
@ -90,45 +107,35 @@ impl SimpleComponent for AboutDialog {
"<p>Added</p>",
"<ul>",
"<li>Added Italian</li>",
"<li>Added Indonesian</li>",
"<li>Added dynamic main button icon switching</li>",
"<li>Set button label as \"Resume\" when the diff is part downloaded</li>",
"<li>Added options to use wine / gstreamer shared libraries from selected wine build. These options will configure `LD_LIBRARY_PATH` and `GST_PLUGIN_PATH` environment variables</li>",
"<li>Added setting of `LC_ALL` in wine lang setting</li>",
"<li>Added `LAUNCHER_REQUESTS_TIMEOUT` environment variable</li>",
"<li>Added option to disable main patch applying</li>",
"<li>Added Discord RPC icon selection</li>",
"<li>Added Japanese</li>",
"<li>Added Hungarian</li>",
"</ul>",
"<p>Fixed</p>",
"<ul>",
"<li>Fixed session applying on each launcher start</li>",
"<li>Fixed predownload button ui</li>",
"<li>Fixed proton builds integration with sandbox</li>",
"<li>Fixed compatibility between sessions manager and sandbox</li>",
"<li>Fixed sandboxing of inexisting folders</li>",
"<li>Fixed progress bar style after running game repairer</li>",
"<li>Fixed repair button functionality</li>",
"<li>Fixed default launcher language selection at the first start</li>",
"<li>Fixed some installer updates reporting (including \"checking free space\")</li>",
"</ul>",
"<p>Changed</p>",
"<ul>",
"<li>Apply selected session before launching the game. This will properly save your game session when you switch between wine prefixes</li>",
"<li>Redesigned main button</li>",
"<li>Used `whatadistro` to identify recommended package manager in the first run window</li>",
"<li>Moved a lot of settings to separate page</li>",
"<li>Set fsr quality mode in enhancements settings instead of strength</li>",
"<li>Updated fps unlocker data</li>",
"<li>Made temporary workaround to the game API changes</li>",
"<li>Increased default requests timeout to 8 seconds</li>",
"<li>Updated minreq to support `http_proxy`-like variables</li>",
"<li>Disabled xlua patch applying by default</li>",
"<li>Reworked game sessions selection</li>",
"<li>Updated Indonesian</li>",
"<li>Updated French</li>",
"<li>Made initial tasks async which has decreased startup time</li>",
"<li>Updated fps unlocker to 2.1.1</li>",
"</ul>",
"<p>Removed</p>",
"<ul>",
"<li>Removed Futex2 wine sync option</li>",
"<li>Removed 3.7.0 workaround</li>",
"<li>Removed patch mirror migration</li>",
"</ul>",
].join("\n"),

View file

@ -1,9 +1,12 @@
use std::path::PathBuf;
use relm4::prelude::*;
use relm4::component::*;
use adw::prelude::*;
use std::path::PathBuf;
use super::ComponentsListMsg;
use super::ComponentVersionMsg;
pub struct ComponentGroup {
pub title: String,
@ -13,7 +16,7 @@ pub struct ComponentGroup {
}
#[derive(Debug)]
pub enum AppMsg {
pub enum ComponentGroupMsg {
ShowRecommendedOnly(bool),
CallOnDownloaded,
CallOnDeleted
@ -22,8 +25,8 @@ pub enum AppMsg {
#[relm4::component(async, pub)]
impl SimpleAsyncComponent for ComponentGroup {
type Init = (super::ComponentsListGroup, PathBuf);
type Input = AppMsg;
type Output = super::list::AppMsg;
type Input = ComponentGroupMsg;
type Output = super::list::ComponentsListMsg;
view! {
group = adw::ExpanderRow {
@ -61,23 +64,23 @@ impl SimpleAsyncComponent for ComponentGroup {
async fn update(&mut self, msg: Self::Input, sender: AsyncComponentSender<Self>) {
match msg {
AppMsg::ShowRecommendedOnly(state) => {
ComponentGroupMsg::ShowRecommendedOnly(state) => {
self.show_recommended_only = state;
// todo
for version in &self.versions {
version.sender().send(super::version::AppMsg::ShowRecommendedOnly(state)).unwrap();
version.sender().send(ComponentVersionMsg::ShowRecommendedOnly(state)).unwrap();
}
}
#[allow(unused_must_use)]
AppMsg::CallOnDownloaded => {
sender.output(super::list::AppMsg::CallOnDownloaded);
ComponentGroupMsg::CallOnDownloaded => {
sender.output(ComponentsListMsg::CallOnDownloaded);
}
#[allow(unused_must_use)]
AppMsg::CallOnDeleted => {
sender.output(super::list::AppMsg::CallOnDeleted);
ComponentGroupMsg::CallOnDeleted => {
sender.output(ComponentsListMsg::CallOnDeleted);
}
}
}

View file

@ -3,6 +3,8 @@ use relm4::component::*;
use adw::prelude::*;
use super::ComponentGroupMsg;
#[derive(Debug, Clone)]
pub struct ComponentsListInit<T> {
pub pattern: super::ComponentsListPattern,
@ -18,7 +20,7 @@ pub struct ComponentsList<T> {
}
#[derive(Debug)]
pub enum AppMsg {
pub enum ComponentsListMsg {
ShowRecommendedOnly(bool),
CallOnDownloaded,
CallOnDeleted
@ -27,7 +29,7 @@ pub enum AppMsg {
#[relm4::component(async, pub)]
impl<T: std::fmt::Debug + Clone + 'static> SimpleAsyncComponent for ComponentsList<T> {
type Init = ComponentsListInit<T>;
type Input = AppMsg;
type Input = ComponentsListMsg;
type Output = T;
view! {
@ -66,22 +68,22 @@ impl<T: std::fmt::Debug + Clone + 'static> SimpleAsyncComponent for ComponentsLi
async fn update(&mut self, msg: Self::Input, sender: AsyncComponentSender<Self>) {
match msg {
AppMsg::ShowRecommendedOnly(state) => {
ComponentsListMsg::ShowRecommendedOnly(state) => {
self.show_recommended_only = state;
// todo
for group in &self.groups {
group.sender().send(super::group::AppMsg::ShowRecommendedOnly(state)).unwrap();
group.sender().send(ComponentGroupMsg::ShowRecommendedOnly(state)).unwrap();
}
}
#[allow(unused_must_use)]
AppMsg::CallOnDownloaded => if let Some(on_downloaded) = &self.init.on_downloaded {
ComponentsListMsg::CallOnDownloaded => if let Some(on_downloaded) = &self.init.on_downloaded {
sender.output(on_downloaded.to_owned());
}
#[allow(unused_must_use)]
AppMsg::CallOnDeleted => if let Some(on_deleted) = &self.init.on_deleted {
ComponentsListMsg::CallOnDeleted => if let Some(on_deleted) = &self.init.on_deleted {
sender.output(on_deleted.to_owned());
}
}

View file

@ -1,3 +1,5 @@
use std::path::PathBuf;
pub mod list;
pub mod group;
pub mod version;
@ -10,8 +12,6 @@ pub use progress_bar::*;
use anime_launcher_sdk::components::*;
use std::path::PathBuf;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ComponentsListPattern {
pub download_folder: PathBuf,
@ -49,6 +49,7 @@ pub struct ComponentsListVersion {
pub name: String,
pub title: String,
pub uri: String,
pub format: Option<String>,
pub recommended: bool
}
@ -63,7 +64,8 @@ impl From<wine::Version> for ComponentsListVersion {
name: version.name,
title: version.title,
uri: version.uri
uri: version.uri,
format: version.format
}
}
}
@ -79,7 +81,8 @@ impl From<dxvk::Version> for ComponentsListVersion {
name: version.name,
title: version.title,
uri: version.uri
uri: version.uri,
format: version.format
}
}
}

View file

@ -132,7 +132,9 @@ impl SimpleAsyncComponent for ProgressBar {
ProgressBarMsg::UpdateFromState(state) => {
match state {
DiffUpdate::InstallerUpdate(InstallerUpdate::CheckingFreeSpace(_)) => self.caption = Some(tr("checking-free-space")),
DiffUpdate::CheckingFreeSpace(_) |
DiffUpdate::InstallerUpdate(InstallerUpdate::CheckingFreeSpace(_)) => self.caption = Some(tr("checking-free-space")),
DiffUpdate::InstallerUpdate(InstallerUpdate::DownloadingStarted(_)) => self.caption = Some(tr("downloading")),
DiffUpdate::InstallerUpdate(InstallerUpdate::UnpackingStarted(_)) => self.caption = Some(tr("unpacking")),

View file

@ -1,3 +1,5 @@
use std::path::PathBuf;
use relm4::prelude::*;
use relm4::component::*;
@ -12,8 +14,7 @@ use anime_launcher_sdk::anime_game_core::genshin::prelude::*;
use anime_launcher_sdk::config::ConfigExt;
use anime_launcher_sdk::genshin::config::Config;
use std::path::PathBuf;
use super::ComponentGroupMsg;
use super::progress_bar::ProgressBarMsg;
#[derive(Debug, Clone, PartialEq, Eq)]
@ -30,6 +31,7 @@ pub struct ComponentVersion {
pub download_uri: String,
pub download_folder: PathBuf,
pub download_filename: Option<String>,
pub show_recommended_only: bool,
pub state: VersionState,
@ -38,7 +40,7 @@ pub struct ComponentVersion {
}
#[derive(Debug)]
pub enum AppMsg {
pub enum ComponentVersionMsg {
ShowRecommendedOnly(bool),
PerformAction,
SetState(VersionState)
@ -47,8 +49,8 @@ pub enum AppMsg {
#[relm4::component(async, pub)]
impl SimpleAsyncComponent for ComponentVersion {
type Init = (super::ComponentsListVersion, PathBuf);
type Input = AppMsg;
type Output = super::group::AppMsg;
type Input = ComponentVersionMsg;
type Output = ComponentGroupMsg;
view! {
row = adw::ActionRow {
@ -72,7 +74,7 @@ impl SimpleAsyncComponent for ComponentVersion {
#[watch]
set_visible: model.state != VersionState::Downloading,
connect_clicked => AppMsg::PerformAction
connect_clicked => ComponentVersionMsg::PerformAction
}
}
}
@ -83,12 +85,13 @@ impl SimpleAsyncComponent for ComponentVersion {
_sender: AsyncComponentSender<Self>,
) -> AsyncComponentParts<Self> {
let mut model = ComponentVersion {
name: init.0.name,
name: init.0.name.clone(),
title: init.0.title,
recommended: init.0.recommended,
download_uri: init.0.uri,
download_folder: init.1,
download_filename: init.0.format.map(|format| format!("{}.{format}", init.0.name)),
show_recommended_only: true,
state: VersionState::NotDownloaded,
@ -122,9 +125,9 @@ impl SimpleAsyncComponent for ComponentVersion {
async fn update(&mut self, msg: Self::Input, sender: AsyncComponentSender<Self>) {
match msg {
AppMsg::ShowRecommendedOnly(state) => self.show_recommended_only = state,
ComponentVersionMsg::ShowRecommendedOnly(state) => self.show_recommended_only = state,
AppMsg::PerformAction => {
ComponentVersionMsg::PerformAction => {
match self.state {
VersionState::Downloaded => {
let path = self.download_folder.join(&self.name);
@ -140,7 +143,7 @@ impl SimpleAsyncComponent for ComponentVersion {
self.state = VersionState::NotDownloaded;
#[allow(unused_must_use)] {
sender.output(super::group::AppMsg::CallOnDeleted);
sender.output(ComponentGroupMsg::CallOnDeleted);
}
}
@ -151,6 +154,10 @@ impl SimpleAsyncComponent for ComponentVersion {
.expect("Failed to create installer instance for this version")
.with_temp_folder(config.launcher.temp.unwrap_or_else(std::env::temp_dir));
if let Some(filename) = &self.download_filename {
installer = installer.with_filename(filename.to_owned());
}
self.state = VersionState::Downloading;
let progress_bar_sender = self.progress_bar.sender().clone();
@ -168,12 +175,12 @@ impl SimpleAsyncComponent for ComponentVersion {
progress_bar_sender.send(ProgressBarMsg::SetVisible(false));
if let InstallerUpdate::UnpackingFinished = &state {
sender.input(AppMsg::SetState(VersionState::Downloaded));
sender.output(super::group::AppMsg::CallOnDownloaded);
sender.input(ComponentVersionMsg::SetState(VersionState::Downloaded));
sender.output(ComponentGroupMsg::CallOnDownloaded);
}
else {
sender.input(AppMsg::SetState(VersionState::NotDownloaded));
sender.input(ComponentVersionMsg::SetState(VersionState::NotDownloaded));
}
},
@ -190,7 +197,7 @@ impl SimpleAsyncComponent for ComponentVersion {
}
}
AppMsg::SetState(state) => self.state = state
ComponentVersionMsg::SetState(state) => self.state = state
}
}
}

View file

@ -1,15 +1,16 @@
use std::path::PathBuf;
use relm4::prelude::*;
use relm4::component::*;
use adw::prelude::*;
use std::path::PathBuf;
use crate::*;
use crate::i18n::*;
use super::main::*;
use crate::ui::components::progress_bar::*;
use super::main::*;
pub struct DefaultPathsApp {
progress_bar: AsyncController<ProgressBar>,

View file

@ -6,6 +6,7 @@ use adw::prelude::*;
use anime_launcher_sdk::is_available;
use crate::i18n::*;
use super::main::FirstRunAppMsg;
pub struct DependenciesApp {

View file

@ -1,3 +1,5 @@
use std::path::PathBuf;
use relm4::prelude::*;
use relm4::component::*;
@ -7,14 +9,13 @@ use anime_launcher_sdk::anime_game_core::prelude::*;
use anime_launcher_sdk::wincompatlib::prelude::*;
use anime_launcher_sdk::components::*;
use anime_launcher_sdk::components::wine::WincompatlibWine;
use anime_launcher_sdk::components::wine::UnifiedWine;
use anime_launcher_sdk::config::ConfigExt;
use anime_launcher_sdk::genshin::config::Config;
use std::path::PathBuf;
use super::main::FirstRunAppMsg;
use crate::ui::components::*;
use crate::i18n::*;
use crate::*;
@ -435,6 +436,8 @@ impl SimpleAsyncComponent for DownloadComponentsApp {
}
}
// TODO: perhaps I could re-use main/create_prefix.rs here?
#[allow(unused_must_use)]
DownloadComponentsAppMsg::CreatePrefix => {
self.downloading_wine = Some(true);
@ -453,7 +456,7 @@ impl SimpleAsyncComponent for DownloadComponentsApp {
.with_arch(WineArch::Win64);
std::thread::spawn(move || {
match wine.update_prefix::<&str>(None) {
match wine.init_prefix(None::<&str>) {
// Download DXVK
Ok(_) => sender.input(DownloadComponentsAppMsg::DownloadDXVK),
@ -576,7 +579,7 @@ impl SimpleAsyncComponent for DownloadComponentsApp {
..InstallParams::default()
};
let WincompatlibWine::Default(wine) = wine else {
let UnifiedWine::Default(wine) = wine else {
sender.input(DownloadComponentsAppMsg::Continue);
return;

View file

@ -4,6 +4,7 @@ use relm4::component::*;
use adw::prelude::*;
use crate::i18n::*;
use super::main::*;
pub struct FinishApp;

View file

@ -7,6 +7,7 @@ use anime_launcher_sdk::config::ConfigExt;
use anime_launcher_sdk::genshin::config::Config;
use crate::i18n::*;
use super::main::*;
pub struct SelectVoiceoversApp {

View file

@ -6,6 +6,7 @@ use adw::prelude::*;
use anime_launcher_sdk::is_available;
use crate::i18n::*;
use super::main::FirstRunAppMsg;
use super::main::MAIN_WINDOW;

View file

@ -4,6 +4,7 @@ use relm4::component::*;
use adw::prelude::*;
use crate::i18n::*;
use super::main::FirstRunAppMsg;
pub struct WelcomeApp;

View file

@ -2,6 +2,7 @@ use relm4::prelude::*;
use crate::*;
use crate::i18n::*;
use super::{App, AppMsg};
pub fn apply_patch<T: PatchExt + Send + Sync + 'static>(sender: ComponentSender<App>, patch: T) {

View file

@ -6,6 +6,7 @@ use anime_launcher_sdk::config::ConfigExt;
use anime_launcher_sdk::genshin::config::Config;
use crate::i18n::*;
use super::{App, AppMsg};
pub fn create_prefix(sender: ComponentSender<App>) {
@ -22,7 +23,7 @@ pub fn create_prefix(sender: ComponentSender<App>) {
.with_loader(WineLoader::Current)
.with_arch(WineArch::Win64);
if let Err(err) = wine.update_prefix::<&str>(None) {
if let Err(err) = wine.init_prefix(None::<&str>) {
tracing::error!("Failed to create wine prefix");
sender.input(AppMsg::Toast {

View file

@ -22,7 +22,7 @@ pub fn download_diff(sender: ComponentSender<App>, progress_bar_input: Sender<Pr
diff = diff.with_temp_folder(temp);
}
let result = diff.install_to(&game_path, clone!(@strong sender => move |state| {
let result = diff.install_to(game_path, clone!(@strong sender => move |state| {
match &state {
DiffUpdate::InstallerUpdate(InstallerUpdate::DownloadingError(err)) => {
tracing::error!("Downloading failed: {err}");
@ -65,13 +65,6 @@ pub fn download_diff(sender: ComponentSender<App>, progress_bar_input: Sender<Pr
perform_on_download_needed = false;
}
// Temporary workaround for 3.7.0 game update
let telemetry_file = game_path.join(config.launcher.edition.data_folder()).join("Plugins/Telemetry.dll");
if telemetry_file.exists() {
std::fs::remove_file(telemetry_file).unwrap();
}
sender.input(AppMsg::SetDownloading(false));
sender.input(AppMsg::UpdateLauncherState {
perform_on_download_needed,

View file

@ -10,6 +10,7 @@ use anime_launcher_sdk::components::wine;
use crate::*;
use crate::i18n::*;
use crate::ui::components::*;
use super::{App, AppMsg};
pub fn download_wine(sender: ComponentSender<App>, progress_bar_input: Sender<ProgressBarMsg>) {

View file

@ -1,6 +1,7 @@
use relm4::prelude::*;
use crate::i18n::*;
use super::{App, AppMsg};
pub fn launch(sender: ComponentSender<App>) {

View file

@ -1,8 +1,9 @@
use relm4::prelude::*;
use std::path::PathBuf;
use relm4::prelude::*;
use crate::*;
use super::{App, AppMsg};
pub fn migrate_folder(sender: ComponentSender<App>, from: PathBuf, to: PathBuf, cleanup_folder: Option<PathBuf>) {

View file

@ -727,161 +727,168 @@ impl SimpleComponent for App {
std::thread::spawn(move || {
tracing::info!("Initializing heavy tasks");
let mut tasks = Vec::new();
// Download background picture if needed
if download_picture {
sender.input(AppMsg::SetLoadingStatus(Some(Some(tr("downloading-background-picture")))));
tasks.push(std::thread::spawn(clone!(@strong sender => move || {
if let Err(err) = crate::background::download_background() {
tracing::error!("Failed to download background picture: {err}");
if let Err(err) = crate::background::download_background() {
tracing::error!("Failed to download background picture: {err}");
sender.input(AppMsg::Toast {
title: tr("background-downloading-failed"),
description: Some(err.to_string())
});
}
sender.input(AppMsg::Toast {
title: tr("background-downloading-failed"),
description: Some(err.to_string())
});
}
})));
}
// Update components index
sender.input(AppMsg::SetLoadingStatus(Some(Some(tr("updating-components-index")))));
tasks.push(std::thread::spawn(clone!(@strong sender => move || {
let components = ComponentsLoader::new(&CONFIG.components.path);
let components = ComponentsLoader::new(&CONFIG.components.path);
match components.is_sync(&CONFIG.components.servers) {
Ok(Some(_)) => (),
match components.is_sync(&CONFIG.components.servers) {
Ok(Some(_)) => (),
Ok(None) => {
for host in &CONFIG.components.servers {
match components.sync(host) {
Ok(changes) => {
sender.input(AppMsg::Toast {
title: tr("components-index-updated"),
description: if changes.is_empty() {
None
} else {
Some(changes.into_iter()
.map(|line| format!("- {line}"))
.collect::<Vec<_>>()
.join("\n"))
}
});
Ok(None) => {
for host in &CONFIG.components.servers {
match components.sync(host) {
Ok(changes) => {
sender.input(AppMsg::Toast {
title: tr("components-index-updated"),
description: if changes.is_empty() {
None
} else {
Some(changes.into_iter()
.map(|line| format!("- {line}"))
.collect::<Vec<_>>()
.join("\n"))
}
});
break;
}
break;
}
Err(err) => {
tracing::error!("Failed to sync components index");
Err(err) => {
tracing::error!("Failed to sync components index");
sender.input(AppMsg::Toast {
title: tr("components-index-sync-failed"),
description: Some(err.to_string())
});
sender.input(AppMsg::Toast {
title: tr("components-index-sync-failed"),
description: Some(err.to_string())
});
}
}
}
}
}
Err(err) => {
tracing::error!("Failed to verify that components index synced");
Err(err) => {
tracing::error!("Failed to verify that components index synced");
sender.input(AppMsg::Toast {
title: tr("components-index-verify-failed"),
description: Some(err.to_string())
});
sender.input(AppMsg::Toast {
title: tr("components-index-verify-failed"),
description: Some(err.to_string())
});
}
}
}
})));
// Update initial patch status
sender.input(AppMsg::SetLoadingStatus(Some(Some(tr("loading-patch-status")))));
tasks.push(std::thread::spawn(clone!(@strong sender => move || {
// Sync local patch repo
let patch = Patch::new(&CONFIG.patch.path, CONFIG.launcher.edition);
// Sync local patch repo
let patch = Patch::new(&CONFIG.patch.path, CONFIG.launcher.edition);
match patch.is_sync(&CONFIG.patch.servers) {
Ok(Some(_)) => (),
match patch.is_sync(&CONFIG.patch.servers) {
Ok(Some(_)) => (),
Ok(None) => {
for server in &CONFIG.patch.servers {
match patch.sync(server) {
Ok(_) => break,
Ok(None) => {
for server in &CONFIG.patch.servers {
match patch.sync(server) {
Ok(_) => break,
Err(err) => {
tracing::error!("Failed to sync patch folder with remote: {server}: {err}");
Err(err) => {
tracing::error!("Failed to sync patch folder with remote: {server}: {err}");
sender.input(AppMsg::Toast {
title: tr("patch-sync-failed"),
description: Some(err.to_string())
});
sender.input(AppMsg::Toast {
title: tr("patch-sync-failed"),
description: Some(err.to_string())
});
}
}
}
}
Err(err) => {
tracing::error!("Failed to compare local patch folder with remote: {err}");
sender.input(AppMsg::Toast {
title: tr("patch-state-check-failed"),
description: Some(err.to_string())
});
}
}
Err(err) => {
tracing::error!("Failed to compare local patch folder with remote: {err}");
// Get main UnityPlayer patch status
sender.input(AppMsg::SetUnityPlayerPatch(match patch.unity_player_patch() {
Ok(patch) => Some(patch),
sender.input(AppMsg::Toast {
title: tr("patch-state-check-failed"),
description: Some(err.to_string())
});
}
}
Err(err) => {
tracing::error!("Failed to fetch unity player patch info: {err}");
// Get main UnityPlayer patch status
sender.input(AppMsg::SetUnityPlayerPatch(match patch.unity_player_patch() {
Ok(patch) => Some(patch),
sender.input(AppMsg::Toast {
title: tr("patch-info-fetching-error"),
description: Some(err.to_string())
});
Err(err) => {
tracing::error!("Failed to fetch unity player patch info: {err}");
None
}
}));
sender.input(AppMsg::Toast {
title: tr("patch-info-fetching-error"),
description: Some(err.to_string())
});
// Get additional xlua patch status
sender.input(AppMsg::SetXluaPatch(match patch.xlua_patch() {
Ok(patch) => Some(patch),
None
}
}));
Err(err) => {
tracing::error!("Failed to fetch xlua patch info: {err}");
// Get additional xlua patch status
sender.input(AppMsg::SetXluaPatch(match patch.xlua_patch() {
Ok(patch) => Some(patch),
sender.input(AppMsg::Toast {
title: tr("patch-info-fetching-error"),
description: Some(err.to_string())
});
Err(err) => {
tracing::error!("Failed to fetch xlua patch info: {err}");
None
}
}));
sender.input(AppMsg::Toast {
title: tr("patch-info-fetching-error"),
description: Some(err.to_string())
});
None
}
}));
tracing::info!("Updated patch status");
tracing::info!("Updated patch status");
})));
// Update initial game version status
sender.input(AppMsg::SetLoadingStatus(Some(Some(tr("loading-game-version")))));
tasks.push(std::thread::spawn(clone!(@strong sender => move || {
sender.input(AppMsg::SetGameDiff(match GAME.try_get_diff() {
Ok(diff) => Some(diff),
Err(err) => {
tracing::error!("Failed to find game diff: {err}");
sender.input(AppMsg::SetGameDiff(match GAME.try_get_diff() {
Ok(diff) => Some(diff),
Err(err) => {
tracing::error!("Failed to find game diff: {err}");
sender.input(AppMsg::Toast {
title: tr("game-diff-finding-error"),
description: Some(err.to_string())
});
sender.input(AppMsg::Toast {
title: tr("game-diff-finding-error"),
description: Some(err.to_string())
});
None
}
}));
None
}
}));
tracing::info!("Updated game version status");
})));
tracing::info!("Updated game version status");
// Await for tasks to finish execution
for task in tasks {
task.join().expect("Failed to join task");
}
// Update launcher state
sender.input(AppMsg::UpdateLauncherState {

View file

@ -1,3 +1,5 @@
use std::path::Path;
use relm4::{
prelude::*,
Sender
@ -5,11 +7,10 @@ use relm4::{
use gtk::glib::clone;
use std::path::Path;
use crate::*;
use crate::i18n::*;
use crate::ui::components::*;
use super::{App, AppMsg};
#[allow(unused_must_use)]
@ -105,11 +106,25 @@ pub fn repair_game(sender: ComponentSender<App>, progress_bar_input: Sender<Prog
let total = broken.len() as f64;
let player_patch = UnityPlayerPatch::from_folder(&config.patch.path, config.launcher.edition).unwrap()
.is_applied(&game_path).unwrap();
// Get main patch status
let xlua_patch = XluaPatch::from_folder(&config.patch.path, config.launcher.edition).unwrap()
.is_applied(&game_path).unwrap();
let player_patch = UnityPlayerPatch::from_folder(&config.patch.path, config.launcher.edition)
.and_then(|patch| patch.is_applied(&game_path))
.unwrap_or_else(|err| {
tracing::warn!("Failed to get player patch status: {err}. Used config value instead: {}", config.patch.apply_main);
config.patch.apply_main
});
// Get xlua patch status
let xlua_patch = XluaPatch::from_folder(&config.patch.path, config.launcher.edition)
.and_then(|patch| patch.is_applied(&game_path))
.unwrap_or_else(|err| {
tracing::warn!("Failed to get xlua patch status: {err}. Used config value instead: {}", config.patch.apply_xlua);
config.patch.apply_xlua
});
tracing::debug!("Patches status: player({player_patch}), xlua({xlua_patch})");
@ -162,6 +177,8 @@ pub fn repair_game(sender: ComponentSender<App>, progress_bar_input: Sender<Prog
progress_bar_input.send(ProgressBarMsg::UpdateProgress(i as u64, total as u64));
}
progress_bar_input.send(ProgressBarMsg::DisplayFraction(true));
}
}

View file

@ -15,7 +15,8 @@ use crate::*;
#[derive(Debug)]
struct GameSession {
name: String,
description: Option<String>
description: Option<String>,
check_button: gtk::CheckButton
}
#[relm4::factory(async)]
@ -36,6 +37,9 @@ impl AsyncFactoryComponent for GameSession {
None => ""
},
// Looks weird but yes
add_prefix = &self.check_button.clone(),
add_suffix = &gtk::Button {
set_icon_name: "view-refresh-symbolic",
add_css_class: "flat",
@ -60,6 +64,12 @@ impl AsyncFactoryComponent for GameSession {
connect_clicked[sender, index] => move |_| {
sender.output(GamePageMsg::RemoveSession(index.clone()));
}
},
set_activatable: true,
connect_activated[sender, index] => move |_| {
sender.output(GamePageMsg::SetCurrent(index.clone()));
}
}
}
@ -80,9 +90,7 @@ impl AsyncFactoryComponent for GameSession {
pub struct GamePage {
sessions: AsyncFactoryVecDeque<GameSession>,
sessions_names: Vec<String>,
sessions_combo: adw::ComboRow,
sessions_root_widget: gtk::CheckButton,
session_name_entry: adw::EntryRow
}
@ -91,8 +99,7 @@ pub enum GamePageMsg {
AddSession,
UpdateSession(DynamicIndex),
RemoveSession(DynamicIndex),
SetCurrent(u32),
UpdateCombo
SetCurrent(DynamicIndex)
}
#[relm4::component(async, pub)]
@ -123,39 +130,25 @@ impl SimpleAsyncComponent for GamePage {
adw::PreferencesPage {
set_title: &tr("game"),
set_icon_name: Some("applications-games-symbolic"),
add = &adw::PreferencesGroup {
set_title: &tr("game-sessions"),
#[local_ref]
sessions_combo -> adw::ComboRow {
set_title: &tr("active-sessions"),
set_subtitle: &tr("active-session-description"),
connect_selected_notify[sender] => move |row| {
if is_ready() {
sender.input(GamePageMsg::SetCurrent(row.selected()));
}
}
}
},
add = &adw::PreferencesGroup {
#[local_ref]
session_name_entry -> adw::EntryRow {
set_title: &tr("name"),
add_suffix = &gtk::Button {
set_icon_name: "list-add-symbolic",
add_css_class: "flat",
set_valign: gtk::Align::Center,
connect_clicked => GamePageMsg::AddSession
}
}
},
#[local_ref]
add = sessions -> adw::PreferencesGroup {},
}
@ -172,28 +165,34 @@ impl SimpleAsyncComponent for GamePage {
let mut model = Self {
sessions: AsyncFactoryVecDeque::new(adw::PreferencesGroup::new(), sender.input_sender()),
sessions_names: Vec::new(),
sessions_combo: adw::ComboRow::new(),
sessions_root_widget: gtk::CheckButton::new(),
session_name_entry: adw::EntryRow::new()
};
let current = Sessions::get_current().unwrap_or_default();
for (name, _) in Sessions::list().unwrap_or_default() {
let check_button = gtk::CheckButton::new();
check_button.set_group(Some(&model.sessions_root_widget));
if Some(&name) == current.as_ref() {
check_button.set_active(true);
}
model.sessions.guard().push_back(GameSession {
name: name.clone(),
description: None
name,
description: None,
check_button
});
}
let sessions = model.sessions.widget();
let sessions_combo = &model.sessions_combo;
let session_name_entry = &model.session_name_entry;
let widgets = view_output!();
sender.input(GamePageMsg::UpdateCombo);
AsyncComponentParts { model, widgets }
}
@ -210,10 +209,9 @@ impl SimpleAsyncComponent for GamePage {
Ok(()) => {
self.sessions.guard().push_back(GameSession {
name,
description: None
description: None,
check_button: gtk::CheckButton::new()
});
sender.input(GamePageMsg::UpdateCombo);
}
Err(err) => {
@ -242,27 +240,23 @@ impl SimpleAsyncComponent for GamePage {
GamePageMsg::RemoveSession(index) => {
if let Some(session) = self.sessions.guard().get(index.current_index()) {
match Sessions::remove(&session.name) {
Ok(()) => sender.input(GamePageMsg::UpdateCombo),
if let Err(err) = Sessions::remove(&session.name) {
sender.output(EnhancementsAppMsg::Toast {
title: tr("game-session-remove-failed"),
description: Some(err.to_string())
}).unwrap();
Err(err) => {
sender.output(EnhancementsAppMsg::Toast {
title: tr("game-session-remove-failed"),
description: Some(err.to_string())
}).unwrap();
return;
}
return;
}
}
self.sessions.guard().remove(index.current_index());
}
GamePageMsg::SetCurrent(id) => {
if let Some(name) = self.sessions_names.get(id as usize) {
GamePageMsg::SetCurrent(index) => {
if let Some(session) = self.sessions.guard().get(index.current_index()) {
if let Ok(config) = Config::get() {
if let Err(err) = Sessions::set_current(name.to_owned()) {
if let Err(err) = Sessions::set_current(session.name.clone()) {
sender.output(EnhancementsAppMsg::Toast {
title: tr("game-session-set-current-failed"),
description: Some(err.to_string())
@ -272,32 +266,20 @@ impl SimpleAsyncComponent for GamePage {
return;
}
if let Err(err) = Sessions::apply(name.to_owned(), config.get_wine_prefix_path()) {
if let Err(err) = Sessions::apply(session.name.clone(), config.get_wine_prefix_path()) {
sender.output(EnhancementsAppMsg::Toast {
title: tr("game-session-apply-failed"),
description: Some(err.to_string())
}).unwrap();
// Prevent session activation
return;
}
session.check_button.set_active(true);
}
}
}
GamePageMsg::UpdateCombo => {
let sessions = Sessions::get_sessions().unwrap_or_default();
self.sessions_names = sessions.sessions.into_keys().collect::<Vec<String>>();
let mut selected = 0;
for (i, name) in self.sessions_names.iter().enumerate() {
if sessions.current.as_ref() == Some(name) {
selected = i as u32;
}
}
self.sessions_combo.set_model(Some(&gtk::StringList::new(&self.sessions_names.iter().map(|name: &String| name.as_str()).collect::<Vec<&str>>())));
self.sessions_combo.set_selected(selected);
}
}
}
}

View file

@ -1,5 +1,6 @@
use relm4::prelude::*;
use relm4::component::*;
use relm4::factory::*;
use adw::prelude::*;
@ -7,6 +8,9 @@ use anime_launcher_sdk::config::ConfigExt;
use anime_launcher_sdk::genshin::config::Config;
use anime_launcher_sdk::config::schema_blanks::prelude::*;
use anime_launcher_sdk::anime_game_core::installer::downloader::Downloader;
use anime_launcher_sdk::discord_rpc::DiscordRpc;
use anime_launcher_sdk::is_available;
pub mod game;
@ -23,7 +27,69 @@ use crate::*;
use super::gamescope::*;
use super::main::PreferencesAppMsg;
#[derive(Debug)]
struct DiscordRpcIcon {
pub check_button: gtk::CheckButton,
pub name: String,
pub path: PathBuf
}
#[relm4::factory(async)]
impl AsyncFactoryComponent for DiscordRpcIcon {
type Init = Self;
type Input = EnhancementsAppMsg;
type Output = EnhancementsAppMsg;
type CommandOutput = ();
type ParentInput = EnhancementsAppMsg;
type ParentWidget = adw::ExpanderRow;
view! {
root = adw::ActionRow {
set_title: &self.name,
// set_subtitle: &self.name,
// Don't even try to understand
add_prefix = &self.check_button.clone(),
add_suffix = &gtk::Picture {
set_margin_start: 4,
set_margin_top: 4,
set_margin_end: 4,
set_margin_bottom: 4,
add_css_class: "round-bin",
set_filename: Some(&self.path)
},
set_activatable: true,
connect_activated[sender, index] => move |_| {
sender.output(EnhancementsAppMsg::SetDiscordRpcIcon(index.clone()));
}
}
}
#[inline]
async fn init_model(
init: Self::Init,
_index: &DynamicIndex,
_sender: AsyncFactorySender<Self>,
) -> Self {
init
}
#[inline]
fn forward_to_parent(output: Self::Output) -> Option<Self::ParentInput> {
Some(output)
}
}
pub struct EnhancementsApp {
discord_rpc_icons: AsyncFactoryVecDeque<DiscordRpcIcon>,
discord_rpc_root_check_button: gtk::CheckButton,
gamescope: AsyncController<GamescopeApp>,
game_page: AsyncController<GamePage>,
sandbox_page: AsyncController<SandboxPage>,
@ -34,6 +100,8 @@ pub struct EnhancementsApp {
pub enum EnhancementsAppMsg {
SetGamescopeParent(adw::PreferencesWindow),
SetDiscordRpcIcon(DynamicIndex),
OpenGamescope,
OpenMainPage,
OpenGameSettingsPage,
@ -372,6 +440,11 @@ impl SimpleAsyncComponent for EnhancementsApp {
}
},
#[local_ref]
discord_rpc_icons -> adw::ExpanderRow {
set_title: &tr("icon")
},
adw::EntryRow {
set_title: &tr("title"),
set_text: &CONFIG.launcher.discord_rpc.title,
@ -573,7 +646,10 @@ impl SimpleAsyncComponent for EnhancementsApp {
) -> AsyncComponentParts<Self> {
tracing::info!("Initializing enhancements settings");
let model = Self {
let mut model = Self {
discord_rpc_icons: AsyncFactoryVecDeque::new(adw::ExpanderRow::new(), sender.input_sender()),
discord_rpc_root_check_button: gtk::CheckButton::new(),
gamescope: GamescopeApp::builder()
.launch(())
.detach(),
@ -591,6 +667,57 @@ impl SimpleAsyncComponent for EnhancementsApp {
.forward(sender.input_sender(), std::convert::identity)
};
match DiscordRpc::get_assets(CONFIG.launcher.discord_rpc.app_id) {
Ok(icons) => {
for icon in icons {
let cache_file = CACHE_FOLDER.join("discord-rpc").join(&icon.name);
// let sender = sender.clone();
if !cache_file.exists() {
std::thread::spawn(move || {
Downloader::new(icon.get_uri())
.expect("Failed to init Discord RPC icon downloader")
.with_continue_downloading(false)
.with_free_space_check(false)
.download(cache_file, |_, _| {})
.expect("Failed to download Discord RPC icon");
/*if let Err(err) = result {
sender.input(EnhancementsAppMsg::Toast {
title: tr("discord-rpc-icon-download-failed"),
description: Some(err.to_string())
});
}*/
});
}
// TODO: add icons after thread above finishes its work as well
else {
let check_button = gtk::CheckButton::new();
check_button.set_group(Some(&model.discord_rpc_root_check_button));
if CONFIG.launcher.discord_rpc.icon == icon.name {
check_button.set_active(true);
}
model.discord_rpc_icons.guard().push_back(DiscordRpcIcon {
check_button,
name: icon.name.clone(),
path: cache_file.clone()
});
}
}
}
Err(err) => sender.input(EnhancementsAppMsg::Toast {
title: tr("discord-rpc-icons-fetch-failed"),
description: Some(err.to_string())
})
}
let discord_rpc_icons = model.discord_rpc_icons.widget();
let game_page = model.game_page.widget();
let sandbox_page = model.sandbox_page.widget();
let environment_page = model.environment_page.widget();
@ -606,6 +733,18 @@ impl SimpleAsyncComponent for EnhancementsApp {
self.gamescope.widget().set_transient_for(Some(&parent));
}
EnhancementsAppMsg::SetDiscordRpcIcon(index) => {
if let Some(icon) = self.discord_rpc_icons.guard().get(index.current_index()) {
if let Ok(mut config) = Config::get() {
config.launcher.discord_rpc.icon = icon.name.clone();
Config::update(config);
icon.check_button.set_active(true);
}
}
}
EnhancementsAppMsg::OpenGamescope => {
self.gamescope.widget().present();
}

View file

@ -7,13 +7,11 @@ use adw::prelude::*;
use anime_launcher_sdk::wincompatlib::prelude::*;
use anime_launcher_sdk::components::*;
use anime_launcher_sdk::components::wine::WincompatlibWine;
use anime_launcher_sdk::components::wine::UnifiedWine;
use super::GeneralAppMsg;
use crate::ui::components;
use crate::ui::components::*;
use crate::i18n::*;
use crate::*;
@ -345,12 +343,12 @@ impl SimpleAsyncComponent for ComponentsPage {
match msg {
ComponentsPageMsg::WineRecommendedOnly(state) => {
// todo
self.wine_components.sender().send(components::list::AppMsg::ShowRecommendedOnly(state)).unwrap();
self.wine_components.sender().send(ComponentsListMsg::ShowRecommendedOnly(state)).unwrap();
}
ComponentsPageMsg::DxvkRecommendedOnly(state) => {
// todo
self.dxvk_components.sender().send(components::list::AppMsg::ShowRecommendedOnly(state)).unwrap();
self.dxvk_components.sender().send(ComponentsListMsg::ShowRecommendedOnly(state)).unwrap();
}
ComponentsPageMsg::UpdateDownloadedWine => {
@ -426,7 +424,7 @@ impl SimpleAsyncComponent for ComponentsPage {
let wine_name = version.name.to_string();
std::thread::spawn(move || {
match wine.update_prefix::<&str>(None) {
match wine.update_prefix(None::<&str>) {
Ok(_) => {
config.game.wine.selected = Some(wine_name);
@ -463,8 +461,8 @@ impl SimpleAsyncComponent for ComponentsPage {
let mut wine = match config.get_selected_wine() {
Ok(Some(version)) => {
match version.to_wine(config.components.path, Some(config.game.wine.builds.join(&version.name))) {
WincompatlibWine::Default(wine) => wine,
WincompatlibWine::Proton(_) => return
UnifiedWine::Default(wine) => wine,
UnifiedWine::Proton(_) => return
}
}

View file

@ -21,6 +21,7 @@ use anime_launcher_sdk::genshin::env_emulation::Environment;
pub mod components;
use components::*;
use super::main::PreferencesAppMsg;
use crate::ui::migrate_installation::MigrateInstallationApp;

View file

@ -4,6 +4,7 @@ use relm4::component::*;
use gtk::prelude::*;
use adw::prelude::*;
use anime_launcher_sdk::anime_game_core::prelude::*;
use anime_launcher_sdk::anime_game_core::genshin::prelude::*;
use anime_launcher_sdk::config::ConfigExt;