mirror of
https://github.com/GyulyVGC/sniffnet.git
synced 2026-10-25 08:31:35 +00:00
fixed failing tests
This commit is contained in:
commit
4fa8d13b8a
28 changed files with 940 additions and 180 deletions
|
|
@ -97,6 +97,60 @@
|
|||
"contributions": [
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "DocRAID",
|
||||
"name": "Limdongju",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/69478178?v=4",
|
||||
"profile": "https://github.com/DocRAID",
|
||||
"contributions": [
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "fuzunspm",
|
||||
"name": "Hüseyin Fahri Uzun",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/12132746?v=4",
|
||||
"profile": "https://github.com/fuzunspm",
|
||||
"contributions": [
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "jauderho",
|
||||
"name": "Jauder Ho",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/13562?v=4",
|
||||
"profile": "https://github.com/jauderho",
|
||||
"contributions": [
|
||||
"infra"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "amarao",
|
||||
"name": "George Shuklin",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/652496?v=4",
|
||||
"profile": "https://github.com/amarao",
|
||||
"contributions": [
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "franciscoBSalgueiro",
|
||||
"name": "Francisco Salgueiro",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/92053465?v=4",
|
||||
"profile": "https://github.com/franciscoBSalgueiro",
|
||||
"contributions": [
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "philclifford",
|
||||
"name": "Phil Clifford",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/8797027?v=4",
|
||||
"profile": "https://hachyderm.io/@phil8o",
|
||||
"contributions": [
|
||||
"platform"
|
||||
]
|
||||
}
|
||||
],
|
||||
"contributorsPerLine": 7,
|
||||
|
|
|
|||
8
.github/dependabot.yml
vendored
8
.github/dependabot.yml
vendored
|
|
@ -5,6 +5,14 @@
|
|||
|
||||
version: 2
|
||||
updates:
|
||||
|
||||
# Maintain dependencies for GitHub Actions
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
|
||||
# Maintain dependencies for cargo
|
||||
- package-ecosystem: cargo
|
||||
directory: "/"
|
||||
schedule:
|
||||
|
|
|
|||
4
.github/workflows/rust.yml
vendored
4
.github/workflows/rust.yml
vendored
|
|
@ -21,7 +21,7 @@ jobs:
|
|||
name: Rustfmt
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
profile: minimal
|
||||
|
|
@ -37,7 +37,7 @@ jobs:
|
|||
name: Clippy
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
profile: minimal
|
||||
|
|
|
|||
14
CHANGELOG.md
14
CHANGELOG.md
|
|
@ -1,6 +1,20 @@
|
|||
# Change Log
|
||||
All Sniffnet releases with the relative changes are documented in this file.
|
||||
|
||||
|
||||
## [1.1.4] - UNRELEASED
|
||||
|
||||
- Added new translations of the GUI:
|
||||
* Portuguese 🇵🇹 ([#134](https://github.com/GyulyVGC/sniffnet/pull/134))
|
||||
* Russian 🇷🇺 ([#151](https://github.com/GyulyVGC/sniffnet/pull/151))
|
||||
* Korean 🇰🇷 ([#128](https://github.com/GyulyVGC/sniffnet/pull/128))
|
||||
* Turkish 🇹🇷 ([#139](https://github.com/GyulyVGC/sniffnet/pull/139))
|
||||
* ...the total number of supported languages is now 13 🎉
|
||||
- Changed adapter buttons format and improved volume slider layout (see [#119](https://github.com/GyulyVGC/sniffnet/issues/119) for more details or to give me further suggestions)
|
||||
- Scrollbars are now highlighted when hovering on the respective scrollable area
|
||||
- Fixed problem causing a crash on macOS when starting Sniffnet's Homebrew package or building from source in release mode ([#109](https://github.com/GyulyVGC/sniffnet/issues/109) - [#137](https://github.com/GyulyVGC/sniffnet/issues/137))
|
||||
|
||||
|
||||
## [1.1.3] - 2023-04-04
|
||||
|
||||
- Added Romanian translation 🇷🇴 ([#113](https://github.com/GyulyVGC/sniffnet/pull/113))
|
||||
|
|
|
|||
|
|
@ -6,16 +6,26 @@ A big shout-out to all the contributors of Sniffnet ([emoji key](https://allcont
|
|||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="10%"><a href="https://github.com/Crirock"><img src="https://avatars.githubusercontent.com/u/101053125?v=4?s=60" width="60px;" alt="Cristiano"/><br /><sub><b>Cristiano</b></sub></a><br /><a href="https://github.com/GyulyVGC/sniffnet/commits?author=Crirock" title="Code">💻</a> <a href="#ideas-Crirock" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="10%"><a href="https://github.com/acolombier"><img src="https://avatars.githubusercontent.com/u/7086688?v=4?s=60" width="60px;" alt="Antoine Colombier"/><br /><sub><b>Antoine Colombier</b></sub></a><br /><a href="https://github.com/GyulyVGC/sniffnet/commits?author=acolombier" title="Tests">⚠️</a> <a href="#translation-acolombier" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="10%"><a href="https://github.com/colin99d"><img src="https://avatars.githubusercontent.com/u/72827203?v=4?s=60" width="60px;" alt="Colin Delahunty"/><br /><sub><b>Colin Delahunty</b></sub></a><br /><a href="https://github.com/GyulyVGC/sniffnet/commits?author=colin99d" title="Tests">⚠️</a></td>
|
||||
<td align="center" valign="top" width="10%"><a href="https://github.com/AmadeusGraves"><img src="https://avatars.githubusercontent.com/u/18572939?v=4?s=60" width="60px;" alt="AmadeusGraves"/><br /><sub><b>AmadeusGraves</b></sub></a><br /><a href="#translation-AmadeusGraves" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="10%"><a href="https://github.com/Charpy"><img src="https://avatars.githubusercontent.com/u/4827568?v=4?s=60" width="60px;" alt="Charpy"/><br /><sub><b>Charpy</b></sub></a><br /><a href="#translation-Charpy" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="10%"><a href="https://github.com/Kiruyuto"><img src="https://avatars.githubusercontent.com/u/80201134?v=4?s=60" width="60px;" alt="Hubert"/><br /><sub><b>Hubert</b></sub></a><br /><a href="#translation-Kiruyuto" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="10%"><a href="https://github.com/luca3s"><img src="https://avatars.githubusercontent.com/u/41015240?v=4?s=60" width="60px;" alt="luca3s"/><br /><sub><b>luca3s</b></sub></a><br /><a href="#translation-luca3s" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="10%"><a href="https://github.com/cxw620"><img src="https://avatars.githubusercontent.com/u/70561268?v=4?s=60" width="60px;" alt="陈寒彤"/><br /><sub><b>陈寒彤</b></sub></a><br /><a href="#translation-cxw620" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="10%"><a href="http://catchts.com"><img src="https://avatars.githubusercontent.com/u/16646733?v=4?s=60" width="60px;" alt="yossarian"/><br /><sub><b>yossarian</b></sub></a><br /><a href="#translation-captain-yossarian" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="10%"><a href="https://github.com/ervinpopescu"><img src="https://avatars.githubusercontent.com/u/84532402?v=4?s=60" width="60px;" alt="ervinpopescu"/><br /><sub><b>ervinpopescu</b></sub></a><br /><a href="#translation-ervinpopescu" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Crirock"><img src="https://avatars.githubusercontent.com/u/101053125?v=4?s=100" width="100px;" alt="Cristiano"/><br /><sub><b>Cristiano</b></sub></a><br /><a href="https://github.com/GyulyVGC/sniffnet/commits?author=Crirock" title="Code">💻</a> <a href="#ideas-Crirock" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/acolombier"><img src="https://avatars.githubusercontent.com/u/7086688?v=4?s=100" width="100px;" alt="Antoine Colombier"/><br /><sub><b>Antoine Colombier</b></sub></a><br /><a href="https://github.com/GyulyVGC/sniffnet/commits?author=acolombier" title="Tests">⚠️</a> <a href="#translation-acolombier" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/colin99d"><img src="https://avatars.githubusercontent.com/u/72827203?v=4?s=100" width="100px;" alt="Colin Delahunty"/><br /><sub><b>Colin Delahunty</b></sub></a><br /><a href="https://github.com/GyulyVGC/sniffnet/commits?author=colin99d" title="Tests">⚠️</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/AmadeusGraves"><img src="https://avatars.githubusercontent.com/u/18572939?v=4?s=100" width="100px;" alt="AmadeusGraves"/><br /><sub><b>AmadeusGraves</b></sub></a><br /><a href="#translation-AmadeusGraves" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Charpy"><img src="https://avatars.githubusercontent.com/u/4827568?v=4?s=100" width="100px;" alt="Charpy"/><br /><sub><b>Charpy</b></sub></a><br /><a href="#translation-Charpy" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Kiruyuto"><img src="https://avatars.githubusercontent.com/u/80201134?v=4?s=100" width="100px;" alt="Hubert"/><br /><sub><b>Hubert</b></sub></a><br /><a href="#translation-Kiruyuto" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/luca3s"><img src="https://avatars.githubusercontent.com/u/41015240?v=4?s=100" width="100px;" alt="luca3s"/><br /><sub><b>luca3s</b></sub></a><br /><a href="#translation-luca3s" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/cxw620"><img src="https://avatars.githubusercontent.com/u/70561268?v=4?s=100" width="100px;" alt="陈寒彤"/><br /><sub><b>陈寒彤</b></sub></a><br /><a href="#translation-cxw620" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://catchts.com"><img src="https://avatars.githubusercontent.com/u/16646733?v=4?s=100" width="100px;" alt="yossarian"/><br /><sub><b>yossarian</b></sub></a><br /><a href="#translation-captain-yossarian" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ervinpopescu"><img src="https://avatars.githubusercontent.com/u/84532402?v=4?s=100" width="100px;" alt="ervinpopescu"/><br /><sub><b>ervinpopescu</b></sub></a><br /><a href="#translation-ervinpopescu" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DocRAID"><img src="https://avatars.githubusercontent.com/u/69478178?v=4?s=100" width="100px;" alt="Limdongju"/><br /><sub><b>Limdongju</b></sub></a><br /><a href="#translation-DocRAID" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/fuzunspm"><img src="https://avatars.githubusercontent.com/u/12132746?v=4?s=100" width="100px;" alt="Hüseyin Fahri Uzun"/><br /><sub><b>Hüseyin Fahri Uzun</b></sub></a><br /><a href="#translation-fuzunspm" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jauderho"><img src="https://avatars.githubusercontent.com/u/13562?v=4?s=100" width="100px;" alt="Jauder Ho"/><br /><sub><b>Jauder Ho</b></sub></a><br /><a href="#infra-jauderho" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/amarao"><img src="https://avatars.githubusercontent.com/u/652496?v=4?s=100" width="100px;" alt="George Shuklin"/><br /><sub><b>George Shuklin</b></sub></a><br /><a href="#translation-amarao" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/franciscoBSalgueiro"><img src="https://avatars.githubusercontent.com/u/92053465?v=4?s=100" width="100px;" alt="Francisco Salgueiro"/><br /><sub><b>Francisco Salgueiro</b></sub></a><br /><a href="#translation-franciscoBSalgueiro" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://hachyderm.io/@phil8o"><img src="https://avatars.githubusercontent.com/u/8797027?v=4?s=100" width="100px;" alt="Phil Clifford"/><br /><sub><b>Phil Clifford</b></sub></a><br /><a href="#platform-philclifford" title="Packaging/porting to new platform">📦</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
|||
198
Cargo.lock
generated
198
Cargo.lock
generated
|
|
@ -24,6 +24,15 @@ version = "0.1.8"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046"
|
||||
|
||||
[[package]]
|
||||
name = "addr2line"
|
||||
version = "0.19.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97"
|
||||
dependencies = [
|
||||
"gimli",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "adler"
|
||||
version = "1.0.2"
|
||||
|
|
@ -129,6 +138,21 @@ version = "1.1.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
||||
|
||||
[[package]]
|
||||
name = "backtrace"
|
||||
version = "0.3.67"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca"
|
||||
dependencies = [
|
||||
"addr2line",
|
||||
"cc",
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"miniz_oxide",
|
||||
"object",
|
||||
"rustc-demangle",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "base64"
|
||||
version = "0.21.0"
|
||||
|
|
@ -269,12 +293,6 @@ version = "1.0.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||
|
||||
[[package]]
|
||||
name = "cfg_aliases"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e"
|
||||
|
||||
[[package]]
|
||||
name = "chrono"
|
||||
version = "0.4.24"
|
||||
|
|
@ -395,6 +413,12 @@ version = "1.1.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
|
||||
|
||||
[[package]]
|
||||
name = "com-rs"
|
||||
version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bf43edc576402991846b093a7ca18a3477e0ef9c588cde84964b5d3e43016642"
|
||||
|
||||
[[package]]
|
||||
name = "combine"
|
||||
version = "4.6.6"
|
||||
|
|
@ -661,9 +685,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "d3d12"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "827914e1f53b1e0e025ecd3d967a7836b7bcb54520f90e21ef8df7b4d88a2759"
|
||||
checksum = "d8f0de2f5a8e7bd4a9eec0e3c781992a4ce1724f68aec7d7a3715344de8b39da"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"libloading 0.7.4",
|
||||
|
|
@ -1166,6 +1190,12 @@ dependencies = [
|
|||
"weezl",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gimli"
|
||||
version = "0.27.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4"
|
||||
|
||||
[[package]]
|
||||
name = "glam"
|
||||
version = "0.21.3"
|
||||
|
|
@ -1190,6 +1220,18 @@ dependencies = [
|
|||
"web-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "glow"
|
||||
version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4e007a07a24de5ecae94160f141029e9a347282cfe25d1d58d85d845cf3130f1"
|
||||
dependencies = [
|
||||
"js-sys",
|
||||
"slotmap",
|
||||
"wasm-bindgen",
|
||||
"web-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "glow_glyph"
|
||||
version = "0.5.1"
|
||||
|
|
@ -1197,7 +1239,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "0f4e62c64947b9a24fe20e2bba9ad819ecb506ef5c8df7ffc4737464c6df9510"
|
||||
dependencies = [
|
||||
"bytemuck",
|
||||
"glow",
|
||||
"glow 0.11.2",
|
||||
"glyph_brush",
|
||||
"log",
|
||||
]
|
||||
|
|
@ -1259,6 +1301,19 @@ dependencies = [
|
|||
"bitflags",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gpu-allocator"
|
||||
version = "0.22.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ce95f9e2e11c2c6fadfce42b5af60005db06576f231f5c92550fdded43c423e8"
|
||||
dependencies = [
|
||||
"backtrace",
|
||||
"log",
|
||||
"thiserror",
|
||||
"winapi",
|
||||
"windows",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gpu-descriptor"
|
||||
version = "0.2.3"
|
||||
|
|
@ -1291,9 +1346,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "h2"
|
||||
version = "0.3.16"
|
||||
version = "0.3.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5be7b54589b581f624f566bf5d8eb2bab1db736c51528720b6bd36b96b55924d"
|
||||
checksum = "66b91535aa35fea1523ad1b86cb6b53c28e0ae566ba4a460f4457e936cad7c6f"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"fnv",
|
||||
|
|
@ -1326,6 +1381,21 @@ dependencies = [
|
|||
"ahash",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hassle-rs"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "90601c6189668c7345fc53842cb3f3a3d872203d523be1b3cb44a36a3e62fb85"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"com-rs",
|
||||
"libc",
|
||||
"libloading 0.7.4",
|
||||
"thiserror",
|
||||
"widestring",
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hermit-abi"
|
||||
version = "0.2.6"
|
||||
|
|
@ -1444,9 +1514,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "iced"
|
||||
version = "0.8.0"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d11492d829f0035ed3fa9217faccf16e57a5612a74dc7c49822c6f6a5ab1b829"
|
||||
checksum = "efbddf356d01e9d41cd394a9d04d62bfd89650a30f12fda5839cabb8c4591c88"
|
||||
dependencies = [
|
||||
"iced_core",
|
||||
"iced_futures",
|
||||
|
|
@ -1461,9 +1531,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "iced_core"
|
||||
version = "0.8.0"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a571e43a4dea90e3a7a9f8bb40e4238d0847f9f9d862c87a6719e3e241dd6292"
|
||||
checksum = "11e1942e28dedee756cc27e67e7a838cdc1e59fb6bf9627ec9f709ab3b135782"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"instant",
|
||||
|
|
@ -1485,13 +1555,13 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "iced_glow"
|
||||
version = "0.7.0"
|
||||
version = "0.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d237909aab71ad4b0f005784f9530d3b352eb95b3514bed1a6eb9fc019e9fe04"
|
||||
checksum = "adc5b081015f5c75777c96ad75e2288916e7d444c97396d6d136517877ef9129"
|
||||
dependencies = [
|
||||
"bytemuck",
|
||||
"euclid",
|
||||
"glow",
|
||||
"glow 0.11.2",
|
||||
"glow_glyph",
|
||||
"glyph_brush",
|
||||
"iced_graphics",
|
||||
|
|
@ -1501,9 +1571,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "iced_graphics"
|
||||
version = "0.7.0"
|
||||
version = "0.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d58ad90b769e97bd245946b03c4932f82841c8645a7cee47d99115c8b341e8aa"
|
||||
checksum = "338a6aff7db906537074ad0fe8b720cfdb9512cdfea43c628c76bd1cf50fdcc0"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"bytemuck",
|
||||
|
|
@ -1520,9 +1590,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "iced_lazy"
|
||||
version = "0.5.0"
|
||||
version = "0.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "370ffb291ff5609ca488a2596df98a049b2a4d572c621aa0b2c586694ca327cf"
|
||||
checksum = "bdf1cb6b8cd90488d3a03fbf438ad42038cb83c81a0d61f3692c51875efdb818"
|
||||
dependencies = [
|
||||
"iced_native",
|
||||
"ouroboros",
|
||||
|
|
@ -1530,23 +1600,24 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "iced_native"
|
||||
version = "0.9.1"
|
||||
version = "0.10.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b9942cdcd78591e816aae558721942aa366b03ed7f3f964b51de23c68ec78be7"
|
||||
checksum = "2b3dd42731b43f1ee0a028af35abefbb756956d093552d0f92f678628e6384fe"
|
||||
dependencies = [
|
||||
"iced_core",
|
||||
"iced_futures",
|
||||
"iced_style",
|
||||
"num-traits",
|
||||
"thiserror",
|
||||
"twox-hash",
|
||||
"unicode-segmentation",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "iced_style"
|
||||
version = "0.7.0"
|
||||
version = "0.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ad5eb9547d32b9ff9b019526657974112b86baab58b2b91b1624316b309700b6"
|
||||
checksum = "0e37333dc2991201140302cd0d4cea051bd37ca3671d5008ec85df86d232ff30"
|
||||
dependencies = [
|
||||
"iced_core",
|
||||
"once_cell",
|
||||
|
|
@ -1555,9 +1626,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "iced_wgpu"
|
||||
version = "0.9.0"
|
||||
version = "0.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fbdcca29092b56f6715dfbc183796b627d3ead82883594e7d6babf5c76151c45"
|
||||
checksum = "478803c56061f567ce5ddf223b20d11d3c118cc46bb0d0552370dc65cdc4cb9c"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"bytemuck",
|
||||
|
|
@ -1576,9 +1647,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "iced_winit"
|
||||
version = "0.8.0"
|
||||
version = "0.9.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8ef7747251a0b4a417589c5a8139d1858edf88d05566018a1a0b772d0229ef68"
|
||||
checksum = "8a59ea3a85149a6a1f9e92b6c740ce90f04e5c7d848cfd05742336863fceb955"
|
||||
dependencies = [
|
||||
"iced_futures",
|
||||
"iced_graphics",
|
||||
|
|
@ -2021,9 +2092,9 @@ checksum = "16cf681a23b4d0a43fc35024c176437f9dcd818db34e0f42ab456a0ee5ad497b"
|
|||
|
||||
[[package]]
|
||||
name = "naga"
|
||||
version = "0.10.0"
|
||||
version = "0.11.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "262d2840e72dbe250e8cf2f522d080988dfca624c4112c096238a4845f591707"
|
||||
checksum = "5eafe22a23b797c9bc227c6c896419b26b5bb88fa903417a3adaed08778850d5"
|
||||
dependencies = [
|
||||
"bit-set",
|
||||
"bitflags",
|
||||
|
|
@ -2293,6 +2364,15 @@ dependencies = [
|
|||
"objc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "object"
|
||||
version = "0.30.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "oboe"
|
||||
version = "0.5.0"
|
||||
|
|
@ -2608,9 +2688,9 @@ checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
|
|||
|
||||
[[package]]
|
||||
name = "plotters-iced"
|
||||
version = "0.7.0"
|
||||
version = "0.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bc932e1abce0251e908cf30bde8e66c30db30753a30b1b72f64846824783e0bf"
|
||||
checksum = "83affd565dbe7b16a6bb4935ab5d3a91abc88a8e75ca29a17306f298495c7c8e"
|
||||
dependencies = [
|
||||
"iced_graphics",
|
||||
"iced_native",
|
||||
|
|
@ -2905,6 +2985,12 @@ dependencies = [
|
|||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustc-demangle"
|
||||
version = "0.1.22"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d4a36c42d1873f9a77c53bde094f9664d9891bc604a45b4798fd2c389ed12e5b"
|
||||
|
||||
[[package]]
|
||||
name = "rustc-hash"
|
||||
version = "1.1.0"
|
||||
|
|
@ -3034,18 +3120,18 @@ checksum = "58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2a"
|
|||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.159"
|
||||
version = "1.0.160"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3c04e8343c3daeec41f58990b9d77068df31209f2af111e059e9fe9646693065"
|
||||
checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.159"
|
||||
version = "1.0.160"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4c614d17805b093df4b147b51339e7e44bf05ef59fba1e45d83500bcfb4d8585"
|
||||
checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
|
@ -3810,15 +3896,17 @@ checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb"
|
|||
|
||||
[[package]]
|
||||
name = "wgpu"
|
||||
version = "0.14.2"
|
||||
version = "0.15.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "81f643110d228fd62a60c5ed2ab56c4d5b3704520bd50561174ec4ec74932937"
|
||||
checksum = "d745a1b6d91d85c33defbb29f0eee0450e1d2614d987e14bf6baf26009d132d7"
|
||||
dependencies = [
|
||||
"arrayvec 0.7.2",
|
||||
"cfg-if",
|
||||
"js-sys",
|
||||
"log",
|
||||
"naga",
|
||||
"parking_lot 0.12.1",
|
||||
"profiling",
|
||||
"raw-window-handle 0.5.0",
|
||||
"smallvec",
|
||||
"static_assertions",
|
||||
|
|
@ -3832,14 +3920,13 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "wgpu-core"
|
||||
version = "0.14.2"
|
||||
version = "0.15.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6000d1284ef8eec6076fd5544a73125fd7eb9b635f18dceeb829d826f41724ca"
|
||||
checksum = "7131408d940e335792645a98f03639573b0480e9e2e7cddbbab74f7c6d9f3fff"
|
||||
dependencies = [
|
||||
"arrayvec 0.7.2",
|
||||
"bit-vec",
|
||||
"bitflags",
|
||||
"cfg_aliases",
|
||||
"codespan-reporting",
|
||||
"fxhash",
|
||||
"log",
|
||||
|
|
@ -3856,9 +3943,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "wgpu-hal"
|
||||
version = "0.14.1"
|
||||
version = "0.15.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3cc320a61acb26be4f549c9b1b53405c10a223fbfea363ec39474c32c348d12f"
|
||||
checksum = "bdcf61a283adc744bb5453dd88ea91f3f86d5ca6b027661c6c73c7734ae0288b"
|
||||
dependencies = [
|
||||
"android_system_properties",
|
||||
"arrayvec 0.7.2",
|
||||
|
|
@ -3870,11 +3957,14 @@ dependencies = [
|
|||
"d3d12",
|
||||
"foreign-types 0.3.2",
|
||||
"fxhash",
|
||||
"glow",
|
||||
"glow 0.12.1",
|
||||
"gpu-alloc",
|
||||
"gpu-allocator",
|
||||
"gpu-descriptor",
|
||||
"hassle-rs",
|
||||
"js-sys",
|
||||
"khronos-egl",
|
||||
"libc",
|
||||
"libloading 0.7.4",
|
||||
"log",
|
||||
"metal",
|
||||
|
|
@ -3895,18 +3985,20 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "wgpu-types"
|
||||
version = "0.14.1"
|
||||
version = "0.15.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fb6b28ef22cac17b9109b25b3bf8c9a103eeb293d7c5f78653979b09140375f6"
|
||||
checksum = "32444e121b0bd00cb02c0de32fde457a9491bd44e03e7a5db6df9b1da2f6f110"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"js-sys",
|
||||
"web-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wgpu_glyph"
|
||||
version = "0.18.0"
|
||||
version = "0.19.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0cafb82773e0f124a33674dab5de4dff73175aeb921949047ab014efb58fb446"
|
||||
checksum = "e25440d5f32ec39de49c57c15c2d3f9133a7939b069b5ad07e5afd8b78fb8adc"
|
||||
dependencies = [
|
||||
"bytemuck",
|
||||
"glyph_brush",
|
||||
|
|
@ -3914,6 +4006,12 @@ dependencies = [
|
|||
"wgpu",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "widestring"
|
||||
version = "0.5.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983"
|
||||
|
||||
[[package]]
|
||||
name = "winapi"
|
||||
version = "0.3.9"
|
||||
|
|
|
|||
10
Cargo.toml
10
Cargo.toml
|
|
@ -31,13 +31,13 @@ chrono = { version = "0.4.24", default_features = false, features = ["clock"] }
|
|||
thousands = "0.2.0"
|
||||
indexmap = "1.9.3"
|
||||
plotters = { version = "0.3.4", default_features = false, features = ["area_series"] }
|
||||
iced = { version = "0.8.0", features = ["tokio", "image"] }
|
||||
iced_native = "0.9.1"
|
||||
iced_lazy = "0.5.0"
|
||||
plotters-iced = "0.7.0"
|
||||
iced = { version = "0.9.0", features = ["tokio", "image"] }
|
||||
iced_native = "0.10.1"
|
||||
iced_lazy = "0.6.1"
|
||||
plotters-iced = "0.8.0"
|
||||
maxminddb = "0.23.0"
|
||||
confy = "0.5.1"
|
||||
serde = { version = "1.0.159", default_features = false, features = ["derive"] }
|
||||
serde = { version = "1.0.160", default_features = false, features = ["derive"] }
|
||||
rodio = { version = "0.17.1", default_features = false, features = ["mp3"] }
|
||||
reqwest = { version = "0.11.16", features = ["json", "blocking"] }
|
||||
|
||||
|
|
|
|||
|
|
@ -302,6 +302,13 @@ If you have problems after having installed Sniffnet through the provided instal
|
|||
it could be due to your OS not being compatible with the pre-built binaries I generated for you. <br>
|
||||
Reach me out, and I'll try to generate an installer for your specific operating system.
|
||||
|
||||
### Rendering problems
|
||||
|
||||
In some cases, especially if you are running on an old architecture, the `wgpu` default renderer used by [iced](https://github.com/iced-rs/iced)
|
||||
may cause some problems that could prevent you from running Sniffnet. <br>
|
||||
In this case, you can try building the application from the [`glow-renderer`](https://github.com/GyulyVGC/sniffnet/tree/glow-renderer)
|
||||
branch, which uses the `glow` renderer.
|
||||
|
||||
### ***In any case don't hesitate to [open an issue](https://github.com/GyulyVGC/sniffnet/issues), and I will do my best to help you!***
|
||||
|
||||
</details>
|
||||
|
|
|
|||
|
|
@ -96,10 +96,12 @@ z
|
|||
¿
|
||||
Ê
|
||||
Î
|
||||
Ö
|
||||
Ü
|
||||
à
|
||||
á
|
||||
â
|
||||
ã
|
||||
ä
|
||||
ç
|
||||
è
|
||||
|
|
@ -111,6 +113,7 @@ z
|
|||
ñ
|
||||
ó
|
||||
ô
|
||||
õ
|
||||
ö
|
||||
ù
|
||||
ú
|
||||
|
|
@ -120,9 +123,14 @@ z
|
|||
ą
|
||||
ć
|
||||
ę
|
||||
ğ
|
||||
İ
|
||||
ı
|
||||
ł
|
||||
ń
|
||||
ś
|
||||
Ş
|
||||
ş
|
||||
ź
|
||||
ż
|
||||
Ș
|
||||
|
|
@ -132,16 +140,20 @@ z
|
|||
В
|
||||
Г
|
||||
Д
|
||||
Е
|
||||
З
|
||||
И
|
||||
К
|
||||
Л
|
||||
М
|
||||
Н
|
||||
О
|
||||
П
|
||||
Р
|
||||
С
|
||||
Т
|
||||
У
|
||||
Ф
|
||||
Ч
|
||||
Ш
|
||||
Щ
|
||||
|
|
@ -172,13 +184,16 @@ z
|
|||
ч
|
||||
ш
|
||||
щ
|
||||
ъ
|
||||
ы
|
||||
ь
|
||||
э
|
||||
ю
|
||||
я
|
||||
ё
|
||||
є
|
||||
і
|
||||
ї
|
||||
⌘
|
||||
⏎
|
||||
❤
|
||||
一
|
||||
|
|
@ -370,4 +385,183 @@ z
|
|||
页
|
||||
题
|
||||
黑
|
||||
가
|
||||
감
|
||||
값
|
||||
개
|
||||
검
|
||||
것
|
||||
게
|
||||
겠
|
||||
겨
|
||||
결
|
||||
계
|
||||
고
|
||||
과
|
||||
관
|
||||
교
|
||||
국
|
||||
그
|
||||
근
|
||||
기
|
||||
까
|
||||
네
|
||||
넷
|
||||
눌
|
||||
는
|
||||
능
|
||||
니
|
||||
다
|
||||
당
|
||||
대
|
||||
댑
|
||||
데
|
||||
뎁
|
||||
도
|
||||
되
|
||||
된
|
||||
될
|
||||
됩
|
||||
두
|
||||
둘
|
||||
드
|
||||
들
|
||||
따
|
||||
때
|
||||
라
|
||||
랑
|
||||
래
|
||||
러
|
||||
레
|
||||
려
|
||||
련
|
||||
로
|
||||
료
|
||||
류
|
||||
륨
|
||||
른
|
||||
를
|
||||
리
|
||||
림
|
||||
링
|
||||
마
|
||||
만
|
||||
말
|
||||
면
|
||||
모
|
||||
몽
|
||||
문
|
||||
바
|
||||
받
|
||||
발
|
||||
버
|
||||
별
|
||||
보
|
||||
본
|
||||
볼
|
||||
부
|
||||
분
|
||||
사
|
||||
삭
|
||||
새
|
||||
생
|
||||
서
|
||||
석
|
||||
선
|
||||
설
|
||||
성
|
||||
세
|
||||
션
|
||||
셨
|
||||
소
|
||||
속
|
||||
송
|
||||
수
|
||||
숨
|
||||
스
|
||||
습
|
||||
시
|
||||
신
|
||||
아
|
||||
않
|
||||
알
|
||||
았
|
||||
애
|
||||
어
|
||||
언
|
||||
없
|
||||
었
|
||||
에
|
||||
여
|
||||
연
|
||||
열
|
||||
였
|
||||
오
|
||||
올
|
||||
요
|
||||
용
|
||||
우
|
||||
운
|
||||
워
|
||||
위
|
||||
유
|
||||
으
|
||||
을
|
||||
음
|
||||
의
|
||||
이
|
||||
인
|
||||
일
|
||||
임
|
||||
있
|
||||
자
|
||||
장
|
||||
재
|
||||
적
|
||||
전
|
||||
정
|
||||
제
|
||||
종
|
||||
주
|
||||
줄
|
||||
중
|
||||
즐
|
||||
지
|
||||
직
|
||||
찰
|
||||
찾
|
||||
체
|
||||
초
|
||||
총
|
||||
최
|
||||
추
|
||||
케
|
||||
콜
|
||||
크
|
||||
킷
|
||||
타
|
||||
태
|
||||
택
|
||||
터
|
||||
테
|
||||
토
|
||||
트
|
||||
패
|
||||
페
|
||||
표
|
||||
프
|
||||
플
|
||||
픽
|
||||
필
|
||||
하
|
||||
한
|
||||
할
|
||||
합
|
||||
해
|
||||
현
|
||||
화
|
||||
확
|
||||
환
|
||||
활
|
||||
효
|
||||
,
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
|
|
@ -31,8 +31,8 @@ pub fn ip_version_radios(
|
|||
for option in IpVersion::ALL {
|
||||
ret_val = ret_val.push(
|
||||
Radio::new(
|
||||
option,
|
||||
option.get_radio_label(language),
|
||||
option,
|
||||
Some(active),
|
||||
Message::IpVersionSelection,
|
||||
)
|
||||
|
|
@ -62,8 +62,8 @@ pub fn transport_protocol_radios(
|
|||
for option in TransProtocol::ALL {
|
||||
ret_val = ret_val.push(
|
||||
Radio::new(
|
||||
option,
|
||||
option.get_radio_label(language),
|
||||
option,
|
||||
Some(active),
|
||||
Message::TransportProtocolSelection,
|
||||
)
|
||||
|
|
@ -92,8 +92,8 @@ pub fn language_radios(
|
|||
.align_items(Alignment::Center)
|
||||
.push(
|
||||
Radio::new(
|
||||
*option,
|
||||
format!("{} ({:?})", option.get_radio_label(), option),
|
||||
*option,
|
||||
Some(active),
|
||||
Message::LanguageSelection,
|
||||
)
|
||||
|
|
@ -124,8 +124,8 @@ pub fn sound_packets_threshold_radios(
|
|||
for option in Sound::ALL {
|
||||
ret_val = ret_val.push(
|
||||
Radio::new(
|
||||
option,
|
||||
option.get_radio_label(language),
|
||||
option,
|
||||
Some(packets_notification.sound),
|
||||
|value| {
|
||||
Message::UpdateNotificationSettings(
|
||||
|
|
@ -161,8 +161,8 @@ pub fn sound_bytes_threshold_radios(
|
|||
for option in Sound::ALL {
|
||||
ret_val = ret_val.push(
|
||||
Radio::new(
|
||||
option,
|
||||
option.get_radio_label(language),
|
||||
option,
|
||||
Some(bytes_notification.sound),
|
||||
|value| {
|
||||
Message::UpdateNotificationSettings(
|
||||
|
|
@ -198,8 +198,8 @@ pub fn sound_favorite_radios(
|
|||
for option in Sound::ALL {
|
||||
ret_val = ret_val.push(
|
||||
Radio::new(
|
||||
option,
|
||||
option.get_radio_label(language),
|
||||
option,
|
||||
Some(favorite_notification.sound),
|
||||
|value| {
|
||||
Message::UpdateNotificationSettings(
|
||||
|
|
@ -241,8 +241,8 @@ pub fn chart_radios(
|
|||
for option in ChartType::ALL {
|
||||
ret_val = ret_val.push(
|
||||
Radio::new(
|
||||
option,
|
||||
option.get_radio_label(language),
|
||||
option,
|
||||
Some(active),
|
||||
Message::ChartSelection,
|
||||
)
|
||||
|
|
@ -276,8 +276,8 @@ pub fn report_radios(
|
|||
for option in ReportType::ALL {
|
||||
ret_val = ret_val.push(
|
||||
Radio::new(
|
||||
option,
|
||||
option.get_radio_label(language),
|
||||
option,
|
||||
Some(active),
|
||||
Message::ReportSelection,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
//! It contains elements to select network adapter and traffic filters.
|
||||
|
||||
use iced::widget::{
|
||||
button, horizontal_space, vertical_space, Column, Container, PickList, Radio, Row, Scrollable,
|
||||
button, horizontal_space, vertical_space, Button, Column, Container, PickList, Row, Scrollable,
|
||||
Text, Tooltip,
|
||||
};
|
||||
use iced::Length::FillPortion;
|
||||
|
|
@ -138,7 +138,7 @@ fn button_start(style: StyleType, language: Language) -> Tooltip<'static, Messag
|
|||
fn get_col_adapter(sniffer: &Sniffer, font: Font) -> Column<Message> {
|
||||
let mut dev_str_list = vec![];
|
||||
for dev in Device::list().expect("Error retrieving device list\r\n") {
|
||||
let mut dev_str = "\n".to_string();
|
||||
let mut dev_str = String::new();
|
||||
let name = dev.name;
|
||||
match dev.desc {
|
||||
None => {
|
||||
|
|
@ -165,7 +165,6 @@ fn get_col_adapter(sniffer: &Sniffer, font: Font) -> Column<Message> {
|
|||
let address_string = addr.addr.to_string();
|
||||
dev_str.push_str(&format!("\n {address_string}"));
|
||||
}
|
||||
dev_str.push_str("\n ");
|
||||
dev_str_list.push((name, dev_str));
|
||||
}
|
||||
|
||||
|
|
@ -183,27 +182,24 @@ fn get_col_adapter(sniffer: &Sniffer, font: Font) -> Column<Message> {
|
|||
Scrollable::new(dev_str_list.iter().fold(
|
||||
Column::new().padding(13).spacing(5),
|
||||
|scroll_adapters, adapter| {
|
||||
let name = &adapter.0;
|
||||
let name = adapter.0.clone();
|
||||
let description = adapter.1.clone();
|
||||
scroll_adapters.push(
|
||||
Container::new(
|
||||
Radio::new(name, &adapter.1, Some(&sniffer.device.name), |name| {
|
||||
Message::AdapterSelection(name.to_string())
|
||||
})
|
||||
.font(font)
|
||||
.size(15)
|
||||
Button::new(Text::new(description).font(font))
|
||||
.padding([20, 30])
|
||||
.width(Length::Fill)
|
||||
.style(<StyleTuple as Into<
|
||||
iced::theme::Radio,
|
||||
>>::into(
|
||||
StyleTuple(sniffer.style, ElementType::Standard),
|
||||
)),
|
||||
)
|
||||
.padding(10)
|
||||
.style(<StyleTuple as Into<
|
||||
iced::theme::Container,
|
||||
>>::into(
|
||||
StyleTuple(sniffer.style, ElementType::BorderedRound),
|
||||
)),
|
||||
.style(
|
||||
StyleTuple(
|
||||
sniffer.style,
|
||||
if name == sniffer.device.name {
|
||||
ElementType::BorderedRoundSelected
|
||||
} else {
|
||||
ElementType::BorderedRound
|
||||
},
|
||||
)
|
||||
.into(),
|
||||
)
|
||||
.on_press(Message::AdapterSelection(name)),
|
||||
)
|
||||
},
|
||||
))
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
use iced::alignment::Horizontal;
|
||||
use iced::widget::{Column, Container, Row, Text};
|
||||
use iced::widget::{Column, Container, Row};
|
||||
use iced::Length::Fixed;
|
||||
use iced::{Alignment, Length};
|
||||
use iced_native::widget::vertical_space;
|
||||
|
|
@ -23,10 +22,13 @@ pub fn settings_language_page(sniffer: &Sniffer) -> Container<Message> {
|
|||
language_radios(language_active, &Language::COL1, font, sniffer.style);
|
||||
let col_language_radio_2 =
|
||||
language_radios(language_active, &Language::COL2, font, sniffer.style);
|
||||
let col_language_radio_3 =
|
||||
language_radios(language_active, &Language::COL3, font, sniffer.style);
|
||||
let row_language_radio = Row::new()
|
||||
.spacing(50)
|
||||
.push(col_language_radio_1)
|
||||
.push(col_language_radio_2);
|
||||
.push(col_language_radio_2)
|
||||
.push(col_language_radio_3);
|
||||
|
||||
let content = Column::new()
|
||||
.align_items(Alignment::Center)
|
||||
|
|
@ -54,24 +56,8 @@ pub fn settings_language_page(sniffer: &Sniffer) -> Container<Message> {
|
|||
.font(font)
|
||||
.size(FONT_SIZE_SUBTITLE),
|
||||
)
|
||||
.push(vertical_space(Fixed(20.0)))
|
||||
.push(row_language_radio)
|
||||
.push(vertical_space(Fixed(30.0)))
|
||||
.push(
|
||||
Container::new(
|
||||
Text::new(
|
||||
"Would you like to add support for your native language?\n\n\
|
||||
Give a look at Sniffnet issues on GitHub.",
|
||||
)
|
||||
.horizontal_alignment(Horizontal::Center)
|
||||
.width(Length::Fixed(500.0))
|
||||
.font(font),
|
||||
)
|
||||
.padding(10)
|
||||
.style(<StyleTuple as Into<iced::theme::Container>>::into(
|
||||
StyleTuple(sniffer.style, ElementType::BorderedRound),
|
||||
)),
|
||||
);
|
||||
.push(row_language_radio);
|
||||
|
||||
Container::new(content)
|
||||
.height(Fixed(400.0))
|
||||
|
|
|
|||
|
|
@ -328,15 +328,15 @@ fn input_group_packets(
|
|||
} else {
|
||||
curr_threshold_str
|
||||
},
|
||||
move |value| {
|
||||
let packets_notification =
|
||||
PacketsNotification::from(&value, Some(packets_notification));
|
||||
Message::UpdateNotificationSettings(
|
||||
Notification::Packets(packets_notification),
|
||||
false,
|
||||
)
|
||||
},
|
||||
)
|
||||
.on_input(move |value| {
|
||||
let packets_notification =
|
||||
PacketsNotification::from(&value, Some(packets_notification));
|
||||
Message::UpdateNotificationSettings(
|
||||
Notification::Packets(packets_notification),
|
||||
false,
|
||||
)
|
||||
})
|
||||
.padding([0, 0, 0, 10])
|
||||
.font(font)
|
||||
.width(Length::Fixed(100.0))
|
||||
|
|
@ -377,15 +377,11 @@ fn input_group_bytes(
|
|||
} else {
|
||||
&curr_threshold_str
|
||||
},
|
||||
move |value| {
|
||||
let bytes_notification =
|
||||
BytesNotification::from(&value, Some(bytes_notification));
|
||||
Message::UpdateNotificationSettings(
|
||||
Notification::Bytes(bytes_notification),
|
||||
false,
|
||||
)
|
||||
},
|
||||
)
|
||||
.on_input(move |value| {
|
||||
let bytes_notification = BytesNotification::from(&value, Some(bytes_notification));
|
||||
Message::UpdateNotificationSettings(Notification::Bytes(bytes_notification), false)
|
||||
})
|
||||
.padding([0, 0, 0, 10])
|
||||
.font(font)
|
||||
.width(Length::Fixed(100.0))
|
||||
|
|
@ -429,9 +425,9 @@ fn volume_slider(language: Language, style: StyleType, volume: u8) -> Container<
|
|||
ElementType::Standard,
|
||||
))),
|
||||
)
|
||||
.push(horizontal_space(Length::Fixed(10.0)))
|
||||
.push(horizontal_space(Length::Fixed(15.0)))
|
||||
.push(
|
||||
Text::new('Z'.to_string())
|
||||
Text::new("Z")
|
||||
.vertical_alignment(Vertical::Center)
|
||||
.size(20)
|
||||
.font(ICONS),
|
||||
|
|
|
|||
|
|
@ -114,6 +114,16 @@ fn get_palette_container(
|
|||
.height(Length::Fixed(130.0))
|
||||
.width(Length::Fixed(360.0))
|
||||
.padding(5)
|
||||
.style(StyleTuple(style, ElementType::BorderedRound).into())
|
||||
.style(
|
||||
StyleTuple(
|
||||
style,
|
||||
if on_press.eq(&style) {
|
||||
ElementType::BorderedRoundSelected
|
||||
} else {
|
||||
ElementType::BorderedRound
|
||||
},
|
||||
)
|
||||
.into(),
|
||||
)
|
||||
.on_press(Message::Style(on_press))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,12 +46,14 @@ mod tests {
|
|||
#[test]
|
||||
fn test_previous_running_page() {
|
||||
assert_eq!(RunningPage::Overview.previous(), RunningPage::Notifications);
|
||||
assert_eq!(RunningPage::Notifications.previous(), RunningPage::Overview);
|
||||
assert_eq!(RunningPage::Notifications.previous(), RunningPage::Inspect);
|
||||
assert_eq!(RunningPage::Inspect.previous(), RunningPage::Overview);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_next_running_page() {
|
||||
assert_eq!(RunningPage::Overview.next(), RunningPage::Notifications);
|
||||
assert_eq!(RunningPage::Overview.next(), RunningPage::Inspect);
|
||||
assert_eq!(RunningPage::Inspect.next(), RunningPage::Notifications);
|
||||
assert_eq!(RunningPage::Notifications.next(), RunningPage::Overview);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,11 +27,16 @@ impl button::StyleSheet for StyleTuple {
|
|||
StyleTuple(_, ElementType::Starred) => STARRED,
|
||||
StyleTuple(_, ElementType::Badge) => colors.secondary,
|
||||
StyleTuple(_, ElementType::BorderedRound) => colors.round_containers,
|
||||
StyleTuple(_, ElementType::BorderedRoundSelected) => {
|
||||
mix_colors(colors.primary, colors.buttons)
|
||||
}
|
||||
_ => colors.buttons,
|
||||
})),
|
||||
border_radius: match self {
|
||||
StyleTuple(_, ElementType::TabActive | ElementType::TabInactive) => 0.0,
|
||||
StyleTuple(_, ElementType::BorderedRound) => 12.0,
|
||||
StyleTuple(_, ElementType::BorderedRound | ElementType::BorderedRoundSelected) => {
|
||||
12.0
|
||||
}
|
||||
_ => BORDER_BUTTON_RADIUS,
|
||||
},
|
||||
border_width: match self {
|
||||
|
|
@ -71,7 +76,9 @@ impl button::StyleSheet for StyleTuple {
|
|||
})),
|
||||
border_radius: match self {
|
||||
StyleTuple(_, ElementType::TabActive | ElementType::TabInactive) => 0.0,
|
||||
StyleTuple(_, ElementType::BorderedRound) => 12.0,
|
||||
StyleTuple(_, ElementType::BorderedRound | ElementType::BorderedRoundSelected) => {
|
||||
12.0
|
||||
}
|
||||
_ => BORDER_BUTTON_RADIUS,
|
||||
},
|
||||
border_width: match self {
|
||||
|
|
@ -80,12 +87,14 @@ impl button::StyleSheet for StyleTuple {
|
|||
ElementType::Starred
|
||||
| ElementType::NotStarred
|
||||
| ElementType::TabActive
|
||||
| ElementType::TabInactive,
|
||||
| ElementType::TabInactive
|
||||
| ElementType::BorderedRound,
|
||||
) => 0.0,
|
||||
_ => BORDER_WIDTH,
|
||||
},
|
||||
border_color: match self {
|
||||
StyleTuple(_, ElementType::Alert) => Color::new(1.0, 0.0, 0.0, 1.0),
|
||||
StyleTuple(_, ElementType::BorderedRound) => colors.round_borders,
|
||||
_ => colors.secondary,
|
||||
},
|
||||
text_color: match self {
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ impl iced::widget::scrollable::StyleSheet for StyleTuple {
|
|||
}
|
||||
}
|
||||
|
||||
fn hovered(&self, _: &Self::Style) -> Scrollbar {
|
||||
fn hovered(&self, _: &Self::Style, is_mouse_over_scrollbar: bool) -> Scrollbar {
|
||||
let colors = get_colors(self.0);
|
||||
Scrollbar {
|
||||
background: Some(Background::Color(colors.round_borders)),
|
||||
|
|
@ -43,7 +43,11 @@ impl iced::widget::scrollable::StyleSheet for StyleTuple {
|
|||
scroller: Scroller {
|
||||
color: colors.secondary,
|
||||
border_radius: BORDER_ROUNDED_RADIUS,
|
||||
border_width: BORDER_WIDTH * 1.5,
|
||||
border_width: if is_mouse_over_scrollbar {
|
||||
BORDER_WIDTH * 1.25
|
||||
} else {
|
||||
BORDER_WIDTH * 1.75
|
||||
},
|
||||
border_color: Color::TRANSPARENT,
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,12 @@
|
|||
//! Slider style
|
||||
|
||||
use iced::widget::slider::Appearance;
|
||||
use iced_native::widget::slider::Handle;
|
||||
use iced_native::widget::slider::{Handle, Rail};
|
||||
use iced_native::widget::vertical_slider::HandleShape;
|
||||
|
||||
use crate::get_colors;
|
||||
use crate::gui::styles::style_constants::BORDER_WIDTH;
|
||||
use crate::gui::styles::types::palette::mix_colors;
|
||||
use crate::gui::styles::types::style_tuple::StyleTuple;
|
||||
|
||||
impl From<StyleTuple> for iced::theme::Slider {
|
||||
|
|
@ -20,9 +21,12 @@ impl iced::widget::slider::StyleSheet for StyleTuple {
|
|||
fn active(&self, _: &Self::Style) -> Appearance {
|
||||
let colors = get_colors(self.0);
|
||||
Appearance {
|
||||
rail_colors: (colors.secondary, colors.primary),
|
||||
rail: Rail {
|
||||
colors: (colors.secondary, colors.buttons),
|
||||
width: 3.0,
|
||||
},
|
||||
handle: Handle {
|
||||
shape: HandleShape::Circle { radius: 7.0 },
|
||||
shape: HandleShape::Circle { radius: 5.0 },
|
||||
color: colors.primary,
|
||||
border_width: BORDER_WIDTH,
|
||||
border_color: colors.secondary,
|
||||
|
|
@ -33,10 +37,13 @@ impl iced::widget::slider::StyleSheet for StyleTuple {
|
|||
fn hovered(&self, _: &Self::Style) -> Appearance {
|
||||
let colors = get_colors(self.0);
|
||||
Appearance {
|
||||
rail_colors: (colors.secondary, colors.secondary),
|
||||
rail: Rail {
|
||||
colors: (colors.secondary, colors.buttons),
|
||||
width: 3.0,
|
||||
},
|
||||
handle: Handle {
|
||||
shape: HandleShape::Circle { radius: 7.0 },
|
||||
color: colors.secondary,
|
||||
shape: HandleShape::Circle { radius: 8.0 },
|
||||
color: mix_colors(colors.primary, colors.buttons),
|
||||
border_width: BORDER_WIDTH,
|
||||
border_color: colors.secondary,
|
||||
},
|
||||
|
|
@ -46,10 +53,13 @@ impl iced::widget::slider::StyleSheet for StyleTuple {
|
|||
fn dragging(&self, _: &Self::Style) -> Appearance {
|
||||
let colors = get_colors(self.0);
|
||||
Appearance {
|
||||
rail_colors: (colors.secondary, colors.secondary),
|
||||
rail: Rail {
|
||||
colors: (colors.secondary, colors.buttons),
|
||||
width: 3.0,
|
||||
},
|
||||
handle: Handle {
|
||||
shape: HandleShape::Circle { radius: 7.0 },
|
||||
color: colors.secondary,
|
||||
shape: HandleShape::Circle { radius: 8.0 },
|
||||
color: mix_colors(colors.primary, colors.buttons),
|
||||
border_width: BORDER_WIDTH,
|
||||
border_color: colors.secondary,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
//! Text Input style
|
||||
|
||||
use iced::widget::text_input;
|
||||
use iced::widget::text_input::Appearance;
|
||||
use iced::{Background, Color};
|
||||
|
||||
|
|
@ -22,6 +23,7 @@ impl iced::widget::text_input::StyleSheet for StyleTuple {
|
|||
border_radius: 0.0,
|
||||
border_width: 1.0,
|
||||
border_color: colors.round_borders,
|
||||
icon_color: colors.text_body,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -32,6 +34,7 @@ impl iced::widget::text_input::StyleSheet for StyleTuple {
|
|||
border_radius: 0.0,
|
||||
border_width: 1.0,
|
||||
border_color: colors.secondary,
|
||||
icon_color: colors.text_body,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -62,6 +65,15 @@ impl iced::widget::text_input::StyleSheet for StyleTuple {
|
|||
border_radius: 0.0,
|
||||
border_width: 1.0,
|
||||
border_color: colors.secondary,
|
||||
icon_color: colors.text_body,
|
||||
}
|
||||
}
|
||||
|
||||
fn disabled(&self, style: &Self::Style) -> Appearance {
|
||||
text_input::StyleSheet::active(self, style)
|
||||
}
|
||||
|
||||
fn disabled_color(&self, _style: &Self::Style) -> Color {
|
||||
Color::BLACK
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ pub enum ElementType {
|
|||
Standard,
|
||||
Headers,
|
||||
BorderedRound,
|
||||
BorderedRoundSelected,
|
||||
TabActive,
|
||||
TabInactive,
|
||||
Starred,
|
||||
|
|
|
|||
|
|
@ -1131,14 +1131,14 @@ mod tests {
|
|||
assert_eq!(sniffer.running_page, RunningPage::Overview);
|
||||
// switch with closed setting => change running page
|
||||
sniffer.update(Message::SwitchPage(true));
|
||||
assert_eq!(sniffer.running_page, RunningPage::Notifications);
|
||||
assert_eq!(sniffer.running_page, RunningPage::Inspect);
|
||||
assert_eq!(sniffer.settings_page, None);
|
||||
// switch with opened settings => change settings
|
||||
sniffer.update(Message::OpenLastSettings);
|
||||
assert_eq!(sniffer.running_page, RunningPage::Notifications);
|
||||
assert_eq!(sniffer.running_page, RunningPage::Inspect);
|
||||
assert_eq!(sniffer.settings_page, Some(SettingsPage::Notifications));
|
||||
sniffer.update(Message::SwitchPage(true));
|
||||
assert_eq!(sniffer.running_page, RunningPage::Notifications);
|
||||
assert_eq!(sniffer.running_page, RunningPage::Inspect);
|
||||
assert_eq!(sniffer.settings_page, Some(SettingsPage::Appearance));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
use std::sync::{Arc, Condvar, Mutex};
|
||||
use std::{panic, process, thread};
|
||||
|
||||
use iced::window::Position;
|
||||
use iced::window::{PlatformSpecific, Position};
|
||||
use iced::{window, Application, Settings};
|
||||
|
||||
use chart::types::chart_type::ChartType;
|
||||
|
|
@ -106,6 +106,7 @@ pub fn main() -> iced::Result {
|
|||
transparent: false,
|
||||
always_on_top: false,
|
||||
icon: None,
|
||||
platform_specific: PlatformSpecific::default(),
|
||||
},
|
||||
flags: Sniffer::new(
|
||||
current_capture_id1,
|
||||
|
|
|
|||
|
|
@ -13,6 +13,10 @@ pub fn choose_adapters_translation(language: Language) -> Text<'static> {
|
|||
Language::UK => "Вибрати мережевий адаптер для інспекції",
|
||||
Language::ZH => "选择需要监控的网络适配器",
|
||||
Language::RO => "Selectați adaptor de rețea pentru a inspecta",
|
||||
Language::KO => "검사할 네트워크 어댑터 선택",
|
||||
Language::TR => "İncelemek için bir ağ adaptörü seçiniz",
|
||||
Language::RU => "Выберите сетевой адаптер для инспекции",
|
||||
Language::PT => "Selecione o adaptador de rede a inspecionar",
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -27,6 +31,10 @@ pub fn application_protocol_translation(language: Language) -> &'static str {
|
|||
Language::UK => "Протокол аплікації",
|
||||
Language::ZH => "目标应用层协议",
|
||||
Language::RO => "Protocol aplicație",
|
||||
Language::KO => "어플리케이션 프로토콜",
|
||||
Language::TR => "Uygulama protokolü",
|
||||
Language::RU => "Прикладной протокол",
|
||||
Language::PT => "Protocolo de aplicação",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -41,18 +49,25 @@ pub fn select_filters_translation(language: Language) -> Text<'static> {
|
|||
Language::UK => "Вибрати фільтри, які мають бути застосовані до мережевого трафіку",
|
||||
Language::ZH => "选择需要监控的目标",
|
||||
Language::RO => "Selectați filtre pentru traficul de rețea",
|
||||
Language::KO => "네트워크 트레픽에 적용할 필터 선택",
|
||||
Language::TR => "Ağ trafiğine uygulanacak filtreleri seçiniz",
|
||||
Language::RU => "Выберите фильтры для применения к сетевому трафику",
|
||||
Language::PT => "Selecione os filtros a serem aplicados no tráfego de rede",
|
||||
})
|
||||
}
|
||||
|
||||
pub fn start_translation(language: Language) -> &'static str {
|
||||
match language {
|
||||
Language::EN | Language::DE | Language::RO => "Start!",
|
||||
Language::EN | Language::DE | Language::RO | Language::KO => "Start!",
|
||||
Language::IT => "Avvia!",
|
||||
Language::FR => "Commencer!",
|
||||
Language::ES => "¡Empieza!",
|
||||
Language::PL => "Rozpocznij!",
|
||||
Language::UK => "Почати!",
|
||||
Language::ZH => "开始!",
|
||||
Language::TR => "Başla!",
|
||||
Language::RU => "Начать!",
|
||||
Language::PT => "Começar!",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -62,10 +77,13 @@ pub fn address_translation(language: Language) -> &'static str {
|
|||
Language::IT => "\nIndirizzo:",
|
||||
Language::FR | Language::DE => "\nAdresse:",
|
||||
Language::ES => "\nDirección:",
|
||||
Language::PL => "\nAdres:",
|
||||
Language::PL | Language::TR => "\nAdres:",
|
||||
Language::UK => "\nАдреса:",
|
||||
Language::ZH => "\n网络地址:",
|
||||
Language::RO => "\nAdresă:",
|
||||
Language::KO => "\n주소:",
|
||||
Language::RU => "\nАдрес:",
|
||||
Language::PT => "\nEndereço:",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -80,6 +98,10 @@ pub fn addresses_translation(language: Language) -> &'static str {
|
|||
Language::UK => "\nАдреси:",
|
||||
Language::ZH => "\n网络地址:",
|
||||
Language::RO => "\nAdrese:",
|
||||
Language::KO => "\n주소:",
|
||||
Language::TR => "\nAdresler:",
|
||||
Language::RU => "\nАдреса:",
|
||||
Language::PT => "\nEndereços:",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -94,6 +116,10 @@ pub fn ip_version_translation(language: Language) -> Text<'static> {
|
|||
Language::UK => "Версія IP",
|
||||
Language::ZH => "目标IP协议版本",
|
||||
Language::RO => "Versiune IP",
|
||||
Language::KO => "IP 버전",
|
||||
Language::TR => "IP versiyonu",
|
||||
Language::RU => "Версия IP",
|
||||
Language::PT => "Versão de IP",
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -102,12 +128,15 @@ pub fn transport_protocol_translation(language: Language) -> &'static str {
|
|||
Language::EN => "Transport protocol",
|
||||
Language::IT => "Protocollo di trasporto",
|
||||
Language::FR => "Protocole de transport",
|
||||
Language::ES => "Protocolo de transporte",
|
||||
Language::ES | Language::PT => "Protocolo de transporte",
|
||||
Language::PL => "Protokół transportowy",
|
||||
Language::DE => "Netzwerkprotokoll",
|
||||
Language::UK => "Транспортний протокол",
|
||||
Language::ZH => "目标传输协议",
|
||||
Language::RO => "Protocol de transport",
|
||||
Language::KO => "전송 프로토콜",
|
||||
Language::TR => "İletişim protokolü",
|
||||
Language::RU => "Транспортный протокол",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -122,6 +151,10 @@ pub fn traffic_rate_translation(language: Language) -> Text<'static> {
|
|||
Language::UK => "Швидкість руху:",
|
||||
Language::ZH => "网络速率图:",
|
||||
Language::RO => "Rata de trafic:",
|
||||
Language::KO => "트레픽 속도:",
|
||||
Language::TR => "Trafik oranı:",
|
||||
Language::RU => "Cкорость трафика:",
|
||||
Language::PT => "Taxa de tráfego:",
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -136,6 +169,10 @@ pub fn relevant_connections_translation(language: Language) -> Text<'static> {
|
|||
Language::UK => "Важливі підключення:",
|
||||
Language::ZH => "连接详情:",
|
||||
Language::RO => "Conexiuni relevante:",
|
||||
Language::KO => "관련 연결:",
|
||||
Language::TR => "İlgili bağlantılar:",
|
||||
Language::RU => "Важные подключения:",
|
||||
Language::PT => "Conexões relevantes:",
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -150,6 +187,10 @@ pub fn settings_translation(language: Language) -> &'static str {
|
|||
Language::UK => "Налаштування",
|
||||
Language::ZH => "设置",
|
||||
Language::RO => "Setări",
|
||||
Language::KO => "설정",
|
||||
Language::TR => "Ayarlar",
|
||||
Language::RU => "Настройки",
|
||||
Language::PT => "Configurações",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -164,6 +205,10 @@ pub fn yes_translation(language: Language) -> Text<'static> {
|
|||
Language::UK => "Так",
|
||||
Language::ZH => "是",
|
||||
Language::RO => "Da",
|
||||
Language::KO => "네",
|
||||
Language::TR => "Evet",
|
||||
Language::RU => "Да",
|
||||
Language::PT => "Sim",
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -178,6 +223,10 @@ pub fn ask_quit_translation(language: Language) -> Text<'static> {
|
|||
Language::UK => "Чи справді хочеш закінчити аналіз?",
|
||||
Language::ZH => "您确定退出当前监控吗?",
|
||||
Language::RO => "Sunteți sigur că doriți să renunțați la această analiză?",
|
||||
Language::KO => "정말로 분석을 종료하겠습니까?",
|
||||
Language::TR => "Bu analizden çıkmak istediğine emin misin?",
|
||||
Language::RU => "Вы уверены, что хотите выйти из текущего анализа?",
|
||||
Language::PT => "Tem a certeza que deseja sair desta análise?",
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -192,6 +241,10 @@ pub fn quit_analysis_translation(language: Language) -> String {
|
|||
Language::UK => "Закінчити аналіз".to_string(),
|
||||
Language::ZH => "退出监控".to_string(),
|
||||
Language::RO => "Renunță la analiză".to_string(),
|
||||
Language::KO => "분석종료".to_string(),
|
||||
Language::TR => "Analizden çık".to_string(),
|
||||
Language::RU => "Закончить анализ".to_string(),
|
||||
Language::PT => "Sair da análise".to_string(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -206,6 +259,10 @@ pub fn ask_clear_all_translation(language: Language) -> Text<'static> {
|
|||
Language::UK => "Чи справді хочеш видалити всі повідомлення?",
|
||||
Language::ZH => "确定清除所有通知?",
|
||||
Language::RO => "Sigur doriți să ștergeți notificările?",
|
||||
Language::KO => "알림을 삭제하시겠습니까?",
|
||||
Language::TR => "Bildirimleri temizlemek istediğine emin misin?",
|
||||
Language::RU => "Вы уверены, что хотите удлить все уведомления?",
|
||||
Language::PT => "Tem a certeza que deseja eliminar as notificações?",
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -220,6 +277,10 @@ pub fn clear_all_translation(language: Language) -> String {
|
|||
Language::UK => "Видалити все".to_string(),
|
||||
Language::ZH => "清除所有".to_string(),
|
||||
Language::RO => "Ștergeți tot".to_string(),
|
||||
Language::KO => "모두 지우기".to_string(),
|
||||
Language::TR => "Hepsini temizle".to_string(),
|
||||
Language::RU => "Очистить всё".to_string(),
|
||||
Language::PT => "Limpar tudo".to_string(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -234,6 +295,10 @@ pub fn hide_translation(language: Language) -> &'static str {
|
|||
Language::UK => "Заховати",
|
||||
Language::ZH => "隐藏",
|
||||
Language::RO => "Ascundeți",
|
||||
Language::KO => "숨기기",
|
||||
Language::TR => "Gizle",
|
||||
Language::RU => "Скрыть",
|
||||
Language::PT => "Esconder",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -266,6 +331,18 @@ pub fn no_addresses_translation(language: Language, adapter: &str) -> Text<'stat
|
|||
Language::RO => format!("Niciun trafic nu poate fi observat deoarece adaptorul selectat nu are adrese active...\n\n\
|
||||
Adaptor de rețea: {adapter}\n\n\
|
||||
Dacă sunteți sigur că sunteți conectat la internet, încercați să alegeți un alt adaptor."),
|
||||
Language::KO => format!("선택한 어댑터에 유효한 주소가 없기 때문에 트래픽을 확인할 수 없습니다...\n\n\
|
||||
네트워크 어뎁터: {adapter}\n\n\
|
||||
인터넷이 연결되어있다면 다른 어댑터로 시도해보세요."),
|
||||
Language::TR => format!("Seçtiğiniz adaptör aktif bir adrese sahip olmadığı için hiç bir trafik izlenemez...\n\n\
|
||||
Ağ adaptörü: {adapter}\n\n\
|
||||
Eğer gerçekten internete bağlı olduğunuza eminseniz, başka bir adaptör seçmeyi deneyiniz."),
|
||||
Language::RU => format!("Наблюдение за трафиком не возможно, потому что Вы выбрали интерфейс без активного адреса...\n\n\
|
||||
Сетевой интерфейс: {adapter}\n\n\
|
||||
Если Вы уверены, что подключены к Интернету, попробуйте выбрать другой интерфейс."),
|
||||
Language::PT => format!("Não é possível observar tráfego porque o adaptador que selecionou não tem endereços ativos...\n\n\
|
||||
Adaptador de rede: {adapter}\n\n\
|
||||
Se tiver a certeza que está ligado à internet, tente escolher um adaptador diferente."),
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -297,7 +374,19 @@ pub fn waiting_translation(language: Language, adapter: &str) -> Text<'static> {
|
|||
您确信您已成功连接到互联网, 并选择了当前正在使用的的网络适配器吗?"),
|
||||
Language::RO => format!("Nu a fost observat încă trafic. Se așteaptă pachetele de rețea...\n\n\
|
||||
Adaptor de rețea: {adapter}\n\n\
|
||||
Ești sigur că ești conectat la internet și ai selectat adaptorul corect?")
|
||||
Ești sigur că ești conectat la internet și ai selectat adaptorul corect?"),
|
||||
Language::KO => format!("아직 트래픽이 관찰되지 않았습니다. 네트워크 패킷 대기 중...\n\n\
|
||||
네트워크 어뎁터: {adapter}\n\n\
|
||||
인터넷에 연결되어 있고 올바른 어댑터를 선택하셨습니까?"),
|
||||
Language::TR => format!("Henüz bir trafik algılanamadı. Ağ paketleri için bekleniyor...\n\n\
|
||||
Ağ adaptörü: {adapter}\n\n\
|
||||
İnternete bağlı olduğunuza ve doğru adaptörü seçtiğinize emin misiniz?"),
|
||||
Language::RU => format!("Трафик не обнаружен. Ожидаем сетевые пакеты...\n\n\
|
||||
Сетевой интерфейс: {adapter}\n\n\
|
||||
Вы уверены, что подключены к Интернету и выбрали правильный интерфейс?"),
|
||||
Language::PT => format!("Ainda não foi observado tráfego. Aguardando por pacotes...\n\n\
|
||||
Adaptador de rede: {adapter}\n\n\
|
||||
Tem a certeza de que está ligado à internet e selecionou o adaptador correto?"),
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -333,7 +422,19 @@ pub fn some_observed_translation(
|
|||
当前已监测到一些数据包, 但其中并未包含您的目标数据包......\n\n{filters}"),
|
||||
Language::RO => format!("Total pachete interceptate: {observed}\n\n\
|
||||
Pachete filtrate: 0\n\n\
|
||||
Unele pachete au fost interceptate, dar încă niciunul nu a fost selectat conform filtrelor pe care le-ați specificat...\n\n{filters}")
|
||||
Unele pachete au fost interceptate, dar încă niciunul nu a fost selectat conform filtrelor pe care le-ați specificat...\n\n{filters}"),
|
||||
Language::KO => format!("감지한 총 패킷: {observed}\n\n\
|
||||
필터링된 패킷: 0\n\n\
|
||||
일부 패킷이 감지되었지만, 지정한 필터에 따라 선택되지 않았습니다...\n\n{filters}"),
|
||||
Language::TR => format!("Toplam yakalanan paketler: {observed}\n\n\
|
||||
Filterelenen paketler: 0\n\n\
|
||||
Bazı paketler yakalandı, fakat belirttiğiniz filtrelere göre hiç biri seçilmedi...\n\n{filters}"),
|
||||
Language::RU => format!("Всего пакетов перехвачено: {observed}\n\n\
|
||||
Фильтровано пакетов: 0\n\n\
|
||||
Сетевые пакеты были перехвачены, но ни один из них не соответствует заданным фильтрам...\n\n{filters}"),
|
||||
Language::PT => format!("Total de pacotes interceptados: {observed}\n\n\
|
||||
Pacotes filtrados: 0\n\n\
|
||||
Alguns pacotes foram interceptados, mas nenhum deles foi selecionado de acordo com os filtros especificados...\n\n{filters}"),
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -358,6 +459,16 @@ pub fn filtered_packets_translation(
|
|||
Language::RO => {
|
||||
format!("Pachete filtrate:\n {filtered} ({percentage} din total)")
|
||||
}
|
||||
Language::KO => {
|
||||
format!("필터링된 패킷:\n {filtered} ({percentage} 의 일부)")
|
||||
}
|
||||
Language::TR => format!("Filtrelenen paketler:\n {filtered} toplamın ({percentage})"),
|
||||
Language::RU => {
|
||||
format!("Отфильтровано пакетов:\n {filtered} ({percentage}% от общего числа)")
|
||||
}
|
||||
Language::PT => {
|
||||
format!("Pacotes filtrados:\n {filtered} ({percentage} do total)")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -380,7 +491,17 @@ pub fn filtered_bytes_translation(
|
|||
format!("目标网络流量计数:\n {filtered} (占所有网络流量的 {percentage})")
|
||||
}
|
||||
Language::RO => {
|
||||
format!("Octeți filtrați::\n {filtered} ({percentage} din total)")
|
||||
format!("Octeți filtrați:\n {filtered} ({percentage} din total)")
|
||||
}
|
||||
Language::KO => {
|
||||
format!("필터링된 바이트:\n {filtered} ({percentage} 의 일부)")
|
||||
}
|
||||
Language::TR => format!("Filtrelenen bayt:\n {filtered} toplamın ({percentage})"),
|
||||
Language::RU => {
|
||||
format!("Отфильтровано байт:\n {filtered} ({percentage}% от общего числа)")
|
||||
}
|
||||
Language::PT => {
|
||||
format!("Bytes filtrados:\n {filtered} ({percentage} do total)")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
@ -396,6 +517,10 @@ pub fn filtered_application_translation(language: Language) -> Text<'static> {
|
|||
Language::UK => "Відфільтровані пакети протоколу аплікації/програми:",
|
||||
Language::ZH => "按应用层协议分类的目标数据包计数:",
|
||||
Language::RO => "Pachete filtrate pe protocol de aplicație:",
|
||||
Language::KO => "애플리케이션 프로토콜당 필터링된 패킷 수:",
|
||||
Language::TR => "Uygulama protokolü bazında filtrelenen paketler:",
|
||||
Language::RU => "Отфильтровано пакетов прикладного протокола:",
|
||||
Language::PT => "Pacotes filtrados por protocolo de aplicação:",
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -419,6 +544,14 @@ pub fn no_favorites_translation(language: Language) -> Text<'static> {
|
|||
小贴士: 点击连接右侧的小星星即可收藏到这里哦.",
|
||||
Language::RO => "Nimic de arătat în acest moment.\n\
|
||||
Pentru a adăuga o conexiune la favorite, faceți clic pe simbolul stea din apropierea conexiunii.",
|
||||
Language::KO => "현재는 보여줄게 없습니다.\n\
|
||||
즐겨찾기에 연결을 추가하려면 별을 눌러주세요.",
|
||||
Language::TR => "Şu an gösterecek bir şey yok.\n\
|
||||
Favorilere bağlantı eklemek için, bağlantı yanındaki yıldız sembolüne tıklayınız.",
|
||||
Language::RU => "Нечего показать в настоящий момент.\n\
|
||||
Для добавления соединения в избранные, нажмите на символ звезды возле соединения.",
|
||||
Language::PT => "Nada para mostrar de momento.\n\
|
||||
Para adicionar uma conexão aos seus favoritos, clique na estrela perto da conexão.",
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -460,6 +593,22 @@ pub fn error_translation(language: Language, error: &str) -> Text<'static> {
|
|||
"A apărut o eroare! \n\n\
|
||||
{error}"
|
||||
),
|
||||
Language::KO => format!(
|
||||
"오류가 발생하였습니다! \n\n\
|
||||
{error}"
|
||||
),
|
||||
Language::TR => format!(
|
||||
"Bir hata oluştu! \n\n\
|
||||
{error}"
|
||||
),
|
||||
Language::RU => format!(
|
||||
"Произошла ошибка! \n\n\
|
||||
{error}"
|
||||
),
|
||||
Language::PT => format!(
|
||||
"Ocorreu um erro! \n\n\
|
||||
{error}"
|
||||
),
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -468,12 +617,15 @@ pub fn both_translation(language: Language) -> &'static str {
|
|||
Language::EN => "both",
|
||||
Language::IT => "entrambi",
|
||||
Language::FR => "les deux",
|
||||
Language::ES => "ambos",
|
||||
Language::ES | Language::PT => "ambos",
|
||||
Language::PL => "oba",
|
||||
Language::DE => "beide",
|
||||
Language::UK => "обидва",
|
||||
Language::ZH => "皆需",
|
||||
Language::RO => "ambele",
|
||||
Language::KO => "둘다",
|
||||
Language::TR => "ikiside",
|
||||
Language::RU => "оба",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -485,6 +637,7 @@ pub fn both_translation(language: Language) -> &'static str {
|
|||
// Language::ES => "Todos los protocolos",
|
||||
// Language::PL => "Wszystkie protokoły",
|
||||
// Language::DE => "Alle Protokolle",
|
||||
// Language::RU => "Все протоколы",
|
||||
// }
|
||||
// }
|
||||
|
||||
|
|
@ -493,12 +646,15 @@ pub fn all_translation(language: Language) -> &'static str {
|
|||
Language::EN => "All",
|
||||
Language::IT => "Tutti",
|
||||
Language::FR => "Tous",
|
||||
Language::ES => "Todos",
|
||||
Language::ES | Language::PT => "Todos",
|
||||
Language::PL => "Wszystkie",
|
||||
Language::DE => "Alle",
|
||||
Language::UK => "Усі",
|
||||
Language::ZH => "所有",
|
||||
Language::RO => "Toate",
|
||||
Language::KO => "모두",
|
||||
Language::TR => "Hepsi",
|
||||
Language::RU => "Всё",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -513,6 +669,10 @@ pub fn packets_chart_translation(language: Language) -> &'static str {
|
|||
Language::UK => "пакети на секунду",
|
||||
Language::ZH => "数据包",
|
||||
Language::RO => "pachete pe secundă",
|
||||
Language::KO => "초당 패킷",
|
||||
Language::TR => "saniye başı paket",
|
||||
Language::RU => "пакектов в секунду",
|
||||
Language::PT => "pacotes por segundo",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -521,12 +681,15 @@ pub fn bytes_chart_translation(language: Language) -> &'static str {
|
|||
Language::EN => "bytes per second",
|
||||
Language::IT => "byte al secondo",
|
||||
Language::FR => "octets par seconde",
|
||||
Language::ES => "bytes por segundo",
|
||||
Language::ES | Language::PT => "bytes por segundo",
|
||||
Language::PL => "bajty na sekundę",
|
||||
Language::DE => "bytes pro Sekunde",
|
||||
Language::UK => "байти на секунду",
|
||||
Language::ZH => "网络流量",
|
||||
Language::RO => "octeți pe secundă",
|
||||
Language::KO => "초당 바이트",
|
||||
Language::TR => "saniye başı bayt",
|
||||
Language::RU => "байтов в секунду",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -541,6 +704,10 @@ pub fn recent_report_translation(language: Language) -> &'static str {
|
|||
Language::UK => "найновіші",
|
||||
Language::ZH => "按时间",
|
||||
Language::RO => "cea mai recentă",
|
||||
Language::KO => "가장 최근",
|
||||
Language::TR => "en son",
|
||||
Language::RU => "новейшие",
|
||||
Language::PT => "mais recente",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -555,6 +722,10 @@ pub fn packets_report_translation(language: Language) -> &'static str {
|
|||
Language::UK => "найбільше пакетів",
|
||||
Language::ZH => "按数据包",
|
||||
Language::RO => "cele mai multe pachete",
|
||||
Language::KO => "대부분의 패킷",
|
||||
Language::TR => "en çok paket",
|
||||
Language::RU => "больше всего пакетов",
|
||||
Language::PT => "mais pacotes",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -569,6 +740,10 @@ pub fn bytes_report_translation(language: Language) -> &'static str {
|
|||
Language::UK => "найбільше байтів",
|
||||
Language::ZH => "按流量",
|
||||
Language::RO => "cei mai mulți octeți",
|
||||
Language::KO => "대부분의 바이트",
|
||||
Language::TR => "en çok bayt",
|
||||
Language::RU => "больше всего байт",
|
||||
Language::PT => "mais bytes",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -577,12 +752,15 @@ pub fn favorite_report_translation(language: Language) -> &'static str {
|
|||
Language::EN => "favorites",
|
||||
Language::IT => "preferiti",
|
||||
Language::FR => "favoris",
|
||||
Language::ES => "favoritos",
|
||||
Language::ES | Language::PT => "favoritos",
|
||||
Language::PL => "ulubione",
|
||||
Language::DE => "Favoriten",
|
||||
Language::UK => "улюблені",
|
||||
Language::ZH => "收藏夹",
|
||||
Language::RO => "favorite",
|
||||
Language::KO => "즐겨찾기",
|
||||
Language::TR => "favoriler",
|
||||
Language::RU => "избранное",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -597,6 +775,10 @@ pub fn notifications_title_translation(language: Language) -> Text<'static> {
|
|||
Language::UK => "Достосуй повідомлення",
|
||||
Language::ZH => "自定义通知",
|
||||
Language::RO => "Personalizați-vă notificările",
|
||||
Language::KO => "사용자 지정 알림",
|
||||
Language::TR => "Bildirimlerinizi özelleştirin",
|
||||
Language::RU => "Настройка уведомлений",
|
||||
Language::PT => "Personalize as suas notificações",
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -611,6 +793,10 @@ pub fn appearance_title_translation(language: Language) -> Text<'static> {
|
|||
Language::UK => "Вибери улюблену тему",
|
||||
Language::ZH => "选择您喜欢的主题",
|
||||
Language::RO => "Selectați tema preferată",
|
||||
Language::KO => "태마를 선택하세요",
|
||||
Language::TR => "Favori temanızı seçin",
|
||||
Language::RU => "Выберите предпочительную тему",
|
||||
Language::PT => "Escolha o seu tema favorito",
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -625,6 +811,10 @@ pub fn languages_title_translation(language: Language) -> Text<'static> {
|
|||
Language::UK => "Вибери мову",
|
||||
Language::ZH => "选择显示语言",
|
||||
Language::RO => "Selectați limba",
|
||||
Language::KO => "언어를 선택하세요",
|
||||
Language::TR => "Dilinizi seçin",
|
||||
Language::RU => "Выберите язык",
|
||||
Language::PT => "Selecione o seu idioma",
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -639,6 +829,10 @@ pub fn active_filters_translation(language: Language) -> &'static str {
|
|||
Language::UK => "Активні фільтри:",
|
||||
Language::ZH => "活动的过滤器:",
|
||||
Language::RO => "Filtre active:",
|
||||
Language::KO => "활성화된 필터:",
|
||||
Language::TR => "Aktif filtreler:",
|
||||
Language::RU => "Выбранные фильтры:",
|
||||
Language::PT => "Filtros ativos:",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -653,6 +847,10 @@ pub fn none_translation(language: Language) -> &'static str {
|
|||
Language::UK => "бракує",
|
||||
Language::ZH => "无",
|
||||
Language::RO => "niciunul",
|
||||
Language::KO => "없음",
|
||||
Language::TR => "hiç biri",
|
||||
Language::RU => "не выбран",
|
||||
Language::PT => "nenhum",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -667,6 +865,10 @@ pub fn yeti_night_translation(language: Language) -> &'static str {
|
|||
Language::UK => "Оригінальний, темний мотив Sniffnet",
|
||||
Language::ZH => "Sniffnet暗黑",
|
||||
Language::RO => "Tema întunecată originală Sniffnet",
|
||||
Language::KO => "Sniffnet의 기본 다크테마",
|
||||
Language::TR => "Sniffnet'in orjinal koyu teması",
|
||||
Language::RU => "Оригинальная тёмная тема Sniffnet'а",
|
||||
Language::PT => "Tema escuro original de Sniffnet",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -675,12 +877,15 @@ pub fn yeti_day_translation(language: Language) -> &'static str {
|
|||
Language::EN => "Sniffnet's original light theme",
|
||||
Language::IT => "Il tema chiaro originale di Sniffnet",
|
||||
Language::FR => "Thème original clair de Sniffnet",
|
||||
Language::ES => "Tema claro original de Sniffnet",
|
||||
Language::ES | Language::PT => "Tema claro original de Sniffnet",
|
||||
Language::PL => "Oryginalny, jasny motyw Sniffnet",
|
||||
Language::DE => "Sniffnets urspüngliches, helles Design",
|
||||
Language::UK => "Оригінальний, світлий мотив Sniffnet",
|
||||
Language::ZH => "Sniffnet浅色",
|
||||
Language::RO => "Tema deschisă originală Sniffnet",
|
||||
Language::KO => "Sniffnet의 기본 라이트테마",
|
||||
Language::TR => "Sniffnet'in orjinal açık teması",
|
||||
Language::RU => "Оригинальная светая тема Sniffnet'а",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -695,6 +900,10 @@ pub fn deep_sea_translation(language: Language) -> &'static str {
|
|||
Language::UK => "Проаналізувати мережевий рух",
|
||||
Language::ZH => "潜入网络活动的海洋",
|
||||
Language::RO => "Pentru a vă scufunda în traficul de rețea",
|
||||
Language::KO => "네트워크 트레픽으로 바로가기",
|
||||
Language::TR => "Ağ trafiğine dalmak",
|
||||
Language::RU => "Для погружения в сетевой трафик",
|
||||
Language::PT => "Para mergulhar no tráfego de rede",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -709,6 +918,10 @@ pub fn mon_amour_translation(language: Language) -> &'static str {
|
|||
Language::UK => "Прекрасна тема для мрійників",
|
||||
Language::ZH => "梦想家的主题",
|
||||
Language::RO => "O temă minunată creată pentru visători",
|
||||
Language::KO => "사랑스러운 몽환가들을 위한 테마",
|
||||
Language::TR => "Hayal perestler için yapılmış güzel tema",
|
||||
Language::RU => "Милая тема для мечтателей",
|
||||
Language::PT => "Tema encantador feito para sonhadores",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -723,6 +936,10 @@ pub fn incoming_translation(language: Language) -> &'static str {
|
|||
Language::UK => "Вхідні",
|
||||
Language::ZH => "入站",
|
||||
Language::RO => "de intrare",
|
||||
Language::KO => "수신중",
|
||||
Language::TR => "Gelen",
|
||||
Language::RU => "Входящий",
|
||||
Language::PT => "Entrando",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -737,6 +954,10 @@ pub fn outgoing_translation(language: Language) -> &'static str {
|
|||
Language::UK => "Вихідні",
|
||||
Language::ZH => "出站",
|
||||
Language::RO => "de ieșire",
|
||||
Language::KO => "발신중",
|
||||
Language::TR => "Giden",
|
||||
Language::RU => "Исходящий",
|
||||
Language::PT => "Saindo",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -750,6 +971,10 @@ pub fn notifications_translation(language: Language) -> &'static str {
|
|||
Language::UK => "Повідомлення",
|
||||
Language::ZH => "通知",
|
||||
Language::RO => "Notificări",
|
||||
Language::KO => "알림",
|
||||
Language::TR => "Bildirimler",
|
||||
Language::RU => "Уведомления",
|
||||
Language::PT => "Notificações",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -757,11 +982,12 @@ pub fn style_translation(language: Language) -> &'static str {
|
|||
match language {
|
||||
Language::EN | Language::FR => "Style",
|
||||
Language::IT => "Stile",
|
||||
Language::ES => "Estilo",
|
||||
Language::ES | Language::PT => "Estilo",
|
||||
Language::PL => "Styl",
|
||||
Language::DE | Language::RO => "Stil",
|
||||
Language::UK => "Стиль",
|
||||
Language::DE | Language::RO | Language::TR => "Stil",
|
||||
Language::UK | Language::RU => "Стиль",
|
||||
Language::ZH => "主题",
|
||||
Language::KO => "스타일",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -776,6 +1002,10 @@ pub fn language_translation(language: Language) -> &'static str {
|
|||
Language::UK => "Мова",
|
||||
Language::ZH => "语言",
|
||||
Language::RO => "Limbă",
|
||||
Language::KO => "언어",
|
||||
Language::TR => "Dil",
|
||||
Language::RU => "Язык",
|
||||
Language::PT => "Língua",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -790,6 +1020,10 @@ pub fn overview_translation(language: Language) -> &'static str {
|
|||
Language::UK => "Огляд",
|
||||
Language::ZH => "概览",
|
||||
Language::RO => "Prezentare generală",
|
||||
Language::KO => "개요",
|
||||
Language::TR => "Ön izleme",
|
||||
Language::RU => "Обзор",
|
||||
Language::PT => "Visão geral",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -804,6 +1038,10 @@ pub fn packets_threshold_translation(language: Language) -> &'static str {
|
|||
Language::UK => "Повідом мене про переліміт пакетів",
|
||||
Language::ZH => "超过设定的数据包数量阈值时通知我",
|
||||
Language::RO => "Anunță-mă când este depășit un prag de pachete",
|
||||
Language::KO => "패킷 임계값을 초과하면 알림",
|
||||
Language::TR => "Paket eşiği aşıldığında beni bilgilendir",
|
||||
Language::RU => "Уведомить, когда порог по частоте пакетов превышен",
|
||||
Language::PT => "Notifique-me quando um limite de pacotes for excedido",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -818,6 +1056,10 @@ pub fn bytes_threshold_translation(language: Language) -> &'static str {
|
|||
Language::UK => "Повідом мене про переліміт байтів",
|
||||
Language::ZH => "超过设定的网络流量阈值时通知我",
|
||||
Language::RO => "Anunță-mă când este depășit un prag de octeți",
|
||||
Language::KO => "바이트 임계값을 초과하면 알림",
|
||||
Language::TR => "Bayt eşiği aşıldığında beni bilgilendir",
|
||||
Language::RU => "Уведомить, когда порог по полосе в байтах превышен",
|
||||
Language::PT => "Notifique-me quando um limite de bytes for excedido",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -826,12 +1068,15 @@ pub fn per_second_translation(language: Language) -> &'static str {
|
|||
Language::EN => "(per second)",
|
||||
Language::IT => "(al secondo)",
|
||||
Language::FR => "(par seconde)",
|
||||
Language::ES => "(por segundo)",
|
||||
Language::ES | Language::PT => "(por segundo)",
|
||||
Language::PL => "(na sekundę)",
|
||||
Language::DE => "(pro Sekunde)",
|
||||
Language::UK => "(на секунду)",
|
||||
Language::ZH => "(每秒) ",
|
||||
Language::RO => "(pe secundă)",
|
||||
Language::KO => "(초당)",
|
||||
Language::TR => "(her saniye)",
|
||||
Language::RU => "(в секунду)",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -846,6 +1091,10 @@ pub fn specify_multiples_translation(language: Language) -> &'static str {
|
|||
Language::UK => "; можеш також вибрати 'K', 'M' i 'G'",
|
||||
Language::ZH => "您可指定 'K', 'M', 'G'",
|
||||
Language::RO => "; puteți specifica 'K', 'M', 'G'",
|
||||
Language::KO => "; 지정가능합니다 'K', 'M', 'G'",
|
||||
Language::TR => "; şunları da kullanabilirsin 'K', 'M' ve 'G'",
|
||||
Language::RU => "; Так же можно указать 'K', 'M' или 'G'",
|
||||
Language::PT => "; também pode especificar 'K', 'M' e 'G'",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -862,6 +1111,10 @@ pub fn favorite_notification_translation(language: Language) -> &'static str {
|
|||
Language::UK => "Повідом мене, коли буде обмін даними з моїх улюблених",
|
||||
Language::ZH => "收藏夹内的连接有新活动时通知我",
|
||||
Language::RO => "Anunță-mă când sunt transferate date noi de la favoritele mele",
|
||||
Language::KO => "즐겨찾기에서 새 데이터가 교환될 때 알림",
|
||||
Language::TR => "Favorilerimde veri akışı olduğunda beni uyar",
|
||||
Language::RU => "Уведомить, если произошёл обмен данными в соединениях из избранного",
|
||||
Language::PT => "Notificar-me quando novos dados forem trocados dos meus favoritos",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -876,18 +1129,25 @@ pub fn threshold_translation(language: Language) -> String {
|
|||
Language::UK => "Ліміт: ".to_string(),
|
||||
Language::ZH => "阈值: ".to_string(),
|
||||
Language::RO => "Prag: ".to_string(),
|
||||
Language::KO => "임계값: ".to_string(),
|
||||
Language::TR => "Eşik: ".to_string(),
|
||||
Language::RU => "Порог: ".to_string(),
|
||||
Language::PT => "Limite: ".to_string(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn volume_translation(language: Language, value: u8) -> String {
|
||||
match language {
|
||||
Language::EN | Language::IT | Language::FR => format!("Volume: {value:^3}%"),
|
||||
Language::EN | Language::IT | Language::FR | Language::PT => format!("Volume: {value:^3}%"),
|
||||
Language::ES => format!("Volumen: {value:^3}%"),
|
||||
Language::PL => format!("Głośność: {value:^3}%"),
|
||||
Language::DE => format!("Lautstärke: {value:^3}%"),
|
||||
Language::UK => format!("Гучність: {value:^3}%"),
|
||||
Language::ZH => format!("通知音量: {value:^3}%"),
|
||||
Language::RO => format!("Volum: {value:^3}%"),
|
||||
Language::KO => format!("볼륨: {value:^3}%"),
|
||||
Language::TR => format!("Ses: {value:^3}%"),
|
||||
Language::RU => format!("Объём: {value:^3}%"),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -899,9 +1159,12 @@ pub fn sound_translation(language: Language) -> &'static str {
|
|||
Language::ES => "Sonido:",
|
||||
Language::PL => "Dźwięk:",
|
||||
Language::DE => "Ton:",
|
||||
Language::UK => "Звук:",
|
||||
Language::UK | Language::RU => "Звук:",
|
||||
Language::ZH => "通知音:",
|
||||
Language::RO => "Sunet:",
|
||||
Language::KO => "사운드:",
|
||||
Language::TR => "Ses:",
|
||||
Language::PT => "Som:",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -916,6 +1179,10 @@ pub fn open_report_translation(language: Language) -> &'static str {
|
|||
Language::UK => "Відкрий повний рапорт",
|
||||
Language::ZH => "打开完整报告",
|
||||
Language::RO => "Deschideți raport complet",
|
||||
Language::KO => "전체 보고서 열기",
|
||||
Language::TR => "Tam raporu aç",
|
||||
Language::RU => "Открыть полный отчёт",
|
||||
Language::PT => "Abrir relatório completo",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -930,6 +1197,10 @@ pub fn bytes_exceeded_translation(language: Language) -> &'static str {
|
|||
Language::UK => "Ліміт байтів перевищено!",
|
||||
Language::ZH => "达到设定的网络流量阈值!",
|
||||
Language::RO => "Prag de octeți depășit!",
|
||||
Language::KO => "바이트 임계값 초과!",
|
||||
Language::TR => "Bayt eşik değeri aşıldı!",
|
||||
Language::RU => "Порог в байтах превышен!",
|
||||
Language::PT => "Limite de bytes excedido!",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -945,6 +1216,10 @@ pub fn bytes_exceeded_value_translation(language: Language, value: &str) -> Stri
|
|||
Language::UK => format!("{trimmed_value} байтів було обміняно"),
|
||||
Language::ZH => format!("已交换字节 {trimmed_value}"),
|
||||
Language::RO => format!("au fost transferați {trimmed_value} octeți"),
|
||||
Language::KO => format!("바이트 {trimmed_value} 가 교환되었습니다"),
|
||||
Language::TR => format!("{trimmed_value} bayt aktarıldı"),
|
||||
Language::RU => format!("{trimmed_value} байт обмена информацией"),
|
||||
Language::PT => format!("Foram trocados {trimmed_value} bytes"),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -959,13 +1234,23 @@ pub fn packets_exceeded_translation(language: Language) -> &'static str {
|
|||
Language::UK => "Ліміт пакетів перевищено!",
|
||||
Language::ZH => "达到设定的数据包数量阈值!",
|
||||
Language::RO => "Prag de pachete depășit!",
|
||||
Language::KO => "패킷 임계값 초과!",
|
||||
Language::TR => "Paket eşik değeri aşıldı!",
|
||||
Language::RU => "Порог по числу пакетов превышен!",
|
||||
Language::PT => "Limite de pacotes excedido!",
|
||||
}
|
||||
}
|
||||
|
||||
pub fn packets_exceeded_value_translation(language: Language, value: u32) -> String {
|
||||
match language {
|
||||
Language::EN => format!("{value} packets have been exchanged"),
|
||||
Language::IT => format!("{value} pacchetti sono stati scambiati"),
|
||||
Language::EN => match value {
|
||||
1 => "1 packet has been exchanged".to_owned(),
|
||||
npackets => format!("{npackets} packets have been exchanged"),
|
||||
},
|
||||
Language::IT => match value {
|
||||
1 => "1 pacchetto è stato scambiato".to_owned(),
|
||||
npackets => format!("{npackets} pacchetti sono stati scambiati"),
|
||||
},
|
||||
Language::FR => match value {
|
||||
1 => "1 paquet a été échangé".to_owned(),
|
||||
npackets => format!("{npackets} paquets ont été échangés"),
|
||||
|
|
@ -976,6 +1261,13 @@ pub fn packets_exceeded_value_translation(language: Language, value: u32) -> Str
|
|||
Language::UK => format!("Обміняно {value} пакетів"),
|
||||
Language::ZH => format!("已交换数据包 {value}"),
|
||||
Language::RO => format!("au fost transferate {value} pachete"),
|
||||
Language::KO => format!("패킷 {value} 가 교환되었습니다"),
|
||||
Language::TR => format!("{value} paket aktarıldı"),
|
||||
Language::RU => format!("{value} пакет(ов) обмена информацией"),
|
||||
Language::PT => match value {
|
||||
1 => "Foi trocado 1 pacote".to_owned(),
|
||||
npackets => format!("Foram trocados {npackets} pacotes"),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -990,6 +1282,10 @@ pub fn favorite_transmitted_translation(language: Language) -> &'static str {
|
|||
Language::UK => "Нові дані обміняно з улюблених!",
|
||||
Language::ZH => "收藏夹内的连接有新活动!",
|
||||
Language::RO => "Date noi transferate de la favorite!",
|
||||
Language::KO => "즐겨찾기에서 새 데이터 교환",
|
||||
Language::TR => "Favorilerden yeni veri aktarıldı!",
|
||||
Language::RU => "Новый обмен данными в избранных соедиениях!",
|
||||
Language::PT => "Novos dados trocados dos favoritos!",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1022,6 +1318,18 @@ pub fn no_notifications_set_translation(language: Language) -> Text<'static> {
|
|||
Language::RO => "Încă nu ați activat notificările!\n\n\
|
||||
După ce le veți activa, această pagină va afișa un jurnal al notificărilor dvs\n\n\
|
||||
Puteți activa notificările din setări:",
|
||||
Language::KO => "아직 알림을 활성화하지 않았습니다!\n\n\
|
||||
활성화로 설정하면 이 페이지에 알림 로그가 표시됩니다\n\n\
|
||||
설정에서 알림을 활성화할 수 있습니다:",
|
||||
Language::TR => "Henüz bildirimleri etkinleştirmedin!\n\n\
|
||||
Etkinleştirdikten sonra bu sayfada bildirimlerine ait kütüğü görebilirsin\n\n\
|
||||
Bildirimleri, ayarlardan etkinleştirebilirsin:",
|
||||
Language::RU => "Уведомления пока не настроены!\n\n\
|
||||
После настройки, эта страница будет показывать журнал уведомлений\n\n\
|
||||
Вы можете включить уведомления в настройках:",
|
||||
Language::PT => "Ainda não ativou as notificações!\n\n\
|
||||
Depois de ativá-las, esta página irá mostrar um registo das suas notificações\n\n\
|
||||
Pode ativar as notificações nas definições:",
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -1063,6 +1371,22 @@ pub fn no_notifications_received_translation(language: Language) -> Text<'static
|
|||
"Nimic de văzut momentan...\n\n\
|
||||
Când veți primi o notificare, aceasta va fi afișată aici"
|
||||
}
|
||||
Language::KO => {
|
||||
"현재는 볼 것이 없습니다...\n\n\
|
||||
알림을 받으면 여기에 표시됩니다"
|
||||
}
|
||||
Language::TR => {
|
||||
"Şu an görecek bir şey yok...\n\n\
|
||||
Bildirim aldığınız zaman burada gözükecektir"
|
||||
}
|
||||
Language::RU => {
|
||||
"Нечего показывать в текущий момент...\n\n\
|
||||
Когда прийдут уведомления, они будут показаны тут"
|
||||
}
|
||||
Language::PT => {
|
||||
"Nada para ver neste momento...\n\n\
|
||||
Quando receber uma notificação, ela será mostrada aqui"
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -1077,5 +1401,9 @@ pub fn only_last_30_translation(language: Language) -> &'static str {
|
|||
Language::UK => "Можеш побачити лише 30 останніх повідомлень",
|
||||
Language::ZH => "仅显示最近 30 条通知",
|
||||
Language::RO => "Sunt afișate doar ultimele 30 de notificări",
|
||||
Language::KO => "최근 30개의 알림만 표시됩니다",
|
||||
Language::TR => "Sadece son 30 bildirim gösterilmektedir",
|
||||
Language::RU => "Тут показываются только последние 30 уведомлений",
|
||||
Language::PT => "São mostradas apenas as últimas 30 notificações",
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ pub fn new_version_available_translation(language: Language) -> &'static str {
|
|||
match language {
|
||||
Language::EN => "A newer version is available on GitHub",
|
||||
Language::IT => "Una versione più recente è disponibile su GitHub",
|
||||
Language::RU => "Новая версия доступна на GitHub",
|
||||
_ => "A newer version is available on GitHub",
|
||||
}
|
||||
}
|
||||
|
|
@ -17,6 +18,7 @@ pub fn inspect_translation(language: Language) -> &'static str {
|
|||
Language::ES => "Inspeccionar",
|
||||
Language::PL => "Sprawdź",
|
||||
Language::DE => "Überprüfen",
|
||||
Language::RU => "Инспектировать",
|
||||
_ => "Inspect",
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,14 @@ pub enum Language {
|
|||
ZH,
|
||||
/// Romanian
|
||||
RO,
|
||||
/// Korean
|
||||
KO,
|
||||
/// Portuguese
|
||||
PT,
|
||||
/// Turkish
|
||||
TR,
|
||||
/// Russian
|
||||
RU,
|
||||
}
|
||||
|
||||
impl Default for Language {
|
||||
|
|
@ -32,12 +40,14 @@ impl Default for Language {
|
|||
impl Language {
|
||||
pub(crate) const COL1: [Language; 5] = [
|
||||
Language::EN,
|
||||
Language::ES,
|
||||
Language::IT,
|
||||
Language::RO,
|
||||
Language::FR,
|
||||
Language::PL,
|
||||
Language::RU,
|
||||
Language::ZH,
|
||||
];
|
||||
pub(crate) const COL2: [Language; 4] = [Language::DE, Language::FR, Language::PL, Language::UK];
|
||||
pub(crate) const COL2: [Language; 4] = [Language::DE, Language::IT, Language::PT, Language::TR];
|
||||
pub(crate) const COL3: [Language; 4] = [Language::ES, Language::KO, Language::RO, Language::UK];
|
||||
|
||||
pub fn get_radio_label(&self) -> &str {
|
||||
match self {
|
||||
Language::EN => "English",
|
||||
|
|
@ -49,6 +59,10 @@ impl Language {
|
|||
Language::UK => "Українська",
|
||||
Language::ZH => "简体中文",
|
||||
Language::RO => "Română",
|
||||
Language::KO => "한국인",
|
||||
Language::TR => "Türkçe",
|
||||
Language::RU => "Русский",
|
||||
Language::PT => "Português",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -513,8 +513,12 @@ pub fn get_flag_from_language_code(language: &str) -> Image {
|
|||
"FR" => FR,
|
||||
"EN" => GB,
|
||||
"IT" => IT,
|
||||
"KO" => KR,
|
||||
"PL" => PL,
|
||||
"PT" => PT,
|
||||
"RO" => RO,
|
||||
"RU" => RU,
|
||||
"TR" => TR,
|
||||
"UK" => UA,
|
||||
_ => UNKNOWN,
|
||||
})))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue