├── .editorconfig ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── bug-report.yml │ └── feature-request.yml └── workflows │ └── ci.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── Collision.doap ├── LICENSE ├── Makefile ├── README.md ├── data ├── css │ └── style.css ├── dev.geopjr.Collision.desktop.in ├── dev.geopjr.Collision.gresource.xml ├── dev.geopjr.Collision.gschema.xml ├── dev.geopjr.Collision.json ├── dev.geopjr.Collision.metainfo.xml.in ├── icons │ ├── cross-large-symbolic.svg │ ├── dev.geopjr.Archives.svg │ ├── dev.geopjr.Calligraphy.svg │ ├── dev.geopjr.Collision-symbolic.svg │ ├── dev.geopjr.Collision.Source.svg │ ├── dev.geopjr.Collision.svg │ ├── dev.geopjr.Tuba.svg │ ├── octothorp-symbolic.svg │ ├── paper-symbolic.svg │ └── test-pass-symbolic.svg ├── screenshots │ ├── screenshot-1.png │ ├── screenshot-2.png │ ├── screenshot-3.png │ └── screenshot-4.png ├── scripts │ ├── licenses.cr │ └── shards_to_sources.cr └── ui │ ├── application.ui │ ├── hash_row.ui │ └── shortcuts_window.ui ├── nautilus-extension └── collision-extension.py ├── po ├── LINGUAS ├── POTFILES ├── ar.po ├── be.po ├── ber.po ├── bg.po ├── ca.po ├── cs.po ├── de.po ├── dev.geopjr.Collision.pot ├── el.po ├── es.po ├── et.po ├── eu.po ├── fa.po ├── fi.po ├── fr.po ├── gl.po ├── hi.po ├── hr.po ├── id.po ├── it.po ├── ja.po ├── ko.po ├── nb_NO.po ├── nl.po ├── pl.po ├── pt.po ├── pt_BR.po ├── ro.po ├── ru.po ├── sk.po ├── sv.po ├── ta.po ├── tr.po ├── uk.po ├── vi.po ├── zh_CN.po └── zh_Hant.po ├── shard.lock ├── shard.yml ├── spec ├── compare_spec.cr ├── feedback_spec.cr ├── hash_generator_spec.cr ├── spec_helper.cr ├── test.txt └── test_content.txt └── src ├── collision.cr ├── collision ├── actions.cr ├── actions │ ├── about.cr │ ├── hashinfo.cr │ ├── new_window.cr │ ├── open_file.cr │ └── quit.cr ├── functions │ ├── checksum.cr │ ├── dnd.cr │ ├── feedback.cr │ ├── file_utils.cr │ └── settings.cr ├── widgets │ └── hash_row.cr └── window.cr └── license.cr /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*.cr] 4 | charset = utf-8 5 | end_of_line = lf 6 | insert_final_newline = true 7 | indent_style = space 8 | indent_size = 2 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | data/screenshots/*.png filter=lfs diff=lfs merge=lfs -text 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug-report.yml: -------------------------------------------------------------------------------- 1 | name: Bug Report 2 | description: Report a problem you encountered while using the app 3 | title: "[Bug]: " 4 | labels: bug 5 | body: 6 | - type: textarea 7 | attributes: 8 | label: Describe the bug 9 | description: A clear and concise description of what the bug is. 10 | validations: 11 | required: true 12 | - type: textarea 13 | attributes: 14 | label: Steps To Reproduce 15 | description: Steps to reproduce the behavior. 16 | placeholder: | 17 | 1. Go to '...' 18 | 2. Click on '...' 19 | 3. Scroll down to '...' 20 | 4. See error 21 | validations: 22 | required: true 23 | - type: textarea 24 | attributes: 25 | label: Logs and/or Screenshots 26 | description: Terminal logs are often invaluable. If you can, launch the app from terminal and paste the output here. Run `flatpak run dev.geopjr.Collision --debug` for a verbose output. Please remove any filenames before creating this issue for privacy reasons (if you copy the logs from About > Troubleshooting > Debugging Information, they will be redacted). 27 | value: | 28 | ``` 29 | 30 | ``` 31 | validations: 32 | required: false 33 | - type: input 34 | attributes: 35 | label: Operating System 36 | description: Please include its version if available. 37 | validations: 38 | required: true 39 | - type: dropdown 40 | attributes: 41 | label: Package 42 | description: How did you install the app? 43 | multiple: false 44 | options: 45 | - Flatpak 46 | - Snap 47 | - OS repositories 48 | - Compiled manually 49 | - I'm not sure 50 | validations: 51 | required: true 52 | - type: textarea 53 | attributes: 54 | label: Troubleshooting information 55 | description: You can find this info under About > Troubleshooting > Debugging Information. 56 | validations: 57 | required: false 58 | - type: textarea 59 | attributes: 60 | label: Additional Context 61 | description: Add any other relevant information about the problem here. 62 | validations: 63 | required: false 64 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature-request.yml: -------------------------------------------------------------------------------- 1 | name: Feature Request 2 | description: Suggest an idea for this app 3 | title: "[Request]: " 4 | labels: enhancement 5 | body: 6 | - type: textarea 7 | attributes: 8 | label: Describe the request 9 | description: A clear and concise description of what the request is. 10 | validations: 11 | required: true 12 | - type: checkboxes 13 | attributes: 14 | label: Implementation Details 15 | description: How should this feature be implemented? 16 | options: 17 | - label: This follows the [GNOME HIG](https://developer.gnome.org/hig/). 18 | required: true -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: Specs & Lint 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | pull_request: 7 | jobs: 8 | lint: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v4 12 | - name: Install Crystal 13 | uses: crystal-lang/install-crystal@v1 14 | - name: Check formatting 15 | run: crystal tool format --check 16 | flatpak-builder: 17 | name: "Flatpak Builder" 18 | runs-on: ubuntu-latest 19 | needs: [ lint ] 20 | container: 21 | image: bilelmoussaoui/flatpak-github-actions:gnome-47 22 | options: --privileged 23 | strategy: 24 | matrix: 25 | arch: 26 | - x86_64 27 | - aarch64 28 | # Don't fail the whole workflow if one architecture fails 29 | fail-fast: false 30 | steps: 31 | - uses: actions/checkout@v4 32 | - name: Validate AppStream 33 | run: appstreamcli validate ./data/dev.geopjr.Collision.metainfo.xml.in 34 | # Docker is required by the docker/setup-qemu-action which enables emulation 35 | - name: Install deps 36 | if: matrix.arch == 'aarch64' 37 | run: dnf -y install docker 38 | - name: Set up QEMU 39 | if: matrix.arch == 'aarch64' 40 | id: qemu 41 | uses: docker/setup-qemu-action@v2 42 | with: 43 | platforms: arm64 44 | - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 45 | with: 46 | bundle: "dev.geopjr.Collision.Devel.flatpak" 47 | run-tests: true 48 | manifest-path: "data/dev.geopjr.Collision.json" 49 | cache-key: flatpak-builder-${{ github.sha }} 50 | arch: ${{ matrix.arch }} 51 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /docs/ 2 | /lib/* 3 | /bin/ 4 | /.shards/ 5 | *.dwarf 6 | *~ 7 | collision 8 | !collision/ 9 | .flatpak-builder/ 10 | *.gresource 11 | .rucksack 12 | .rucksack.toc 13 | y2po.cr 14 | po/mo/ 15 | *.mo 16 | data/*.desktop 17 | data/*.metainfo.xml 18 | build/ 19 | -------------------------------------------------------------------------------- /Collision.doap: -------------------------------------------------------------------------------- 1 | 8 | Collision 9 | Check hashes for your files 10 | 11 | 12 | Crystal 13 | 14 | 15 | Evangelos "GeopJr" Paterakis 16 | 17 | 18 | 19 | 20 | GeopJr 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 2-Clause License 2 | 3 | Copyright (c) 2021, Evangelos "GeopJr" Paterakis 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 12 | 2. Redistributions in binary form must reproduce the above copyright notice, 13 | this list of conditions and the following disclaimer in the documentation 14 | and/or other materials provided with the distribution. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 20 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 22 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 23 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 24 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: all install uninstall test check build mo desktop gresource bindings install_nautilus_extension 2 | PREFIX ?= /usr 3 | PO_LOCATION ?= po 4 | LOCALE_LOCATION ?= /share/locale 5 | 6 | all: desktop bindings build 7 | 8 | bindings: 9 | ./bin/gi-crystal || $(CRYSTAL_LOCATION)shards install && ./bin/gi-crystal 10 | 11 | build: 12 | COLLISION_LOCALE_LOCATION="$(PREFIX)$(LOCALE_LOCATION)" $(CRYSTAL_LOCATION)shards build -Dpreview_mt --release --no-debug 13 | 14 | check test: 15 | $(CRYSTAL_LOCATION)crystal spec -Dpreview_mt --order random 16 | 17 | run: 18 | COLLISION_LOCALE_LOCATION="$(PREFIX)$(LOCALE_LOCATION)" $(CRYSTAL_LOCATION)shards run -Dpreview_mt 19 | 20 | gresource: 21 | glib-compile-resources --sourcedir data --target data/dev.geopjr.Collision.gresource data/dev.geopjr.Collision.gresource.xml 22 | 23 | mo: 24 | mkdir -p $(PO_LOCATION)/mo 25 | for lang in `cat "$(PO_LOCATION)/LINGUAS"`; do \ 26 | if [[ "$$lang" == 'en' || "$$lang" == '' ]]; then continue; fi; \ 27 | mkdir -p "$(PREFIX)$(LOCALE_LOCATION)/$$lang/LC_MESSAGES"; \ 28 | msgfmt "$(PO_LOCATION)/$$lang.po" -o "$(PO_LOCATION)/mo/$$lang.mo"; \ 29 | install -D -m 0644 "$(PO_LOCATION)/mo/$$lang.mo" "$(PREFIX)$(LOCALE_LOCATION)/$$lang/LC_MESSAGES/dev.geopjr.Collision.mo"; \ 30 | done 31 | 32 | metainfo: 33 | msgfmt --xml --template data/dev.geopjr.Collision.metainfo.xml.in -d "$(PO_LOCATION)" -o data/dev.geopjr.Collision.metainfo.xml 34 | 35 | desktop: 36 | msgfmt --desktop --template data/dev.geopjr.Collision.desktop.in -d "$(PO_LOCATION)" -o data/dev.geopjr.Collision.desktop 37 | 38 | install_nautilus_extension: 39 | mkdir -p ~/.local/share/nautilus-python/extensions/ 40 | cp nautilus-extension/collision-extension.py ~/.local/share/nautilus-python/extensions/ 41 | nautilus -q || true 42 | 43 | install: mo 44 | install -D -m 0755 bin/collision $(PREFIX)/bin/collision 45 | install -D -m 0644 data/dev.geopjr.Collision.gschema.xml $(PREFIX)/share/glib-2.0/schemas/dev.geopjr.Collision.gschema.xml 46 | install -D -m 0644 data/dev.geopjr.Collision.desktop $(PREFIX)/share/applications/dev.geopjr.Collision.desktop 47 | install -D -m 0644 data/icons/dev.geopjr.Collision.svg $(PREFIX)/share/icons/hicolor/scalable/apps/dev.geopjr.Collision.svg 48 | install -D -m 0644 data/icons/dev.geopjr.Collision-symbolic.svg $(PREFIX)/share/icons/hicolor/symbolic/apps/dev.geopjr.Collision-symbolic.svg 49 | gtk-update-icon-cache $(PREFIX)/share/icons/hicolor 50 | glib-compile-schemas $(PREFIX)/share/glib-2.0/schemas/ 51 | 52 | uninstall: 53 | rm -f $(PREFIX)/bin/collision 54 | rm -f $(PREFIX)/share/glib-2.0/schemas/dev.geopjr.Collision.gschema.xml 55 | rm -f $(PREFIX)/share/applications/dev.geopjr.Collision.desktop 56 | rm -f $(PREFIX)/share/icons/hicolor/scalable/apps/dev.geopjr.Collision.svg 57 | rm -f $(PREFIX)/share/icons/hicolor/symbolic/apps/dev.geopjr.Collision-symbolic.svg 58 | rm -rf $(PREFIX)$(LOCALE_LOCATION)/*/*/dev.geopjr.Collision.mo 59 | gtk-update-icon-cache $(PREFIX)/share/icons/hicolor 60 | 61 | validate-appstream: 62 | appstreamcli validate ./data/dev.geopjr.Collision.metainfo.xml.in 63 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | branding 3 |

4 |

Collision

5 |

Check hashes for your files

6 |

7 |
8 | Code of Conduct - GNOME 9 | BSD-2-Clause 10 | ci action status 11 |

12 | 13 |

14 | screenshot
15 | 16 | Download on Flathub 17 | 18 |

19 | 20 | # Building 21 | 22 | ## Dependencies 23 | 24 | - `Crystal` - `~1.15.1` 25 | - `GTK` 26 | - `libadwaita` 27 | - `gettext` 28 | 29 | ### Makefile 30 | 31 | 1. `$ make` 32 | 2. `# make install` # To install it 33 | 34 | # Nautilus Extension 35 | 36 | Collision offers a nautilus / GNOME Files extension that adds a "Check Hashes" context menu item. 37 | 38 | ## Dependencies 39 | 40 | - `nautilus` 41 | - [`nautilus-python`](https://repology.org/project/nautilus-python/versions) 42 | 43 | ## Makefile 44 | 45 | `$ make install_nautilus_extension` 46 | 47 | # Sponsors 48 | 49 |
50 | 51 | [![GeopJr Sponsors](https://cdn.jsdelivr.net/gh/GeopJr/GeopJr@main/sponsors.svg)](https://github.com/sponsors/GeopJr) 52 | 53 |
54 | 55 |
56 | 57 |

58 | 59 | Part of GNOME Circle 60 |
61 | 62 | Please do not theme this app 63 |
64 | 65 | Translation status 66 |
67 | 68 |

69 | 70 | # Contributing 71 | 72 | 1. Read the [Code of Conduct](https://github.com/GeopJr/Collision/blob/main/CODE_OF_CONDUCT.md) 73 | 2. Fork it ( https://github.com/GeopJr/Collision/fork ) 74 | 3. Create your feature branch (git checkout -b my-new-feature) 75 | 4. Commit your changes (git commit -am 'Add some feature') 76 | 5. Push to the branch (git push origin my-new-feature) 77 | 6. Create a new Pull Request 78 | -------------------------------------------------------------------------------- /data/css/style.css: -------------------------------------------------------------------------------- 1 | .hash-row .subtitle { 2 | font-family: monospace; 3 | } 4 | 5 | .card-like { 6 | border-radius: 12px; 7 | } 8 | 9 | .compact-title { 10 | font-size: 18pt; 11 | } 12 | -------------------------------------------------------------------------------- /data/dev.geopjr.Collision.desktop.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Type=Application 3 | StartupNotify=true 4 | StartupWMClass=collision 5 | Exec=collision %F 6 | Name=Collision 7 | GenericName=Hash Generator 8 | Comment=Check hashes for your files 9 | Terminal=false 10 | Icon=dev.geopjr.Collision 11 | Categories=Utility; 12 | Keywords=md5;sha1;sha256;sha512;blake3;crc32;adler32;hash; 13 | # Translators: Do NOT translate or transliterate this text (these are enum types)! 14 | X-Purism-FormFactor=Workstation;Mobile; 15 | -------------------------------------------------------------------------------- /data/dev.geopjr.Collision.gresource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | css/style.css 5 | icons/dev.geopjr.Collision.svg 6 | icons/cross-large-symbolic.svg 7 | icons/test-pass-symbolic.svg 8 | icons/octothorp-symbolic.svg 9 | icons/paper-symbolic.svg 10 | ui/application.ui 11 | ui/hash_row.ui 12 | ui/shortcuts_window.ui 13 | 14 | 15 | 16 | icons/dev.geopjr.Archives.svg 17 | icons/dev.geopjr.Calligraphy.svg 18 | icons/dev.geopjr.Tuba.svg 19 | 20 | 21 | -------------------------------------------------------------------------------- /data/dev.geopjr.Collision.gschema.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 600 6 | Default window width 7 | 8 | 9 | 460 10 | Default window height 11 | 12 | 13 | false 14 | Default window maximized state 15 | 16 | 17 | -------------------------------------------------------------------------------- /data/dev.geopjr.Collision.json: -------------------------------------------------------------------------------- 1 | { 2 | "app-id": "dev.geopjr.Collision", 3 | "runtime": "org.gnome.Platform", 4 | "runtime-version": "48", 5 | "sdk": "org.gnome.Sdk", 6 | "command": "collision", 7 | "finish-args": [ 8 | "--socket=wayland", 9 | "--socket=fallback-x11", 10 | "--share=ipc", 11 | "--device=dri" 12 | ], 13 | "cleanup": [ 14 | "/include", 15 | "/lib/pkgconfig", 16 | "/share/doc", 17 | "/share/man", 18 | "*.a", 19 | "*.la" 20 | ], 21 | "modules": [ 22 | { 23 | "name": "livevent", 24 | "sources": [ 25 | { 26 | "type": "git", 27 | "url": "https://github.com/libevent/libevent.git", 28 | "tag": "release-2.1.12-stable" 29 | } 30 | ] 31 | }, 32 | { 33 | "name": "libyaml", 34 | "sources": [ 35 | { 36 | "type": "archive", 37 | "url": "https://github.com/yaml/libyaml/releases/download/0.2.5/yaml-0.2.5.tar.gz", 38 | "sha256": "c642ae9b75fee120b2d96c712538bd2cf283228d2337df2cf2988e3c02678ef4" 39 | } 40 | ] 41 | }, 42 | { 43 | "name": "collision", 44 | "buildsystem": "simple", 45 | "build-options": { 46 | "append-path": "/run/build/collision/crystal/bin/" 47 | }, 48 | "build-commands": [ 49 | "sed -i 's/{{ `shards version \"#{__DIR__}\"`.strip.stringify }}/{{read_file(\"#{__DIR__}\\/..\\/..\\/shard.yml\").split(\"version: \")[1].split(\"\\\\n\")[0]}}/' ./lib/gi-crystal/src/generator/main.cr", 50 | "for i in ./lib/*/; do ln -snf \"..\" \"$i/lib\"; done", 51 | "cd lib/gi-crystal && crystal build src/generator/main.cr && cd ../.. && mkdir ./bin && cp lib/gi-crystal/main ./bin/gi-crystal", 52 | "./bin/gi-crystal", 53 | "crystal spec -Dpreview_mt --order random || exit 1", 54 | "COLLISION_LOCALE_LOCATION=\"/app/share/locale\" crystal build -Dpreview_mt ./src/collision.cr -Denable_gschema --release #--no-debug", 55 | "msgfmt --xml --template data/dev.geopjr.Collision.metainfo.xml.in -d \"./po\" -o data/dev.geopjr.Collision.metainfo.xml", 56 | "msgfmt --desktop --template data/dev.geopjr.Collision.desktop.in -d \"./po\" -o data/dev.geopjr.Collision.desktop", 57 | "mkdir -p po/mo && for lang in `cat \"po/LINGUAS\"`; do if [[ \"$lang\" == 'en' || \"$lang\" == '' ]]; then continue; fi; mkdir -p \"/app/share/locale/$lang/LC_MESSAGES\"; msgfmt \"po/$lang.po\" -o \"po/mo/$lang.mo\"; install -D -m 0644 \"po/mo/$lang.mo\" \"/app/share/locale/$lang/LC_MESSAGES/dev.geopjr.Collision.mo\"; done" 58 | ], 59 | "post-install": [ 60 | "install -D -m 0755 collision /app/bin/collision", 61 | "install -D -m 0644 data/dev.geopjr.Collision.desktop /app/share/applications/dev.geopjr.Collision.desktop", 62 | "install -D -m 0644 data/icons/dev.geopjr.Collision.svg /app/share/icons/hicolor/scalable/apps/dev.geopjr.Collision.svg", 63 | "install -D -m 0644 data/icons/dev.geopjr.Collision-symbolic.svg /app/share/icons/hicolor/symbolic/apps/dev.geopjr.Collision-symbolic.svg", 64 | "install -D -m 0644 data/dev.geopjr.Collision.metainfo.xml /app/share/metainfo/dev.geopjr.Collision.metainfo.xml", 65 | "install -D -m 0644 data/dev.geopjr.Collision.gschema.xml /app/share/glib-2.0/schemas/dev.geopjr.Collision.gschema.xml", 66 | "glib-compile-schemas /app/share/glib-2.0/schemas" 67 | ], 68 | "sources": [ 69 | { 70 | "type": "dir", 71 | "path": "..", 72 | "skip": [ 73 | ".rucksack", 74 | ".rucksack.toc", 75 | "lib/", 76 | "collision", 77 | "bin/", 78 | "data/dev.geopjr.Collision.desktop", 79 | "data/dev.geopjr.Collision.gresource", 80 | "po/mo/" 81 | ] 82 | }, 83 | { 84 | "type": "archive", 85 | "dest": "crystal/", 86 | "url": "https://github.com/crystal-lang/crystal/releases/download/1.15.1/crystal-1.15.1-1-linux-x86_64.tar.gz", 87 | "sha256": "411bf67728be212d7e80a8f1a8990aab5db8c962c108ad3e6b399359a6df6549", 88 | "only_arches": [ 89 | "x86_64" 90 | ] 91 | }, 92 | { 93 | "type": "archive", 94 | "dest": "crystal/", 95 | "url": "https://github.com/geopjr-forks/crystal-aarch64/releases/download/v1.15.1/crystal-1.15.1-1-linux-aarch64.tar.xz", 96 | "sha256": "a7481f4f039c089de7a5c26a6185fae1acfede845b32422bd5170c2415c87904", 97 | "only_arches": [ 98 | "aarch64" 99 | ] 100 | }, 101 | { 102 | "type": "git", 103 | "url": "https://github.com/geopjr/blake3.cr.git", 104 | "tag": "v1.4.0", 105 | "dest": "lib/blake3" 106 | }, 107 | { 108 | "type": "git", 109 | "url": "https://github.com/geopjr/gettext.cr.git", 110 | "tag": "v1.0.0", 111 | "dest": "lib/gettext" 112 | }, 113 | { 114 | "type": "git", 115 | "url": "https://github.com/hugopl/gi-crystal.git", 116 | "tag": "v0.25.0", 117 | "dest": "lib/gi-crystal" 118 | }, 119 | { 120 | "type": "git", 121 | "url": "https://github.com/hugopl/gtk4.cr.git", 122 | "tag": "v0.17.0", 123 | "dest": "lib/gtk4" 124 | }, 125 | { 126 | "type": "git", 127 | "url": "https://github.com/hugopl/harfbuzz.cr.git", 128 | "tag": "v0.2.0", 129 | "dest": "lib/harfbuzz" 130 | }, 131 | { 132 | "type": "git", 133 | "url": "https://github.com/hugopl/libadwaita.cr.git", 134 | "tag": "v0.1.0", 135 | "dest": "lib/libadwaita" 136 | }, 137 | { 138 | "type": "git", 139 | "url": "https://github.com/geopjr/non-blocking-spawn.git", 140 | "tag": "v1.1.0", 141 | "dest": "lib/non-blocking-spawn" 142 | }, 143 | { 144 | "type": "git", 145 | "url": "https://github.com/hugopl/pango.cr.git", 146 | "tag": "v0.3.1", 147 | "dest": "lib/pango" 148 | } 149 | ] 150 | }, 151 | { 152 | "name": "hack_for_Builder", 153 | "buildsystem": "simple", 154 | "build-commands": [] 155 | } 156 | ] 157 | } -------------------------------------------------------------------------------- /data/icons/cross-large-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /data/icons/dev.geopjr.Archives.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /data/icons/dev.geopjr.Calligraphy.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /data/icons/dev.geopjr.Collision-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /data/icons/dev.geopjr.Collision.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /data/icons/octothorp-symbolic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data/icons/paper-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /data/icons/test-pass-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /data/screenshots/screenshot-1.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:b28b5b87d2c1098a7cce3f1a9c71732601e6913e0617db718975a48fd5da0bbb 3 | size 46617 4 | -------------------------------------------------------------------------------- /data/screenshots/screenshot-2.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6bef3291f08a69127c248e909ca3b395381e8988c4f41bcb289c1efef1a4df25 3 | size 29443 4 | -------------------------------------------------------------------------------- /data/screenshots/screenshot-3.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f225e0a6462d9c3e151ced3d6cf127b5946aef1abb86c0ca753b0cb5dce4adda 3 | size 33601 4 | -------------------------------------------------------------------------------- /data/screenshots/screenshot-4.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:7aa8a7020d54aaf11f846adb6a7929953b724a3a06957afd7952646564bb0f20 3 | size 21622 4 | -------------------------------------------------------------------------------- /data/scripts/licenses.cr: -------------------------------------------------------------------------------- 1 | # Generates a list of licenses of all shards and the app itself 2 | # Inspired by: https://github.com/elorest/compiled_license 3 | # Adapted from sabo-tabby https://github.com/GeopJr/sabo-tabby/blob/main/src/licenses.cr 4 | 5 | APP_NAME = {{read_file("#{__DIR__}/../../shard.yml").split("name: ")[1].split("\n")[0]}} 6 | LICENSE_FILES = {"LICENSE", "LICENSE.md", "LICENSE.txt", "UNLICENSE"} 7 | DIVIDER = String.build do |str| 8 | str << "-" * 80 9 | str << '\n' 10 | end 11 | 12 | licenses = [] of String 13 | root = Path[__DIR__, "..", ".."] 14 | lib_folder = root / "lib" 15 | 16 | def get_license_content(parent : Path) : String? 17 | license = nil 18 | LICENSE_FILES.each do |license_file| 19 | license_path = parent / license_file 20 | if File.exists?(license_path) 21 | license = String.build do |str| 22 | str << DIVIDER 23 | str << File.read(license_path) 24 | str << DIVIDER 25 | end 26 | break 27 | end 28 | end 29 | license 30 | end 31 | 32 | unless (license = get_license_content(root)).nil? 33 | licenses << license 34 | end 35 | 36 | Dir.each_child(lib_folder) do |shard| 37 | path = lib_folder / shard 38 | next if File.file?(path) 39 | 40 | unless (license = get_license_content(path)).nil? 41 | licenses << "#{shard.capitalize}\n#{license}" 42 | end 43 | end 44 | 45 | licenses.unshift(APP_NAME.capitalize) 46 | 47 | puts licenses.join('\n') 48 | -------------------------------------------------------------------------------- /data/scripts/shards_to_sources.cr: -------------------------------------------------------------------------------- 1 | # Generates the required sources for the flatpak based on the shard.lock 2 | 3 | require "yaml" 4 | require "json" 5 | require "option_parser" 6 | 7 | PATH = Path["lib"] 8 | 9 | toJson = false 10 | 11 | OptionParser.parse do |parser| 12 | parser.on "-j", "--json", "Whether it should export json instead of yaml" do 13 | toJson = true 14 | end 15 | end 16 | 17 | lockfile = YAML.parse(File.read("shard.lock")) 18 | 19 | shards = lockfile["shards"] 20 | 21 | sources = [] of Hash(String, String) 22 | postinstall_scripts = [] of String 23 | 24 | shards.as_h.each do |x, y| 25 | version_type = "tag" 26 | version = "v" + y["version"].to_s 27 | if version.includes?("+git.commit.") 28 | version_type = "commit" 29 | version = version.split("+git.commit.")[-1] 30 | end 31 | sources << { 32 | "type" => "git", 33 | "url" => y["git"].to_s, 34 | version_type => version, 35 | "dest" => PATH.join(x.to_s).to_s, 36 | } 37 | end 38 | 39 | Dir.open("lib/").each_child do |child| 40 | child_path = Path["lib/"].join(child) 41 | next unless File.directory?(child_path) 42 | shard_file = YAML.parse(File.read(child_path.join("shard.yml"))) 43 | postinstall = shard_file["scripts"]?.try &.["postinstall"]? 44 | next unless postinstall 45 | postinstall_scripts << "cd #{child_path} && #{postinstall} && cd ../.." 46 | end 47 | 48 | commands = [] of String 49 | 50 | commands << "for i in ./#{PATH}/*/; do ln -snf \"..\" \"$i/lib\"; done" 51 | commands += postinstall_scripts if postinstall_scripts.size > 0 52 | 53 | # The following loop will go through all libs and symlink their libs to the parent folder. 54 | puts "Place the following snippet inside the 'build-commands' of your config:" 55 | puts toJson ? commands.to_pretty_json : commands.to_yaml 56 | puts "Keep in mind that postinstall scripts might need to be modified and audited." 57 | puts "" 58 | puts "Place the following snippet inside the 'sources' of your config:" 59 | puts toJson ? sources.to_pretty_json : sources.to_yaml 60 | -------------------------------------------------------------------------------- /data/ui/hash_row.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 21 | -------------------------------------------------------------------------------- /data/ui/shortcuts_window.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1 5 | 6 | 7 | shortcuts 8 | 10 9 | 10 | 11 | General 12 | 13 | 14 | Open a File 15 | app.open-file 16 | 17 | 18 | 19 | 20 | Show Keyboard Shortcuts 21 | win.show-help-overlay 22 | 23 | 24 | 25 | 26 | New Window 27 | app.new-window 28 | 29 | 30 | 31 | 32 | Close Window 33 | window.close 34 | 35 | 36 | 37 | 38 | Quit 39 | app.quit 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /nautilus-extension/collision-extension.py: -------------------------------------------------------------------------------- 1 | """ 2 | Add a Collision shortcut button to the right-click menu (Nautilus GTK4) 3 | """ 4 | 5 | from subprocess import Popen, check_call, CalledProcessError 6 | from urllib.parse import urlparse, unquote 7 | from shutil import which 8 | from gi import require_version 9 | from gettext import textdomain, gettext 10 | 11 | textdomain('dev.geopjr.Collision') 12 | _ = gettext 13 | 14 | require_version('Gtk', '4.0') 15 | require_version('Nautilus', '4.0') 16 | 17 | from gi.repository import Nautilus, GObject, Gtk, Gdk 18 | 19 | def get_collision(): 20 | try: 21 | check_call("flatpak list --columns=application | grep \"dev.geopjr.Collision\" &> /dev/null", shell=True) 22 | return "flatpak run --file-forwarding dev.geopjr.Collision" 23 | except CalledProcessError: 24 | if which("collision") is not None: 25 | return "collision" 26 | else: 27 | return False 28 | 29 | class NautilusCollision(Nautilus.MenuProvider, GObject.GObject): 30 | collision = get_collision() 31 | 32 | def __init__(self): 33 | self.window = None 34 | return 35 | 36 | # Executed method when the right-click entry is clicked 37 | def openWithCollision(self, menu, files): 38 | for file in files: 39 | file_path = repr(unquote(urlparse(file.get_uri()).path)) 40 | if self.collision != "collision": 41 | file_path = "@@ " + file_path + " @@" 42 | Popen(self.collision + " " + file_path, shell=True) # Collision need to be in your PATH 43 | 44 | def get_background_items(self, files): 45 | return 46 | 47 | def get_file_items(self, files): 48 | # The option doesn't appear when a folder is selected 49 | if any(x.is_directory() for x in files) or self.collision == False: 50 | return () 51 | 52 | menu_item = Nautilus.MenuItem( 53 | name="NautilusCollision::CheckHashes", 54 | label=_("Check Hashes")) 55 | 56 | menu_item.connect('activate', self.openWithCollision, files) 57 | 58 | return menu_item, 59 | -------------------------------------------------------------------------------- /po/LINGUAS: -------------------------------------------------------------------------------- 1 | ar 2 | be 3 | ber 4 | ca 5 | cs 6 | de 7 | el 8 | es 9 | et 10 | eu 11 | fa 12 | fi 13 | fr 14 | gl 15 | hi 16 | hr 17 | id 18 | it 19 | ja 20 | nl 21 | pl 22 | pt 23 | pt_BR 24 | ro 25 | ru 26 | sk 27 | sv 28 | ta 29 | tr 30 | uk 31 | vi 32 | zh_CN 33 | bg 34 | nb_NO 35 | zh_Hant 36 | ko 37 | -------------------------------------------------------------------------------- /po/POTFILES: -------------------------------------------------------------------------------- 1 | data/dev.geopjr.Collision.desktop.in 2 | data/dev.geopjr.Collision.metainfo.xml.in 3 | data/ui/application.ui 4 | data/ui/hash_row.ui 5 | data/ui/shortcuts_window.ui 6 | -------------------------------------------------------------------------------- /po/ar.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # Ibrahim Muhammad , 2022. 5 | # bonbonboi , 2022. 6 | # Ali Aljishi , 2023. 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: dev.geopjr.Collision\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2023-12-26 04:15+0200\n" 12 | "PO-Revision-Date: 2023-09-27 12:01+0000\n" 13 | "Last-Translator: Ali Aljishi \n" 14 | "Language-Team: Arabic \n" 16 | "Language: ar\n" 17 | "MIME-Version: 1.0\n" 18 | "Content-Type: text/plain; charset=UTF-8\n" 19 | "Content-Transfer-Encoding: 8bit\n" 20 | "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " 21 | "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" 22 | "X-Generator: Weblate 5.1-dev\n" 23 | 24 | #: data/dev.geopjr.Collision.desktop.in:6 25 | #: data/dev.geopjr.Collision.metainfo.xml.in:4 data/ui/application.ui:34 26 | #: data/ui/application.ui:77 data/ui/application.ui:114 27 | msgid "Collision" 28 | msgstr "تصادم" 29 | 30 | #: data/dev.geopjr.Collision.desktop.in:7 31 | msgid "Hash Generator" 32 | msgstr "مولِّد هاش" 33 | 34 | #: data/dev.geopjr.Collision.desktop.in:8 35 | #: data/dev.geopjr.Collision.metainfo.xml.in:7 data/ui/application.ui:115 36 | msgid "Check hashes for your files" 37 | msgstr "تحقَّق من هاش ملفَّاتك" 38 | 39 | #: data/dev.geopjr.Collision.desktop.in:12 40 | msgid "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 41 | msgstr "" 42 | 43 | #: data/dev.geopjr.Collision.metainfo.xml.in:16 44 | msgid "" 45 | "Verifying that a file you downloaded or received is actually the one you " 46 | "were expecting is often overlooked or too time-consuming to do. At the same " 47 | "time, it has become very easy to get your hands on a file that has been " 48 | "tampered with, due to the mass increase of malicious webpages and other " 49 | "actors." 50 | msgstr "" 51 | "يشيع التغافل عن التحقُّق من أن الملفَّات التي نزَّلتها هي حقًّا ما تريد، ولعلَّ سبب " 52 | "ذلك هو استغراقه وقتًا كثيرًا، ويتزامن هذا مع سهولة الحصول على ملفَّات معدَّلة، " 53 | "وذلك لأن أعداد الصفحات الخبيثة وغيرهم من جهات يزداد تزايدًا." 54 | 55 | #: data/dev.geopjr.Collision.metainfo.xml.in:22 56 | msgid "" 57 | "This tool aims to solve that. Collision comes with a simple & clean UI, " 58 | "allowing anyone, from any age and experience group, to generate, compare and " 59 | "verify MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 and Adler32 hashes." 60 | msgstr "" 61 | 62 | #: data/ui/application.ui:6 63 | msgid "_New Window" 64 | msgstr "نافذة _جديدة" 65 | 66 | #: data/ui/application.ui:10 67 | msgid "_Compare Hash Functions" 68 | msgstr "_قارن وظائف هاش" 69 | 70 | #: data/ui/application.ui:14 71 | msgid "_Keyboard Shortcuts" 72 | msgstr "ا_ختصارات لوح المفاتيح" 73 | 74 | #: data/ui/application.ui:18 75 | msgid "_About Collision" 76 | msgstr "_عن «تصادم»" 77 | 78 | #: data/ui/application.ui:23 data/ui/application.ui:28 79 | msgid "Choose a File" 80 | msgstr "اختر ملفًّا" 81 | 82 | #: data/ui/application.ui:60 83 | msgid "_Open" 84 | msgstr "ا_فتح" 85 | 86 | #: data/ui/application.ui:61 87 | msgid "Open…" 88 | msgstr "افتح…" 89 | 90 | #: data/ui/application.ui:98 91 | msgid "Menu" 92 | msgstr "القائمة" 93 | 94 | #: data/ui/application.ui:119 95 | msgid "_Open a File" 96 | msgstr "ا_فتح ملفًّا" 97 | 98 | #: data/ui/application.ui:139 99 | msgid "Calculating Hashes" 100 | msgstr "" 101 | 102 | #: data/ui/application.ui:140 103 | msgid "This might take a while" 104 | msgstr "" 105 | 106 | #: data/ui/application.ui:175 107 | msgid "Hash" 108 | msgstr "الهاش" 109 | 110 | #: data/ui/application.ui:191 111 | msgid "Verify" 112 | msgstr "تحقَّق" 113 | 114 | #: data/ui/application.ui:204 115 | msgid "Checksum" 116 | msgstr "المجموع الاختباري" 117 | 118 | #: data/ui/application.ui:234 119 | msgid "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 or Adler32 Hash" 120 | msgstr "" 121 | 122 | #: data/ui/application.ui:263 123 | msgid "Insert a MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 Hash" 124 | msgstr "" 125 | 126 | #: data/ui/application.ui:285 127 | msgid "File" 128 | msgstr "ملف" 129 | 130 | #: data/ui/application.ui:300 131 | msgid "Select Another File to Check Against" 132 | msgstr "اختر ملفًّا آخر لتقارنه" 133 | 134 | #: data/ui/application.ui:342 135 | msgid "Choose File…" 136 | msgstr "اختر ملفًّا…" 137 | 138 | #: data/ui/hash_row.ui:9 139 | msgid "Copy" 140 | msgstr "انسخ" 141 | 142 | #: data/ui/shortcuts_window.ui:11 143 | msgid "General" 144 | msgstr "عام" 145 | 146 | #: data/ui/shortcuts_window.ui:14 147 | msgid "Open a File" 148 | msgstr "افتح ملفًّا" 149 | 150 | #: data/ui/shortcuts_window.ui:20 151 | msgid "Show Keyboard Shortcuts" 152 | msgstr "أظهر اختصارات لوح المفاتيح" 153 | 154 | #: data/ui/shortcuts_window.ui:26 155 | msgid "New Window" 156 | msgstr "نافذة جديدة" 157 | 158 | #: data/ui/shortcuts_window.ui:32 159 | msgid "Close Window" 160 | msgstr "أغلق النافذة" 161 | 162 | #: data/ui/shortcuts_window.ui:38 163 | msgid "Quit" 164 | msgstr "أنهِ" 165 | 166 | #: nautilus-extension/collision-extension.py:54 167 | msgid "Check Hashes" 168 | msgstr "تحقَّق من الهاشات" 169 | 170 | #. Wikipedia article. If available, set it to the LANGUAGE's version, else leave it as is. 171 | #: src/collision.cr:72 172 | msgid "" 173 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 174 | msgstr "" 175 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 176 | 177 | #. Name or Name https://website.example 178 | #: src/collision/actions/about.cr:22 179 | msgid "translator-credits" 180 | msgstr "" 181 | "Ibrahim Muhammad \n" 182 | "Ali Aljishi " 183 | 184 | #. The variables are numbers 185 | #: src/collision/functions/checksum.cr:79 186 | #, c-format 187 | msgid "%d of %d hashes calculated" 188 | msgstr "" 189 | 190 | #: src/collision/functions/feedback.cr:204 191 | msgid "They Match" 192 | msgstr "" 193 | 194 | #: src/collision/functions/feedback.cr:204 195 | msgid "They Don't Match" 196 | msgstr "" 197 | 198 | #~ msgid "md5;sha1;sha256;sha512;hash;" 199 | #~ msgstr "md5;sha1;sha256;sha512;هاش;" 200 | 201 | #~ msgid "" 202 | #~ "This tool aims to solve that. Collision comes with a simple & clean " 203 | #~ "UI, allowing anyone, from any age and experience group, to generate, " 204 | #~ "compare and verify MD5, SHA-256, SHA-512 and SHA-1 hashes." 205 | #~ msgstr "" 206 | #~ "هدف هذه الأداة حلُّ ذلك. واجهة «تصادم» سهلة ومرتَّبة، وهذا يتيح لأيِّ أحد أكان " 207 | #~ "خبيرًا أم مبتدئًا، كبيرًا أم صغيرًا، بأن يولِّد ويقارن هاشات إم‌دي٥ وإس‌إتش‌أي-٢٥٦ " 208 | #~ "وإس‌إتش‌أي-٥١٢ وإس‌إتش‌أي-١." 209 | 210 | #~ msgid "MD5,SHA-1,SHA-256 or SHA-512 Hash" 211 | #~ msgstr "هاش إم‌دي٥ أو إس‌إتش‌أي-٢٥٦ أو إس‌إتش‌أي-٥١٢ أو إس‌إتش‌أي-١" 212 | 213 | #~ msgid "Insert a MD5/SHA-1/SHA-256/SHA-512 Hash" 214 | #~ msgstr "أدرج هاش إم‌دي٥\\إس‌إتش‌أي-٢٥٦\\إس‌إتش‌أي-٥١٢\\إس‌إتش‌أي-١" 215 | -------------------------------------------------------------------------------- /po/be.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # Maksim , 2023. 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: dev.geopjr.Collision\n" 8 | "Report-Msgid-Bugs-To: \n" 9 | "POT-Creation-Date: 2023-12-26 04:15+0200\n" 10 | "PO-Revision-Date: 2023-10-04 18:11+0000\n" 11 | "Last-Translator: Maksim \n" 12 | "Language-Team: Belarusian \n" 14 | "Language: be\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " 19 | "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" 20 | "X-Generator: Weblate 5.1-dev\n" 21 | 22 | #: data/dev.geopjr.Collision.desktop.in:6 23 | #: data/dev.geopjr.Collision.metainfo.xml.in:4 data/ui/application.ui:34 24 | #: data/ui/application.ui:77 data/ui/application.ui:114 25 | msgid "Collision" 26 | msgstr "Collision" 27 | 28 | #: data/dev.geopjr.Collision.desktop.in:7 29 | msgid "Hash Generator" 30 | msgstr "Генератар хэшаў" 31 | 32 | #: data/dev.geopjr.Collision.desktop.in:8 33 | #: data/dev.geopjr.Collision.metainfo.xml.in:7 data/ui/application.ui:115 34 | msgid "Check hashes for your files" 35 | msgstr "Праверце хэшы сваіх файлаў" 36 | 37 | #: data/dev.geopjr.Collision.desktop.in:12 38 | msgid "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 39 | msgstr "" 40 | 41 | #: data/dev.geopjr.Collision.metainfo.xml.in:16 42 | msgid "" 43 | "Verifying that a file you downloaded or received is actually the one you " 44 | "were expecting is often overlooked or too time-consuming to do. At the same " 45 | "time, it has become very easy to get your hands on a file that has been " 46 | "tampered with, due to the mass increase of malicious webpages and other " 47 | "actors." 48 | msgstr "" 49 | "Правяраць тое, што файл, які вы загрузілі ці атрымалі - гэта сапраўды той " 50 | "файл, які вам патрэбен, займае шмат часу. У той жа час, стала вельмі лёгка " 51 | "атрымаць файл, які быў падроблены, з-за масавага павелічэння шкоднасных вэб-" 52 | "старонак і іншага ПЗ." 53 | 54 | #: data/dev.geopjr.Collision.metainfo.xml.in:22 55 | msgid "" 56 | "This tool aims to solve that. Collision comes with a simple & clean UI, " 57 | "allowing anyone, from any age and experience group, to generate, compare and " 58 | "verify MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 and Adler32 hashes." 59 | msgstr "" 60 | 61 | #: data/ui/application.ui:6 62 | msgid "_New Window" 63 | msgstr "_Новае акно" 64 | 65 | #: data/ui/application.ui:10 66 | msgid "_Compare Hash Functions" 67 | msgstr "_Функцыі параўнання хэшаў" 68 | 69 | #: data/ui/application.ui:14 70 | msgid "_Keyboard Shortcuts" 71 | msgstr "_Камбінацыі клавіш" 72 | 73 | #: data/ui/application.ui:18 74 | msgid "_About Collision" 75 | msgstr "_Пра Collision" 76 | 77 | #: data/ui/application.ui:23 data/ui/application.ui:28 78 | msgid "Choose a File" 79 | msgstr "Выбраць файл" 80 | 81 | #: data/ui/application.ui:60 82 | msgid "_Open" 83 | msgstr "_Адкрыць" 84 | 85 | #: data/ui/application.ui:61 86 | msgid "Open…" 87 | msgstr "Адкрыць…" 88 | 89 | #: data/ui/application.ui:98 90 | msgid "Menu" 91 | msgstr "Меню" 92 | 93 | #: data/ui/application.ui:119 94 | msgid "_Open a File" 95 | msgstr "_Адкрыць файл" 96 | 97 | #: data/ui/application.ui:139 98 | msgid "Calculating Hashes" 99 | msgstr "" 100 | 101 | #: data/ui/application.ui:140 102 | msgid "This might take a while" 103 | msgstr "" 104 | 105 | #: data/ui/application.ui:175 106 | msgid "Hash" 107 | msgstr "Хэш" 108 | 109 | #: data/ui/application.ui:191 110 | msgid "Verify" 111 | msgstr "Праверыць" 112 | 113 | #: data/ui/application.ui:204 114 | msgid "Checksum" 115 | msgstr "Кантрольная сума" 116 | 117 | #: data/ui/application.ui:234 118 | msgid "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 or Adler32 Hash" 119 | msgstr "" 120 | 121 | #: data/ui/application.ui:263 122 | msgid "Insert a MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 Hash" 123 | msgstr "" 124 | 125 | #: data/ui/application.ui:285 126 | msgid "File" 127 | msgstr "Файл" 128 | 129 | #: data/ui/application.ui:300 130 | msgid "Select Another File to Check Against" 131 | msgstr "Абярыце іншы файл, каб параўноўваць" 132 | 133 | #: data/ui/application.ui:342 134 | msgid "Choose File…" 135 | msgstr "Абярыце файл…" 136 | 137 | #: data/ui/hash_row.ui:9 138 | msgid "Copy" 139 | msgstr "Скапіяваць" 140 | 141 | #: data/ui/shortcuts_window.ui:11 142 | msgid "General" 143 | msgstr "Агульная" 144 | 145 | #: data/ui/shortcuts_window.ui:14 146 | msgid "Open a File" 147 | msgstr "Адкрыць файл" 148 | 149 | #: data/ui/shortcuts_window.ui:20 150 | msgid "Show Keyboard Shortcuts" 151 | msgstr "Паказаць камбінацыі клавіш" 152 | 153 | #: data/ui/shortcuts_window.ui:26 154 | msgid "New Window" 155 | msgstr "Новае акно" 156 | 157 | #: data/ui/shortcuts_window.ui:32 158 | msgid "Close Window" 159 | msgstr "Зачыніць акно" 160 | 161 | #: data/ui/shortcuts_window.ui:38 162 | msgid "Quit" 163 | msgstr "Выйсці" 164 | 165 | #: nautilus-extension/collision-extension.py:54 166 | msgid "Check Hashes" 167 | msgstr "Праверыць хешы" 168 | 169 | #. Wikipedia article. If available, set it to the LANGUAGE's version, else leave it as is. 170 | #: src/collision.cr:72 171 | msgid "" 172 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 173 | msgstr "" 174 | "https://be.wikipedia.org/wiki/" 175 | "%D0%9F%D0%B0%D1%80%D0%B0%D1%9E%D0%BD%D0%B0%D0%BD%D0%BD%D0%B5_%D0%BA%D1%80%D1%8B%D0%BF%D1%82%D0%B0%D0%B3%D1%80%D0%B0%D1%84%D1%96%D1%87%D0%BD%D1%8B%D1%85_%D1%85%D1%8D%D1%88-" 176 | "%D1%84%D1%83%D0%BD%D0%BA%D1%86%D1%8B%D0%B9" 177 | 178 | #. Name or Name https://website.example 179 | #: src/collision/actions/about.cr:22 180 | msgid "translator-credits" 181 | msgstr "Maks" 182 | 183 | #. The variables are numbers 184 | #: src/collision/functions/checksum.cr:79 185 | #, c-format 186 | msgid "%d of %d hashes calculated" 187 | msgstr "" 188 | 189 | #: src/collision/functions/feedback.cr:204 190 | msgid "They Match" 191 | msgstr "" 192 | 193 | #: src/collision/functions/feedback.cr:204 194 | msgid "They Don't Match" 195 | msgstr "" 196 | 197 | #~ msgid "md5;sha1;sha256;sha512;hash;" 198 | #~ msgstr "md5;sha1;sha256;sha512;hash;" 199 | 200 | #~ msgid "" 201 | #~ "This tool aims to solve that. Collision comes with a simple & clean " 202 | #~ "UI, allowing anyone, from any age and experience group, to generate, " 203 | #~ "compare and verify MD5, SHA-256, SHA-512 and SHA-1 hashes." 204 | #~ msgstr "" 205 | #~ "Гэты інструмент закліканы вырашыць гэтую праблему. Collision пастаўляецца " 206 | #~ "з простым & чысты UI, які дазваляе любому чалавеку любога ўзросту і " 207 | #~ "досведу генераваць, параўноўваць і правяраць хэшы MD5, SHA-256, SHA-512 і " 208 | #~ "SHA-1." 209 | 210 | #~ msgid "MD5,SHA-1,SHA-256 or SHA-512 Hash" 211 | #~ msgstr "MD5, SHA-1, SHA-256 ці SHA-512 хэш" 212 | 213 | #~ msgid "Insert a MD5/SHA-1/SHA-256/SHA-512 Hash" 214 | #~ msgstr "Устаўце хэш MD5/SHA-1/SHA-256/SHA-512" 215 | -------------------------------------------------------------------------------- /po/ber.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # assemer_layase , 2022. 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: dev.geopjr.Collision\n" 8 | "Report-Msgid-Bugs-To: \n" 9 | "POT-Creation-Date: 2023-12-26 04:15+0200\n" 10 | "PO-Revision-Date: 2022-06-19 18:14+0000\n" 11 | "Last-Translator: assemer_layase \n" 12 | "Language-Team: Berber \n" 14 | "Language: ber\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 19 | "X-Generator: Weblate 4.13.1-dev\n" 20 | 21 | #: data/dev.geopjr.Collision.desktop.in:6 22 | #: data/dev.geopjr.Collision.metainfo.xml.in:4 data/ui/application.ui:34 23 | #: data/ui/application.ui:77 data/ui/application.ui:114 24 | msgid "Collision" 25 | msgstr "" 26 | 27 | #: data/dev.geopjr.Collision.desktop.in:7 28 | msgid "Hash Generator" 29 | msgstr "" 30 | 31 | #: data/dev.geopjr.Collision.desktop.in:8 32 | #: data/dev.geopjr.Collision.metainfo.xml.in:7 data/ui/application.ui:115 33 | msgid "Check hashes for your files" 34 | msgstr "" 35 | 36 | #: data/dev.geopjr.Collision.desktop.in:12 37 | msgid "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 38 | msgstr "" 39 | 40 | #: data/dev.geopjr.Collision.metainfo.xml.in:16 41 | msgid "" 42 | "Verifying that a file you downloaded or received is actually the one you " 43 | "were expecting is often overlooked or too time-consuming to do. At the same " 44 | "time, it has become very easy to get your hands on a file that has been " 45 | "tampered with, due to the mass increase of malicious webpages and other " 46 | "actors." 47 | msgstr "" 48 | 49 | #: data/dev.geopjr.Collision.metainfo.xml.in:22 50 | msgid "" 51 | "This tool aims to solve that. Collision comes with a simple & clean UI, " 52 | "allowing anyone, from any age and experience group, to generate, compare and " 53 | "verify MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 and Adler32 hashes." 54 | msgstr "" 55 | 56 | #: data/ui/application.ui:6 57 | msgid "_New Window" 58 | msgstr "" 59 | 60 | #: data/ui/application.ui:10 61 | msgid "_Compare Hash Functions" 62 | msgstr "" 63 | 64 | #: data/ui/application.ui:14 65 | msgid "_Keyboard Shortcuts" 66 | msgstr "" 67 | 68 | #: data/ui/application.ui:18 69 | msgid "_About Collision" 70 | msgstr "" 71 | 72 | #: data/ui/application.ui:23 data/ui/application.ui:28 73 | msgid "Choose a File" 74 | msgstr "dmed yiwen fichier" 75 | 76 | #: data/ui/application.ui:60 77 | msgid "_Open" 78 | msgstr "" 79 | 80 | #: data/ui/application.ui:61 81 | msgid "Open…" 82 | msgstr "" 83 | 84 | #: data/ui/application.ui:98 85 | msgid "Menu" 86 | msgstr "" 87 | 88 | #: data/ui/application.ui:119 89 | msgid "_Open a File" 90 | msgstr "_liḍ a fichier" 91 | 92 | #: data/ui/application.ui:139 93 | msgid "Calculating Hashes" 94 | msgstr "" 95 | 96 | #: data/ui/application.ui:140 97 | msgid "This might take a while" 98 | msgstr "" 99 | 100 | #: data/ui/application.ui:175 101 | msgid "Hash" 102 | msgstr "" 103 | 104 | #: data/ui/application.ui:191 105 | msgid "Verify" 106 | msgstr "" 107 | 108 | #: data/ui/application.ui:204 109 | msgid "Checksum" 110 | msgstr "Checksum" 111 | 112 | #: data/ui/application.ui:234 113 | msgid "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 or Adler32 Hash" 114 | msgstr "" 115 | 116 | #: data/ui/application.ui:263 117 | msgid "Insert a MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 Hash" 118 | msgstr "" 119 | 120 | #: data/ui/application.ui:285 121 | msgid "File" 122 | msgstr "" 123 | 124 | #: data/ui/application.ui:300 125 | msgid "Select Another File to Check Against" 126 | msgstr "dmed a fichier niden iwaken anwali ma kifkif-iten" 127 | 128 | #: data/ui/application.ui:342 129 | msgid "Choose File…" 130 | msgstr "xttired yiwen fichier…" 131 | 132 | #: data/ui/hash_row.ui:9 133 | msgid "Copy" 134 | msgstr "gme3" 135 | 136 | #: data/ui/shortcuts_window.ui:11 137 | msgid "General" 138 | msgstr "" 139 | 140 | #: data/ui/shortcuts_window.ui:14 141 | msgid "Open a File" 142 | msgstr "liḍ a fichier" 143 | 144 | #: data/ui/shortcuts_window.ui:20 145 | msgid "Show Keyboard Shortcuts" 146 | msgstr "" 147 | 148 | #: data/ui/shortcuts_window.ui:26 149 | msgid "New Window" 150 | msgstr "" 151 | 152 | #: data/ui/shortcuts_window.ui:32 153 | msgid "Close Window" 154 | msgstr "" 155 | 156 | #: data/ui/shortcuts_window.ui:38 157 | msgid "Quit" 158 | msgstr "" 159 | 160 | #: nautilus-extension/collision-extension.py:54 161 | msgid "Check Hashes" 162 | msgstr "" 163 | 164 | #. Wikipedia article. If available, set it to the LANGUAGE's version, else leave it as is. 165 | #: src/collision.cr:72 166 | msgid "" 167 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 168 | msgstr "" 169 | 170 | #. Name or Name https://website.example 171 | #: src/collision/actions/about.cr:22 172 | msgid "translator-credits" 173 | msgstr "" 174 | 175 | #. The variables are numbers 176 | #: src/collision/functions/checksum.cr:79 177 | #, c-format 178 | msgid "%d of %d hashes calculated" 179 | msgstr "" 180 | 181 | #: src/collision/functions/feedback.cr:204 182 | msgid "They Match" 183 | msgstr "" 184 | 185 | #: src/collision/functions/feedback.cr:204 186 | msgid "They Don't Match" 187 | msgstr "" 188 | 189 | #~ msgid "Insert a MD5/SHA-1/SHA-256/SHA-512 Hash" 190 | #~ msgstr "sekcem yiwen MD5/SHA-1/SHA-256/SHA-512 Hash" 191 | -------------------------------------------------------------------------------- /po/bg.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # twlvnn , 2024. 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: PACKAGE VERSION\n" 8 | "Report-Msgid-Bugs-To: \n" 9 | "POT-Creation-Date: 2023-12-26 04:15+0200\n" 10 | "PO-Revision-Date: 2024-04-13 17:01+0000\n" 11 | "Last-Translator: twlvnn \n" 12 | "Language-Team: Bulgarian \n" 14 | "Language: bg\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 19 | "X-Generator: Weblate 5.5-dev\n" 20 | 21 | #: data/dev.geopjr.Collision.desktop.in:6 22 | #: data/dev.geopjr.Collision.metainfo.xml.in:4 data/ui/application.ui:34 23 | #: data/ui/application.ui:77 data/ui/application.ui:114 24 | msgid "Collision" 25 | msgstr "Сблъсък" 26 | 27 | #: data/dev.geopjr.Collision.desktop.in:7 28 | msgid "Hash Generator" 29 | msgstr "Генератор на хешове" 30 | 31 | #: data/dev.geopjr.Collision.desktop.in:8 32 | #: data/dev.geopjr.Collision.metainfo.xml.in:7 data/ui/application.ui:115 33 | msgid "Check hashes for your files" 34 | msgstr "Проверете хешовете за вашите файлове" 35 | 36 | #: data/dev.geopjr.Collision.desktop.in:12 37 | msgid "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 38 | msgstr "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;хеш;" 39 | 40 | #: data/dev.geopjr.Collision.metainfo.xml.in:16 41 | msgid "" 42 | "Verifying that a file you downloaded or received is actually the one you " 43 | "were expecting is often overlooked or too time-consuming to do. At the same " 44 | "time, it has become very easy to get your hands on a file that has been " 45 | "tampered with, due to the mass increase of malicious webpages and other " 46 | "actors." 47 | msgstr "" 48 | "Проверявайки дали изтегленият или полученият файл действително е този, който " 49 | "сте очаквали, често се пропуска или отнема твърде много време. В същото " 50 | "време стана много лесно да се сдобиете с файл, който е бил подправен, поради " 51 | "масовото увеличаване на броя на злонамерени Интернет страници и лица." 52 | 53 | #: data/dev.geopjr.Collision.metainfo.xml.in:22 54 | msgid "" 55 | "This tool aims to solve that. Collision comes with a simple & clean UI, " 56 | "allowing anyone, from any age and experience group, to generate, compare and " 57 | "verify MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 and Adler32 hashes." 58 | msgstr "" 59 | "Този инструмент има за цел да реши този проблем. Сблъсък идва с прост и " 60 | "изчистен потребителски интерфейс, позволяващ на всеки, от всяка възрастова " 61 | "група и опит, да генерира, сравнява и потвръждава хешове MD5, SHA-256, SHA-" 62 | "512, SHA-1, Blake3, CRC32 и Adler32." 63 | 64 | #: data/ui/application.ui:6 65 | msgid "_New Window" 66 | msgstr "_Нов прозорец" 67 | 68 | #: data/ui/application.ui:10 69 | msgid "_Compare Hash Functions" 70 | msgstr "Сравняване на хеш функции" 71 | 72 | #: data/ui/application.ui:14 73 | msgid "_Keyboard Shortcuts" 74 | msgstr "_Клавишни комбинации" 75 | 76 | #: data/ui/application.ui:18 77 | msgid "_About Collision" 78 | msgstr "_Относно „Сблъсък“" 79 | 80 | #: data/ui/application.ui:23 data/ui/application.ui:28 81 | msgid "Choose a File" 82 | msgstr "Избор на файл" 83 | 84 | #: data/ui/application.ui:60 85 | msgid "_Open" 86 | msgstr "_Отваряне" 87 | 88 | #: data/ui/application.ui:61 89 | msgid "Open…" 90 | msgstr "Отваряне…" 91 | 92 | #: data/ui/application.ui:98 93 | msgid "Menu" 94 | msgstr "Меню" 95 | 96 | #: data/ui/application.ui:119 97 | msgid "_Open a File" 98 | msgstr "_Отваряне на файл" 99 | 100 | #: data/ui/application.ui:139 101 | msgid "Calculating Hashes" 102 | msgstr "Изчисляване на хешовете" 103 | 104 | #: data/ui/application.ui:140 105 | msgid "This might take a while" 106 | msgstr "Това може да отнеме повече време" 107 | 108 | #: data/ui/application.ui:175 109 | msgid "Hash" 110 | msgstr "Хеш" 111 | 112 | #: data/ui/application.ui:191 113 | msgid "Verify" 114 | msgstr "Потвърждаване" 115 | 116 | #: data/ui/application.ui:204 117 | msgid "Checksum" 118 | msgstr "Контролна сума" 119 | 120 | #: data/ui/application.ui:234 121 | msgid "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 or Adler32 Hash" 122 | msgstr "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 или Adler32 хеш" 123 | 124 | #: data/ui/application.ui:263 125 | msgid "Insert a MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 Hash" 126 | msgstr "Вмъкване на MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 хеш" 127 | 128 | #: data/ui/application.ui:285 129 | msgid "File" 130 | msgstr "Файл" 131 | 132 | #: data/ui/application.ui:300 133 | msgid "Select Another File to Check Against" 134 | msgstr "Избиране на друг файл за проверка" 135 | 136 | #: data/ui/application.ui:342 137 | msgid "Choose File…" 138 | msgstr "Избор на файл…" 139 | 140 | #: data/ui/hash_row.ui:9 141 | msgid "Copy" 142 | msgstr "Копиране" 143 | 144 | #: data/ui/shortcuts_window.ui:11 145 | msgid "General" 146 | msgstr "Общи" 147 | 148 | #: data/ui/shortcuts_window.ui:14 149 | msgid "Open a File" 150 | msgstr "Отваряне на файл" 151 | 152 | #: data/ui/shortcuts_window.ui:20 153 | msgid "Show Keyboard Shortcuts" 154 | msgstr "Показване на клавишните комбинации" 155 | 156 | #: data/ui/shortcuts_window.ui:26 157 | msgid "New Window" 158 | msgstr "Нов прозорец" 159 | 160 | #: data/ui/shortcuts_window.ui:32 161 | msgid "Close Window" 162 | msgstr "Затваряне на прозореца" 163 | 164 | #: data/ui/shortcuts_window.ui:38 165 | msgid "Quit" 166 | msgstr "Спиране на програмата" 167 | 168 | #: nautilus-extension/collision-extension.py:54 169 | msgid "Check Hashes" 170 | msgstr "Проверяване на хешовете" 171 | 172 | #. Wikipedia article. If available, set it to the LANGUAGE's version, else leave it as is. 173 | #: src/collision.cr:72 174 | msgid "" 175 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 176 | msgstr "" 177 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 178 | 179 | #. Name or Name https://website.example 180 | #: src/collision/actions/about.cr:22 181 | msgid "translator-credits" 182 | msgstr "twlvnn " 183 | 184 | #. The variables are numbers 185 | #: src/collision/functions/checksum.cr:79 186 | #, c-format 187 | msgid "%d of %d hashes calculated" 188 | msgstr "%d от %d изчислени хешове" 189 | 190 | #: src/collision/functions/feedback.cr:204 191 | msgid "They Match" 192 | msgstr "Съвпадат" 193 | 194 | #: src/collision/functions/feedback.cr:204 195 | msgid "They Don't Match" 196 | msgstr "Не съвпадат" 197 | -------------------------------------------------------------------------------- /po/ca.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # Maite Guix , 2022. 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: dev.geopjr.Collision\n" 8 | "Report-Msgid-Bugs-To: \n" 9 | "POT-Creation-Date: 2023-12-26 04:15+0200\n" 10 | "PO-Revision-Date: 2022-12-12 20:24+0000\n" 11 | "Last-Translator: Maite Guix \n" 12 | "Language-Team: Catalan \n" 14 | "Language: ca\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 19 | "X-Generator: Weblate 4.15-dev\n" 20 | 21 | #: data/dev.geopjr.Collision.desktop.in:6 22 | #: data/dev.geopjr.Collision.metainfo.xml.in:4 data/ui/application.ui:34 23 | #: data/ui/application.ui:77 data/ui/application.ui:114 24 | msgid "Collision" 25 | msgstr "Col·lisió" 26 | 27 | #: data/dev.geopjr.Collision.desktop.in:7 28 | msgid "Hash Generator" 29 | msgstr "Generador de hash" 30 | 31 | #: data/dev.geopjr.Collision.desktop.in:8 32 | #: data/dev.geopjr.Collision.metainfo.xml.in:7 data/ui/application.ui:115 33 | msgid "Check hashes for your files" 34 | msgstr "Comprovar els hashes dels teus fitxers" 35 | 36 | #: data/dev.geopjr.Collision.desktop.in:12 37 | msgid "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 38 | msgstr "" 39 | 40 | #: data/dev.geopjr.Collision.metainfo.xml.in:16 41 | msgid "" 42 | "Verifying that a file you downloaded or received is actually the one you " 43 | "were expecting is often overlooked or too time-consuming to do. At the same " 44 | "time, it has become very easy to get your hands on a file that has been " 45 | "tampered with, due to the mass increase of malicious webpages and other " 46 | "actors." 47 | msgstr "" 48 | "Verificar que un fitxer que has descarregat o rebut és realment el que " 49 | "s'esperaves és una cosa que sovint es passa per alt o que porta massa temps. " 50 | "Alhora, s'ha tornat molt fàcil aconseguir un arxiu que ha estat manipulat, a " 51 | "causa de l'augment massiu de pàgines web malicioses i altres actors." 52 | 53 | #: data/dev.geopjr.Collision.metainfo.xml.in:22 54 | msgid "" 55 | "This tool aims to solve that. Collision comes with a simple & clean UI, " 56 | "allowing anyone, from any age and experience group, to generate, compare and " 57 | "verify MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 and Adler32 hashes." 58 | msgstr "" 59 | 60 | #: data/ui/application.ui:6 61 | msgid "_New Window" 62 | msgstr "" 63 | 64 | #: data/ui/application.ui:10 65 | msgid "_Compare Hash Functions" 66 | msgstr "_Comparar funcions hash" 67 | 68 | #: data/ui/application.ui:14 69 | msgid "_Keyboard Shortcuts" 70 | msgstr "_Dreceres de teclat" 71 | 72 | #: data/ui/application.ui:18 73 | msgid "_About Collision" 74 | msgstr "_Sobre Col·lisió" 75 | 76 | #: data/ui/application.ui:23 data/ui/application.ui:28 77 | msgid "Choose a File" 78 | msgstr "Triar un fitxer" 79 | 80 | #: data/ui/application.ui:60 81 | msgid "_Open" 82 | msgstr "_Obrir" 83 | 84 | #: data/ui/application.ui:61 85 | msgid "Open…" 86 | msgstr "Obrir…" 87 | 88 | #: data/ui/application.ui:98 89 | msgid "Menu" 90 | msgstr "Menú" 91 | 92 | #: data/ui/application.ui:119 93 | msgid "_Open a File" 94 | msgstr "_Obrir un fitxer" 95 | 96 | #: data/ui/application.ui:139 97 | msgid "Calculating Hashes" 98 | msgstr "" 99 | 100 | #: data/ui/application.ui:140 101 | msgid "This might take a while" 102 | msgstr "" 103 | 104 | #: data/ui/application.ui:175 105 | msgid "Hash" 106 | msgstr "Hash" 107 | 108 | #: data/ui/application.ui:191 109 | msgid "Verify" 110 | msgstr "Verificar" 111 | 112 | #: data/ui/application.ui:204 113 | msgid "Checksum" 114 | msgstr "Suma de control" 115 | 116 | #: data/ui/application.ui:234 117 | msgid "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 or Adler32 Hash" 118 | msgstr "" 119 | 120 | #: data/ui/application.ui:263 121 | msgid "Insert a MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 Hash" 122 | msgstr "" 123 | 124 | #: data/ui/application.ui:285 125 | msgid "File" 126 | msgstr "Fitxer" 127 | 128 | #: data/ui/application.ui:300 129 | msgid "Select Another File to Check Against" 130 | msgstr "Seleccionar un altre fitxer a comprovar" 131 | 132 | #: data/ui/application.ui:342 133 | msgid "Choose File…" 134 | msgstr "Triar el fitxer…" 135 | 136 | #: data/ui/hash_row.ui:9 137 | msgid "Copy" 138 | msgstr "Copiar" 139 | 140 | #: data/ui/shortcuts_window.ui:11 141 | msgid "General" 142 | msgstr "General" 143 | 144 | #: data/ui/shortcuts_window.ui:14 145 | msgid "Open a File" 146 | msgstr "Obrir un fitxer" 147 | 148 | #: data/ui/shortcuts_window.ui:20 149 | msgid "Show Keyboard Shortcuts" 150 | msgstr "Mostra les dreceres de teclat" 151 | 152 | #: data/ui/shortcuts_window.ui:26 153 | msgid "New Window" 154 | msgstr "" 155 | 156 | #: data/ui/shortcuts_window.ui:32 157 | msgid "Close Window" 158 | msgstr "" 159 | 160 | #: data/ui/shortcuts_window.ui:38 161 | msgid "Quit" 162 | msgstr "Sortir" 163 | 164 | #: nautilus-extension/collision-extension.py:54 165 | msgid "Check Hashes" 166 | msgstr "Comprovar els hashes" 167 | 168 | #. Wikipedia article. If available, set it to the LANGUAGE's version, else leave it as is. 169 | #: src/collision.cr:72 170 | msgid "" 171 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 172 | msgstr "" 173 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 174 | 175 | #. Name or Name https://website.example 176 | #: src/collision/actions/about.cr:22 177 | msgid "translator-credits" 178 | msgstr "Maite Guix" 179 | 180 | #. The variables are numbers 181 | #: src/collision/functions/checksum.cr:79 182 | #, c-format 183 | msgid "%d of %d hashes calculated" 184 | msgstr "" 185 | 186 | #: src/collision/functions/feedback.cr:204 187 | msgid "They Match" 188 | msgstr "" 189 | 190 | #: src/collision/functions/feedback.cr:204 191 | msgid "They Don't Match" 192 | msgstr "" 193 | 194 | #~ msgid "" 195 | #~ "This tool aims to solve that. Collision comes with a simple & clean " 196 | #~ "UI, allowing anyone, from any age and experience group, to generate, " 197 | #~ "compare and verify MD5, SHA-256, SHA-512 and SHA-1 hashes." 198 | #~ msgstr "" 199 | #~ "Aquesta eina té com a objectiu solucionar-ho. Col·lisió ve amb una " 200 | #~ "interfície d'usuari senzilla i neta, permetent a qualsevol persona, de " 201 | #~ "qualsevol edat i experiència, generar, comparar i verificar els hashes " 202 | #~ "MD5, SHA-256, SHA-512 i SHA-1." 203 | 204 | #~ msgid "MD5,SHA-1,SHA-256 or SHA-512 Hash" 205 | #~ msgstr "Hash MD5, SHA-1, SHA-256 o SHA-512" 206 | 207 | #~ msgid "Insert a MD5/SHA-1/SHA-256/SHA-512 Hash" 208 | #~ msgstr "Inserir un hash MD5/SHA-1/SHA-256/SHA-512" 209 | -------------------------------------------------------------------------------- /po/cs.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # vikdevelop , 2022, 2023, 2024. 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: dev.geopjr.Collision\n" 8 | "Report-Msgid-Bugs-To: \n" 9 | "POT-Creation-Date: 2023-12-26 04:15+0200\n" 10 | "PO-Revision-Date: 2024-03-25 12:22+0000\n" 11 | "Last-Translator: vikdevelop \n" 12 | "Language-Team: Czech \n" 14 | "Language: cs\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n" 19 | "X-Generator: Weblate 5.5-dev\n" 20 | 21 | #: data/dev.geopjr.Collision.desktop.in:6 22 | #: data/dev.geopjr.Collision.metainfo.xml.in:4 data/ui/application.ui:34 23 | #: data/ui/application.ui:77 data/ui/application.ui:114 24 | msgid "Collision" 25 | msgstr "Kolize" 26 | 27 | #: data/dev.geopjr.Collision.desktop.in:7 28 | msgid "Hash Generator" 29 | msgstr "Generátor Kontrolních součtů" 30 | 31 | #: data/dev.geopjr.Collision.desktop.in:8 32 | #: data/dev.geopjr.Collision.metainfo.xml.in:7 data/ui/application.ui:115 33 | msgid "Check hashes for your files" 34 | msgstr "Zkontrolujte kontrolní součty vašich souborů" 35 | 36 | #: data/dev.geopjr.Collision.desktop.in:12 37 | msgid "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 38 | msgstr "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 39 | 40 | #: data/dev.geopjr.Collision.metainfo.xml.in:16 41 | msgid "" 42 | "Verifying that a file you downloaded or received is actually the one you " 43 | "were expecting is often overlooked or too time-consuming to do. At the same " 44 | "time, it has become very easy to get your hands on a file that has been " 45 | "tampered with, due to the mass increase of malicious webpages and other " 46 | "actors." 47 | msgstr "" 48 | "Ověření, že stažený nebo přijatý soubor je skutečně ten, který jste " 49 | "očekávali, je často opomíjeno nebo je příliš časově náročné. Zároveň se díky " 50 | "masovému nárůstu škodlivých webových stránek a dalších aktérů stalo velmi " 51 | "snadné dostat do rukou soubor, který byl zfalšován." 52 | 53 | #: data/dev.geopjr.Collision.metainfo.xml.in:22 54 | msgid "" 55 | "This tool aims to solve that. Collision comes with a simple & clean UI, " 56 | "allowing anyone, from any age and experience group, to generate, compare and " 57 | "verify MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 and Adler32 hashes." 58 | msgstr "" 59 | "Tento nástroj se to snaží vyřešit. Kolize přichází s jednoduchým a čistým " 60 | "uživatelským rozhraním, poskytující každému, jakéhokoliv věku a skupiny, " 61 | "generovat, porovnávat a ověřovat kontrolní součty MD5, SHA-256, SHA-512, " 62 | "SHA-1, Blake3, CRC32 a Adler32." 63 | 64 | #: data/ui/application.ui:6 65 | msgid "_New Window" 66 | msgstr "_Nové okno" 67 | 68 | #: data/ui/application.ui:10 69 | msgid "_Compare Hash Functions" 70 | msgstr "_Porovnat funkce kontrolního součtu" 71 | 72 | #: data/ui/application.ui:14 73 | msgid "_Keyboard Shortcuts" 74 | msgstr "_Klávesové zkratky" 75 | 76 | #: data/ui/application.ui:18 77 | msgid "_About Collision" 78 | msgstr "_O programu" 79 | 80 | #: data/ui/application.ui:23 data/ui/application.ui:28 81 | msgid "Choose a File" 82 | msgstr "Vybrat soubor" 83 | 84 | #: data/ui/application.ui:60 85 | msgid "_Open" 86 | msgstr "_Otevřít" 87 | 88 | #: data/ui/application.ui:61 89 | msgid "Open…" 90 | msgstr "Otevřete…" 91 | 92 | #: data/ui/application.ui:98 93 | msgid "Menu" 94 | msgstr "Nabídka" 95 | 96 | #: data/ui/application.ui:119 97 | msgid "_Open a File" 98 | msgstr "_Otevřít soubor" 99 | 100 | #: data/ui/application.ui:139 101 | msgid "Calculating Hashes" 102 | msgstr "Výpočet kontrolních součtů" 103 | 104 | #: data/ui/application.ui:140 105 | msgid "This might take a while" 106 | msgstr "Chvílí to potrvá" 107 | 108 | #: data/ui/application.ui:175 109 | msgid "Hash" 110 | msgstr "Kontrolní součet" 111 | 112 | #: data/ui/application.ui:191 113 | msgid "Verify" 114 | msgstr "Ověřit" 115 | 116 | #: data/ui/application.ui:204 117 | msgid "Checksum" 118 | msgstr "Kontrolní součet" 119 | 120 | #: data/ui/application.ui:234 121 | msgid "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 or Adler32 Hash" 122 | msgstr "Kontrolní součet MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 nebo Adler32" 123 | 124 | #: data/ui/application.ui:263 125 | msgid "Insert a MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 Hash" 126 | msgstr "Vložte kontrolní součet MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32" 127 | 128 | #: data/ui/application.ui:285 129 | msgid "File" 130 | msgstr "Soubor" 131 | 132 | #: data/ui/application.ui:300 133 | msgid "Select Another File to Check Against" 134 | msgstr "Vyberte jiný soubor ke kontrole" 135 | 136 | #: data/ui/application.ui:342 137 | msgid "Choose File…" 138 | msgstr "Vyberte soubor…" 139 | 140 | #: data/ui/hash_row.ui:9 141 | msgid "Copy" 142 | msgstr "Kopírovat" 143 | 144 | #: data/ui/shortcuts_window.ui:11 145 | msgid "General" 146 | msgstr "Obecné" 147 | 148 | #: data/ui/shortcuts_window.ui:14 149 | msgid "Open a File" 150 | msgstr "Otevřít soubor" 151 | 152 | #: data/ui/shortcuts_window.ui:20 153 | msgid "Show Keyboard Shortcuts" 154 | msgstr "Zobrazit klávesové zkratky" 155 | 156 | #: data/ui/shortcuts_window.ui:26 157 | msgid "New Window" 158 | msgstr "Nové okno" 159 | 160 | #: data/ui/shortcuts_window.ui:32 161 | msgid "Close Window" 162 | msgstr "Zavřít okno" 163 | 164 | #: data/ui/shortcuts_window.ui:38 165 | msgid "Quit" 166 | msgstr "Ukončit" 167 | 168 | #: nautilus-extension/collision-extension.py:54 169 | msgid "Check Hashes" 170 | msgstr "Zkontrolovat hashe" 171 | 172 | #. Wikipedia article. If available, set it to the LANGUAGE's version, else leave it as is. 173 | #: src/collision.cr:72 174 | msgid "" 175 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 176 | msgstr "https://cs.wikipedia.org/wiki/Kryptografická_hašovací_funkce" 177 | 178 | #. Name or Name https://website.example 179 | #: src/collision/actions/about.cr:22 180 | msgid "translator-credits" 181 | msgstr "vikdevelop " 182 | 183 | #. The variables are numbers 184 | #: src/collision/functions/checksum.cr:79 185 | #, c-format 186 | msgid "%d of %d hashes calculated" 187 | msgstr "%d z %d vypočtených kontrolních součtů" 188 | 189 | #: src/collision/functions/feedback.cr:204 190 | msgid "They Match" 191 | msgstr "Shodují se" 192 | 193 | #: src/collision/functions/feedback.cr:204 194 | msgid "They Don't Match" 195 | msgstr "Neshodují se" 196 | 197 | #~ msgid "md5;sha1;sha256;sha512;hash;" 198 | #~ msgstr "md5;sha1;sha256;sha512;hash;" 199 | 200 | #~ msgid "" 201 | #~ "This tool aims to solve that. Collision comes with a simple & clean " 202 | #~ "UI, allowing anyone, from any age and experience group, to generate, " 203 | #~ "compare and verify MD5, SHA-256, SHA-512 and SHA-1 hashes." 204 | #~ msgstr "" 205 | #~ "Tento nástroj se to snaží vyřešit. Collision (Kolize) přichází s " 206 | #~ "jednoduchým & čistým uživatelským rozhraním, které umožňuje komukoli " 207 | #~ "bez ohledu na věk a zkušenosti generovat, porovnávat a ověřovat hashe " 208 | #~ "MD5, SHA-256, SHA-512 a SHA-1." 209 | 210 | #~ msgid "MD5,SHA-1,SHA-256 or SHA-512 Hash" 211 | #~ msgstr "Kontrolní součet MD5, SHA-1, SHA-256 nebo SHA-512" 212 | 213 | #~ msgid "Insert a MD5/SHA-1/SHA-256/SHA-512 Hash" 214 | #~ msgstr "Vložte kontrolní součet MD5/SHA-1/SHA-256/SHA-512" 215 | -------------------------------------------------------------------------------- /po/dev.geopjr.Collision.pot: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: PACKAGE VERSION\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2023-12-26 04:15+0200\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: FULL NAME \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: \n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | 20 | #: data/dev.geopjr.Collision.desktop.in:6 21 | #: data/dev.geopjr.Collision.metainfo.xml.in:4 data/ui/application.ui:34 22 | #: data/ui/application.ui:77 data/ui/application.ui:114 23 | msgid "Collision" 24 | msgstr "" 25 | 26 | #: data/dev.geopjr.Collision.desktop.in:7 27 | msgid "Hash Generator" 28 | msgstr "" 29 | 30 | #: data/dev.geopjr.Collision.desktop.in:8 31 | #: data/dev.geopjr.Collision.metainfo.xml.in:7 data/ui/application.ui:115 32 | msgid "Check hashes for your files" 33 | msgstr "" 34 | 35 | #: data/dev.geopjr.Collision.desktop.in:12 36 | msgid "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 37 | msgstr "" 38 | 39 | #: data/dev.geopjr.Collision.metainfo.xml.in:16 40 | msgid "" 41 | "Verifying that a file you downloaded or received is actually the one you " 42 | "were expecting is often overlooked or too time-consuming to do. At the same " 43 | "time, it has become very easy to get your hands on a file that has been " 44 | "tampered with, due to the mass increase of malicious webpages and other " 45 | "actors." 46 | msgstr "" 47 | 48 | #: data/dev.geopjr.Collision.metainfo.xml.in:22 49 | msgid "" 50 | "This tool aims to solve that. Collision comes with a simple & clean UI, " 51 | "allowing anyone, from any age and experience group, to generate, compare and " 52 | "verify MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 and Adler32 hashes." 53 | msgstr "" 54 | 55 | #: data/ui/application.ui:6 56 | msgid "_New Window" 57 | msgstr "" 58 | 59 | #: data/ui/application.ui:10 60 | msgid "_Compare Hash Functions" 61 | msgstr "" 62 | 63 | #: data/ui/application.ui:14 64 | msgid "_Keyboard Shortcuts" 65 | msgstr "" 66 | 67 | #: data/ui/application.ui:18 68 | msgid "_About Collision" 69 | msgstr "" 70 | 71 | #: data/ui/application.ui:23 data/ui/application.ui:28 72 | msgid "Choose a File" 73 | msgstr "" 74 | 75 | #: data/ui/application.ui:60 76 | msgid "_Open" 77 | msgstr "" 78 | 79 | #: data/ui/application.ui:61 80 | msgid "Open…" 81 | msgstr "" 82 | 83 | #: data/ui/application.ui:98 84 | msgid "Menu" 85 | msgstr "" 86 | 87 | #: data/ui/application.ui:119 88 | msgid "_Open a File" 89 | msgstr "" 90 | 91 | #: data/ui/application.ui:139 92 | msgid "Calculating Hashes" 93 | msgstr "" 94 | 95 | #: data/ui/application.ui:140 96 | msgid "This might take a while" 97 | msgstr "" 98 | 99 | #: data/ui/application.ui:175 100 | msgid "Hash" 101 | msgstr "" 102 | 103 | #: data/ui/application.ui:191 104 | msgid "Verify" 105 | msgstr "" 106 | 107 | #: data/ui/application.ui:204 108 | msgid "Checksum" 109 | msgstr "" 110 | 111 | #: data/ui/application.ui:234 112 | msgid "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 or Adler32 Hash" 113 | msgstr "" 114 | 115 | #: data/ui/application.ui:263 116 | msgid "Insert a MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 Hash" 117 | msgstr "" 118 | 119 | #: data/ui/application.ui:285 120 | msgid "File" 121 | msgstr "" 122 | 123 | #: data/ui/application.ui:300 124 | msgid "Select Another File to Check Against" 125 | msgstr "" 126 | 127 | #: data/ui/application.ui:342 128 | msgid "Choose File…" 129 | msgstr "" 130 | 131 | #: data/ui/hash_row.ui:9 132 | msgid "Copy" 133 | msgstr "" 134 | 135 | #: data/ui/shortcuts_window.ui:11 136 | msgid "General" 137 | msgstr "" 138 | 139 | #: data/ui/shortcuts_window.ui:14 140 | msgid "Open a File" 141 | msgstr "" 142 | 143 | #: data/ui/shortcuts_window.ui:20 144 | msgid "Show Keyboard Shortcuts" 145 | msgstr "" 146 | 147 | #: data/ui/shortcuts_window.ui:26 148 | msgid "New Window" 149 | msgstr "" 150 | 151 | #: data/ui/shortcuts_window.ui:32 152 | msgid "Close Window" 153 | msgstr "" 154 | 155 | #: data/ui/shortcuts_window.ui:38 156 | msgid "Quit" 157 | msgstr "" 158 | 159 | #: nautilus-extension/collision-extension.py:54 160 | msgid "Check Hashes" 161 | msgstr "" 162 | 163 | #. Wikipedia article. If available, set it to the LANGUAGE's version, else leave it as is. 164 | #: src/collision.cr:72 165 | msgid "" 166 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 167 | msgstr "" 168 | 169 | #. Name or Name https://website.example 170 | #: src/collision/actions/about.cr:22 171 | msgid "translator-credits" 172 | msgstr "" 173 | 174 | #. The variables are numbers 175 | #: src/collision/functions/checksum.cr:79 176 | #, c-format 177 | msgid "%d of %d hashes calculated" 178 | msgstr "" 179 | 180 | #: src/collision/functions/feedback.cr:204 181 | msgid "They Match" 182 | msgstr "" 183 | 184 | #: src/collision/functions/feedback.cr:204 185 | msgid "They Don't Match" 186 | msgstr "" 187 | -------------------------------------------------------------------------------- /po/et.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # Henri , 2022. 5 | # Priit Jõerüüt , 2024. 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: dev.geopjr.Collision\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2023-12-26 04:15+0200\n" 11 | "PO-Revision-Date: 2024-12-04 08:53+0000\n" 12 | "Last-Translator: Priit Jõerüüt \n" 13 | "Language-Team: Estonian \n" 15 | "Language: et\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 20 | "X-Generator: Weblate 5.9-dev\n" 21 | 22 | #: data/dev.geopjr.Collision.desktop.in:6 23 | #: data/dev.geopjr.Collision.metainfo.xml.in:4 data/ui/application.ui:34 24 | #: data/ui/application.ui:77 data/ui/application.ui:114 25 | msgid "Collision" 26 | msgstr "Collision" 27 | 28 | #: data/dev.geopjr.Collision.desktop.in:7 29 | msgid "Hash Generator" 30 | msgstr "Räsiväärtuse generaator" 31 | 32 | #: data/dev.geopjr.Collision.desktop.in:8 33 | #: data/dev.geopjr.Collision.metainfo.xml.in:7 data/ui/application.ui:115 34 | msgid "Check hashes for your files" 35 | msgstr "Kontrolli failide räsiväärtuseid" 36 | 37 | #: data/dev.geopjr.Collision.desktop.in:12 38 | msgid "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 39 | msgstr "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;räsi;kontrollsumma;" 40 | 41 | #: data/dev.geopjr.Collision.metainfo.xml.in:16 42 | msgid "" 43 | "Verifying that a file you downloaded or received is actually the one you " 44 | "were expecting is often overlooked or too time-consuming to do. At the same " 45 | "time, it has become very easy to get your hands on a file that has been " 46 | "tampered with, due to the mass increase of malicious webpages and other " 47 | "actors." 48 | msgstr "" 49 | "Kontrollida faile, mida sa allalaadisid, on liiga aeganõutev. Samal ajal, on " 50 | "lihtne saada faili, mis on rikutud või kaaperdatud, kuna internet on täis " 51 | "pahatahtlikke veebisaite ja teisi pahatahtlikke." 52 | 53 | #: data/dev.geopjr.Collision.metainfo.xml.in:22 54 | msgid "" 55 | "This tool aims to solve that. Collision comes with a simple & clean UI, " 56 | "allowing anyone, from any age and experience group, to generate, compare and " 57 | "verify MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 and Adler32 hashes." 58 | msgstr "" 59 | "See tarvik proovib antud probleemi lahendada. Collisionil on lihtne ja selge " 60 | "kasutajaliides ning kõik huvilised, sõltumata vanusest ja kogemusest, saavad " 61 | "luua ja võrrelda MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 ja Adler32 " 62 | "räsiväärtuseid." 63 | 64 | #: data/ui/application.ui:6 65 | msgid "_New Window" 66 | msgstr "_Uus aken" 67 | 68 | #: data/ui/application.ui:10 69 | msgid "_Compare Hash Functions" 70 | msgstr "_Võrdle räsifunktsioone" 71 | 72 | #: data/ui/application.ui:14 73 | msgid "_Keyboard Shortcuts" 74 | msgstr "_Kiirklahvid" 75 | 76 | #: data/ui/application.ui:18 77 | msgid "_About Collision" 78 | msgstr "_Collisioni teave" 79 | 80 | #: data/ui/application.ui:23 data/ui/application.ui:28 81 | msgid "Choose a File" 82 | msgstr "Vali fail" 83 | 84 | #: data/ui/application.ui:60 85 | msgid "_Open" 86 | msgstr "_Ava" 87 | 88 | #: data/ui/application.ui:61 89 | msgid "Open…" 90 | msgstr "Ava…" 91 | 92 | #: data/ui/application.ui:98 93 | msgid "Menu" 94 | msgstr "Menüü" 95 | 96 | #: data/ui/application.ui:119 97 | msgid "_Open a File" 98 | msgstr "_Ava fail" 99 | 100 | #: data/ui/application.ui:139 101 | msgid "Calculating Hashes" 102 | msgstr "Arvutame räsiväärtuseid" 103 | 104 | #: data/ui/application.ui:140 105 | msgid "This might take a while" 106 | msgstr "Natuke võib kuluda aega" 107 | 108 | #: data/ui/application.ui:175 109 | msgid "Hash" 110 | msgstr "Räsiväärtus" 111 | 112 | #: data/ui/application.ui:191 113 | msgid "Verify" 114 | msgstr "Kontrolli" 115 | 116 | #: data/ui/application.ui:204 117 | msgid "Checksum" 118 | msgstr "Kontrollsumma" 119 | 120 | #: data/ui/application.ui:234 121 | msgid "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 or Adler32 Hash" 122 | msgstr "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 või Adler32 räsiväärtus" 123 | 124 | #: data/ui/application.ui:263 125 | msgid "Insert a MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 Hash" 126 | msgstr "Lisa MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 räsiväärtus" 127 | 128 | #: data/ui/application.ui:285 129 | msgid "File" 130 | msgstr "Fail" 131 | 132 | #: data/ui/application.ui:300 133 | msgid "Select Another File to Check Against" 134 | msgstr "Vali teine fail, millega võrrelda" 135 | 136 | #: data/ui/application.ui:342 137 | msgid "Choose File…" 138 | msgstr "Vali fail…" 139 | 140 | #: data/ui/hash_row.ui:9 141 | msgid "Copy" 142 | msgstr "Kopeeri" 143 | 144 | #: data/ui/shortcuts_window.ui:11 145 | msgid "General" 146 | msgstr "Üldised seadistused" 147 | 148 | #: data/ui/shortcuts_window.ui:14 149 | msgid "Open a File" 150 | msgstr "Ava fail" 151 | 152 | #: data/ui/shortcuts_window.ui:20 153 | msgid "Show Keyboard Shortcuts" 154 | msgstr "Näita kiirklahve" 155 | 156 | #: data/ui/shortcuts_window.ui:26 157 | msgid "New Window" 158 | msgstr "Uus aken" 159 | 160 | #: data/ui/shortcuts_window.ui:32 161 | msgid "Close Window" 162 | msgstr "Sulge aken" 163 | 164 | #: data/ui/shortcuts_window.ui:38 165 | msgid "Quit" 166 | msgstr "Välju" 167 | 168 | #: nautilus-extension/collision-extension.py:54 169 | msgid "Check Hashes" 170 | msgstr "Kontrolli räsiväärtuseid" 171 | 172 | #. Wikipedia article. If available, set it to the LANGUAGE's version, else leave it as is. 173 | #: src/collision.cr:72 174 | msgid "" 175 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 176 | msgstr "" 177 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 178 | 179 | #. Name or Name https://website.example 180 | #: src/collision/actions/about.cr:22 181 | msgid "translator-credits" 182 | msgstr "" 183 | "Henri https://hen.ee\n" 184 | "Priit Jõerüüt" 185 | 186 | #. The variables are numbers 187 | #: src/collision/functions/checksum.cr:79 188 | #, c-format 189 | msgid "%d of %d hashes calculated" 190 | msgstr "Räsiväärtuste arvutuse edenemine: %d / %d" 191 | 192 | #: src/collision/functions/feedback.cr:204 193 | msgid "They Match" 194 | msgstr "Nad klapivad omavahel" 195 | 196 | #: src/collision/functions/feedback.cr:204 197 | msgid "They Don't Match" 198 | msgstr "Nad ei klapi omavahel" 199 | 200 | #~ msgid "" 201 | #~ "This tool aims to solve that. Collision comes with a simple & clean " 202 | #~ "UI, allowing anyone, from any age and experience group, to generate, " 203 | #~ "compare and verify MD5, SHA-256, SHA-512 and SHA-1 hashes." 204 | #~ msgstr "" 205 | #~ "See tööriist aitab seda lahendada. Collision on lihtne programm, mis " 206 | #~ "aitab igaühel genereerida, võrrelda ning kontrollida MD5, SHA-256, " 207 | #~ "SHA-512 ja SHA-1 räsiväärtuseid (hash)." 208 | 209 | #~ msgid "MD5,SHA-1,SHA-256 or SHA-512 Hash" 210 | #~ msgstr "MD5,SHA-1,SHA-256 või SHA-512 hash" 211 | 212 | #~ msgid "Insert a MD5/SHA-1/SHA-256/SHA-512 Hash" 213 | #~ msgstr "Sisesta MD5/SHA-1/SHA-256/SHA-512 räsiväärtus" 214 | -------------------------------------------------------------------------------- /po/eu.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # Sergio Varela , 2022, 2023. 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: dev.geopjr.Collision\n" 8 | "Report-Msgid-Bugs-To: \n" 9 | "POT-Creation-Date: 2023-12-26 04:15+0200\n" 10 | "PO-Revision-Date: 2023-09-15 11:06+0000\n" 11 | "Last-Translator: Sergio Varela \n" 12 | "Language-Team: Basque \n" 14 | "Language: eu\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 19 | "X-Generator: Weblate 5.0.1-dev\n" 20 | 21 | #: data/dev.geopjr.Collision.desktop.in:6 22 | #: data/dev.geopjr.Collision.metainfo.xml.in:4 data/ui/application.ui:34 23 | #: data/ui/application.ui:77 data/ui/application.ui:114 24 | msgid "Collision" 25 | msgstr "Collision" 26 | 27 | #: data/dev.geopjr.Collision.desktop.in:7 28 | msgid "Hash Generator" 29 | msgstr "Hashe-sorgailua" 30 | 31 | #: data/dev.geopjr.Collision.desktop.in:8 32 | #: data/dev.geopjr.Collision.metainfo.xml.in:7 data/ui/application.ui:115 33 | msgid "Check hashes for your files" 34 | msgstr "Egiaztatu zure artxiboetako hasheak" 35 | 36 | #: data/dev.geopjr.Collision.desktop.in:12 37 | msgid "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 38 | msgstr "" 39 | 40 | #: data/dev.geopjr.Collision.metainfo.xml.in:16 41 | msgid "" 42 | "Verifying that a file you downloaded or received is actually the one you " 43 | "were expecting is often overlooked or too time-consuming to do. At the same " 44 | "time, it has become very easy to get your hands on a file that has been " 45 | "tampered with, due to the mass increase of malicious webpages and other " 46 | "actors." 47 | msgstr "" 48 | "Egiaztatu deskargatu edo jaso den fitxategi bat benetan espero zena dela, " 49 | "askotan oharkabean pasatzen den edo denbora gehiegi daraman zerbait da. Aldi " 50 | "berean, oso erraza bihurtu da manipulatu den fitxategi bat eskuratzea, web " 51 | "orri maltzurren eta beste eragile batzuen gorakada masiboaren ondorioz." 52 | 53 | #: data/dev.geopjr.Collision.metainfo.xml.in:22 54 | msgid "" 55 | "This tool aims to solve that. Collision comes with a simple & clean UI, " 56 | "allowing anyone, from any age and experience group, to generate, compare and " 57 | "verify MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 and Adler32 hashes." 58 | msgstr "" 59 | 60 | #: data/ui/application.ui:6 61 | msgid "_New Window" 62 | msgstr "" 63 | 64 | #: data/ui/application.ui:10 65 | msgid "_Compare Hash Functions" 66 | msgstr "_Konparatu hash funtzioak" 67 | 68 | #: data/ui/application.ui:14 69 | msgid "_Keyboard Shortcuts" 70 | msgstr "_Teklatuaren lasterbideak" 71 | 72 | #: data/ui/application.ui:18 73 | msgid "_About Collision" 74 | msgstr "_Kolisioari buruz" 75 | 76 | #: data/ui/application.ui:23 data/ui/application.ui:28 77 | msgid "Choose a File" 78 | msgstr "Aukeratu fitxategi bat" 79 | 80 | #: data/ui/application.ui:60 81 | msgid "_Open" 82 | msgstr "_Ireki" 83 | 84 | #: data/ui/application.ui:61 85 | msgid "Open…" 86 | msgstr "Ireki…" 87 | 88 | #: data/ui/application.ui:98 89 | msgid "Menu" 90 | msgstr "Menua" 91 | 92 | #: data/ui/application.ui:119 93 | msgid "_Open a File" 94 | msgstr "_Artxibo bat ireki" 95 | 96 | #: data/ui/application.ui:139 97 | msgid "Calculating Hashes" 98 | msgstr "" 99 | 100 | #: data/ui/application.ui:140 101 | msgid "This might take a while" 102 | msgstr "" 103 | 104 | #: data/ui/application.ui:175 105 | msgid "Hash" 106 | msgstr "Hash" 107 | 108 | #: data/ui/application.ui:191 109 | msgid "Verify" 110 | msgstr "Egiaztatu" 111 | 112 | #: data/ui/application.ui:204 113 | msgid "Checksum" 114 | msgstr "Egiaztapenaren batura (Checksum)" 115 | 116 | #: data/ui/application.ui:234 117 | msgid "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 or Adler32 Hash" 118 | msgstr "" 119 | 120 | #: data/ui/application.ui:263 121 | msgid "Insert a MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 Hash" 122 | msgstr "" 123 | 124 | #: data/ui/application.ui:285 125 | msgid "File" 126 | msgstr "Artxiboa" 127 | 128 | #: data/ui/application.ui:300 129 | msgid "Select Another File to Check Against" 130 | msgstr "Aukeratu beste fitxategi bat alderatzeko" 131 | 132 | #: data/ui/application.ui:342 133 | msgid "Choose File…" 134 | msgstr "Aukeratu fitxategia…" 135 | 136 | #: data/ui/hash_row.ui:9 137 | msgid "Copy" 138 | msgstr "Kopiatu" 139 | 140 | #: data/ui/shortcuts_window.ui:11 141 | msgid "General" 142 | msgstr "Orokorra" 143 | 144 | #: data/ui/shortcuts_window.ui:14 145 | msgid "Open a File" 146 | msgstr "Artxibo bat ireki" 147 | 148 | #: data/ui/shortcuts_window.ui:20 149 | msgid "Show Keyboard Shortcuts" 150 | msgstr "Erakutsi teklatuaren lasterbideak" 151 | 152 | #: data/ui/shortcuts_window.ui:26 153 | msgid "New Window" 154 | msgstr "" 155 | 156 | #: data/ui/shortcuts_window.ui:32 157 | msgid "Close Window" 158 | msgstr "" 159 | 160 | #: data/ui/shortcuts_window.ui:38 161 | msgid "Quit" 162 | msgstr "Irten" 163 | 164 | #: nautilus-extension/collision-extension.py:54 165 | msgid "Check Hashes" 166 | msgstr "Hasheak egiaztatu" 167 | 168 | #. Wikipedia article. If available, set it to the LANGUAGE's version, else leave it as is. 169 | #: src/collision.cr:72 170 | msgid "" 171 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 172 | msgstr "" 173 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 174 | 175 | #. Name or Name https://website.example 176 | #: src/collision/actions/about.cr:22 177 | msgid "translator-credits" 178 | msgstr "Sergio Varela " 179 | 180 | #. The variables are numbers 181 | #: src/collision/functions/checksum.cr:79 182 | #, c-format 183 | msgid "%d of %d hashes calculated" 184 | msgstr "" 185 | 186 | #: src/collision/functions/feedback.cr:204 187 | msgid "They Match" 188 | msgstr "" 189 | 190 | #: src/collision/functions/feedback.cr:204 191 | msgid "They Don't Match" 192 | msgstr "" 193 | 194 | #~ msgid "" 195 | #~ "This tool aims to solve that. Collision comes with a simple & clean " 196 | #~ "UI, allowing anyone, from any age and experience group, to generate, " 197 | #~ "compare and verify MD5, SHA-256, SHA-512 and SHA-1 hashes." 198 | #~ msgstr "" 199 | #~ "Tresna honek konpondu nahi du. Talka erabiltzaile-interfaze erraz eta " 200 | #~ "garbi batekin dator. Interfaze horri esker, edozein adinetako eta " 201 | #~ "esperientzia-taldetako edozein pertsonak MD5, SHA-256, SHA-512 eta SHA-1 " 202 | #~ "hasheak sortu, alderatu eta egiaztatu ahal izango ditu." 203 | 204 | #~ msgid "MD5,SHA-1,SHA-256 or SHA-512 Hash" 205 | #~ msgstr "MD5,SHA-1,SHA-256 edo SHA-512 Hash" 206 | 207 | #~ msgid "Insert a MD5/SHA-1/SHA-256/SHA-512 Hash" 208 | #~ msgstr "MD5/SHA-1/SHA-256/SHA-512 hash bat txertatu" 209 | -------------------------------------------------------------------------------- /po/fa.po: -------------------------------------------------------------------------------- 1 | # Persian translation for dev.geopjr.Collision. 2 | # Copyright (C) 2021 THE dev.geopjjr.Collision'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the dev.geopjr.Collision package. 4 | # MohammadSaleh Kamyab , 2021, 2022. 5 | # MSKF , 2022. 6 | # MohammadSaleh Kamyab , 2023. 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: dev.geopjr.Collision\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2023-12-26 04:15+0200\n" 12 | "PO-Revision-Date: 2023-03-29 12:41+0000\n" 13 | "Last-Translator: MohammadSaleh Kamyab \n" 14 | "Language-Team: Persian \n" 16 | "Language: fa\n" 17 | "MIME-Version: 1.0\n" 18 | "Content-Type: text/plain; charset=UTF-8\n" 19 | "Content-Transfer-Encoding: 8bit\n" 20 | "Plural-Forms: nplurals=2; plural=n > 1;\n" 21 | "X-Generator: Weblate 4.17-dev\n" 22 | 23 | #: data/dev.geopjr.Collision.desktop.in:6 24 | #: data/dev.geopjr.Collision.metainfo.xml.in:4 data/ui/application.ui:34 25 | #: data/ui/application.ui:77 data/ui/application.ui:114 26 | msgid "Collision" 27 | msgstr "تصادم" 28 | 29 | #: data/dev.geopjr.Collision.desktop.in:7 30 | msgid "Hash Generator" 31 | msgstr "مولّد هش" 32 | 33 | #: data/dev.geopjr.Collision.desktop.in:8 34 | #: data/dev.geopjr.Collision.metainfo.xml.in:7 data/ui/application.ui:115 35 | msgid "Check hashes for your files" 36 | msgstr "هش پرونده‌هایتان را بررسی کنید" 37 | 38 | #: data/dev.geopjr.Collision.desktop.in:12 39 | msgid "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 40 | msgstr "" 41 | 42 | #: data/dev.geopjr.Collision.metainfo.xml.in:16 43 | msgid "" 44 | "Verifying that a file you downloaded or received is actually the one you " 45 | "were expecting is often overlooked or too time-consuming to do. At the same " 46 | "time, it has become very easy to get your hands on a file that has been " 47 | "tampered with, due to the mass increase of malicious webpages and other " 48 | "actors." 49 | msgstr "" 50 | "اعتبارسنجی این که پرونده‌ای که بارگیری یا دریافت کرده‌اید، همانی است که انتظار " 51 | "دارید، معمولاً نادیده گرفته می‌شود یا بسیار زمان‌بر است. همزمان، دست‌یابی به " 52 | "پرونده‌ای که ناشی از افزایش صفحات وب مخرب و عوامل دیگر، دست‌کاری شده است، " 53 | "بسیار آسان می‌شود." 54 | 55 | #: data/dev.geopjr.Collision.metainfo.xml.in:22 56 | msgid "" 57 | "This tool aims to solve that. Collision comes with a simple & clean UI, " 58 | "allowing anyone, from any age and experience group, to generate, compare and " 59 | "verify MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 and Adler32 hashes." 60 | msgstr "" 61 | 62 | #: data/ui/application.ui:6 63 | msgid "_New Window" 64 | msgstr "" 65 | 66 | #: data/ui/application.ui:10 67 | msgid "_Compare Hash Functions" 68 | msgstr "مقایسهٔ _توابع هش" 69 | 70 | #: data/ui/application.ui:14 71 | msgid "_Keyboard Shortcuts" 72 | msgstr "_میان‌برهای صفحه‌کلید" 73 | 74 | #: data/ui/application.ui:18 75 | msgid "_About Collision" 76 | msgstr "_دربارهٔ تصادم" 77 | 78 | #: data/ui/application.ui:23 data/ui/application.ui:28 79 | msgid "Choose a File" 80 | msgstr "انتخاب یک پرونده" 81 | 82 | #: data/ui/application.ui:60 83 | msgid "_Open" 84 | msgstr "_گشودن" 85 | 86 | #: data/ui/application.ui:61 87 | msgid "Open…" 88 | msgstr "گشودن…" 89 | 90 | #: data/ui/application.ui:98 91 | msgid "Menu" 92 | msgstr "فهرست" 93 | 94 | #: data/ui/application.ui:119 95 | msgid "_Open a File" 96 | msgstr "گشودن یک _پرونده" 97 | 98 | #: data/ui/application.ui:139 99 | msgid "Calculating Hashes" 100 | msgstr "" 101 | 102 | #: data/ui/application.ui:140 103 | msgid "This might take a while" 104 | msgstr "" 105 | 106 | #: data/ui/application.ui:175 107 | msgid "Hash" 108 | msgstr "هش" 109 | 110 | #: data/ui/application.ui:191 111 | msgid "Verify" 112 | msgstr "اعتبارسنجی" 113 | 114 | #: data/ui/application.ui:204 115 | msgid "Checksum" 116 | msgstr "جمع‌آزما" 117 | 118 | #: data/ui/application.ui:234 119 | msgid "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 or Adler32 Hash" 120 | msgstr "" 121 | 122 | #: data/ui/application.ui:263 123 | msgid "Insert a MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 Hash" 124 | msgstr "" 125 | 126 | #: data/ui/application.ui:285 127 | msgid "File" 128 | msgstr "پرونده" 129 | 130 | #: data/ui/application.ui:300 131 | msgid "Select Another File to Check Against" 132 | msgstr "گزینش یک پروندهٔ دیگر برای بررسی متقابل" 133 | 134 | #: data/ui/application.ui:342 135 | msgid "Choose File…" 136 | msgstr "انتخاب پرونده…" 137 | 138 | #: data/ui/hash_row.ui:9 139 | msgid "Copy" 140 | msgstr "رونوشت" 141 | 142 | #: data/ui/shortcuts_window.ui:11 143 | msgid "General" 144 | msgstr "عمومی" 145 | 146 | #: data/ui/shortcuts_window.ui:14 147 | msgid "Open a File" 148 | msgstr "گشودن یک پرونده" 149 | 150 | #: data/ui/shortcuts_window.ui:20 151 | msgid "Show Keyboard Shortcuts" 152 | msgstr "نمایش میان‌برهای صفحه‌کلید" 153 | 154 | #: data/ui/shortcuts_window.ui:26 155 | msgid "New Window" 156 | msgstr "" 157 | 158 | #: data/ui/shortcuts_window.ui:32 159 | msgid "Close Window" 160 | msgstr "" 161 | 162 | #: data/ui/shortcuts_window.ui:38 163 | msgid "Quit" 164 | msgstr "ترک" 165 | 166 | #: nautilus-extension/collision-extension.py:54 167 | msgid "Check Hashes" 168 | msgstr "بررسی هش‌ها" 169 | 170 | #. Wikipedia article. If available, set it to the LANGUAGE's version, else leave it as is. 171 | #: src/collision.cr:72 172 | msgid "" 173 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 174 | msgstr "" 175 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 176 | 177 | #. Name or Name https://website.example 178 | #: src/collision/actions/about.cr:22 179 | msgid "translator-credits" 180 | msgstr "محمدصالح کامیاب " 181 | 182 | #. The variables are numbers 183 | #: src/collision/functions/checksum.cr:79 184 | #, c-format 185 | msgid "%d of %d hashes calculated" 186 | msgstr "" 187 | 188 | #: src/collision/functions/feedback.cr:204 189 | msgid "They Match" 190 | msgstr "" 191 | 192 | #: src/collision/functions/feedback.cr:204 193 | msgid "They Don't Match" 194 | msgstr "" 195 | 196 | #~ msgid "" 197 | #~ "This tool aims to solve that. Collision comes with a simple & clean " 198 | #~ "UI, allowing anyone, from any age and experience group, to generate, " 199 | #~ "compare and verify MD5, SHA-256, SHA-512 and SHA-1 hashes." 200 | #~ msgstr "" 201 | #~ "هدف این ابزار حل آن است. تصادم، همراه با رابط کاربری ساده و تمیز، همه را، " 202 | #~ "از هر گروه سنی و هر مقدار تجربه، قادر به تولید، مقایسه و اعتبارسنجی هش‌های " 203 | #~ "‏MD5، ‏SHA-256، ‏SHA-512 و SHA-1 می‌سازد." 204 | 205 | #~ msgid "MD5,SHA-1,SHA-256 or SHA-512 Hash" 206 | #~ msgstr "هش ‏MD5، ‏SHA-1،‏ SHA-256 یا SHA-512" 207 | 208 | #~ msgid "Insert a MD5/SHA-1/SHA-256/SHA-512 Hash" 209 | #~ msgstr "افزودن یک هش MD5/SHA-1/SHA-256/SHA-512" 210 | -------------------------------------------------------------------------------- /po/fr.po: -------------------------------------------------------------------------------- 1 | # French translations for dev.geopjr.Collision package. 2 | # Copyright (C) 2022 dev.geopjr.Collision'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the dev.geopjr.Collision package. 4 | # Irénée Thirion , 2022. 5 | # rene-coty , 2022. 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: dev.geopjr.Collision\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2023-12-26 04:15+0200\n" 11 | "PO-Revision-Date: 2022-12-16 22:09+0000\n" 12 | "Last-Translator: rene-coty \n" 13 | "Language-Team: French \n" 15 | "Language: fr\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=2; plural=n > 1;\n" 20 | "X-Generator: Weblate 4.15\n" 21 | 22 | #: data/dev.geopjr.Collision.desktop.in:6 23 | #: data/dev.geopjr.Collision.metainfo.xml.in:4 data/ui/application.ui:34 24 | #: data/ui/application.ui:77 data/ui/application.ui:114 25 | msgid "Collision" 26 | msgstr "Collision" 27 | 28 | #: data/dev.geopjr.Collision.desktop.in:7 29 | msgid "Hash Generator" 30 | msgstr "Générateur de hachages" 31 | 32 | #: data/dev.geopjr.Collision.desktop.in:8 33 | #: data/dev.geopjr.Collision.metainfo.xml.in:7 data/ui/application.ui:115 34 | msgid "Check hashes for your files" 35 | msgstr "Vérifiez les hachages de vos fichiers" 36 | 37 | #: data/dev.geopjr.Collision.desktop.in:12 38 | msgid "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 39 | msgstr "" 40 | 41 | #: data/dev.geopjr.Collision.metainfo.xml.in:16 42 | msgid "" 43 | "Verifying that a file you downloaded or received is actually the one you " 44 | "were expecting is often overlooked or too time-consuming to do. At the same " 45 | "time, it has become very easy to get your hands on a file that has been " 46 | "tampered with, due to the mass increase of malicious webpages and other " 47 | "actors." 48 | msgstr "" 49 | "Vérifier qu'un fichier que vous avez téléchargé ou reçu est bien celui que " 50 | "vous attendiez est souvent une tâche négligée ou trop longue à faire. Dans " 51 | "le même temps, il est devenu très facile, à cause de l'augmentation de pages " 52 | "web malveillantes ou d'autres acteurs de ce type, de mettre la main par " 53 | "mégarde sur un fichier altéré ou corrompu." 54 | 55 | #: data/dev.geopjr.Collision.metainfo.xml.in:22 56 | msgid "" 57 | "This tool aims to solve that. Collision comes with a simple & clean UI, " 58 | "allowing anyone, from any age and experience group, to generate, compare and " 59 | "verify MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 and Adler32 hashes." 60 | msgstr "" 61 | 62 | #: data/ui/application.ui:6 63 | msgid "_New Window" 64 | msgstr "" 65 | 66 | #: data/ui/application.ui:10 67 | msgid "_Compare Hash Functions" 68 | msgstr "_Comparer les fonctions de hachage" 69 | 70 | #: data/ui/application.ui:14 71 | msgid "_Keyboard Shortcuts" 72 | msgstr "Raccourcis _clavier" 73 | 74 | #: data/ui/application.ui:18 75 | msgid "_About Collision" 76 | msgstr "_À propos de Collision" 77 | 78 | #: data/ui/application.ui:23 data/ui/application.ui:28 79 | msgid "Choose a File" 80 | msgstr "Choisir un fichier" 81 | 82 | #: data/ui/application.ui:60 83 | msgid "_Open" 84 | msgstr "_Ouvrir" 85 | 86 | #: data/ui/application.ui:61 87 | msgid "Open…" 88 | msgstr "Ouvrir…" 89 | 90 | #: data/ui/application.ui:98 91 | msgid "Menu" 92 | msgstr "Menu" 93 | 94 | #: data/ui/application.ui:119 95 | msgid "_Open a File" 96 | msgstr "_Ouvrir un fichier" 97 | 98 | #: data/ui/application.ui:139 99 | msgid "Calculating Hashes" 100 | msgstr "" 101 | 102 | #: data/ui/application.ui:140 103 | msgid "This might take a while" 104 | msgstr "" 105 | 106 | #: data/ui/application.ui:175 107 | msgid "Hash" 108 | msgstr "Hachage" 109 | 110 | #: data/ui/application.ui:191 111 | msgid "Verify" 112 | msgstr "Vérifier" 113 | 114 | #: data/ui/application.ui:204 115 | msgid "Checksum" 116 | msgstr "Somme de contrôle" 117 | 118 | #: data/ui/application.ui:234 119 | msgid "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 or Adler32 Hash" 120 | msgstr "" 121 | 122 | #: data/ui/application.ui:263 123 | msgid "Insert a MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 Hash" 124 | msgstr "" 125 | 126 | #: data/ui/application.ui:285 127 | msgid "File" 128 | msgstr "Fichier" 129 | 130 | #: data/ui/application.ui:300 131 | msgid "Select Another File to Check Against" 132 | msgstr "Sélectionner un autre fichier pour vérifier la correspondance" 133 | 134 | #: data/ui/application.ui:342 135 | msgid "Choose File…" 136 | msgstr "Choisir un fichier…" 137 | 138 | #: data/ui/hash_row.ui:9 139 | msgid "Copy" 140 | msgstr "Copier" 141 | 142 | #: data/ui/shortcuts_window.ui:11 143 | msgid "General" 144 | msgstr "Général" 145 | 146 | #: data/ui/shortcuts_window.ui:14 147 | msgid "Open a File" 148 | msgstr "Ouvrir un fichier" 149 | 150 | #: data/ui/shortcuts_window.ui:20 151 | msgid "Show Keyboard Shortcuts" 152 | msgstr "Afficher les raccourcis clavier" 153 | 154 | #: data/ui/shortcuts_window.ui:26 155 | msgid "New Window" 156 | msgstr "" 157 | 158 | #: data/ui/shortcuts_window.ui:32 159 | msgid "Close Window" 160 | msgstr "" 161 | 162 | #: data/ui/shortcuts_window.ui:38 163 | msgid "Quit" 164 | msgstr "Quitter" 165 | 166 | #: nautilus-extension/collision-extension.py:54 167 | msgid "Check Hashes" 168 | msgstr "Sommes de contrôle" 169 | 170 | #. Wikipedia article. If available, set it to the LANGUAGE's version, else leave it as is. 171 | #: src/collision.cr:72 172 | msgid "" 173 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 174 | msgstr "" 175 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 176 | 177 | #. Name or Name https://website.example 178 | #: src/collision/actions/about.cr:22 179 | msgid "translator-credits" 180 | msgstr "Irénée Thirion" 181 | 182 | #. The variables are numbers 183 | #: src/collision/functions/checksum.cr:79 184 | #, c-format 185 | msgid "%d of %d hashes calculated" 186 | msgstr "" 187 | 188 | #: src/collision/functions/feedback.cr:204 189 | msgid "They Match" 190 | msgstr "" 191 | 192 | #: src/collision/functions/feedback.cr:204 193 | msgid "They Don't Match" 194 | msgstr "" 195 | 196 | #~ msgid "" 197 | #~ "This tool aims to solve that. Collision comes with a simple & clean " 198 | #~ "UI, allowing anyone, from any age and experience group, to generate, " 199 | #~ "compare and verify MD5, SHA-256, SHA-512 and SHA-1 hashes." 200 | #~ msgstr "" 201 | #~ "Cet outil vise à résoudre ce problème. Collision est un programme doté " 202 | #~ "d'une interface simple et claire, permettant à quiconque, quelque soit " 203 | #~ "son âge ou expérience, de comparer, générer et vérifier des hachages de " 204 | #~ "type MD5, SHA-256, SHA-512 et SHA-1." 205 | 206 | #~ msgid "MD5,SHA-1,SHA-256 or SHA-512 Hash" 207 | #~ msgstr "Hachage MD5, SHA-1, SHA-256 ou SHA-512" 208 | 209 | #~ msgid "Insert a MD5/SHA-1/SHA-256/SHA-512 Hash" 210 | #~ msgstr "Insérer un hachage MD5/SHA-1/SHA-256/SHA-512" 211 | -------------------------------------------------------------------------------- /po/gl.po: -------------------------------------------------------------------------------- 1 | # Galician translations for dev.geopjr.Collision package. 2 | # Copyright (C) 2022 dev.geopjr.Collision'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the dev.geopjr.Collision package. 4 | # Fran Diéguez , 2022, 2023. 5 | # antonpaidoslalin , 2022. 6 | # Evangelos Paterakis , 2022. 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: dev.geopjr.Collision\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2023-12-26 04:15+0200\n" 12 | "PO-Revision-Date: 2023-08-30 23:04+0000\n" 13 | "Last-Translator: Fran Diéguez \n" 14 | "Language-Team: Galician \n" 16 | "Language: gl\n" 17 | "MIME-Version: 1.0\n" 18 | "Content-Type: text/plain; charset=UTF-8\n" 19 | "Content-Transfer-Encoding: 8bit\n" 20 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 21 | "X-Generator: Weblate 5.0.1-dev\n" 22 | 23 | #: data/dev.geopjr.Collision.desktop.in:6 24 | #: data/dev.geopjr.Collision.metainfo.xml.in:4 data/ui/application.ui:34 25 | #: data/ui/application.ui:77 data/ui/application.ui:114 26 | msgid "Collision" 27 | msgstr "Colisión" 28 | 29 | #: data/dev.geopjr.Collision.desktop.in:7 30 | msgid "Hash Generator" 31 | msgstr "Xerador de hashes" 32 | 33 | #: data/dev.geopjr.Collision.desktop.in:8 34 | #: data/dev.geopjr.Collision.metainfo.xml.in:7 data/ui/application.ui:115 35 | msgid "Check hashes for your files" 36 | msgstr "Comprobe os hash dos seus ficheiros" 37 | 38 | #: data/dev.geopjr.Collision.desktop.in:12 39 | msgid "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 40 | msgstr "" 41 | 42 | #: data/dev.geopjr.Collision.metainfo.xml.in:16 43 | msgid "" 44 | "Verifying that a file you downloaded or received is actually the one you " 45 | "were expecting is often overlooked or too time-consuming to do. At the same " 46 | "time, it has become very easy to get your hands on a file that has been " 47 | "tampered with, due to the mass increase of malicious webpages and other " 48 | "actors." 49 | msgstr "" 50 | "Verificar un ficheiro que se descargou ou recibido é realmente é algo que a " 51 | "miúdo se pasa por alto ou que leva demasiado tempo. Ao mesmo tempo, voltouse " 52 | "moi fácil facerse con un ficheiro que foi manipulado, debido ao aumento " 53 | "masivo de páxinas web maliciosas e outros actores." 54 | 55 | #: data/dev.geopjr.Collision.metainfo.xml.in:22 56 | msgid "" 57 | "This tool aims to solve that. Collision comes with a simple & clean UI, " 58 | "allowing anyone, from any age and experience group, to generate, compare and " 59 | "verify MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 and Adler32 hashes." 60 | msgstr "" 61 | 62 | #: data/ui/application.ui:6 63 | msgid "_New Window" 64 | msgstr "" 65 | 66 | #: data/ui/application.ui:10 67 | msgid "_Compare Hash Functions" 68 | msgstr "_Comparar funcións hash" 69 | 70 | #: data/ui/application.ui:14 71 | msgid "_Keyboard Shortcuts" 72 | msgstr "Atallos de _teclado" 73 | 74 | #: data/ui/application.ui:18 75 | msgid "_About Collision" 76 | msgstr "_Sobre Colisión" 77 | 78 | #: data/ui/application.ui:23 data/ui/application.ui:28 79 | msgid "Choose a File" 80 | msgstr "Seleccionar un ficheiro" 81 | 82 | #: data/ui/application.ui:60 83 | msgid "_Open" 84 | msgstr "_Abrir" 85 | 86 | #: data/ui/application.ui:61 87 | msgid "Open…" 88 | msgstr "Abrir…" 89 | 90 | #: data/ui/application.ui:98 91 | msgid "Menu" 92 | msgstr "Menú" 93 | 94 | #: data/ui/application.ui:119 95 | msgid "_Open a File" 96 | msgstr "_Abrir un ficheiro" 97 | 98 | #: data/ui/application.ui:139 99 | msgid "Calculating Hashes" 100 | msgstr "" 101 | 102 | #: data/ui/application.ui:140 103 | msgid "This might take a while" 104 | msgstr "" 105 | 106 | #: data/ui/application.ui:175 107 | msgid "Hash" 108 | msgstr "Resumo" 109 | 110 | #: data/ui/application.ui:191 111 | msgid "Verify" 112 | msgstr "Verificar" 113 | 114 | #: data/ui/application.ui:204 115 | msgid "Checksum" 116 | msgstr "Suma de verificación" 117 | 118 | #: data/ui/application.ui:234 119 | msgid "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 or Adler32 Hash" 120 | msgstr "" 121 | 122 | #: data/ui/application.ui:263 123 | msgid "Insert a MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 Hash" 124 | msgstr "" 125 | 126 | #: data/ui/application.ui:285 127 | msgid "File" 128 | msgstr "Ficheiro" 129 | 130 | #: data/ui/application.ui:300 131 | msgid "Select Another File to Check Against" 132 | msgstr "Seleccione outro ficheiro contra o que comprobar" 133 | 134 | #: data/ui/application.ui:342 135 | msgid "Choose File…" 136 | msgstr "Escoller Ficheiro…" 137 | 138 | #: data/ui/hash_row.ui:9 139 | msgid "Copy" 140 | msgstr "Copiar" 141 | 142 | #: data/ui/shortcuts_window.ui:11 143 | msgid "General" 144 | msgstr "Xeral" 145 | 146 | #: data/ui/shortcuts_window.ui:14 147 | msgid "Open a File" 148 | msgstr "Abrir un ficheiro" 149 | 150 | #: data/ui/shortcuts_window.ui:20 151 | msgid "Show Keyboard Shortcuts" 152 | msgstr "Mostrar os atallos de teclado" 153 | 154 | #: data/ui/shortcuts_window.ui:26 155 | msgid "New Window" 156 | msgstr "" 157 | 158 | #: data/ui/shortcuts_window.ui:32 159 | msgid "Close Window" 160 | msgstr "" 161 | 162 | #: data/ui/shortcuts_window.ui:38 163 | msgid "Quit" 164 | msgstr "Saír" 165 | 166 | #: nautilus-extension/collision-extension.py:54 167 | msgid "Check Hashes" 168 | msgstr "Comprobar hashes" 169 | 170 | #. Wikipedia article. If available, set it to the LANGUAGE's version, else leave it as is. 171 | #: src/collision.cr:72 172 | msgid "" 173 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 174 | msgstr "" 175 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 176 | 177 | #. Name or Name https://website.example 178 | #: src/collision/actions/about.cr:22 179 | msgid "translator-credits" 180 | msgstr "Fran Diéguez , 2023" 181 | 182 | #. The variables are numbers 183 | #: src/collision/functions/checksum.cr:79 184 | #, c-format 185 | msgid "%d of %d hashes calculated" 186 | msgstr "" 187 | 188 | #: src/collision/functions/feedback.cr:204 189 | msgid "They Match" 190 | msgstr "" 191 | 192 | #: src/collision/functions/feedback.cr:204 193 | msgid "They Don't Match" 194 | msgstr "" 195 | 196 | #~ msgid "" 197 | #~ "This tool aims to solve that. Collision comes with a simple & clean " 198 | #~ "UI, allowing anyone, from any age and experience group, to generate, " 199 | #~ "compare and verify MD5, SHA-256, SHA-512 and SHA-1 hashes." 200 | #~ msgstr "" 201 | #~ "Esta ferramenta pretende solucionalo. Colisión ven con unha interface " 202 | #~ "simple e limpa permitíndolle a calquera, de calquera idade ou grupo de " 203 | #~ "experiencia, xerar, comparar e verificar resumos MD5, SHA-256, SHA-512 e " 204 | #~ "SHA-1." 205 | 206 | #~ msgid "MD5,SHA-1,SHA-256 or SHA-512 Hash" 207 | #~ msgstr "Resumo MD5,SHA-1,SHA-256 ou SHA-512" 208 | 209 | #~ msgid "Insert a MD5/SHA-1/SHA-256/SHA-512 Hash" 210 | #~ msgstr "Insira un hash MD5/SHA-1/SHA-256/SHA-512" 211 | -------------------------------------------------------------------------------- /po/hi.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # Nitin Khalia , 2024. 5 | # Scrambled777 , 2024. 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: PACKAGE VERSION\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2023-12-26 04:15+0200\n" 11 | "PO-Revision-Date: 2024-05-08 05:07+0000\n" 12 | "Last-Translator: Scrambled777 \n" 13 | "Language-Team: Hindi \n" 15 | "Language: hi\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=2; plural=n > 1;\n" 20 | "X-Generator: Weblate 5.5.4-rc\n" 21 | 22 | #: data/dev.geopjr.Collision.desktop.in:6 23 | #: data/dev.geopjr.Collision.metainfo.xml.in:4 data/ui/application.ui:34 24 | #: data/ui/application.ui:77 data/ui/application.ui:114 25 | msgid "Collision" 26 | msgstr "Collision" 27 | 28 | #: data/dev.geopjr.Collision.desktop.in:7 29 | msgid "Hash Generator" 30 | msgstr "हैश जेनरेटर" 31 | 32 | #: data/dev.geopjr.Collision.desktop.in:8 33 | #: data/dev.geopjr.Collision.metainfo.xml.in:7 data/ui/application.ui:115 34 | msgid "Check hashes for your files" 35 | msgstr "अपनी फाइलों के लिए हैश जांचें" 36 | 37 | #: data/dev.geopjr.Collision.desktop.in:12 38 | msgid "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 39 | msgstr "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 40 | 41 | #: data/dev.geopjr.Collision.metainfo.xml.in:16 42 | msgid "" 43 | "Verifying that a file you downloaded or received is actually the one you " 44 | "were expecting is often overlooked or too time-consuming to do. At the same " 45 | "time, it has become very easy to get your hands on a file that has been " 46 | "tampered with, due to the mass increase of malicious webpages and other " 47 | "actors." 48 | msgstr "" 49 | "यह सत्यापित करना कि आपके द्वारा डाउनलोड की गई या प्राप्त की गई फाइल वास्तव " 50 | "में वही है जिसकी आप अपेक्षा कर रहे थे, अक्सर अनदेखा कर दिया जाता है या ऐसा " 51 | "करने में बहुत समय लगता है। साथ ही, दुर्भावनापूर्ण वेबपृष्ठों और अन्य तत्वों " 52 | "की बड़े पैमाने पर वृद्धि के कारण, किसी ऐसी फाइल को प्राप्त करना बहुत आसान हो " 53 | "गया है जिसके साथ छेड़छाड़ की गई है।" 54 | 55 | #: data/dev.geopjr.Collision.metainfo.xml.in:22 56 | msgid "" 57 | "This tool aims to solve that. Collision comes with a simple & clean UI, " 58 | "allowing anyone, from any age and experience group, to generate, compare and " 59 | "verify MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 and Adler32 hashes." 60 | msgstr "" 61 | "इस टूल का लक्ष्य उसे हल करना है। Collision एक सरल & साफ UI के साथ आता है" 62 | ", जो किसी भी उम्र और अनुभव समूह के किसी भी व्यक्ति को MD5, SHA-256, SHA-512, " 63 | "SHA-1, Blake3, CRC32 और Adler32 हैश उत्पन्न करने, तुलना करने और सत्यापित करने" 64 | " की अनुमति देता है।" 65 | 66 | #: data/ui/application.ui:6 67 | msgid "_New Window" 68 | msgstr "नई विंडो (_N)" 69 | 70 | #: data/ui/application.ui:10 71 | msgid "_Compare Hash Functions" 72 | msgstr "हैश प्रकार्यों की तुलना करें (_C)" 73 | 74 | #: data/ui/application.ui:14 75 | msgid "_Keyboard Shortcuts" 76 | msgstr "कीबोर्ड शॉर्टकट (_K)" 77 | 78 | #: data/ui/application.ui:18 79 | msgid "_About Collision" 80 | msgstr "Collision के बारे में (_A)" 81 | 82 | #: data/ui/application.ui:23 data/ui/application.ui:28 83 | msgid "Choose a File" 84 | msgstr "फाइल चुनें" 85 | 86 | #: data/ui/application.ui:60 87 | msgid "_Open" 88 | msgstr "खोलें (_O)" 89 | 90 | #: data/ui/application.ui:61 91 | msgid "Open…" 92 | msgstr "खोलें…" 93 | 94 | #: data/ui/application.ui:98 95 | msgid "Menu" 96 | msgstr "मेनू" 97 | 98 | #: data/ui/application.ui:119 99 | msgid "_Open a File" 100 | msgstr "फाइल खोलें (_O)" 101 | 102 | #: data/ui/application.ui:139 103 | msgid "Calculating Hashes" 104 | msgstr "हैश की गणना" 105 | 106 | #: data/ui/application.ui:140 107 | msgid "This might take a while" 108 | msgstr "इसमें कुछ समय लग सकता है" 109 | 110 | #: data/ui/application.ui:175 111 | msgid "Hash" 112 | msgstr "हैश" 113 | 114 | #: data/ui/application.ui:191 115 | msgid "Verify" 116 | msgstr "सत्यापित करें" 117 | 118 | #: data/ui/application.ui:204 119 | msgid "Checksum" 120 | msgstr "चेकसम" 121 | 122 | #: data/ui/application.ui:234 123 | msgid "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 or Adler32 Hash" 124 | msgstr "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 या Adler32 हैश" 125 | 126 | #: data/ui/application.ui:263 127 | msgid "Insert a MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 Hash" 128 | msgstr "MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 हैश डालें" 129 | 130 | #: data/ui/application.ui:285 131 | msgid "File" 132 | msgstr "फाइल" 133 | 134 | #: data/ui/application.ui:300 135 | msgid "Select Another File to Check Against" 136 | msgstr "जांच के लिए दूसरी फाइल चुनें" 137 | 138 | #: data/ui/application.ui:342 139 | msgid "Choose File…" 140 | msgstr "फाइल चुनें…" 141 | 142 | #: data/ui/hash_row.ui:9 143 | msgid "Copy" 144 | msgstr "कॉपी करें" 145 | 146 | #: data/ui/shortcuts_window.ui:11 147 | msgid "General" 148 | msgstr "सामान्य" 149 | 150 | #: data/ui/shortcuts_window.ui:14 151 | msgid "Open a File" 152 | msgstr "फाइल खोलें" 153 | 154 | #: data/ui/shortcuts_window.ui:20 155 | msgid "Show Keyboard Shortcuts" 156 | msgstr "कीबोर्ड शॉर्टकट दिखाएं" 157 | 158 | #: data/ui/shortcuts_window.ui:26 159 | msgid "New Window" 160 | msgstr "नई विंडो" 161 | 162 | #: data/ui/shortcuts_window.ui:32 163 | msgid "Close Window" 164 | msgstr "विंडो बंद" 165 | 166 | #: data/ui/shortcuts_window.ui:38 167 | msgid "Quit" 168 | msgstr "छोड़ें" 169 | 170 | #: nautilus-extension/collision-extension.py:54 171 | msgid "Check Hashes" 172 | msgstr "हैश जांचे" 173 | 174 | #. Wikipedia article. If available, set it to the LANGUAGE's version, else leave it as is. 175 | #: src/collision.cr:72 176 | msgid "" 177 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 178 | msgstr "" 179 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 180 | 181 | #. Name or Name https://website.example 182 | #: src/collision/actions/about.cr:22 183 | msgid "translator-credits" 184 | msgstr "Scrambled777 " 185 | 186 | #. The variables are numbers 187 | #: src/collision/functions/checksum.cr:79 188 | #, c-format 189 | msgid "%d of %d hashes calculated" 190 | msgstr "%2$d में से %1$d हैश की गणना की गई" 191 | 192 | #: src/collision/functions/feedback.cr:204 193 | msgid "They Match" 194 | msgstr "वे मेल खाते हैं" 195 | 196 | #: src/collision/functions/feedback.cr:204 197 | msgid "They Don't Match" 198 | msgstr "वे मेल नहीं खाते" 199 | -------------------------------------------------------------------------------- /po/hr.po: -------------------------------------------------------------------------------- 1 | # Croatian translation for dev.geopjr.Collision. 2 | # Copyright (C) 2021 THE dev.geopjjr.Collision'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the dev.geopjr.Collision package. 4 | # Milo Ivir , 2021, 2022, 2023, 2024. 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: dev.geopjr.Collision\n" 8 | "Report-Msgid-Bugs-To: \n" 9 | "POT-Creation-Date: 2023-12-26 04:15+0200\n" 10 | "PO-Revision-Date: 2024-04-05 14:01+0000\n" 11 | "Last-Translator: Milo Ivir \n" 12 | "Language-Team: Croatian \n" 14 | "Language: hr\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " 19 | "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" 20 | "X-Generator: Weblate 5.5-dev\n" 21 | 22 | #: data/dev.geopjr.Collision.desktop.in:6 23 | #: data/dev.geopjr.Collision.metainfo.xml.in:4 data/ui/application.ui:34 24 | #: data/ui/application.ui:77 data/ui/application.ui:114 25 | msgid "Collision" 26 | msgstr "Collision" 27 | 28 | #: data/dev.geopjr.Collision.desktop.in:7 29 | msgid "Hash Generator" 30 | msgstr "Generator hasheva" 31 | 32 | #: data/dev.geopjr.Collision.desktop.in:8 33 | #: data/dev.geopjr.Collision.metainfo.xml.in:7 data/ui/application.ui:115 34 | msgid "Check hashes for your files" 35 | msgstr "Provjeri hasheve tvojih datoteka" 36 | 37 | #: data/dev.geopjr.Collision.desktop.in:12 38 | msgid "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 39 | msgstr "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 40 | 41 | #: data/dev.geopjr.Collision.metainfo.xml.in:16 42 | msgid "" 43 | "Verifying that a file you downloaded or received is actually the one you " 44 | "were expecting is often overlooked or too time-consuming to do. At the same " 45 | "time, it has become very easy to get your hands on a file that has been " 46 | "tampered with, due to the mass increase of malicious webpages and other " 47 | "actors." 48 | msgstr "" 49 | "Potvrđivanje da se pri preuzetoj ili primljenoj datoteci doista radi o " 50 | "očekivanoj datoteci često se zanemaruje ili oduzima previše vremena. " 51 | "Istovremeno je postalo sve jednostavnije manipulirati datoteke zbog masovnog " 52 | "povećanja zlonamjernih web-stranica i drugih aktera." 53 | 54 | #: data/dev.geopjr.Collision.metainfo.xml.in:22 55 | msgid "" 56 | "This tool aims to solve that. Collision comes with a simple & clean UI, " 57 | "allowing anyone, from any age and experience group, to generate, compare and " 58 | "verify MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 and Adler32 hashes." 59 | msgstr "" 60 | "Cilj ovog alata je rješavanje tog problema. Collision pruža jednostavno " 61 | "korisničko sučelje te omogućuje svakome bilo koje dobi i iskustva, " 62 | "generirati, usporediti i potvrditi MD5, SHA-256, SHA-512, SHA-1, Blake3, " 63 | "CRC32 i Adler32 hasheve." 64 | 65 | #: data/ui/application.ui:6 66 | msgid "_New Window" 67 | msgstr "_Novi prozor" 68 | 69 | #: data/ui/application.ui:10 70 | msgid "_Compare Hash Functions" 71 | msgstr "_Usporedi hash funkcije" 72 | 73 | #: data/ui/application.ui:14 74 | msgid "_Keyboard Shortcuts" 75 | msgstr "_Tipkovni prečaci" 76 | 77 | #: data/ui/application.ui:18 78 | msgid "_About Collision" 79 | msgstr "O _aplikaciji Collision" 80 | 81 | #: data/ui/application.ui:23 data/ui/application.ui:28 82 | msgid "Choose a File" 83 | msgstr "Odaberi datoteku" 84 | 85 | #: data/ui/application.ui:60 86 | msgid "_Open" 87 | msgstr "_Otvori" 88 | 89 | #: data/ui/application.ui:61 90 | msgid "Open…" 91 | msgstr "Otvori …" 92 | 93 | #: data/ui/application.ui:98 94 | msgid "Menu" 95 | msgstr "Izbornik" 96 | 97 | #: data/ui/application.ui:119 98 | msgid "_Open a File" 99 | msgstr "_Otvori datoteku" 100 | 101 | #: data/ui/application.ui:139 102 | msgid "Calculating Hashes" 103 | msgstr "Izračunavanje hasheva" 104 | 105 | #: data/ui/application.ui:140 106 | msgid "This might take a while" 107 | msgstr "Ovo može potrajati" 108 | 109 | #: data/ui/application.ui:175 110 | msgid "Hash" 111 | msgstr "Hash" 112 | 113 | #: data/ui/application.ui:191 114 | msgid "Verify" 115 | msgstr "Potvrdi" 116 | 117 | #: data/ui/application.ui:204 118 | msgid "Checksum" 119 | msgstr "Kontrolni zbroj" 120 | 121 | #: data/ui/application.ui:234 122 | msgid "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 or Adler32 Hash" 123 | msgstr "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 ili Adler32 Hash" 124 | 125 | #: data/ui/application.ui:263 126 | msgid "Insert a MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 Hash" 127 | msgstr "Umetni MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 Hash" 128 | 129 | #: data/ui/application.ui:285 130 | msgid "File" 131 | msgstr "Datoteka" 132 | 133 | #: data/ui/application.ui:300 134 | msgid "Select Another File to Check Against" 135 | msgstr "Odaberi jednu drugu datoteku za usporedbu" 136 | 137 | #: data/ui/application.ui:342 138 | msgid "Choose File…" 139 | msgstr "Odaberi datoteku …" 140 | 141 | #: data/ui/hash_row.ui:9 142 | msgid "Copy" 143 | msgstr "Kopiraj" 144 | 145 | #: data/ui/shortcuts_window.ui:11 146 | msgid "General" 147 | msgstr "Opće" 148 | 149 | #: data/ui/shortcuts_window.ui:14 150 | msgid "Open a File" 151 | msgstr "Otvori datoteku" 152 | 153 | #: data/ui/shortcuts_window.ui:20 154 | msgid "Show Keyboard Shortcuts" 155 | msgstr "Pokaži tipkovne prečace" 156 | 157 | #: data/ui/shortcuts_window.ui:26 158 | msgid "New Window" 159 | msgstr "Novi prozor" 160 | 161 | #: data/ui/shortcuts_window.ui:32 162 | msgid "Close Window" 163 | msgstr "Zatvori prozor" 164 | 165 | #: data/ui/shortcuts_window.ui:38 166 | msgid "Quit" 167 | msgstr "Zatvori program" 168 | 169 | #: nautilus-extension/collision-extension.py:54 170 | msgid "Check Hashes" 171 | msgstr "Provjeri hasheve" 172 | 173 | #. Wikipedia article. If available, set it to the LANGUAGE's version, else leave it as is. 174 | #: src/collision.cr:72 175 | msgid "" 176 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 177 | msgstr "" 178 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 179 | 180 | #. Name or Name https://website.example 181 | #: src/collision/actions/about.cr:22 182 | msgid "translator-credits" 183 | msgstr "Milo Ivir " 184 | 185 | #. The variables are numbers 186 | #: src/collision/functions/checksum.cr:79 187 | #, c-format 188 | msgid "%d of %d hashes calculated" 189 | msgstr "%d od %d hasheva izračunato" 190 | 191 | #: src/collision/functions/feedback.cr:204 192 | msgid "They Match" 193 | msgstr "Poklapaju se" 194 | 195 | #: src/collision/functions/feedback.cr:204 196 | msgid "They Don't Match" 197 | msgstr "Nepoklapaju se" 198 | 199 | #~ msgid "md5;sha1;sha256;sha512;hash;" 200 | #~ msgstr "md5;sha1;sha256;sha512;hash;" 201 | 202 | #~ msgid "" 203 | #~ "This tool aims to solve that. Collision comes with a simple & clean " 204 | #~ "UI, allowing anyone, from any age and experience group, to generate, " 205 | #~ "compare and verify MD5, SHA-256, SHA-512 and SHA-1 hashes." 206 | #~ msgstr "" 207 | #~ "Cilj ovog alata je riješiti taj problem. „Kolizija” sadrźi jednostavno i " 208 | #~ "čisto korisničko sučelje koje omogućuje svima, bez obzira na dob i " 209 | #~ "iskustvo, generirati, usporediti i provjeriti MD5, SHA-256, SHA-512 i " 210 | #~ "SHA-1 hasheve." 211 | 212 | #~ msgid "MD5,SHA-1,SHA-256 or SHA-512 Hash" 213 | #~ msgstr "MD5,SHA-1,SHA-256 ili SHA-512 Hash" 214 | 215 | #~ msgid "Insert a MD5/SHA-1/SHA-256/SHA-512 Hash" 216 | #~ msgstr "Umetni MD5/SHA-1/SHA-256/SHA-512 hash" 217 | -------------------------------------------------------------------------------- /po/ja.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # Kaz Sibuya , 2022. 5 | # Himmel , 2024. 6 | # Ryo Nakano , 2024. 7 | # Himmel , 2024. 8 | msgid "" 9 | msgstr "" 10 | "Project-Id-Version: dev.geopjr.Collision\n" 11 | "Report-Msgid-Bugs-To: \n" 12 | "POT-Creation-Date: 2023-12-26 04:15+0200\n" 13 | "PO-Revision-Date: 2024-11-03 16:09+0000\n" 14 | "Last-Translator: Himmel \n" 15 | "Language-Team: Japanese \n" 17 | "Language: ja\n" 18 | "MIME-Version: 1.0\n" 19 | "Content-Type: text/plain; charset=UTF-8\n" 20 | "Content-Transfer-Encoding: 8bit\n" 21 | "Plural-Forms: nplurals=1; plural=0;\n" 22 | "X-Generator: Weblate 5.8.2\n" 23 | 24 | #: data/dev.geopjr.Collision.desktop.in:6 25 | #: data/dev.geopjr.Collision.metainfo.xml.in:4 data/ui/application.ui:34 26 | #: data/ui/application.ui:77 data/ui/application.ui:114 27 | msgid "Collision" 28 | msgstr "Collision" 29 | 30 | #: data/dev.geopjr.Collision.desktop.in:7 31 | msgid "Hash Generator" 32 | msgstr "ハッシュジェネレーター" 33 | 34 | #: data/dev.geopjr.Collision.desktop.in:8 35 | #: data/dev.geopjr.Collision.metainfo.xml.in:7 data/ui/application.ui:115 36 | msgid "Check hashes for your files" 37 | msgstr "ファイルのハッシュを確認する" 38 | 39 | #: data/dev.geopjr.Collision.desktop.in:12 40 | msgid "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 41 | msgstr "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 42 | 43 | #: data/dev.geopjr.Collision.metainfo.xml.in:16 44 | msgid "" 45 | "Verifying that a file you downloaded or received is actually the one you " 46 | "were expecting is often overlooked or too time-consuming to do. At the same " 47 | "time, it has become very easy to get your hands on a file that has been " 48 | "tampered with, due to the mass increase of malicious webpages and other " 49 | "actors." 50 | msgstr "" 51 | "あなたがダウンロードした、または受信したファイルが本当に意図したものであるか" 52 | "を検証するには、しばしば見逃してしまったり、時間がかかりすぎたりすることがあ" 53 | "ります。一方、悪意のあるウェブページや他の攻撃者の急増により、改竄されたファ" 54 | "イルを入手することは珍しくありません。" 55 | 56 | #: data/dev.geopjr.Collision.metainfo.xml.in:22 57 | msgid "" 58 | "This tool aims to solve that. Collision comes with a simple & clean UI, " 59 | "allowing anyone, from any age and experience group, to generate, compare and " 60 | "verify MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 and Adler32 hashes." 61 | msgstr "" 62 | "このツールはこうした問題を解決することを目的としています。Collision " 63 | "はシンプル・クリーンな UI で、誰でも簡単に " 64 | "MD5、SHA-256、SHA-512、SHA-1、Blake3、CRC32、Adler32 " 65 | "ハッシュを生成、比較、検証することができます。" 66 | 67 | #: data/ui/application.ui:6 68 | msgid "_New Window" 69 | msgstr "新しいウィンドウ(_N)" 70 | 71 | #: data/ui/application.ui:10 72 | msgid "_Compare Hash Functions" 73 | msgstr "ハッシュ関数の比較(_C)" 74 | 75 | #: data/ui/application.ui:14 76 | msgid "_Keyboard Shortcuts" 77 | msgstr "キーボードショートカット(_K)" 78 | 79 | #: data/ui/application.ui:18 80 | msgid "_About Collision" 81 | msgstr "Collision について(_A)" 82 | 83 | #: data/ui/application.ui:23 data/ui/application.ui:28 84 | msgid "Choose a File" 85 | msgstr "ファイルを選択" 86 | 87 | #: data/ui/application.ui:60 88 | msgid "_Open" 89 | msgstr "開く(_O)" 90 | 91 | #: data/ui/application.ui:61 92 | msgid "Open…" 93 | msgstr "開く…" 94 | 95 | #: data/ui/application.ui:98 96 | msgid "Menu" 97 | msgstr "メニュー" 98 | 99 | #: data/ui/application.ui:119 100 | msgid "_Open a File" 101 | msgstr "ファイルを開く(_O)" 102 | 103 | #: data/ui/application.ui:139 104 | msgid "Calculating Hashes" 105 | msgstr "ハッシュの計算" 106 | 107 | #: data/ui/application.ui:140 108 | msgid "This might take a while" 109 | msgstr "いましばらくお待ち下さい" 110 | 111 | #: data/ui/application.ui:175 112 | msgid "Hash" 113 | msgstr "ハッシュ" 114 | 115 | #: data/ui/application.ui:191 116 | msgid "Verify" 117 | msgstr "検証" 118 | 119 | #: data/ui/application.ui:204 120 | msgid "Checksum" 121 | msgstr "チェックサム" 122 | 123 | #: data/ui/application.ui:234 124 | msgid "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 or Adler32 Hash" 125 | msgstr "MD5、SHA-1、SHA-256、SHA-512、Blake3、CRC32 または Adler32 ハッシュ" 126 | 127 | #: data/ui/application.ui:263 128 | msgid "Insert a MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 Hash" 129 | msgstr "MD 5/SHA-1/SHA-256/SHA-512/Blake 3/CRC 32/Adler 32 ハッシュを挿入する" 130 | 131 | #: data/ui/application.ui:285 132 | msgid "File" 133 | msgstr "ファイル" 134 | 135 | #: data/ui/application.ui:300 136 | msgid "Select Another File to Check Against" 137 | msgstr "照合する他のファイルを選択" 138 | 139 | #: data/ui/application.ui:342 140 | msgid "Choose File…" 141 | msgstr "ファイルを選択…" 142 | 143 | #: data/ui/hash_row.ui:9 144 | msgid "Copy" 145 | msgstr "コピー" 146 | 147 | #: data/ui/shortcuts_window.ui:11 148 | msgid "General" 149 | msgstr "一般" 150 | 151 | #: data/ui/shortcuts_window.ui:14 152 | msgid "Open a File" 153 | msgstr "ファイルを開く" 154 | 155 | #: data/ui/shortcuts_window.ui:20 156 | msgid "Show Keyboard Shortcuts" 157 | msgstr "キーボードショートカットを表示" 158 | 159 | #: data/ui/shortcuts_window.ui:26 160 | msgid "New Window" 161 | msgstr "新しいウィンドウ" 162 | 163 | #: data/ui/shortcuts_window.ui:32 164 | msgid "Close Window" 165 | msgstr "ウィンドウを閉じる" 166 | 167 | #: data/ui/shortcuts_window.ui:38 168 | msgid "Quit" 169 | msgstr "終了" 170 | 171 | #: nautilus-extension/collision-extension.py:54 172 | msgid "Check Hashes" 173 | msgstr "ハッシュの確認" 174 | 175 | #. Wikipedia article. If available, set it to the LANGUAGE's version, else leave it as is. 176 | #: src/collision.cr:72 177 | msgid "" 178 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 179 | msgstr "" 180 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 181 | 182 | #. Name or Name https://website.example 183 | #: src/collision/actions/about.cr:22 184 | msgid "translator-credits" 185 | msgstr "" 186 | "Himmel\n" 187 | "Sibuya Kaz " 188 | 189 | #. The variables are numbers 190 | #: src/collision/functions/checksum.cr:79 191 | #, c-format 192 | msgid "%d of %d hashes calculated" 193 | msgstr "%d個のうち%d個のハッシュが計算されました" 194 | 195 | #: src/collision/functions/feedback.cr:204 196 | msgid "They Match" 197 | msgstr "一致します" 198 | 199 | #: src/collision/functions/feedback.cr:204 200 | msgid "They Don't Match" 201 | msgstr "一致しません" 202 | 203 | #~ msgid "" 204 | #~ "This tool aims to solve that. Collision comes with a simple & clean " 205 | #~ "UI, allowing anyone, from any age and experience group, to generate, " 206 | #~ "compare and verify MD5, SHA-256, SHA-512 and SHA-1 hashes." 207 | #~ msgstr "" 208 | #~ "このツールはそれを解決することを目的としています。Collisionはシンプルかつ" 209 | #~ "クリーンなUIで、年齢や経験を問わず、誰でもMD5、SHA-256、SHA-512、SHA-1の" 210 | #~ "ハッシュを生成、比較、検証することができます。" 211 | 212 | #~ msgid "MD5,SHA-1,SHA-256 or SHA-512 Hash" 213 | #~ msgstr "MD5、SHA-1、SHA-256、SHA-512 ハッシュ" 214 | 215 | #~ msgid "Insert a MD5/SHA-1/SHA-256/SHA-512 Hash" 216 | #~ msgstr "MD5/SHA-1/SHA-256/SHA-512 のハッシュ値を入力" 217 | -------------------------------------------------------------------------------- /po/ko.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # Yonjae Lee , 2025. 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: PACKAGE VERSION\n" 8 | "Report-Msgid-Bugs-To: \n" 9 | "POT-Creation-Date: 2023-12-26 04:15+0200\n" 10 | "PO-Revision-Date: 2025-02-22 20:44+0000\n" 11 | "Last-Translator: Yonjae Lee \n" 12 | "Language-Team: Korean \n" 14 | "Language: ko\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=1; plural=0;\n" 19 | "X-Generator: Weblate 5.10.1-dev\n" 20 | 21 | #: data/dev.geopjr.Collision.desktop.in:6 22 | #: data/dev.geopjr.Collision.metainfo.xml.in:4 data/ui/application.ui:34 23 | #: data/ui/application.ui:77 data/ui/application.ui:114 24 | msgid "Collision" 25 | msgstr "" 26 | 27 | #: data/dev.geopjr.Collision.desktop.in:7 28 | msgid "Hash Generator" 29 | msgstr "해시 생성기" 30 | 31 | #: data/dev.geopjr.Collision.desktop.in:8 32 | #: data/dev.geopjr.Collision.metainfo.xml.in:7 data/ui/application.ui:115 33 | msgid "Check hashes for your files" 34 | msgstr "" 35 | 36 | #: data/dev.geopjr.Collision.desktop.in:12 37 | msgid "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 38 | msgstr "" 39 | 40 | #: data/dev.geopjr.Collision.metainfo.xml.in:16 41 | msgid "" 42 | "Verifying that a file you downloaded or received is actually the one you " 43 | "were expecting is often overlooked or too time-consuming to do. At the same " 44 | "time, it has become very easy to get your hands on a file that has been " 45 | "tampered with, due to the mass increase of malicious webpages and other " 46 | "actors." 47 | msgstr "" 48 | "받았거나 다운로드한 파일이 내가 기대했던 파일인지 확인하는 과정은 대부분 " 49 | "무시되거나 하는 데에 시간이 많이 걸립니다. 그와 동시에 악성 웹페이지들 및 " 50 | "기타 원인 제공자들이 크게 늘어남으로 인해 우리는 너무 쉽게 변조된 파일을 " 51 | "얻을 수 있게 되었습니다." 52 | 53 | #: data/dev.geopjr.Collision.metainfo.xml.in:22 54 | msgid "" 55 | "This tool aims to solve that. Collision comes with a simple & clean UI, " 56 | "allowing anyone, from any age and experience group, to generate, compare and " 57 | "verify MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 and Adler32 hashes." 58 | msgstr "" 59 | "이 툴은 이 문제를 해결하고자 합니다. Collision은 간결한 UI를 제공하여 나이와 " 60 | "경험에 상관없이 누구나 MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 및 " 61 | "Adler32 해시를 생성, 비교 및 확인할 수 있게 합니다." 62 | 63 | #: data/ui/application.ui:6 64 | msgid "_New Window" 65 | msgstr "" 66 | 67 | #: data/ui/application.ui:10 68 | msgid "_Compare Hash Functions" 69 | msgstr "" 70 | 71 | #: data/ui/application.ui:14 72 | msgid "_Keyboard Shortcuts" 73 | msgstr "" 74 | 75 | #: data/ui/application.ui:18 76 | msgid "_About Collision" 77 | msgstr "" 78 | 79 | #: data/ui/application.ui:23 data/ui/application.ui:28 80 | msgid "Choose a File" 81 | msgstr "" 82 | 83 | #: data/ui/application.ui:60 84 | msgid "_Open" 85 | msgstr "" 86 | 87 | #: data/ui/application.ui:61 88 | msgid "Open…" 89 | msgstr "" 90 | 91 | #: data/ui/application.ui:98 92 | msgid "Menu" 93 | msgstr "메뉴" 94 | 95 | #: data/ui/application.ui:119 96 | msgid "_Open a File" 97 | msgstr "" 98 | 99 | #: data/ui/application.ui:139 100 | msgid "Calculating Hashes" 101 | msgstr "" 102 | 103 | #: data/ui/application.ui:140 104 | msgid "This might take a while" 105 | msgstr "조금 시간이 걸릴 수 있습니다" 106 | 107 | #: data/ui/application.ui:175 108 | msgid "Hash" 109 | msgstr "" 110 | 111 | #: data/ui/application.ui:191 112 | msgid "Verify" 113 | msgstr "" 114 | 115 | #: data/ui/application.ui:204 116 | msgid "Checksum" 117 | msgstr "체크섬" 118 | 119 | #: data/ui/application.ui:234 120 | msgid "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 or Adler32 Hash" 121 | msgstr "" 122 | 123 | #: data/ui/application.ui:263 124 | msgid "Insert a MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 Hash" 125 | msgstr "" 126 | 127 | #: data/ui/application.ui:285 128 | msgid "File" 129 | msgstr "파일" 130 | 131 | #: data/ui/application.ui:300 132 | msgid "Select Another File to Check Against" 133 | msgstr "비교할 대상 파일을 선택하세요" 134 | 135 | #: data/ui/application.ui:342 136 | msgid "Choose File…" 137 | msgstr "" 138 | 139 | #: data/ui/hash_row.ui:9 140 | msgid "Copy" 141 | msgstr "복사" 142 | 143 | #: data/ui/shortcuts_window.ui:11 144 | msgid "General" 145 | msgstr "" 146 | 147 | #: data/ui/shortcuts_window.ui:14 148 | msgid "Open a File" 149 | msgstr "파일 열기" 150 | 151 | #: data/ui/shortcuts_window.ui:20 152 | msgid "Show Keyboard Shortcuts" 153 | msgstr "키보드 단축키 표시" 154 | 155 | #: data/ui/shortcuts_window.ui:26 156 | msgid "New Window" 157 | msgstr "새 창 열기" 158 | 159 | #: data/ui/shortcuts_window.ui:32 160 | msgid "Close Window" 161 | msgstr "창 닫기" 162 | 163 | #: data/ui/shortcuts_window.ui:38 164 | msgid "Quit" 165 | msgstr "종료" 166 | 167 | #: nautilus-extension/collision-extension.py:54 168 | msgid "Check Hashes" 169 | msgstr "" 170 | 171 | #. Wikipedia article. If available, set it to the LANGUAGE's version, else leave it as is. 172 | #: src/collision.cr:72 173 | msgid "" 174 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 175 | msgstr "" 176 | 177 | #. Name or Name https://website.example 178 | #: src/collision/actions/about.cr:22 179 | msgid "translator-credits" 180 | msgstr "Yonjae Lee " 181 | 182 | #. The variables are numbers 183 | #: src/collision/functions/checksum.cr:79 184 | #, c-format 185 | msgid "%d of %d hashes calculated" 186 | msgstr "%d / %d 개의 해시 계산됨" 187 | 188 | #: src/collision/functions/feedback.cr:204 189 | msgid "They Match" 190 | msgstr "일치함" 191 | 192 | #: src/collision/functions/feedback.cr:204 193 | msgid "They Don't Match" 194 | msgstr "일치하지 않음" 195 | -------------------------------------------------------------------------------- /po/nb_NO.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # Brage Fuglseth , 2024. 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: PACKAGE VERSION\n" 8 | "Report-Msgid-Bugs-To: \n" 9 | "POT-Creation-Date: 2023-12-26 04:15+0200\n" 10 | "PO-Revision-Date: 2024-09-24 12:19+0000\n" 11 | "Last-Translator: Brage Fuglseth \n" 12 | "Language-Team: Norwegian Bokmål \n" 14 | "Language: nb_NO\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 19 | "X-Generator: Weblate 5.8-dev\n" 20 | 21 | #: data/dev.geopjr.Collision.desktop.in:6 22 | #: data/dev.geopjr.Collision.metainfo.xml.in:4 data/ui/application.ui:34 23 | #: data/ui/application.ui:77 data/ui/application.ui:114 24 | msgid "Collision" 25 | msgstr "Collision" 26 | 27 | #: data/dev.geopjr.Collision.desktop.in:7 28 | msgid "Hash Generator" 29 | msgstr "Avtrykk" 30 | 31 | #: data/dev.geopjr.Collision.desktop.in:8 32 | #: data/dev.geopjr.Collision.metainfo.xml.in:7 data/ui/application.ui:115 33 | msgid "Check hashes for your files" 34 | msgstr "Sjekk avtrykkene til filer" 35 | 36 | #: data/dev.geopjr.Collision.desktop.in:12 37 | msgid "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 38 | msgstr "" 39 | "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;avtrykk;verifisering;krypter" 40 | "ing;" 41 | 42 | #: data/dev.geopjr.Collision.metainfo.xml.in:16 43 | msgid "" 44 | "Verifying that a file you downloaded or received is actually the one you " 45 | "were expecting is often overlooked or too time-consuming to do. At the same " 46 | "time, it has become very easy to get your hands on a file that has been " 47 | "tampered with, due to the mass increase of malicious webpages and other " 48 | "actors." 49 | msgstr "" 50 | "Å passe på at en fil du har lastet ned eller mottatt faktisk er den du " 51 | "forventet, kan være tidkrevende og tilsynelatende uviktig. Samtidig blir det " 52 | "stadig enklere å ende opp med filer som har blitt tuklet med, på grunn av en " 53 | "massiv økning i ondsinnede nettsteder og aktører." 54 | 55 | #: data/dev.geopjr.Collision.metainfo.xml.in:22 56 | msgid "" 57 | "This tool aims to solve that. Collision comes with a simple & clean UI, " 58 | "allowing anyone, from any age and experience group, to generate, compare and " 59 | "verify MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 and Adler32 hashes." 60 | msgstr "" 61 | "Collision har som mål å være løsningen på dette problemet. Appen er utformet " 62 | "for at hvem som helst, uansett alder eller erfaring, skal kunne generere, " 63 | "sammenligne og verifisere forskjellige filavtrykk, som MD5, SHA-256, SHA-" 64 | "512, SHA-1, Blake3, CRC32 eller Adler32." 65 | 66 | #: data/ui/application.ui:6 67 | msgid "_New Window" 68 | msgstr "_Nytt vindu" 69 | 70 | #: data/ui/application.ui:10 71 | msgid "_Compare Hash Functions" 72 | msgstr "_Sammenlign funksjoner" 73 | 74 | #: data/ui/application.ui:14 75 | msgid "_Keyboard Shortcuts" 76 | msgstr "_Tastatursnarveier" 77 | 78 | #: data/ui/application.ui:18 79 | msgid "_About Collision" 80 | msgstr "_Om Collision" 81 | 82 | #: data/ui/application.ui:23 data/ui/application.ui:28 83 | msgid "Choose a File" 84 | msgstr "Velg fil" 85 | 86 | #: data/ui/application.ui:60 87 | msgid "_Open" 88 | msgstr "_Åpne" 89 | 90 | #: data/ui/application.ui:61 91 | msgid "Open…" 92 | msgstr "Åpne…" 93 | 94 | #: data/ui/application.ui:98 95 | msgid "Menu" 96 | msgstr "Hovedmeny" 97 | 98 | #: data/ui/application.ui:119 99 | msgid "_Open a File" 100 | msgstr "_Åpne fil" 101 | 102 | #: data/ui/application.ui:139 103 | msgid "Calculating Hashes" 104 | msgstr "Genererer avtrykk" 105 | 106 | #: data/ui/application.ui:140 107 | msgid "This might take a while" 108 | msgstr "Dette kan ta en stund" 109 | 110 | #: data/ui/application.ui:175 111 | msgid "Hash" 112 | msgstr "Generer" 113 | 114 | #: data/ui/application.ui:191 115 | msgid "Verify" 116 | msgstr "Verifiser" 117 | 118 | #: data/ui/application.ui:204 119 | msgid "Checksum" 120 | msgstr "Avtrykk" 121 | 122 | #: data/ui/application.ui:234 123 | msgid "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 or Adler32 Hash" 124 | msgstr "MD5, SHA-1, SHA-256, SHA-512, Blake3, CRC32 eller Adler32-avtrykk" 125 | 126 | #: data/ui/application.ui:263 127 | msgid "Insert a MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 Hash" 128 | msgstr "Sett inn et MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32-avtrykk" 129 | 130 | #: data/ui/application.ui:285 131 | msgid "File" 132 | msgstr "Fil" 133 | 134 | #: data/ui/application.ui:300 135 | msgid "Select Another File to Check Against" 136 | msgstr "Velg en annen fil å sammenligne med" 137 | 138 | #: data/ui/application.ui:342 139 | msgid "Choose File…" 140 | msgstr "Velg fil…" 141 | 142 | #: data/ui/hash_row.ui:9 143 | msgid "Copy" 144 | msgstr "Kopier" 145 | 146 | #: data/ui/shortcuts_window.ui:11 147 | msgid "General" 148 | msgstr "Generelt" 149 | 150 | #: data/ui/shortcuts_window.ui:14 151 | msgid "Open a File" 152 | msgstr "Åpne en fil" 153 | 154 | #: data/ui/shortcuts_window.ui:20 155 | msgid "Show Keyboard Shortcuts" 156 | msgstr "Vis tastatursnarveier" 157 | 158 | #: data/ui/shortcuts_window.ui:26 159 | msgid "New Window" 160 | msgstr "Nytt vindu" 161 | 162 | #: data/ui/shortcuts_window.ui:32 163 | msgid "Close Window" 164 | msgstr "Lukk vindu" 165 | 166 | #: data/ui/shortcuts_window.ui:38 167 | msgid "Quit" 168 | msgstr "Avslutt" 169 | 170 | #: nautilus-extension/collision-extension.py:54 171 | msgid "Check Hashes" 172 | msgstr "Kontroller avtrykk" 173 | 174 | #. Wikipedia article. If available, set it to the LANGUAGE's version, else leave it as is. 175 | #: src/collision.cr:72 176 | msgid "" 177 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 178 | msgstr "" 179 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 180 | 181 | #. Name or Name https://website.example 182 | #: src/collision/actions/about.cr:22 183 | msgid "translator-credits" 184 | msgstr "Brage Fuglseth https://bragefuglseth.dev" 185 | 186 | #. The variables are numbers 187 | #: src/collision/functions/checksum.cr:79 188 | #, c-format 189 | msgid "%d of %d hashes calculated" 190 | msgstr "%d av %d avtrykk generert" 191 | 192 | #: src/collision/functions/feedback.cr:204 193 | msgid "They Match" 194 | msgstr "De samsvarer" 195 | 196 | #: src/collision/functions/feedback.cr:204 197 | msgid "They Don't Match" 198 | msgstr "De samsvarer ikke" 199 | -------------------------------------------------------------------------------- /po/pl.po: -------------------------------------------------------------------------------- 1 | # Polish translations for Collision. 2 | # Copyright (C) 2021 Collision'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the Collision package. 4 | # Nikki , 2021. 5 | # gnu-ewm , 2023. 6 | # polswert1 , 2024. 7 | # polswert1 , 2024. 8 | msgid "" 9 | msgstr "" 10 | "Project-Id-Version: dev.geopjr.Collision\n" 11 | "Report-Msgid-Bugs-To: \n" 12 | "POT-Creation-Date: 2023-12-26 04:15+0200\n" 13 | "PO-Revision-Date: 2024-04-13 17:06+0000\n" 14 | "Last-Translator: polswert1 \n" 15 | "Language-Team: Polish \n" 17 | "Language: pl\n" 18 | "MIME-Version: 1.0\n" 19 | "Content-Type: text/plain; charset=UTF-8\n" 20 | "Content-Transfer-Encoding: 8bit\n" 21 | "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " 22 | "|| n%100>=20) ? 1 : 2);\n" 23 | "X-Generator: Weblate 5.5-dev\n" 24 | 25 | #: data/dev.geopjr.Collision.desktop.in:6 26 | #: data/dev.geopjr.Collision.metainfo.xml.in:4 data/ui/application.ui:34 27 | #: data/ui/application.ui:77 data/ui/application.ui:114 28 | msgid "Collision" 29 | msgstr "Collision" 30 | 31 | #: data/dev.geopjr.Collision.desktop.in:7 32 | msgid "Hash Generator" 33 | msgstr "Generator haszy" 34 | 35 | #: data/dev.geopjr.Collision.desktop.in:8 36 | #: data/dev.geopjr.Collision.metainfo.xml.in:7 data/ui/application.ui:115 37 | msgid "Check hashes for your files" 38 | msgstr "Sprawdź sumy kontrolne swoich plików" 39 | 40 | #: data/dev.geopjr.Collision.desktop.in:12 41 | msgid "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 42 | msgstr "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 43 | 44 | #: data/dev.geopjr.Collision.metainfo.xml.in:16 45 | msgid "" 46 | "Verifying that a file you downloaded or received is actually the one you " 47 | "were expecting is often overlooked or too time-consuming to do. At the same " 48 | "time, it has become very easy to get your hands on a file that has been " 49 | "tampered with, due to the mass increase of malicious webpages and other " 50 | "actors." 51 | msgstr "" 52 | "Sprawdzenie, czy pobrany lub otrzymany plik jest rzeczywiście tym, którego " 53 | "się spodziewaliśmy, jest często pomijane lub zbyt czasochłonne, aby to " 54 | "zrobić. Jednocześnie, z powodu masowego wzrostu liczby złośliwych stron " 55 | "internetowych i innych podmiotów, bardzo łatwo jest dostać w swoje ręce " 56 | "plik, który został podmieniony." 57 | 58 | #: data/dev.geopjr.Collision.metainfo.xml.in:22 59 | msgid "" 60 | "This tool aims to solve that. Collision comes with a simple & clean UI, " 61 | "allowing anyone, from any age and experience group, to generate, compare and " 62 | "verify MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 and Adler32 hashes." 63 | msgstr "" 64 | "To narzędzie może to rozwiązać. Collision ma czysty interfejs, prosty do " 65 | "zrozumienia dla każdego, może generować, porównywać i weryfikować hasze MD5, " 66 | "SHA-256, SHA-512, SHA-1, Blake3, CRC32 oraz Adler32." 67 | 68 | #: data/ui/application.ui:6 69 | msgid "_New Window" 70 | msgstr "_Nowe Okno" 71 | 72 | #: data/ui/application.ui:10 73 | msgid "_Compare Hash Functions" 74 | msgstr "_Porównanie algorytmów haszujących" 75 | 76 | #: data/ui/application.ui:14 77 | msgid "_Keyboard Shortcuts" 78 | msgstr "_Skróty klawiszowe" 79 | 80 | #: data/ui/application.ui:18 81 | msgid "_About Collision" 82 | msgstr "_O programie Collision" 83 | 84 | #: data/ui/application.ui:23 data/ui/application.ui:28 85 | msgid "Choose a File" 86 | msgstr "Wybierz plik" 87 | 88 | #: data/ui/application.ui:60 89 | msgid "_Open" 90 | msgstr "_Otwórz" 91 | 92 | #: data/ui/application.ui:61 93 | msgid "Open…" 94 | msgstr "Otwórz…" 95 | 96 | #: data/ui/application.ui:98 97 | msgid "Menu" 98 | msgstr "Menu" 99 | 100 | #: data/ui/application.ui:119 101 | msgid "_Open a File" 102 | msgstr "_Otwórz plik" 103 | 104 | #: data/ui/application.ui:139 105 | msgid "Calculating Hashes" 106 | msgstr "Kalkulowanie Haszów" 107 | 108 | #: data/ui/application.ui:140 109 | msgid "This might take a while" 110 | msgstr "To może chwilę potrwać" 111 | 112 | #: data/ui/application.ui:175 113 | msgid "Hash" 114 | msgstr "Hasz" 115 | 116 | #: data/ui/application.ui:191 117 | msgid "Verify" 118 | msgstr "Zweryfikuj" 119 | 120 | #: data/ui/application.ui:204 121 | msgid "Checksum" 122 | msgstr "Suma kontrolna" 123 | 124 | #: data/ui/application.ui:234 125 | msgid "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 or Adler32 Hash" 126 | msgstr "Hasz MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 albo Adler32" 127 | 128 | #: data/ui/application.ui:263 129 | msgid "Insert a MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 Hash" 130 | msgstr "Wstaw Hasz MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32" 131 | 132 | #: data/ui/application.ui:285 133 | msgid "File" 134 | msgstr "Plik" 135 | 136 | #: data/ui/application.ui:300 137 | msgid "Select Another File to Check Against" 138 | msgstr "Wybierz drugi plik do porównania" 139 | 140 | #: data/ui/application.ui:342 141 | msgid "Choose File…" 142 | msgstr "Wybierz plik…" 143 | 144 | #: data/ui/hash_row.ui:9 145 | msgid "Copy" 146 | msgstr "Kopiuj" 147 | 148 | #: data/ui/shortcuts_window.ui:11 149 | msgid "General" 150 | msgstr "Ogólne" 151 | 152 | #: data/ui/shortcuts_window.ui:14 153 | msgid "Open a File" 154 | msgstr "Otwórz plik" 155 | 156 | #: data/ui/shortcuts_window.ui:20 157 | msgid "Show Keyboard Shortcuts" 158 | msgstr "Pokaż skróty klawiszowe" 159 | 160 | #: data/ui/shortcuts_window.ui:26 161 | msgid "New Window" 162 | msgstr "Nowe Okno" 163 | 164 | #: data/ui/shortcuts_window.ui:32 165 | msgid "Close Window" 166 | msgstr "Zamknij Okno" 167 | 168 | #: data/ui/shortcuts_window.ui:38 169 | msgid "Quit" 170 | msgstr "Wyjdź" 171 | 172 | #: nautilus-extension/collision-extension.py:54 173 | msgid "Check Hashes" 174 | msgstr "Sprawdź hasze" 175 | 176 | #. Wikipedia article. If available, set it to the LANGUAGE's version, else leave it as is. 177 | #: src/collision.cr:72 178 | msgid "" 179 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 180 | msgstr "" 181 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 182 | 183 | #. Name or Name https://website.example 184 | #: src/collision/actions/about.cr:22 185 | msgid "translator-credits" 186 | msgstr "Nikki" 187 | 188 | #. The variables are numbers 189 | #: src/collision/functions/checksum.cr:79 190 | #, c-format 191 | msgid "%d of %d hashes calculated" 192 | msgstr "%d z %d haszów przekalkulowane" 193 | 194 | #: src/collision/functions/feedback.cr:204 195 | msgid "They Match" 196 | msgstr "Zgadzają się" 197 | 198 | #: src/collision/functions/feedback.cr:204 199 | msgid "They Don't Match" 200 | msgstr "Nie zgadzają się" 201 | 202 | #~ msgid "" 203 | #~ "This tool aims to solve that. Collision comes with a simple & clean " 204 | #~ "UI, allowing anyone, from any age and experience group, to generate, " 205 | #~ "compare and verify MD5, SHA-256, SHA-512 and SHA-1 hashes." 206 | #~ msgstr "" 207 | #~ "To narzędzie ma na celu rozwiązanie tego problemu. Collision przychodzi z " 208 | #~ "prostym i czystym UI, pozwalając każdemu, z każdej grupy wiekowej i " 209 | #~ "doświadczenia, do generowania, porównywania i weryfikacji haszy MD5, " 210 | #~ "SHA-256, SHA-512 i SHA-1." 211 | 212 | #~ msgid "MD5,SHA-1,SHA-256 or SHA-512 Hash" 213 | #~ msgstr "Hasz MD5,SHA-1,SHA-256 or SHA-512" 214 | 215 | #~ msgid "Insert a MD5/SHA-1/SHA-256/SHA-512 Hash" 216 | #~ msgstr "Wklej sumę kontrolną MD5/SHA-1/SHA-256/SHA-512" 217 | -------------------------------------------------------------------------------- /po/sk.po: -------------------------------------------------------------------------------- 1 | # Slovakia translation for dev.geopjr.Collision. 2 | # Copyright (C) 2021 THE dev.geopjjr.Collision'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the dev.geopjr.Collision package. 4 | # MartionIIOT <42734508+MartinIIOT@users.noreply.github.com>, 2021. 5 | # Milan Šalka , 2023, 2024. 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: dev.geopjr.Collision\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2023-12-26 04:15+0200\n" 11 | "PO-Revision-Date: 2024-05-02 19:07+0000\n" 12 | "Last-Translator: Milan Šalka \n" 13 | "Language-Team: Slovak \n" 15 | "Language: sk\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n" 20 | "X-Generator: Weblate 5.5.3-dev\n" 21 | 22 | #: data/dev.geopjr.Collision.desktop.in:6 23 | #: data/dev.geopjr.Collision.metainfo.xml.in:4 data/ui/application.ui:34 24 | #: data/ui/application.ui:77 data/ui/application.ui:114 25 | msgid "Collision" 26 | msgstr "Collision" 27 | 28 | #: data/dev.geopjr.Collision.desktop.in:7 29 | msgid "Hash Generator" 30 | msgstr "Hash generátor" 31 | 32 | #: data/dev.geopjr.Collision.desktop.in:8 33 | #: data/dev.geopjr.Collision.metainfo.xml.in:7 data/ui/application.ui:115 34 | msgid "Check hashes for your files" 35 | msgstr "Skontrolujte hashes pre vaše súbory" 36 | 37 | #: data/dev.geopjr.Collision.desktop.in:12 38 | msgid "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 39 | msgstr "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 40 | 41 | #: data/dev.geopjr.Collision.metainfo.xml.in:16 42 | msgid "" 43 | "Verifying that a file you downloaded or received is actually the one you " 44 | "were expecting is often overlooked or too time-consuming to do. At the same " 45 | "time, it has become very easy to get your hands on a file that has been " 46 | "tampered with, due to the mass increase of malicious webpages and other " 47 | "actors." 48 | msgstr "" 49 | "Overenie, že súbor, ktorý ste si stiahli alebo dostal, je vlastne ten, ktorý " 50 | "ste očakávali, je často prehliadaný alebo príliš časovo náročné. Zároveň sa " 51 | "stalo veľmi ľahké získať ruky na súbore, ktorý bol stvorený, kvôli " 52 | "hromadnému zvýšeniu škodlivých webových stránok a iných hercov." 53 | 54 | #: data/dev.geopjr.Collision.metainfo.xml.in:22 55 | msgid "" 56 | "This tool aims to solve that. Collision comes with a simple & clean UI, " 57 | "allowing anyone, from any age and experience group, to generate, compare and " 58 | "verify MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 and Adler32 hashes." 59 | msgstr "" 60 | "Tento nástroj má za cieľ vyriešiť. Collision prichádza s jednoduchým & čistý " 61 | "UI, čo umožňuje každému, z akéhokoľvek veku a skúseností skupiny, vytvárať, " 62 | "porovnať a overiť MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 a Adler32 " 63 | "hashes." 64 | 65 | #: data/ui/application.ui:6 66 | msgid "_New Window" 67 | msgstr "_Nové okno" 68 | 69 | #: data/ui/application.ui:10 70 | msgid "_Compare Hash Functions" 71 | msgstr "_Compare Hash funkcie" 72 | 73 | #: data/ui/application.ui:14 74 | msgid "_Keyboard Shortcuts" 75 | msgstr "_Klávesové skratky" 76 | 77 | #: data/ui/application.ui:18 78 | msgid "_About Collision" 79 | msgstr "_O Collision" 80 | 81 | #: data/ui/application.ui:23 data/ui/application.ui:28 82 | msgid "Choose a File" 83 | msgstr "Vyberte Súbor" 84 | 85 | #: data/ui/application.ui:60 86 | msgid "_Open" 87 | msgstr "Otvoriť" 88 | 89 | #: data/ui/application.ui:61 90 | msgid "Open…" 91 | msgstr "Otvoriť…" 92 | 93 | #: data/ui/application.ui:98 94 | msgid "Menu" 95 | msgstr "Menu" 96 | 97 | #: data/ui/application.ui:119 98 | msgid "_Open a File" 99 | msgstr "_Otvorte súbor" 100 | 101 | #: data/ui/application.ui:139 102 | msgid "Calculating Hashes" 103 | msgstr "Výpočet Hashes" 104 | 105 | #: data/ui/application.ui:140 106 | msgid "This might take a while" 107 | msgstr "To môže trvať chvíľu" 108 | 109 | #: data/ui/application.ui:175 110 | msgid "Hash" 111 | msgstr "Hash" 112 | 113 | #: data/ui/application.ui:191 114 | msgid "Verify" 115 | msgstr "Overiť" 116 | 117 | #: data/ui/application.ui:204 118 | msgid "Checksum" 119 | msgstr "Kontrolný súčet" 120 | 121 | #: data/ui/application.ui:234 122 | msgid "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 or Adler32 Hash" 123 | msgstr "MD5,SHA-1, SHA-256, SHA-512,Blake3,CRC32 alebo Adler32 Hash" 124 | 125 | #: data/ui/application.ui:263 126 | msgid "Insert a MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 Hash" 127 | msgstr "Vložte MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 Hash" 128 | 129 | #: data/ui/application.ui:285 130 | msgid "File" 131 | msgstr "Súbor" 132 | 133 | #: data/ui/application.ui:300 134 | msgid "Select Another File to Check Against" 135 | msgstr "Vyberte ďalší súbor pre kontrolu proti" 136 | 137 | #: data/ui/application.ui:342 138 | msgid "Choose File…" 139 | msgstr "Vyberte súbor…" 140 | 141 | #: data/ui/hash_row.ui:9 142 | msgid "Copy" 143 | msgstr "Kopírovať" 144 | 145 | #: data/ui/shortcuts_window.ui:11 146 | msgid "General" 147 | msgstr "Obecné" 148 | 149 | #: data/ui/shortcuts_window.ui:14 150 | msgid "Open a File" 151 | msgstr "Otvorte súbor" 152 | 153 | #: data/ui/shortcuts_window.ui:20 154 | msgid "Show Keyboard Shortcuts" 155 | msgstr "Zobraziť klávesnica skratky" 156 | 157 | #: data/ui/shortcuts_window.ui:26 158 | msgid "New Window" 159 | msgstr "Nové okno" 160 | 161 | #: data/ui/shortcuts_window.ui:32 162 | msgid "Close Window" 163 | msgstr "Zatvoriť okno" 164 | 165 | #: data/ui/shortcuts_window.ui:38 166 | msgid "Quit" 167 | msgstr "Ukončenie" 168 | 169 | #: nautilus-extension/collision-extension.py:54 170 | msgid "Check Hashes" 171 | msgstr "Skontrolujte Hashes" 172 | 173 | #. Wikipedia article. If available, set it to the LANGUAGE's version, else leave it as is. 174 | #: src/collision.cr:72 175 | msgid "" 176 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 177 | msgstr "" 178 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 179 | 180 | #. Name or Name https://website.example 181 | #: src/collision/actions/about.cr:22 182 | msgid "translator-credits" 183 | msgstr "MartionIIOT" 184 | 185 | #. The variables are numbers 186 | #: src/collision/functions/checksum.cr:79 187 | #, c-format 188 | msgid "%d of %d hashes calculated" 189 | msgstr "%d %d hashes vypočítané" 190 | 191 | #: src/collision/functions/feedback.cr:204 192 | msgid "They Match" 193 | msgstr "Zhodujú sa" 194 | 195 | #: src/collision/functions/feedback.cr:204 196 | msgid "They Don't Match" 197 | msgstr "Sa nezhodujú" 198 | 199 | #~ msgid "md5;sha1;sha256;sha512;hash;" 200 | #~ msgstr "md5;sha1;sha256;sha512;hash;" 201 | 202 | #~ msgid "" 203 | #~ "This tool aims to solve that. Collision comes with a simple & clean " 204 | #~ "UI, allowing anyone, from any age and experience group, to generate, " 205 | #~ "compare and verify MD5, SHA-256, SHA-512 and SHA-1 hashes." 206 | #~ msgstr "" 207 | #~ "Tento nástroj má za cieľ vyriešiť. Collision prichádza s jednoduchým & " 208 | #~ "čistý UI, čo umožňuje každému, z akéhokoľvek veku a skúseností skupiny, " 209 | #~ "vytvárať, porovnať a overiť MD5, SHA-256, SHA-512 a SHA-1 hashes." 210 | 211 | #~ msgid "MD5,SHA-1,SHA-256 or SHA-512 Hash" 212 | #~ msgstr "MD5,SHA-1, SHA-256 alebo SHA-512 Hash" 213 | 214 | #~ msgid "Insert a MD5/SHA-1/SHA-256/SHA-512 Hash" 215 | #~ msgstr "Vložte hash MD5/SHA-1/SHA-256/SHA-512" 216 | -------------------------------------------------------------------------------- /po/vi.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # Kinten Le , 2023, 2024. 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: PACKAGE VERSION\n" 8 | "Report-Msgid-Bugs-To: \n" 9 | "POT-Creation-Date: 2023-12-26 04:15+0200\n" 10 | "PO-Revision-Date: 2024-04-01 01:00+0000\n" 11 | "Last-Translator: Kinten Le \n" 12 | "Language-Team: Vietnamese \n" 14 | "Language: vi\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=1; plural=0;\n" 19 | "X-Generator: Weblate 5.5-dev\n" 20 | 21 | #: data/dev.geopjr.Collision.desktop.in:6 22 | #: data/dev.geopjr.Collision.metainfo.xml.in:4 data/ui/application.ui:34 23 | #: data/ui/application.ui:77 data/ui/application.ui:114 24 | msgid "Collision" 25 | msgstr "Trùng khóa" 26 | 27 | #: data/dev.geopjr.Collision.desktop.in:7 28 | msgid "Hash Generator" 29 | msgstr "Thuật toán băm" 30 | 31 | #: data/dev.geopjr.Collision.desktop.in:8 32 | #: data/dev.geopjr.Collision.metainfo.xml.in:7 data/ui/application.ui:115 33 | msgid "Check hashes for your files" 34 | msgstr "Kiểm băm cho tập tin" 35 | 36 | #: data/dev.geopjr.Collision.desktop.in:12 37 | msgid "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 38 | msgstr "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;băm;" 39 | 40 | #: data/dev.geopjr.Collision.metainfo.xml.in:16 41 | msgid "" 42 | "Verifying that a file you downloaded or received is actually the one you " 43 | "were expecting is often overlooked or too time-consuming to do. At the same " 44 | "time, it has become very easy to get your hands on a file that has been " 45 | "tampered with, due to the mass increase of malicious webpages and other " 46 | "actors." 47 | msgstr "" 48 | "Sau khi tải xong hay nhận được tập tin, người dùng thường bỏ qua khâu kiểm " 49 | "tra xem tập tin có còn nguyên vẹn hay không. Khi cần kiểm, họ phải tốn rất " 50 | "nhiều thì giờ và công sức. Đồng thời, khả năng tải về những tập tin đã bị " 51 | "can thiệp ngày càng cao do số lượng website và hacker ngày một gia tăng." 52 | 53 | #: data/dev.geopjr.Collision.metainfo.xml.in:22 54 | msgid "" 55 | "This tool aims to solve that. Collision comes with a simple & clean UI, " 56 | "allowing anyone, from any age and experience group, to generate, compare and " 57 | "verify MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 and Adler32 hashes." 58 | msgstr "" 59 | "Công cụ này là nhằm giải quyết vấn đề trên. Trùng khóa là một ứng dụng tiện " 60 | "lợi & đẹp mắt, tạo điều kiện cho mọi người từ mọi lứa tuổi và chuyên " 61 | "ngành dễ dàng tạo, so sánh và kiểm tra tập tin thông qua các thuật toán băm " 62 | "như MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 hay Adler32." 63 | 64 | #: data/ui/application.ui:6 65 | msgid "_New Window" 66 | msgstr "Cửa sổ _mới" 67 | 68 | #: data/ui/application.ui:10 69 | msgid "_Compare Hash Functions" 70 | msgstr "_So sánh hàm băm" 71 | 72 | #: data/ui/application.ui:14 73 | msgid "_Keyboard Shortcuts" 74 | msgstr "_Phím tắt" 75 | 76 | #: data/ui/application.ui:18 77 | msgid "_About Collision" 78 | msgstr "_Giới thiệu Trùng khóa" 79 | 80 | #: data/ui/application.ui:23 data/ui/application.ui:28 81 | msgid "Choose a File" 82 | msgstr "Chọn tập tin" 83 | 84 | #: data/ui/application.ui:60 85 | msgid "_Open" 86 | msgstr "_Mở" 87 | 88 | #: data/ui/application.ui:61 89 | msgid "Open…" 90 | msgstr "Mở…" 91 | 92 | #: data/ui/application.ui:98 93 | msgid "Menu" 94 | msgstr "Menu" 95 | 96 | #: data/ui/application.ui:119 97 | msgid "_Open a File" 98 | msgstr "_Mở tập tin" 99 | 100 | #: data/ui/application.ui:139 101 | msgid "Calculating Hashes" 102 | msgstr "Đang tính giá trị băm" 103 | 104 | #: data/ui/application.ui:140 105 | msgid "This might take a while" 106 | msgstr "Có thể mất một lúc" 107 | 108 | #: data/ui/application.ui:175 109 | msgid "Hash" 110 | msgstr "Băm" 111 | 112 | #: data/ui/application.ui:191 113 | msgid "Verify" 114 | msgstr "Kiểm" 115 | 116 | #: data/ui/application.ui:204 117 | msgid "Checksum" 118 | msgstr "Băm tổng kiểm" 119 | 120 | #: data/ui/application.ui:234 121 | msgid "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 or Adler32 Hash" 122 | msgstr "Băm loại MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 hay Adler32" 123 | 124 | #: data/ui/application.ui:263 125 | msgid "Insert a MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 Hash" 126 | msgstr "Điền băm loại MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32" 127 | 128 | #: data/ui/application.ui:285 129 | msgid "File" 130 | msgstr "Tập tin" 131 | 132 | #: data/ui/application.ui:300 133 | msgid "Select Another File to Check Against" 134 | msgstr "Chọn một tập tin khác để đối chiếu" 135 | 136 | #: data/ui/application.ui:342 137 | msgid "Choose File…" 138 | msgstr "Chọn tập tin…" 139 | 140 | #: data/ui/hash_row.ui:9 141 | msgid "Copy" 142 | msgstr "Sao chép" 143 | 144 | #: data/ui/shortcuts_window.ui:11 145 | msgid "General" 146 | msgstr "Chung" 147 | 148 | #: data/ui/shortcuts_window.ui:14 149 | msgid "Open a File" 150 | msgstr "Mở tập tin" 151 | 152 | #: data/ui/shortcuts_window.ui:20 153 | msgid "Show Keyboard Shortcuts" 154 | msgstr "Xem phím tắt" 155 | 156 | #: data/ui/shortcuts_window.ui:26 157 | msgid "New Window" 158 | msgstr "Cửa sổ mới" 159 | 160 | #: data/ui/shortcuts_window.ui:32 161 | msgid "Close Window" 162 | msgstr "Đóng cửa sổ" 163 | 164 | #: data/ui/shortcuts_window.ui:38 165 | msgid "Quit" 166 | msgstr "Thoát" 167 | 168 | #: nautilus-extension/collision-extension.py:54 169 | msgid "Check Hashes" 170 | msgstr "Kiểm băm" 171 | 172 | #. Wikipedia article. If available, set it to the LANGUAGE's version, else leave it as is. 173 | #: src/collision.cr:72 174 | msgid "" 175 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 176 | msgstr "" 177 | 178 | #. Name or Name https://website.example 179 | #: src/collision/actions/about.cr:22 180 | msgid "translator-credits" 181 | msgstr "Kinten Le " 182 | 183 | #. The variables are numbers 184 | #: src/collision/functions/checksum.cr:79 185 | #, c-format 186 | msgid "%d of %d hashes calculated" 187 | msgstr "Tính xong %d băm trong tổng số %d" 188 | 189 | #: src/collision/functions/feedback.cr:204 190 | msgid "They Match" 191 | msgstr "" 192 | 193 | #: src/collision/functions/feedback.cr:204 194 | msgid "They Don't Match" 195 | msgstr "" 196 | -------------------------------------------------------------------------------- /po/zh_CN.po: -------------------------------------------------------------------------------- 1 | # Simplified Chinese translations for dev.geopjr.Collision package. 2 | # Copyright (C) 2022 dev.geopjr.Collision'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the dev.geopjr.Collision package. 4 | # lumingzh , 2022, 2023, 2024. 5 | # Himmel , 2024. 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: dev.geopjr.Collision\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2023-12-26 04:15+0200\n" 11 | "PO-Revision-Date: 2024-08-02 12:09+0000\n" 12 | "Last-Translator: lumingzh \n" 13 | "Language-Team: Chinese (Simplified) \n" 15 | "Language: zh_CN\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=1; plural=0;\n" 20 | "X-Generator: Weblate 5.7-dev\n" 21 | 22 | #: data/dev.geopjr.Collision.desktop.in:6 23 | #: data/dev.geopjr.Collision.metainfo.xml.in:4 data/ui/application.ui:34 24 | #: data/ui/application.ui:77 data/ui/application.ui:114 25 | msgid "Collision" 26 | msgstr "Collision" 27 | 28 | #: data/dev.geopjr.Collision.desktop.in:7 29 | msgid "Hash Generator" 30 | msgstr "哈希值生成器" 31 | 32 | #: data/dev.geopjr.Collision.desktop.in:8 33 | #: data/dev.geopjr.Collision.metainfo.xml.in:7 data/ui/application.ui:115 34 | msgid "Check hashes for your files" 35 | msgstr "检查您文件的哈希值" 36 | 37 | #: data/dev.geopjr.Collision.desktop.in:12 38 | msgid "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 39 | msgstr "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 40 | 41 | #: data/dev.geopjr.Collision.metainfo.xml.in:16 42 | msgid "" 43 | "Verifying that a file you downloaded or received is actually the one you " 44 | "were expecting is often overlooked or too time-consuming to do. At the same " 45 | "time, it has become very easy to get your hands on a file that has been " 46 | "tampered with, due to the mass increase of malicious webpages and other " 47 | "actors." 48 | msgstr "" 49 | "校验您下载或接收的文件以确定与您的预期相符经常是被忽略或太耗费时间的事情。与" 50 | "此同时,由于大量增加的恶意网页和其它攻击者,让您经手被篡改文件已经变得非常容" 51 | "易。" 52 | 53 | #: data/dev.geopjr.Collision.metainfo.xml.in:22 54 | msgid "" 55 | "This tool aims to solve that. Collision comes with a simple & clean UI, " 56 | "allowing anyone, from any age and experience group, to generate, compare and " 57 | "verify MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 and Adler32 hashes." 58 | msgstr "" 59 | "这款工具旨在解决这一问题。Collision " 60 | "的用户界面简洁明了,允许任何年龄和经验的人生成、比较和验证 " 61 | "MD5、SHA-256、SHA-512、SHA-1、Blake3、CRC32 和 Adler32 哈希值。" 62 | 63 | #: data/ui/application.ui:6 64 | msgid "_New Window" 65 | msgstr "新建窗口(_N)" 66 | 67 | #: data/ui/application.ui:10 68 | msgid "_Compare Hash Functions" 69 | msgstr "对比哈希函数(_C)" 70 | 71 | #: data/ui/application.ui:14 72 | msgid "_Keyboard Shortcuts" 73 | msgstr "键盘快捷键(_K)" 74 | 75 | #: data/ui/application.ui:18 76 | msgid "_About Collision" 77 | msgstr "关于 Collision(_A)" 78 | 79 | #: data/ui/application.ui:23 data/ui/application.ui:28 80 | msgid "Choose a File" 81 | msgstr "选择文件" 82 | 83 | #: data/ui/application.ui:60 84 | msgid "_Open" 85 | msgstr "打开(_O)" 86 | 87 | #: data/ui/application.ui:61 88 | msgid "Open…" 89 | msgstr "打开…" 90 | 91 | #: data/ui/application.ui:98 92 | msgid "Menu" 93 | msgstr "菜单" 94 | 95 | #: data/ui/application.ui:119 96 | msgid "_Open a File" 97 | msgstr "打开文件(_O)" 98 | 99 | #: data/ui/application.ui:139 100 | msgid "Calculating Hashes" 101 | msgstr "计算哈希值" 102 | 103 | #: data/ui/application.ui:140 104 | msgid "This might take a while" 105 | msgstr "这可能需要一段时间" 106 | 107 | #: data/ui/application.ui:175 108 | msgid "Hash" 109 | msgstr "哈希" 110 | 111 | #: data/ui/application.ui:191 112 | msgid "Verify" 113 | msgstr "校验" 114 | 115 | #: data/ui/application.ui:204 116 | msgid "Checksum" 117 | msgstr "校验和" 118 | 119 | #: data/ui/application.ui:234 120 | msgid "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 or Adler32 Hash" 121 | msgstr "MD5、SHA-1、SHA-256、SHA-512、Blake3、CRC32 或 Adler32 哈希值" 122 | 123 | #: data/ui/application.ui:263 124 | msgid "Insert a MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 Hash" 125 | msgstr "插入 MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 哈希值" 126 | 127 | #: data/ui/application.ui:285 128 | msgid "File" 129 | msgstr "文件" 130 | 131 | #: data/ui/application.ui:300 132 | msgid "Select Another File to Check Against" 133 | msgstr "选择另一个文件来对照检查" 134 | 135 | #: data/ui/application.ui:342 136 | msgid "Choose File…" 137 | msgstr "选择文件…" 138 | 139 | #: data/ui/hash_row.ui:9 140 | msgid "Copy" 141 | msgstr "复制" 142 | 143 | #: data/ui/shortcuts_window.ui:11 144 | msgid "General" 145 | msgstr "常规" 146 | 147 | #: data/ui/shortcuts_window.ui:14 148 | msgid "Open a File" 149 | msgstr "打开文件" 150 | 151 | #: data/ui/shortcuts_window.ui:20 152 | msgid "Show Keyboard Shortcuts" 153 | msgstr "显示键盘快捷键" 154 | 155 | #: data/ui/shortcuts_window.ui:26 156 | msgid "New Window" 157 | msgstr "新建窗口" 158 | 159 | #: data/ui/shortcuts_window.ui:32 160 | msgid "Close Window" 161 | msgstr "关闭窗口" 162 | 163 | #: data/ui/shortcuts_window.ui:38 164 | msgid "Quit" 165 | msgstr "退出" 166 | 167 | #: nautilus-extension/collision-extension.py:54 168 | msgid "Check Hashes" 169 | msgstr "检查哈希" 170 | 171 | #. Wikipedia article. If available, set it to the LANGUAGE's version, else leave it as is. 172 | #: src/collision.cr:72 173 | msgid "" 174 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 175 | msgstr "" 176 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 177 | 178 | #. Name or Name https://website.example 179 | #: src/collision/actions/about.cr:22 180 | msgid "translator-credits" 181 | msgstr "lumingzh " 182 | 183 | #. The variables are numbers 184 | #: src/collision/functions/checksum.cr:79 185 | #, c-format 186 | msgid "%d of %d hashes calculated" 187 | msgstr "计算了 %2$d 个哈希值中的 %1$d 个" 188 | 189 | #: src/collision/functions/feedback.cr:204 190 | msgid "They Match" 191 | msgstr "匹配" 192 | 193 | #: src/collision/functions/feedback.cr:204 194 | msgid "They Don't Match" 195 | msgstr "不匹配" 196 | 197 | #~ msgid "md5;sha1;sha256;sha512;hash;" 198 | #~ msgstr "md5;sha1;sha256;sha512;hash;哈希;校验;" 199 | 200 | #~ msgid "" 201 | #~ "This tool aims to solve that. Collision comes with a simple & clean " 202 | #~ "UI, allowing anyone, from any age and experience group, to generate, " 203 | #~ "compare and verify MD5, SHA-256, SHA-512 and SHA-1 hashes." 204 | #~ msgstr "" 205 | #~ "Collision 具有简单且干净的用户界面,允许任何年龄和经验的任何人用来生成、对" 206 | #~ "比和校验 MD5、SHA-256、SHA-512 和 SHA-1 哈希值。" 207 | 208 | #~ msgid "MD5,SHA-1,SHA-256 or SHA-512 Hash" 209 | #~ msgstr "MD5、SHA-1、SHA-256 或 SHA-512 哈希" 210 | 211 | #~ msgid "Insert a MD5/SHA-1/SHA-256/SHA-512 Hash" 212 | #~ msgstr "插入 MD5/SHA-1/SHA-256/SHA-512 哈希值" 213 | -------------------------------------------------------------------------------- /po/zh_Hant.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # reimu105 , 2025. 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: PACKAGE VERSION\n" 8 | "Report-Msgid-Bugs-To: \n" 9 | "POT-Creation-Date: 2023-12-26 04:15+0200\n" 10 | "PO-Revision-Date: 2025-01-29 04:01+0000\n" 11 | "Last-Translator: reimu105 \n" 12 | "Language-Team: Chinese (Traditional Han script) \n" 14 | "Language: zh_Hant\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=1; plural=0;\n" 19 | "X-Generator: Weblate 5.10-dev\n" 20 | 21 | #: data/dev.geopjr.Collision.desktop.in:6 22 | #: data/dev.geopjr.Collision.metainfo.xml.in:4 data/ui/application.ui:34 23 | #: data/ui/application.ui:77 data/ui/application.ui:114 24 | msgid "Collision" 25 | msgstr "Collision" 26 | 27 | #: data/dev.geopjr.Collision.desktop.in:7 28 | msgid "Hash Generator" 29 | msgstr "雜湊值產生器" 30 | 31 | #: data/dev.geopjr.Collision.desktop.in:8 32 | #: data/dev.geopjr.Collision.metainfo.xml.in:7 data/ui/application.ui:115 33 | msgid "Check hashes for your files" 34 | msgstr "檢查您檔案的雜湊值" 35 | 36 | #: data/dev.geopjr.Collision.desktop.in:12 37 | msgid "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 38 | msgstr "md5;sha1;sha256;sha512;blake3;crc32;adler32;hash;" 39 | 40 | #: data/dev.geopjr.Collision.metainfo.xml.in:16 41 | msgid "" 42 | "Verifying that a file you downloaded or received is actually the one you " 43 | "were expecting is often overlooked or too time-consuming to do. At the same " 44 | "time, it has become very easy to get your hands on a file that has been " 45 | "tampered with, due to the mass increase of malicious webpages and other " 46 | "actors." 47 | msgstr "驗證你下載或接收的文件是否確實是您所期望的文件經常被忽視或太耗時。同時,由於" 48 | "惡意網頁和其他行為者的大量增加,取得被篡改的文件也變得非常容易。" 49 | 50 | #: data/dev.geopjr.Collision.metainfo.xml.in:22 51 | msgid "" 52 | "This tool aims to solve that. Collision comes with a simple & clean UI, " 53 | "allowing anyone, from any age and experience group, to generate, compare and " 54 | "verify MD5, SHA-256, SHA-512, SHA-1, Blake3, CRC32 and Adler32 hashes." 55 | msgstr "" 56 | "這款工具旨在解決這一問題。 Collision " 57 | "的使用者介面簡潔明了,讓任何年齡和經驗的人可以產生、比較和驗證 " 58 | "MD5、SHA-256、SHA-512、SHA-1、Blake3、CRC32 和 Adler32 雜湊值。" 59 | 60 | #: data/ui/application.ui:6 61 | msgid "_New Window" 62 | msgstr "_新視窗" 63 | 64 | #: data/ui/application.ui:10 65 | msgid "_Compare Hash Functions" 66 | msgstr "_比較雜湊功能" 67 | 68 | #: data/ui/application.ui:14 69 | msgid "_Keyboard Shortcuts" 70 | msgstr "_鍵盤快捷鍵" 71 | 72 | #: data/ui/application.ui:18 73 | msgid "_About Collision" 74 | msgstr "_關於Collision" 75 | 76 | #: data/ui/application.ui:23 data/ui/application.ui:28 77 | msgid "Choose a File" 78 | msgstr "選擇一個檔案" 79 | 80 | #: data/ui/application.ui:60 81 | msgid "_Open" 82 | msgstr "_打開" 83 | 84 | #: data/ui/application.ui:61 85 | msgid "Open…" 86 | msgstr "打開…" 87 | 88 | #: data/ui/application.ui:98 89 | msgid "Menu" 90 | msgstr "選單" 91 | 92 | #: data/ui/application.ui:119 93 | msgid "_Open a File" 94 | msgstr "_打開檔案" 95 | 96 | #: data/ui/application.ui:139 97 | msgid "Calculating Hashes" 98 | msgstr "計算雜湊值" 99 | 100 | #: data/ui/application.ui:140 101 | msgid "This might take a while" 102 | msgstr "這可能需要一段時間" 103 | 104 | #: data/ui/application.ui:175 105 | msgid "Hash" 106 | msgstr "雜湊值" 107 | 108 | #: data/ui/application.ui:191 109 | msgid "Verify" 110 | msgstr "校驗" 111 | 112 | #: data/ui/application.ui:204 113 | msgid "Checksum" 114 | msgstr "校驗和" 115 | 116 | #: data/ui/application.ui:234 117 | msgid "MD5,SHA-1,SHA-256,SHA-512,Blake3,CRC32 or Adler32 Hash" 118 | msgstr "MD5、SHA-1、SHA-256、SHA-512、Blake3、CRC32 或 Adler32 雜湊值" 119 | 120 | #: data/ui/application.ui:263 121 | msgid "Insert a MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 Hash" 122 | msgstr "插入 MD5/SHA-1/SHA-256/SHA-512/Blake3/CRC32/Adler32 雜湊值" 123 | 124 | #: data/ui/application.ui:285 125 | msgid "File" 126 | msgstr "檔案" 127 | 128 | #: data/ui/application.ui:300 129 | msgid "Select Another File to Check Against" 130 | msgstr "選擇另一個檔案來對照檢查" 131 | 132 | #: data/ui/application.ui:342 133 | msgid "Choose File…" 134 | msgstr "選擇檔案…" 135 | 136 | #: data/ui/hash_row.ui:9 137 | msgid "Copy" 138 | msgstr "複製" 139 | 140 | #: data/ui/shortcuts_window.ui:11 141 | msgid "General" 142 | msgstr "一般的" 143 | 144 | #: data/ui/shortcuts_window.ui:14 145 | msgid "Open a File" 146 | msgstr "打開檔案" 147 | 148 | #: data/ui/shortcuts_window.ui:20 149 | msgid "Show Keyboard Shortcuts" 150 | msgstr "顯示鍵盤快捷鍵" 151 | 152 | #: data/ui/shortcuts_window.ui:26 153 | msgid "New Window" 154 | msgstr "新視窗" 155 | 156 | #: data/ui/shortcuts_window.ui:32 157 | msgid "Close Window" 158 | msgstr "關閉視窗" 159 | 160 | #: data/ui/shortcuts_window.ui:38 161 | msgid "Quit" 162 | msgstr "退出" 163 | 164 | #: nautilus-extension/collision-extension.py:54 165 | msgid "Check Hashes" 166 | msgstr "檢查雜湊值" 167 | 168 | #. Wikipedia article. If available, set it to the LANGUAGE's version, else leave it as is. 169 | #: src/collision.cr:72 170 | msgid "" 171 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 172 | msgstr "" 173 | "https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions" 174 | 175 | #. Name or Name https://website.example 176 | #: src/collision/actions/about.cr:22 177 | msgid "translator-credits" 178 | msgstr "reimu105" 179 | 180 | #. The variables are numbers 181 | #: src/collision/functions/checksum.cr:79 182 | #, c-format 183 | msgid "%d of %d hashes calculated" 184 | msgstr "已計算 %d 個雜湊值(共 %d 個)" 185 | 186 | #: src/collision/functions/feedback.cr:204 187 | msgid "They Match" 188 | msgstr "匹配" 189 | 190 | #: src/collision/functions/feedback.cr:204 191 | msgid "They Don't Match" 192 | msgstr "不匹配" 193 | -------------------------------------------------------------------------------- /shard.lock: -------------------------------------------------------------------------------- 1 | version: 2.0 2 | shards: 3 | blake3: 4 | git: https://github.com/geopjr/blake3.cr.git 5 | version: 1.4.0 6 | 7 | gettext: 8 | git: https://github.com/geopjr/gettext.cr.git 9 | version: 1.0.0 10 | 11 | gi-crystal: 12 | git: https://github.com/hugopl/gi-crystal.git 13 | version: 0.25.0 14 | 15 | gtk4: 16 | git: https://github.com/hugopl/gtk4.cr.git 17 | version: 0.17.0 18 | 19 | harfbuzz: 20 | git: https://github.com/hugopl/harfbuzz.cr.git 21 | version: 0.2.0 22 | 23 | libadwaita: 24 | git: https://github.com/hugopl/libadwaita.cr.git 25 | version: 0.1.0 26 | 27 | non-blocking-spawn: 28 | git: https://github.com/geopjr/non-blocking-spawn.git 29 | version: 1.1.0 30 | 31 | pango: 32 | git: https://github.com/hugopl/pango.cr.git 33 | version: 0.3.1 34 | 35 | -------------------------------------------------------------------------------- /shard.yml: -------------------------------------------------------------------------------- 1 | name: collision 2 | version: 3.10.0 3 | 4 | authors: 5 | - GeopJr 6 | 7 | targets: 8 | collision: 9 | main: src/collision.cr 10 | 11 | dependencies: 12 | libadwaita: 13 | github: hugopl/libadwaita.cr 14 | version: ~> 0.1.0 15 | non-blocking-spawn: 16 | github: GeopJr/non-blocking-spawn 17 | version: ~> 1.1.0 18 | gettext: 19 | github: GeopJr/gettext.cr 20 | version: ~> 1.0.0 21 | blake3: 22 | github: GeopJr/blake3.cr 23 | version: ~> 1.4.0 24 | 25 | crystal: 1.15.1 26 | 27 | license: BSD-2-Clause 28 | -------------------------------------------------------------------------------- /spec/compare_spec.cr: -------------------------------------------------------------------------------- 1 | require "./spec_helper" 2 | require "../src/collision/functions/file_utils.cr" 3 | 4 | describe Collision::FileUtils do 5 | it "returns whether the file contains one of the hashes" do 6 | Collision::FileUtils.compare_content(Path[__DIR__] / "test_content.txt", Collision::CLIPBOARD_HASH.values).should be_true 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /spec/feedback_spec.cr: -------------------------------------------------------------------------------- 1 | require "./spec_helper" 2 | require "../src/collision/functions/feedback.cr" 3 | 4 | describe Collision::Feedback do 5 | it "returns the correct symbolic icon for feedback based on whether or not the task was successful" do 6 | icons = [Collision::Feedback.icon(true), Collision::Feedback.icon] 7 | 8 | icons.should eq(["test-pass-symbolic", "cross-large-symbolic"]) 9 | end 10 | 11 | it "returns the correct class to add and remove for feedback based on whether or not the task was successful" do 12 | icons = [Collision::Feedback.class(true), Collision::Feedback.class] 13 | 14 | icons.should eq([{add: "success", remove: "error"}, {add: "error", remove: "success"}]) 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /spec/hash_generator_spec.cr: -------------------------------------------------------------------------------- 1 | require "./spec_helper" 2 | require "../src/collision/functions/checksum.cr" 3 | 4 | describe Collision::Checksum do 5 | it "gets hashes from file" do 6 | path = Path["./spec/test.txt"].expand(home: true) 7 | hashes = Hash(Symbol, String).new 8 | channel = Channel(Hash(String, String)).new 9 | 10 | Collision::CLIPBOARD_HASH.keys.each do |x| 11 | hashes[x] = "" 12 | Collision.spawn do 13 | hashes[x] = Collision::Checksum.new.calculate(x, path.to_s) 14 | end 15 | end 16 | 17 | safe_stop = Time.utc.to_unix_ms 18 | loop do 19 | break if Collision::CLIPBOARD_HASH.keys.size == hashes.reject { |k, v| v == "" }.keys.size || Time.utc.to_unix_ms - safe_stop > Collision::CLIPBOARD_HASH.size * 5000 20 | end 21 | 22 | Collision::CLIPBOARD_HASH.each do |k, v| 23 | {k, hashes[k]}.should eq({k, v}) 24 | end 25 | end 26 | 27 | it "splits strings by 4" do 28 | input_by_4 = "Wait ingf orso meth ingt ohap pen?" 29 | Collision.split_by_4(input_by_4.split(' ').join).should eq(input_by_4) 30 | end 31 | end 32 | -------------------------------------------------------------------------------- /spec/spec_helper.cr: -------------------------------------------------------------------------------- 1 | require "spec" 2 | require "libadwaita" 3 | require "gettext" 4 | require "log" 5 | 6 | module Collision 7 | LOGGER = Log.for("Collision", Log::Severity::None) 8 | HASH_FUNCTIONS = { 9 | md5: "MD5", 10 | sha1: "SHA1", 11 | sha256: "SHA256", 12 | sha512: "SHA512", 13 | blake3: "Blake3", 14 | crc32: "CRC32", 15 | adler32: "Adler32", 16 | } 17 | CLIPBOARD_HASH = { 18 | :md5 => "f7e3f382f0382147661c82af20e274e8", 19 | :sha1 => "c8f0b71214e8164aa69419b7ac0bcd8a74f529a6", 20 | :sha256 => "08e3dfc089e66c44ae8abd3476b0f810f11f4cfc2ab925f1607c7df21345d639", 21 | :sha512 => "2ddb9cca7753a01fcbcdbacc228ae8c314ff4e735c6fffb42286272fb460930dc74f122a9f365053a13016b22403ad4e192142e8668bc5f7d6fce865eb38ec2c", 22 | :blake3 => "8a69892f0946333dbf909ecb68866d2f7116b7ba18ee7f2421afd705f9383cfc", 23 | :crc32 => "592339ec", 24 | :adler32 => "1ba80397", 25 | } 26 | end 27 | -------------------------------------------------------------------------------- /spec/test.txt: -------------------------------------------------------------------------------- 1 | DO NOT MODIFY 2 | -------------------------------------------------------------------------------- /spec/test_content.txt: -------------------------------------------------------------------------------- 1 | 08e3dfc089e66c44ae8abd3476b0f810f11f4cfc2ab925f1607c7df21345d639 ./test.txt -------------------------------------------------------------------------------- /src/collision.cr: -------------------------------------------------------------------------------- 1 | require "./license.cr" 2 | require "libadwaita" 3 | require "gettext" 4 | require "log" 5 | require "non-blocking-spawn" 6 | 7 | if Non::Blocking.threads.size == 0 8 | STDERR.puts "App is running in single-threaded mode. Exiting." 9 | exit(1) 10 | end 11 | 12 | module Collision 13 | # Enable debug logs if debug build or --debug is passed. 14 | # Also save a copy in memory for the About window troubleshooting 15 | # section. 16 | TROUBLESHOOTING = IO::Memory.new 17 | 18 | # Some basic info 19 | TROUBLESHOOTING << <<-DEBUG 20 | flatpak: #{{{!env("FLATPAK_ID").nil? || file_exists?("/.flatpak-info")}}} 21 | release: #{{{flag?(:release)}}} 22 | debug: #{{{flag?(:debug)}}} 23 | version: #{VERSION} 24 | crystal: #{Crystal::VERSION} 25 | gtk: #{Gtk.major_version}.#{Gtk.minor_version}.#{Gtk.micro_version} (#{Gtk::MAJOR_VERSION}.#{Gtk::MINOR_VERSION}.#{Gtk::MICRO_VERSION}) 26 | libadwaita: #{Adw.major_version}.#{Adw.minor_version}.#{Adw.micro_version} (#{Adw::MAJOR_VERSION}.#{Adw::MINOR_VERSION}.#{Adw::MICRO_VERSION}) 27 | DEBUG 28 | 29 | if {{ flag?(:debug) || !flag?(:release) }} || ARGV[0]? == "--debug" 30 | TROUBLESHOOTING << "\n\n" 31 | 32 | Log.setup do |c| 33 | backend = Log::IOBackend.new 34 | 35 | c.bind "Collision", :debug, backend 36 | c.bind "Collision", :debug, Log::IOBackend.new(TROUBLESHOOTING) 37 | c.bind "Collision", :warn, backend 38 | end 39 | end 40 | 41 | LOGGER = Log.for("Collision", ({{ flag?(:debug) || !flag?(:release) }} || ARGV[0]? == "--debug") ? Log::Severity::Debug : Log::Severity::Warn) 42 | 43 | # We want to __not__ load settings on dev/debug mode or when -Ddisable_gschema is passed or when 44 | # -Denable_gschema is __not__ passed. 45 | # -Denable_gschema is used for when you are in dev/debug mode and want to enable it. 46 | # -Ddisable_gschema is used for when you are in prod mode and want to disable it (for package maintainers). 47 | SETTINGS = {% if (flag?(:debug) || !flag?(:release) || flag?(:disable_gschema)) && !flag?(:enable_gschema) %} 48 | nil 49 | {% else %} 50 | Gio::Settings.new("dev.geopjr.Collision") 51 | {% end %} 52 | 53 | begin 54 | Gettext.setlocale(Gettext::LC::ALL, "") 55 | Gettext.bindtextdomain("dev.geopjr.Collision", {{env("COLLISION_LOCALE_LOCATION").nil? ? "/usr/share/locale" : env("COLLISION_LOCALE_LOCATION")}}) 56 | Gettext.textdomain("dev.geopjr.Collision") 57 | rescue ex 58 | LOGGER.debug { ex } 59 | end 60 | 61 | HASH_FUNCTIONS = { 62 | md5: "MD5", 63 | sha1: "SHA1", 64 | sha256: "SHA256", 65 | sha512: "SHA512", 66 | blake3: "Blake3", 67 | crc32: "CRC32", 68 | adler32: "Adler32", 69 | } 70 | VERSION = {{read_file("#{__DIR__}/../shard.yml").split("version: ")[1].split("\n")[0]}} # Shards binary might not be in PATH, reading yml is safer 71 | 72 | ARTICLE = Gettext.gettext("https://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions") 73 | 74 | Gio.register_resource("data/dev.geopjr.Collision.gresource.xml", "data") 75 | end 76 | 77 | require "./collision/*" 78 | 79 | # Creates and setups a window. If a file is passed it will attempt to open it. 80 | def activate_with_file(app : Adw::Application, file : Gio::File? = nil) 81 | window = Collision::Window.new 82 | window.application = app 83 | 84 | # Save settings on close 85 | window.close_request_signal.connect(->Collision::Settings.save(Gtk::Window)) 86 | # Load settings 87 | window_settings = Collision.settings 88 | window.set_default_size(window_settings[:window_width], window_settings[:window_height]) 89 | window.maximize if window_settings[:window_maximized] 90 | 91 | # Devel styling 92 | {% if flag?(:debug) || !flag?(:release) %} 93 | window.add_css_class("devel") 94 | {% end %} 95 | 96 | window.present 97 | 98 | # Setup actions 99 | Collision::Action::HashInfo.new(app) 100 | Collision::Action::About.new(app) 101 | Collision::Action::NewWindow.new(app) 102 | Collision::Action::Quit.new(app) 103 | Collision::Action::OpenFile.new(app).cb = ->window.on_open_btn_clicked 104 | app.set_accels_for_action("window.close", {"W"}) 105 | 106 | Collision::LOGGER.debug { "Window activated" } 107 | Collision::LOGGER.debug { "Settings: #{window_settings}" } 108 | 109 | unless file.nil? 110 | Collision::LOGGER.debug { "Activating with file" } 111 | 112 | window.loading 113 | window.file = file 114 | end 115 | end 116 | 117 | # Wrapper around activate_with_file 118 | # but without a file 119 | def activate(app : Adw::Application) 120 | activate_with_file(app) 121 | end 122 | 123 | # Handles the open signal. 124 | # If there are no files passed, it calls activate, 125 | # else it calls activate_with_file for each file 126 | def open_with(app : Adw::Application, files : Enumerable(Gio::File), hint : String) 127 | if files.empty? 128 | activate(app) 129 | else 130 | open_files(app, files) 131 | end 132 | 133 | nil 134 | end 135 | 136 | def open_files(app : Adw::Application, files : Enumerable(Gio::File)) 137 | files.each do |file| 138 | next unless !(file_path = file.path).nil? && Collision::FileUtils.file?(file_path) 139 | activate_with_file(app, file) 140 | end 141 | end 142 | 143 | app = Adw::Application.new("dev.geopjr.Collision", Gio::ApplicationFlags::HandlesOpen) 144 | 145 | app.activate_signal.connect(->activate(Adw::Application)) 146 | app.open_signal.connect(->open_with(Adw::Application, Enumerable(Gio::File), String)) 147 | 148 | # ARGV but without flags, passed to Application. 149 | clean_argv = [PROGRAM_NAME].concat(ARGV.reject { |x| x.starts_with?('-') }) 150 | exit(app.run(clean_argv)) 151 | -------------------------------------------------------------------------------- /src/collision/actions.cr: -------------------------------------------------------------------------------- 1 | abstract class Collision::Action 2 | def initialize(app : Adw::Application, name : String, accels : Enumerable(String)? = nil) 3 | action = Gio::SimpleAction.new(name, nil) 4 | action.activate_signal.connect do 5 | on_activate 6 | end 7 | 8 | unless accels.nil? || accels.size == 0 9 | app.set_accels_for_action("app.#{name}", accels) 10 | end 11 | 12 | app.add_action(action) 13 | end 14 | 15 | abstract def initialize(app : Adw::Application) 16 | abstract def on_activate 17 | end 18 | 19 | require "./actions/*" 20 | -------------------------------------------------------------------------------- /src/collision/actions/about.cr: -------------------------------------------------------------------------------- 1 | class Collision::Action::About < Collision::Action 2 | @app : Adw::Application 3 | 4 | def initialize(app : Adw::Application) 5 | @app = app 6 | super(app, "about", {"F1"}) 7 | end 8 | 9 | def on_activate 10 | dialog = Adw::AboutDialog.new( 11 | application_name: Gettext.gettext("Collision"), 12 | application_icon: "dev.geopjr.Collision", 13 | version: VERSION, 14 | copyright: "© 2021 Evangelos Paterakis", 15 | website: "https://collision.geopjr.dev", 16 | issue_url: "https://github.com/GeopJr/Collision/issues", 17 | developer_name: "Evangelos \"GeopJr\" Paterakis", 18 | artists: {"Tobias Bernard"}, 19 | designers: {"Tobias Bernard"}, 20 | translator_credits: Gettext.gettext("translator-credits"), 21 | license_type: Gtk::License::Bsd, 22 | debug_info: TROUBLESHOOTING.to_s.gsub(/File set: .+\n/, "File set: REDACTED\n"), # Attempt to redact file paths. 23 | debug_info_filename: "Collision-#{Time.utc.to_unix_ms}.txt" 24 | ) 25 | dialog.add_other_app("dev.geopjr.Archives", Gettext.gettext("Archives"), Gettext.gettext("Create and view web archives")) 26 | dialog.add_other_app("dev.geopjr.Calligraphy", Gettext.gettext("Calligraphy"), Gettext.gettext("Turn text into ASCII banners")) 27 | dialog.add_other_app("dev.geopjr.Tuba", Gettext.gettext("Tuba"), Gettext.gettext("Browse the Fediverse")) 28 | 29 | dialog.present(@app.active_window) 30 | end 31 | end 32 | -------------------------------------------------------------------------------- /src/collision/actions/hashinfo.cr: -------------------------------------------------------------------------------- 1 | class Collision::Action::HashInfo < Collision::Action 2 | def initialize(app : Adw::Application) 3 | super(app, "hashinfo") 4 | end 5 | 6 | def on_activate 7 | begin 8 | Gio.app_info_launch_default_for_uri(ARTICLE, nil) 9 | rescue ex 10 | LOGGER.debug { ex } 11 | end 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /src/collision/actions/new_window.cr: -------------------------------------------------------------------------------- 1 | class Collision::Action::NewWindow < Collision::Action 2 | @app : Adw::Application 3 | 4 | def initialize(app : Adw::Application) 5 | @app = app 6 | super(app, "new-window", {"N"}) 7 | end 8 | 9 | def on_activate 10 | @app.activate 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /src/collision/actions/open_file.cr: -------------------------------------------------------------------------------- 1 | class Collision::Action::OpenFile < Collision::Action 2 | setter cb : Proc(Nil)? 3 | 4 | def initialize(app : Adw::Application) 5 | super(app, "open-file", {"O"}) 6 | end 7 | 8 | def on_activate 9 | @cb.try &.call 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /src/collision/actions/quit.cr: -------------------------------------------------------------------------------- 1 | class Collision::Action::Quit < Collision::Action 2 | @app : Adw::Application 3 | 4 | def initialize(app : Adw::Application) 5 | @app = app 6 | super(app, "quit", {"Q"}) 7 | end 8 | 9 | def on_activate 10 | @app.quit 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /src/collision/functions/checksum.cr: -------------------------------------------------------------------------------- 1 | require "non-blocking-spawn" 2 | require "digest/md5" 3 | require "digest/sha1" 4 | require "digest/sha256" 5 | require "digest/sha512" 6 | require "digest/crc32" 7 | require "digest/adler32" 8 | require "blake3" 9 | 10 | macro gen_digest 11 | { 12 | {% for title, digest in Collision::HASH_FUNCTIONS %} 13 | :{{title}} => Digest::{{digest.id}}.new, 14 | {% end %} 15 | } 16 | end 17 | 18 | module Collision 19 | def self.split_by_4(hash_str : String) 20 | i = 0 21 | input = hash_str.byte_slice?(i * 4, 4) 22 | String.build do |str| 23 | loop do 24 | str << input 25 | i = i + 1 26 | input = hash_str.byte_slice?(i * 4, 4) 27 | break if input.nil? || input.empty? 28 | str << ' ' 29 | end 30 | end 31 | end 32 | 33 | def self.spawn(&block) 34 | Non::Blocking.spawn(same_thread: false, &block) 35 | end 36 | 37 | class Checksum 38 | @digest = gen_digest 39 | @channel = Channel(Tuple(Symbol, String)).new 40 | 41 | def initialize 42 | end 43 | 44 | def calculate(type : Symbol, filename : String) : String 45 | hash = @digest[type] 46 | hash.reset 47 | hash.file(filename).hexfinal.downcase 48 | end 49 | 50 | def on_finished(res : Hash(Symbol, String), &block) 51 | yield res 52 | end 53 | 54 | def generate(filename : String, progressbar : Gtk::ProgressBar? = nil, &block : Hash(Symbol, String) ->) 55 | hash_amount = Collision::HASH_FUNCTIONS.size 56 | progressbar.fraction = 0.0 57 | progressbar.text = sprintf(Gettext.gettext("%d of %d hashes calculated"), {0, hash_amount}) 58 | 59 | Collision::HASH_FUNCTIONS.each_with_index do |hash_key, hash_value, i| 60 | proc = ->(fiber_no : Int32) do 61 | Collision.spawn do 62 | LOGGER.debug { "Spawned fiber #{hash_value}" } 63 | 64 | hash_value = calculate(hash_key, filename) 65 | LOGGER.debug { "Finished fiber #{fiber_no + 1}/#{hash_amount}" } 66 | 67 | @channel.send({hash_key, hash_value}) 68 | end 69 | end 70 | proc.call(i) 71 | end 72 | 73 | Collision.spawn do 74 | res = Hash(Symbol, String).new 75 | step = 1/hash_amount 76 | hash_amount.times do |i| 77 | t_res = @channel.receive 78 | res[t_res[0]] = t_res[1] 79 | 80 | GLib.idle_add do 81 | unless progressbar.nil? 82 | progressbar.fraction = Math.min(progressbar.fraction + step, 1.0) 83 | progressbar.text = sprintf(Gettext.gettext("%d of %d hashes calculated"), {i + 1, hash_amount}) 84 | end 85 | false 86 | end 87 | end 88 | 89 | on_finished(res, &block) 90 | end 91 | end 92 | end 93 | end 94 | -------------------------------------------------------------------------------- /src/collision/functions/dnd.cr: -------------------------------------------------------------------------------- 1 | # DnD related functions 2 | 3 | module Collision 4 | class DragNDrop 5 | @on_dropped : Proc(Gio::File, Nil) 6 | getter controller : Gtk::DropTarget = Gtk::DropTarget.new(Gdk::FileList.g_type, Gdk::DragAction::Copy) 7 | 8 | def initialize(@on_dropped) 9 | connect_dnd_signals 10 | end 11 | 12 | private def dnd_enter(x, y) 13 | LOGGER.debug { "DnD Entered" } 14 | 15 | Gdk::DragAction::Copy 16 | end 17 | 18 | private def dnd_leave 19 | LOGGER.debug { "DnD Left" } 20 | end 21 | 22 | private def dnd_drop(value, x, y) 23 | LOGGER.debug { "DnD Dropped" } 24 | 25 | begin 26 | object_ptr = LibGObject.g_value_get_boxed(value.to_unsafe) 27 | files = Gdk::FileList.new(object_ptr, GICrystal::Transfer::Full).files 28 | file = nil 29 | 30 | files.each do |x| 31 | break file = x if x.uri.downcase.starts_with?("file://") 32 | end 33 | raise "No files starting with 'file://' given" if file.nil? 34 | 35 | @on_dropped.call(file) 36 | 37 | true 38 | rescue ex 39 | LOGGER.debug { ex } 40 | 41 | false 42 | end 43 | end 44 | 45 | private def connect_dnd_signals 46 | @controller.drop_signal.connect(->dnd_drop(GObject::Value, Float64, Float64)) 47 | @controller.enter_signal.connect(->dnd_enter(Float64, Float64)) 48 | @controller.leave_signal.connect(->dnd_leave) 49 | end 50 | end 51 | end 52 | -------------------------------------------------------------------------------- /src/collision/functions/feedback.cr: -------------------------------------------------------------------------------- 1 | # Returns the correct symbolic icon for feedback based on whether or not the task was successful 2 | 3 | module Collision::Feedback 4 | extend self 5 | CLASSES = {"success", "error"} 6 | 7 | def icon(success : Bool? = false) 8 | success ? "test-pass-symbolic" : "cross-large-symbolic" 9 | end 10 | 11 | def class(success : Bool? = false) : NamedTuple(add: String, remove: String) 12 | result = success ? 0 : 1 13 | 14 | # If result == 0 => add: CLASSES[0], remove: CLASSES[-1] 15 | # If result == 1 => add: CLASSES[1], remove: CLASSES[0] 16 | {add: CLASSES[result], remove: CLASSES[result - 1]} 17 | end 18 | 19 | def title(success : Bool? = false) : String 20 | success ? Gettext.gettext("They Match") : Gettext.gettext("They Don't Match") 21 | end 22 | end 23 | -------------------------------------------------------------------------------- /src/collision/functions/file_utils.cr: -------------------------------------------------------------------------------- 1 | # Resets the window after a main file set 2 | # Updates the filename in the StatusPage & calls generate_hashes 3 | 4 | module Collision::FileUtils 5 | extend self 6 | 7 | def real_path(filepath : Path) : String | Nil 8 | {% if !env("FLATPAK_ID").nil? || file_exists?("/.flatpak-info") %} 9 | return nil if filepath.parents.includes?(Path["/", "run", "user"]) 10 | {% end %} 11 | filepath.dirname.to_s 12 | end 13 | 14 | # Checks if path is a File and exists. 15 | # If it doesn't, it will either raise an exception 16 | # or just log an error based on the `exception` param. 17 | def file?(file : Path | String, exception : Bool = true) : Bool 18 | return true if File.file?(file) 19 | 20 | msg = "\"#{file}\" does not exist or is not a File" 21 | if exception 22 | raise msg 23 | else 24 | Collision::LOGGER.debug { msg } 25 | end 26 | 27 | false 28 | end 29 | 30 | # Checks if any of the `needles` are in the `file_path` file 31 | def compare_content(file_path : Path | String, needles : Array(String)) : Bool 32 | Collision::LOGGER.debug { "Begin comparing content" } 33 | res = false 34 | 35 | File.open(file_path) do |file_io| 36 | file_io.each_line do |line| 37 | break res = true if line.split(' ').any? { |word| needles.includes?(word.downcase) } 38 | end 39 | end 40 | 41 | Collision::LOGGER.debug { "Finished comparing content" } 42 | res 43 | end 44 | end 45 | -------------------------------------------------------------------------------- /src/collision/functions/settings.cr: -------------------------------------------------------------------------------- 1 | # Handles gschema settings 2 | 3 | module Collision 4 | extend self 5 | 6 | module Settings 7 | extend self 8 | 9 | DEFAULT_SETTINGS = { 10 | window_width: 600, 11 | window_height: 460, 12 | window_maximized: false, 13 | } 14 | 15 | # Used to avoid a GLib error on runtime 16 | # when a key doesn't exist for whatever 17 | # reason. 18 | # Settings keys used/required. 19 | SETTINGS_KEYS = [ 20 | "window-width", 21 | "window-height", 22 | "is-maximized", 23 | ] 24 | 25 | def available?(settings : Gio::Settings) : Bool 26 | diff = SETTINGS_KEYS - settings.list_keys 27 | missing = diff.empty? 28 | 29 | LOGGER.debug { "Missing settings: #{diff}" } unless missing 30 | 31 | missing 32 | end 33 | 34 | def save(window : Gtk::Window) : Bool 35 | return false if (settings = SETTINGS).nil? || !Collision::Settings.available?(settings) 36 | 37 | LOGGER.debug { "Saving settings" } 38 | 39 | unless window.maximized? 40 | settings.set_int("window-width", window.width) 41 | settings.set_int("window-height", window.height) 42 | end 43 | settings.set_boolean("is-maximized", window.maximized?) 44 | 45 | false # It has to return false so the window closes. 46 | end 47 | end 48 | 49 | def settings 50 | return Collision::Settings::DEFAULT_SETTINGS if (settings = SETTINGS).nil? || !Collision::Settings.available?(settings) 51 | 52 | LOGGER.debug { "Loading settings" } 53 | 54 | begin 55 | { 56 | window_width: settings.int("window-width"), 57 | window_height: settings.int("window-height"), 58 | window_maximized: settings.boolean("is-maximized"), 59 | } 60 | rescue ex 61 | LOGGER.debug { ex } 62 | 63 | Collision::Settings::DEFAULT_SETTINGS 64 | end 65 | end 66 | end 67 | -------------------------------------------------------------------------------- /src/collision/widgets/hash_row.cr: -------------------------------------------------------------------------------- 1 | module Collision::Widgets 2 | @[Gtk::UiTemplate( 3 | resource: "/dev/geopjr/Collision/ui/hash_row.ui", 4 | children: { 5 | "copy_btn", 6 | } 7 | )] 8 | class HashRow < Adw::ActionRow 9 | include Gtk::WidgetTemplate 10 | signal clicked(hash_type : String) 11 | property copy_btn_locked : Bool = false 12 | @copy_btn : Gtk::Button 13 | @hash_type : String = "" 14 | 15 | def initialize 16 | super() 17 | 18 | @copy_btn = Gtk::Button.cast(template_child("copy_btn")) 19 | @copy_btn.clicked_signal.connect(->copy_btn_clicked_cb) 20 | end 21 | 22 | def initialize(hash_name : String, @hash_type : String) 23 | initialize 24 | 25 | self.title = hash_name 26 | end 27 | 28 | def copy_btn_clicked_cb 29 | return if @copy_btn_locked 30 | @copy_btn_locked = true 31 | Collision::LOGGER.debug { "Copied #{title} hash" } 32 | 33 | clicked_signal.emit(@hash_type) 34 | success = true 35 | 36 | @copy_btn.icon_name = Collision::Feedback.icon(success) 37 | feedback_class = success ? "success" : "error" 38 | @copy_btn.add_css_class(feedback_class) 39 | Non::Blocking.spawn do 40 | sleep 1.1.seconds # 1 feels fast, 1.5 feels slow 41 | GLib.idle_add do 42 | @copy_btn.icon_name = "edit-copy-symbolic" 43 | @copy_btn.remove_css_class(feedback_class) 44 | @copy_btn_locked = false 45 | false 46 | end 47 | 48 | Collision::LOGGER.debug { "Copy button feedback reset" } 49 | end 50 | end 51 | end 52 | end 53 | -------------------------------------------------------------------------------- /src/license.cr: -------------------------------------------------------------------------------- 1 | module Collision 2 | LICENSE = {{run("#{__DIR__}/../data/scripts/licenses.cr").stringify}} 3 | LICENSE_ARGS = {"--licenses", "--license", "--legal", "--licence", "--licences"} 4 | 5 | if ARGV.size > 0 && LICENSE_ARGS.includes?(ARGV[0].downcase) 6 | puts LICENSE 7 | exit 0 8 | end 9 | end 10 | --------------------------------------------------------------------------------