RR: Increase progress bar text size + move to i18n translation + Enable Instant Language

This commit is contained in:
Ward from fusion-voyager-3 2024-02-20 18:11:38 +03:00
parent 800293b37e
commit a797afa0b4
34 changed files with 1027 additions and 2608 deletions

331
Cargo.lock generated
View File

@ -17,6 +17,12 @@ version = "1.0.79"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca"
[[package]]
name = "arc-swap"
version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6"
[[package]] [[package]]
name = "async-channel" name = "async-channel"
version = "2.1.1" version = "2.1.1"
@ -60,10 +66,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
[[package]] [[package]]
name = "block" name = "bstr"
version = "0.1.6" version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" checksum = "c48f0051a4b4c5e0b6d365cd04af53aeaa209e3cc15ec2cdb69e73cc87fbd0dc"
dependencies = [
"memchr",
"serde",
]
[[package]] [[package]]
name = "cairo-rs" name = "cairo-rs"
@ -90,15 +100,6 @@ dependencies = [
"system-deps", "system-deps",
] ]
[[package]]
name = "cc"
version = "1.0.83"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
dependencies = [
"libc",
]
[[package]] [[package]]
name = "cfg-expr" name = "cfg-expr"
version = "0.15.6" version = "0.15.6"
@ -118,6 +119,25 @@ dependencies = [
"crossbeam-utils", "crossbeam-utils",
] ]
[[package]]
name = "crossbeam-deque"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
dependencies = [
"crossbeam-epoch",
"crossbeam-utils",
]
[[package]]
name = "crossbeam-epoch"
version = "0.9.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
dependencies = [
"crossbeam-utils",
]
[[package]] [[package]]
name = "crossbeam-utils" name = "crossbeam-utils"
version = "0.8.19" version = "0.8.19"
@ -318,26 +338,6 @@ dependencies = [
"unicode-width", "unicode-width",
] ]
[[package]]
name = "gettext-rs"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e49ea8a8fad198aaa1f9655a2524b64b70eb06b2f3ff37da407566c93054f364"
dependencies = [
"gettext-sys",
"locale_config",
]
[[package]]
name = "gettext-sys"
version = "0.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c63ce2e00f56a206778276704bbe38564c8695249fdc8f354b4ef71c57c3839d"
dependencies = [
"cc",
"temp-dir",
]
[[package]] [[package]]
name = "gio" name = "gio"
version = "0.18.4" version = "0.18.4"
@ -423,6 +423,30 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
[[package]]
name = "globset"
version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1"
dependencies = [
"aho-corasick",
"bstr",
"log",
"regex-automata",
"regex-syntax",
]
[[package]]
name = "globwalk"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "93e3af942408868f6934a7b85134a3230832b9977cf66125df2f9edcfce4ddcc"
dependencies = [
"bitflags 1.3.2",
"ignore",
"walkdir",
]
[[package]] [[package]]
name = "gnome-desktop" name = "gnome-desktop"
version = "0.4.2" version = "0.4.2"
@ -594,6 +618,12 @@ dependencies = [
"system-deps", "system-deps",
] ]
[[package]]
name = "hashbrown"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
[[package]] [[package]]
name = "hashbrown" name = "hashbrown"
version = "0.14.3" version = "0.14.3"
@ -621,6 +651,32 @@ version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5d3d0e0f38255e7fa3cf31335b3a56f05febd18025f4db5ef7a0cfb4f8da651f" checksum = "5d3d0e0f38255e7fa3cf31335b3a56f05febd18025f4db5ef7a0cfb4f8da651f"
[[package]]
name = "ignore"
version = "0.4.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1"
dependencies = [
"crossbeam-deque",
"globset",
"log",
"memchr",
"regex-automata",
"same-file",
"walkdir",
"winapi-util",
]
[[package]]
name = "indexmap"
version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
dependencies = [
"autocfg",
"hashbrown 0.12.3",
]
[[package]] [[package]]
name = "indexmap" name = "indexmap"
version = "2.1.0" version = "2.1.0"
@ -628,7 +684,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
dependencies = [ dependencies = [
"equivalent", "equivalent",
"hashbrown", "hashbrown 0.14.3",
] ]
[[package]] [[package]]
@ -693,26 +749,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7"
[[package]] [[package]]
name = "locale_config" name = "linked-hash-map"
version = "0.3.0" version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08d2c35b16f4483f6c26f0e4e9550717a2f6575bcd6f12a53ff0c490a94a6934" checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
dependencies = [
"lazy_static",
"objc",
"objc-foundation",
"regex",
"winapi",
]
[[package]] [[package]]
name = "malloc_buf" name = "log"
version = "0.0.6" version = "0.4.20"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
dependencies = [
"libc",
]
[[package]] [[package]]
name = "memchr" name = "memchr"
@ -730,32 +776,12 @@ dependencies = [
] ]
[[package]] [[package]]
name = "objc" name = "normpath"
version = "0.2.7" version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" checksum = "5831952a9476f2fed74b77d74182fa5ddc4d21c72ec45a333b250e3ed0272804"
dependencies = [ dependencies = [
"malloc_buf", "windows-sys 0.52.0",
]
[[package]]
name = "objc-foundation"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9"
dependencies = [
"block",
"objc",
"objc_id",
]
[[package]]
name = "objc_id"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b"
dependencies = [
"objc",
] ]
[[package]] [[package]]
@ -812,15 +838,16 @@ dependencies = [
"async-channel", "async-channel",
"duct", "duct",
"fragile", "fragile",
"gettext-rs",
"glib", "glib",
"glob", "glob",
"gnome-desktop", "gnome-desktop",
"gtk4", "gtk4",
"libadwaita", "libadwaita",
"pretty-bytes", "pretty-bytes",
"rust-i18n",
"serde", "serde",
"serde_json", "serde_json",
"sys-locale",
"time", "time",
"zoha-vte4", "zoha-vte4",
] ]
@ -950,6 +977,57 @@ version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
[[package]]
name = "rust-i18n"
version = "3.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9dcd94370631e5658a0a23635f7f47e43d06a00ad948e0bb5de79b00d85b880c"
dependencies = [
"globwalk",
"once_cell",
"regex",
"rust-i18n-macro",
"rust-i18n-support",
"smallvec",
]
[[package]]
name = "rust-i18n-macro"
version = "3.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "355763801dcf287e777e42def7c578410783477b804b1107852119e0b2518396"
dependencies = [
"glob",
"once_cell",
"proc-macro2",
"quote",
"rust-i18n-support",
"serde",
"serde_json",
"serde_yaml",
"syn 2.0.48",
]
[[package]]
name = "rust-i18n-support"
version = "3.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "399801f4d955abf1c3ce3ce2215dc76bd40beb4ae39e3a84936b21a79ce2caa5"
dependencies = [
"arc-swap",
"globwalk",
"lazy_static",
"normpath",
"once_cell",
"proc-macro2",
"regex",
"serde",
"serde_json",
"serde_yaml",
"toml 0.7.8",
"triomphe",
]
[[package]] [[package]]
name = "rustc_version" name = "rustc_version"
version = "0.4.0" version = "0.4.0"
@ -965,6 +1043,15 @@ version = "1.0.16"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c"
[[package]]
name = "same-file"
version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
dependencies = [
"winapi-util",
]
[[package]] [[package]]
name = "semver" name = "semver"
version = "1.0.21" version = "1.0.21"
@ -1011,6 +1098,18 @@ dependencies = [
"serde", "serde",
] ]
[[package]]
name = "serde_yaml"
version = "0.8.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b"
dependencies = [
"indexmap 1.9.3",
"ryu",
"serde",
"yaml-rust",
]
[[package]] [[package]]
name = "shared_child" name = "shared_child"
version = "1.0.0" version = "1.0.0"
@ -1032,9 +1131,15 @@ dependencies = [
[[package]] [[package]]
name = "smallvec" name = "smallvec"
version = "1.11.2" version = "1.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
[[package]]
name = "stable_deref_trait"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
[[package]] [[package]]
name = "syn" name = "syn"
@ -1058,6 +1163,15 @@ dependencies = [
"unicode-ident", "unicode-ident",
] ]
[[package]]
name = "sys-locale"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e801cf239ecd6ccd71f03d270d67dd53d13e90aab208bf4b8fe4ad957ea949b0"
dependencies = [
"libc",
]
[[package]] [[package]]
name = "system-deps" name = "system-deps"
version = "6.2.0" version = "6.2.0"
@ -1067,7 +1181,7 @@ dependencies = [
"cfg-expr", "cfg-expr",
"heck", "heck",
"pkg-config", "pkg-config",
"toml", "toml 0.8.2",
"version-compare", "version-compare",
] ]
@ -1077,12 +1191,6 @@ version = "0.12.13"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae" checksum = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae"
[[package]]
name = "temp-dir"
version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd16aa9ffe15fe021c6ee3766772132c6e98dfa395a167e16864f61a9cfb71d6"
[[package]] [[package]]
name = "thiserror" name = "thiserror"
version = "1.0.56" version = "1.0.56"
@ -1121,6 +1229,18 @@ version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
[[package]]
name = "toml"
version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257"
dependencies = [
"serde",
"serde_spanned",
"toml_datetime",
"toml_edit 0.19.15",
]
[[package]] [[package]]
name = "toml" name = "toml"
version = "0.8.2" version = "0.8.2"
@ -1148,7 +1268,9 @@ version = "0.19.15"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
dependencies = [ dependencies = [
"indexmap", "indexmap 2.1.0",
"serde",
"serde_spanned",
"toml_datetime", "toml_datetime",
"winnow", "winnow",
] ]
@ -1159,13 +1281,24 @@ version = "0.20.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338"
dependencies = [ dependencies = [
"indexmap", "indexmap 2.1.0",
"serde", "serde",
"serde_spanned", "serde_spanned",
"toml_datetime", "toml_datetime",
"winnow", "winnow",
] ]
[[package]]
name = "triomphe"
version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "859eb650cfee7434994602c3a68b25d77ad9e68c8a6cd491616ef86661382eb3"
dependencies = [
"arc-swap",
"serde",
"stable_deref_trait",
]
[[package]] [[package]]
name = "unicode-ident" name = "unicode-ident"
version = "1.0.12" version = "1.0.12"
@ -1190,6 +1323,16 @@ version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
[[package]]
name = "walkdir"
version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
dependencies = [
"same-file",
"winapi-util",
]
[[package]] [[package]]
name = "winapi" name = "winapi"
version = "0.3.9" version = "0.3.9"
@ -1206,6 +1349,15 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-util"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
dependencies = [
"winapi",
]
[[package]] [[package]]
name = "winapi-x86_64-pc-windows-gnu" name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0" version = "0.4.0"
@ -1353,6 +1505,15 @@ dependencies = [
"memchr", "memchr",
] ]
[[package]]
name = "yaml-rust"
version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85"
dependencies = [
"linked-hash-map",
]
[[package]] [[package]]
name = "zoha-vte4" name = "zoha-vte4"
version = "0.0.2" version = "0.0.2"

View File

@ -16,7 +16,8 @@ pretty-bytes = "0.2.2"
time = "0.3.31" time = "0.3.31"
vte = { version = "0.0.2", package = "zoha-vte4", features = ["v0_72"] } vte = { version = "0.0.2", package = "zoha-vte4", features = ["v0_72"] }
glob = "0.3.1" glob = "0.3.1"
gettext-rs = { version = "0.7", features = ["gettext-system"] }
serde_json = "1.0.113" serde_json = "1.0.113"
serde = { version = "1.0", features = ["derive"] } serde = { version = "1.0", features = ["derive"] }
gnome-desktop = "0.4.2" gnome-desktop = "0.4.2"
rust-i18n = "3"
sys-locale = "0.3.1"

View File

@ -23,4 +23,4 @@ install:
mkdir -p $(DESTDIR)/usr/share/icons/hicolor/scalable/apps mkdir -p $(DESTDIR)/usr/share/icons/hicolor/scalable/apps
#cp -vf data/pika-drivers.svg $(DESTDIR)/usr/share/icons/hicolor/scalable/apps/ #cp -vf data/pika-drivers.svg $(DESTDIR)/usr/share/icons/hicolor/scalable/apps/
#cp -vf data/com.pika.drivers.desktop $(DESTDIR)/usr/share/applications/ #cp -vf data/com.pika.drivers.desktop $(DESTDIR)/usr/share/applications/
makepot $(DESTDIR)/usr/share/locale #makepot $(DESTDIR)/usr/share/locale

2
debian/changelog vendored
View File

@ -1,4 +1,4 @@
pika-installer-gtk4 (1.0.1-100pika2) pikauwu; urgency=low pika-installer-gtk4 (1.0.1-100pika4) pikauwu; urgency=low
* First release * First release

97
locales/ar_SA.json Normal file
View File

@ -0,0 +1,97 @@
{
"pikaos_installer": "مثبت نظام بيكا",
"welcome_to_pikaos": "اهلاً بكَ في بيكا",
"use_pikaos_in_live_media": "استعملْ بيكا مباشرةً من القرصِ المحروقْ",
"install_distro_to_system": "ثبّتْ بيكا على القرصِ الدخلي",
"welcome": "",
"back": "",
"next": "",
"select_a_timezone": "",
"please_select_timezone": "",
"no_timezone_select": "",
"timezone": "",
"choose_install_method": "",
"manual_partition_drive": "",
"auto_partition_drive": "",
"manual_part_installer": "",
"use_utility_manual": "",
"open_gparted": "",
"manual_part_note": "",
"refresh_part_table": "",
"validate_fs_table": "",
"fstab_status_valid": "",
"part_need_mapper": "",
"fstab_subvol_warn": "",
"fstab_multiple_part_mountpoint_err": "",
"fstab_no_mountpoint_err": "",
"fstab_no_partition_err": "",
"fstab_badfs": "",
"fstab_small_efi_size": "",
"fstab_badfs_efi": "",
"fstab_small_boot_size": "",
"fstab_badfs_boot": "",
"fstab_small_root_size": "",
"fstab_badfs_root": "",
"fstab_small_home_size": "",
"fstab_badfs_home": "",
"fstab_badfs_swap": "",
"fstab_bad_mountpoint": "",
"fstab_bad_mountpoint_msg": "",
"select_a_language": "",
"please_select_locale": "",
"no_locale_selected": "",
"language": "",
"select_a_keyboard": "",
"please_select_keyboard": "",
"no_keyboard_selected": "",
"test_your_keyboard": "",
"keyboard": "",
"luks_password_for": "",
"luks_how_should": "",
"be_added_crypttab": "",
"unlock_boot_manually": "",
"unlock_boot_manual": "",
"sit_back_relax": "",
"language_detail": "",
"timezone_detail": "",
"keyboard_detail": "",
"mounted_on_detail": "",
"install_target_detail": "",
"confirm_install_pika": "",
"view_logs": "",
"parting_status_text": "",
"image_status_text": "",
"flag1_status_text": "",
"flag2_status_text": "",
"crypt_status_text": "",
"lang_status_text": "",
"boot_status_status_text": "",
"post_status_text": "",
"pikaos_eula_agreement": "",
"please_read_eula": "",
"eula_buffer": "",
"i_agree_eula": "",
"eula": "",
"pika_nowork_csm": "",
"exit": "",
"subtitle_partition": "",
"title_mountpoint": "",
"title_mountopt": "",
"pika_install_good": "",
"reboot": "",
"pika_install_bad": "",
"logs": "",
"auto_part_installer": "",
"choose_drive_auto": "",
"no_drive_auto_selected": "",
"no_disk_specified": "",
"luks_yes_but_empty": "",
"enable_luks2_enc": "",
"luks2_password": "",
"disk_auto_target_small": "",
"installation": "",
"done": "",
"partitioning": "",
"luks2_password_confirm": "Confirm LUKS Password",
"luks_not_match": "The LUKS Passwords do not match!"
}

97
locales/bg_BG.json Normal file
View File

@ -0,0 +1,97 @@
{
"pikaos_installer": "PikaOS инсталатор",
"welcome_to_pikaos": "Добре Дошли в PikaOS",
"use_pikaos_in_live_media": "Използвай PikaOS без да Инсталираш",
"install_distro_to_system": "Инсталирай Дистрибуцията",
"welcome": "Добре Дошли",
"back": "Назад",
"next": "Следващ",
"select_a_timezone": "Изберте часова зона",
"please_select_timezone": "Моля, изберете часова зона за вашата система",
"no_timezone_select": "Не е избрана часова зона",
"timezone": "Часова Зона",
"choose_install_method": "Изберете метод на инсталиране",
"manual_partition_drive": "Ръчно Разделяне на Диска",
"auto_partition_drive": "Автоматично Разделяне\nДискът",
"manual_part_installer": "Инсталиране с ръчно разделяне на дискове",
"use_utility_manual": "Използвайте тази помощна програма, за да разделите/монтирате/форматирате вашите дискове.",
"open_gparted": "Отвори GPARTED",
"manual_part_note": "- Натиснете бутона плюс по-долу, за да започнете да добавяте записи във файловата система.\nЗабележки:\n - Този инсталатор не изтрива никакви данни автоматично, форматирайте дисковете си ръчно с GParter.\n - За да добавите linux-swap дял, задайте точка на монтиране на [SWAP]\n - Ние препоръчваме следните дялове на диска, като основно оформление:\n /boot ~ 1000МВ ext4\n /boot/efi ~ 512MB vfat/fat32\n />=25GB btrfs.",
"refresh_part_table": "Обновяване на Таблицата с дялове",
"validate_fs_table": "Проверка на Таблицата на Файловата Система",
"fstab_status_valid": "Състояние на Таблица на Файловата Система: Всички записи са валидни!",
"part_need_mapper": "Този дял се нуждае от настройка с mapper!",
"fstab_subvol_warn": "Предупреждение за Таблица на Файловата Система: Проверката за повторно използване на дяла ще бъде пропусната поради използване на subvol.",
"fstab_multiple_part_mountpoint_err": "Грешка в Таблица на Файловата Система: Множество дялове са конфигурирани към една и съща точка на монтиране!",
"fstab_no_mountpoint_err": "Грешка в Таблица на Файловата Система: един или повече дялове нямам зададена точка за монтиране!",
"fstab_no_partition_err": "Грешка в Таблица на Файловата Система: Един или повече записи нямат конфигуриран дял!",
"fstab_badfs": "Грешка в Таблица на Файловата Система: Невалидна файлова система: (/dev/",
"fstab_small_efi_size": ") Размерът трябва да е поне 512MB!",
"fstab_badfs_efi": ") Трябва да е FAT32/vFAT формат, за да бъде монтиран в /boot/efi!",
"fstab_small_boot_size": ") Трябва да е поне 1GB!",
"fstab_badfs_boot": ") Не трябва да е FAT32/vFAT формат, за да се монтира в /boot!",
"fstab_small_root_size": ") Трябва да е поне 26 GB!",
"fstab_badfs_root": ") Трябва да е Linux* съвместима файлова система, като:\n ext4/btrfs/xfs/f2fs за да се монтира в /!",
"fstab_small_home_size": ") Трябва да е поне 11 GB!",
"fstab_badfs_home": ") Трябва да е Linux* съвместива файлова система, като:\n ext4/btrfs/xfs/f2fs за да се монтира в /home!",
"fstab_badfs_swap": ") Не трябва да бъде swap, за да се използва като [SWAP]!",
"fstab_bad_mountpoint": "Грешка в Таблица на Файловата Система: Невалидна точка за монтиране: (",
"fstab_bad_mountpoint_msg": ") Не е валидна точка за монтиране!",
"select_a_language": "Изберете език",
"please_select_locale": "Моля, изберете локална зона за използване от системата",
"no_locale_selected": "Не е избрана локална зона",
"language": "Език",
"select_a_keyboard": "Изберете клавиатура",
"please_select_keyboard": "Моля, избере подредба на клавиатурата, която системата да използва",
"no_keyboard_selected": "Не е избрана подредба на клавиатурата",
"test_your_keyboard": "Изпробвайте клавиатурата си тук!",
"keyboard": "Клавиатура",
"luks_password_for": "LUKS парола за",
"luks_how_should": "Как трябва",
"be_added_crypttab": "да се добави в /etc/crypttab?",
"unlock_boot_manually": "Отключи ръчно при зареждане",
"unlock_boot_manual": "Автоматично отключване с root отключване",
"sit_back_relax": "Седнете, Отпуснете се и гледайте шоуто.",
"language_detail": "Език:",
"timezone_detail": "Часова зона:",
"keyboard_detail": "Подредба на клавиатурата:",
"mounted_on_detail": "монтиран в",
"install_target_detail": "Цел за Инсталиране:",
"confirm_install_pika": "Потвърди и Инсталирай PikaOS",
"view_logs": "Прегледай логовете",
"parting_status_text": "Разделяне на Целевите Дискове.",
"image_status_text": "Писане на изображение към целта.",
"flag1_status_text": "Активиране на bls_boot флага на /boot.",
"flag2_status_text": "Активиране на efi флага на /boot/efi.",
"crypt_status_text": "Настройване на криптирането crypttab.",
"lang_status_text": "Настройване на Език и Клавиатура.",
"boot_status_status_text": "Конфигуриране на bootloader.",
"post_status_text": "Изпълнение на скрипт след инсталация.",
"pikaos_eula_agreement": "PikaOS Лицензионно споразумение с потребителя",
"please_read_eula": "Моля, прочетете внимателно и се уверете, че сте съгласни със следното, преди да инсталирате PikaOS:",
"eula_buffer": "Трябва да имате предвид няколко неща: \n 1 - Вие разбирате, че тази дистрибуция НЕ Е \"С Вкус на Убунту\". \n 2 - Това е хоби дистрибуция, затова даваме всичко от себе си, за да предоставим официална поддръжка, но тя -НЯМА- да бъде гарантирана. \n 3 - Въпреки че PikaOS може да предостави идентични корекции и потребителско изживяване като проекта Nobara, ние НЕ сме пряка част от тях, така че въпроси и доклади за грешки не трябва да се изпращат директно до тях (те не трябва да се справят с това!) \n 4 - Докато инсталаторът работи, НЕ ГО ПРЕКЪСВАЙТЕ! защото в противен случай, ще имате повредена система. \n 5 - Опитайте да ползвате pikman вместо apt, когато използвате терминал - МНОГО по-бърз е! \n 6 - Вие разбирате, че xone драйверът изтегля необходимите двоични файлове локално и не пакетира и не разпространява директно фърмуер, защитен с авторски права, или други свързани данни. \n 7 - Автоматичното разделяне на дяловете ще форматира всички дялове на диска, така че ако искате да направите двойно зареждане, направете отделен EFI дял за PikaOS и използвайте ръчно разделяне на дяловете. \n 8 - В случай, че ви трябва информация за вход в тази сесия: \n - потребителско име: pikaos \n - парола: \n ОЗНАЧАВА: ПРОСТО НАТИСНЕТЕ ENTER",
"i_agree_eula": "Съгласен съм и приемам лицензионното споразумение с потребителя",
"eula": "ЛСКП",
"pika_nowork_csm": "PikaOS работи само на GPT UEFI системи, тази машина е стартирана в CSM/Legacy режим.",
"exit": "Изход",
"subtitle_partition": "Дял",
"title_mountpoint": "Точка за монтиране",
"title_mountopt": "Допълнителни Точки за Монтиране",
"pika_install_good": "Инсталацията на PikaOS беше завършена успешно.",
"reboot": "Рестартирай",
"pika_install_bad": "PikaOS се провали!\nПроверете логовете за повече информация.",
"logs": "Лог",
"auto_part_installer": "Инсталатор за автоматично разделяне на дялове",
"choose_drive_auto": "Изберете устройството, на което искате да инсталирате PikaOS\nЗабележка: Това ще изтрие целия диск! Направете резервно копие на данните ви!",
"no_drive_auto_selected": "Не е избран диск за инсталиране",
"no_disk_specified": "Не е посочен диск.",
"luks_yes_but_empty": "LUKS криптирането е Активирано, но не е предоставена парола.",
"enable_luks2_enc": "Активиране на LUKS2 криптиране на дискове",
"luks2_password": "LUKS Парола",
"disk_auto_target_small": "Размерът на диска е прекалено малък, PikaOS се нуждае от 40BG дисково пространство",
"installation": "Инсталация",
"done": "Готово",
"partitioning": "Разделяне на дялове",
"luks2_password_confirm": "Confirm LUKS Password",
"luks_not_match": "The LUKS Passwords do not match!"
}

97
locales/de_DE.json Normal file
View File

@ -0,0 +1,97 @@
{
"pikaos_installer": "PikaOS Installationsprogramm",
"welcome_to_pikaos": "Willkommen bei PikaOS",
"use_pikaos_in_live_media": "Nutze PikaOS im Live Modus",
"install_distro_to_system": "Distribution installieren",
"welcome": "Willkommen",
"back": "Zurück",
"next": "Weiter",
"select_a_timezone": "Wähle eine Zeitzone",
"please_select_timezone": "Bitte wähle eine Zeitzone",
"no_timezone_select": "Keine Zeitzone ausgewählt",
"timezone": "Zeitzone",
"choose_install_method": "Wähle eine Installationsmethode",
"manual_partition_drive": "Laufwerk Manuell Partitionieren",
"auto_partition_drive": "Automatisches Partitionieren\nDes Laufwerks",
"manual_part_installer": "Manuelles Partitionsinstallationsprogramm",
"use_utility_manual": "Verwende dieses Dienstprogramm um Laufwerke zu partitionieren/einbinden/formatieren.",
"open_gparted": "Öffne Gparted",
"manual_part_note": "- Klicken Sie unten auf die Plus-Schaltfläche, um mit dem Hinzufügen von Dateisystemeinträgen zu beginnen.\nAnmerkungen:\n - Dieses Installationsprogramm löscht keine Daten automatisch. Formatieren Sie Ihre Laufwerke manuell über gparted.\n - Um eine Linux-Swap-Partition hinzuzufügen, setzen Sie den Einhängepunkt auf [SWAP]\n - Als Basislayout empfehlen wir folgende Partitionen:\n /boot ~ 1000 MB ext4.\n /boot/efi ~ 512 MB vfat/fat32.\n / >= 25 GB Btrfs.",
"refresh_part_table": "Aktualisiere Partitionstabelle",
"validate_fs_table": "Überprüfe die Dateisystemtabelle",
"fstab_status_valid": "Status der Dateisystemtabelle: Alle Einträge sind gültig!",
"part_need_mapper": "Diese Partition muss als Mapper configuriert werden!",
"fstab_subvol_warn": "Warnung zur Dateisystemtabelle: Die Überprüfung der Partitionswiederverwendung wird aufgrund der Subvol-Nutzung übersprungen.",
"fstab_multiple_part_mountpoint_err": "Fehler in der Dateisystemtabelle: Mehrere Partitionen sind für denselben EInhängepunkt konfiguriert!",
"fstab_no_mountpoint_err": "Dateisystemtabellenfehler: Für eine oder mehrere Partitionen ist kein Einhängepunktkonfiguriert!",
"fstab_no_partition_err": "Fehler in der Dateisystemtabelle: Für einen oder mehrere Einträge ist keine Partition konfiguriert!",
"fstab_badfs": "Fehler in der Dateisystemtabelle: Ungültiges Dateisystem: (/dev/",
"fstab_small_efi_size": ") Muss mindestens 512 MB groß sein!",
"fstab_badfs_efi": ") Muss FAT32/vFAT sein, um unter /boot/efi eingehängt zu werden!",
"fstab_small_boot_size": ") Muss mindestens 1 GB groß sein!",
"fstab_badfs_boot": ") Darf nicht FAT32/vFAT sein, um unter /boot eingehängt zu werden!",
"fstab_small_root_size": ") Muss mindestens 26 GB groß sein!",
"fstab_badfs_root": ") Muss ein Linux*-kompatibles Dateisystem sein, wie zum Beispiel:\n ext4/btrfs/xfs/f2fs um unter \"/\" eingehängt werden!",
"fstab_small_home_size": ") Muss mindestens 11 GB groß sein!",
"fstab_badfs_home": ") Muss ein Linux*-kompatibles Dateisystem sein, wie zum Beispiel:\n ext4/btrfs/xfs/f2fs um unter /home eingehängt zu werden!",
"fstab_badfs_swap": ") Darf nicht swap sein, um als [SWAP] verwendet zu werden!",
"fstab_bad_mountpoint": "Dateisystemtabellenfehler: Ungültiger Einhängepunkt: (",
"fstab_bad_mountpoint_msg": ") Ist kein gültiger Einhängepunkt!",
"select_a_language": "Sprache auswählen",
"please_select_locale": "Bitte wähle ein Gebietsschema aus, das das System verwenden soll",
"no_locale_selected": "Kein Gebietsschema ausgewählt",
"language": "Sprache",
"select_a_keyboard": "Wählen Sie eine Tastatur aus",
"please_select_keyboard": "Bitte wähle ein Tastaturlayout für das System aus",
"no_keyboard_selected": "Kein Tastaturlayout ausgewählt",
"test_your_keyboard": "Teste hier die Tastatur!",
"keyboard": "Tastatur",
"luks_password_for": "LUKS Passwort für",
"luks_how_should": "How should",
"be_added_crypttab": "hinzugefügt werden zu /etc/crypttab?",
"unlock_boot_manually": "Beim booten manuell entsperren",
"unlock_boot_manual": "Automatisches Entsperren mit Root-Entsperrung",
"sit_back_relax": "Lehne dich zurück, entspanne dich und schaue dir die Show an.",
"language_detail": "Sprache:",
"timezone_detail": "Zeitzone:",
"keyboard_detail": "Tastaturbelegung:",
"mounted_on_detail": "eingehängt unter",
"install_target_detail": "Installationsziel:",
"confirm_install_pika": "Bestätigen und PikaOS installieren",
"view_logs": "Protokolle anzeigen",
"parting_status_text": "Partitionieren der Ziellaufwerke.",
"image_status_text": "Schreibe Abbild auf Ziel",
"flag1_status_text": "Aktivieren des bls_boot Flags auf /boot.",
"flag2_status_text": "Aktivieren des EFI Flags in /boot/efi.",
"crypt_status_text": "Verschlüsselung crypttab einrichten.",
"lang_status_text": "Sprache und Tastatur einrichten.",
"boot_status_status_text": "Bootloader konfigurieren.",
"post_status_text": "Skript nach der Installation ausführen.",
"pikaos_eula_agreement": "PikaOS-Benutzerlizenzvereinbarung",
"please_read_eula": "Bitte lies Folgendes sorgfältig durch und stelle sicher, dass du damit einverstanden bist, bevor du PikaOS installierst:",
"eula_buffer": "Es gibt ein paar Dinge, die du beachten solltest: \n 1 - DU verstehst, dass diese Distribution NICHT als „Ubuntu-Variante“ zu betrachten ist. \n 2 - Dies ist eine Hobby-Distribution, daher werden wir unser Bestes tun, um formellen Support zu bieten, dieser kann jedoch NICHT garantiert werden. \n 3 Obwohl PikaOS möglicherweise identische Patches und Benutzererfahrungen wie das Nobara-Projekt bereitstellt, sind wir NICHT direkt ein Teil davon, sodass Fragen und Fehlerberichte nicht direkt an sie gesendet werden sollten (sie müssen sich nicht darum kümmern!) \n 4 - Während das Installationsprogramm ausgeführt wird, UNTERBRICH ES NICHT! Andernfalls erhälst du ein beschädigtes System. \n 5 Versuche, bei der Verwendung des Terminals pikman anstelle von apt zu verwenden, es ist viel schneller! \n 6 Du verstehst, dass der Xone-Treiber benötigte Binärdateien lokal herunterlädt und keine urheberrechtlich geschützte Firmware oder andere verwandte Daten direkt verpackt oder verteilt. \n 7 Durch die automatische Partitionierung werden alle Partitionen auf einem Laufwerk formatiert. Wenn du also Dualboot betreiben möchtest, erstelle eine separate EFI-Partition für PikaOS und verwende die manuelle Partitionierung \n 8 - Falls du die Anmeldeinformationen für diese Sitzung benötigst: \n - Benutzername: pikaos \n - Passwort: \n BEDEUTUNG: DRÜCKEN SIE EINFACH EINGABE",
"i_agree_eula": "Ich stimme der Benutzerlizenzvereinbarung zu und akzeptiere sie",
"eula": "EULA",
"pika_nowork_csm": "PikaOS funktioniert nur auf GPT-UEFI-Systemen. Dieser Computer wurde im CSM/LEGACY-Modus gestartet.",
"exit": "Beenden",
"subtitle_partition": "Partition",
"title_mountpoint": "Einhängepunkt",
"title_mountopt": "Zusätzliche Einhängeoptionen",
"pika_install_good": "Die Installation von PikaOS wurde erfolgreich abgeschlossen.",
"reboot": "Neu starten",
"pika_install_bad": "PikaOS installation ist gescheitert!\nWeitere Informationen findest du in den Protokollen.",
"logs": "Log",
"auto_part_installer": "Installieren mit automatischer Partitionierung",
"choose_drive_auto": "Wähle das Laufwerk aus, auf dem du PikaOS installieren möchtest\nHinweis: Dadurch werden alle Daten auf dem Laufwerk gelöscht, lege eine Sicherungskopie an!",
"no_drive_auto_selected": "Kein Datenträger für die Installation ausgewählt",
"no_disk_specified": "Kein Datenträger angegeben.",
"luks_yes_but_empty": "LUKS Verschlüsselung aktiviert, aber kein Passwort angegeben.",
"enable_luks2_enc": "Aktiviere LUKS2-Festplattenverschlüsselung",
"luks2_password": "LUKS Passwort",
"disk_auto_target_small": "Speicherplatz zu gering, PikaOS benötigt 40 GB Speicherplatz",
"installation": "Installation",
"done": "Fertig",
"partitioning": "Partitionierung",
"luks2_password_confirm": "Confirm LUKS Password",
"luks_not_match": "The LUKS Passwords do not match!"
}

97
locales/en_US.json Normal file
View File

@ -0,0 +1,97 @@
{
"pikaos_installer": "PikaOS Installer",
"welcome_to_pikaos": "Welcome to PikaOS",
"use_pikaos_in_live_media": "Use PikaOS in Live media",
"install_distro_to_system": "Install Distro to System",
"welcome": "Welcome",
"back": "Back",
"next": "Next",
"select_a_timezone": "Select a timezone",
"please_select_timezone": "Please select a Time Zone for the system to use",
"no_timezone_select": "No Time Zone selected",
"timezone": "Time Zone",
"choose_install_method": "Choose an install method",
"manual_partition_drive": "Manually Partition The Drive",
"auto_partition_drive": "Automatically Partition\nThe Drive",
"manual_part_installer": "Manual Partitioning Installer",
"use_utility_manual": "Use this utility to partition/mount/format your drives.",
"open_gparted": "Open GPARTED",
"manual_part_note": " - Press the plus button below to begin adding filesystem entries.\nNotes:\n - This installer doesn't erase any data automatically, format your drives manually via gparted.\n - To Add a linux-swap partition set mountpoint to [SWAP]\n - We recommend the following partitions as a base layout:\n /boot ~ 1000mb ext4.\n /boot/efi ~ 512mb vfat/fat32.\n / >= 25GB btrfs.\n ",
"refresh_part_table": "Refresh Partition Table",
"validate_fs_table": "Validate Filesystem Table",
"fstab_status_valid": "Filesystem Table Status: All entries are valid!",
"part_need_mapper": "This partition needs a mapper!",
"fstab_subvol_warn": "Filesystem Table Warning: Partition reuse check will be skipped due to subvol usage.",
"fstab_multiple_part_mountpoint_err": "Filesystem Table Error: Multiple partitions are configured to the same mountpoint!",
"fstab_no_mountpoint_err": "Filesystem Table Error: One or more partitions don't have a mountpoint configured!",
"fstab_no_partition_err": "Filesystem Table Error: One or more entries don't have a partition configured!",
"fstab_badfs": "Filesystem Table Error: Invalid filesystem: (/dev/",
"fstab_small_efi_size": ") Must at least be 512MBs!",
"fstab_badfs_efi": ") Must be FAT32/vFAT to be mounted at /boot/efi!",
"fstab_small_boot_size": ") Must at least be 1GBs!",
"fstab_badfs_boot": ") Must not be FAT32/vFAT to be mounted at /boot!",
"fstab_small_root_size": ") Must at least be 26GBs!",
"fstab_badfs_root": ") Must be a Linux* compatible filesystem such as:\n ext4/btrfs/xfs/f2fs to be mounted at /!",
"fstab_small_home_size": ") Must at least be 11GBs!",
"fstab_badfs_home": ") Must be a Linux* compatible filesystem such as:\n ext4/btrfs/xfs/f2fs to be mounted at /home!",
"fstab_badfs_swap": ") Must not be swap to be used as [SWAP]!",
"fstab_bad_mountpoint": "Filesystem Table Error: Invalid mountpoint: (",
"fstab_bad_mountpoint_msg": ") Is not a valid mountpoint!",
"select_a_language": "Select a language",
"please_select_locale": "Please select a locale for the system to use",
"no_locale_selected": "No locale selected",
"language": "Language",
"select_a_keyboard": "Select a keyboard",
"please_select_keyboard": "Please select a Keyboard layout for the system to use",
"no_keyboard_selected": "No Keyboard Layout selected",
"test_your_keyboard": "Test Your Keyboard here!",
"keyboard": "Keyboard",
"luks_password_for": "LUKS Password for ",
"luks_how_should": "How should ",
"be_added_crypttab": " be added to /etc/crypttab?",
"unlock_boot_manually": "Unlock on boot manually",
"unlock_boot_manual": "Automatic Unlock with root unlock",
"sit_back_relax": "Sit back, Relax, and watch the show.",
"language_detail": "Language:",
"timezone_detail": "Timezone:",
"keyboard_detail": "Keyboard layout:",
"mounted_on_detail": " mounted on ",
"install_target_detail": "Install Target:",
"confirm_install_pika": "Confirm & Install PikaOS",
"view_logs": "View Logs",
"parting_status_text": "Partitioning The Target Drives.",
"image_status_text": "Writing image to target.",
"flag1_status_text": "Enabling bls_boot flag on /boot.",
"flag2_status_text": "Enabling efi flag on /boot/efi.",
"crypt_status_text": "Setting up encryption crypttab.",
"lang_status_text": "Setting Up Language and Keyboard.",
"boot_status_status_text": "Configuring bootloader.",
"post_status_text": "Running post installation script.",
"pikaos_eula_agreement": "PikaOS User license Agreement",
"please_read_eula": "Please carefully read and make sure you consent to the following before installing PikaOS:",
"eula_buffer": "There are a few things to keep in mind: \n 1 - You understand that this distribution is -NOT- to be considered an Ubuntu Flavor. \n 2 - This is a hobby distribution, so we will try our best to provide formal support but it will -NOT- be guaranteed. \n 3 - Although PikaOS might provide identical patches and user experience to the Nobara project, we are -NOT- directly a part of them so questions and bug reports should not be sent directly to them (they dont have to deal with it!) \n 4 - While the installer is running DO NOT INTERRUPT IT! or you will end up with a corrupted system. \n 5 - Try to use pikman instead of apt when using the terminal, it is much faster! \n 6 - You understand the xone driver downloads needed binaries locally and does not directly package or distribute any copyrighted firmware or other related data. \n 7 - Automatic partitioning will format all partitons on a drive, so if you want to dualboot make a separate EFI partition for PikaOS and use manual partitioning \n 8 - In case you need the login info for this session: \n - username: pikaos \n - password: \n MEANING: JUST PRESS ENTER",
"i_agree_eula": "I Agree and Accept the User license Agreement",
"eula": "EULA",
"pika_nowork_csm": "PikaOS Only works on GPT UEFI Systems, this machine is booted in CSM/LEGACY mode.",
"exit": "Exit",
"subtitle_partition": "Partition",
"title_mountpoint": "Mountpoint",
"title_mountopt": "Additional Mount Options",
"pika_install_good": "The installation of PikaOS has been completed sucessfully.",
"reboot": "Reboot",
"pika_install_bad": "PikaOS has Failed!\nCheck logs for further info.",
"logs": "Log",
"auto_part_installer": "Automatic Partitioning Installer",
"choose_drive_auto": "Choose the Drive you want to install PikaOS on\nNote: This will erase the entire drive backup your data!",
"no_drive_auto_selected": "No disk selected for installation",
"no_disk_specified": "No Disk specified.",
"luks_yes_but_empty": "LUKS Encryption Enabled but no password provided.",
"enable_luks2_enc": "Enable LUKS2 Disk Encryption",
"luks2_password": "LUKS Password",
"disk_auto_target_small": "Disk Size too small, PikaOS needs 40GB Disk",
"installation": "Installation",
"done": "Done",
"partitioning": "Partitioning",
"luks2_password_confirm": "Confirm LUKS Password",
"luks_not_match": "The LUKS Passwords do not match!"
}

97
locales/fr_FR.json Normal file
View File

@ -0,0 +1,97 @@
{
"pikaos_installer": "Installateur PikaOS",
"welcome_to_pikaos": "Bienvenue chez PikaOS",
"use_pikaos_in_live_media": "Utiliser PikaOS sur une clé bootable",
"install_distro_to_system": "Installer la distribution sur le système",
"welcome": "Bienvenue",
"back": "Retour",
"next": "Suivant",
"select_a_timezone": "Sélectionner un fuseau horaire",
"please_select_timezone": "Veuillez choisir un fuseau horaire à utiliser",
"no_timezone_select": "Aucun fuseau horaire sélectionné",
"timezone": "Fuseau horaire",
"choose_install_method": "Choisir la méthode d'installation",
"manual_partition_drive": "Partitionner manuellement le lecteur",
"auto_partition_drive": "Partitionner automatiquement\nle lecteur",
"manual_part_installer": "Installateur de partitionnement manuelle",
"use_utility_manual": "Utilisez cet utilitaire pour partitionner/monter/formater vos disques.",
"open_gparted": "Ouvrir GPARTED",
"manual_part_note": "- Appuyez sur le bouton \"plus\" ci-dessous pour commencer à ajouter des entrées de système de fichiers.\nNotes:\n - Cet installateur n'efface aucune donnée automatiquement, formatez vos disques manuellement via gparted.\n - Pour ajouter une partition linux-swap, définissez le point de montage sur [SWAP].\n - Nous recommandons les partitions suivantes comme disposition de base:\n /boot ~ 1000mb ext4.\n /boot/efi ~ 512mb vfat/fat32.\n / >= 25GB btrfs.",
"refresh_part_table": "Rafraîchir les tables de partition",
"validate_fs_table": "Valider les Tables de Système de Fichiers",
"fstab_status_valid": "Statut de Table de Système de Fichiers: Toutes ces entrées sont valides!",
"part_need_mapper": "Cette partition a besoin d'un mappeur!",
"fstab_subvol_warn": "Avertissement concernant la table du système de fichiers: La vérification de réutilisation du partition sera (skip) à cause de l'usage du subvolume.",
"fstab_multiple_part_mountpoint_err": "Erreur du Table de Système de Fichiers: Plusieurs partitions sont configuré sur le même point de montage!",
"fstab_no_mountpoint_err": "Erreur du Table de Système de Fichiers: Un ou plusieurs partitions n'ont pas un point de montage configuré!",
"fstab_no_partition_err": "Erreur du Table de Système de Fichiers: Un ou deux entrées n'ont pas de partitions configurés!",
"fstab_badfs": "Erreur du Table de Système de Fichiers: Système de Fichiers invalide: (/dev/",
"fstab_small_efi_size": ") Il faut qu'il soit être à 512Mo ou plus!",
"fstab_badfs_efi": ") Il faut que FAT32 ou vFAT soit monté vers /boot/efi!",
"fstab_small_boot_size": ") Il faut qu'il soit être à 1Go ou plus!",
"fstab_badfs_boot": ") Il faut que FAT32 ou vFAT ne soit pas monté vers /boot!",
"fstab_small_root_size": ") Il faut qu'il soit être à 26Go ou plus!",
"fstab_badfs_root": ") Il faut qu'il soit être un système de fichiers compatible Linux* comme:\n*ext4/btrfs/xfs/f2fs à monter vers /! \n (ATTENTION: / signifie le directoire root, ou votre système sera installée!)",
"fstab_small_home_size": ") Il faut qu'il soit être à 11Go ou plus!",
"fstab_badfs_home": ") Il faut qu'il soit être un système de fichiers compatible Linux* comme:\n*ext4/btrfs/xfs/f2fs à monter vers /home!",
"fstab_badfs_swap": ") Il fauit qu'il soit pas utilisé pour [SWAP]!",
"fstab_bad_mountpoint": "Table de Système de Fichiers: Point de montage invalide: (",
"fstab_bad_mountpoint_msg": ") n'est pas un point de montage valide!",
"select_a_language": "Sélectionner une langue",
"please_select_locale": "Veuillez sélectionner une locale pour le système à utiliser",
"no_locale_selected": "Pas de locale sélectionné",
"language": "Langue",
"select_a_keyboard": "Sélectionner un clavier",
"please_select_keyboard": "Veuillez sélectionner un clavier",
"no_keyboard_selected": "Aucune disposition de clavier sélectionnée",
"test_your_keyboard": "Testez votre clavier ici!",
"keyboard": "Clavier",
"luks_password_for": "Mot de passe LUKS pour",
"luks_how_should": "Comment voulez-vous",
"be_added_crypttab": "à ajouter sur /etc/crypttab?",
"unlock_boot_manually": "Déverouiller le boot manuellement",
"unlock_boot_manual": "Déverouillage automatique avec le déverouillage root",
"sit_back_relax": "Asseyez-vous, détendez-vous et regardez le spectacle.",
"language_detail": "Langue:",
"timezone_detail": "Fuseau horaire:",
"keyboard_detail": "Disposition de clavier:",
"mounted_on_detail": "montée sur:",
"install_target_detail": "Cible d'installation:",
"confirm_install_pika": "Confirmer et Installer PikaOS",
"view_logs": "Voir les logs",
"parting_status_text": "Partitionnement des lecteurs cibles.",
"image_status_text": "Écrire l'image vers la cible.",
"flag1_status_text": "Activation du flag bls_boot vers /boot.",
"flag2_status_text": "Activation du flag efi vers /boot/efi.",
"crypt_status_text": "Configuration l'encryption crypttab.",
"lang_status_text": "Configuration du langue et du clavier.",
"boot_status_status_text": "Configuration du bootloader.",
"post_status_text": "Éxecution du script du post-installation.",
"pikaos_eula_agreement": "L'Accord de License Utilisateur PikaOS",
"please_read_eula": "Veuillez lire attentivement et vous assurer que vous acceptez ce qui suit avant d'installer PikaOS:",
"eula_buffer": "There are a few things to keep in mind: \n 1 - Vous comprenez que cette distribution se considére -PAS- comme une Ubuntu Flavor. \n 2 - Celle-ci est une distribution hobby, donc on essai notre meilleur à provide (formal support) mais il sera -PAS- être garantie. \n 3 - Apart que PikaOS peut avoir des patchs identiques et experience d'utilisateur vers le Nobara Project, nous sommes -PAS- directement a part of them donc les questions et les bug reports ne doit être pas directement envoyés à eux (ce n'est pas ) \n 4 - Pendant que l'installation est en éxecution, NE L'INTERROMPEZ PAS! Cela peut finir avec un système corrupu. \n 5 - Essayez d'utiliser Pikman au lieu d'APT, c'est encore plus rapide! \n 6 - Vous comprenez les téléchargements du pilote xone a besoin binares locallement et ne se package pas directement ou ne distribue pas toute firmware copyrighted ou autre datas relatives. \n 7 - Le partitionnement automatique va formatter toutes les partitions sur le disque, donc si vous voulez de dualboot, créez une autre partition EFI for PikaOS et utilisez partitionnement manuelle. \n 8 - Si vous avez besoin l'info de connexion pour cette session: \n - pseudo: pikaos \n - mot de passe: \n QUI VEUT DIRE A JUSTE APPUYER ENTRÉE",
"i_agree_eula": "Je suis d'accord et j'accept l'Accord de License Utilisateur",
"eula": "Accord de License Utilisateur",
"pika_nowork_csm": "PikaOS marche que sur les systèmes GPT UEFI, cette machine est démarré en mode CSM/LEGACY BOOT.",
"exit": "Sortir",
"subtitle_partition": "Partition",
"title_mountpoint": "Point de Montage",
"title_mountopt": "Options additionnelles de montage",
"pika_install_good": "L'installation de PikaOS a bien complété.",
"reboot": "Redémarrer",
"pika_install_bad": "PikaOS a échoué!\nVeuillez voir les logs pour plus d'info.",
"logs": "Log",
"auto_part_installer": "Installeur de Partitionement Automatique",
"choose_drive_auto": "Choisisez le lecteur vous voulez installer PikaOS\nNote: Cela va écraser votre lecteur entièrement donc faites un backup!",
"no_drive_auto_selected": "Pas de disque séléctionné pour l'installation",
"no_disk_specified": "Pas de disque spécifié.",
"luks_yes_but_empty": "Cryptionage LUKS activé mais aucun de mot de passe fourni.",
"enable_luks2_enc": "Activer l'Encryption de Disque LUKS2",
"luks2_password": "Mot de passe LUKS",
"disk_auto_target_small": "Taille du disque trop petit, PikaOS a besoin d'un disque 40Go ou plus",
"installation": "Installation",
"done": "Fini",
"partitioning": "Partitionnement",
"luks2_password_confirm": "Confirm LUKS Password",
"luks_not_match": "The LUKS Passwords do not match!"
}

97
locales/sv_SE.json Normal file
View File

@ -0,0 +1,97 @@
{
"pikaos_installer": "PikaOS Installerare",
"welcome_to_pikaos": "Välkommen till PikaOS",
"use_pikaos_in_live_media": "Använd PikaOS i en Live media",
"install_distro_to_system": "Installera Distro till Systemet",
"welcome": "Välkommen",
"back": "Tillbaka",
"next": "Nästa",
"select_a_timezone": "Välj en tidszon",
"please_select_timezone": "Vänligen välj en Tidszon för systemet att använda",
"no_timezone_select": "Ingen Tidszon vald",
"timezone": "Tidszon",
"choose_install_method": "Välj en installationsmetod",
"manual_partition_drive": "Manuellt Partitionera Disken",
"auto_partition_drive": "Automatiskt Partitionera\nDisken",
"manual_part_installer": "Manuell Partitionerings-Installerare",
"use_utility_manual": "Använd detta verktyg för att partitionera/montera/formatera dina diskar.",
"open_gparted": "Öppna GParted",
"manual_part_note": "",
"refresh_part_table": "",
"validate_fs_table": "",
"fstab_status_valid": "",
"part_need_mapper": "",
"fstab_subvol_warn": "",
"fstab_multiple_part_mountpoint_err": "",
"fstab_no_mountpoint_err": "",
"fstab_no_partition_err": "",
"fstab_badfs": "",
"fstab_small_efi_size": "",
"fstab_badfs_efi": "",
"fstab_small_boot_size": "",
"fstab_badfs_boot": "",
"fstab_small_root_size": "",
"fstab_badfs_root": "",
"fstab_small_home_size": "",
"fstab_badfs_home": "",
"fstab_badfs_swap": "",
"fstab_bad_mountpoint": "",
"fstab_bad_mountpoint_msg": "",
"select_a_language": "",
"please_select_locale": "",
"no_locale_selected": "",
"language": "",
"select_a_keyboard": "",
"please_select_keyboard": "",
"no_keyboard_selected": "",
"test_your_keyboard": "",
"keyboard": "",
"luks_password_for": "",
"luks_how_should": "",
"be_added_crypttab": "",
"unlock_boot_manually": "",
"unlock_boot_manual": "",
"sit_back_relax": "",
"language_detail": "",
"timezone_detail": "",
"keyboard_detail": "",
"mounted_on_detail": "",
"install_target_detail": "",
"confirm_install_pika": "",
"view_logs": "",
"parting_status_text": "",
"image_status_text": "",
"flag1_status_text": "",
"flag2_status_text": "",
"crypt_status_text": "",
"lang_status_text": "",
"boot_status_status_text": "",
"post_status_text": "",
"pikaos_eula_agreement": "",
"please_read_eula": "",
"eula_buffer": "",
"i_agree_eula": "",
"eula": "",
"pika_nowork_csm": "",
"exit": "",
"subtitle_partition": "",
"title_mountpoint": "",
"title_mountopt": "",
"pika_install_good": "",
"reboot": "",
"pika_install_bad": "",
"logs": "",
"auto_part_installer": "",
"choose_drive_auto": "",
"no_drive_auto_selected": "",
"no_disk_specified": "",
"luks_yes_but_empty": "",
"enable_luks2_enc": "",
"luks2_password": "",
"disk_auto_target_small": "",
"installation": "",
"done": "",
"partitioning": "",
"luks2_password_confirm": "Confirm LUKS Password",
"luks_not_match": "The LUKS Passwords do not match!"
}

302
po/ar.po
View File

@ -1,302 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2024-02-09 17:48+0300\n"
"PO-Revision-Date: 2024-02-19 13:54+0000\n"
"Last-Translator: \"Ward Nakchbandi (Cosmic Fusion)\" <CosmicFusion@users."
"noreply.hosted.weblate.org>\n"
"Language-Team: Arabic <https://hosted.weblate.org/projects/pikaos/"
"gui-applications/pika-installer-gtk4/ar/>\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
"X-Generator: Weblate 5.5-dev\n"
"X-Poedit-Basepath: .\n"
msgid "pikaos_installer"
msgstr "مثبت نظام بيكا"
msgid "welcome_to_pikaos"
msgstr "اهلاً بكَ في بيكا"
msgid "use_pikaos_in_live_media"
msgstr "استعملْ بيكا مباشرةً من القرصِ المحروقْ"
msgid "install_distro_to_system"
msgstr "ثبّتْ بيكا على القرصِ الدخلي"
msgid "welcome"
msgstr ""
msgid "back"
msgstr ""
msgid "next"
msgstr ""
msgid "select_a_timezone"
msgstr ""
msgid "please_select_timezone"
msgstr ""
msgid "no_timezone_select"
msgstr ""
msgid "timezone"
msgstr ""
msgid "choose_install_method"
msgstr ""
msgid "manual_partition_drive"
msgstr ""
msgid "auto_partition_drive"
msgstr ""
msgid "manual_part_installer"
msgstr ""
msgid "use_utility_manual"
msgstr ""
msgid "open_gparted"
msgstr ""
msgid "manual_part_note"
msgstr ""
msgid "refresh_part_table"
msgstr ""
msgid "validate_fs_table"
msgstr ""
msgid "fstab_status_valid"
msgstr ""
msgid "part_need_mapper"
msgstr ""
msgid "fstab_subvol_warn"
msgstr ""
msgid "fstab_multiple_part_mountpoint_err"
msgstr ""
msgid "fstab_no_mountpoint_err"
msgstr ""
msgid "fstab_no_partition_err"
msgstr ""
msgid "fstab_badfs"
msgstr ""
msgid "fstab_small_efi_size"
msgstr ""
msgid "fstab_badfs_efi"
msgstr ""
msgid "fstab_small_boot_size"
msgstr ""
msgid "fstab_badfs_boot"
msgstr ""
msgid "fstab_small_root_size"
msgstr ""
msgid "fstab_badfs_root"
msgstr ""
msgid "fstab_small_home_size"
msgstr ""
msgid "fstab_badfs_home"
msgstr ""
msgid "fstab_badfs_swap"
msgstr ""
msgid "fstab_bad_mountpoint"
msgstr ""
msgid "fstab_bad_mountpoint_msg"
msgstr ""
msgid "select_a_language"
msgstr ""
msgid "please_select_locale"
msgstr ""
msgid "no_locale_selected"
msgstr ""
msgid "language"
msgstr ""
msgid "select_a_keyboard"
msgstr ""
msgid "please_select_keyboard"
msgstr ""
msgid "no_keyboard_selected"
msgstr ""
msgid "test_your_keyboard"
msgstr ""
msgid "keyboard"
msgstr ""
msgid "luks_password_for"
msgstr ""
msgid "luks_how_should"
msgstr ""
msgid "be_added_crypttab"
msgstr ""
msgid "unlock_boot_manually"
msgstr ""
msgid "unlock_boot_manual"
msgstr ""
msgid "sit_back_relax"
msgstr ""
msgid "language_detail"
msgstr ""
msgid "timezone_detail"
msgstr ""
msgid "keyboard_detail"
msgstr ""
msgid "mounted_on_detail"
msgstr ""
msgid "install_target_detail"
msgstr ""
msgid "confirm_install_pika"
msgstr ""
msgid "view_logs"
msgstr ""
msgid "parting_status_text"
msgstr ""
msgid "image_status_text"
msgstr ""
msgid "flag1_status_text"
msgstr ""
msgid "flag2_status_text"
msgstr ""
msgid "crypt_status_text"
msgstr ""
msgid "lang_status_text"
msgstr ""
msgid "boot_status_status_text"
msgstr ""
msgid "post_status_text"
msgstr ""
msgid "pikaos_eula_agreement"
msgstr ""
msgid "please_read_eula"
msgstr ""
msgid "eula_buffer"
msgstr ""
msgid "i_agree_eula"
msgstr ""
msgid "eula"
msgstr ""
msgid "pika_nowork_csm"
msgstr ""
msgid "exit"
msgstr ""
msgid "subtitle_partition"
msgstr ""
msgid "title_mountpoint"
msgstr ""
msgid "title_mountopt"
msgstr ""
msgid "pika_install_good"
msgstr ""
msgid "reboot"
msgstr ""
msgid "pika_install_bad"
msgstr ""
msgid "logs"
msgstr ""
msgid "auto_part_installer"
msgstr ""
msgid "choose_drive_auto"
msgstr ""
msgid "no_drive_auto_selected"
msgstr ""
msgid "no_disk_specified"
msgstr ""
msgid "luks_yes_but_empty"
msgstr ""
msgid "enable_luks2_enc"
msgstr ""
msgid "luks2_password"
msgstr ""
msgid "disk_auto_target_small"
msgstr ""
msgid "installation"
msgstr ""
msgid "done"
msgstr ""
msgid "partitioning"
msgstr ""
msgid "luks2_password_confirm"
msgstr "Confirm LUKS Password"
msgid "luks_not_match"
msgstr "The LUKS Passwords do not match!"

360
po/bg.po
View File

@ -1,360 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2024-02-09 17:48+0300\n"
"PO-Revision-Date: 2024-02-19 18:43+0000\n"
"Last-Translator: Peter Tsvetkov <me4odefy@gmail.com>\n"
"Language-Team: Bulgarian <https://hosted.weblate.org/projects/pikaos/"
"gui-applications/pika-installer-gtk4/bg/>\n"
"Language: bg\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.5-dev\n"
"X-Poedit-Basepath: .\n"
msgid "pikaos_installer"
msgstr "PikaOS инсталатор"
msgid "welcome_to_pikaos"
msgstr "Добре Дошли в PikaOS"
msgid "use_pikaos_in_live_media"
msgstr "Използвай PikaOS без да Инсталираш"
msgid "install_distro_to_system"
msgstr "Инсталирай Дистрибуцията"
msgid "welcome"
msgstr "Добре Дошли"
msgid "back"
msgstr "Назад"
msgid "next"
msgstr "Следващ"
msgid "select_a_timezone"
msgstr "Изберте часова зона"
msgid "please_select_timezone"
msgstr "Моля, изберете часова зона за вашата система"
msgid "no_timezone_select"
msgstr "Не е избрана часова зона"
msgid "timezone"
msgstr "Часова Зона"
msgid "choose_install_method"
msgstr "Изберете метод на инсталиране"
msgid "manual_partition_drive"
msgstr "Ръчно Разделяне на Диска"
msgid "auto_partition_drive"
msgstr ""
"Автоматично Разделяне\n"
"Дискът"
msgid "manual_part_installer"
msgstr "Инсталиране с ръчно разделяне на дискове"
msgid "use_utility_manual"
msgstr ""
"Използвайте тази помощна програма, за да разделите/монтирате/форматирате "
"вашите дискове."
msgid "open_gparted"
msgstr "Отвори GPARTED"
msgid "manual_part_note"
msgstr ""
"- Натиснете бутона плюс по-долу, за да започнете да добавяте записи във "
"файловата система.\n"
"Забележки:\n"
" - Този инсталатор не изтрива никакви данни автоматично, форматирайте "
"дисковете си ръчно с GParter.\n"
" - За да добавите linux-swap дял, задайте точка на монтиране на [SWAP]\n"
" - Ние препоръчваме следните дялове на диска, като основно оформление:\n"
" /boot ~ 1000МВ ext4\n"
" /boot/efi ~ 512MB vfat/fat32\n"
" />=25GB btrfs."
msgid "refresh_part_table"
msgstr "Обновяване на Таблицата с дялове"
msgid "validate_fs_table"
msgstr "Проверка на Таблицата на Файловата Система"
msgid "fstab_status_valid"
msgstr "Състояние на Таблица на Файловата Система: Всички записи са валидни!"
msgid "part_need_mapper"
msgstr "Този дял се нуждае от настройка с mapper!"
msgid "fstab_subvol_warn"
msgstr ""
"Предупреждение за Таблица на Файловата Система: Проверката за повторно "
"използване на дяла ще бъде пропусната поради използване на subvol."
msgid "fstab_multiple_part_mountpoint_err"
msgstr ""
"Грешка в Таблица на Файловата Система: Множество дялове са конфигурирани към "
"една и съща точка на монтиране!"
msgid "fstab_no_mountpoint_err"
msgstr ""
"Грешка в Таблица на Файловата Система: един или повече дялове нямам зададена "
"точка за монтиране!"
msgid "fstab_no_partition_err"
msgstr ""
"Грешка в Таблица на Файловата Система: Един или повече записи нямат "
"конфигуриран дял!"
msgid "fstab_badfs"
msgstr ""
"Грешка в Таблица на Файловата Система: Невалидна файлова система: (/dev/"
msgid "fstab_small_efi_size"
msgstr ") Размерът трябва да е поне 512MB!"
msgid "fstab_badfs_efi"
msgstr ") Трябва да е FAT32/vFAT формат, за да бъде монтиран в /boot/efi!"
msgid "fstab_small_boot_size"
msgstr ") Трябва да е поне 1GB!"
msgid "fstab_badfs_boot"
msgstr ") Не трябва да е FAT32/vFAT формат, за да се монтира в /boot!"
msgid "fstab_small_root_size"
msgstr ") Трябва да е поне 26 GB!"
msgid "fstab_badfs_root"
msgstr ""
") Трябва да е Linux* съвместима файлова система, като:\n"
" ext4/btrfs/xfs/f2fs за да се монтира в /!"
msgid "fstab_small_home_size"
msgstr ") Трябва да е поне 11 GB!"
msgid "fstab_badfs_home"
msgstr ""
") Трябва да е Linux* съвместива файлова система, като:\n"
" ext4/btrfs/xfs/f2fs за да се монтира в /home!"
#, fuzzy
msgid "fstab_badfs_swap"
msgstr ") Не трябва да бъде swap, за да се използва като [SWAP]!"
msgid "fstab_bad_mountpoint"
msgstr "Грешка в Таблица на Файловата Система: Невалидна точка за монтиране: ("
msgid "fstab_bad_mountpoint_msg"
msgstr ") Не е валидна точка за монтиране!"
msgid "select_a_language"
msgstr "Изберете език"
msgid "please_select_locale"
msgstr "Моля, изберете локална зона за използване от системата"
msgid "no_locale_selected"
msgstr "Не е избрана локална зона"
msgid "language"
msgstr "Език"
msgid "select_a_keyboard"
msgstr "Изберете клавиатура"
msgid "please_select_keyboard"
msgstr "Моля, избере подредба на клавиатурата, която системата да използва"
msgid "no_keyboard_selected"
msgstr "Не е избрана подредба на клавиатурата"
msgid "test_your_keyboard"
msgstr "Изпробвайте клавиатурата си тук!"
msgid "keyboard"
msgstr "Клавиатура"
msgid "luks_password_for"
msgstr "LUKS парола за"
msgid "luks_how_should"
msgstr "Как трябва"
msgid "be_added_crypttab"
msgstr "да се добави в /etc/crypttab?"
msgid "unlock_boot_manually"
msgstr "Отключи ръчно при зареждане"
msgid "unlock_boot_manual"
msgstr "Автоматично отключване с root отключване"
msgid "sit_back_relax"
msgstr "Седнете, Отпуснете се и гледайте шоуто."
msgid "language_detail"
msgstr "Език:"
msgid "timezone_detail"
msgstr "Часова зона:"
msgid "keyboard_detail"
msgstr "Подредба на клавиатурата:"
msgid "mounted_on_detail"
msgstr "монтиран в"
msgid "install_target_detail"
msgstr "Цел за Инсталиране:"
msgid "confirm_install_pika"
msgstr "Потвърди и Инсталирай PikaOS"
msgid "view_logs"
msgstr "Прегледай логовете"
msgid "parting_status_text"
msgstr "Разделяне на Целевите Дискове."
msgid "image_status_text"
msgstr "Писане на изображение към целта."
msgid "flag1_status_text"
msgstr "Активиране на bls_boot флага на /boot."
msgid "flag2_status_text"
msgstr "Активиране на efi флага на /boot/efi."
msgid "crypt_status_text"
msgstr "Настройване на криптирането crypttab."
msgid "lang_status_text"
msgstr "Настройване на Език и Клавиатура."
msgid "boot_status_status_text"
msgstr "Конфигуриране на bootloader."
msgid "post_status_text"
msgstr "Изпълнение на скрипт след инсталация."
msgid "pikaos_eula_agreement"
msgstr "PikaOS Лицензионно споразумение с потребителя"
msgid "please_read_eula"
msgstr ""
"Моля, прочетете внимателно и се уверете, че сте съгласни със следното, преди "
"да инсталирате PikaOS:"
msgid "eula_buffer"
msgstr ""
"Трябва да имате предвид няколко неща: \n"
" 1 - Вие разбирате, че тази дистрибуция НЕ Е \"С Вкус на Убунту\". \n"
" 2 - Това е хоби дистрибуция, затова даваме всичко от себе си, за да "
"предоставим официална поддръжка, но тя -НЯМА- да бъде гарантирана. \n"
" 3 - Въпреки че PikaOS може да предостави идентични корекции и "
"потребителско изживяване като проекта Nobara, ние НЕ сме пряка част от тях, "
"така че въпроси и доклади за грешки не трябва да се изпращат директно до тях "
"(те не трябва да се справят с това!) \n"
" 4 - Докато инсталаторът работи, НЕ ГО ПРЕКЪСВАЙТЕ! защото в противен "
"случай, ще имате повредена система. \n"
" 5 - Опитайте да ползвате pikman вместо apt, когато използвате "
"терминал - МНОГО по-бърз е! \n"
" 6 - Вие разбирате, че xone драйверът изтегля необходимите двоични "
"файлове локално и не пакетира и не разпространява директно фърмуер, защитен "
"с авторски права, или други свързани данни. \n"
" 7 - Автоматичното разделяне на дяловете ще форматира всички дялове "
"на диска, така че ако искате да направите двойно зареждане, направете "
"отделен EFI дял за PikaOS и използвайте ръчно разделяне на дяловете. \n"
" 8 - В случай, че ви трябва информация за вход в тази сесия: \n"
" - потребителско име: pikaos \n"
" - парола: \n"
" ОЗНАЧАВА: ПРОСТО НАТИСНЕТЕ ENTER"
msgid "i_agree_eula"
msgstr "Съгласен съм и приемам лицензионното споразумение с потребителя"
msgid "eula"
msgstr "ЛСКП"
msgid "pika_nowork_csm"
msgstr ""
"PikaOS работи само на GPT UEFI системи, тази машина е стартирана в CSM/"
"Legacy режим."
msgid "exit"
msgstr "Изход"
msgid "subtitle_partition"
msgstr "Дял"
msgid "title_mountpoint"
msgstr "Точка за монтиране"
msgid "title_mountopt"
msgstr "Допълнителни Точки за Монтиране"
msgid "pika_install_good"
msgstr "Инсталацията на PikaOS беше завършена успешно."
msgid "reboot"
msgstr "Рестартирай"
msgid "pika_install_bad"
msgstr ""
"PikaOS се провали!\n"
"Проверете логовете за повече информация."
msgid "logs"
msgstr "Лог"
msgid "auto_part_installer"
msgstr "Инсталатор за автоматично разделяне на дялове"
msgid "choose_drive_auto"
msgstr ""
"Изберете устройството, на което искате да инсталирате PikaOS\n"
"Забележка: Това ще изтрие целия диск! Направете резервно копие на данните ви!"
msgid "no_drive_auto_selected"
msgstr "Не е избран диск за инсталиране"
msgid "no_disk_specified"
msgstr "Не е посочен диск."
msgid "luks_yes_but_empty"
msgstr "LUKS криптирането е Активирано, но не е предоставена парола."
msgid "enable_luks2_enc"
msgstr "Активиране на LUKS2 криптиране на дискове"
msgid "luks2_password"
msgstr "LUKS Парола"
msgid "disk_auto_target_small"
msgstr ""
"Размерът на диска е прекалено малък, PikaOS се нуждае от 40BG дисково "
"пространство"
msgid "installation"
msgstr "Инсталация"
msgid "done"
msgstr "Готово"
msgid "partitioning"
msgstr "Разделяне на дялове"
msgid "luks2_password_confirm"
msgstr "Confirm LUKS Password"
msgid "luks_not_match"
msgstr "The LUKS Passwords do not match!"

363
po/de.po
View File

@ -1,363 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2024-02-09 17:48+0300\n"
"PO-Revision-Date: 2024-02-19 18:43+0000\n"
"Last-Translator: selektionsrest <selektionsrest@hotmail.de>\n"
"Language-Team: German <https://hosted.weblate.org/projects/pikaos/"
"gui-applications/pika-installer-gtk4/de/>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.5-dev\n"
"X-Poedit-Basepath: .\n"
msgid "pikaos_installer"
msgstr "PikaOS Installationsprogramm"
msgid "welcome_to_pikaos"
msgstr "Willkommen bei PikaOS"
msgid "use_pikaos_in_live_media"
msgstr "Nutze PikaOS im Live Modus"
msgid "install_distro_to_system"
msgstr "Distribution installieren"
msgid "welcome"
msgstr "Willkommen"
msgid "back"
msgstr "Zurück"
msgid "next"
msgstr "Weiter"
msgid "select_a_timezone"
msgstr "Wähle eine Zeitzone"
msgid "please_select_timezone"
msgstr "Bitte wähle eine Zeitzone"
msgid "no_timezone_select"
msgstr "Keine Zeitzone ausgewählt"
msgid "timezone"
msgstr "Zeitzone"
msgid "choose_install_method"
msgstr "Wähle eine Installationsmethode"
msgid "manual_partition_drive"
msgstr "Laufwerk Manuell Partitionieren"
msgid "auto_partition_drive"
msgstr ""
"Automatisches Partitionieren\n"
"Des Laufwerks"
msgid "manual_part_installer"
msgstr "Manuelles Partitionsinstallationsprogramm"
msgid "use_utility_manual"
msgstr ""
"Verwende dieses Dienstprogramm um Laufwerke zu partitionieren/einbinden/"
"formatieren."
msgid "open_gparted"
msgstr "Öffne Gparted"
msgid "manual_part_note"
msgstr ""
"- Klicken Sie unten auf die Plus-Schaltfläche, um mit dem Hinzufügen von "
"Dateisystemeinträgen zu beginnen.\n"
"Anmerkungen:\n"
" - Dieses Installationsprogramm löscht keine Daten automatisch. Formatieren "
"Sie Ihre Laufwerke manuell über gparted.\n"
" - Um eine Linux-Swap-Partition hinzuzufügen, setzen Sie den Einhängepunkt "
"auf [SWAP]\n"
" - Als Basislayout empfehlen wir folgende Partitionen:\n"
" /boot ~ 1000 MB ext4.\n"
" /boot/efi ~ 512 MB vfat/fat32.\n"
" / >= 25 GB Btrfs."
msgid "refresh_part_table"
msgstr "Aktualisiere Partitionstabelle"
msgid "validate_fs_table"
msgstr "Überprüfe die Dateisystemtabelle"
msgid "fstab_status_valid"
msgstr "Status der Dateisystemtabelle: Alle Einträge sind gültig!"
msgid "part_need_mapper"
msgstr "Diese Partition muss als Mapper configuriert werden!"
msgid "fstab_subvol_warn"
msgstr ""
"Warnung zur Dateisystemtabelle: Die Überprüfung der "
"Partitionswiederverwendung wird aufgrund der Subvol-Nutzung übersprungen."
msgid "fstab_multiple_part_mountpoint_err"
msgstr ""
"Fehler in der Dateisystemtabelle: Mehrere Partitionen sind für denselben "
"EInhängepunkt konfiguriert!"
msgid "fstab_no_mountpoint_err"
msgstr ""
"Dateisystemtabellenfehler: Für eine oder mehrere Partitionen ist kein "
"Einhängepunktkonfiguriert!"
msgid "fstab_no_partition_err"
msgstr ""
"Fehler in der Dateisystemtabelle: Für einen oder mehrere Einträge ist keine "
"Partition konfiguriert!"
msgid "fstab_badfs"
msgstr "Fehler in der Dateisystemtabelle: Ungültiges Dateisystem: (/dev/"
msgid "fstab_small_efi_size"
msgstr ") Muss mindestens 512 MB groß sein!"
msgid "fstab_badfs_efi"
msgstr ") Muss FAT32/vFAT sein, um unter /boot/efi eingehängt zu werden!"
msgid "fstab_small_boot_size"
msgstr ") Muss mindestens 1 GB groß sein!"
msgid "fstab_badfs_boot"
msgstr ") Darf nicht FAT32/vFAT sein, um unter /boot eingehängt zu werden!"
msgid "fstab_small_root_size"
msgstr ") Muss mindestens 26 GB groß sein!"
msgid "fstab_badfs_root"
msgstr ""
") Muss ein Linux*-kompatibles Dateisystem sein, wie zum Beispiel:\n"
" ext4/btrfs/xfs/f2fs um unter \"/\" eingehängt werden!"
msgid "fstab_small_home_size"
msgstr ") Muss mindestens 11 GB groß sein!"
msgid "fstab_badfs_home"
msgstr ""
") Muss ein Linux*-kompatibles Dateisystem sein, wie zum Beispiel:\n"
" ext4/btrfs/xfs/f2fs um unter /home eingehängt zu werden!"
msgid "fstab_badfs_swap"
msgstr ") Darf nicht swap sein, um als [SWAP] verwendet zu werden!"
msgid "fstab_bad_mountpoint"
msgstr "Dateisystemtabellenfehler: Ungültiger Einhängepunkt: ("
msgid "fstab_bad_mountpoint_msg"
msgstr ") Ist kein gültiger Einhängepunkt!"
msgid "select_a_language"
msgstr "Sprache auswählen"
msgid "please_select_locale"
msgstr "Bitte wähle ein Gebietsschema aus, das das System verwenden soll"
msgid "no_locale_selected"
msgstr "Kein Gebietsschema ausgewählt"
msgid "language"
msgstr "Sprache"
msgid "select_a_keyboard"
msgstr "Wählen Sie eine Tastatur aus"
msgid "please_select_keyboard"
msgstr "Bitte wähle ein Tastaturlayout für das System aus"
msgid "no_keyboard_selected"
msgstr "Kein Tastaturlayout ausgewählt"
msgid "test_your_keyboard"
msgstr "Teste hier die Tastatur!"
msgid "keyboard"
msgstr "Tastatur"
#, fuzzy
msgid "luks_password_for"
msgstr "LUKS Passwort für"
#, fuzzy
msgid "luks_how_should"
msgstr "How should"
msgid "be_added_crypttab"
msgstr "hinzugefügt werden zu /etc/crypttab?"
msgid "unlock_boot_manually"
msgstr "Beim booten manuell entsperren"
msgid "unlock_boot_manual"
msgstr "Automatisches Entsperren mit Root-Entsperrung"
msgid "sit_back_relax"
msgstr "Lehne dich zurück, entspanne dich und schaue dir die Show an."
msgid "language_detail"
msgstr "Sprache:"
msgid "timezone_detail"
msgstr "Zeitzone:"
msgid "keyboard_detail"
msgstr "Tastaturbelegung:"
msgid "mounted_on_detail"
msgstr "eingehängt unter"
msgid "install_target_detail"
msgstr "Installationsziel:"
msgid "confirm_install_pika"
msgstr "Bestätigen und PikaOS installieren"
msgid "view_logs"
msgstr "Protokolle anzeigen"
msgid "parting_status_text"
msgstr "Partitionieren der Ziellaufwerke."
msgid "image_status_text"
msgstr "Schreibe Abbild auf Ziel"
msgid "flag1_status_text"
msgstr "Aktivieren des bls_boot Flags auf /boot."
msgid "flag2_status_text"
msgstr "Aktivieren des EFI Flags in /boot/efi."
msgid "crypt_status_text"
msgstr "Verschlüsselung crypttab einrichten."
msgid "lang_status_text"
msgstr "Sprache und Tastatur einrichten."
msgid "boot_status_status_text"
msgstr "Bootloader konfigurieren."
msgid "post_status_text"
msgstr "Skript nach der Installation ausführen."
msgid "pikaos_eula_agreement"
msgstr "PikaOS-Benutzerlizenzvereinbarung"
msgid "please_read_eula"
msgstr ""
"Bitte lies Folgendes sorgfältig durch und stelle sicher, dass du damit "
"einverstanden bist, bevor du PikaOS installierst:"
msgid "eula_buffer"
msgstr ""
"Es gibt ein paar Dinge, die du beachten solltest: \n"
" 1 - DU verstehst, dass diese Distribution NICHT als „Ubuntu-Variante“"
" zu betrachten ist. \n"
" 2 - Dies ist eine Hobby-Distribution, daher werden wir unser Bestes "
"tun, um formellen Support zu bieten, dieser kann jedoch NICHT garantiert "
"werden. \n"
" 3 Obwohl PikaOS möglicherweise identische Patches und "
"Benutzererfahrungen wie das Nobara-Projekt bereitstellt, sind wir NICHT "
"direkt ein Teil davon, sodass Fragen und Fehlerberichte nicht direkt an sie "
"gesendet werden sollten (sie müssen sich nicht darum kümmern!) \n"
" 4 - Während das Installationsprogramm ausgeführt wird, UNTERBRICH ES "
"NICHT! Andernfalls erhälst du ein beschädigtes System. \n"
" 5 Versuche, bei der Verwendung des Terminals pikman anstelle von "
"apt zu verwenden, es ist viel schneller! \n"
" 6 Du verstehst, dass der Xone-Treiber benötigte Binärdateien lokal "
"herunterlädt und keine urheberrechtlich geschützte Firmware oder andere "
"verwandte Daten direkt verpackt oder verteilt. \n"
" 7 Durch die automatische Partitionierung werden alle Partitionen "
"auf einem Laufwerk formatiert. Wenn du also Dualboot betreiben möchtest, "
"erstelle eine separate EFI-Partition für PikaOS und verwende die manuelle "
"Partitionierung \n"
" 8 - Falls du die Anmeldeinformationen für diese Sitzung benötigst: \n"
" - Benutzername: pikaos \n"
" - Passwort: \n"
" BEDEUTUNG: DRÜCKEN SIE EINFACH EINGABE"
msgid "i_agree_eula"
msgstr "Ich stimme der Benutzerlizenzvereinbarung zu und akzeptiere sie"
msgid "eula"
msgstr "EULA"
msgid "pika_nowork_csm"
msgstr ""
"PikaOS funktioniert nur auf GPT-UEFI-Systemen. Dieser Computer wurde im CSM/"
"LEGACY-Modus gestartet."
msgid "exit"
msgstr "Beenden"
msgid "subtitle_partition"
msgstr "Partition"
msgid "title_mountpoint"
msgstr "Einhängepunkt"
msgid "title_mountopt"
msgstr "Zusätzliche Einhängeoptionen"
msgid "pika_install_good"
msgstr "Die Installation von PikaOS wurde erfolgreich abgeschlossen."
msgid "reboot"
msgstr "Neu starten"
msgid "pika_install_bad"
msgstr ""
"PikaOS installation ist gescheitert!\n"
"Weitere Informationen findest du in den Protokollen."
msgid "logs"
msgstr "Log"
msgid "auto_part_installer"
msgstr "Installieren mit automatischer Partitionierung"
msgid "choose_drive_auto"
msgstr ""
"Wähle das Laufwerk aus, auf dem du PikaOS installieren möchtest\n"
"Hinweis: Dadurch werden alle Daten auf dem Laufwerk gelöscht, lege eine "
"Sicherungskopie an!"
msgid "no_drive_auto_selected"
msgstr "Kein Datenträger für die Installation ausgewählt"
msgid "no_disk_specified"
msgstr "Kein Datenträger angegeben."
msgid "luks_yes_but_empty"
msgstr "LUKS Verschlüsselung aktiviert, aber kein Passwort angegeben."
msgid "enable_luks2_enc"
msgstr "Aktiviere LUKS2-Festplattenverschlüsselung"
msgid "luks2_password"
msgstr "LUKS Passwort"
msgid "disk_auto_target_small"
msgstr "Speicherplatz zu gering, PikaOS benötigt 40 GB Speicherplatz"
msgid "installation"
msgstr "Installation"
msgid "done"
msgstr "Fertig"
msgid "partitioning"
msgstr "Partitionierung"
msgid "luks2_password_confirm"
msgstr "Confirm LUKS Password"
msgid "luks_not_match"
msgstr "The LUKS Passwords do not match!"

View File

@ -1,330 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2024-02-09 17:48+0300\n"
"PO-Revision-Date: 2024-02-19 00:21+0300\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: en_US\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.4\n"
"X-Poedit-Basepath: .\n"
msgid "pikaos_installer"
msgstr "PikaOS Installer"
msgid "welcome_to_pikaos"
msgstr "Welcome to PikaOS"
msgid "use_pikaos_in_live_media"
msgstr "Use PikaOS in Live media"
msgid "install_distro_to_system"
msgstr "Install Distro to System"
msgid "welcome"
msgstr "Welcome"
msgid "back"
msgstr "Back"
msgid "next"
msgstr "Next"
msgid "select_a_timezone"
msgstr "Select a timezone"
msgid "please_select_timezone"
msgstr "Please select a Time Zone for the system to use"
msgid "no_timezone_select"
msgstr "No Time Zone selected"
msgid "timezone"
msgstr "Time Zone"
msgid "choose_install_method"
msgstr "Choose an install method"
msgid "manual_partition_drive"
msgstr "Manually Partition The Drive"
msgid "auto_partition_drive"
msgstr ""
"Automatically Partition\n"
"The Drive"
msgid "manual_part_installer"
msgstr "Manual Partitioning Installer"
msgid "use_utility_manual"
msgstr "Use this utility to partition/mount/format your drives."
msgid "open_gparted"
msgstr "Open GPARTED"
msgid "manual_part_note"
msgstr ""
" - Press the plus button below to begin adding filesystem entries.\n"
"Notes:\n"
" - This installer doesn't erase any data automatically, format your drives manually via gparted.\n"
" - To Add a linux-swap partition set mountpoint to [SWAP]\n"
" - We recommend the following partitions as a base layout:\n"
" /boot ~ 1000mb ext4.\n"
" /boot/efi ~ 512mb vfat/fat32.\n"
" / >= 25GB btrfs.\n"
" "
msgid "refresh_part_table"
msgstr "Refresh Partition Table"
msgid "validate_fs_table"
msgstr "Validate Filesystem Table"
msgid "fstab_status_valid"
msgstr "Filesystem Table Status: All entries are valid!"
msgid "part_need_mapper"
msgstr "This partition needs a mapper!"
msgid "fstab_subvol_warn"
msgstr "Filesystem Table Warning: Partition reuse check will be skipped due to subvol usage."
msgid "fstab_multiple_part_mountpoint_err"
msgstr "Filesystem Table Error: Multiple partitions are configured to the same mountpoint!"
msgid "fstab_no_mountpoint_err"
msgstr "Filesystem Table Error: One or more partitions don't have a mountpoint configured!"
msgid "fstab_no_partition_err"
msgstr "Filesystem Table Error: One or more entries don't have a partition configured!"
msgid "fstab_badfs"
msgstr "Filesystem Table Error: Invalid filesystem: (/dev/"
msgid "fstab_small_efi_size"
msgstr ") Must at least be 512MBs!"
msgid "fstab_badfs_efi"
msgstr ") Must be FAT32/vFAT to be mounted at /boot/efi!"
msgid "fstab_small_boot_size"
msgstr ") Must at least be 1GBs!"
msgid "fstab_badfs_boot"
msgstr ") Must not be FAT32/vFAT to be mounted at /boot!"
msgid "fstab_small_root_size"
msgstr ") Must at least be 26GBs!"
msgid "fstab_badfs_root"
msgstr ""
") Must be a Linux* compatible filesystem such as:\n"
" ext4/btrfs/xfs/f2fs to be mounted at /!"
msgid "fstab_small_home_size"
msgstr ") Must at least be 11GBs!"
msgid "fstab_badfs_home"
msgstr ""
") Must be a Linux* compatible filesystem such as:\n"
" ext4/btrfs/xfs/f2fs to be mounted at /home!"
msgid "fstab_badfs_swap"
msgstr ") Must not be swap to be used as [SWAP]!"
msgid "fstab_bad_mountpoint"
msgstr "Filesystem Table Error: Invalid mountpoint: ("
msgid "fstab_bad_mountpoint_msg"
msgstr ") Is not a valid mountpoint!"
msgid "select_a_language"
msgstr "Select a language"
msgid "please_select_locale"
msgstr "Please select a locale for the system to use"
msgid "no_locale_selected"
msgstr "No locale selected"
msgid "language"
msgstr "Language"
msgid "select_a_keyboard"
msgstr "Select a keyboard"
msgid "please_select_keyboard"
msgstr "Please select a Keyboard layout for the system to use"
msgid "no_keyboard_selected"
msgstr "No Keyboard Layout selected"
msgid "test_your_keyboard"
msgstr "Test Your Keyboard here!"
msgid "keyboard"
msgstr "Keyboard"
msgid "luks_password_for"
msgstr "LUKS Password for "
msgid "luks_how_should"
msgstr "How should "
msgid "be_added_crypttab"
msgstr " be added to /etc/crypttab?"
msgid "unlock_boot_manually"
msgstr "Unlock on boot manually"
msgid "unlock_boot_manual"
msgstr "Automatic Unlock with root unlock"
msgid "sit_back_relax"
msgstr "Sit back, Relax, and watch the show."
msgid "language_detail"
msgstr "Language:"
msgid "timezone_detail"
msgstr "Timezone:"
msgid "keyboard_detail"
msgstr "Keyboard layout:"
msgid "mounted_on_detail"
msgstr " mounted on "
msgid "install_target_detail"
msgstr "Install Target:"
msgid "confirm_install_pika"
msgstr "Confirm & Install PikaOS"
msgid "view_logs"
msgstr "View Logs"
msgid "parting_status_text"
msgstr "Partitioning The Target Drives."
msgid "image_status_text"
msgstr "Writing image to target."
msgid "flag1_status_text"
msgstr "Enabling bls_boot flag on /boot."
msgid "flag2_status_text"
msgstr "Enabling efi flag on /boot/efi."
msgid "crypt_status_text"
msgstr "Setting up encryption crypttab."
msgid "lang_status_text"
msgstr "Setting Up Language and Keyboard."
msgid "boot_status_status_text"
msgstr "Configuring bootloader."
msgid "post_status_text"
msgstr "Running post installation script."
msgid "pikaos_eula_agreement"
msgstr "PikaOS User license Agreement"
msgid "please_read_eula"
msgstr "Please carefully read and make sure you consent to the following before installing PikaOS:"
msgid "eula_buffer"
msgstr ""
"There are a few things to keep in mind: \n"
" 1 - You understand that this distribution is -NOT- to be considered an Ubuntu Flavor. \n"
" 2 - This is a hobby distribution, so we will try our best to provide formal support but it will -NOT- be guaranteed. \n"
" 3 - Although PikaOS might provide identical patches and user experience to the Nobara project, we are -NOT- directly a part of them so questions and bug reports should not be sent directly to them (they dont have to deal with it!) \n"
" 4 - While the installer is running DO NOT INTERRUPT IT! or you will end up with a corrupted system. \n"
" 5 - Try to use pikman instead of apt when using the terminal, it is much faster! \n"
" 6 - You understand the xone driver downloads needed binaries locally and does not directly package or distribute any copyrighted firmware or other related data. \n"
" 7 - Automatic partitioning will format all partitons on a drive, so if you want to dualboot make a separate EFI partition for PikaOS and use manual partitioning \n"
" 8 - In case you need the login info for this session: \n"
" - username: pikaos \n"
" - password: \n"
" MEANING: JUST PRESS ENTER"
msgid "i_agree_eula"
msgstr "I Agree and Accept the User license Agreement"
msgid "eula"
msgstr "EULA"
msgid "pika_nowork_csm"
msgstr "PikaOS Only works on GPT UEFI Systems, this machine is booted in CSM/LEGACY mode."
msgid "exit"
msgstr "Exit"
msgid "subtitle_partition"
msgstr "Partition"
msgid "title_mountpoint"
msgstr "Mountpoint"
msgid "title_mountopt"
msgstr "Additional Mount Options"
msgid "pika_install_good"
msgstr "The installation of PikaOS has been completed sucessfully."
msgid "reboot"
msgstr "Reboot"
msgid "pika_install_bad"
msgstr ""
"PikaOS has Failed!\n"
"Check logs for further info."
msgid "logs"
msgstr "Log"
msgid "auto_part_installer"
msgstr "Automatic Partitioning Installer"
msgid "choose_drive_auto"
msgstr ""
"Choose the Drive you want to install PikaOS on\n"
"Note: This will erase the entire drive backup your data!"
msgid "no_drive_auto_selected"
msgstr "No disk selected for installation"
msgid "no_disk_specified"
msgstr "No Disk specified."
msgid "luks_yes_but_empty"
msgstr "LUKS Encryption Enabled but no password provided."
msgid "enable_luks2_enc"
msgstr "Enable LUKS2 Disk Encryption"
msgid "luks2_password"
msgstr "LUKS Password"
msgid "disk_auto_target_small"
msgstr "Disk Size too small, PikaOS needs 40GB Disk"
msgid "installation"
msgstr "Installation"
msgid "done"
msgstr "Done"
msgid "partitioning"
msgstr "Partitioning"
msgid "luks2_password_confirm"
msgstr "Confirm LUKS Password"
msgid "luks_not_match"
msgstr "The LUKS Passwords do not match!"

373
po/fr.po
View File

@ -1,373 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2024-02-09 17:48+0300\n"
"PO-Revision-Date: 2024-02-19 18:44+0000\n"
"Last-Translator: piaf <jujuf851@hotmail.com>\n"
"Language-Team: French <https://hosted.weblate.org/projects/pikaos/"
"gui-applications/pika-installer-gtk4/fr/>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.5-dev\n"
"X-Poedit-Basepath: .\n"
msgid "pikaos_installer"
msgstr "Installateur PikaOS"
msgid "welcome_to_pikaos"
msgstr "Bienvenue chez PikaOS"
msgid "use_pikaos_in_live_media"
msgstr "Utiliser PikaOS sur une clé bootable"
#, fuzzy
msgid "install_distro_to_system"
msgstr "Installer la distribution sur le système"
msgid "welcome"
msgstr "Bienvenue"
msgid "back"
msgstr "Retour"
msgid "next"
msgstr "Suivant"
msgid "select_a_timezone"
msgstr "Sélectionner un fuseau horaire"
msgid "please_select_timezone"
msgstr "Veuillez choisir un fuseau horaire à utiliser"
#, fuzzy
msgid "no_timezone_select"
msgstr "Aucun fuseau horaire sélectionné"
msgid "timezone"
msgstr "Fuseau horaire"
msgid "choose_install_method"
msgstr "Choisir la méthode d'installation"
msgid "manual_partition_drive"
msgstr "Partitionner manuellement le lecteur"
#, fuzzy
msgid "auto_partition_drive"
msgstr ""
"Partitionner automatiquement\n"
"le lecteur"
msgid "manual_part_installer"
msgstr "Installateur de partitionnement manuelle"
#, fuzzy
msgid "use_utility_manual"
msgstr "Utilisez cet utilitaire pour partitionner/monter/formater vos disques."
msgid "open_gparted"
msgstr "Ouvrir GPARTED"
msgid "manual_part_note"
msgstr ""
"- Appuyez sur le bouton \"plus\" ci-dessous pour commencer à ajouter des "
"entrées de système de fichiers.\n"
"Notes:\n"
" - Cet installateur n'efface aucune donnée automatiquement, formatez vos "
"disques manuellement via gparted.\n"
" - Pour ajouter une partition linux-swap, définissez le point de montage sur "
"[SWAP].\n"
" - Nous recommandons les partitions suivantes comme disposition de base:\n"
" /boot ~ 1000mb ext4.\n"
" /boot/efi ~ 512mb vfat/fat32.\n"
" / >= 25GB btrfs."
msgid "refresh_part_table"
msgstr "Rafraîchir les tables de partition"
msgid "validate_fs_table"
msgstr "Valider les Tables de Système de Fichiers"
msgid "fstab_status_valid"
msgstr ""
"Statut de Table de Système de Fichiers: Toutes ces entrées sont valides!"
msgid "part_need_mapper"
msgstr "Cette partition a besoin d'un mappeur!"
msgid "fstab_subvol_warn"
msgstr ""
"Avertissement concernant la table du système de fichiers: La vérification "
"de réutilisation du partition sera (skip) à cause de l'usage du subvolume."
msgid "fstab_multiple_part_mountpoint_err"
msgstr ""
"Erreur du Table de Système de Fichiers: Plusieurs partitions sont configuré "
"sur le même point de montage!"
msgid "fstab_no_mountpoint_err"
msgstr ""
"Erreur du Table de Système de Fichiers: Un ou plusieurs partitions n'ont pas "
"un point de montage configuré!"
msgid "fstab_no_partition_err"
msgstr ""
"Erreur du Table de Système de Fichiers: Un ou deux entrées n'ont pas de "
"partitions configurés!"
msgid "fstab_badfs"
msgstr ""
"Erreur du Table de Système de Fichiers: Système de Fichiers invalide: (/dev/"
msgid "fstab_small_efi_size"
msgstr ") Il faut qu'il soit être à 512Mo ou plus!"
msgid "fstab_badfs_efi"
msgstr ") Il faut que FAT32 ou vFAT soit monté vers /boot/efi!"
msgid "fstab_small_boot_size"
msgstr ") Il faut qu'il soit être à 1Go ou plus!"
msgid "fstab_badfs_boot"
msgstr ") Il faut que FAT32 ou vFAT ne soit pas monté vers /boot!"
msgid "fstab_small_root_size"
msgstr ") Il faut qu'il soit être à 26Go ou plus!"
msgid "fstab_badfs_root"
msgstr ""
") Il faut qu'il soit être un système de fichiers compatible Linux* comme:\n"
"*ext4/btrfs/xfs/f2fs à monter vers /! \n"
" (ATTENTION: / signifie le directoire root, ou votre système sera "
"installée!)"
msgid "fstab_small_home_size"
msgstr ") Il faut qu'il soit être à 11Go ou plus!"
msgid "fstab_badfs_home"
msgstr ""
") Il faut qu'il soit être un système de fichiers compatible Linux* comme:\n"
"*ext4/btrfs/xfs/f2fs à monter vers /home!"
msgid "fstab_badfs_swap"
msgstr ") Il fauit qu'il soit pas utilisé pour [SWAP]!"
msgid "fstab_bad_mountpoint"
msgstr "Table de Système de Fichiers: Point de montage invalide: ("
msgid "fstab_bad_mountpoint_msg"
msgstr ") n'est pas un point de montage valide!"
#, fuzzy
msgid "select_a_language"
msgstr "Sélectionner une langue"
#, fuzzy
msgid "please_select_locale"
msgstr "Veuillez sélectionner une locale pour le système à utiliser"
#, fuzzy
msgid "no_locale_selected"
msgstr "Pas de locale sélectionné"
msgid "language"
msgstr "Langue"
msgid "select_a_keyboard"
msgstr "Sélectionner un clavier"
msgid "please_select_keyboard"
msgstr "Veuillez sélectionner un clavier"
#, fuzzy
msgid "no_keyboard_selected"
msgstr "Aucune disposition de clavier sélectionnée"
#, fuzzy
msgid "test_your_keyboard"
msgstr "Testez votre clavier ici!"
msgid "keyboard"
msgstr "Clavier"
msgid "luks_password_for"
msgstr "Mot de passe LUKS pour"
msgid "luks_how_should"
msgstr "Comment voulez-vous"
msgid "be_added_crypttab"
msgstr "à ajouter sur /etc/crypttab?"
msgid "unlock_boot_manually"
msgstr "Déverouiller le boot manuellement"
msgid "unlock_boot_manual"
msgstr "Déverouillage automatique avec le déverouillage root"
msgid "sit_back_relax"
msgstr "Asseyez-vous, détendez-vous et regardez le spectacle."
msgid "language_detail"
msgstr "Langue:"
msgid "timezone_detail"
msgstr "Fuseau horaire:"
msgid "keyboard_detail"
msgstr "Disposition de clavier:"
msgid "mounted_on_detail"
msgstr "montée sur:"
msgid "install_target_detail"
msgstr "Cible d'installation:"
msgid "confirm_install_pika"
msgstr "Confirmer et Installer PikaOS"
msgid "view_logs"
msgstr "Voir les logs"
msgid "parting_status_text"
msgstr "Partitionnement des lecteurs cibles."
#, fuzzy
msgid "image_status_text"
msgstr "Écrire l'image vers la cible."
msgid "flag1_status_text"
msgstr "Activation du flag bls_boot vers /boot."
#, fuzzy
msgid "flag2_status_text"
msgstr "Activation du flag efi vers /boot/efi."
#, fuzzy
msgid "crypt_status_text"
msgstr "Configuration l'encryption crypttab."
msgid "lang_status_text"
msgstr "Configuration du langue et du clavier."
msgid "boot_status_status_text"
msgstr "Configuration du bootloader."
msgid "post_status_text"
msgstr "Éxecution du script du post-installation."
msgid "pikaos_eula_agreement"
msgstr "L'Accord de License Utilisateur PikaOS"
#, fuzzy
msgid "please_read_eula"
msgstr ""
"Veuillez lire attentivement et vous assurer que vous acceptez ce qui suit "
"avant d'installer PikaOS:"
msgid "eula_buffer"
msgstr ""
"There are a few things to keep in mind: \n"
" 1 - Vous comprenez que cette distribution se considére -PAS- comme "
"une Ubuntu Flavor. \n"
" 2 - Celle-ci est une distribution hobby, donc on essai notre "
"meilleur à provide (formal support) mais il sera -PAS- être garantie. \n"
" 3 - Apart que PikaOS peut avoir des patchs identiques et experience "
"d'utilisateur vers le Nobara Project, nous sommes -PAS- directement a part "
"of them donc les questions et les bug reports ne doit être pas directement "
"envoyés à eux (ce n'est pas ) \n"
" 4 - Pendant que l'installation est en éxecution, NE L'INTERROMPEZ "
"PAS! Cela peut finir avec un système corrupu. \n"
" 5 - Essayez d'utiliser Pikman au lieu d'APT, c'est encore plus "
"rapide! \n"
" 6 - Vous comprenez les téléchargements du pilote xone a besoin "
"binares locallement et ne se package pas directement ou ne distribue pas "
"toute firmware copyrighted ou autre datas relatives. \n"
" 7 - Le partitionnement automatique va formatter toutes les "
"partitions sur le disque, donc si vous voulez de dualboot, créez une autre "
"partition EFI for PikaOS et utilisez partitionnement manuelle. \n"
" 8 - Si vous avez besoin l'info de connexion pour cette session: \n"
" - pseudo: pikaos \n"
" - mot de passe: \n"
" QUI VEUT DIRE A JUSTE APPUYER ENTRÉE"
msgid "i_agree_eula"
msgstr "Je suis d'accord et j'accept l'Accord de License Utilisateur"
msgid "eula"
msgstr "Accord de License Utilisateur"
msgid "pika_nowork_csm"
msgstr ""
"PikaOS marche que sur les systèmes GPT UEFI, cette machine est démarré en "
"mode CSM/LEGACY BOOT."
msgid "exit"
msgstr "Sortir"
msgid "subtitle_partition"
msgstr "Partition"
msgid "title_mountpoint"
msgstr "Point de Montage"
msgid "title_mountopt"
msgstr "Options additionnelles de montage"
msgid "pika_install_good"
msgstr "L'installation de PikaOS a bien complété."
msgid "reboot"
msgstr "Redémarrer"
msgid "pika_install_bad"
msgstr ""
"PikaOS a échoué!\n"
"Veuillez voir les logs pour plus d'info."
msgid "logs"
msgstr "Log"
msgid "auto_part_installer"
msgstr "Installeur de Partitionement Automatique"
msgid "choose_drive_auto"
msgstr ""
"Choisisez le lecteur vous voulez installer PikaOS\n"
"Note: Cela va écraser votre lecteur entièrement donc faites un backup!"
msgid "no_drive_auto_selected"
msgstr "Pas de disque séléctionné pour l'installation"
msgid "no_disk_specified"
msgstr "Pas de disque spécifié."
msgid "luks_yes_but_empty"
msgstr "Cryptionage LUKS activé mais aucun de mot de passe fourni."
msgid "enable_luks2_enc"
msgstr "Activer l'Encryption de Disque LUKS2"
msgid "luks2_password"
msgstr "Mot de passe LUKS"
msgid "disk_auto_target_small"
msgstr "Taille du disque trop petit, PikaOS a besoin d'un disque 40Go ou plus"
msgid "installation"
msgstr "Installation"
msgid "done"
msgstr "Fini"
msgid "partitioning"
msgstr "Partitionnement"
msgid "luks2_password_confirm"
msgstr "Confirm LUKS Password"
msgid "luks_not_match"
msgstr "The LUKS Passwords do not match!"

319
po/it.po
View File

@ -1,319 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2024-02-09 17:48+0300\n"
"PO-Revision-Date: 2024-02-19 18:43+0000\n"
"Last-Translator: Urlo30 <urlo30@proton.me>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/pikaos/"
"gui-applications/pika-installer-gtk4/it/>\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.5-dev\n"
"X-Poedit-Basepath: .\n"
msgid "pikaos_installer"
msgstr "L'installer di Pika OS"
msgid "welcome_to_pikaos"
msgstr "Benvenuto a Pika OS"
msgid "use_pikaos_in_live_media"
msgstr "Usa PikaOS in una sessione live"
msgid "install_distro_to_system"
msgstr "Installa il sistema sul tuo computer"
msgid "welcome"
msgstr "Benvenuto"
msgid "back"
msgstr "Indietro"
msgid "next"
msgstr "Avanti"
msgid "select_a_timezone"
msgstr "Seleziona un fuso orario"
msgid "please_select_timezone"
msgstr "Perfavore seleziona un fuso orario da far usare al tuo sistema"
msgid "no_timezone_select"
msgstr "Nessun fuso orario selezionato"
msgid "timezone"
msgstr "Fuso orario"
msgid "choose_install_method"
msgstr "Scegli un metodo di installazione"
msgid "manual_partition_drive"
msgstr "Partiziona manualmente il tuo disco"
msgid "auto_partition_drive"
msgstr ""
"Partiziona automaticamente\\n"
"Il Disco"
msgid "manual_part_installer"
msgstr "Configurazione per la partizione manuale"
msgid "use_utility_manual"
msgstr "Usa questo programma per partizionare/montare/formattare i tuoi dischi."
msgid "open_gparted"
msgstr "Apri GPARTED"
msgid "manual_part_note"
msgstr ""
"- Premi il pulsante qua sotto per cominciare ad aggiungere le voci per il "
"gestore dei file.\\n"
"\n"
"Note:\\n"
"\n"
" -Questo programma non elimina alcun dato automaticamente, formatta i tuoi "
"dischi attraverso gparted.\n"
" -Per aggiungere una partizione SWAP, monta nel punto [SWAP]\n"
" -Vi raccomandiamo le seguenti partizioni come modello di partenza:\\n"
"\n"
" /boot ~ 1000mb ext4.\\n"
"\n"
" /boot/efi ~ 512mb vfat/fat32.\\n"
"\n"
" / >= 25GB btrfs.\\n"
msgid "refresh_part_table"
msgstr "Aggiorna la tabella delle partizioni"
msgid "validate_fs_table"
msgstr "Verifica la tabella del gestore dei file"
msgid "fstab_status_valid"
msgstr "Status della tabella del Gestore dei file: Tutte le voci sono valide!"
msgid "part_need_mapper"
msgstr "Questa partizione ha bisogno di essere mappata!"
msgid "fstab_subvol_warn"
msgstr ""
"Errore dalla tabella del Gestore dei file: Il riuso della partizione verrà "
"saltato per via del corrente uso del sub volume."
msgid "fstab_multiple_part_mountpoint_err"
msgstr ""
msgid "fstab_no_mountpoint_err"
msgstr ""
msgid "fstab_no_partition_err"
msgstr ""
msgid "fstab_badfs"
msgstr ""
msgid "fstab_small_efi_size"
msgstr ""
msgid "fstab_badfs_efi"
msgstr ""
msgid "fstab_small_boot_size"
msgstr ""
msgid "fstab_badfs_boot"
msgstr ""
msgid "fstab_small_root_size"
msgstr ""
msgid "fstab_badfs_root"
msgstr ""
msgid "fstab_small_home_size"
msgstr ""
msgid "fstab_badfs_home"
msgstr ""
msgid "fstab_badfs_swap"
msgstr ""
msgid "fstab_bad_mountpoint"
msgstr ""
msgid "fstab_bad_mountpoint_msg"
msgstr ""
msgid "select_a_language"
msgstr ""
msgid "please_select_locale"
msgstr ""
msgid "no_locale_selected"
msgstr ""
msgid "language"
msgstr ""
msgid "select_a_keyboard"
msgstr ""
msgid "please_select_keyboard"
msgstr ""
msgid "no_keyboard_selected"
msgstr ""
msgid "test_your_keyboard"
msgstr ""
msgid "keyboard"
msgstr ""
msgid "luks_password_for"
msgstr ""
msgid "luks_how_should"
msgstr ""
msgid "be_added_crypttab"
msgstr ""
msgid "unlock_boot_manually"
msgstr ""
msgid "unlock_boot_manual"
msgstr ""
msgid "sit_back_relax"
msgstr ""
msgid "language_detail"
msgstr ""
msgid "timezone_detail"
msgstr ""
msgid "keyboard_detail"
msgstr ""
msgid "mounted_on_detail"
msgstr ""
msgid "install_target_detail"
msgstr ""
msgid "confirm_install_pika"
msgstr ""
msgid "view_logs"
msgstr ""
msgid "parting_status_text"
msgstr ""
msgid "image_status_text"
msgstr ""
msgid "flag1_status_text"
msgstr ""
msgid "flag2_status_text"
msgstr ""
msgid "crypt_status_text"
msgstr ""
msgid "lang_status_text"
msgstr ""
msgid "boot_status_status_text"
msgstr ""
msgid "post_status_text"
msgstr ""
msgid "pikaos_eula_agreement"
msgstr ""
msgid "please_read_eula"
msgstr ""
msgid "eula_buffer"
msgstr ""
msgid "i_agree_eula"
msgstr ""
msgid "eula"
msgstr ""
msgid "pika_nowork_csm"
msgstr ""
msgid "exit"
msgstr ""
msgid "subtitle_partition"
msgstr ""
msgid "title_mountpoint"
msgstr ""
msgid "title_mountopt"
msgstr ""
msgid "pika_install_good"
msgstr ""
msgid "reboot"
msgstr ""
msgid "pika_install_bad"
msgstr ""
msgid "logs"
msgstr ""
msgid "auto_part_installer"
msgstr ""
msgid "choose_drive_auto"
msgstr ""
msgid "no_drive_auto_selected"
msgstr ""
msgid "no_disk_specified"
msgstr ""
msgid "luks_yes_but_empty"
msgstr ""
msgid "enable_luks2_enc"
msgstr ""
msgid "luks2_password"
msgstr ""
msgid "disk_auto_target_small"
msgstr ""
msgid "installation"
msgstr ""
msgid "done"
msgstr ""
msgid "partitioning"
msgstr ""
msgid "luks2_password_confirm"
msgstr "Confirm LUKS Password"
msgid "luks_not_match"
msgstr "The LUKS Passwords do not match!"

View File

@ -1 +0,0 @@
en_US.po

303
po/sv.po
View File

@ -1,303 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2024-02-09 17:48+0300\n"
"PO-Revision-Date: 2024-02-19 18:43+0000\n"
"Last-Translator: Folktro <Folktro@users.noreply.hosted.weblate.org>\n"
"Language-Team: Swedish <https://hosted.weblate.org/projects/pikaos/"
"gui-applications/pika-installer-gtk4/sv/>\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.5-dev\n"
"X-Poedit-Basepath: .\n"
msgid "pikaos_installer"
msgstr "PikaOS Installerare"
msgid "welcome_to_pikaos"
msgstr "Välkommen till PikaOS"
msgid "use_pikaos_in_live_media"
msgstr "Använd PikaOS i en Live media"
msgid "install_distro_to_system"
msgstr "Installera Distro till Systemet"
msgid "welcome"
msgstr "Välkommen"
msgid "back"
msgstr "Tillbaka"
msgid "next"
msgstr "Nästa"
msgid "select_a_timezone"
msgstr "Välj en tidszon"
msgid "please_select_timezone"
msgstr "Vänligen välj en Tidszon för systemet att använda"
msgid "no_timezone_select"
msgstr "Ingen Tidszon vald"
msgid "timezone"
msgstr "Tidszon"
msgid "choose_install_method"
msgstr "Välj en installationsmetod"
msgid "manual_partition_drive"
msgstr "Manuellt Partitionera Disken"
msgid "auto_partition_drive"
msgstr ""
"Automatiskt Partitionera\n"
"Disken"
msgid "manual_part_installer"
msgstr "Manuell Partitionerings-Installerare"
msgid "use_utility_manual"
msgstr ""
"Använd detta verktyg för att partitionera/montera/formatera dina diskar."
msgid "open_gparted"
msgstr "Öppna GParted"
msgid "manual_part_note"
msgstr ""
msgid "refresh_part_table"
msgstr ""
msgid "validate_fs_table"
msgstr ""
msgid "fstab_status_valid"
msgstr ""
msgid "part_need_mapper"
msgstr ""
msgid "fstab_subvol_warn"
msgstr ""
msgid "fstab_multiple_part_mountpoint_err"
msgstr ""
msgid "fstab_no_mountpoint_err"
msgstr ""
msgid "fstab_no_partition_err"
msgstr ""
msgid "fstab_badfs"
msgstr ""
msgid "fstab_small_efi_size"
msgstr ""
msgid "fstab_badfs_efi"
msgstr ""
msgid "fstab_small_boot_size"
msgstr ""
msgid "fstab_badfs_boot"
msgstr ""
msgid "fstab_small_root_size"
msgstr ""
msgid "fstab_badfs_root"
msgstr ""
msgid "fstab_small_home_size"
msgstr ""
msgid "fstab_badfs_home"
msgstr ""
msgid "fstab_badfs_swap"
msgstr ""
msgid "fstab_bad_mountpoint"
msgstr ""
msgid "fstab_bad_mountpoint_msg"
msgstr ""
msgid "select_a_language"
msgstr ""
msgid "please_select_locale"
msgstr ""
msgid "no_locale_selected"
msgstr ""
msgid "language"
msgstr ""
msgid "select_a_keyboard"
msgstr ""
msgid "please_select_keyboard"
msgstr ""
msgid "no_keyboard_selected"
msgstr ""
msgid "test_your_keyboard"
msgstr ""
msgid "keyboard"
msgstr ""
msgid "luks_password_for"
msgstr ""
msgid "luks_how_should"
msgstr ""
msgid "be_added_crypttab"
msgstr ""
msgid "unlock_boot_manually"
msgstr ""
msgid "unlock_boot_manual"
msgstr ""
msgid "sit_back_relax"
msgstr ""
msgid "language_detail"
msgstr ""
msgid "timezone_detail"
msgstr ""
msgid "keyboard_detail"
msgstr ""
msgid "mounted_on_detail"
msgstr ""
msgid "install_target_detail"
msgstr ""
msgid "confirm_install_pika"
msgstr ""
msgid "view_logs"
msgstr ""
msgid "parting_status_text"
msgstr ""
msgid "image_status_text"
msgstr ""
msgid "flag1_status_text"
msgstr ""
msgid "flag2_status_text"
msgstr ""
msgid "crypt_status_text"
msgstr ""
msgid "lang_status_text"
msgstr ""
msgid "boot_status_status_text"
msgstr ""
msgid "post_status_text"
msgstr ""
msgid "pikaos_eula_agreement"
msgstr ""
msgid "please_read_eula"
msgstr ""
msgid "eula_buffer"
msgstr ""
msgid "i_agree_eula"
msgstr ""
msgid "eula"
msgstr ""
msgid "pika_nowork_csm"
msgstr ""
msgid "exit"
msgstr ""
msgid "subtitle_partition"
msgstr ""
msgid "title_mountpoint"
msgstr ""
msgid "title_mountopt"
msgstr ""
msgid "pika_install_good"
msgstr ""
msgid "reboot"
msgstr ""
msgid "pika_install_bad"
msgstr ""
msgid "logs"
msgstr ""
msgid "auto_part_installer"
msgstr ""
msgid "choose_drive_auto"
msgstr ""
msgid "no_drive_auto_selected"
msgstr ""
msgid "no_disk_specified"
msgstr ""
msgid "luks_yes_but_empty"
msgstr ""
msgid "enable_luks2_enc"
msgstr ""
msgid "luks2_password"
msgstr ""
msgid "disk_auto_target_small"
msgstr ""
msgid "installation"
msgstr ""
msgid "done"
msgstr ""
msgid "partitioning"
msgstr ""
msgid "luks2_password_confirm"
msgstr "Confirm LUKS Password"
msgid "luks_not_match"
msgstr "The LUKS Passwords do not match!"

View File

@ -1,3 +1,4 @@
// Use libraries // Use libraries
use adw::prelude::*; use adw::prelude::*;
use adw::*; use adw::*;
@ -6,7 +7,7 @@ use glib::*;
/// Use all libadwaita libraries (libadwaita -> adw because cargo) /// Use all libadwaita libraries (libadwaita -> adw because cargo)
use gtk::*; use gtk::*;
use gettextrs::gettext;
use std::io::BufRead; use std::io::BufRead;
use std::io::BufReader; use std::io::BufReader;
@ -31,7 +32,7 @@ pub fn automatic_partitioning(
// the header text for the partitioning page // the header text for the partitioning page
let partition_method_automatic_header_text = gtk::Label::builder() let partition_method_automatic_header_text = gtk::Label::builder()
.label(gettext("auto_part_installer")) .label(t!("auto_part_installer"))
.halign(gtk::Align::End) .halign(gtk::Align::End)
.hexpand(true) .hexpand(true)
.margin_top(15) .margin_top(15)
@ -58,7 +59,7 @@ pub fn automatic_partitioning(
.build(); .build();
let partition_method_automatic_selection_text = gtk::Label::builder() let partition_method_automatic_selection_text = gtk::Label::builder()
.label(gettext("choose_drive_auto")) .label(t!("choose_drive_auto"))
.justify(Justification::Center) .justify(Justification::Center)
.halign(gtk::Align::Center) .halign(gtk::Align::Center)
.hexpand(true) .hexpand(true)
@ -70,7 +71,7 @@ pub fn automatic_partitioning(
partition_method_automatic_selection_text.add_css_class("medium_sized_text"); partition_method_automatic_selection_text.add_css_class("medium_sized_text");
let devices_selection_expander_row = adw::ExpanderRow::builder() let devices_selection_expander_row = adw::ExpanderRow::builder()
.title(gettext("no_drive_auto_selected")) .title(t!("no_drive_auto_selected"))
.build(); .build();
let null_checkbutton = gtk::CheckButton::builder().build(); let null_checkbutton = gtk::CheckButton::builder().build();
@ -111,7 +112,7 @@ pub fn automatic_partitioning(
); );
let partition_method_automatic_disk_error_label = gtk::Label::builder() let partition_method_automatic_disk_error_label = gtk::Label::builder()
.label(gettext("no_disk_specified")) .label(t!("no_disk_specified"))
.halign(Align::Start) .halign(Align::Start)
.valign(Align::End) .valign(Align::End)
.vexpand(true) .vexpand(true)
@ -119,7 +120,7 @@ pub fn automatic_partitioning(
partition_method_automatic_disk_error_label.add_css_class("small_error_text"); partition_method_automatic_disk_error_label.add_css_class("small_error_text");
let partition_method_automatic_luks_error_label = gtk::Label::builder() let partition_method_automatic_luks_error_label = gtk::Label::builder()
.label(gettext("luks_yes_but_empty")) .label(t!("luks_yes_but_empty"))
.halign(Align::Start) .halign(Align::Start)
.valign(Align::End) .valign(Align::End)
.vexpand(true) .vexpand(true)
@ -128,7 +129,7 @@ pub fn automatic_partitioning(
partition_method_automatic_luks_error_label.add_css_class("small_error_text"); partition_method_automatic_luks_error_label.add_css_class("small_error_text");
let partition_method_automatic_luks_error2_label = gtk::Label::builder() let partition_method_automatic_luks_error2_label = gtk::Label::builder()
.label(gettext("luks_not_match")) .label(t!("luks_not_match"))
.halign(Align::Start) .halign(Align::Start)
.valign(Align::End) .valign(Align::End)
.vexpand(true) .vexpand(true)
@ -141,7 +142,7 @@ pub fn automatic_partitioning(
.build(); .build();
let partition_method_automatic_luks_checkbutton = gtk::CheckButton::builder() let partition_method_automatic_luks_checkbutton = gtk::CheckButton::builder()
.label(gettext("enable_luks2_enc")) .label(t!("enable_luks2_enc"))
.margin_top(15) .margin_top(15)
.margin_bottom(15) .margin_bottom(15)
.margin_start(15) .margin_start(15)
@ -157,13 +158,13 @@ pub fn automatic_partitioning(
partition_method_automatic_luks_listbox.add_css_class("boxed-list"); partition_method_automatic_luks_listbox.add_css_class("boxed-list");
let partition_method_automatic_luks_password_entry = adw::PasswordEntryRow::builder() let partition_method_automatic_luks_password_entry = adw::PasswordEntryRow::builder()
.title(gettext("luks2_password")) .title(t!("luks2_password"))
.hexpand(true) .hexpand(true)
.sensitive(false) .sensitive(false)
.build(); .build();
let partition_method_automatic_luks_password_confirm_entry = adw::PasswordEntryRow::builder() let partition_method_automatic_luks_password_confirm_entry = adw::PasswordEntryRow::builder()
.title(gettext("luks2_password_confirm")) .title(t!("luks2_password_confirm"))
.hexpand(true) .hexpand(true)
.sensitive(true) .sensitive(true)
.visible(false) .visible(false)
@ -224,7 +225,7 @@ pub fn automatic_partitioning(
} }
} else { } else {
partition_method_automatic_disk_error_label.set_visible(true); partition_method_automatic_disk_error_label.set_visible(true);
partition_method_automatic_disk_error_label.set_label(&gettext("disk_auto_target_small")); partition_method_automatic_disk_error_label.set_label(&t!("disk_auto_target_small"));
bottom_next_button.set_sensitive(false); bottom_next_button.set_sensitive(false);
} }
} }

View File

@ -6,8 +6,6 @@ use glib::*;
/// Use all libadwaita libraries (libadwaita -> adw because cargo) /// Use all libadwaita libraries (libadwaita -> adw because cargo)
use gtk::*; use gtk::*;
use gettextrs::gettext;
use std::path::Path; use std::path::Path;
use crate::save_window_size::save_window_size; use crate::save_window_size::save_window_size;
@ -21,8 +19,8 @@ use crate::language_page::language_page;
// build ui function linked to app startup above // build ui function linked to app startup above
pub fn build_ui(app: &adw::Application) { pub fn build_ui(app: &adw::Application) {
// setup glib // setup glib
gtk::glib::set_prgname(Some(gettext("pikaos_installer"))); gtk::glib::set_prgname(Some("pikaos_installer"));
glib::set_application_name(&gettext("pikaos_installer")); glib::set_application_name(&t!("pikaos_installer"));
let glib_settings = gio::Settings::new("com.github.pikaos-linux.pikainstallergtk4"); let glib_settings = gio::Settings::new("com.github.pikaos-linux.pikainstallergtk4");
// Widget Bank // Widget Bank
@ -59,7 +57,7 @@ pub fn build_ui(app: &adw::Application) {
let window = adw::ApplicationWindow::builder() let window = adw::ApplicationWindow::builder()
// The text on the titlebar // The text on the titlebar
.title(gettext("pikaos_installer")) .title(t!("pikaos_installer"))
// link it to the application "app" // link it to the application "app"
.application(app) .application(app)
// Add the box called "_main_box" to it // Add the box called "_main_box" to it

View File

@ -1,6 +1,6 @@
pub const APP_ID: &str = "com.github.pikaos-linux.pikainstallergtk4"; pub const APP_ID: &str = "com.github.pikaos-linux.pikainstallergtk4";
pub const GETTEXT_PACKAGE: &str = env!("CARGO_PKG_NAME"); //pub const GETTEXT_PACKAGE: &str = env!("CARGO_PKG_NAME");
pub const LOCALEDIR: &str = "/usr/share/locale"; //pub const LOCALEDIR: &str = "/usr/share/locale";
//pub const PKGDATADIR: &str = " /usr/share"; //pub const PKGDATADIR: &str = " /usr/share";
//pub const RESOURCES_FILE: &str = concat!(@PKGDATADIR@, "/resources.gresource"); //pub const RESOURCES_FILE: &str = concat!(@PKGDATADIR@, "/resources.gresource");
//pub const VERSION: &str = env!("CARGO_PKG_VERSION"); //pub const VERSION: &str = env!("CARGO_PKG_VERSION");

View File

@ -1,3 +1,4 @@
// Use libraries // Use libraries
use adw::prelude::*; use adw::prelude::*;
use adw::*; use adw::*;
@ -7,12 +8,13 @@ use glib::*;
use gtk::*; use gtk::*;
use crate::config::DISTRO_ICON; use crate::config::DISTRO_ICON;
use gettextrs::gettext;
use std::path::Path; use std::path::Path;
use std::process::Command; use std::process::Command;
pub fn done_page(done_main_box: &gtk::Box, window: &adw::ApplicationWindow) { pub fn done_page(done_main_box: &gtk::Box, window: &adw::ApplicationWindow) {
// the header box for the installation_successful page // the header box for the installation_successful page
let done_header_box = gtk::Box::builder() let done_header_box = gtk::Box::builder()
.orientation(Orientation::Horizontal) .orientation(Orientation::Horizontal)
@ -69,7 +71,7 @@ pub fn done_page(done_main_box: &gtk::Box, window: &adw::ApplicationWindow) {
.build(); .build();
let installation_successful_text = gtk::Label::builder() let installation_successful_text = gtk::Label::builder()
.label(gettext("pika_install_good")) .label(t!("pika_install_good"))
.halign(gtk::Align::Center) .halign(gtk::Align::Center)
.valign(gtk::Align::Center) .valign(gtk::Align::Center)
.build(); .build();
@ -86,7 +88,7 @@ pub fn done_page(done_main_box: &gtk::Box, window: &adw::ApplicationWindow) {
.build(); .build();
let installation_successful_exit_button = gtk::Button::builder() let installation_successful_exit_button = gtk::Button::builder()
.label(gettext("exit")) .label(t!("exit"))
.halign(gtk::Align::Center) .halign(gtk::Align::Center)
.valign(gtk::Align::Center) .valign(gtk::Align::Center)
.margin_start(5) .margin_start(5)
@ -94,7 +96,7 @@ pub fn done_page(done_main_box: &gtk::Box, window: &adw::ApplicationWindow) {
.build(); .build();
let installation_successful_reboot_button = gtk::Button::builder() let installation_successful_reboot_button = gtk::Button::builder()
.label(gettext("reboot")) .label(t!("reboot"))
.halign(gtk::Align::Center) .halign(gtk::Align::Center)
.valign(gtk::Align::Center) .valign(gtk::Align::Center)
.margin_start(5) .margin_start(5)
@ -159,7 +161,7 @@ pub fn done_page(done_main_box: &gtk::Box, window: &adw::ApplicationWindow) {
.build(); .build();
let installation_failed_text = gtk::Label::builder() let installation_failed_text = gtk::Label::builder()
.label(gettext("pika_install_bad")) .label(t!("pika_install_bad"))
.halign(gtk::Align::Center) .halign(gtk::Align::Center)
.valign(gtk::Align::Center) .valign(gtk::Align::Center)
.build(); .build();
@ -176,7 +178,7 @@ pub fn done_page(done_main_box: &gtk::Box, window: &adw::ApplicationWindow) {
.build(); .build();
let installation_failed_exit_button = gtk::Button::builder() let installation_failed_exit_button = gtk::Button::builder()
.label(gettext("exit")) .label(t!("exit"))
.halign(gtk::Align::Center) .halign(gtk::Align::Center)
.valign(gtk::Align::Center) .valign(gtk::Align::Center)
.margin_start(5) .margin_start(5)
@ -184,7 +186,7 @@ pub fn done_page(done_main_box: &gtk::Box, window: &adw::ApplicationWindow) {
.build(); .build();
let installation_failed_logs_button = gtk::Button::builder() let installation_failed_logs_button = gtk::Button::builder()
.label(gettext("logs")) .label(t!("logs"))
.halign(gtk::Align::Center) .halign(gtk::Align::Center)
.valign(gtk::Align::Center) .valign(gtk::Align::Center)
.margin_start(5) .margin_start(5)

View File

@ -1,10 +1,10 @@
use std::{cell::RefCell, rc::Rc, sync::OnceLock}; use std::{cell::RefCell, env, rc::Rc, sync::OnceLock};
use adw::{prelude::*, subclass::prelude::*, *}; use adw::{prelude::*, subclass::prelude::*, *};
use glib::{clone, subclass::Signal, Properties}; use glib::{clone, subclass::Signal, Properties};
use gtk::{glib, Orientation::Horizontal}; use gtk::{glib, Orientation::Horizontal};
use gettextrs::gettext;
// ANCHOR: custom_button // ANCHOR: custom_button
// Object holding the state // Object holding the state
@ -39,6 +39,12 @@ impl ObjectImpl for DriveMountRow {
SIGNALS.get_or_init(|| vec![Signal::builder("row-deleted").build()]) SIGNALS.get_or_init(|| vec![Signal::builder("row-deleted").build()])
} }
fn constructed(&self) { fn constructed(&self) {
let current_locale = match env::var_os("LANG") {
Some(v) => v.into_string().unwrap(),
None => panic!("$LANG is not set"),
};
rust_i18n::set_locale(current_locale.strip_suffix(".UTF-8").unwrap());
self.parent_constructed(); self.parent_constructed();
// Bind label to number // Bind label to number
@ -62,7 +68,7 @@ impl ObjectImpl for DriveMountRow {
partition_row_expander_adw_listbox.add_css_class("boxed-list"); partition_row_expander_adw_listbox.add_css_class("boxed-list");
let partition_row_expander = adw::ExpanderRow::builder() let partition_row_expander = adw::ExpanderRow::builder()
.subtitle(gettext("subtitle_partition")) .subtitle(t!("subtitle_partition"))
.vexpand(true) .vexpand(true)
.hexpand(true) .hexpand(true)
.width_request(300) .width_request(300)
@ -83,7 +89,7 @@ impl ObjectImpl for DriveMountRow {
mountpoint_entry_adw_listbox.add_css_class("boxed-list"); mountpoint_entry_adw_listbox.add_css_class("boxed-list");
let mountpoint_entry_row = adw::EntryRow::builder() let mountpoint_entry_row = adw::EntryRow::builder()
.title(gettext("title_mountpoint")) .title(t!("title_mountpoint"))
.hexpand(true) .hexpand(true)
.valign(gtk::Align::Start) .valign(gtk::Align::Start)
.width_request(300) .width_request(300)
@ -105,7 +111,7 @@ impl ObjectImpl for DriveMountRow {
mountopt_entry_adw_listbox.add_css_class("boxed-list"); mountopt_entry_adw_listbox.add_css_class("boxed-list");
let mountopt_entry_row = adw::EntryRow::builder() let mountopt_entry_row = adw::EntryRow::builder()
.title(gettext("title_mountopt")) .title(t!("title_mountopt"))
.hexpand(true) .hexpand(true)
.valign(gtk::Align::Start) .valign(gtk::Align::Start)
.width_request(300) .width_request(300)

View File

@ -1,3 +1,4 @@
// Use libraries // Use libraries
use adw::prelude::*; use adw::prelude::*;
use adw::*; use adw::*;
@ -6,9 +7,10 @@ use glib::*;
/// Use all libadwaita libraries (libadwaita -> adw because cargo) /// Use all libadwaita libraries (libadwaita -> adw because cargo)
use gtk::*; use gtk::*;
use gettextrs::gettext;
pub fn efi_error_page(window: &adw::ApplicationWindow, content_stack: &gtk::Stack) { pub fn efi_error_page(window: &adw::ApplicationWindow, content_stack: &gtk::Stack) {
// the header box for the efi_error page // the header box for the efi_error page
let efi_error_main_box = gtk::Box::builder() let efi_error_main_box = gtk::Box::builder()
.orientation(Orientation::Vertical) .orientation(Orientation::Vertical)
@ -21,7 +23,7 @@ pub fn efi_error_page(window: &adw::ApplicationWindow, content_stack: &gtk::Stac
// the header text for the efi_error page // the header text for the efi_error page
let efi_error_header_text = gtk::Label::builder() let efi_error_header_text = gtk::Label::builder()
.label(gettext("bad_boot_platfrom")) .label(t!("bad_boot_platfrom"))
.halign(gtk::Align::End) .halign(gtk::Align::End)
.hexpand(true) .hexpand(true)
.margin_top(15) .margin_top(15)
@ -55,14 +57,14 @@ pub fn efi_error_page(window: &adw::ApplicationWindow, content_stack: &gtk::Stac
let efi_error_text = gtk::Label::builder() let efi_error_text = gtk::Label::builder()
.vexpand(true) .vexpand(true)
.hexpand(true) .hexpand(true)
.label(gettext("pika_nowork_csm")) .label(t!("pika_nowork_csm"))
.halign(gtk::Align::Center) .halign(gtk::Align::Center)
.valign(gtk::Align::Center) .valign(gtk::Align::Center)
.build(); .build();
efi_error_text.add_css_class("big_error_text"); efi_error_text.add_css_class("big_error_text");
let exit_button = gtk::Button::builder() let exit_button = gtk::Button::builder()
.label(gettext("exit")) .label(t!("exit"))
.vexpand(true) .vexpand(true)
.hexpand(true) .hexpand(true)
.halign(gtk::Align::Center) .halign(gtk::Align::Center)

View File

@ -1,3 +1,4 @@
// Use libraries // Use libraries
use adw::prelude::*; use adw::prelude::*;
use adw::*; use adw::*;
@ -6,11 +7,12 @@ use glib::*;
/// Use all libadwaita libraries (libadwaita -> adw because cargo) /// Use all libadwaita libraries (libadwaita -> adw because cargo)
use gtk::*; use gtk::*;
use gettextrs::gettext;
pub fn eula_page(content_stack: &gtk::Stack, pub fn eula_page(content_stack: &gtk::Stack,
eula_main_box: &gtk::Box, eula_main_box: &gtk::Box,
) { ) {
// create the bottom box for next and back buttons // create the bottom box for next and back buttons
let bottom_box = gtk::Box::builder() let bottom_box = gtk::Box::builder()
.orientation(Orientation::Horizontal) .orientation(Orientation::Horizontal)
@ -20,7 +22,7 @@ pub fn eula_page(content_stack: &gtk::Stack,
// Next and back button // Next and back button
let bottom_back_button = gtk::Button::builder() let bottom_back_button = gtk::Button::builder()
.label(gettext("back")) .label(t!("back"))
.margin_top(15) .margin_top(15)
.margin_bottom(15) .margin_bottom(15)
.margin_start(15) .margin_start(15)
@ -29,7 +31,7 @@ pub fn eula_page(content_stack: &gtk::Stack,
.hexpand(true) .hexpand(true)
.build(); .build();
let bottom_next_button = gtk::Button::builder() let bottom_next_button = gtk::Button::builder()
.label(gettext("next")) .label(t!("next"))
.margin_top(15) .margin_top(15)
.margin_bottom(15) .margin_bottom(15)
.margin_start(15) .margin_start(15)
@ -54,7 +56,7 @@ pub fn eula_page(content_stack: &gtk::Stack,
// the header text for the eula page // the header text for the eula page
let eula_header_text = gtk::Label::builder() let eula_header_text = gtk::Label::builder()
.label(gettext("pikaos_eula_agreement")) .label(t!("pikaos_eula_agreement"))
.halign(gtk::Align::End) .halign(gtk::Align::End)
.hexpand(true) .hexpand(true)
.margin_top(15) .margin_top(15)
@ -94,7 +96,7 @@ pub fn eula_page(content_stack: &gtk::Stack,
// text above eula selection box // text above eula selection box
let eula_selection_text = gtk::Label::builder() let eula_selection_text = gtk::Label::builder()
.label(gettext("please_read_eula")) .label(t!("please_read_eula"))
.halign(gtk::Align::Center) .halign(gtk::Align::Center)
.hexpand(true) .hexpand(true)
.margin_top(15) .margin_top(15)
@ -105,7 +107,7 @@ pub fn eula_page(content_stack: &gtk::Stack,
eula_selection_text.add_css_class("medium_sized_text"); eula_selection_text.add_css_class("medium_sized_text");
let eula_buffer = gtk::TextBuffer::builder() let eula_buffer = gtk::TextBuffer::builder()
.text(gettext("eula_buffer")) .text(t!("eula_buffer"))
.build(); .build();
let eula_selection_text_view = gtk::TextView::builder() let eula_selection_text_view = gtk::TextView::builder()
@ -125,7 +127,7 @@ pub fn eula_page(content_stack: &gtk::Stack,
.build(); .build();
let eula_accept_checkbutton = gtk::CheckButton::builder() let eula_accept_checkbutton = gtk::CheckButton::builder()
.label(gettext("i_agree_eula")) .label(t!("i_agree_eula"))
.margin_top(15) .margin_top(15)
.margin_bottom(15) .margin_bottom(15)
.margin_start(15) .margin_start(15)

View File

@ -10,13 +10,13 @@ use gtk::*;
use vte::prelude::*; use vte::prelude::*;
use vte::*; use vte::*;
use gettextrs::gettext; use gnome_desktop::*;
use crate::done_page::done_page; use crate::done_page::done_page;
use std::process::Command; use std::process::Command;
use std::fs; use std::{fs};
use std::path::Path; use std::path::Path;
use std::rc::Rc; use std::rc::Rc;
@ -37,6 +37,7 @@ pub fn install_page(
window: &adw::ApplicationWindow, window: &adw::ApplicationWindow,
manual_drive_mount_array: &Rc<RefCell<Vec<DriveMount>>>, manual_drive_mount_array: &Rc<RefCell<Vec<DriveMount>>>,
) { ) {
let mut _iter_count = 0; let mut _iter_count = 0;
_iter_count = 0; _iter_count = 0;
let mut unlocked_array: Vec<String> = Default::default(); let mut unlocked_array: Vec<String> = Default::default();
@ -63,7 +64,7 @@ pub fn install_page(
.build(); .build();
crypttab_password_listbox.add_css_class("boxed-list"); crypttab_password_listbox.add_css_class("boxed-list");
let crypttab_password = adw::PasswordEntryRow::builder() let crypttab_password = adw::PasswordEntryRow::builder()
.title(gettext("luks_password_for") + &partitions.partition) .title(t!("luks_password_for").to_string() + &partitions.partition)
.build(); .build();
crypttab_password.set_show_apply_button(true); crypttab_password.set_show_apply_button(true);
crypttab_password_listbox.append(&crypttab_password); crypttab_password_listbox.append(&crypttab_password);
@ -74,13 +75,13 @@ pub fn install_page(
.width_request(400) .width_request(400)
.height_request(200) .height_request(200)
.heading( .heading(
gettext("luks_how_should") t!("luks_how_should").to_string()
+ &partitions.partition + &partitions.partition
+ &gettext("be_added_crypttab"), + &t!("be_added_crypttab"),
) )
.build(); .build();
crypttab_dialog.add_response("crypttab_dialog_boot", &gettext("unlock_boot_manually")); crypttab_dialog.add_response("crypttab_dialog_boot", &t!("unlock_boot_manually"));
crypttab_dialog.add_response("crypttab_dialog_auto", &gettext("unlock_boot_manual")); crypttab_dialog.add_response("crypttab_dialog_auto", &t!("unlock_boot_manual"));
crypttab_dialog.set_response_enabled("crypttab_dialog_auto", false); crypttab_dialog.set_response_enabled("crypttab_dialog_auto", false);
crypttab_password.connect_apply(clone!(@weak crypttab_password, @strong partitions, @weak crypttab_dialog => move |_| { crypttab_password.connect_apply(clone!(@weak crypttab_password, @strong partitions, @weak crypttab_dialog => move |_| {
let (luks_manual_password_sender, luks_manual_password_receiver) = async_channel::unbounded(); let (luks_manual_password_sender, luks_manual_password_receiver) = async_channel::unbounded();
@ -164,7 +165,7 @@ pub fn install_page(
// Next and back button // Next and back button
let bottom_back_button = gtk::Button::builder() let bottom_back_button = gtk::Button::builder()
.label(gettext("back")) .label(t!("back"))
.margin_top(15) .margin_top(15)
.margin_bottom(15) .margin_bottom(15)
.margin_start(15) .margin_start(15)
@ -192,7 +193,7 @@ pub fn install_page(
// the header text for the install page // the header text for the install page
let install_confirm_header_text = gtk::Label::builder() let install_confirm_header_text = gtk::Label::builder()
.label(gettext("sit_back_relax")) .label(t!("sit_back_relax"))
.halign(gtk::Align::End) .halign(gtk::Align::End)
.hexpand(true) .hexpand(true)
.margin_top(15) .margin_top(15)
@ -233,16 +234,21 @@ pub fn install_page(
.build(); .build();
install_confirm_details_boxed_list.add_css_class("boxed-list"); install_confirm_details_boxed_list.add_css_class("boxed-list");
let locale_name_cli =
Command::new("/usr/lib/pika/pika-installer-gtk4/scripts/locale-name.py")
.arg(fs::read_to_string("/tmp/pika-installer-gtk4-lang.txt").expect("Unable to read file"))
.output()
.expect("failed to execute process");
let locale_name = String::from_utf8(locale_name_cli.stdout).unwrap();
let install_confirm_detail_language = adw::ActionRow::builder() let install_confirm_detail_language = adw::ActionRow::builder()
.title(gettext("language_detail")) .title(t!("language_detail"))
.subtitle( .subtitle(&locale_name)
fs::read_to_string("/tmp/pika-installer-gtk4-lang.txt").expect("Unable to read file"),
)
.build(); .build();
install_confirm_detail_language.add_css_class("property"); install_confirm_detail_language.add_css_class("property");
let install_confirm_detail_timezone = adw::ActionRow::builder() let install_confirm_detail_timezone = adw::ActionRow::builder()
.title(gettext("timezone_detail")) .title(t!("timezone_detail"))
.subtitle( .subtitle(
fs::read_to_string("/tmp/pika-installer-gtk4-timezone.txt") fs::read_to_string("/tmp/pika-installer-gtk4-timezone.txt")
.expect("Unable to read file"), .expect("Unable to read file"),
@ -251,10 +257,14 @@ pub fn install_page(
install_confirm_detail_timezone.add_css_class("property"); install_confirm_detail_timezone.add_css_class("property");
let install_confirm_detail_keyboard = adw::ActionRow::builder() let install_confirm_detail_keyboard = adw::ActionRow::builder()
.title(gettext("keyboard_detail")) .title(t!("keyboard_detail"))
.subtitle( .subtitle(
fs::read_to_string("/tmp/pika-installer-gtk4-keyboard.txt") gnome_desktop::XkbInfo::new()
.expect("Unable to read file"), .layout_info(&fs::read_to_string("/tmp/pika-installer-gtk4-keyboard.txt")
.expect("Unable to read file"))
.unwrap()
.0
.unwrap(),
) )
.build(); .build();
install_confirm_detail_keyboard.add_css_class("property"); install_confirm_detail_keyboard.add_css_class("property");
@ -269,7 +279,7 @@ pub fn install_page(
.title( .title(
"/dev/".to_owned() "/dev/".to_owned()
+ &partitions.partition + &partitions.partition
+ &gettext("mounted_on_detail") + &t!("mounted_on_detail")
+ &partitions.mountpoint, + &partitions.mountpoint,
) )
.build(); .build();
@ -277,7 +287,7 @@ pub fn install_page(
} }
} else { } else {
let install_confirm_detail_target = adw::ActionRow::builder() let install_confirm_detail_target = adw::ActionRow::builder()
.title(gettext("install_target_detail")) .title(t!("install_target_detail"))
.build(); .build();
install_confirm_detail_target.set_subtitle( install_confirm_detail_target.set_subtitle(
&fs::read_to_string("/tmp/pika-installer-gtk4-target-auto.txt") &fs::read_to_string("/tmp/pika-installer-gtk4-target-auto.txt")
@ -380,7 +390,7 @@ pub fn install_page(
} }
let install_confirm_button = gtk::Button::builder() let install_confirm_button = gtk::Button::builder()
.label(gettext("confirm_install_pika")) .label(t!("confirm_install_pika"))
.halign(gtk::Align::Center) .halign(gtk::Align::Center)
.valign(gtk::Align::Center) .valign(gtk::Align::Center)
.build(); .build();
@ -463,9 +473,10 @@ pub fn install_page(
.margin_bottom(15) .margin_bottom(15)
.show_text(true) .show_text(true)
.build(); .build();
install_progress_bar.add_css_class("small_fg_text");
let progress_log_button_content = adw::ButtonContent::builder() let progress_log_button_content = adw::ButtonContent::builder()
.label(gettext("view_logs")) .label(t!("view_logs"))
.icon_name("terminal") .icon_name("terminal")
.build(); .build();
@ -575,7 +586,7 @@ fn begin_install(
if parting_status_state == true { if parting_status_state == true {
println!("Installation status: Parting"); println!("Installation status: Parting");
install_progress_bar.set_fraction(0.20); install_progress_bar.set_fraction(0.20);
install_progress_bar.set_text(Some(&gettext("parting_status_text"))); install_progress_bar.set_text(Some(&t!("parting_status_text")));
} }
} }
})); }));
@ -602,7 +613,7 @@ fn begin_install(
if image_status_state == true { if image_status_state == true {
println!("Installation status: Imaging"); println!("Installation status: Imaging");
install_progress_bar.set_fraction(0.60); install_progress_bar.set_fraction(0.60);
install_progress_bar.set_text(Some(&gettext("image_status_text"))); install_progress_bar.set_text(Some(&t!("image_status_text")));
} }
} }
})); }));
@ -629,7 +640,7 @@ fn begin_install(
if flag1_status_state == true { if flag1_status_state == true {
println!("Installation status: Flag1"); println!("Installation status: Flag1");
install_progress_bar.set_fraction(0.65); install_progress_bar.set_fraction(0.65);
install_progress_bar.set_text(Some(&gettext("flag1_status_text"))); install_progress_bar.set_text(Some(&t!("flag1_status_text")));
} }
} }
})); }));
@ -656,7 +667,7 @@ fn begin_install(
if flag2_status_state == true { if flag2_status_state == true {
println!("Installation status: Flag2"); println!("Installation status: Flag2");
install_progress_bar.set_fraction(0.70); install_progress_bar.set_fraction(0.70);
install_progress_bar.set_text(Some(&gettext("flag2_status_text"))); install_progress_bar.set_text(Some(&t!("flag2_status_text")));
} }
} }
})); }));
@ -683,7 +694,7 @@ fn begin_install(
if crypt_status_state == true { if crypt_status_state == true {
println!("Installation status: Crypttab"); println!("Installation status: Crypttab");
install_progress_bar.set_fraction(0.75); install_progress_bar.set_fraction(0.75);
install_progress_bar.set_text(Some(&gettext("crypt_status_text"))); install_progress_bar.set_text(Some(&t!("crypt_status_text")));
} }
} }
})); }));
@ -710,7 +721,7 @@ fn begin_install(
if lang_status_state == true { if lang_status_state == true {
println!("Installation status: Language"); println!("Installation status: Language");
install_progress_bar.set_fraction(0.80); install_progress_bar.set_fraction(0.80);
install_progress_bar.set_text(Some(&gettext("lang_status_text"))); install_progress_bar.set_text(Some(&t!("lang_status_text")));
} }
} }
})); }));
@ -737,7 +748,7 @@ fn begin_install(
if boot_status_state == true { if boot_status_state == true {
println!("Installation status: Bootloader"); println!("Installation status: Bootloader");
install_progress_bar.set_fraction(0.85); install_progress_bar.set_fraction(0.85);
install_progress_bar.set_text(Some(&gettext("boot_status_status_text"))); install_progress_bar.set_text(Some(&t!("boot_status_status_text")));
} }
} }
})); }));
@ -764,7 +775,7 @@ fn begin_install(
if post_status_state == true { if post_status_state == true {
println!("Installation status: Post Install"); println!("Installation status: Post Install");
install_progress_bar.set_fraction(0.90); install_progress_bar.set_fraction(0.90);
install_progress_bar.set_text(Some(&gettext("post_status_text"))); install_progress_bar.set_text(Some(&t!("post_status_text")));
} }
} }
})); }));

View File

@ -6,13 +6,13 @@ use glib::*;
/// Use all libadwaita libraries (libadwaita -> adw because cargo) /// Use all libadwaita libraries (libadwaita -> adw because cargo)
use gtk::*; use gtk::*;
use gettextrs::gettext;
use std::io::BufRead; use std::io::BufRead;
use std::io::BufReader; use std::io::BufReader;
use std::process::Command; use std::process::Command;
use std::process::Stdio; use std::process::Stdio;
use std::str; use std::{str};
use std::fs; use std::fs;
use std::path::Path; use std::path::Path;
@ -22,6 +22,7 @@ use gnome_desktop::*;
pub fn keyboard_page(content_stack: &gtk::Stack, pub fn keyboard_page(content_stack: &gtk::Stack,
keyboard_main_box: &gtk::Box, keyboard_main_box: &gtk::Box,
) { ) {
// create the bottom box for next and back buttons // create the bottom box for next and back buttons
let bottom_box = gtk::Box::builder() let bottom_box = gtk::Box::builder()
.orientation(Orientation::Horizontal) .orientation(Orientation::Horizontal)
@ -31,7 +32,7 @@ pub fn keyboard_page(content_stack: &gtk::Stack,
// Next and back button // Next and back button
let bottom_back_button = gtk::Button::builder() let bottom_back_button = gtk::Button::builder()
.label(gettext("back")) .label(t!("back"))
.margin_top(15) .margin_top(15)
.margin_bottom(15) .margin_bottom(15)
.margin_start(15) .margin_start(15)
@ -40,7 +41,7 @@ pub fn keyboard_page(content_stack: &gtk::Stack,
.hexpand(true) .hexpand(true)
.build(); .build();
let bottom_next_button = gtk::Button::builder() let bottom_next_button = gtk::Button::builder()
.label(gettext("next")) .label(t!("next"))
.margin_top(15) .margin_top(15)
.margin_bottom(15) .margin_bottom(15)
.margin_start(15) .margin_start(15)
@ -65,7 +66,7 @@ pub fn keyboard_page(content_stack: &gtk::Stack,
// the header text for the keyboard page // the header text for the keyboard page
let keyboard_header_text = gtk::Label::builder() let keyboard_header_text = gtk::Label::builder()
.label(gettext("select_a_keyboard")) .label(t!("select_a_keyboard"))
.halign(gtk::Align::End) .halign(gtk::Align::End)
.hexpand(true) .hexpand(true)
.margin_top(15) .margin_top(15)
@ -105,7 +106,7 @@ pub fn keyboard_page(content_stack: &gtk::Stack,
// text above keyboard selection box // text above keyboard selection box
let keyboard_selection_text = gtk::Label::builder() let keyboard_selection_text = gtk::Label::builder()
.label(gettext("please_select_keyboard")) .label(t!("please_select_keyboard"))
.halign(gtk::Align::Center) .halign(gtk::Align::Center)
.hexpand(true) .hexpand(true)
.margin_top(15) .margin_top(15)
@ -116,11 +117,11 @@ pub fn keyboard_page(content_stack: &gtk::Stack,
keyboard_selection_text.add_css_class("medium_sized_text"); keyboard_selection_text.add_css_class("medium_sized_text");
let keyboard_selection_expander_row = adw::ExpanderRow::builder() let keyboard_selection_expander_row = adw::ExpanderRow::builder()
.title(gettext("no_keyboard_selected")) .title(t!("no_keyboard_selected"))
.build(); .build();
let null_checkbutton = gtk::CheckButton::builder() let null_checkbutton = gtk::CheckButton::builder()
.label(gettext("no_keyboard_selected")) .label(t!("no_keyboard_selected"))
.build(); .build();
let keyboard_selection_expander_row_viewport = let keyboard_selection_expander_row_viewport =
@ -256,7 +257,7 @@ pub fn keyboard_page(content_stack: &gtk::Stack,
.margin_top(15) .margin_top(15)
.margin_end(15) .margin_end(15)
.margin_start(15) .margin_start(15)
.placeholder_text(gettext("test_your_keyboard")) .placeholder_text(t!("test_your_keyboard"))
.build(), .build(),
); );

View File

@ -1,4 +1,5 @@
// Use libraries // Use libraries
use std::env;
use adw::prelude::*; use adw::prelude::*;
use adw::*; use adw::*;
use glib::*; use glib::*;
@ -6,9 +7,7 @@ use glib::*;
/// Use all libadwaita libraries (libadwaita -> adw because cargo) /// Use all libadwaita libraries (libadwaita -> adw because cargo)
use gtk::*; use gtk::*;
use gettextrs::{gettext, LocaleCategory};
use std::env;
use std::io::BufRead; use std::io::BufRead;
use std::io::BufReader; use std::io::BufReader;
use std::process::Command; use std::process::Command;
@ -31,7 +30,7 @@ pub fn language_page(content_stack: &gtk::Stack, window: &adw::ApplicationWindow
// Next and back button // Next and back button
let bottom_back_button = gtk::Button::builder() let bottom_back_button = gtk::Button::builder()
.label(gettext("back")) .label(t!("back"))
.margin_top(15) .margin_top(15)
.margin_bottom(15) .margin_bottom(15)
.margin_start(15) .margin_start(15)
@ -40,7 +39,7 @@ pub fn language_page(content_stack: &gtk::Stack, window: &adw::ApplicationWindow
.hexpand(true) .hexpand(true)
.build(); .build();
let bottom_next_button = gtk::Button::builder() let bottom_next_button = gtk::Button::builder()
.label(gettext("next")) .label(t!("next"))
.margin_top(15) .margin_top(15)
.margin_bottom(15) .margin_bottom(15)
.margin_start(15) .margin_start(15)
@ -70,7 +69,7 @@ pub fn language_page(content_stack: &gtk::Stack, window: &adw::ApplicationWindow
// the header text for the language page // the header text for the language page
let language_header_text = gtk::Label::builder() let language_header_text = gtk::Label::builder()
.label(gettext("select_a_language")) .label(t!("select_a_language"))
.halign(gtk::Align::End) .halign(gtk::Align::End)
.hexpand(true) .hexpand(true)
.margin_top(15) .margin_top(15)
@ -110,7 +109,7 @@ pub fn language_page(content_stack: &gtk::Stack, window: &adw::ApplicationWindow
// text above language selection box // text above language selection box
let language_selection_text = gtk::Label::builder() let language_selection_text = gtk::Label::builder()
.label(gettext("please_select_locale")) .label(t!("please_select_locale"))
.halign(gtk::Align::Center) .halign(gtk::Align::Center)
.hexpand(true) .hexpand(true)
.margin_top(15) .margin_top(15)
@ -121,11 +120,11 @@ pub fn language_page(content_stack: &gtk::Stack, window: &adw::ApplicationWindow
language_selection_text.add_css_class("medium_sized_text"); language_selection_text.add_css_class("medium_sized_text");
let language_selection_expander_row = adw::ExpanderRow::builder() let language_selection_expander_row = adw::ExpanderRow::builder()
.title(gettext("no_locale_selected")) .title(t!("no_locale_selected"))
.build(); .build();
let null_checkbutton = gtk::CheckButton::builder() let null_checkbutton = gtk::CheckButton::builder()
.label(gettext("no_locale_selected")) .label(t!("no_locale_selected"))
.build(); .build();
let language_selection_expander_row_viewport = let language_selection_expander_row_viewport =
@ -275,7 +274,7 @@ pub fn language_page(content_stack: &gtk::Stack, window: &adw::ApplicationWindow
content_stack.add_titled( content_stack.add_titled(
&language_main_box, &language_main_box,
Some("language_page"), Some("language_page"),
&gettext("language"), &t!("language"),
); );
// the header box for the eula page // the header box for the eula page
@ -285,7 +284,7 @@ pub fn language_page(content_stack: &gtk::Stack, window: &adw::ApplicationWindow
// / Content stack appends // / Content stack appends
//// Add the eula_main_box as page: eula_page, Give it nice title //// Add the eula_main_box as page: eula_page, Give it nice title
content_stack.add_titled(&eula_main_box, Some("eula_page"), &gettext("eula")); content_stack.add_titled(&eula_main_box, Some("eula_page"), &t!("eula"));
// the header box for the timezone page // the header box for the timezone page
let timezone_main_box = gtk::Box::builder() let timezone_main_box = gtk::Box::builder()
@ -297,7 +296,7 @@ pub fn language_page(content_stack: &gtk::Stack, window: &adw::ApplicationWindow
content_stack.add_titled( content_stack.add_titled(
&timezone_main_box, &timezone_main_box,
Some("timezone_page"), Some("timezone_page"),
&gettext("timezone"), &t!("timezone"),
); );
// the header box for the keyboard page // the header box for the keyboard page
@ -310,7 +309,7 @@ pub fn language_page(content_stack: &gtk::Stack, window: &adw::ApplicationWindow
content_stack.add_titled( content_stack.add_titled(
&keyboard_main_box, &keyboard_main_box,
Some("keyboard_page"), Some("keyboard_page"),
&gettext("keyboard"), &t!("keyboard"),
); );
// Add install_page.rs as a page for content_stack // Add install_page.rs as a page for content_stack
@ -332,18 +331,18 @@ pub fn language_page(content_stack: &gtk::Stack, window: &adw::ApplicationWindow
content_stack.add_titled( content_stack.add_titled(
&partitioning_main_box, &partitioning_main_box,
Some("partitioning_page"), Some("partitioning_page"),
&gettext("partitioning"), &t!("partitioning"),
); );
//// Add the install_main_box as page: install_page, Give it nice title //// Add the install_main_box as page: install_page, Give it nice title
content_stack.add_titled( content_stack.add_titled(
&install_main_box, &install_main_box,
Some("install_page"), Some("install_page"),
&gettext("installation"), &t!("installation"),
); );
// Add done_page.rs as a page for content_stack // Add done_page.rs as a page for content_stack
content_stack.add_titled(&done_main_box, Some("done_page"), &gettext("done")); content_stack.add_titled(&done_main_box, Some("done_page"), &t!("done"));
bottom_next_button.connect_clicked(clone!(@weak content_stack, @weak window => move |_| { bottom_next_button.connect_clicked(clone!(@weak content_stack, @weak window => move |_| {
if Path::new("/tmp/pika-installer-gtk4-lang.txt").exists() { if Path::new("/tmp/pika-installer-gtk4-lang.txt").exists() {
@ -356,11 +355,7 @@ pub fn language_page(content_stack: &gtk::Stack, window: &adw::ApplicationWindow
.arg("LANG=".to_owned() + &lang_data_buffer_clone.text(&lang_data_buffer_clone.bounds().0, &lang_data_buffer_clone.bounds().1, true).to_string() + ".UTF-8") .arg("LANG=".to_owned() + &lang_data_buffer_clone.text(&lang_data_buffer_clone.bounds().0, &lang_data_buffer_clone.bounds().1, true).to_string() + ".UTF-8")
.spawn() .spawn()
.expect("locale failed to start"); .expect("locale failed to start");
gettextrs::setlocale(LocaleCategory::LcAll, lang_data_buffer_clone.text(&lang_data_buffer_clone.bounds().0, &lang_data_buffer_clone.bounds().1, true).to_string() + ".UTF-8"); rust_i18n::set_locale(&lang_data_buffer_clone.text(&lang_data_buffer_clone.bounds().0, &lang_data_buffer_clone.bounds().1, true).to_string());
if gettext("pikaos_installer") == "pikaos_installer" {
println!("Warning: Current LANG is not supported, using fallback Locale.");
gettextrs::setlocale(LocaleCategory::LcAll, "en_US.UTF8");
}
// Add eula_page.rs as a page for content_stack // Add eula_page.rs as a page for content_stack
while let Some(widget) = eula_main_box.last_child() { while let Some(widget) = eula_main_box.last_child() {
eula_main_box.remove(&widget); eula_main_box.remove(&widget);

View File

@ -1,15 +1,22 @@
// Use libraries // Use libraries
use std::env;
use crate::build_ui::build_ui; use crate::build_ui::build_ui;
use adw::prelude::*; use adw::prelude::*;
use adw::*; use adw::*;
use gdk::Display; use gdk::Display;
/// Use all gtk4 libraries (gtk4 -> gtk because cargo) /// Use all gtk4 libraries (gtk4 -> gtk because cargo)
/// Use all libadwaita libraries (libadwaita -> adw because cargo) /// Use all libadwaita libraries (libadwaita -> adw because cargo)
use gtk::*; use gtk::{CssProvider, STYLE_PROVIDER_PRIORITY_APPLICATION};
mod config; mod config;
use config::{APP_ID, GETTEXT_PACKAGE, LOCALEDIR}; use config::{APP_ID};
use gettextrs::{gettext, LocaleCategory};
// Init translations for current crate.
#[macro_use]
extern crate rust_i18n;
i18n!("locales", fallback = "en_US");
mod automatic_partitioning; mod automatic_partitioning;
mod build_ui; mod build_ui;
@ -28,6 +35,11 @@ mod welcome_page;
/// main function /// main function
fn main() { fn main() {
let current_locale = match env::var_os("LANG") {
Some(v) => v.into_string().unwrap(),
None => panic!("$LANG is not set"),
};
rust_i18n::set_locale(current_locale.strip_suffix(".UTF-8").unwrap());
let application = adw::Application::new(Some(APP_ID), Default::default()); let application = adw::Application::new(Some(APP_ID), Default::default());
application.connect_startup(|app| { application.connect_startup(|app| {
// The CSS "magic" happens here. // The CSS "magic" happens here.
@ -40,17 +52,6 @@ fn main() {
&provider, &provider,
STYLE_PROVIDER_PRIORITY_APPLICATION, STYLE_PROVIDER_PRIORITY_APPLICATION,
); );
// Prepare i18n
gettextrs::setlocale(LocaleCategory::LcAll, "");
gettextrs::bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR)
.expect("Unable to bind the text domain");
gettextrs::textdomain(GETTEXT_PACKAGE).expect("Unable to switch to the text domain");
// Fallback if no translation present
if gettext("pikaos_installer") == "pikaos_installer" {
println!("Warning: Current LANG is not supported, using fallback Locale.");
gettextrs::setlocale(LocaleCategory::LcAll, "en_US.UTF8");
}
app.connect_activate(build_ui); app.connect_activate(build_ui);
}); });

View File

@ -5,9 +5,9 @@ use glib::*;
/// Use all gtk4 libraries (gtk4 -> gtk because cargo) /// Use all gtk4 libraries (gtk4 -> gtk because cargo)
/// Use all libadwaita libraries (libadwaita -> adw because cargo) /// Use all libadwaita libraries (libadwaita -> adw because cargo)
use gtk::*; use gtk::*;
use std::thread; use std::{thread};
use gettextrs::gettext;
use std::cell::RefCell; use std::cell::RefCell;
use std::rc::Rc; use std::rc::Rc;
@ -83,7 +83,7 @@ fn create_mount_row(
.activatable_widget(&partition_button) .activatable_widget(&partition_button)
.title(partition.clone()) .title(partition.clone())
.name(partition.clone()) .name(partition.clone())
.subtitle(gettext("part_need_mapper")) .subtitle(t!("part_need_mapper"))
.build(); .build();
prow prow
} else { } else {
@ -132,6 +132,7 @@ pub fn manual_partitioning(
bottom_next_button: &gtk::Button, bottom_next_button: &gtk::Button,
manual_drive_mount_array: &Rc<RefCell<Vec<DriveMount>>>, manual_drive_mount_array: &Rc<RefCell<Vec<DriveMount>>>,
) -> gtk::Button { ) -> gtk::Button {
let part_table_array: Rc<RefCell<Vec<String>>> = Default::default(); let part_table_array: Rc<RefCell<Vec<String>>> = Default::default();
let check_part_unique = Rc::new(RefCell::new(true)); let check_part_unique = Rc::new(RefCell::new(true));
@ -150,7 +151,7 @@ pub fn manual_partitioning(
// the header text for the partitioning page // the header text for the partitioning page
let partition_method_manual_header_text = gtk::Label::builder() let partition_method_manual_header_text = gtk::Label::builder()
.label(gettext("manual_part_installer")) .label(t!("manual_part_installer"))
.halign(gtk::Align::End) .halign(gtk::Align::End)
.hexpand(true) .hexpand(true)
.margin_top(15) .margin_top(15)
@ -181,11 +182,11 @@ pub fn manual_partitioning(
.build(); .build();
let partition_method_manual_gparted_button_content_text = gtk::Label::builder() let partition_method_manual_gparted_button_content_text = gtk::Label::builder()
.label(gettext("use_utility_manual")) .label(t!("use_utility_manual"))
.build(); .build();
let partition_method_manual_gparted_button_content = adw::ButtonContent::builder() let partition_method_manual_gparted_button_content = adw::ButtonContent::builder()
.label(gettext("open_gparted")) .label(t!("open_gparted"))
.icon_name("gparted") .icon_name("gparted")
.build(); .build();
@ -215,7 +216,7 @@ pub fn manual_partitioning(
.build(); .build();
let partition_method_manual_selection_text = gtk::Label::builder() let partition_method_manual_selection_text = gtk::Label::builder()
.label(gettext("manual_part_note")) .label(t!("manual_part_note"))
.halign(gtk::Align::Center) .halign(gtk::Align::Center)
.hexpand(true) .hexpand(true)
.margin_top(15) .margin_top(15)
@ -226,13 +227,13 @@ pub fn manual_partitioning(
partition_method_manual_selection_text.add_css_class("medium_sized_text"); partition_method_manual_selection_text.add_css_class("medium_sized_text");
let partition_refresh_button = gtk::Button::builder() let partition_refresh_button = gtk::Button::builder()
.label(gettext("refresh_part_table")) .label(t!("refresh_part_table"))
.halign(gtk::Align::End) .halign(gtk::Align::End)
.build(); .build();
partition_refresh_button.add_css_class("destructive-action"); partition_refresh_button.add_css_class("destructive-action");
let fstab_valid_check = gtk::Button::builder() let fstab_valid_check = gtk::Button::builder()
.label(gettext("validate_fs_table")) .label(t!("validate_fs_table"))
.halign(gtk::Align::Start) .halign(gtk::Align::Start)
.build(); .build();
fstab_valid_check.add_css_class("valid-action"); fstab_valid_check.add_css_class("valid-action");
@ -369,13 +370,13 @@ pub fn manual_partitioning(
if *check_part_unique.borrow_mut() == true { if *check_part_unique.borrow_mut() == true {
row_scrw.set_sensitive(false) row_scrw.set_sensitive(false)
} else if row_scrw.property::<String>("subtitle").contains(&gettext("part_need_mapper")) { } else if row_scrw.property::<String>("subtitle").contains(&t!("part_need_mapper").to_string()) {
row_scrw.set_sensitive(false) row_scrw.set_sensitive(false)
} else { } else {
row_scrw.set_sensitive(true) row_scrw.set_sensitive(true)
} }
} }
else if row_scrw.property::<String>("subtitle").contains(&gettext("part_need_mapper")) { else if row_scrw.property::<String>("subtitle").contains(&t!("part_need_mapper").to_string()) {
row_scrw.set_sensitive(false) row_scrw.set_sensitive(false)
} else { } else {
row_scrw.set_sensitive(true) row_scrw.set_sensitive(true)
@ -400,7 +401,7 @@ pub fn manual_partitioning(
if *check_part_unique.borrow_mut() == false { if *check_part_unique.borrow_mut() == false {
partition_method_manual_warn_label partition_method_manual_warn_label
.set_label(&gettext("fstab_subvol_warn")); .set_label(&t!("fstab_subvol_warn"));
partition_method_manual_warn_label.set_visible(true); partition_method_manual_warn_label.set_visible(true);
} else { } else {
partition_method_manual_warn_label.set_visible(false); partition_method_manual_warn_label.set_visible(false);
@ -475,7 +476,7 @@ fn partition_err_check(
{ {
if !partition_method_manual_error_label.is_visible() { if !partition_method_manual_error_label.is_visible() {
partition_method_manual_error_label partition_method_manual_error_label
.set_label(&gettext("fstab_multiple_part_mountpoint_err")); .set_label(&t!("fstab_multiple_part_mountpoint_err"));
partition_method_manual_error_label.set_visible(true); partition_method_manual_error_label.set_visible(true);
partition_method_manual_error_label.set_widget_name("err0"); partition_method_manual_error_label.set_widget_name("err0");
} }
@ -486,7 +487,7 @@ fn partition_err_check(
} }
} else { } else {
if !partition_method_manual_error_label.is_visible() { if !partition_method_manual_error_label.is_visible() {
partition_method_manual_error_label.set_label(&gettext("fstab_no_mountpoint_err")); partition_method_manual_error_label.set_label(&t!("fstab_no_mountpoint_err"));
partition_method_manual_error_label.set_widget_name("err1"); partition_method_manual_error_label.set_widget_name("err1");
partition_method_manual_error_label.set_visible(true); partition_method_manual_error_label.set_visible(true);
} }
@ -494,7 +495,7 @@ fn partition_err_check(
if empty_partition == true { if empty_partition == true {
if !partition_method_manual_error_label.is_visible() { if !partition_method_manual_error_label.is_visible() {
partition_method_manual_error_label.set_label(&gettext("fstab_no_partition_err")); partition_method_manual_error_label.set_label(&t!("fstab_no_partition_err"));
partition_method_manual_error_label.set_widget_name("err2"); partition_method_manual_error_label.set_widget_name("err2");
partition_method_manual_error_label.set_visible(true); partition_method_manual_error_label.set_visible(true);
} }
@ -536,9 +537,9 @@ fn partition_err_check(
if partition_size < 500000000.0 { if partition_size < 500000000.0 {
if !partition_method_manual_error_label.is_visible() { if !partition_method_manual_error_label.is_visible() {
partition_method_manual_error_label.set_label( partition_method_manual_error_label.set_label(
&(gettext("fstab_small_efi_err") &(t!("fstab_small_efi_err").to_string()
+ &drivemounts.partition + &drivemounts.partition
+ &gettext("fstab_small_efi_size")), + &t!("fstab_small_efi_size").to_string()),
); );
partition_method_manual_error_label.set_visible(true); partition_method_manual_error_label.set_visible(true);
partition_method_manual_error_label.set_widget_name("err3"); partition_method_manual_error_label.set_widget_name("err3");
@ -551,9 +552,9 @@ fn partition_err_check(
if partition_fs != "vfat" { if partition_fs != "vfat" {
if !partition_method_manual_error_label.is_visible() { if !partition_method_manual_error_label.is_visible() {
partition_method_manual_error_label.set_label( partition_method_manual_error_label.set_label(
&(gettext("fstab_badfs") &(t!("fstab_badfs").to_string()
+ &drivemounts.partition + &drivemounts.partition
+ &gettext("fstab_badfs_efi")), + &t!("fstab_badfs_efi").to_string()),
); );
partition_method_manual_error_label.set_visible(true); partition_method_manual_error_label.set_visible(true);
partition_method_manual_error_label.set_widget_name("err4"); partition_method_manual_error_label.set_widget_name("err4");
@ -568,9 +569,9 @@ fn partition_err_check(
if partition_size < 1000000000.0 { if partition_size < 1000000000.0 {
if !partition_method_manual_error_label.is_visible() { if !partition_method_manual_error_label.is_visible() {
partition_method_manual_error_label.set_label( partition_method_manual_error_label.set_label(
&(gettext("fstab_small_boot_err") &(t!("fstab_small_boot_err").to_string()
+ &drivemounts.partition + &drivemounts.partition
+ &gettext("fstab_small_boot_size")), + &t!("fstab_small_boot_size").to_string()),
); );
partition_method_manual_error_label.set_visible(true); partition_method_manual_error_label.set_visible(true);
partition_method_manual_error_label.set_widget_name("err5"); partition_method_manual_error_label.set_widget_name("err5");
@ -583,9 +584,9 @@ fn partition_err_check(
if partition_fs == "vfat" { if partition_fs == "vfat" {
if !partition_method_manual_error_label.is_visible() { if !partition_method_manual_error_label.is_visible() {
partition_method_manual_error_label.set_label( partition_method_manual_error_label.set_label(
&(gettext("fstab_badfs") &(t!("fstab_badfs").to_string()
+ &drivemounts.partition + &drivemounts.partition
+ &gettext("fstab_badfs_boot")), + &t!("fstab_badfs_boot").to_string()),
); );
partition_method_manual_error_label.set_visible(true); partition_method_manual_error_label.set_visible(true);
partition_method_manual_error_label.set_widget_name("err6"); partition_method_manual_error_label.set_widget_name("err6");
@ -600,9 +601,9 @@ fn partition_err_check(
if partition_size < 25000000000.0 { if partition_size < 25000000000.0 {
if !partition_method_manual_error_label.is_visible() { if !partition_method_manual_error_label.is_visible() {
partition_method_manual_error_label.set_label( partition_method_manual_error_label.set_label(
&(gettext("fstab_small_root_err") &(t!("fstab_small_root_err").to_string()
+ &drivemounts.partition + &drivemounts.partition
+ &gettext("fstab_small_root_size")), + &t!("fstab_small_root_size").to_string()),
); );
partition_method_manual_error_label.set_visible(true); partition_method_manual_error_label.set_visible(true);
partition_method_manual_error_label.set_widget_name("err7") partition_method_manual_error_label.set_widget_name("err7")
@ -619,9 +620,9 @@ fn partition_err_check(
{ {
if !partition_method_manual_error_label.is_visible() { if !partition_method_manual_error_label.is_visible() {
partition_method_manual_error_label.set_label( partition_method_manual_error_label.set_label(
&(gettext("fstab_badfs") &(t!("fstab_badfs").to_string()
+ &drivemounts.partition + &drivemounts.partition
+ &gettext("fstab_badfs_root")), + &t!("fstab_badfs_root").to_string()),
); );
partition_method_manual_error_label.set_visible(true); partition_method_manual_error_label.set_visible(true);
partition_method_manual_error_label.set_widget_name("err8"); partition_method_manual_error_label.set_widget_name("err8");
@ -636,9 +637,9 @@ fn partition_err_check(
if partition_size < 10000000000.0 { if partition_size < 10000000000.0 {
if !partition_method_manual_error_label.is_visible() { if !partition_method_manual_error_label.is_visible() {
partition_method_manual_error_label.set_label( partition_method_manual_error_label.set_label(
&(gettext("fstab_small_home_err") &(t!("fstab_small_home_err").to_string()
+ &drivemounts.partition + &drivemounts.partition
+ &gettext("fstab_small_home_size")), + &t!("fstab_small_home_size").to_string()),
); );
partition_method_manual_error_label.set_visible(true); partition_method_manual_error_label.set_visible(true);
partition_method_manual_error_label.set_widget_name("err9"); partition_method_manual_error_label.set_widget_name("err9");
@ -655,9 +656,9 @@ fn partition_err_check(
{ {
if !partition_method_manual_error_label.is_visible() { if !partition_method_manual_error_label.is_visible() {
partition_method_manual_error_label.set_label( partition_method_manual_error_label.set_label(
&(gettext("fstab_badfs") &(t!("fstab_badfs").to_string()
+ &drivemounts.partition + &drivemounts.partition
+ &gettext("fstab_badfs_home")), + &t!("fstab_badfs_home").to_string()),
); );
partition_method_manual_error_label.set_visible(true); partition_method_manual_error_label.set_visible(true);
partition_method_manual_error_label.set_widget_name("err10"); partition_method_manual_error_label.set_widget_name("err10");
@ -672,9 +673,9 @@ fn partition_err_check(
if partition_fs != "swap" { if partition_fs != "swap" {
if !partition_method_manual_error_label.is_visible() { if !partition_method_manual_error_label.is_visible() {
partition_method_manual_error_label.set_label( partition_method_manual_error_label.set_label(
&(gettext("fstab_badfs") &(t!("fstab_badfs").to_string()
+ &drivemounts.partition + &drivemounts.partition
+ &gettext("fstab_badfs_swap")), + &t!("fstab_badfs_swap").to_string()),
); );
partition_method_manual_error_label.set_visible(true); partition_method_manual_error_label.set_visible(true);
partition_method_manual_error_label.set_widget_name("err11"); partition_method_manual_error_label.set_widget_name("err11");
@ -692,9 +693,9 @@ fn partition_err_check(
{ {
if !partition_method_manual_error_label.is_visible() { if !partition_method_manual_error_label.is_visible() {
partition_method_manual_error_label.set_label( partition_method_manual_error_label.set_label(
&(gettext("fstab_bad_mountpoint") &(t!("fstab_bad_mountpoint").to_string()
+ &drivemounts.mountpoint + &drivemounts.mountpoint
+ &gettext("fstab_bad_mountpoint_msg")), + &t!("fstab_bad_mountpoint_msg").to_string()),
); );
partition_method_manual_error_label.set_visible(true); partition_method_manual_error_label.set_visible(true);
partition_method_manual_error_label.set_widget_name("err12"); partition_method_manual_error_label.set_widget_name("err12");
@ -705,7 +706,7 @@ fn partition_err_check(
} }
} }
if !partition_method_manual_error_label.is_visible() { if !partition_method_manual_error_label.is_visible() {
partition_method_manual_valid_label.set_label(&gettext("fstab_status_valid")); partition_method_manual_valid_label.set_label(&t!("fstab_status_valid"));
partition_method_manual_valid_label.set_visible(true) partition_method_manual_valid_label.set_visible(true)
} else { } else {
partition_method_manual_valid_label.set_visible(false) partition_method_manual_valid_label.set_visible(false)

View File

@ -7,13 +7,13 @@ use glob::glob;
/// Use all libadwaita libraries (libadwaita -> adw because cargo) /// Use all libadwaita libraries (libadwaita -> adw because cargo)
use gtk::*; use gtk::*;
use gettextrs::gettext;
use crate::automatic_partitioning::automatic_partitioning; use crate::automatic_partitioning::automatic_partitioning;
use crate::install_page::install_page; use crate::install_page::install_page;
use crate::manual_partitioning::manual_partitioning; use crate::manual_partitioning::manual_partitioning;
use std::fs; use std::{fs};
use std::path::Path; use std::path::Path;
use std::cell::RefCell; use std::cell::RefCell;
@ -32,6 +32,7 @@ pub fn partitioning_page(
content_stack: &gtk::Stack, content_stack: &gtk::Stack,
window: &adw::ApplicationWindow, window: &adw::ApplicationWindow,
) { ) {
let manual_drive_mount_array: Rc<RefCell<Vec<DriveMount>>> = Default::default(); let manual_drive_mount_array: Rc<RefCell<Vec<DriveMount>>> = Default::default();
// create the bottom box for next and back buttons // create the bottom box for next and back buttons
@ -43,7 +44,7 @@ pub fn partitioning_page(
// Next and back button // Next and back button
let bottom_back_button = gtk::Button::builder() let bottom_back_button = gtk::Button::builder()
.label(gettext("back")) .label(t!("back"))
.margin_top(15) .margin_top(15)
.margin_bottom(15) .margin_bottom(15)
.margin_start(15) .margin_start(15)
@ -52,7 +53,7 @@ pub fn partitioning_page(
.hexpand(true) .hexpand(true)
.build(); .build();
let bottom_next_button = gtk::Button::builder() let bottom_next_button = gtk::Button::builder()
.label(gettext("next")) .label(t!("next"))
.margin_top(15) .margin_top(15)
.margin_bottom(15) .margin_bottom(15)
.margin_start(15) .margin_start(15)
@ -77,7 +78,7 @@ pub fn partitioning_page(
// the header text for the partitioning page // the header text for the partitioning page
let partitioning_header_text = gtk::Label::builder() let partitioning_header_text = gtk::Label::builder()
.label(gettext("choose_install_method")) .label(t!("choose_install_method"))
.halign(gtk::Align::End) .halign(gtk::Align::End)
.hexpand(true) .hexpand(true)
.margin_top(15) .margin_top(15)
@ -130,7 +131,7 @@ pub fn partitioning_page(
.build(); .build();
let manual_method_button_content_text = gtk::Label::builder() let manual_method_button_content_text = gtk::Label::builder()
.label(gettext("manual_partition_drive")) .label(t!("manual_partition_drive"))
.margin_top(0) .margin_top(0)
.margin_bottom(15) .margin_bottom(15)
.margin_start(15) .margin_start(15)
@ -156,7 +157,7 @@ pub fn partitioning_page(
.build(); .build();
let automatic_method_button_content_text = gtk::Label::builder() let automatic_method_button_content_text = gtk::Label::builder()
.label(gettext("auto_partition_drive")) .label(t!("auto_partition_drive"))
.margin_top(0) .margin_top(0)
.margin_bottom(15) .margin_bottom(15)
.margin_start(15) .margin_start(15)

View File

@ -13,6 +13,10 @@
color: green; color: green;
} }
.small_fg_text {
font-size: 16px;
}
.big_error_text { .big_error_text {
font-size: 32px; font-size: 32px;
color: red; color: red;

View File

@ -6,13 +6,13 @@ use glib::*;
/// Use all libadwaita libraries (libadwaita -> adw because cargo) /// Use all libadwaita libraries (libadwaita -> adw because cargo)
use gtk::*; use gtk::*;
use gettextrs::gettext;
use std::io::BufRead; use std::io::BufRead;
use std::io::BufReader; use std::io::BufReader;
use std::process::Command; use std::process::Command;
use std::process::Stdio; use std::process::Stdio;
use std::str; use std::{str};
use std::fs; use std::fs;
use std::path::Path; use std::path::Path;
@ -20,6 +20,7 @@ use std::path::Path;
pub fn timezone_page(content_stack: &gtk::Stack, pub fn timezone_page(content_stack: &gtk::Stack,
timezone_main_box: &gtk::Box, timezone_main_box: &gtk::Box,
) { ) {
// create the bottom box for next and back buttons // create the bottom box for next and back buttons
let bottom_box = gtk::Box::builder() let bottom_box = gtk::Box::builder()
.orientation(Orientation::Horizontal) .orientation(Orientation::Horizontal)
@ -29,7 +30,7 @@ pub fn timezone_page(content_stack: &gtk::Stack,
// Next and back button // Next and back button
let bottom_back_button = gtk::Button::builder() let bottom_back_button = gtk::Button::builder()
.label(gettext("back")) .label(t!("back"))
.margin_top(15) .margin_top(15)
.margin_bottom(15) .margin_bottom(15)
.margin_start(15) .margin_start(15)
@ -38,7 +39,7 @@ pub fn timezone_page(content_stack: &gtk::Stack,
.hexpand(true) .hexpand(true)
.build(); .build();
let bottom_next_button = gtk::Button::builder() let bottom_next_button = gtk::Button::builder()
.label(gettext("next")) .label(t!("next"))
.margin_top(15) .margin_top(15)
.margin_bottom(15) .margin_bottom(15)
.margin_start(15) .margin_start(15)
@ -63,7 +64,7 @@ pub fn timezone_page(content_stack: &gtk::Stack,
// the header text for the timezone page // the header text for the timezone page
let timezone_header_text = gtk::Label::builder() let timezone_header_text = gtk::Label::builder()
.label(gettext("select_a_timezone")) .label(t!("select_a_timezone"))
.halign(gtk::Align::End) .halign(gtk::Align::End)
.hexpand(true) .hexpand(true)
.margin_top(15) .margin_top(15)
@ -103,7 +104,7 @@ pub fn timezone_page(content_stack: &gtk::Stack,
// text above timezone selection box // text above timezone selection box
let timezone_selection_text = gtk::Label::builder() let timezone_selection_text = gtk::Label::builder()
.label(gettext("please_select_timezone")) .label(t!("please_select_timezone"))
.halign(gtk::Align::Center) .halign(gtk::Align::Center)
.hexpand(true) .hexpand(true)
.margin_top(15) .margin_top(15)
@ -114,11 +115,11 @@ pub fn timezone_page(content_stack: &gtk::Stack,
timezone_selection_text.add_css_class("medium_sized_text"); timezone_selection_text.add_css_class("medium_sized_text");
let timezone_selection_expander_row = adw::ExpanderRow::builder() let timezone_selection_expander_row = adw::ExpanderRow::builder()
.title(gettext("no_timezone_select")) .title(t!("no_timezone_select"))
.build(); .build();
let null_checkbutton = gtk::CheckButton::builder() let null_checkbutton = gtk::CheckButton::builder()
.label(gettext("no_timezone_select")) .label(t!("no_timezone_select"))
.build(); .build();
let timezone_selection_expander_row_viewport = let timezone_selection_expander_row_viewport =

View File

@ -7,7 +7,7 @@ use glib::*;
/// Use all libadwaita libraries (libadwaita -> adw because cargo) /// Use all libadwaita libraries (libadwaita -> adw because cargo)
use gtk::*; use gtk::*;
use gettextrs::gettext;
pub fn welcome_page(window: &adw::ApplicationWindow, content_stack: &gtk::Stack) { pub fn welcome_page(window: &adw::ApplicationWindow, content_stack: &gtk::Stack) {
// the header box for the welcome page // the header box for the welcome page
@ -22,7 +22,7 @@ pub fn welcome_page(window: &adw::ApplicationWindow, content_stack: &gtk::Stack)
// the header text for the welcome page // the header text for the welcome page
let welcome_header_text = gtk::Label::builder() let welcome_header_text = gtk::Label::builder()
.label(gettext("welcome_to_pikaos")) .label(rust_i18n::t!("welcome_to_pikaos"))
.halign(gtk::Align::End) .halign(gtk::Align::End)
.hexpand(true) .hexpand(true)
.margin_top(15) .margin_top(15)
@ -64,7 +64,7 @@ pub fn welcome_page(window: &adw::ApplicationWindow, content_stack: &gtk::Stack)
.build(); .build();
let live_media_button_content_text = gtk::Label::builder() let live_media_button_content_text = gtk::Label::builder()
.label(gettext("use_pikaos_in_live_media")) .label(rust_i18n::t!("use_pikaos_in_live_media"))
.margin_top(0) .margin_top(0)
.margin_bottom(15) .margin_bottom(15)
.margin_start(15) .margin_start(15)
@ -86,7 +86,7 @@ pub fn welcome_page(window: &adw::ApplicationWindow, content_stack: &gtk::Stack)
.build(); .build();
let install_media_button_content_text = gtk::Label::builder() let install_media_button_content_text = gtk::Label::builder()
.label(gettext("install_distro_to_system")) .label(rust_i18n::t!("install_distro_to_system"))
.margin_top(0) .margin_top(0)
.margin_bottom(15) .margin_bottom(15)
.margin_start(15) .margin_start(15)
@ -160,7 +160,7 @@ pub fn welcome_page(window: &adw::ApplicationWindow, content_stack: &gtk::Stack)
// / Content stack appends // / Content stack appends
//// Add the welcome_main_box as page: welcome_page, Give it nice title //// Add the welcome_main_box as page: welcome_page, Give it nice title
content_stack.add_titled(&welcome_main_box, Some("welcome_page"), &gettext("welcome")); content_stack.add_titled(&welcome_main_box, Some("welcome_page"), &rust_i18n::t!("welcome"));
install_media_button.connect_clicked(clone!(@weak content_stack => move |_| content_stack.set_visible_child_name("language_page"))); install_media_button.connect_clicked(clone!(@weak content_stack => move |_| content_stack.set_visible_child_name("language_page")));
live_media_button.connect_clicked(clone!(@weak window => move |_| window.close())); live_media_button.connect_clicked(clone!(@weak window => move |_| window.close()));