├── po ├── LINGUAS ├── meson.build ├── POTFILES ├── io.github.ronniedroid.concessio.pot ├── ar.po ├── cs.po ├── nl.po ├── pl.po ├── ru.po ├── pt_BR.po └── it.po ├── data ├── css │ └── style.css ├── screenshots │ ├── help-page.png │ └── main-page.png ├── io.github.ronniedroid.concessio.service ├── io.github.ronniedroid.concessio.desktop ├── icons │ ├── person-symbolic.svg │ ├── execute-from-symbolic.svg │ ├── edit-symbolic.svg │ ├── train-load-extreme-symbolic.svg │ ├── copy-symbolic.svg │ ├── people-symbolic.svg │ ├── open-book-symbolic.svg │ ├── io.github.ronniedroid.concessio-symbolic.svg │ └── io.github.ronniedroid.concessio.svg ├── io.github.ronniedroid.concessio.gschema.xml ├── io.github.ronniedroid.concessio.data.gresource.xml ├── meson.build ├── ui │ ├── ShortcutsWindow.ui │ ├── Form.ui │ ├── Window.ui │ ├── BoxedList.ui │ └── HelpDialog.ui └── io.github.ronniedroid.concessio.metainfo.xml ├── .gitignore ├── .prettierrc.json ├── .buildconfig ├── src ├── main.js ├── io.github.ronniedroid.concessio.src.gresource.xml ├── meson.build ├── io.github.ronniedroid.concessio.js ├── helpDialog.js ├── form.js ├── application.js ├── boxedList.js └── window.js ├── jsconfig.json ├── .editorconfig ├── package.json ├── meson.build ├── io.github.ronniedroid.concessio.yml ├── README.md ├── concessio.doap └── eslint.config.js /po/LINGUAS: -------------------------------------------------------------------------------- 1 | ar 2 | cs 3 | it 4 | nl 5 | pl 6 | pt_BR 7 | ru 8 | -------------------------------------------------------------------------------- /data/css/style.css: -------------------------------------------------------------------------------- 1 | .command-card { 2 | margin: 4px; 3 | padding: 18px; 4 | } 5 | -------------------------------------------------------------------------------- /po/meson.build: -------------------------------------------------------------------------------- 1 | # Set up translations 2 | i18n.gettext( 3 | APP_ID, 4 | preset: 'glib' 5 | ) 6 | -------------------------------------------------------------------------------- /data/screenshots/help-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ronniedroid/concessio/HEAD/data/screenshots/help-page.png -------------------------------------------------------------------------------- /data/screenshots/main-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ronniedroid/concessio/HEAD/data/screenshots/main-page.png -------------------------------------------------------------------------------- /data/io.github.ronniedroid.concessio.service: -------------------------------------------------------------------------------- 1 | [D-BUS Service] 2 | Name=@APP_ID@ 3 | Exec=@BINDIR@/@APP_ID@ --gapplication-service -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .flatpak-builder 2 | builddir 3 | build-dir 4 | .vscode 5 | .flatpak 6 | node-modules/ 7 | .eslintcache 8 | /node_modules/ 9 | *.mo 10 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | tabWidth: 4 2 | useTabs: false 3 | semi: true 4 | singleQuote: true 5 | quoteProps: 'as-needed' 6 | trailingComma: 'es6' 7 | bracketSpacing: false 8 | arrowParens: 'avoid' 9 | -------------------------------------------------------------------------------- /data/io.github.ronniedroid.concessio.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Concessio 3 | Comment= Understand file permissions 4 | Icon=@APP_ID@ 5 | Exec=@BINDIR@/@APP_ID@ 6 | Type=Application 7 | DBusActivatable=true 8 | Categories=System;Utility; 9 | Keywords=Permissions;Convertor;Calculator; -------------------------------------------------------------------------------- /.buildconfig: -------------------------------------------------------------------------------- 1 | [default] 2 | name=Default 3 | runtime=flatpak:org.gnome.Platform/x86_64/46 4 | toolchain=default 5 | config-opts= 6 | run-opts= 7 | prefix=/app 8 | app-id=io.github.ronniedroid.concessio 9 | postbuild= 10 | prebuild= 11 | run-command=io.github.ronniedroid.concessio 12 | default=true 13 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import 'gi://Gdk?version=4.0'; 2 | import 'gi://Gtk?version=4.0'; 3 | import 'gi://Adw?version=1'; 4 | 5 | import { CncApplication } from './application.js'; 6 | 7 | export function main(argv) { 8 | return new CncApplication({ 9 | 'application-id': pkg.name, 10 | }).run(argv); 11 | } 12 | -------------------------------------------------------------------------------- /po/POTFILES: -------------------------------------------------------------------------------- 1 | data/ui/BoxedList.ui 2 | data/ui/Form.ui 3 | data/ui/HelpDialog.ui 4 | data/ui/Window.ui 5 | data/ui/ShortcutsWindow.ui 6 | data/io.github.ronniedroid.concessio.desktop 7 | data/io.github.ronniedroid.concessio.metainfo.xml 8 | 9 | src/application.js 10 | src/boxedList.js 11 | src/form.js 12 | src/helpDialog.js 13 | src/window.js -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "strict": true, 4 | "typeRoots": ["./node_modules/@types", "./node_modules/@gi-types"], 5 | "types": ["gjs-environment", "base-types", "gtk4-types", "adw1"], 6 | "lib": ["ES2022"], 7 | "allowSyntheticDefaultImports": true 8 | }, 9 | "exclude": ["./src/lib", "node_modules"] 10 | } 11 | -------------------------------------------------------------------------------- /data/icons/person-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: MIT OR LGPL-2.0-or-later 2 | # SPDX-FileCopyrightText: 2021 Sonny Piers 3 | 4 | # EditorConfig is awesome: https://EditorConfig.org 5 | 6 | root = true 7 | 8 | [*] 9 | indent_style = space 10 | indent_size = 4 11 | charset = utf-8 12 | trim_trailing_whitespace = true 13 | end_of_line = lf 14 | insert_final_newline = true 15 | 16 | [*.js] 17 | quote_type = single -------------------------------------------------------------------------------- /src/io.github.ronniedroid.concessio.src.gresource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | main.js 5 | application.js 6 | window.js 7 | form.js 8 | boxedList.js 9 | helpDialog.js 10 | 11 | 12 | -------------------------------------------------------------------------------- /data/icons/execute-from-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /data/io.github.ronniedroid.concessio.gschema.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | false 6 | Whether the welcome screen has been shown 7 | If true, the welcome screen won't be shown again. 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "devDependencies": { 4 | "@gi-types/adw1": "^1.1.1", 5 | "@gi-types/base-types": "^1.0.0", 6 | "@gi-types/gjs-environment": "^1.1.0", 7 | "@gi-types/gtk4": "^4.6.1", 8 | "@gi-types/gtk4-types": "^1.0.0", 9 | "@babel/eslint-parser": "^7.19.1", 10 | "@babel/plugin-syntax-import-assertions": "^7.18.6", 11 | "eslint": "^8.24.0", 12 | "eslint-plugin-import": "^2.26.0", 13 | "prettier": "^2.7.1" 14 | }, 15 | "type": "module" 16 | } 17 | -------------------------------------------------------------------------------- /meson.build: -------------------------------------------------------------------------------- 1 | # Define our project 2 | project( 3 | 'concessio', 4 | version: '0.1.10', 5 | license: ['GPL-3.0-or-later'], 6 | meson_version: '>= 0.62.0' 7 | ) 8 | 9 | APP_ID = 'io.github.ronniedroid.concessio' 10 | 11 | # Import the modules 12 | gnome = import('gnome') 13 | i18n = import('i18n') 14 | 15 | # Load instructions from subdirectories 16 | subdir('data') 17 | subdir('src') 18 | subdir('po') 19 | 20 | gnome.post_install( 21 | gtk_update_icon_cache: true, 22 | update_desktop_database: true, 23 | glib_compile_schemas: true 24 | ) 25 | -------------------------------------------------------------------------------- /data/icons/edit-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /io.github.ronniedroid.concessio.yml: -------------------------------------------------------------------------------- 1 | app-id: io.github.ronniedroid.concessio 2 | runtime: org.gnome.Platform 3 | runtime-version: '48' 4 | sdk: org.gnome.Sdk 5 | command: io.github.ronniedroid.concessio 6 | 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: concessio 24 | buildsystem: meson 25 | sources: 26 | - type: dir 27 | path: . 28 | -------------------------------------------------------------------------------- /src/meson.build: -------------------------------------------------------------------------------- 1 | # Configure the entry point 2 | configure_file( 3 | input : APP_ID + '.js', 4 | output : APP_ID, 5 | configuration: { 6 | 'GJS': find_program('gjs').full_path(), 7 | 'PACKAGE_NAME': APP_ID, 8 | 'PACKAGE_VERSION': meson.project_version(), 9 | 'PREFIX': get_option('prefix'), 10 | 'LIBDIR': get_option('prefix') / get_option('libdir') 11 | }, 12 | install_dir: get_option('bindir'), 13 | install_mode: 'rwxr-xr-x' 14 | ) 15 | 16 | # Compile the resources 17 | app_resource = gnome.compile_resources( 18 | APP_ID + '.src', 19 | APP_ID + '.src.gresource.xml', 20 | gresource_bundle: true, 21 | install: true, 22 | install_dir : get_option('datadir') / APP_ID 23 | ) 24 | -------------------------------------------------------------------------------- /data/icons/train-load-extreme-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /data/icons/copy-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/io.github.ronniedroid.concessio.js: -------------------------------------------------------------------------------- 1 | #!@GJS@ -m 2 | 3 | import GLib from 'gi://GLib'; 4 | 5 | // Initialize the package 6 | imports.package.init({ 7 | name: '@PACKAGE_NAME@', 8 | version: '@PACKAGE_VERSION@', 9 | prefix: '@PREFIX@', 10 | libdir: '@LIBDIR@', 11 | }); 12 | 13 | imports.package.initGettext(); 14 | 15 | // Import the main module and run the main function 16 | const loop = new GLib.MainLoop(null, false); 17 | import('resource:///io/github/ronniedroid/concessio/js/main.js') 18 | .then((main) => { 19 | GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, () => { 20 | loop.quit(); 21 | imports.package.run(main); 22 | return GLib.SOURCE_REMOVE; 23 | }); 24 | }) 25 | .catch(logError); 26 | loop.run(); 27 | -------------------------------------------------------------------------------- /src/helpDialog.js: -------------------------------------------------------------------------------- 1 | import GObject from 'gi://GObject'; 2 | import Adw from 'gi://Adw'; 3 | 4 | export const CncHelpDialog = GObject.registerClass({ 5 | GTypeName: 'CncHelpDialog', 6 | Template: 'resource:///io/github/ronniedroid/concessio/ui/HelpDialog.ui', 7 | InternalChildren: [ 8 | "helpHeaderBar", 9 | "scrolledWindow" 10 | ] 11 | }, class extends Adw.Dialog { 12 | constructor() { 13 | super(); 14 | 15 | const vadjustment = this._scrolledWindow.get_vadjustment(); 16 | 17 | vadjustment.connect('value-changed', () => { 18 | if (vadjustment.value > 1) { 19 | this._helpHeaderBar.show_title = true; 20 | } else { 21 | this._helpHeaderBar.show_title = false; 22 | } 23 | }); 24 | 25 | } 26 | }); 27 | -------------------------------------------------------------------------------- /data/icons/people-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![icon](/data/icons/io.github.ronniedroid.concessio.svg) 2 | 3 | # Concessio 4 | 5 | [![Please do not theme this app](https://stopthemingmy.app/badge.svg)](https://stopthemingmy.app) 6 | 7 | ![screenshot](/data/screenshots/main-page.png) 8 | ![screenshot](/data/screenshots/help-page.png) 9 | 10 | ## Features: 11 | - Convert between symbolic and numeric representations of UNIX file permessions 12 | - Use toggle buttons to update the symbolic and numeric fields 13 | - Open a file to read it's permessions and convert them 14 | - Open the help dialog to read and understand the UNIX permessions system 15 | 16 | 17 | ## Installation 18 | 19 | Concessio is available on Flathub. 20 | 21 | [Download on Flathub](https://flathub.org/apps/io.github.ronniedroid.concessio) 22 | 23 | ## Contributing 24 | 25 | Contributions are welcome!. This project follows the [GNOME Code of Conduct](https://conduct.gnome.org). 26 | 27 | 28 | ## Roadmap 29 | 30 | - [ ] Update a file's permission 31 | -------------------------------------------------------------------------------- /src/form.js: -------------------------------------------------------------------------------- 1 | import GObject from 'gi://GObject'; 2 | import Gtk from 'gi://Gtk'; 3 | import GLib from 'gi://GLib'; 4 | 5 | export const CncForm = GObject.registerClass({ 6 | GTypeName: 'CncForm', 7 | Template: 'resource:///io/github/ronniedroid/concessio/ui/Form.ui', 8 | InternalChildren: [ 9 | 'numeric', 10 | 'symbolic' 11 | ] 12 | }, class extends Gtk.Widget { 13 | _validateSymbolic(symbolic) { 14 | return symbolic.length === 9 && /^[r-][w-][xsS-][r-][w-][xsS-][r-][w-][xtT-]$/.test(symbolic); 15 | } 16 | 17 | _validateNumeric(numeric) { 18 | return (numeric.length === 3 || numeric.length === 4) && /^[0-7]+$/.test(numeric); 19 | } 20 | 21 | _removeErrorClass(_entry) { 22 | _entry.remove_css_class("error"); 23 | } 24 | 25 | _copyToClipboard(_entry) { 26 | if (_entry.get_text().length > 0 && !_entry.has_css_class("error")) { 27 | const text = GLib.Variant.new_string(_entry.get_text()); 28 | this.activate_action("win.copyToClipboard", text); 29 | } 30 | } 31 | }); 32 | -------------------------------------------------------------------------------- /data/icons/open-book-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /data/io.github.ronniedroid.concessio.data.gresource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ui/Window.ui 5 | ui/Form.ui 6 | ui/BoxedList.ui 7 | ui/HelpDialog.ui 8 | css/style.css 9 | welcome.svg 10 | help.svg 11 | ui/ShortcutsWindow.ui 12 | 13 | 14 | icons/open-book-symbolic.svg 15 | icons/edit-symbolic.svg 16 | icons/execute-from-symbolic.svg 17 | icons/copy-symbolic.svg 18 | icons/person-symbolic.svg 19 | icons/people-symbolic.svg 20 | icons/train-load-extreme-symbolic.svg 21 | 22 | 23 | -------------------------------------------------------------------------------- /concessio.doap: -------------------------------------------------------------------------------- 1 | 6 | 7 | Concessio 8 | Understand file permissions 9 | 10 | 11 | 12 | JavaScript 13 | GTK 4 14 | Libadwaita 15 | 16 | 17 | 18 | Ronnie Nissan 19 | 20 | 21 | 22 | 23 | ronniedroid 24 | 25 | 26 | 27 | 28 | 29 | ronniedroid 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /data/icons/io.github.ronniedroid.concessio-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /data/meson.build: -------------------------------------------------------------------------------- 1 | # Compile the resources 2 | gnome.compile_resources( 3 | APP_ID + '.data', 4 | APP_ID + '.data.gresource.xml', 5 | gresource_bundle: true, 6 | install: true, 7 | install_dir: get_option('datadir') / APP_ID 8 | ) 9 | 10 | # Install the settings schema 11 | install_data( 12 | APP_ID + '.gschema.xml', 13 | install_dir: get_option('datadir') / 'glib-2.0' / 'schemas' 14 | ) 15 | 16 | 17 | # Install the application icons 18 | install_data( 19 | 'icons' / APP_ID + '.svg', 20 | install_dir: get_option('datadir') / 'icons' / 'hicolor' / 'scalable' / 'apps' 21 | ) 22 | install_data( 23 | 'icons' / APP_ID + '-symbolic.svg', 24 | install_dir: get_option('datadir') / 'icons' / 'hicolor' / 'symbolic' / 'apps' 25 | ) 26 | 27 | # Install the D-Bus service file 28 | configure_file( 29 | input: APP_ID + '.service', 30 | output: APP_ID + '.service', 31 | configuration: { 32 | 'APP_ID': APP_ID, 33 | 'BINDIR': get_option('prefix') / get_option('bindir') 34 | }, 35 | install: true, 36 | install_dir: get_option('datadir') / 'dbus-1' / 'services' 37 | ) 38 | 39 | # Translate and install the desktop file 40 | i18n.merge_file( 41 | type: 'desktop', 42 | input: configure_file( 43 | input: APP_ID + '.desktop', 44 | output: APP_ID + '.desktop.in', 45 | configuration: { 46 | 'APP_ID': APP_ID, 47 | 'BINDIR': get_option('prefix') / get_option('bindir') 48 | } 49 | ), 50 | output: APP_ID + '.desktop', 51 | po_dir: meson.project_source_root() / 'po', 52 | install: true, 53 | install_dir: get_option('datadir') / 'applications' 54 | ) 55 | 56 | # Translate and install the AppStream metadata 57 | i18n.merge_file( 58 | input: configure_file( 59 | input: APP_ID + '.metainfo.xml', 60 | output: APP_ID + '.metainfo.xml.in', 61 | configuration: { 62 | 'APP_ID': APP_ID, 63 | } 64 | ), 65 | output: APP_ID + '.metainfo.xml', 66 | type: 'xml', 67 | po_dir: meson.project_source_root() / 'po', 68 | install: true, 69 | install_dir: get_option('datadir') / 'metainfo' 70 | ) 71 | -------------------------------------------------------------------------------- /data/ui/ShortcutsWindow.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | File 9 | 10 | 11 | Open File 12 | Open file chooser dialog 13 | win.open 14 | 15 | 16 | 17 | 18 | 19 | 20 | General 21 | 22 | 23 | Quit App 24 | app.quit 25 | 26 | 27 | 28 | 29 | Close Window 30 | window.close 31 | 32 | 33 | 34 | 35 | Help dialog 36 | Display the help dialog 37 | app.help 38 | 39 | 40 | 41 | 42 | Keyboard Shortcuts 43 | Display this keyboard shortcuts window 44 | win.show-help-overlay 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /data/ui/Form.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | 61 | 62 | -------------------------------------------------------------------------------- /src/application.js: -------------------------------------------------------------------------------- 1 | import Adw from 'gi://Adw'; 2 | import GObject from 'gi://GObject'; 3 | import Gdk from 'gi://Gdk'; 4 | import Gtk from 'gi://Gtk'; 5 | import Gio from 'gi://Gio'; 6 | 7 | import './form.js'; 8 | import './boxedList.js'; 9 | import { CncWindow } from './window.js'; 10 | import { CncHelpDialog } from "./helpDialog.js"; 11 | 12 | export const CncApplication = GObject.registerClass({ 13 | GTypeName: 'CncApplication' 14 | }, class extends Adw.Application { 15 | vfunc_startup() { 16 | super.vfunc_startup(); 17 | this.#loadSettings(); 18 | this.#loadStylesheet(); 19 | this.#setupActions(); 20 | this.#setupAccelerators(); 21 | } 22 | 23 | vfunc_activate() { 24 | const window = new CncWindow({ application: this }); 25 | window.present(); 26 | } 27 | 28 | #loadSettings() { 29 | globalThis.settings = new Gio.Settings({ schemaId: this.applicationId }); 30 | } 31 | 32 | #setupActions() { 33 | const quitAction = new Gio.SimpleAction({name: "quit"}); 34 | quitAction.connect("activate", () => this.quit()); 35 | this.add_action(quitAction); 36 | 37 | const helpAction = new Gio.SimpleAction({name: 'help'}); 38 | helpAction.connect("activate", () => { 39 | const HelpDialog = new CncHelpDialog(); 40 | HelpDialog.present(this.get_active_window()); 41 | }); 42 | this.add_action(helpAction); 43 | 44 | const aboutAction = new Gio.SimpleAction({name: 'about'}); 45 | aboutAction.connect("activate", () => this._openAboutDialog()); 46 | this.add_action(aboutAction); 47 | } 48 | 49 | #setupAccelerators() { 50 | this.set_accels_for_action('app.help', ['h']); 51 | this.set_accels_for_action('app.quit', ['q']); 52 | this.set_accels_for_action('window.close', ['w']); 53 | this.set_accels_for_action('win.open', ['o']); 54 | } 55 | 56 | #loadStylesheet() { 57 | const provider = new Gtk.CssProvider(); 58 | provider.load_from_resource('/io/github/ronniedroid/concessio/css/style.css'); 59 | 60 | Gtk.StyleContext.add_provider_for_display( 61 | Gdk.Display.get_default(), 62 | provider, 63 | Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION 64 | ); 65 | } 66 | 67 | _openAboutDialog() { 68 | const dialog = new Adw.AboutDialog({ 69 | application_icon: "io.github.ronniedroid.concessio", 70 | application_name: _("Concessio"), 71 | developer_name: "Ronnie Nissan", 72 | version: pkg.version, 73 | comments: _( 74 | "Concessio helps you understand and convert between unix permissions representations" 75 | ), 76 | website: "https://github.com/ronniedroid/concessio", 77 | issue_url: "https://github.com/ronniedroid/concessio/issues/new", 78 | copyright: "© 2024 Ronnie Nissan", 79 | license_type: Gtk.License.GPL_3_0, 80 | developers: ["Ronnie Nissan "], 81 | designers: ["Brage Fuglseth https://bragefuglseth.dev"], 82 | artists: ["Dominik Baran https://github.com/drpetrikov"], 83 | // Translators: Replace "translator-credits" with your names, one name per line 84 | translator_credits: _("translator-credits") 85 | }); 86 | 87 | dialog.add_acknowledgement_section(_("Special thanks to"), ["Alice Mikhaylenko", "Jakub Steiner https://jimmac.eu/"]); 88 | 89 | dialog.present(this.get_active_window()); 90 | } 91 | }); 92 | -------------------------------------------------------------------------------- /src/boxedList.js: -------------------------------------------------------------------------------- 1 | import GObject from 'gi://GObject'; 2 | import Adw from 'gi://Adw'; 3 | import Gtk from 'gi://Gtk'; 4 | import GLib from 'gi://GLib'; 5 | 6 | export const CncBoxedList = GObject.registerClass({ 7 | GTypeName: 'CncBoxedList', 8 | Template: 'resource:///io/github/ronniedroid/concessio/ui/BoxedList.ui', 9 | InternalChildren: [ 10 | 'u1', 'u2', 'u4', 'suid', // User permissions buttons 11 | 'g1', 'g2', 'g4', 'sgid', // Group permissions buttons 12 | 'o1', 'o2', 'o4', 'sticky' // Other permissions buttons 13 | ] 14 | }, class extends Adw.Bin { 15 | _getSpecial(xbtn, special) { 16 | if (xbtn.get_active() && special.get_active()) { 17 | return 's'; 18 | } else if (!xbtn.get_active() && special.get_active()) { 19 | return 'S'; 20 | } else if (xbtn.get_active() && !special.get_active()) { 21 | return 'x'; 22 | } else { 23 | return '-'; 24 | } 25 | }; 26 | 27 | _getSticky(xbtn, sticky) { 28 | if (xbtn.get_active() && sticky.get_active()) { 29 | return 't'; 30 | } else if (!xbtn.get_active() && sticky.get_active()) { 31 | return 'T'; 32 | } else if (xbtn.get_active() && !sticky.get_active()) { 33 | return 'x'; 34 | } else { 35 | return '-'; 36 | } 37 | }; 38 | 39 | getSymbolicValue() { 40 | return [ 41 | this._u4.get_active() ? 'r' : '-', 42 | this._u2.get_active() ? 'w' : '-', 43 | this._getSpecial(this._u1, this._suid), 44 | this._g4.get_active() ? 'r' : '-', 45 | this._g2.get_active() ? 'w' : '-', 46 | this._getSpecial(this._g1, this._sgid), 47 | this._o4.get_active() ? 'r' : '-', 48 | this._o2.get_active() ? 'w' : '-', 49 | this._getSticky(this._o1, this._sticky) 50 | ].join(''); 51 | } 52 | 53 | updateFromSymbolic(symbolic) { 54 | if (symbolic.length === 9) { 55 | const [u, g, o] = [ 56 | symbolic.slice(0, 3), // User 57 | symbolic.slice(3, 6), // Group 58 | symbolic.slice(6, 9) // Other 59 | ]; 60 | 61 | this._updateButtonState(this._u1, u.includes('x') || u.includes('s')); 62 | this._updateButtonState(this._u2, u.includes('w')); 63 | this._updateButtonState(this._u4, u.includes('r')); 64 | this._updateButtonState(this._suid, u.includes('s') || u.includes('S')); 65 | 66 | this._updateButtonState(this._g1, g.includes('x') || g.includes('s')); 67 | this._updateButtonState(this._g2, g.includes('w')); 68 | this._updateButtonState(this._g4, g.includes('r')); 69 | this._updateButtonState(this._sgid, g.includes('s') || g.includes('S')); 70 | 71 | this._updateButtonState(this._o1, o.includes('x') || o.includes('t')); 72 | this._updateButtonState(this._o2, o.includes('w')); 73 | this._updateButtonState(this._o4, o.includes('r')); 74 | this._updateButtonState(this._sticky, o.includes('t') || o.includes('T')); 75 | } 76 | } 77 | 78 | _updateButtonState(button, state) { 79 | const window = this.get_ancestor(Gtk.Window); 80 | const actionId = button.get_action_name().split('.').pop(); 81 | const action = window.lookup_action(actionId); 82 | 83 | if (button.get_active() !== state) { 84 | button.set_active(state); 85 | } 86 | 87 | if (action && action.state.get_boolean() !== state) { 88 | action.change_state(new GLib.Variant('b', state)); 89 | } 90 | } 91 | }); 92 | -------------------------------------------------------------------------------- /data/io.github.ronniedroid.concessio.metainfo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | @APP_ID@ 4 | 5 | Concessio 6 | Understand file permissions 7 | 8 | Ronnie Nissan 9 | 10 | 11 |

Concessio helps you understand and convert between unix permissions representations

12 |
    13 |
  • Convert between symbolic and numeric representations of UNIX file permissions
  • 14 |
  • Use toggle buttons to update the symbolic and numeric fields
  • 15 |
  • Open a file to read it's permissions and convert them
  • 16 |
  • Open the help dialog to read and understand the UNIX permissions system
  • 17 |
18 |
19 | 20 | 21 | 22 | 23 | #8ff0a4 24 | #2ec27e 25 | 26 | 27 | 28 | 29 | https://raw.githubusercontent.com/ronniedroid/concessio/main/data/screenshots/main-page.png 30 | Application main page converting between numeric and symbolic permission 31 | 32 | 33 | https://raw.githubusercontent.com/ronniedroid/concessio/main/data/screenshots/help-page.png 34 | Application help page, explaining unix permissions 35 | 36 | 37 | 38 | CC0-1.0 39 | GPL-3.0-or-later 40 | 41 | @APP_ID@.desktop 42 | 43 | @APP_ID@ 44 | @APP_ID@ 45 | 46 | @APP_ID@ 47 | 48 | 49 | pointing 50 | keyboard 51 | touch 52 | 53 | 54 | https://github.com/ronniedroid/concessio 55 | https://github.com/ronniedroid/concessio 56 | https://github.com/ronniedroid/concessio/issues 57 | 58 | 59 | 60 | 61 |
    62 |
  • Updated to gnome 48 runtime
  • 63 |
  • Added Brazilian Portuguese translations (Thanks to ioseph-silva )
  • 64 |
65 |
66 |
67 | 68 | 69 |
    70 |
  • Added Russian translations (Thanks to vorons)
  • 71 |
  • Added Dutch translations (Thanks to Vistaus )
  • 72 |
73 |
74 |
75 | 76 | 77 |
    78 |
  • Fixed Czech translations
  • 79 |
  • Updated to Gnome 47 runtime
  • 80 |
81 |
82 |
83 | 84 | 85 |

Added Czech translations by vikdevelop

86 |
87 |
88 | 89 | 90 |

Updated translation

91 |
92 |
93 | 94 | 95 |

Added support for linux special permissions, SUID, SGID and Sticky bit

96 |
97 |
98 | 99 | 100 |
    101 |
  • Added Italian translation by Albano Battistella
  • 102 |
  • Minor fixed and changes
  • 103 |
104 |
105 |
106 | 107 | 108 |

Initial release

109 |
110 |
111 |
112 |
113 | 114 | -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: CC0-1.0 2 | // SPDX-FileCopyrightText: No rights reserved 3 | 4 | import js from '@eslint/js'; 5 | 6 | export default [ 7 | js.configs.recommended, 8 | { 9 | languageOptions: { 10 | globals: { 11 | ARGV: 'readonly', 12 | Debugger: 'readonly', 13 | GIRepositoryGType: 'readonly', 14 | globalThis: 'readonly', 15 | imports: 'readonly', 16 | Intl: 'readonly', 17 | log: 'readonly', 18 | logError: 'readonly', 19 | pkg: 'readonly', 20 | print: 'readonly', 21 | printerr: 'readonly', 22 | window: 'readonly', 23 | TextEncoder: 'readonly', 24 | TextDecoder: 'readonly', 25 | console: 'readonly', 26 | setTimeout: 'readonly', 27 | setInterval: 'readonly', 28 | clearTimeout: 'readonly', 29 | clearInterval: 'readonly', 30 | }, 31 | parserOptions: { 32 | ecmaVersion: 2022, 33 | sourceType: 'module', 34 | }, 35 | }, 36 | rules: { 37 | // See: https://eslint.org/docs/latest/rules/#possible-problems 38 | 'array-callback-return': 'error', 39 | 'no-await-in-loop': 'error', 40 | 'no-constant-binary-expression': 'error', 41 | 'no-constructor-return': 'error', 42 | 'no-new-native-nonconstructor': 'error', 43 | 'no-promise-executor-return': 'error', 44 | 'no-self-compare': 'error', 45 | 'no-template-curly-in-string': 'error', 46 | 'no-unmodified-loop-condition': 'error', 47 | 'no-unreachable-loop': 'error', 48 | 'no-unused-private-class-members': 'error', 49 | 'no-use-before-define': [ 50 | 'error', 51 | { 52 | functions: false, 53 | classes: true, 54 | variables: true, 55 | allowNamedExports: true, 56 | }, 57 | ], 58 | // See: https://eslint.org/docs/latest/rules/#suggestions 59 | 'block-scoped-var': 'error', 60 | 'complexity': 'warn', 61 | 'consistent-return': 'error', 62 | 'default-param-last': 'error', 63 | 'eqeqeq': 'error', 64 | 'no-array-constructor': 'error', 65 | 'no-caller': 'error', 66 | 'no-extend-native': 'error', 67 | 'no-extra-bind': 'error', 68 | 'no-extra-label': 'error', 69 | 'no-iterator': 'error', 70 | 'no-label-var': 'error', 71 | 'no-loop-func': 'error', 72 | 'no-multi-assign': 'warn', 73 | 'no-new-object': 'error', 74 | 'no-new-wrappers': 'error', 75 | 'no-proto': 'error', 76 | 'no-shadow': 'warn', 77 | 'no-unused-vars': [ 78 | 'error', 79 | { 80 | varsIgnorePattern: '^_', 81 | argsIgnorePattern: '^_', 82 | }, 83 | ], 84 | 'no-var': 'warn', 85 | 'unicode-bom': 'error', 86 | // GJS Restrictions 87 | 'no-restricted-globals': [ 88 | 'error', 89 | { 90 | name: 'Debugger', 91 | message: 'Internal use only', 92 | }, 93 | { 94 | name: 'GIRepositoryGType', 95 | message: 'Internal use only', 96 | }, 97 | { 98 | name: 'log', 99 | message: 'Use console.log()', 100 | }, 101 | { 102 | name: 'logError', 103 | message: 'Use console.warn() or console.error()', 104 | }, 105 | ], 106 | 'no-restricted-properties': [ 107 | 'error', 108 | { 109 | object: 'imports', 110 | property: 'format', 111 | message: 'Use template strings', 112 | }, 113 | { 114 | object: 'pkg', 115 | property: 'initFormat', 116 | message: 'Use template strings', 117 | }, 118 | { 119 | object: 'Lang', 120 | property: 'copyProperties', 121 | message: 'Use Object.assign()', 122 | }, 123 | { 124 | object: 'Lang', 125 | property: 'bind', 126 | message: 'Use arrow notation or Function.prototype.bind()', 127 | }, 128 | { 129 | object: 'Lang', 130 | property: 'Class', 131 | message: 'Use ES6 classes', 132 | }, 133 | ], 134 | 'no-restricted-syntax': [ 135 | 'error', 136 | { 137 | selector: 'MethodDefinition[key.name="_init"] CallExpression[arguments.length<=1][callee.object.type="Super"][callee.property.name="_init"]', 138 | message: 'Use constructor() and super()', 139 | }, 140 | ], 141 | }, 142 | }, 143 | ]; 144 | -------------------------------------------------------------------------------- /data/icons/io.github.ronniedroid.concessio.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 | -------------------------------------------------------------------------------- /data/ui/Window.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | 137 | 138 |
139 | 140 | Help 141 | app.help 142 | 143 | 144 | Keyboard Shortcuts 145 | win.show-help-overlay 146 | 147 | 148 | About 149 | app.about 150 | 151 |
152 |
153 |
154 | -------------------------------------------------------------------------------- /src/window.js: -------------------------------------------------------------------------------- 1 | import GObject from 'gi://GObject'; 2 | import Adw from 'gi://Adw'; 3 | import Gio from 'gi://Gio'; 4 | import GLib from 'gi://GLib'; 5 | import Gdk from 'gi://Gdk'; 6 | import Gtk from 'gi://Gtk'; 7 | 8 | export const CncWindow = GObject.registerClass({ 9 | GTypeName: 'CncWindow', 10 | Template: 'resource:///io/github/ronniedroid/concessio/ui/Window.ui', 11 | InternalChildren: [ 12 | "toastOverlay", 13 | 'form', 14 | "boxedList", 15 | "stack", 16 | ] 17 | }, class extends Adw.ApplicationWindow { 18 | constructor(params = {}) { 19 | super(params); 20 | this.#setupActions(); 21 | this.#setupWelcomeScreen(); 22 | 23 | Gio._promisify(Gtk.FileDialog.prototype, "open", "open_finish"); 24 | } 25 | 26 | #setupWelcomeScreen() { 27 | if (globalThis.settings.get_boolean('welcome-screen-shown')) { 28 | this._stack.set_visible_child_name('mainPage'); 29 | } else { 30 | this._stack.set_visible_child_name('welcomePage'); 31 | globalThis.settings.set_boolean('welcome-screen-shown', true); 32 | } 33 | } 34 | 35 | #setupActions() { 36 | ['u1', 'u2', 'u4', 'g1', 'g2', 'g4', 'o1', 'o2', 'o4'].forEach(id => { 37 | const action = new Gio.SimpleAction({name: id, state: GLib.Variant.new_boolean(false)}); 38 | action.connect('notify::state', (act) => { 39 | this._onButtonToggleAction(act); 40 | }); 41 | this.add_action(action); 42 | }); 43 | 44 | ['suid', 'sgid', 'sticky'].forEach(id => { 45 | const action = new Gio.SimpleAction({name: id, state: GLib.Variant.new_boolean(false)}); 46 | action.connect('notify::state', (act) => { 47 | this._onSwitchToggleAction(act); 48 | }); 49 | this.add_action(action); 50 | }); 51 | 52 | const changeViewAction = new Gio.SimpleAction({ 53 | name: "changeView", 54 | parameterType: GLib.VariantType.new('s') 55 | }); 56 | 57 | changeViewAction.connect("activate", (_action, params) => { 58 | this._stack.visibleChildName = params.unpack(); 59 | }); 60 | 61 | this.add_action(changeViewAction); 62 | 63 | const openAction = new Gio.SimpleAction({ 64 | name: "open" 65 | }); 66 | 67 | openAction.connect("activate", () => { 68 | this._openFileChooser(); 69 | }); 70 | 71 | this.add_action(openAction); 72 | 73 | const copyToClipboardAction = new Gio.SimpleAction({ 74 | name: "copyToClipboard", 75 | parameterType: GLib.VariantType.new('s') 76 | }); 77 | 78 | copyToClipboardAction.connect("activate", (_action, params) => { 79 | this._copyToClipboard(params.unpack()); 80 | }); 81 | 82 | this.add_action(copyToClipboardAction); 83 | 84 | this._form._symbolic.connect('activate', () => { 85 | const symbolicValue = this._form._symbolic.get_text(); 86 | if (this._form._validateSymbolic(symbolicValue)) { 87 | const numericValue = symbolicToNumeric(symbolicValue); 88 | this._form._numeric.set_text(numericValue); 89 | this._boxedList.updateFromSymbolic(symbolicValue); 90 | } else { 91 | this._form._symbolic.add_css_class("error"); 92 | } 93 | }); 94 | 95 | this._form._numeric.connect('activate', () => { 96 | const numericValue = this._form._numeric.get_text(); 97 | if (this._form._validateNumeric(numericValue)) { 98 | const symbolicValue = numericToSymbolic(numericValue); 99 | this._form._symbolic.set_text(symbolicValue); 100 | this._boxedList.updateFromSymbolic(symbolicValue); 101 | } else { 102 | this._form._numeric.add_css_class("error"); 103 | } 104 | }); 105 | } 106 | 107 | _onButtonToggleAction(act) { 108 | const button = this._boxedList[`_${act.name}`]; 109 | 110 | if (button.get_active() !== act.state.unpack()) { 111 | button.set_active(act.state.unpack()); 112 | } 113 | 114 | button.connect('toggled', () => { 115 | act.set_state(GLib.Variant.new_boolean(button.active)); 116 | }); 117 | 118 | this._updateFormValues(this._boxedList.getSymbolicValue()); 119 | } 120 | 121 | _onSwitchToggleAction(act) { 122 | const switchButton = this._boxedList[`_${act.name}`]; 123 | 124 | if (switchButton.get_active() !== act.state.unpack()) { 125 | switchButton.set_active(act.state.unpack()); 126 | } 127 | 128 | switchButton.connect('notify::active', () => { 129 | act.set_state(GLib.Variant.new_boolean(switchButton.active)); 130 | }); 131 | 132 | this._updateFormValues(this._boxedList.getSymbolicValue()); 133 | } 134 | 135 | _copyToClipboard(text) { 136 | const display = Gdk.Display.get_default(); 137 | const clipboard = display.get_clipboard(); 138 | 139 | const content = Gdk.ContentProvider.new_for_value(text); 140 | clipboard.set_content(content); 141 | const toast = new Adw.Toast({ title: _("Copied to clipboard!") }); 142 | this._toastOverlay.add_toast(toast); 143 | } 144 | 145 | async _openFileChooser() { 146 | const file_dialog = new Gtk.FileDialog(); 147 | 148 | try { 149 | const file = await file_dialog.open(this, null); 150 | 151 | const numeric = getFilePermission(file); 152 | const symbolic = numericToSymbolic(numeric); 153 | this._updateFormValues(symbolic); 154 | this._boxedList.updateFromSymbolic(symbolic); 155 | 156 | } catch (error) { 157 | if (error instanceof Gtk.DialogError) { 158 | if (error.code === Gtk.DialogError.DISMISSED) { 159 | } 160 | } else { 161 | console.error("Error opening file dialog:", error.message); 162 | const toast = new Adw.Toast({ title: _("Failed to open file.") }); 163 | this._toastOverlay.add_toast(toast); 164 | } 165 | } 166 | } 167 | 168 | _updateFormValues(symbolic) { 169 | const numeric = symbolicToNumeric(symbolic); 170 | 171 | this._form._symbolic.set_text(symbolic); 172 | this._form._numeric.set_text(numeric); 173 | } 174 | 175 | vfunc_close_request() { 176 | super.vfunc_close_request(); 177 | this.run_dispose(); 178 | } 179 | }); 180 | 181 | function symbolicToNumeric(symbolic) { 182 | const permMap = { 'r': 4, 'w': 2, 'x': 1, '-': 0, 's': 1, 'S': 0, 't': 1, 'T': 0 }; 183 | let suid = 0, sgid = 0, sticky = 0; 184 | 185 | if (symbolic[2] === 's') suid = 4; 186 | if (symbolic[2] === 'S') suid = 4; 187 | if (symbolic[5] === 's') sgid = 2; 188 | if (symbolic[5] === 'S') sgid = 2; 189 | if (symbolic[8] === 't') sticky = 1; 190 | if (symbolic[8] === 'T') sticky = 1; 191 | 192 | const specialBits = suid + sgid + sticky; 193 | 194 | const numeric = symbolic 195 | .slice(0, 9) 196 | .split('') 197 | .map(char => permMap[char]) 198 | .reduce((acc, curr, idx) => { 199 | if (idx % 3 === 0) acc.push(0); 200 | acc[acc.length - 1] += curr; 201 | return acc; 202 | }, []) 203 | .join(''); 204 | 205 | return specialBits === 0 ? numeric : specialBits.toString() + numeric; 206 | } 207 | 208 | function numericToSymbolic(numeric) { 209 | const permMap = ['---', '--x', '-w-', '-wx', 'r--', 'r-x', 'rw-', 'rwx']; 210 | 211 | const specialBits = numeric.length === 4 ? numeric[0] : '0'; 212 | const perms = numeric.slice(-3); 213 | 214 | const symbolic = perms 215 | .split('') 216 | .map(digit => permMap[parseInt(digit)]) 217 | .join(''); 218 | 219 | let symbolicWithSpecial = symbolic.split(''); 220 | if (specialBits & 4) { 221 | symbolicWithSpecial[2] = (perms[0] === '1' || perms[0] === '3' || perms[0] === '5' || perms[0] === '7') ? 's' : 'S'; 222 | } 223 | 224 | if (specialBits & 2 ) { 225 | symbolicWithSpecial[5] = (perms[1] === '1' || perms[1] === '3' || perms[1] === '5' || perms[1] === '7') ? 's' : 'S'; 226 | } 227 | 228 | if (specialBits & 1) { 229 | symbolicWithSpecial[8] = (perms[2] === '1' || perms[2] === '3' || perms[2] === '5' || perms[2] === '7') ? 't' : 'T'; 230 | } 231 | 232 | return symbolicWithSpecial.join(''); 233 | } 234 | 235 | 236 | function getFilePermission(file) { 237 | const info = file.query_info("unix::mode", Gio.FileQueryInfoFlags.NONE, null); 238 | const mode = info.get_attribute_uint32("unix::mode") & 0o777; 239 | return mode.toString(8); 240 | } 241 | -------------------------------------------------------------------------------- /po/io.github.ronniedroid.concessio.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 io.github.ronniedroid.concessio package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: io.github.ronniedroid.concessio\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2024-09-17 15:39+0300\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=CHARSET\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | 20 | #: data/ui/BoxedList.ui:12 data/ui/HelpDialog.ui:67 21 | msgid "User" 22 | msgstr "" 23 | 24 | #: data/ui/BoxedList.ui:21 data/ui/BoxedList.ui:89 data/ui/BoxedList.ui:157 25 | msgid "Read" 26 | msgstr "" 27 | 28 | #: data/ui/BoxedList.ui:36 data/ui/BoxedList.ui:104 data/ui/BoxedList.ui:172 29 | msgid "Write" 30 | msgstr "" 31 | 32 | #: data/ui/BoxedList.ui:51 data/ui/BoxedList.ui:119 data/ui/BoxedList.ui:187 33 | msgid "Execute" 34 | msgstr "" 35 | 36 | #: data/ui/BoxedList.ui:80 data/ui/HelpDialog.ui:78 37 | msgid "Group" 38 | msgstr "" 39 | 40 | #: data/ui/BoxedList.ui:148 data/ui/HelpDialog.ui:89 41 | msgid "Others" 42 | msgstr "" 43 | 44 | #: data/ui/BoxedList.ui:247 data/ui/HelpDialog.ui:261 45 | msgid "" 46 | "Executes the file with the permissions of the file owner, not the user " 47 | "running it." 48 | msgstr "" 49 | 50 | #: data/ui/BoxedList.ui:288 data/ui/HelpDialog.ui:267 51 | msgid "" 52 | "Executes the file with the permissions of the file's group, or ensures new " 53 | "files in a directory inherit the group." 54 | msgstr "" 55 | 56 | #: data/ui/BoxedList.ui:329 data/ui/HelpDialog.ui:273 57 | msgid "" 58 | "Allows only the file owner or directory owner to delete files in the " 59 | "directory, even if others have write permissions. Only applies to " 60 | "directories and has no effect on files." 61 | msgstr "" 62 | 63 | #: data/ui/Form.ui:16 64 | msgid "Numeric" 65 | msgstr "" 66 | 67 | #: data/ui/Form.ui:25 data/ui/Form.ui:49 68 | msgid "Copy value" 69 | msgstr "" 70 | 71 | #: data/ui/Form.ui:40 72 | msgid "Symbolic" 73 | msgstr "" 74 | 75 | #: data/ui/HelpDialog.ui:13 data/ui/Window.ui:140 76 | msgid "Help" 77 | msgstr "" 78 | 79 | #: data/ui/HelpDialog.ui:37 80 | msgid "Unix Permissions" 81 | msgstr "" 82 | 83 | #: data/ui/HelpDialog.ui:46 84 | msgid "" 85 | "The Unix permissions system is used to grant granulated access to file and " 86 | "directories on a Unix-like operating system" 87 | msgstr "" 88 | 89 | #: data/ui/HelpDialog.ui:52 90 | msgid "Permissions are granted to three groups:" 91 | msgstr "" 92 | 93 | #: data/ui/HelpDialog.ui:68 94 | msgid "The owner of the file" 95 | msgstr "" 96 | 97 | #: data/ui/HelpDialog.ui:79 98 | msgid "A group of users who share access to the file" 99 | msgstr "" 100 | 101 | #: data/ui/HelpDialog.ui:90 102 | msgid "All other users on the system" 103 | msgstr "" 104 | 105 | #: data/ui/HelpDialog.ui:102 106 | msgid "The types of permissions are:" 107 | msgstr "" 108 | 109 | #: data/ui/HelpDialog.ui:117 110 | msgid "Read (Symbolic: r, Numeric: 4)" 111 | msgstr "" 112 | 113 | #: data/ui/HelpDialog.ui:118 114 | msgid "Allows viewing the file's contents or listing a directory's contents" 115 | msgstr "" 116 | 117 | #: data/ui/HelpDialog.ui:128 118 | msgid "Write (Symbolically: w, Numerically: 2)" 119 | msgstr "" 120 | 121 | #: data/ui/HelpDialog.ui:129 122 | msgid "" 123 | "Allows modifying the file's contents or creating/deleting files within a " 124 | "directory" 125 | msgstr "" 126 | 127 | #: data/ui/HelpDialog.ui:139 128 | msgid "Execute (Symbolically: x, Numerically: 1)" 129 | msgstr "" 130 | 131 | #: data/ui/HelpDialog.ui:140 132 | msgid "Allows running the file as a program" 133 | msgstr "" 134 | 135 | #: data/ui/HelpDialog.ui:153 136 | msgid "" 137 | "Permissions can either be represented symbolically or numerically. Symbolic " 138 | "permissions are represented as a string of ten characters, and numeric is " 139 | "represented by three numbers (octal notation) for Example:" 140 | msgstr "" 141 | 142 | #: data/ui/HelpDialog.ui:159 143 | msgid "Symbolic: -rwxr-xr--" 144 | msgstr "" 145 | 146 | #: data/ui/HelpDialog.ui:169 147 | msgid "Numeric: 754" 148 | msgstr "" 149 | 150 | #: data/ui/HelpDialog.ui:184 151 | msgid "First character, the file type" 152 | msgstr "" 153 | 154 | #: data/ui/HelpDialog.ui:185 155 | msgid "can either be '-' for file or 'd' for directory" 156 | msgstr "" 157 | 158 | #: data/ui/HelpDialog.ui:190 159 | msgid "First three positions (after file type)" 160 | msgstr "" 161 | 162 | #: data/ui/HelpDialog.ui:191 163 | msgid "" 164 | "The read, write and execute permissions for the user, here we have 'rwx', " 165 | "which translated to 4+2+1 and adds to 7" 166 | msgstr "" 167 | 168 | #: data/ui/HelpDialog.ui:196 169 | msgid "Second three positions" 170 | msgstr "" 171 | 172 | #: data/ui/HelpDialog.ui:197 173 | msgid "" 174 | "The read, write and execute permissions for the group, here we have 'r-x', " 175 | "which translated to 4+0+1 and adds to 5" 176 | msgstr "" 177 | 178 | #: data/ui/HelpDialog.ui:202 179 | msgid "Last three positions" 180 | msgstr "" 181 | 182 | #: data/ui/HelpDialog.ui:203 183 | msgid "" 184 | "The read, write and execute permissions for other users, here we have 'r--', " 185 | "which translated to 4+0+0 and adds to 4" 186 | msgstr "" 187 | 188 | #: data/ui/HelpDialog.ui:211 189 | msgid "Example command" 190 | msgstr "" 191 | 192 | #: data/ui/HelpDialog.ui:220 193 | msgid "chmod 754 (file name)" 194 | msgstr "" 195 | 196 | #: data/ui/HelpDialog.ui:230 197 | msgid "Special Permissions" 198 | msgstr "" 199 | 200 | #: data/ui/HelpDialog.ui:239 201 | msgid "" 202 | "Special permissions make up a fourth access level in addition to user, " 203 | "group, and other, they allow for additional privileges over the standard " 204 | "permission sets" 205 | msgstr "" 206 | 207 | #: data/ui/HelpDialog.ui:245 208 | msgid "The three special permissions are:" 209 | msgstr "" 210 | 211 | #: data/ui/HelpDialog.ui:281 212 | msgid "Special permissions can be represented symbolically or numerically." 213 | msgstr "" 214 | 215 | #: data/ui/HelpDialog.ui:288 216 | msgid "Numeric representation:" 217 | msgstr "" 218 | 219 | #: data/ui/HelpDialog.ui:298 220 | msgid "" 221 | "They are denoted as an extra digit before the user, group and others " 222 | "permissions. Can Either be 0, 4, 2, 1 or any combination of them." 223 | msgstr "" 224 | 225 | #: data/ui/HelpDialog.ui:308 226 | msgid "Symbolical representation:" 227 | msgstr "" 228 | 229 | #: data/ui/HelpDialog.ui:324 230 | msgid "Goes where 'x' normally is for the user" 231 | msgstr "" 232 | 233 | #: data/ui/HelpDialog.ui:330 234 | msgid "Goes where 'x' normally is for the group" 235 | msgstr "" 236 | 237 | #: data/ui/HelpDialog.ui:336 238 | msgid "Goes where 'x' normally is for others" 239 | msgstr "" 240 | 241 | #: data/ui/HelpDialog.ui:344 242 | msgid "Symbolic: -rwsr-Sr-t" 243 | msgstr "" 244 | 245 | #: data/ui/HelpDialog.ui:354 246 | msgid "Numeric: 7745" 247 | msgstr "" 248 | 249 | #: data/ui/HelpDialog.ui:370 250 | msgid "" 251 | "Represented as '4' numerically. Symbolically, it is either 's' if the owner " 252 | "has execute permissions or 'S' if not." 253 | msgstr "" 254 | 255 | #: data/ui/HelpDialog.ui:376 256 | msgid "" 257 | "Represented as '2' numerically. Symbolically, it is either 's' if the group " 258 | "has execute permissions or 'S' if not." 259 | msgstr "" 260 | 261 | #: data/ui/HelpDialog.ui:382 262 | msgid "" 263 | "Represented as '1' numerically. Symbolically, it is either 't' if the others " 264 | "have execute permissions or 'T' if not." 265 | msgstr "" 266 | 267 | #: data/ui/HelpDialog.ui:390 268 | msgid "Example commands" 269 | msgstr "" 270 | 271 | #: data/ui/HelpDialog.ui:399 272 | msgid "chmod 7745 (file name)" 273 | msgstr "" 274 | 275 | #: data/ui/HelpDialog.ui:409 276 | msgid "Further reading" 277 | msgstr "" 278 | 279 | #: data/ui/Window.ui:4 data/ui/Window.ui:44 280 | #: data/io.github.ronniedroid.concessio.desktop:3 281 | #: data/io.github.ronniedroid.concessio.metainfo.xml:5 src/application.js:70 282 | msgid "Concessio" 283 | msgstr "" 284 | 285 | #: data/ui/Window.ui:52 data/io.github.ronniedroid.concessio.desktop:4 286 | #: data/io.github.ronniedroid.concessio.metainfo.xml:6 287 | msgid "Understand file permissions" 288 | msgstr "" 289 | 290 | #: data/ui/Window.ui:57 291 | msgid "Get started" 292 | msgstr "" 293 | 294 | #: data/ui/Window.ui:87 295 | msgid "Open" 296 | msgstr "" 297 | 298 | #: data/ui/Window.ui:96 299 | msgid "Main Menu" 300 | msgstr "" 301 | 302 | #: data/ui/Window.ui:144 data/ui/ShortcutsWindow.ui:42 303 | msgid "Keyboard Shortcuts" 304 | msgstr "" 305 | 306 | #: data/ui/Window.ui:148 307 | msgid "About" 308 | msgstr "" 309 | 310 | #: data/ui/ShortcutsWindow.ui:8 311 | msgid "File" 312 | msgstr "" 313 | 314 | #: data/ui/ShortcutsWindow.ui:11 315 | msgid "Open File" 316 | msgstr "" 317 | 318 | #: data/ui/ShortcutsWindow.ui:12 319 | msgid "Open file chooser dialog" 320 | msgstr "" 321 | 322 | #: data/ui/ShortcutsWindow.ui:20 323 | msgid "General" 324 | msgstr "" 325 | 326 | #: data/ui/ShortcutsWindow.ui:23 327 | msgid "Quit App" 328 | msgstr "" 329 | 330 | #: data/ui/ShortcutsWindow.ui:29 331 | msgid "Close Window" 332 | msgstr "" 333 | 334 | #: data/ui/ShortcutsWindow.ui:35 335 | msgid "Help dialog" 336 | msgstr "" 337 | 338 | #: data/ui/ShortcutsWindow.ui:36 339 | msgid "Display the help dialog" 340 | msgstr "" 341 | 342 | #: data/ui/ShortcutsWindow.ui:43 343 | msgid "Display this keyboard shortcuts window" 344 | msgstr "" 345 | 346 | #: data/io.github.ronniedroid.concessio.desktop:9 347 | msgid "Permissions;Convertor;Calculator;" 348 | msgstr "" 349 | 350 | #: data/io.github.ronniedroid.concessio.metainfo.xml:11 src/application.js:74 351 | msgid "" 352 | "Concessio helps you understand and convert between unix permissions " 353 | "representations" 354 | msgstr "" 355 | 356 | #: data/io.github.ronniedroid.concessio.metainfo.xml:13 357 | msgid "" 358 | "Convert between symbolic and numeric representations of UNIX file permissions" 359 | msgstr "" 360 | 361 | #: data/io.github.ronniedroid.concessio.metainfo.xml:14 362 | msgid "Use toggle buttons to update the symbolic and numeric fields" 363 | msgstr "" 364 | 365 | #: data/io.github.ronniedroid.concessio.metainfo.xml:15 366 | msgid "Open a file to read it's permissions and convert them" 367 | msgstr "" 368 | 369 | #: data/io.github.ronniedroid.concessio.metainfo.xml:16 370 | msgid "Open the help dialog to read and understand the UNIX permissions system" 371 | msgstr "" 372 | 373 | #: data/io.github.ronniedroid.concessio.metainfo.xml:30 374 | msgid "" 375 | "Application main page converting between numeric and symbolic permission" 376 | msgstr "" 377 | 378 | #: data/io.github.ronniedroid.concessio.metainfo.xml:34 379 | msgid "Application help page, explaining unix permissions" 380 | msgstr "" 381 | 382 | #. Translators: Replace "translator-credits" with your names, one name per line 383 | #: src/application.js:84 384 | msgid "translator-credits" 385 | msgstr "" 386 | 387 | #: src/application.js:87 388 | msgid "Special thanks to" 389 | msgstr "" 390 | 391 | #: src/window.js:141 392 | msgid "Copied to clipboard!" 393 | msgstr "" 394 | 395 | #: src/window.js:162 396 | msgid "Failed to open file." 397 | msgstr "" 398 | -------------------------------------------------------------------------------- /po/ar.po: -------------------------------------------------------------------------------- 1 | # Arabic translations for io.github.ronniedroid.concessio package. 2 | # Copyright (C) 2024 THE io.github.ronniedroid.concessio'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the io.github.ronniedroid.concessio package. 4 | # Automatically generated, 2024. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: io.github.ronniedroid.concessio\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2024-09-17 15:39+0300\n" 11 | "PO-Revision-Date: 2024-09-20 17:52+0300\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: none\n" 14 | "Language: ar\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "X-Generator: Poedit 3.4.4\n" 19 | 20 | #: data/ui/BoxedList.ui:12 data/ui/HelpDialog.ui:67 21 | msgid "User" 22 | msgstr "المستخدم" 23 | 24 | #: data/ui/BoxedList.ui:21 data/ui/BoxedList.ui:89 data/ui/BoxedList.ui:157 25 | msgid "Read" 26 | msgstr "قراءة" 27 | 28 | #: data/ui/BoxedList.ui:36 data/ui/BoxedList.ui:104 data/ui/BoxedList.ui:172 29 | msgid "Write" 30 | msgstr "كتابة" 31 | 32 | #: data/ui/BoxedList.ui:51 data/ui/BoxedList.ui:119 data/ui/BoxedList.ui:187 33 | msgid "Execute" 34 | msgstr "تنفيذ" 35 | 36 | #: data/ui/BoxedList.ui:80 data/ui/HelpDialog.ui:78 37 | msgid "Group" 38 | msgstr "المجموعة" 39 | 40 | #: data/ui/BoxedList.ui:148 data/ui/HelpDialog.ui:89 41 | msgid "Others" 42 | msgstr "الاَخرون" 43 | 44 | #: data/ui/BoxedList.ui:247 data/ui/HelpDialog.ui:261 45 | msgid "" 46 | "Executes the file with the permissions of the file owner, not the user " 47 | "running it." 48 | msgstr "يقوم بتنفيذ الملف بصلاحيات مالك الملف، وليس المستخدم الذي يقوم بتشغيله." 49 | 50 | #: data/ui/BoxedList.ui:288 data/ui/HelpDialog.ui:267 51 | msgid "" 52 | "Executes the file with the permissions of the file's group, or ensures new " 53 | "files in a directory inherit the group." 54 | msgstr "" 55 | "يقوم بتنفيذ الملف بصلاحيات المجموعة، أو يضمن أن الملفات الجديدة في الدليل ترث " 56 | "نفس المجموعة." 57 | 58 | #: data/ui/BoxedList.ui:329 data/ui/HelpDialog.ui:273 59 | msgid "" 60 | "Allows only the file owner or directory owner to delete files in the " 61 | "directory, even if others have write permissions. Only applies to directories " 62 | "and has no effect on files." 63 | msgstr "" 64 | "يسمح فقط لمالك الملف أو مالك الدليل بحذف الملفات الموجودة في الدليل، حتى لو " 65 | "كان لدى الآخرين أذونات الكتابة. ينطبق فقط على الدلائل وليس له تأثير على " 66 | "الملفات." 67 | 68 | #: data/ui/Form.ui:16 69 | msgid "Numeric" 70 | msgstr "رقمي" 71 | 72 | #: data/ui/Form.ui:25 data/ui/Form.ui:49 73 | msgid "Copy value" 74 | msgstr "نسخ القيمة" 75 | 76 | #: data/ui/Form.ui:40 77 | msgid "Symbolic" 78 | msgstr "رمزي" 79 | 80 | #: data/ui/HelpDialog.ui:13 data/ui/Window.ui:140 81 | msgid "Help" 82 | msgstr "مساعدة" 83 | 84 | #: data/ui/HelpDialog.ui:37 85 | msgid "Unix Permissions" 86 | msgstr "صلاحيات يونكس" 87 | 88 | #: data/ui/HelpDialog.ui:46 89 | msgid "" 90 | "The Unix permissions system is used to grant granulated access to file and " 91 | "directories on a Unix-like operating system" 92 | msgstr "" 93 | "يُستخدم نظام صلاحيات يونكس لمنح الوصول المجزأ إلى الملفات والمجلدات على نظام " 94 | "تشغيل مشابه ليونكس" 95 | 96 | #: data/ui/HelpDialog.ui:52 97 | msgid "Permissions are granted to three groups:" 98 | msgstr "يتم منح الصلاحيات إلى ثلاث مجموعات:" 99 | 100 | #: data/ui/HelpDialog.ui:68 101 | msgid "The owner of the file" 102 | msgstr "مالك الملف" 103 | 104 | #: data/ui/HelpDialog.ui:79 105 | msgid "A group of users who share access to the file" 106 | msgstr "مجموعة من المستخدمين الذين يشاركون في الوصول إلى الملف" 107 | 108 | #: data/ui/HelpDialog.ui:90 109 | msgid "All other users on the system" 110 | msgstr "جميع المستخدمين الاَخرين على النظام" 111 | 112 | #: data/ui/HelpDialog.ui:102 113 | msgid "The types of permissions are:" 114 | msgstr "أنواع الصلاحيات هي:" 115 | 116 | #: data/ui/HelpDialog.ui:117 117 | msgid "Read (Symbolic: r, Numeric: 4)" 118 | msgstr "قراءة (رقمي: 4، رمزي r)" 119 | 120 | #: data/ui/HelpDialog.ui:118 121 | msgid "Allows viewing the file's contents or listing a directory's contents" 122 | msgstr "يسمح بعرض محتويات الملف أو سرد محتويات المجلد" 123 | 124 | #: data/ui/HelpDialog.ui:128 125 | msgid "Write (Symbolically: w, Numerically: 2)" 126 | msgstr "كتابة (رقمي: 2، رمزي: w)" 127 | 128 | #: data/ui/HelpDialog.ui:129 129 | msgid "" 130 | "Allows modifying the file's contents or creating/deleting files within a " 131 | "directory" 132 | msgstr "يسمح بتعديل محتويات الملف أو إنشاء/حذف الملفات داخل المجلد" 133 | 134 | #: data/ui/HelpDialog.ui:139 135 | msgid "Execute (Symbolically: x, Numerically: 1)" 136 | msgstr "تنفيذ (رقمي: 1، رمزي: x)" 137 | 138 | #: data/ui/HelpDialog.ui:140 139 | msgid "Allows running the file as a program" 140 | msgstr "يسمح بتشغيل الملف كبرنامج" 141 | 142 | #: data/ui/HelpDialog.ui:153 143 | msgid "" 144 | "Permissions can either be represented symbolically or numerically. Symbolic " 145 | "permissions are represented as a string of ten characters, and numeric is " 146 | "represented by three numbers (octal notation) for Example:" 147 | msgstr "" 148 | "يمكن تمثيل الصلاحيات إما بشكل رمزي أو رقمي. يتم تمثيل الصلاحيات الرمزية " 149 | "كسلسلة من عشرة أحرف، بينما يتم تمثيل الصلاحيات الرقمية بثلاثة أرقام (ترميز " 150 | "ثماني) على سبيل المثال:" 151 | 152 | #: data/ui/HelpDialog.ui:159 153 | msgid "Symbolic: -rwxr-xr--" 154 | msgstr "رمزي: --rwxr-xr-" 155 | 156 | #: data/ui/HelpDialog.ui:169 157 | msgid "Numeric: 754" 158 | msgstr "رقمي: 754" 159 | 160 | #: data/ui/HelpDialog.ui:184 161 | msgid "First character, the file type" 162 | msgstr "الحرف الاولو نوع الملف" 163 | 164 | #: data/ui/HelpDialog.ui:185 165 | msgid "can either be '-' for file or 'd' for directory" 166 | msgstr "يمكن ان يكون '-' للملف او 'd' للمجلد" 167 | 168 | #: data/ui/HelpDialog.ui:190 169 | msgid "First three positions (after file type)" 170 | msgstr "المواضغ الثلاثة الأولى (بعد نوع الملف)" 171 | 172 | #: data/ui/HelpDialog.ui:191 173 | msgid "" 174 | "The read, write and execute permissions for the user, here we have 'rwx', " 175 | "which translated to 4+2+1 and adds to 7" 176 | msgstr "" 177 | "صلاحيات القراءة والكتابة والتنفيذ للمستخدم، هنا لدينا 'rwx'، والتي تترجم إلى " 178 | "4+2+1 وتساوي 7" 179 | 180 | #: data/ui/HelpDialog.ui:196 181 | msgid "Second three positions" 182 | msgstr "الواضع الثلالثة الثانية" 183 | 184 | #: data/ui/HelpDialog.ui:197 185 | msgid "" 186 | "The read, write and execute permissions for the group, here we have 'r-x', " 187 | "which translated to 4+0+1 and adds to 5" 188 | msgstr "" 189 | "صلاحيات القراءة والكتابة والتنفيذ للمجموعة، هنا لدينا 'r-x'، والتي تترجم إلى " 190 | "4+0+1 وتساوي 5" 191 | 192 | #: data/ui/HelpDialog.ui:202 193 | msgid "Last three positions" 194 | msgstr "المواضع الثلاثة الأخيرة" 195 | 196 | #: data/ui/HelpDialog.ui:203 197 | msgid "" 198 | "The read, write and execute permissions for other users, here we have 'r--', " 199 | "which translated to 4+0+0 and adds to 4" 200 | msgstr "" 201 | "صلاحيات القراءة والكتابة والتنفيذ للمستخدمين الآخرين، هنا لدينا 'r--'، والتي " 202 | "تترجم إلى 4+0+0 وتساوي 4" 203 | 204 | #: data/ui/HelpDialog.ui:211 205 | msgid "Example command" 206 | msgstr "أمر نموذجي" 207 | 208 | #: data/ui/HelpDialog.ui:220 209 | msgid "chmod 754 (file name)" 210 | msgstr "(اسم الملف) chmod 754" 211 | 212 | #: data/ui/HelpDialog.ui:230 213 | msgid "Special Permissions" 214 | msgstr "صلاحيات يونكس" 215 | 216 | #: data/ui/HelpDialog.ui:239 217 | msgid "" 218 | "Special permissions make up a fourth access level in addition to user, group, " 219 | "and other, they allow for additional privileges over the standard permission " 220 | "sets" 221 | msgstr "" 222 | "تشكل الصلاحيات الخاصة مستوى وصول رابعًا بالإضافة إلى المستخدم والمجموعة " 223 | "والآخرين، فهي تسمح بامتيازات إضافية على مجموعات الصلاحيات القياسية" 224 | 225 | #: data/ui/HelpDialog.ui:245 226 | msgid "The three special permissions are:" 227 | msgstr "الصلاحيات الخاصة الثلاثة هي:" 228 | 229 | #: data/ui/HelpDialog.ui:281 230 | msgid "Special permissions can be represented symbolically or numerically." 231 | msgstr "يمكن تمثيل الصلاحيات الخاصة رمزيًا أو رقميًا." 232 | 233 | #: data/ui/HelpDialog.ui:288 234 | msgid "Numeric representation:" 235 | msgstr "التمثيل الرقمي:" 236 | 237 | #: data/ui/HelpDialog.ui:298 238 | msgid "" 239 | "They are denoted as an extra digit before the user, group and others " 240 | "permissions. Can Either be 0, 4, 2, 1 or any combination of them." 241 | msgstr "" 242 | "يتم الإشارة إليها كرقم إضافي قبل صلاحيات المستخدم والمجموعة والآخرين. يمكن أن " 243 | "تكون إما 0 أو 4 أو 2 أو 1 أو أي تركيبة منها." 244 | 245 | #: data/ui/HelpDialog.ui:308 246 | msgid "Symbolical representation:" 247 | msgstr "التمثيل الرمزي:" 248 | 249 | #: data/ui/HelpDialog.ui:324 250 | msgid "Goes where 'x' normally is for the user" 251 | msgstr "يقع في المكان الذي يوجد فيه 'x' عادةً للمستخدم" 252 | 253 | #: data/ui/HelpDialog.ui:330 254 | msgid "Goes where 'x' normally is for the group" 255 | msgstr "يقع في المكان الذي يوجد فيه 'x' عادةً للمجموعة" 256 | 257 | #: data/ui/HelpDialog.ui:336 258 | msgid "Goes where 'x' normally is for others" 259 | msgstr "يقع في المكان الذي يوجد فيه 'x' عادةً للاَحرين" 260 | 261 | #: data/ui/HelpDialog.ui:344 262 | msgid "Symbolic: -rwsr-Sr-t" 263 | msgstr "رمزي: rwsr-Sr-t-" 264 | 265 | #: data/ui/HelpDialog.ui:354 266 | msgid "Numeric: 7745" 267 | msgstr "رقمي: 7755" 268 | 269 | #: data/ui/HelpDialog.ui:370 270 | msgid "" 271 | "Represented as '4' numerically. Symbolically, it is either 's' if the owner " 272 | "has execute permissions or 'S' if not." 273 | msgstr "" 274 | "يتم تمثيله ب \"4\" رقميا. ورمزيا، يكون \"s\" إذا كان المالك لديه صلاحيات " 275 | "التنفيذ أو \"S\" إذا لم يكن لديه صلاحيات التنفيذ." 276 | 277 | #: data/ui/HelpDialog.ui:376 278 | msgid "" 279 | "Represented as '2' numerically. Symbolically, it is either 's' if the group " 280 | "has execute permissions or 'S' if not." 281 | msgstr "" 282 | "يتم تمثيله ب \"2\" رقميا. ورمزيا \"s\" إذا كانت المجموعة لديها صلاحيات " 283 | "التنفيذ أو \"S\" إذا لم يكن لديها صلاحيات التنفيذ." 284 | 285 | #: data/ui/HelpDialog.ui:382 286 | msgid "" 287 | "Represented as '1' numerically. Symbolically, it is either 't' if the others " 288 | "have execute permissions or 'T' if not." 289 | msgstr "" 290 | "يتم تمثيله ب \"1\" رقميا. ورمزيا \"t\" إذا كان الآخرون لديهم صلاحيات التنفيذ " 291 | "أو \"T\" إذا لم يكن لديهم صلاحيات التنفيذ." 292 | 293 | #: data/ui/HelpDialog.ui:390 294 | msgid "Example commands" 295 | msgstr "أمر نموذجي" 296 | 297 | #: data/ui/HelpDialog.ui:399 298 | msgid "chmod 7745 (file name)" 299 | msgstr "(اسم الملف) chmod 7745" 300 | 301 | #: data/ui/HelpDialog.ui:409 302 | msgid "Further reading" 303 | msgstr "قراءة إضافية" 304 | 305 | #: data/ui/Window.ui:4 data/ui/Window.ui:44 306 | #: data/io.github.ronniedroid.concessio.desktop:3 307 | #: data/io.github.ronniedroid.concessio.metainfo.xml:5 src/application.js:70 308 | msgid "Concessio" 309 | msgstr "كونسيسيو" 310 | 311 | #: data/ui/Window.ui:52 data/io.github.ronniedroid.concessio.desktop:4 312 | #: data/io.github.ronniedroid.concessio.metainfo.xml:6 313 | msgid "Understand file permissions" 314 | msgstr "أفهم صلاحيات الملفات" 315 | 316 | #: data/ui/Window.ui:57 317 | msgid "Get started" 318 | msgstr "ابدأ الاَن" 319 | 320 | #: data/ui/Window.ui:87 321 | msgid "Open" 322 | msgstr "فتح الملف" 323 | 324 | #: data/ui/Window.ui:96 325 | msgid "Main Menu" 326 | msgstr "القائمة الرئيسية" 327 | 328 | #: data/ui/Window.ui:144 data/ui/ShortcutsWindow.ui:42 329 | msgid "Keyboard Shortcuts" 330 | msgstr "اختصارات لوحة المفاتيح" 331 | 332 | #: data/ui/Window.ui:148 333 | msgid "About" 334 | msgstr "حول" 335 | 336 | #: data/ui/ShortcutsWindow.ui:8 337 | msgid "File" 338 | msgstr "الملف" 339 | 340 | #: data/ui/ShortcutsWindow.ui:11 341 | msgid "Open File" 342 | msgstr "فتح الملف" 343 | 344 | #: data/ui/ShortcutsWindow.ui:12 345 | msgid "Open file chooser dialog" 346 | msgstr "فتح مربع حوار اختيار الملف" 347 | 348 | #: data/ui/ShortcutsWindow.ui:20 349 | msgid "General" 350 | msgstr "عام" 351 | 352 | #: data/ui/ShortcutsWindow.ui:23 353 | msgid "Quit App" 354 | msgstr "أغلاق التطبيق" 355 | 356 | #: data/ui/ShortcutsWindow.ui:29 357 | msgid "Close Window" 358 | msgstr "إغلاق النافذة" 359 | 360 | #: data/ui/ShortcutsWindow.ui:35 361 | msgid "Help dialog" 362 | msgstr "مربع حوار المساعدة" 363 | 364 | #: data/ui/ShortcutsWindow.ui:36 365 | msgid "Display the help dialog" 366 | msgstr "عرض مربع الحوار للمساعدة" 367 | 368 | #: data/ui/ShortcutsWindow.ui:43 369 | msgid "Display this keyboard shortcuts window" 370 | msgstr "عرض نافذة اختصارات لوحة المفاتيح هذه" 371 | 372 | #: data/io.github.ronniedroid.concessio.desktop:9 373 | msgid "Permissions;Convertor;Calculator;" 374 | msgstr "صلاحيات;محول;حاسبة;" 375 | 376 | #: data/io.github.ronniedroid.concessio.metainfo.xml:11 src/application.js:74 377 | msgid "" 378 | "Concessio helps you understand and convert between unix permissions " 379 | "representations" 380 | msgstr "يساعدك كونسيسيو على فهم و التحويل بين تمثيلات صلاحيات اليونكس" 381 | 382 | #: data/io.github.ronniedroid.concessio.metainfo.xml:13 383 | msgid "" 384 | "Convert between symbolic and numeric representations of UNIX file permissions" 385 | msgstr "التحويل بين التمثيلات الرمزية والعددية لصلاحيات ملفات اليونكس" 386 | 387 | #: data/io.github.ronniedroid.concessio.metainfo.xml:14 388 | msgid "Use toggle buttons to update the symbolic and numeric fields" 389 | msgstr "استخدم أزرار التبديل لتحديث الحقول الرمزية والعددية" 390 | 391 | #: data/io.github.ronniedroid.concessio.metainfo.xml:15 392 | msgid "Open a file to read it's permissions and convert them" 393 | msgstr "افتح ملفًا لقراءة صلاحياته وتحويلها" 394 | 395 | #: data/io.github.ronniedroid.concessio.metainfo.xml:16 396 | msgid "Open the help dialog to read and understand the UNIX permissions system" 397 | msgstr "افتح مربع حوار المساعدة لقراءة وفهم نظام صلاحيات اليونكس" 398 | 399 | #: data/io.github.ronniedroid.concessio.metainfo.xml:30 400 | msgid "Application main page converting between numeric and symbolic permission" 401 | msgstr "صفحة التطبيق الرئيسية للتحويل بين الصلاحيات الرمزية و الرقمية" 402 | 403 | #: data/io.github.ronniedroid.concessio.metainfo.xml:34 404 | msgid "Application help page, explaining unix permissions" 405 | msgstr "صفحة المساعدة للتطبيق, شرح صلاحيات يونكس" 406 | 407 | #. Translators: Replace "translator-credits" with your names, one name per line 408 | #: src/application.js:84 409 | msgid "translator-credits" 410 | msgstr "روني نيسان https://github.com/ronniedroid/" 411 | 412 | #: src/application.js:87 413 | msgid "Special thanks to" 414 | msgstr "شكر خاص ل" 415 | 416 | #: src/window.js:141 417 | msgid "Copied to clipboard!" 418 | msgstr "تم النسخ إلى الحافظة!" 419 | 420 | #: src/window.js:162 421 | msgid "Failed to open file." 422 | msgstr "فشل في فتح الملف." 423 | 424 | #~ msgid "open" 425 | #~ msgstr "فتح" 426 | 427 | #~ msgid "GNOME Desgin Team" 428 | #~ msgstr "فريق التصميم جنوم" 429 | 430 | #~ msgid "Understand File Permissions" 431 | #~ msgstr "أفهم صلاحيات الملفات" 432 | -------------------------------------------------------------------------------- /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 io.github.ronniedroid.concessio package. 4 | # vikdevelop , 2024. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: io.github.ronniedroid.concessio\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2024-09-18 8:39+UTC+2\n" 12 | "PO-Revision-Date: 2024-09-20 17:53+0300\n" 13 | "Last-Translator: vikdevelop \n" 14 | "Language-Team: \n" 15 | "Language: cs\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "X-Generator: Poedit 3.4.4\n" 20 | 21 | #: data/ui/BoxedList.ui:12 data/ui/HelpDialog.ui:67 22 | msgid "User" 23 | msgstr "Uživatel" 24 | 25 | #: data/ui/BoxedList.ui:21 data/ui/BoxedList.ui:89 data/ui/BoxedList.ui:157 26 | msgid "Read" 27 | msgstr "Přečíst" 28 | 29 | #: data/ui/BoxedList.ui:36 data/ui/BoxedList.ui:104 data/ui/BoxedList.ui:172 30 | msgid "Write" 31 | msgstr "Zapsat" 32 | 33 | #: data/ui/BoxedList.ui:51 data/ui/BoxedList.ui:119 data/ui/BoxedList.ui:187 34 | msgid "Execute" 35 | msgstr "Provést" 36 | 37 | #: data/ui/BoxedList.ui:80 data/ui/HelpDialog.ui:78 38 | msgid "Group" 39 | msgstr "Skupina" 40 | 41 | #: data/ui/BoxedList.ui:148 data/ui/HelpDialog.ui:89 42 | msgid "Others" 43 | msgstr "Ostatní" 44 | 45 | #: data/ui/BoxedList.ui:247 data/ui/HelpDialog.ui:261 46 | msgid "Executes the file with the permissions of the file owner, not the user running it." 47 | msgstr "Spustí soubor s právy vlastníka souboru, nikoli uživatele který jej spouští." 48 | 49 | #: data/ui/BoxedList.ui:288 data/ui/HelpDialog.ui:267 50 | msgid "" 51 | "Executes the file with the permissions of the file's group, or ensures new files in a directory inherit the group." 52 | msgstr "Spustí soubor s právy skupiny souboru nebo zajistí nové soubory v adresáři zdědí tuto skupinu." 53 | 54 | #: data/ui/BoxedList.ui:329 data/ui/HelpDialog.ui:273 55 | msgid "" 56 | "Allows only the file owner or directory owner to delete files in the directory, even if others have write " 57 | "permissions. Only applies to directories and has no effect on files." 58 | msgstr "" 59 | "Umožňuje mazat soubory v adresáři, i když ostatní mají oprávnění k zápisu. Platí pouze pro adresáře a " 60 | "nemá vliv na soubory." 61 | 62 | #: data/ui/Form.ui:16 63 | msgid "Numeric" 64 | msgstr "Číselné" 65 | 66 | #: data/ui/Form.ui:25 data/ui/Form.ui:49 67 | msgid "Copy value" 68 | msgstr "Zkopírovat hodnotu" 69 | 70 | #: data/ui/Form.ui:40 71 | msgid "Symbolic" 72 | msgstr "Symbolické" 73 | 74 | #: data/ui/HelpDialog.ui:13 data/ui/Window.ui:140 75 | msgid "Help" 76 | msgstr "Pomoc" 77 | 78 | #: data/ui/HelpDialog.ui:37 79 | msgid "Unix Permissions" 80 | msgstr "Unixová oprávnění" 81 | 82 | #: data/ui/HelpDialog.ui:46 83 | msgid "" 84 | "The Unix permissions system is used to grant granulated access to file and directories on a Unix-like operating " 85 | "system" 86 | msgstr "" 87 | "Systém oprávnění systému Unix se používá k udělování granulovaného přístupu k souborům a adresářům v " 88 | "operačním systému podobném Unixu" 89 | 90 | #: data/ui/HelpDialog.ui:52 91 | msgid "Permissions are granted to three groups:" 92 | msgstr "Oprávnění jsou garantovaná pro tři skupiny:" 93 | 94 | #: data/ui/HelpDialog.ui:68 95 | msgid "The owner of the file" 96 | msgstr "Vlastník souboru" 97 | 98 | #: data/ui/HelpDialog.ui:79 99 | msgid "A group of users who share access to the file" 100 | msgstr "Skupina uživatelů, která sdílí přístup k souboru" 101 | 102 | #: data/ui/HelpDialog.ui:90 103 | msgid "All other users on the system" 104 | msgstr "Všichni ostatní uživatelé systému" 105 | 106 | #: data/ui/HelpDialog.ui:102 107 | msgid "The types of permissions are:" 108 | msgstr "Druhy oprávnění jsou:" 109 | 110 | #: data/ui/HelpDialog.ui:117 111 | msgid "Read (Symbolic: r, Numeric: 4)" 112 | msgstr "Číst (Symbolický: r, číselný: 4" 113 | 114 | #: data/ui/HelpDialog.ui:118 115 | msgid "Allows viewing the file's contents or listing a directory's contents" 116 | msgstr "Umožňuje zobrazení obsahu souboru nebo zobrazení obsahu adresáře" 117 | 118 | #: data/ui/HelpDialog.ui:128 119 | msgid "Write (Symbolically: w, Numerically: 2)" 120 | msgstr "Zapisovat (Symbolicky: w, Číselně: 2)" 121 | 122 | #: data/ui/HelpDialog.ui:129 123 | msgid "Allows modifying the file's contents or creating/deleting files within a directory" 124 | msgstr "Umožňuje úpravu obsahu souboru nebo vytváření/mazání souborů v rámci adresáře" 125 | 126 | #: data/ui/HelpDialog.ui:139 127 | msgid "Execute (Symbolically: x, Numerically: 1)" 128 | msgstr "Provést: (Symbolicky: x, Číselně: 1)" 129 | 130 | #: data/ui/HelpDialog.ui:140 131 | msgid "Allows running the file as a program" 132 | msgstr "Umožňuje spouštění souboru jako programu" 133 | 134 | #: data/ui/HelpDialog.ui:153 135 | msgid "" 136 | "Permissions can either be represented symbolically or numerically. Symbolic permissions are represented as a string " 137 | "of ten characters, and numeric is represented by three numbers (octal notation) for Example:" 138 | msgstr "" 139 | "Oprávnění mohou být reprezentována buď symbolicky, nebo číselně. Symbolické oprávnění jsou reprezentována " 140 | "jako řetězec deseti znaků a číselná jsou reprezentována třemi čísly (osmičková notace), například:" 141 | 142 | #: data/ui/HelpDialog.ui:159 143 | msgid "Symbolic: -rwxr-xr--" 144 | msgstr "Symbolické: -rwxr-xr--" 145 | 146 | #: data/ui/HelpDialog.ui:169 147 | msgid "Numeric: 754" 148 | msgstr "Číselné: 754" 149 | 150 | #: data/ui/HelpDialog.ui:184 151 | msgid "First character, the file type" 152 | msgstr "První znak, druh souboru" 153 | 154 | #: data/ui/HelpDialog.ui:185 155 | msgid "can either be '-' for file or 'd' for directory" 156 | msgstr "může být buď '-' pro soubor, nebo 'd' pro adresář" 157 | 158 | #: data/ui/HelpDialog.ui:190 159 | msgid "First three positions (after file type)" 160 | msgstr "První tři pozice (za typem souboru)" 161 | 162 | #: data/ui/HelpDialog.ui:191 163 | msgid "" 164 | "The read, write and execute permissions for the user, here we have 'rwx', which translated to 4+2+1 and adds to 7" 165 | msgstr "" 166 | "Oprávnění ke čtení, zápisu a spuštění pro uživatele, zde máme 'rwx', což je v překladu 4+2+1 a dává to 7" 167 | 168 | #: data/ui/HelpDialog.ui:196 169 | msgid "Second three positions" 170 | msgstr "Druhé tři pozice" 171 | 172 | #: data/ui/HelpDialog.ui:197 173 | msgid "" 174 | "The read, write and execute permissions for the group, here we have 'r-x', which translated to 4+0+1 and adds to 5" 175 | msgstr "" 176 | "Oprávnění ke čtení, zápisu a spuštění pro skupinu, zde máme 'r-x', což se přeloží jako 4+0+1 a přičte se k čí" 177 | "slu 5" 178 | 179 | #: data/ui/HelpDialog.ui:202 180 | msgid "Last three positions" 181 | msgstr "Poslední tři pozice" 182 | 183 | #: data/ui/HelpDialog.ui:203 184 | msgid "" 185 | "The read, write and execute permissions for other users, here we have 'r--', which translated to 4+0+0 and adds to 4" 186 | msgstr "" 187 | "Oprávnění ke čtení, zápisu a spuštění pro ostatní uživatele, zde máme 'r--', což se přeloží jako 4+0+0 a " 188 | "přičte se k číslu 4" 189 | 190 | #: data/ui/HelpDialog.ui:211 191 | msgid "Example command" 192 | msgstr "Příklad příkazu" 193 | 194 | #: data/ui/HelpDialog.ui:220 195 | msgid "chmod 754 (file name)" 196 | msgstr "chmod 754 (název souboru)" 197 | 198 | #: data/ui/HelpDialog.ui:230 199 | msgid "Special Permissions" 200 | msgstr "Zvláštní oprávnění" 201 | 202 | #: data/ui/HelpDialog.ui:239 203 | msgid "" 204 | "Special permissions make up a fourth access level in addition to user, group, and other, they allow for additional " 205 | "privileges over the standard permission sets" 206 | msgstr "" 207 | "Speciální oprávnění tvoří čtvrtou úroveň přístupu vedle uživatelské, skupiny a dalších, umožňují další " 208 | "oprávnění nad rámec standardních sady oprávnění" 209 | 210 | #: data/ui/HelpDialog.ui:245 211 | msgid "The three special permissions are:" 212 | msgstr "Třemi zvláštními oprávněními jsou:" 213 | 214 | #: data/ui/HelpDialog.ui:281 215 | msgid "Special permissions can be represented symbolically or numerically." 216 | msgstr "Zvláštní oprávnění lze znázornit symbolicky nebo číselně." 217 | 218 | #: data/ui/HelpDialog.ui:288 219 | msgid "Numeric representation:" 220 | msgstr "Číselné znázornění:" 221 | 222 | #: data/ui/HelpDialog.ui:298 223 | msgid "" 224 | "They are denoted as an extra digit before the user, group and others permissions. Can Either be 0, 4, 2, 1 or any " 225 | "combination of them." 226 | msgstr "" 227 | "Označují se jako další číslice před uživatelem, skupinou a dalšími oprávnění. Mohou být buď 0, 4, 2, 1 nebo " 228 | "jejich libovolná kombinace." 229 | 230 | #: data/ui/HelpDialog.ui:308 231 | msgid "Symbolical representation:" 232 | msgstr "Symbolické znázornění:" 233 | 234 | #: data/ui/HelpDialog.ui:324 235 | msgid "Goes where 'x' normally is for the user" 236 | msgstr "Přejde na místo, kde se pro uživatele obvykle nachází 'x'" 237 | 238 | #: data/ui/HelpDialog.ui:330 239 | msgid "Goes where 'x' normally is for the group" 240 | msgstr "Přejde na místo, kde se pro skupinu obvykle nachází 'x'" 241 | 242 | #: data/ui/HelpDialog.ui:336 243 | msgid "Goes where 'x' normally is for others" 244 | msgstr "Přejde na místo, kde se pro ostatní uživatele obvykle nachází 'x'" 245 | 246 | #: data/ui/HelpDialog.ui:344 247 | msgid "Symbolic: -rwsr-Sr-t" 248 | msgstr "Symbolické: -rwsr-Sr-t" 249 | 250 | #: data/ui/HelpDialog.ui:354 251 | msgid "Numeric: 7745" 252 | msgstr "Číselné: 7745" 253 | 254 | #: data/ui/HelpDialog.ui:370 255 | msgid "" 256 | "Represented as '4' numerically. Symbolically, it is either 's' if the owner has execute permissions or 'S' if not." 257 | msgstr "" 258 | "Číselně vyjádřeno jako '4'. Symbolicky je to buď 's', pokud je vlastník má oprávnění ke spuštění, nebo 'S', " 259 | "pokud nemá." 260 | 261 | #: data/ui/HelpDialog.ui:376 262 | msgid "" 263 | "Represented as '2' numerically. Symbolically, it is either 's' if the group has execute permissions or 'S' if not." 264 | msgstr "" 265 | "číselně vyjádřeno jako '2'. Symbolicky je to buď 's', pokud je skupina má oprávnění ke spuštění, nebo 'S', " 266 | "pokud nemá." 267 | 268 | #: data/ui/HelpDialog.ui:382 269 | msgid "" 270 | "Represented as '1' numerically. Symbolically, it is either 't' if the others have execute permissions or 'T' if not." 271 | msgstr "" 272 | "číselně vyjádřeno jako '1'. Symbolicky je to buď 't', pokud ostatní mají oprávnění k provádění, nebo 'T', pokud " 273 | "nemají." 274 | 275 | #: data/ui/HelpDialog.ui:390 276 | msgid "Example commands" 277 | msgstr "Příklady příkazů" 278 | 279 | #: data/ui/HelpDialog.ui:399 280 | msgid "chmod 7745 (file name)" 281 | msgstr "chmod 7745 (název souboru)" 282 | 283 | #: data/ui/HelpDialog.ui:409 284 | msgid "Further reading" 285 | msgstr "Další čtení" 286 | 287 | #: data/ui/Window.ui:4 data/ui/Window.ui:44 data/io.github.ronniedroid.concessio.desktop:3 288 | #: data/io.github.ronniedroid.concessio.metainfo.xml:5 src/application.js:70 289 | msgid "Concessio" 290 | msgstr "Concessio" 291 | 292 | #: data/ui/Window.ui:52 data/io.github.ronniedroid.concessio.desktop:4 293 | #: data/io.github.ronniedroid.concessio.metainfo.xml:6 294 | msgid "Understand file permissions" 295 | msgstr "Porozumějte oprávněním souborů" 296 | 297 | #: data/ui/Window.ui:57 298 | msgid "Get started" 299 | msgstr "Začínáme" 300 | 301 | #: data/ui/Window.ui:87 302 | msgid "Open" 303 | msgstr "Otevřít" 304 | 305 | #: data/ui/Window.ui:96 306 | msgid "Main Menu" 307 | msgstr "Hlavní nabídka" 308 | 309 | #: data/ui/Window.ui:144 data/ui/ShortcutsWindow.ui:42 310 | msgid "Keyboard Shortcuts" 311 | msgstr "Klávesové zkratky" 312 | 313 | #: data/ui/Window.ui:148 314 | msgid "About" 315 | msgstr "O aplikaci" 316 | 317 | #: data/ui/ShortcutsWindow.ui:8 318 | msgid "File" 319 | msgstr "Soubor" 320 | 321 | #: data/ui/ShortcutsWindow.ui:11 322 | msgid "Open File" 323 | msgstr "Otevřít soubor" 324 | 325 | #: data/ui/ShortcutsWindow.ui:12 326 | msgid "Open file chooser dialog" 327 | msgstr "Otevřít dialog pro výběr souboru" 328 | 329 | #: data/ui/ShortcutsWindow.ui:20 330 | msgid "General" 331 | msgstr "Obecné" 332 | 333 | #: data/ui/ShortcutsWindow.ui:23 334 | msgid "Quit App" 335 | msgstr "Ukončit aplikaci" 336 | 337 | #: data/ui/ShortcutsWindow.ui:29 338 | msgid "Close Window" 339 | msgstr "Zavřít okno" 340 | 341 | #: data/ui/ShortcutsWindow.ui:35 342 | msgid "Help dialog" 343 | msgstr "Dialog nápovědy" 344 | 345 | #: data/ui/ShortcutsWindow.ui:36 346 | msgid "Display the help dialog" 347 | msgstr "Zobrazit dialog nápovědy" 348 | 349 | #: data/ui/ShortcutsWindow.ui:43 350 | msgid "Display this keyboard shortcuts window" 351 | msgstr "Zobrazit toto okno s klávesovými zkratkami" 352 | 353 | #: data/io.github.ronniedroid.concessio.desktop:9 354 | msgid "Permissions;Convertor;Calculator;" 355 | msgstr "Permissions;Convertor;Calculator;" 356 | 357 | #: data/io.github.ronniedroid.concessio.metainfo.xml:11 src/application.js:74 358 | msgid "Concessio helps you understand and convert between unix permissions representations" 359 | msgstr "Concessio vám pomáhá pochopit a převést mezi oprávněními a znázorněními Unixu" 360 | 361 | #: data/io.github.ronniedroid.concessio.metainfo.xml:13 362 | msgid "Convert between symbolic and numeric representations of UNIX file permissions" 363 | msgstr "Převod mezi symbolickou a číselnou reprezentací oprávnění souborů systému UNIX" 364 | 365 | #: data/io.github.ronniedroid.concessio.metainfo.xml:14 366 | msgid "Use toggle buttons to update the symbolic and numeric fields" 367 | msgstr "K aktualizaci symbolických a číselných polí použijte přepínací tlačítka" 368 | 369 | #: data/io.github.ronniedroid.concessio.metainfo.xml:15 370 | msgid "Open a file to read it's permissions and convert them" 371 | msgstr "Otevření souboru a přečtení jeho oprávnění a jejich konverze" 372 | 373 | #: data/io.github.ronniedroid.concessio.metainfo.xml:16 374 | msgid "Open the help dialog to read and understand the UNIX permissions system" 375 | msgstr "Otevřete dialogové okno nápovědy a přečtěte si systém oprávnění systému UNIX" 376 | 377 | #: data/io.github.ronniedroid.concessio.metainfo.xml:30 378 | msgid "Application main page converting between numeric and symbolic permission" 379 | msgstr "Hlavní stránka aplikace pro převod mezi číselným a symbolickým oprávněním" 380 | 381 | #: data/io.github.ronniedroid.concessio.metainfo.xml:34 382 | msgid "Application help page, explaining unix permissions" 383 | msgstr "Stránka nápovědy k aplikaci, vysvětlující Unixová oprávnění" 384 | 385 | #. Translators: Replace "translator-credits" with your names, one name per line 386 | #: src/application.js:84 387 | msgid "translator-credits" 388 | msgstr "vikdevelop " 389 | 390 | #: src/application.js:87 391 | msgid "Special thanks to" 392 | msgstr "Zvláštní poděkování patří" 393 | 394 | #: src/window.js:141 395 | msgid "Copied to clipboard!" 396 | msgstr "Zkopírováno do schránky!" 397 | 398 | #: src/window.js:162 399 | msgid "Failed to open file." 400 | msgstr "Nepodařilo se otevřít souboru." 401 | -------------------------------------------------------------------------------- /po/nl.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 io.github.ronniedroid.concessio package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: io.github.ronniedroid.concessio\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2024-09-17 15:39+0300\n" 12 | "PO-Revision-Date: 2024-11-20 15:25+0300\n" 13 | "Last-Translator: Heimen Stoffels \n" 14 | "Language-Team: \n" 15 | "Language: nl\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "X-Generator: Poedit 3.4.4\n" 20 | 21 | #: data/ui/BoxedList.ui:12 data/ui/HelpDialog.ui:67 22 | msgid "User" 23 | msgstr "Gebruiker" 24 | 25 | #: data/ui/BoxedList.ui:21 data/ui/BoxedList.ui:89 data/ui/BoxedList.ui:157 26 | msgid "Read" 27 | msgstr "Lezen" 28 | 29 | #: data/ui/BoxedList.ui:36 data/ui/BoxedList.ui:104 data/ui/BoxedList.ui:172 30 | msgid "Write" 31 | msgstr "Schrijven" 32 | 33 | #: data/ui/BoxedList.ui:51 data/ui/BoxedList.ui:119 data/ui/BoxedList.ui:187 34 | msgid "Execute" 35 | msgstr "Uitvoeren" 36 | 37 | #: data/ui/BoxedList.ui:80 data/ui/HelpDialog.ui:78 38 | msgid "Group" 39 | msgstr "Groep" 40 | 41 | #: data/ui/BoxedList.ui:148 data/ui/HelpDialog.ui:89 42 | msgid "Others" 43 | msgstr "Anderen" 44 | 45 | #: data/ui/BoxedList.ui:247 data/ui/HelpDialog.ui:261 46 | msgid "" 47 | "Executes the file with the permissions of the file owner, not the user " 48 | "running it." 49 | msgstr "" 50 | "Voert het bestand uit met de rechten van de eigenaar, niet die van de " 51 | "huidige gebruiker." 52 | 53 | #: data/ui/BoxedList.ui:288 data/ui/HelpDialog.ui:267 54 | msgid "" 55 | "Executes the file with the permissions of the file's group, or ensures new " 56 | "files in a directory inherit the group." 57 | msgstr "" 58 | "Voert het bestand uit met rechten van de groep of zorgt ervoor dat nieuwe " 59 | "bestanden in de map de groepsrechten overnemen." 60 | 61 | #: data/ui/BoxedList.ui:329 data/ui/HelpDialog.ui:273 62 | msgid "" 63 | "Allows only the file owner or directory owner to delete files in the " 64 | "directory, even if others have write permissions. Only applies to " 65 | "directories and has no effect on files." 66 | msgstr "" 67 | "Staat alleen de bestands- of mapeigenaar toe om bestanden te verwijderen, " 68 | "zelfs als anderen over schrijfrechten beschikken. Alleen van toepassing op " 69 | "mappen; niet op bestanden." 70 | 71 | #: data/ui/Form.ui:16 72 | msgid "Numeric" 73 | msgstr "Numeriek" 74 | 75 | #: data/ui/Form.ui:25 data/ui/Form.ui:49 76 | msgid "Copy value" 77 | msgstr "Waarde kopiëren" 78 | 79 | #: data/ui/Form.ui:40 80 | msgid "Symbolic" 81 | msgstr "Symbolisch" 82 | 83 | #: data/ui/HelpDialog.ui:13 data/ui/Window.ui:140 84 | msgid "Help" 85 | msgstr "Hulp" 86 | 87 | #: data/ui/HelpDialog.ui:37 88 | msgid "Unix Permissions" 89 | msgstr "Unixrechten" 90 | 91 | #: data/ui/HelpDialog.ui:46 92 | msgid "" 93 | "The Unix permissions system is used to grant granulated access to file and " 94 | "directories on a Unix-like operating system" 95 | msgstr "" 96 | "Het Unix-rechtensysteem wordt gebruikt om nauwgezette toegang tot bestanden " 97 | "en mappen te verlenen" 98 | 99 | #: data/ui/HelpDialog.ui:52 100 | msgid "Permissions are granted to three groups:" 101 | msgstr "Rechten kunnen binnen drie groepen worden verleend:" 102 | 103 | #: data/ui/HelpDialog.ui:68 104 | msgid "The owner of the file" 105 | msgstr "De eigenaar van het bestand" 106 | 107 | #: data/ui/HelpDialog.ui:79 108 | msgid "A group of users who share access to the file" 109 | msgstr "Een groep gebruikers die toegang tot het bestand heeft" 110 | 111 | #: data/ui/HelpDialog.ui:90 112 | msgid "All other users on the system" 113 | msgstr "Alle andere gebruikers" 114 | 115 | #: data/ui/HelpDialog.ui:102 116 | msgid "The types of permissions are:" 117 | msgstr "De soorten rechten zijn:" 118 | 119 | #: data/ui/HelpDialog.ui:117 120 | msgid "Read (Symbolic: r, Numeric: 4)" 121 | msgstr "Lezen (symbolisch: r - numeriek: 4)" 122 | 123 | #: data/ui/HelpDialog.ui:118 124 | msgid "Allows viewing the file's contents or listing a directory's contents" 125 | msgstr "Staat toe dat bestands- of mapinhoud mag worden bekeken" 126 | 127 | #: data/ui/HelpDialog.ui:128 128 | msgid "Write (Symbolically: w, Numerically: 2)" 129 | msgstr "Schrijven (symbolisch: w - numeriek: 2)" 130 | 131 | #: data/ui/HelpDialog.ui:129 132 | msgid "" 133 | "Allows modifying the file's contents or creating/deleting files within a " 134 | "directory" 135 | msgstr "" 136 | "Staat toe dat bestands- en mapinhoud mag worden aangemaakt, bewerkt of " 137 | "verwijderd" 138 | 139 | #: data/ui/HelpDialog.ui:139 140 | msgid "Execute (Symbolically: x, Numerically: 1)" 141 | msgstr "Uitvoeren (symbolisch: x - numeriek: 1)" 142 | 143 | #: data/ui/HelpDialog.ui:140 144 | msgid "Allows running the file as a program" 145 | msgstr "Staat toe dat een bestand mag worden uitgevoerd als programma" 146 | 147 | #: data/ui/HelpDialog.ui:153 148 | msgid "" 149 | "Permissions can either be represented symbolically or numerically. Symbolic " 150 | "permissions are represented as a string of ten characters, and numeric is " 151 | "represented by three numbers (octal notation) for Example:" 152 | msgstr "" 153 | "Rechter kunnen zowel symbolisch als numeriek worden getoond. Symbolische " 154 | "rechten bestaan uit een tekenreeks van 10 tekens; numerieke uit drie " 155 | "getallen (octaal). Voorbeeld:" 156 | 157 | #: data/ui/HelpDialog.ui:159 158 | msgid "Symbolic: -rwxr-xr--" 159 | msgstr "Symbolisch: -rwxr-xr--" 160 | 161 | #: data/ui/HelpDialog.ui:169 162 | msgid "Numeric: 754" 163 | msgstr "Numeriek: 754" 164 | 165 | #: data/ui/HelpDialog.ui:184 166 | msgid "First character, the file type" 167 | msgstr "Het eerste teken (bestandstype)" 168 | 169 | #: data/ui/HelpDialog.ui:185 170 | msgid "can either be '-' for file or 'd' for directory" 171 | msgstr "kan ‘-’ zijn, wat een bestand aanduidt, of ‘d’, een map" 172 | 173 | #: data/ui/HelpDialog.ui:190 174 | msgid "First three positions (after file type)" 175 | msgstr "Eerste drie plaatsen (na bestandstype)" 176 | 177 | #: data/ui/HelpDialog.ui:191 178 | msgid "" 179 | "The read, write and execute permissions for the user, here we have 'rwx', " 180 | "which translated to 4+2+1 and adds to 7" 181 | msgstr "" 182 | "De lees-, schrijf- en uitvoerrechten van de gebruiker, in dit geval ‘rwx’, " 183 | "wat zich laat vertalen naar 4+2+1=7" 184 | 185 | #: data/ui/HelpDialog.ui:196 186 | msgid "Second three positions" 187 | msgstr "Laatste drie plaatsen" 188 | 189 | #: data/ui/HelpDialog.ui:197 190 | msgid "" 191 | "The read, write and execute permissions for the group, here we have 'r-x', " 192 | "which translated to 4+0+1 and adds to 5" 193 | msgstr "" 194 | "De lees-, schrijf- en uitvoerrechten van de groep, in dit geval ‘r-x’, wat " 195 | "zich laat vertalen naar 4+0+1=5" 196 | 197 | #: data/ui/HelpDialog.ui:202 198 | msgid "Last three positions" 199 | msgstr "Laatste drie plaatsen" 200 | 201 | #: data/ui/HelpDialog.ui:203 202 | msgid "" 203 | "The read, write and execute permissions for other users, here we have 'r--', " 204 | "which translated to 4+0+0 and adds to 4" 205 | msgstr "" 206 | "De lees-, schrijf- en uitvoerrechten van andere gebruikers, in dit geval " 207 | "‘r--’, wat zich laat vertalen naar 4+0+0=4" 208 | 209 | #: data/ui/HelpDialog.ui:211 210 | msgid "Example command" 211 | msgstr "Voorbeeldopdracht" 212 | 213 | #: data/ui/HelpDialog.ui:220 214 | msgid "chmod 754 (file name)" 215 | msgstr "chmod 754 (bestandsnaam)" 216 | 217 | #: data/ui/HelpDialog.ui:230 218 | msgid "Special Permissions" 219 | msgstr "Speciale rechten" 220 | 221 | #: data/ui/HelpDialog.ui:239 222 | msgid "" 223 | "Special permissions make up a fourth access level in addition to user, " 224 | "group, and other, they allow for additional privileges over the standard " 225 | "permission sets" 226 | msgstr "" 227 | "Speciale rechten bieden een vierde toegangsniveau, naast gebruiker, groep en " 228 | "overig. Zo kunnen aanvullende bevoegdheden nauwkeurig worden afgesteld" 229 | 230 | #: data/ui/HelpDialog.ui:245 231 | msgid "The three special permissions are:" 232 | msgstr "De drie speciale rechten zijn als volgt:" 233 | 234 | #: data/ui/HelpDialog.ui:281 235 | msgid "Special permissions can be represented symbolically or numerically." 236 | msgstr "Speciale rechten kunnen zowel symbolisch als numeriek worden getoond." 237 | 238 | #: data/ui/HelpDialog.ui:288 239 | msgid "Numeric representation:" 240 | msgstr "Numeriek:" 241 | 242 | #: data/ui/HelpDialog.ui:298 243 | msgid "" 244 | "They are denoted as an extra digit before the user, group and others " 245 | "permissions. Can Either be 0, 4, 2, 1 or any combination of them." 246 | msgstr "" 247 | "Ze worden als extra getal voorafgaand aan gebruiker, groep en andere rechten " 248 | "getoond. Mogelijkheden: 0, 4, 2, 1 of combinaties daarvan." 249 | 250 | #: data/ui/HelpDialog.ui:308 251 | msgid "Symbolical representation:" 252 | msgstr "Symbolisch:" 253 | 254 | #: data/ui/HelpDialog.ui:324 255 | msgid "Goes where 'x' normally is for the user" 256 | msgstr "Vervangt ‘x’ van de gebruiker" 257 | 258 | #: data/ui/HelpDialog.ui:330 259 | msgid "Goes where 'x' normally is for the group" 260 | msgstr "Vervangt ‘x’ van de groep" 261 | 262 | #: data/ui/HelpDialog.ui:336 263 | msgid "Goes where 'x' normally is for others" 264 | msgstr "Vervangt ‘x’ van anderen" 265 | 266 | #: data/ui/HelpDialog.ui:344 267 | msgid "Symbolic: -rwsr-Sr-t" 268 | msgstr "Symbolisch: -rwsr-Sr-t" 269 | 270 | #: data/ui/HelpDialog.ui:354 271 | msgid "Numeric: 7745" 272 | msgstr "Numeriek: 7745" 273 | 274 | #: data/ui/HelpDialog.ui:370 275 | msgid "" 276 | "Represented as '4' numerically. Symbolically, it is either 's' if the owner " 277 | "has execute permissions or 'S' if not." 278 | msgstr "" 279 | "Wordt numeriek als ‘4’ getoond. Symbolisch is dit een ‘s’ indien de eigenaar " 280 | "uitvoerrechten heeft of ‘S’ indien dit niet het geval is." 281 | 282 | #: data/ui/HelpDialog.ui:376 283 | msgid "" 284 | "Represented as '2' numerically. Symbolically, it is either 's' if the group " 285 | "has execute permissions or 'S' if not." 286 | msgstr "" 287 | "Wordt numeriek als ‘2’ getoond. Symbolisch is dit een ‘s’ indien de groep " 288 | "uitvoerrechten heeft of ‘S’ indien dit niet het geval is." 289 | 290 | #: data/ui/HelpDialog.ui:382 291 | msgid "" 292 | "Represented as '1' numerically. Symbolically, it is either 't' if the others " 293 | "have execute permissions or 'T' if not." 294 | msgstr "" 295 | "Wordt numeriek als ‘1’ getoond. Symbolisch is dit een ‘t’ indien anderen " 296 | "uitvoerrechten hebben of ‘T’ indien dit niet het geval is." 297 | 298 | #: data/ui/HelpDialog.ui:390 299 | msgid "Example commands" 300 | msgstr "Voorbeeldopdrachten" 301 | 302 | #: data/ui/HelpDialog.ui:399 303 | msgid "chmod 7745 (file name)" 304 | msgstr "chmod 7745 (bestandsnaam)" 305 | 306 | #: data/ui/HelpDialog.ui:409 307 | msgid "Further reading" 308 | msgstr "Meer informatie" 309 | 310 | #: data/ui/Window.ui:4 data/ui/Window.ui:44 311 | #: data/io.github.ronniedroid.concessio.desktop:3 312 | #: data/io.github.ronniedroid.concessio.metainfo.xml:5 src/application.js:70 313 | msgid "Concessio" 314 | msgstr "Concessio" 315 | 316 | #: data/ui/Window.ui:52 data/io.github.ronniedroid.concessio.desktop:4 317 | #: data/io.github.ronniedroid.concessio.metainfo.xml:6 318 | msgid "Understand file permissions" 319 | msgstr "Inzicht in bestandsrechten" 320 | 321 | #: data/ui/Window.ui:57 322 | msgid "Get started" 323 | msgstr "Aan de slag" 324 | 325 | #: data/ui/Window.ui:87 326 | msgid "Open" 327 | msgstr "Openen" 328 | 329 | #: data/ui/Window.ui:96 330 | msgid "Main Menu" 331 | msgstr "Hoofdmenu" 332 | 333 | #: data/ui/Window.ui:144 data/ui/ShortcutsWindow.ui:42 334 | msgid "Keyboard Shortcuts" 335 | msgstr "Sneltoetsen" 336 | 337 | #: data/ui/Window.ui:148 338 | msgid "About" 339 | msgstr "Over" 340 | 341 | #: data/ui/ShortcutsWindow.ui:8 342 | msgid "File" 343 | msgstr "Bestand" 344 | 345 | #: data/ui/ShortcutsWindow.ui:11 346 | msgid "Open File" 347 | msgstr "Bestand openen" 348 | 349 | #: data/ui/ShortcutsWindow.ui:12 350 | msgid "Open file chooser dialog" 351 | msgstr "Bestandskeuzevenster openen" 352 | 353 | #: data/ui/ShortcutsWindow.ui:20 354 | msgid "General" 355 | msgstr "Algemeen" 356 | 357 | #: data/ui/ShortcutsWindow.ui:23 358 | msgid "Quit App" 359 | msgstr "Toepassing afsluiten" 360 | 361 | #: data/ui/ShortcutsWindow.ui:29 362 | msgid "Close Window" 363 | msgstr "Venster sluiten" 364 | 365 | #: data/ui/ShortcutsWindow.ui:35 366 | msgid "Help dialog" 367 | msgstr "Hulpvenster openen" 368 | 369 | #: data/ui/ShortcutsWindow.ui:36 370 | msgid "Display the help dialog" 371 | msgstr "Toon het hulpvenster" 372 | 373 | #: data/ui/ShortcutsWindow.ui:43 374 | msgid "Display this keyboard shortcuts window" 375 | msgstr "Toon dit sneltoetsenvenster" 376 | 377 | #: data/io.github.ronniedroid.concessio.desktop:9 378 | msgid "Permissions;Convertor;Calculator;" 379 | msgstr "Rechten;Converteren;Berekenen;Bevoegdheden;Permissies;Machtigingen;" 380 | 381 | #: data/io.github.ronniedroid.concessio.metainfo.xml:11 src/application.js:74 382 | msgid "" 383 | "Concessio helps you understand and convert between unix permissions " 384 | "representations" 385 | msgstr "" 386 | "Met Concessio krijgt u inzicht in Unixrechten en hulp bij het converteren en/" 387 | "of berekenen ervan" 388 | 389 | #: data/io.github.ronniedroid.concessio.metainfo.xml:13 390 | msgid "" 391 | "Convert between symbolic and numeric representations of UNIX file permissions" 392 | msgstr "Converteer symbolische en numerieke Unixrechten" 393 | 394 | #: data/io.github.ronniedroid.concessio.metainfo.xml:14 395 | msgid "Use toggle buttons to update the symbolic and numeric fields" 396 | msgstr "Klik op de schakelaars om de velden bij te werken" 397 | 398 | #: data/io.github.ronniedroid.concessio.metainfo.xml:15 399 | msgid "Open a file to read it's permissions and convert them" 400 | msgstr "Open een bestand om de rechten ervan uit te lezen en/of te converteren" 401 | 402 | #: data/io.github.ronniedroid.concessio.metainfo.xml:16 403 | msgid "Open the help dialog to read and understand the UNIX permissions system" 404 | msgstr "Open het hulpvenster om het Unix-rechtensysteem te leren begrijpen" 405 | 406 | #: data/io.github.ronniedroid.concessio.metainfo.xml:30 407 | msgid "" 408 | "Application main page converting between numeric and symbolic permission" 409 | msgstr "Hoofdvenster met convertering tussen numerieke en symbolische rechten" 410 | 411 | #: data/io.github.ronniedroid.concessio.metainfo.xml:34 412 | msgid "Application help page, explaining unix permissions" 413 | msgstr "Hulpvenster met uitleg omtrent Unixrechten" 414 | 415 | #. Translators: Replace "translator-credits" with your names, one name per line 416 | #: src/application.js:84 417 | msgid "translator-credits" 418 | msgstr "Heimen Stoffels " 419 | 420 | #: src/application.js:87 421 | msgid "Special thanks to" 422 | msgstr "Veel dank aan" 423 | 424 | #: src/window.js:141 425 | msgid "Copied to clipboard!" 426 | msgstr "Gekopieerd naar het klembord!" 427 | 428 | #: src/window.js:162 429 | msgid "Failed to open file." 430 | msgstr "Het bestand kan niet worden geopend." 431 | -------------------------------------------------------------------------------- /po/pl.po: -------------------------------------------------------------------------------- 1 | # Polish translation for Concessio 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the io.github.ronniedroid.concessio package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: io.github.ronniedroid.concessio\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2024-09-17 15:39+0300\n" 11 | "PO-Revision-Date: 2025-08-08 13:38+0300\n" 12 | "Last-Translator: \n" 13 | "Language-Team: \n" 14 | "Language: pl\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | 19 | #: data/ui/BoxedList.ui:12 data/ui/HelpDialog.ui:67 20 | msgid "User" 21 | msgstr "Użytkownik" 22 | 23 | #: data/ui/BoxedList.ui:21 data/ui/BoxedList.ui:89 data/ui/BoxedList.ui:157 24 | msgid "Read" 25 | msgstr "Odczyt" 26 | 27 | #: data/ui/BoxedList.ui:36 data/ui/BoxedList.ui:104 data/ui/BoxedList.ui:172 28 | msgid "Write" 29 | msgstr "Zapis" 30 | 31 | #: data/ui/BoxedList.ui:51 data/ui/BoxedList.ui:119 data/ui/BoxedList.ui:187 32 | msgid "Execute" 33 | msgstr "Wykonanie" 34 | 35 | #: data/ui/BoxedList.ui:80 data/ui/HelpDialog.ui:78 36 | msgid "Group" 37 | msgstr "Grupa" 38 | 39 | #: data/ui/BoxedList.ui:148 data/ui/HelpDialog.ui:89 40 | msgid "Others" 41 | msgstr "Inni" 42 | 43 | #: data/ui/BoxedList.ui:247 data/ui/HelpDialog.ui:261 44 | msgid "" 45 | "Executes the file with the permissions of the file owner, not the user " 46 | "running it." 47 | msgstr "" 48 | "Wykonuje plik z uprawnieniami właściciela, zamiast użytkownika " 49 | "uruchamiającego plik." 50 | 51 | #: data/ui/BoxedList.ui:288 data/ui/HelpDialog.ui:267 52 | msgid "" 53 | "Executes the file with the permissions of the file's group, or ensures new " 54 | "files in a directory inherit the group." 55 | msgstr "" 56 | "Wykonuje plik z uprawnieniami grupy pliku lub upewnia się, że nowe " 57 | "pliki w katalogu dziedziczą grupę." 58 | 59 | #: data/ui/BoxedList.ui:329 data/ui/HelpDialog.ui:273 60 | msgid "" 61 | "Allows only the file owner or directory owner to delete files in the " 62 | "directory, even if others have write permissions. Only applies to " 63 | "directories and has no effect on files." 64 | msgstr "" 65 | "Pozwala tylko właścicielowi pliku lub katalogu usuwać pliki w " 66 | "katalogu, nawet jeśli inni mają prawo zapisu. Działa tylko wobec " 67 | "katalogów i nie ma efektu na plikach." 68 | 69 | #: data/ui/Form.ui:16 70 | msgid "Numeric" 71 | msgstr "Liczbowo" 72 | 73 | #: data/ui/Form.ui:25 data/ui/Form.ui:49 74 | msgid "Copy value" 75 | msgstr "Skopiuj wartość" 76 | 77 | #: data/ui/Form.ui:40 78 | msgid "Symbolic" 79 | msgstr "Symbolicznie" 80 | 81 | #: data/ui/HelpDialog.ui:13 data/ui/Window.ui:140 82 | msgid "Help" 83 | msgstr "Pomoc" 84 | 85 | #: data/ui/HelpDialog.ui:37 86 | msgid "Unix Permissions" 87 | msgstr "Uprawnienia Unix-a" 88 | 89 | #: data/ui/HelpDialog.ui:46 90 | msgid "" 91 | "The Unix permissions system is used to grant granulated access to file and " 92 | "directories on a Unix-like operating system" 93 | msgstr "" 94 | "System uprawnień Unix-a jest używany do udzielania szczegółowego dostępu do plików i " 95 | "katalogów w systemach uniksopodobnych" 96 | 97 | #: data/ui/HelpDialog.ui:52 98 | msgid "Permissions are granted to three groups:" 99 | msgstr "Uprawnienia są przydzielane trzem grupom:" 100 | 101 | #: data/ui/HelpDialog.ui:68 102 | msgid "The owner of the file" 103 | msgstr "Właściciel pliku" 104 | 105 | #: data/ui/HelpDialog.ui:79 106 | msgid "A group of users who share access to the file" 107 | msgstr "Grupa użytkowników, którzy dzielą się dostępem do pliku" 108 | 109 | #: data/ui/HelpDialog.ui:90 110 | msgid "All other users on the system" 111 | msgstr "Wszyscy inni użytkownicy systemu" 112 | 113 | #: data/ui/HelpDialog.ui:102 114 | msgid "The types of permissions are:" 115 | msgstr "Rodzaje uprawnień to:" 116 | 117 | #: data/ui/HelpDialog.ui:117 118 | msgid "Read (Symbolic: r, Numeric: 4)" 119 | msgstr "Odczyt (Symbolicznie: r, Liczbowo: 4)" 120 | 121 | #: data/ui/HelpDialog.ui:118 122 | msgid "Allows viewing the file's contents or listing a directory's contents" 123 | msgstr "Pozwala oglądać zawartość pliku lub zawartość katalogu" 124 | 125 | #: data/ui/HelpDialog.ui:128 126 | msgid "Write (Symbolically: w, Numerically: 2)" 127 | msgstr "Zapis (Symbolicznie: w, Liczbowo: 2)" 128 | 129 | #: data/ui/HelpDialog.ui:129 130 | msgid "" 131 | "Allows modifying the file's contents or creating/deleting files within a " 132 | "directory" 133 | msgstr "" 134 | "Pozwala modyfikować zawartość pliku lub tworzyć/usuwać pliki w " 135 | "katalogu" 136 | 137 | #: data/ui/HelpDialog.ui:139 138 | msgid "Execute (Symbolically: x, Numerically: 1)" 139 | msgstr "Wykonanie (Symbolicznie: x, Liczbowo: 1)" 140 | 141 | #: data/ui/HelpDialog.ui:140 142 | msgid "Allows running the file as a program" 143 | msgstr "Pozwala uruchamiać plik jako program" 144 | 145 | #: data/ui/HelpDialog.ui:153 146 | msgid "" 147 | "Permissions can either be represented symbolically or numerically. Symbolic " 148 | "permissions are represented as a string of ten characters, and numeric is " 149 | "represented by three numbers (octal notation) for Example:" 150 | msgstr "" 151 | "Uprawnienia mogą być reprezentowane symbolicznie lub liczbowo. Symboliczne " 152 | "uprawnienia są reprezentowane jako 10-literowy ciąg znaków, a liczbowy jest " 153 | "reprezentowany przez trzy cyfry (notacja ósemkowa). Na przykład:" 154 | 155 | #: data/ui/HelpDialog.ui:159 156 | msgid "Symbolic: -rwxr-xr--" 157 | msgstr "Symbolicznie: -rwxr-xr--" 158 | 159 | #: data/ui/HelpDialog.ui:169 160 | msgid "Numeric: 754" 161 | msgstr "Liczbowo: 754" 162 | 163 | #: data/ui/HelpDialog.ui:184 164 | msgid "First character, the file type" 165 | msgstr "Pierwszy znak to typ pliku" 166 | 167 | #: data/ui/HelpDialog.ui:185 168 | msgid "can either be '-' for file or 'd' for directory" 169 | msgstr "może być to '-' dla pliku lub 'd' dla katalogu" 170 | 171 | #: data/ui/HelpDialog.ui:190 172 | msgid "First three positions (after file type)" 173 | msgstr "Pierwsze trzy pozycje (po typie pliku)" 174 | 175 | #: data/ui/HelpDialog.ui:191 176 | msgid "" 177 | "The read, write and execute permissions for the user, here we have 'rwx', " 178 | "which translated to 4+2+1 and adds to 7" 179 | msgstr "" 180 | "Uprawnienia odczytu, zapisu i wykonania dla użytkownika, tutaj mamy 'rwx', " 181 | "co tłumaczy się na 4+2+1, dodając - wychodzi 7" 182 | 183 | #: data/ui/HelpDialog.ui:196 184 | msgid "Second three positions" 185 | msgstr "Kolejne trzy pozycje" 186 | 187 | #: data/ui/HelpDialog.ui:197 188 | msgid "" 189 | "The read, write and execute permissions for the group, here we have 'r-x', " 190 | "which translated to 4+0+1 and adds to 5" 191 | msgstr "" 192 | "Uprawnienia odczytu, zapisu i wykonania dla użytkownika, tutaj mamy 'r-x', " 193 | "co tłumaczy się na 4+0+1, dodając - wychodzi 5" 194 | 195 | #: data/ui/HelpDialog.ui:202 196 | msgid "Last three positions" 197 | msgstr "Ostatnie trzy pozycje" 198 | 199 | #: data/ui/HelpDialog.ui:203 200 | msgid "" 201 | "The read, write and execute permissions for other users, here we have 'r--', " 202 | "which translated to 4+0+0 and adds to 4" 203 | msgstr "" 204 | "Uprawnienia odczytu, zapisu i wykonania dla innych użytkowników, tutaj mamy 'r--', " 205 | "co tłumaczy się na 4+0+0, dodając - wychodzi 4" 206 | 207 | #: data/ui/HelpDialog.ui:211 208 | msgid "Example command" 209 | msgstr "Przykładowa komenda" 210 | 211 | #: data/ui/HelpDialog.ui:220 212 | msgid "chmod 754 (file name)" 213 | msgstr "chmod 754 (nazwa pliku)" 214 | 215 | #: data/ui/HelpDialog.ui:230 216 | msgid "Special Permissions" 217 | msgstr "Specjalne uprawnienia" 218 | 219 | #: data/ui/HelpDialog.ui:239 220 | msgid "" 221 | "Special permissions make up a fourth access level in addition to user, " 222 | "group, and other, they allow for additional privileges over the standard " 223 | "permission sets" 224 | msgstr "" 225 | "Specjalne uprawnienia tworzą czwarty poziom dostępu oprócz użytkownika, " 226 | "grupy i innych, pozwalają one na dodatkowe uprawnienia poza standardowym " 227 | "zestawem uprawnień" 228 | 229 | #: data/ui/HelpDialog.ui:245 230 | msgid "The three special permissions are:" 231 | msgstr "Trzy specjalne uprawnienia to:" 232 | 233 | #: data/ui/HelpDialog.ui:281 234 | msgid "Special permissions can be represented symbolically or numerically." 235 | msgstr "Specjalne uprawnienia mogą być reprezentowane symbolicznie lub liczbowo." 236 | 237 | #: data/ui/HelpDialog.ui:288 238 | msgid "Numeric representation:" 239 | msgstr "Reprezentacja liczbowa:" 240 | 241 | #: data/ui/HelpDialog.ui:298 242 | msgid "" 243 | "They are denoted as an extra digit before the user, group and others " 244 | "permissions. Can Either be 0, 4, 2, 1 or any combination of them." 245 | msgstr "" 246 | "Są one oznaczone jako dodatkowa cyfra przed uprawnieniami użytkownika, grupy " 247 | "i innych. Może ona wynosić 0, 4, 2, 1 lub jakąkolwiek ich kombinację." 248 | 249 | #: data/ui/HelpDialog.ui:308 250 | msgid "Symbolical representation:" 251 | msgstr "Reprezentacja symboliczna:" 252 | 253 | #: data/ui/HelpDialog.ui:324 254 | msgid "Goes where 'x' normally is for the user" 255 | msgstr "Znajduje się tam, gdzie normalnie dla użytkownika jest 'x'" 256 | 257 | #: data/ui/HelpDialog.ui:330 258 | msgid "Goes where 'x' normally is for the group" 259 | msgstr "Znajduje się tam, gdzie normalnie dla grupy jest 'x'" 260 | 261 | #: data/ui/HelpDialog.ui:336 262 | msgid "Goes where 'x' normally is for others" 263 | msgstr "Znajduje się tam, gdzie normalnie dla innych jest 'x'" 264 | 265 | #: data/ui/HelpDialog.ui:344 266 | msgid "Symbolic: -rwsr-Sr-t" 267 | msgstr "Symbolicznie: -rwsr-Sr-t" 268 | 269 | #: data/ui/HelpDialog.ui:354 270 | msgid "Numeric: 7745" 271 | msgstr "Liczbowo: 7745" 272 | 273 | #: data/ui/HelpDialog.ui:370 274 | msgid "" 275 | "Represented as '4' numerically. Symbolically, it is either 's' if the owner " 276 | "has execute permissions or 'S' if not." 277 | msgstr "" 278 | "Reprezentowane liczbowo jest jako '4'. Symbolicznie, jest to 's', gdy właściciel " 279 | "ma uprawnienie wykonania lub 's' gdy go nie ma." 280 | 281 | #: data/ui/HelpDialog.ui:376 282 | msgid "" 283 | "Represented as '2' numerically. Symbolically, it is either 's' if the group " 284 | "has execute permissions or 'S' if not." 285 | msgstr "" 286 | "Reprezentowane liczbowo jest jako '2'. Symbolicznie, jest to 's', gdy właściciel " 287 | "ma uprawnienie wykonania lub 's' gdy go nie ma." 288 | 289 | #: data/ui/HelpDialog.ui:382 290 | msgid "" 291 | "Represented as '1' numerically. Symbolically, it is either 't' if the others " 292 | "have execute permissions or 'T' if not." 293 | msgstr "" 294 | "Reprezentowane liczbowo jest jako '1'. Symbolicznie, jest to 't', gdy właściciel " 295 | "ma uprawnienie wykonania lub 'T' gdy go nie ma." 296 | 297 | #: data/ui/HelpDialog.ui:390 298 | msgid "Example commands" 299 | msgstr "Przykładowe komendy" 300 | 301 | #: data/ui/HelpDialog.ui:399 302 | msgid "chmod 7745 (file name)" 303 | msgstr "chmod 7745 (nazwa pliku)" 304 | 305 | #: data/ui/HelpDialog.ui:409 306 | msgid "Further reading" 307 | msgstr "" 308 | 309 | #: data/ui/Window.ui:4 data/ui/Window.ui:44 310 | #: data/io.github.ronniedroid.concessio.desktop:3 311 | #: data/io.github.ronniedroid.concessio.metainfo.xml:5 src/application.js:70 312 | msgid "Concessio" 313 | msgstr "Zezwolenie" 314 | 315 | #: data/ui/Window.ui:52 data/io.github.ronniedroid.concessio.desktop:4 316 | #: data/io.github.ronniedroid.concessio.metainfo.xml:6 317 | msgid "Understand file permissions" 318 | msgstr "Zrozum uprawnienia plików" 319 | 320 | #: data/ui/Window.ui:57 321 | msgid "Get started" 322 | msgstr "Zacznij" 323 | 324 | #: data/ui/Window.ui:87 325 | msgid "Open" 326 | msgstr "Otwórz" 327 | 328 | #: data/ui/Window.ui:96 329 | msgid "Main Menu" 330 | msgstr "Menu głównie" 331 | 332 | #: data/ui/Window.ui:144 data/ui/ShortcutsWindow.ui:42 333 | msgid "Keyboard Shortcuts" 334 | msgstr "Skróty klawiszowe" 335 | 336 | #: data/ui/Window.ui:148 337 | msgid "About" 338 | msgstr "O programie" 339 | 340 | #: data/ui/ShortcutsWindow.ui:8 341 | msgid "File" 342 | msgstr "Plik" 343 | 344 | #: data/ui/ShortcutsWindow.ui:11 345 | msgid "Open File" 346 | msgstr "Otwórz plik" 347 | 348 | #: data/ui/ShortcutsWindow.ui:12 349 | msgid "Open file chooser dialog" 350 | msgstr "Otwórz okno wyboru pliku" 351 | 352 | #: data/ui/ShortcutsWindow.ui:20 353 | msgid "General" 354 | msgstr "Ogólny" 355 | 356 | #: data/ui/ShortcutsWindow.ui:23 357 | msgid "Quit App" 358 | msgstr "Opuść aplikację" 359 | 360 | #: data/ui/ShortcutsWindow.ui:29 361 | msgid "Close Window" 362 | msgstr "Zamknij okno" 363 | 364 | #: data/ui/ShortcutsWindow.ui:35 365 | msgid "Help dialog" 366 | msgstr "Okno pomocy" 367 | 368 | #: data/ui/ShortcutsWindow.ui:36 369 | msgid "Display the help dialog" 370 | msgstr "Pokaż okno pomocy" 371 | 372 | #: data/ui/ShortcutsWindow.ui:43 373 | msgid "Display this keyboard shortcuts window" 374 | msgstr "Pokaż okno skrótów klawiszowych" 375 | 376 | #: data/io.github.ronniedroid.concessio.desktop:9 377 | msgid "Permissions;Convertor;Calculator;" 378 | msgstr "Uprawnienia;Konwerter;Kalkulator;" 379 | 380 | #: data/io.github.ronniedroid.concessio.metainfo.xml:11 src/application.js:74 381 | msgid "" 382 | "Concessio helps you understand and convert between unix permissions " 383 | "representations" 384 | msgstr "" 385 | "Zezwolenie pomoże Ci zrozumieć uprawnienia i konwertować pomiędzy ich " 386 | "reprezentacjami" 387 | 388 | 389 | #: data/io.github.ronniedroid.concessio.metainfo.xml:13 390 | msgid "" 391 | "Convert between symbolic and numeric representations of UNIX file permissions" 392 | msgstr "" 393 | "Konweruj pomięzy symboliczną i liczbową reprezentacją uniksowych uprawnień plików" 394 | 395 | #: data/io.github.ronniedroid.concessio.metainfo.xml:14 396 | msgid "Use toggle buttons to update the symbolic and numeric fields" 397 | msgstr "Użyj przełączników, aby zaktualizować pola symboliczne i liczbowe" 398 | 399 | #: data/io.github.ronniedroid.concessio.metainfo.xml:15 400 | msgid "Open a file to read it's permissions and convert them" 401 | msgstr "Otwórz plik, aby odczytać jego uprawnienia i je przekonwertować" 402 | 403 | #: data/io.github.ronniedroid.concessio.metainfo.xml:16 404 | msgid "Open the help dialog to read and understand the UNIX permissions system" 405 | msgstr "Otwórz okno pomocy, żeby przeczytać i zrozumieć system uprawnień UNIX" 406 | 407 | #: data/io.github.ronniedroid.concessio.metainfo.xml:30 408 | msgid "" 409 | "Application main page converting between numeric and symbolic permission" 410 | msgstr "" 411 | "Główna strona aplikacji, konwertująca między uprawnieniami symbolicznymi i liczbowymi" 412 | 413 | #: data/io.github.ronniedroid.concessio.metainfo.xml:34 414 | msgid "Application help page, explaining unix permissions" 415 | msgstr "Strona pomocy aplikacji, tłumacząca uprawnienia UNIX" 416 | 417 | #. Translators: Replace "translator-credits" with your names, one name per line 418 | #: src/application.js:84 419 | msgid "translator-credits" 420 | msgstr "dawkagaming" 421 | 422 | #: src/application.js:87 423 | msgid "Special thanks to" 424 | msgstr "Specjalne podziękowania do" 425 | 426 | #: src/window.js:141 427 | msgid "Copied to clipboard!" 428 | msgstr "Skopiowano do schowka!" 429 | 430 | #: src/window.js:162 431 | msgid "Failed to open file." 432 | msgstr "Nie udało się otworzyć pliku." -------------------------------------------------------------------------------- /po/ru.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 io.github.ronniedroid.concessio package. 4 | # Ворон , 2024. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: io.github.ronniedroid.concessio\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2024-09-17 15:39+0300\n" 12 | "PO-Revision-Date: 2024-09-29 22:11+0300\n" 13 | "Last-Translator: Ворон \n" 14 | "Language-Team: \n" 15 | "Language: ru_RU\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "X-Generator: Poedit 3.5\n" 20 | 21 | #: data/ui/BoxedList.ui:12 data/ui/HelpDialog.ui:67 22 | msgid "User" 23 | msgstr "Пользователь" 24 | 25 | #: data/ui/BoxedList.ui:21 data/ui/BoxedList.ui:89 data/ui/BoxedList.ui:157 26 | msgid "Read" 27 | msgstr "Чтение" 28 | 29 | #: data/ui/BoxedList.ui:36 data/ui/BoxedList.ui:104 data/ui/BoxedList.ui:172 30 | msgid "Write" 31 | msgstr "Запись" 32 | 33 | #: data/ui/BoxedList.ui:51 data/ui/BoxedList.ui:119 data/ui/BoxedList.ui:187 34 | msgid "Execute" 35 | msgstr "Выполнение" 36 | 37 | #: data/ui/BoxedList.ui:80 data/ui/HelpDialog.ui:78 38 | msgid "Group" 39 | msgstr "Группа" 40 | 41 | #: data/ui/BoxedList.ui:148 data/ui/HelpDialog.ui:89 42 | msgid "Others" 43 | msgstr "Остальные" 44 | 45 | #: data/ui/BoxedList.ui:247 data/ui/HelpDialog.ui:261 46 | msgid "" 47 | "Executes the file with the permissions of the file owner, not the user " 48 | "running it." 49 | msgstr "" 50 | "Выполняет файл с правами владельца файла, а не пользователя, запустившего " 51 | "его." 52 | 53 | #: data/ui/BoxedList.ui:288 data/ui/HelpDialog.ui:267 54 | msgid "" 55 | "Executes the file with the permissions of the file's group, or ensures new " 56 | "files in a directory inherit the group." 57 | msgstr "" 58 | "Выполняет файл с разрешениями группы файла, новые файлы в каталоге наследуют " 59 | "группу." 60 | 61 | #: data/ui/BoxedList.ui:329 data/ui/HelpDialog.ui:273 62 | msgid "" 63 | "Allows only the file owner or directory owner to delete files in the " 64 | "directory, even if others have write permissions. Only applies to " 65 | "directories and has no effect on files." 66 | msgstr "" 67 | "Позволяет только владельцу файла или владельцу каталога удалять файлы в " 68 | "каталоге, даже если у других есть права на запись. Применяется только к " 69 | "каталогам и не влияет на файлы." 70 | 71 | #: data/ui/Form.ui:16 72 | msgid "Numeric" 73 | msgstr "Числовой" 74 | 75 | #: data/ui/Form.ui:25 data/ui/Form.ui:49 76 | msgid "Copy value" 77 | msgstr "Скопировать значение" 78 | 79 | #: data/ui/Form.ui:40 80 | msgid "Symbolic" 81 | msgstr "Символический" 82 | 83 | #: data/ui/HelpDialog.ui:13 data/ui/Window.ui:140 84 | msgid "Help" 85 | msgstr "Помощь" 86 | 87 | #: data/ui/HelpDialog.ui:37 88 | msgid "Unix Permissions" 89 | msgstr "Права доступа Unix" 90 | 91 | #: data/ui/HelpDialog.ui:46 92 | msgid "" 93 | "The Unix permissions system is used to grant granulated access to file and " 94 | "directories on a Unix-like operating system" 95 | msgstr "" 96 | "Система разрешений Unix используется для предоставления детализированного " 97 | "доступа к файлам и каталогам в операционной системе, подобной Unix" 98 | 99 | #: data/ui/HelpDialog.ui:52 100 | msgid "Permissions are granted to three groups:" 101 | msgstr "Разрешения предоставляются трем группам:" 102 | 103 | #: data/ui/HelpDialog.ui:68 104 | msgid "The owner of the file" 105 | msgstr "Владелец файла" 106 | 107 | #: data/ui/HelpDialog.ui:79 108 | msgid "A group of users who share access to the file" 109 | msgstr "Группа пользователей, которые имеют общий доступ к файлу" 110 | 111 | #: data/ui/HelpDialog.ui:90 112 | msgid "All other users on the system" 113 | msgstr "Все остальные пользователи в системе" 114 | 115 | #: data/ui/HelpDialog.ui:102 116 | msgid "The types of permissions are:" 117 | msgstr "Типы разрешений:" 118 | 119 | #: data/ui/HelpDialog.ui:117 120 | msgid "Read (Symbolic: r, Numeric: 4)" 121 | msgstr "Чтение (Символическое: r, Числовое: 4)" 122 | 123 | #: data/ui/HelpDialog.ui:118 124 | msgid "Allows viewing the file's contents or listing a directory's contents" 125 | msgstr "" 126 | "Позволяет просматривать содержимое файла или список содержимого каталога" 127 | 128 | #: data/ui/HelpDialog.ui:128 129 | msgid "Write (Symbolically: w, Numerically: 2)" 130 | msgstr "Запись (Символическое: w, Числовое: 2)" 131 | 132 | #: data/ui/HelpDialog.ui:129 133 | msgid "" 134 | "Allows modifying the file's contents or creating/deleting files within a " 135 | "directory" 136 | msgstr "" 137 | "Позволяет изменять содержимое файла или создавать/удалять файлы внутри " 138 | "каталога" 139 | 140 | #: data/ui/HelpDialog.ui:139 141 | msgid "Execute (Symbolically: x, Numerically: 1)" 142 | msgstr "Выполнение (Символическое: x, Числовое: 1)" 143 | 144 | #: data/ui/HelpDialog.ui:140 145 | msgid "Allows running the file as a program" 146 | msgstr "Позволяет запустить файл как программу" 147 | 148 | #: data/ui/HelpDialog.ui:153 149 | msgid "" 150 | "Permissions can either be represented symbolically or numerically. Symbolic " 151 | "permissions are represented as a string of ten characters, and numeric is " 152 | "represented by three numbers (octal notation) for Example:" 153 | msgstr "" 154 | "Разрешения могут быть представлены символически или численно. Символические " 155 | "разрешения представлены строкой из десяти символов, а численные - тремя " 156 | "числами (восьмеричная нотация), например:" 157 | 158 | #: data/ui/HelpDialog.ui:159 159 | msgid "Symbolic: -rwxr-xr--" 160 | msgstr "Символический: -rwxr-xr--" 161 | 162 | #: data/ui/HelpDialog.ui:169 163 | msgid "Numeric: 754" 164 | msgstr "Числовой: 754" 165 | 166 | #: data/ui/HelpDialog.ui:184 167 | msgid "First character, the file type" 168 | msgstr "Первый символ, тип файла" 169 | 170 | #: data/ui/HelpDialog.ui:185 171 | msgid "can either be '-' for file or 'd' for directory" 172 | msgstr "может быть '-' для файла или 'd' для каталога" 173 | 174 | #: data/ui/HelpDialog.ui:190 175 | msgid "First three positions (after file type)" 176 | msgstr "Первые три позиции (после типа файла)" 177 | 178 | #: data/ui/HelpDialog.ui:191 179 | msgid "" 180 | "The read, write and execute permissions for the user, here we have 'rwx', " 181 | "which translated to 4+2+1 and adds to 7" 182 | msgstr "" 183 | "Права на чтение, запись и выполнение для пользователя, здесь у нас есть " 184 | "'rwx', что переводится как 4+2+1 и дает в сумме 7" 185 | 186 | #: data/ui/HelpDialog.ui:196 187 | msgid "Second three positions" 188 | msgstr "Вторые три позиции" 189 | 190 | #: data/ui/HelpDialog.ui:197 191 | msgid "" 192 | "The read, write and execute permissions for the group, here we have 'r-x', " 193 | "which translated to 4+0+1 and adds to 5" 194 | msgstr "" 195 | "Права на чтение, запись и выполнение для группы, здесь у нас 'r-x', что " 196 | "переводится как 4+0+1 и дает 5" 197 | 198 | #: data/ui/HelpDialog.ui:202 199 | msgid "Last three positions" 200 | msgstr "Последние три позиции" 201 | 202 | #: data/ui/HelpDialog.ui:203 203 | msgid "" 204 | "The read, write and execute permissions for other users, here we have 'r--', " 205 | "which translated to 4+0+0 and adds to 4" 206 | msgstr "" 207 | "Права на чтение, запись и выполнение для остальных пользователей, здесь у " 208 | "нас 'r--', что переводится как 4+0+0 и дает в сумме 4" 209 | 210 | #: data/ui/HelpDialog.ui:211 211 | msgid "Example command" 212 | msgstr "Пример команды" 213 | 214 | #: data/ui/HelpDialog.ui:220 215 | msgid "chmod 754 (file name)" 216 | msgstr "chmod 754 (имя файла)" 217 | 218 | #: data/ui/HelpDialog.ui:230 219 | msgid "Special Permissions" 220 | msgstr "Специальные разрешения" 221 | 222 | #: data/ui/HelpDialog.ui:239 223 | msgid "" 224 | "Special permissions make up a fourth access level in addition to user, " 225 | "group, and other, they allow for additional privileges over the standard " 226 | "permission sets" 227 | msgstr "" 228 | "Специальные разрешения составляют четвертый уровень доступа, помимо " 229 | "пользователя, группы и остальных. Они позволяют получить дополнительные " 230 | "привилегии по сравнению с обычными наборами разрешений" 231 | 232 | #: data/ui/HelpDialog.ui:245 233 | msgid "The three special permissions are:" 234 | msgstr "Три специальных разрешения:" 235 | 236 | #: data/ui/HelpDialog.ui:281 237 | msgid "Special permissions can be represented symbolically or numerically." 238 | msgstr "" 239 | "Специальные разрешения могут быть представлены символически или численно." 240 | 241 | #: data/ui/HelpDialog.ui:288 242 | msgid "Numeric representation:" 243 | msgstr "Числовое представление:" 244 | 245 | #: data/ui/HelpDialog.ui:298 246 | msgid "" 247 | "They are denoted as an extra digit before the user, group and others " 248 | "permissions. Can Either be 0, 4, 2, 1 or any combination of them." 249 | msgstr "" 250 | "Они обозначаются дополнительной цифрой перед разрешениями пользователя, " 251 | "группы и остальных. Может быть 0, 4, 2, 1 или любая комбинация из них." 252 | 253 | #: data/ui/HelpDialog.ui:308 254 | msgid "Symbolical representation:" 255 | msgstr "Символическое представление:" 256 | 257 | #: data/ui/HelpDialog.ui:324 258 | msgid "Goes where 'x' normally is for the user" 259 | msgstr "Располагается там, где обычно находится 'x' для пользователя" 260 | 261 | #: data/ui/HelpDialog.ui:330 262 | msgid "Goes where 'x' normally is for the group" 263 | msgstr "Располагается там, где обычно находится 'x' для группы" 264 | 265 | #: data/ui/HelpDialog.ui:336 266 | msgid "Goes where 'x' normally is for others" 267 | msgstr "Располагается там, где обычно находится 'x' для остальных" 268 | 269 | #: data/ui/HelpDialog.ui:344 270 | msgid "Symbolic: -rwsr-Sr-t" 271 | msgstr "Символический: -rwsr-Sr-t" 272 | 273 | #: data/ui/HelpDialog.ui:354 274 | msgid "Numeric: 7745" 275 | msgstr "Числовой: 7745" 276 | 277 | #: data/ui/HelpDialog.ui:370 278 | msgid "" 279 | "Represented as '4' numerically. Symbolically, it is either 's' if the owner " 280 | "has execute permissions or 'S' if not." 281 | msgstr "" 282 | "Представлено числом '4'. Символически, это либо 's', если владелец имеет " 283 | "права на выполнение, либо 'S', если нет." 284 | 285 | #: data/ui/HelpDialog.ui:376 286 | msgid "" 287 | "Represented as '2' numerically. Symbolically, it is either 's' if the group " 288 | "has execute permissions or 'S' if not." 289 | msgstr "" 290 | "Представлено числом '2'. Символически, это либо 's', если у группы есть " 291 | "права на выполнение, либо 'S', если нет." 292 | 293 | #: data/ui/HelpDialog.ui:382 294 | msgid "" 295 | "Represented as '1' numerically. Symbolically, it is either 't' if the others " 296 | "have execute permissions or 'T' if not." 297 | msgstr "" 298 | "Представлено числом '1'. Символически, это либо 't', если у остальных есть " 299 | "права на выполнение, либо 'T', если нет." 300 | 301 | #: data/ui/HelpDialog.ui:390 302 | msgid "Example commands" 303 | msgstr "Примеры команд" 304 | 305 | #: data/ui/HelpDialog.ui:399 306 | msgid "chmod 7745 (file name)" 307 | msgstr "chmod 7745 (имя файла)" 308 | 309 | #: data/ui/HelpDialog.ui:409 310 | msgid "Further reading" 311 | msgstr "Дополнительное чтение" 312 | 313 | #: data/ui/Window.ui:4 data/ui/Window.ui:44 314 | #: data/io.github.ronniedroid.concessio.desktop:3 315 | #: data/io.github.ronniedroid.concessio.metainfo.xml:5 src/application.js:70 316 | msgid "Concessio" 317 | msgstr "Concessio" 318 | 319 | #: data/ui/Window.ui:52 data/io.github.ronniedroid.concessio.desktop:4 320 | #: data/io.github.ronniedroid.concessio.metainfo.xml:6 321 | msgid "Understand file permissions" 322 | msgstr "Понимание прав доступа к файлам" 323 | 324 | #: data/ui/Window.ui:57 325 | msgid "Get started" 326 | msgstr "Начало" 327 | 328 | #: data/ui/Window.ui:87 329 | msgid "Open" 330 | msgstr "Открыть" 331 | 332 | #: data/ui/Window.ui:96 333 | msgid "Main Menu" 334 | msgstr "Главное меню" 335 | 336 | #: data/ui/Window.ui:144 data/ui/ShortcutsWindow.ui:42 337 | msgid "Keyboard Shortcuts" 338 | msgstr "Комбинации клавиш" 339 | 340 | #: data/ui/Window.ui:148 341 | msgid "About" 342 | msgstr "О приложении" 343 | 344 | #: data/ui/ShortcutsWindow.ui:8 345 | msgid "File" 346 | msgstr "Файл" 347 | 348 | #: data/ui/ShortcutsWindow.ui:11 349 | msgid "Open File" 350 | msgstr "Открыть файл" 351 | 352 | #: data/ui/ShortcutsWindow.ui:12 353 | msgid "Open file chooser dialog" 354 | msgstr "Открыть диалог выбора файла" 355 | 356 | #: data/ui/ShortcutsWindow.ui:20 357 | msgid "General" 358 | msgstr "Общие" 359 | 360 | #: data/ui/ShortcutsWindow.ui:23 361 | msgid "Quit App" 362 | msgstr "Выйти из приложения" 363 | 364 | #: data/ui/ShortcutsWindow.ui:29 365 | msgid "Close Window" 366 | msgstr "Закрыть окно" 367 | 368 | #: data/ui/ShortcutsWindow.ui:35 369 | msgid "Help dialog" 370 | msgstr "Диалог помощи" 371 | 372 | #: data/ui/ShortcutsWindow.ui:36 373 | msgid "Display the help dialog" 374 | msgstr "Показать диалог помощи" 375 | 376 | #: data/ui/ShortcutsWindow.ui:43 377 | msgid "Display this keyboard shortcuts window" 378 | msgstr "Показать окно комбинаций клавиш" 379 | 380 | #: data/io.github.ronniedroid.concessio.desktop:9 381 | msgid "Permissions;Convertor;Calculator;" 382 | msgstr "Permissions;Convertor;Calculator;Разрешения;Конвертер;Калькулятор;" 383 | 384 | #: data/io.github.ronniedroid.concessio.metainfo.xml:11 src/application.js:74 385 | msgid "" 386 | "Concessio helps you understand and convert between unix permissions " 387 | "representations" 388 | msgstr "" 389 | "Concessio помогает вам понимать и преобразовывать представления разрешений " 390 | "Unix" 391 | 392 | #: data/io.github.ronniedroid.concessio.metainfo.xml:13 393 | msgid "" 394 | "Convert between symbolic and numeric representations of UNIX file permissions" 395 | msgstr "" 396 | "Преобразование между символьным и числовым представлением прав доступа к " 397 | "файлам UNIX" 398 | 399 | #: data/io.github.ronniedroid.concessio.metainfo.xml:14 400 | msgid "Use toggle buttons to update the symbolic and numeric fields" 401 | msgstr "Используйте переключатели для обновления символьных и числовых полей" 402 | 403 | #: data/io.github.ronniedroid.concessio.metainfo.xml:15 404 | msgid "Open a file to read it's permissions and convert them" 405 | msgstr "Откройте файл, чтобы прочитать его разрешения и преобразовать их" 406 | 407 | #: data/io.github.ronniedroid.concessio.metainfo.xml:16 408 | msgid "Open the help dialog to read and understand the UNIX permissions system" 409 | msgstr "" 410 | "Откройте диалог справки, чтобы прочитать и понять систему разрешений UNIX" 411 | 412 | #: data/io.github.ronniedroid.concessio.metainfo.xml:30 413 | msgid "" 414 | "Application main page converting between numeric and symbolic permission" 415 | msgstr "" 416 | "Главная страница приложения, конвертирующая между числовыми и символьными " 417 | "разрешениями" 418 | 419 | #: data/io.github.ronniedroid.concessio.metainfo.xml:34 420 | msgid "Application help page, explaining unix permissions" 421 | msgstr "Страница справки приложения, объясняющая права доступа в Unix" 422 | 423 | #. Translators: Replace "translator-credits" with your names, one name per line 424 | #: src/application.js:84 425 | msgid "translator-credits" 426 | msgstr "Ворон " 427 | 428 | #: src/application.js:87 429 | msgid "Special thanks to" 430 | msgstr "Особая благодарность" 431 | 432 | #: src/window.js:141 433 | msgid "Copied to clipboard!" 434 | msgstr "Скопировано в буфер обмена!" 435 | 436 | #: src/window.js:162 437 | msgid "Failed to open file." 438 | msgstr "Не удалось открыть файл." 439 | -------------------------------------------------------------------------------- /po/pt_BR.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 io.github.ronniedroid.concessio package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: io.github.ronniedroid.concessio\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2024-09-17 15:39+0300\n" 11 | "PO-Revision-Date: 2025-01-12 18:01-0300\n" 12 | "Last-Translator: \n" 13 | "Language-Team: \n" 14 | "Language: pt_BR\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "X-Generator: Poedit 3.5\n" 19 | 20 | #: data/ui/BoxedList.ui:12 data/ui/HelpDialog.ui:67 21 | msgid "User" 22 | msgstr "Usuário" 23 | 24 | #: data/ui/BoxedList.ui:21 data/ui/BoxedList.ui:89 data/ui/BoxedList.ui:157 25 | msgid "Read" 26 | msgstr "Leitura" 27 | 28 | #: data/ui/BoxedList.ui:36 data/ui/BoxedList.ui:104 data/ui/BoxedList.ui:172 29 | msgid "Write" 30 | msgstr "Escrita" 31 | 32 | #: data/ui/BoxedList.ui:51 data/ui/BoxedList.ui:119 data/ui/BoxedList.ui:187 33 | msgid "Execute" 34 | msgstr "Execução" 35 | 36 | #: data/ui/BoxedList.ui:80 data/ui/HelpDialog.ui:78 37 | msgid "Group" 38 | msgstr "Grupo" 39 | 40 | #: data/ui/BoxedList.ui:148 data/ui/HelpDialog.ui:89 41 | msgid "Others" 42 | msgstr "Outros" 43 | 44 | #: data/ui/BoxedList.ui:247 data/ui/HelpDialog.ui:261 45 | msgid "" 46 | "Executes the file with the permissions of the file owner, not the user " 47 | "running it." 48 | msgstr "" 49 | "Executa o arquivo com as permissões do proprietário do arquivo, não do " 50 | "usuário que está executando." 51 | 52 | #: data/ui/BoxedList.ui:288 data/ui/HelpDialog.ui:267 53 | msgid "" 54 | "Executes the file with the permissions of the file's group, or ensures new " 55 | "files in a directory inherit the group." 56 | msgstr "" 57 | "Executa o arquivo com as permissões do grupo do arquivo ou garante que os " 58 | "novos arquivos em um diretório herdem o grupo." 59 | 60 | #: data/ui/BoxedList.ui:329 data/ui/HelpDialog.ui:273 61 | msgid "" 62 | "Allows only the file owner or directory owner to delete files in the " 63 | "directory, even if others have write permissions. Only applies to " 64 | "directories and has no effect on files." 65 | msgstr "" 66 | "Permite que somente o proprietário do arquivo ou do diretório exclua " 67 | "arquivos no diretório, mesmo que outras pessoas tenham permissões de " 68 | "escrita. Aplica-se somente a diretórios e não tem efeito sobre arquivos." 69 | 70 | #: data/ui/Form.ui:16 71 | msgid "Numeric" 72 | msgstr "Numérica" 73 | 74 | #: data/ui/Form.ui:25 data/ui/Form.ui:49 75 | msgid "Copy value" 76 | msgstr "Copiar" 77 | 78 | #: data/ui/Form.ui:40 79 | msgid "Symbolic" 80 | msgstr "Simbólica" 81 | 82 | #: data/ui/HelpDialog.ui:13 data/ui/Window.ui:140 83 | msgid "Help" 84 | msgstr "Ajuda" 85 | 86 | #: data/ui/HelpDialog.ui:37 87 | msgid "Unix Permissions" 88 | msgstr "Permissões Unix" 89 | 90 | #: data/ui/HelpDialog.ui:46 91 | msgid "" 92 | "The Unix permissions system is used to grant granulated access to file and " 93 | "directories on a Unix-like operating system" 94 | msgstr "" 95 | "O sistema de permissões do Unix é utilizado para conceder acesso granular a " 96 | "arquivos e diretórios em um sistema operacional do tipo Unix" 97 | 98 | #: data/ui/HelpDialog.ui:52 99 | msgid "Permissions are granted to three groups:" 100 | msgstr "As permissões são concedidas a três grupos:" 101 | 102 | #: data/ui/HelpDialog.ui:68 103 | msgid "The owner of the file" 104 | msgstr "O proprietário do arquivo" 105 | 106 | #: data/ui/HelpDialog.ui:79 107 | msgid "A group of users who share access to the file" 108 | msgstr "Um grupo de usuários que compartilham o acesso ao arquivo" 109 | 110 | #: data/ui/HelpDialog.ui:90 111 | msgid "All other users on the system" 112 | msgstr "Todos os outros usuários do sistema" 113 | 114 | #: data/ui/HelpDialog.ui:102 115 | msgid "The types of permissions are:" 116 | msgstr "Os tipos de permissões são:" 117 | 118 | #: data/ui/HelpDialog.ui:117 119 | msgid "Read (Symbolic: r, Numeric: 4)" 120 | msgstr "Leitura (Simbolicamente: r, Numericamente: 4)" 121 | 122 | #: data/ui/HelpDialog.ui:118 123 | msgid "Allows viewing the file's contents or listing a directory's contents" 124 | msgstr "" 125 | "Permite visualizar o conteúdo do arquivo ou listar o conteúdo de um diretório" 126 | 127 | #: data/ui/HelpDialog.ui:128 128 | msgid "Write (Symbolically: w, Numerically: 2)" 129 | msgstr "Escrita (Simbolicamente: w, Numericamente: 2)" 130 | 131 | #: data/ui/HelpDialog.ui:129 132 | msgid "" 133 | "Allows modifying the file's contents or creating/deleting files within a " 134 | "directory" 135 | msgstr "" 136 | "Permite modificar o conteúdo do arquivo ou criar/excluir arquivos dentro de " 137 | "um diretório" 138 | 139 | #: data/ui/HelpDialog.ui:139 140 | msgid "Execute (Symbolically: x, Numerically: 1)" 141 | msgstr "Execução (Simbolicamente: x, Numericamente: 1)" 142 | 143 | #: data/ui/HelpDialog.ui:140 144 | msgid "Allows running the file as a program" 145 | msgstr "Permite executar o arquivo como um programa" 146 | 147 | #: data/ui/HelpDialog.ui:153 148 | msgid "" 149 | "Permissions can either be represented symbolically or numerically. Symbolic " 150 | "permissions are represented as a string of ten characters, and numeric is " 151 | "represented by three numbers (octal notation) for Example:" 152 | msgstr "" 153 | "As permissões podem ser representadas de forma simbólica ou numérica. De " 154 | "forma simbólica, as permissões são representadas por uma sequência de dez " 155 | "caracteres, enquanto na forma numérica, são representadas por três números " 156 | "(notação octal). Por exemplo:" 157 | 158 | #: data/ui/HelpDialog.ui:159 159 | msgid "Symbolic: -rwxr-xr--" 160 | msgstr "Simbólica: -rwxr-xr--" 161 | 162 | #: data/ui/HelpDialog.ui:169 163 | msgid "Numeric: 754" 164 | msgstr "Numérica: 754" 165 | 166 | #: data/ui/HelpDialog.ui:184 167 | msgid "First character, the file type" 168 | msgstr "Primeiro caractere, o tipo de arquivo" 169 | 170 | #: data/ui/HelpDialog.ui:185 171 | msgid "can either be '-' for file or 'd' for directory" 172 | msgstr "pode ser '-' para arquivo ou 'd' para diretório" 173 | 174 | #: data/ui/HelpDialog.ui:190 175 | msgid "First three positions (after file type)" 176 | msgstr "Primeiras três posições (após o tipo de arquivo)" 177 | 178 | #: data/ui/HelpDialog.ui:191 179 | msgid "" 180 | "The read, write and execute permissions for the user, here we have 'rwx', " 181 | "which translated to 4+2+1 and adds to 7" 182 | msgstr "" 183 | "As permissões de leitura, escrita e execução para o usuário, aqui temos " 184 | "'rwx', que se traduz em 4+2+1, totalizando 7" 185 | 186 | #: data/ui/HelpDialog.ui:196 187 | msgid "Second three positions" 188 | msgstr "Três posições seguintes" 189 | 190 | #: data/ui/HelpDialog.ui:197 191 | msgid "" 192 | "The read, write and execute permissions for the group, here we have 'r-x', " 193 | "which translated to 4+0+1 and adds to 5" 194 | msgstr "" 195 | "As permissões de leitura, escrita e execução para o grupo, aqui temos 'r-x', " 196 | "que se traduz em 4+0+1, totalizando 5" 197 | 198 | #: data/ui/HelpDialog.ui:202 199 | msgid "Last three positions" 200 | msgstr "Últimas três posições" 201 | 202 | #: data/ui/HelpDialog.ui:203 203 | msgid "" 204 | "The read, write and execute permissions for other users, here we have 'r--', " 205 | "which translated to 4+0+0 and adds to 4" 206 | msgstr "" 207 | "As permissões de leitura, escrita e execução para outros usuários, aqui " 208 | "temos 'r--', que se traduz em 4+0+0, totalizando 4" 209 | 210 | #: data/ui/HelpDialog.ui:211 211 | msgid "Example command" 212 | msgstr "Comando de exemplo" 213 | 214 | #: data/ui/HelpDialog.ui:220 215 | msgid "chmod 754 (file name)" 216 | msgstr "chmod 754 (nome do arquivo)" 217 | 218 | #: data/ui/HelpDialog.ui:230 219 | msgid "Special Permissions" 220 | msgstr "Permissões Especiais" 221 | 222 | #: data/ui/HelpDialog.ui:239 223 | msgid "" 224 | "Special permissions make up a fourth access level in addition to user, " 225 | "group, and other, they allow for additional privileges over the standard " 226 | "permission sets" 227 | msgstr "" 228 | "As permissões especiais formam um quarto nível de acesso, além dos níveis de " 229 | "usuário, grupo e outros, e oferecem privilégios adicionais em relação às " 230 | "permissões padrão" 231 | 232 | #: data/ui/HelpDialog.ui:245 233 | msgid "The three special permissions are:" 234 | msgstr "As três permissões especiais são:" 235 | 236 | #: data/ui/HelpDialog.ui:281 237 | msgid "Special permissions can be represented symbolically or numerically." 238 | msgstr "" 239 | "As permissões especiais podem ser representadas de forma simbólica ou " 240 | "numérica." 241 | 242 | #: data/ui/HelpDialog.ui:288 243 | msgid "Numeric representation:" 244 | msgstr "Representação numérica:" 245 | 246 | #: data/ui/HelpDialog.ui:298 247 | msgid "" 248 | "They are denoted as an extra digit before the user, group and others " 249 | "permissions. Can Either be 0, 4, 2, 1 or any combination of them." 250 | msgstr "" 251 | "Elas são indicadas por um dígito extra antes das permissões de usuário, " 252 | "grupo e outros. Esse dígito pode ser 0, 4, 2, 1 ou qualquer combinação " 253 | "desses valores." 254 | 255 | #: data/ui/HelpDialog.ui:308 256 | msgid "Symbolical representation:" 257 | msgstr "Representação simbólica:" 258 | 259 | #: data/ui/HelpDialog.ui:324 260 | msgid "Goes where 'x' normally is for the user" 261 | msgstr "Fica no lugar do 'x' das permissões do usuário" 262 | 263 | #: data/ui/HelpDialog.ui:330 264 | msgid "Goes where 'x' normally is for the group" 265 | msgstr "Fica no lugar do 'x' das permissões do grupo" 266 | 267 | #: data/ui/HelpDialog.ui:336 268 | msgid "Goes where 'x' normally is for others" 269 | msgstr "Fica no lugar do 'x' das permissões de outros" 270 | 271 | #: data/ui/HelpDialog.ui:344 272 | msgid "Symbolic: -rwsr-Sr-t" 273 | msgstr "Simbólica: -rwsr-Sr-t" 274 | 275 | #: data/ui/HelpDialog.ui:354 276 | msgid "Numeric: 7745" 277 | msgstr "Númerica: 7745" 278 | 279 | #: data/ui/HelpDialog.ui:370 280 | msgid "" 281 | "Represented as '4' numerically. Symbolically, it is either 's' if the owner " 282 | "has execute permissions or 'S' if not." 283 | msgstr "" 284 | "Representado numericamente como '4'. Simbolicamente, pode ser 's' se o " 285 | "proprietário tiver permissões de execução ou 'S' se não tiver." 286 | 287 | #: data/ui/HelpDialog.ui:376 288 | msgid "" 289 | "Represented as '2' numerically. Symbolically, it is either 's' if the group " 290 | "has execute permissions or 'S' if not." 291 | msgstr "" 292 | "Representado numericamente como '2'. Simbolicamente, pode ser 's' se o " 293 | "proprietário tiver permissões de execução ou 'S' se não tiver." 294 | 295 | #: data/ui/HelpDialog.ui:382 296 | msgid "" 297 | "Represented as '1' numerically. Symbolically, it is either 't' if the others " 298 | "have execute permissions or 'T' if not." 299 | msgstr "" 300 | "Representado numericamente como '1'. Simbolicamente, pode ser 't' se o " 301 | "proprietário tiver permissões de execução ou 'T' se não tiver." 302 | 303 | #: data/ui/HelpDialog.ui:390 304 | msgid "Example commands" 305 | msgstr "Comandos de exemplo" 306 | 307 | #: data/ui/HelpDialog.ui:399 308 | msgid "chmod 7745 (file name)" 309 | msgstr "chmod 7745 (nome do arquivo)" 310 | 311 | #: data/ui/HelpDialog.ui:409 312 | msgid "Further reading" 313 | msgstr "Leitura recomendada" 314 | 315 | #: data/ui/Window.ui:4 data/ui/Window.ui:44 316 | #: data/io.github.ronniedroid.concessio.desktop:3 317 | #: data/io.github.ronniedroid.concessio.metainfo.xml:5 src/application.js:70 318 | msgid "Concessio" 319 | msgstr "Concessão" 320 | 321 | #: data/ui/Window.ui:52 data/io.github.ronniedroid.concessio.desktop:4 322 | #: data/io.github.ronniedroid.concessio.metainfo.xml:6 323 | msgid "Understand file permissions" 324 | msgstr "Entenda as permissões de arquivo" 325 | 326 | #: data/ui/Window.ui:57 327 | msgid "Get started" 328 | msgstr "Começar" 329 | 330 | #: data/ui/Window.ui:87 331 | msgid "Open" 332 | msgstr "Abrir" 333 | 334 | #: data/ui/Window.ui:96 335 | msgid "Main Menu" 336 | msgstr "Menu" 337 | 338 | #: data/ui/Window.ui:144 data/ui/ShortcutsWindow.ui:42 339 | msgid "Keyboard Shortcuts" 340 | msgstr "Atalhos de Teclado" 341 | 342 | #: data/ui/Window.ui:148 343 | msgid "About" 344 | msgstr "Sobre" 345 | 346 | #: data/ui/ShortcutsWindow.ui:8 347 | msgid "File" 348 | msgstr "Arquivo" 349 | 350 | #: data/ui/ShortcutsWindow.ui:11 351 | msgid "Open File" 352 | msgstr "Abrir Arquivo" 353 | 354 | #: data/ui/ShortcutsWindow.ui:12 355 | msgid "Open file chooser dialog" 356 | msgstr "Abre diálogo de seleção de arquivo" 357 | 358 | #: data/ui/ShortcutsWindow.ui:20 359 | msgid "General" 360 | msgstr "Geral" 361 | 362 | #: data/ui/ShortcutsWindow.ui:23 363 | msgid "Quit App" 364 | msgstr "Sair do Aplicativo" 365 | 366 | #: data/ui/ShortcutsWindow.ui:29 367 | msgid "Close Window" 368 | msgstr "Fechar Janela" 369 | 370 | #: data/ui/ShortcutsWindow.ui:35 371 | msgid "Help dialog" 372 | msgstr "Ajuda" 373 | 374 | #: data/ui/ShortcutsWindow.ui:36 375 | msgid "Display the help dialog" 376 | msgstr "Mostra a janela de ajuda" 377 | 378 | #: data/ui/ShortcutsWindow.ui:43 379 | msgid "Display this keyboard shortcuts window" 380 | msgstr "Mostra essa janela de atalhos do teclado" 381 | 382 | #: data/io.github.ronniedroid.concessio.desktop:9 383 | msgid "Permissions;Convertor;Calculator;" 384 | msgstr "Permissões;Conversor;Calculadora;" 385 | 386 | #: data/io.github.ronniedroid.concessio.metainfo.xml:11 src/application.js:74 387 | msgid "" 388 | "Concessio helps you understand and convert between unix permissions " 389 | "representations" 390 | msgstr "" 391 | "A Concessão ajuda você a entender e converter entre representações de " 392 | "permissões Unix" 393 | 394 | #: data/io.github.ronniedroid.concessio.metainfo.xml:13 395 | msgid "" 396 | "Convert between symbolic and numeric representations of UNIX file permissions" 397 | msgstr "" 398 | "Converta entre a representação simbólica e a representação numérica das " 399 | "permissões de arquivos do Unix" 400 | 401 | #: data/io.github.ronniedroid.concessio.metainfo.xml:14 402 | msgid "Use toggle buttons to update the symbolic and numeric fields" 403 | msgstr "Use botões para alternar facilmente entre as permissões" 404 | 405 | #: data/io.github.ronniedroid.concessio.metainfo.xml:15 406 | msgid "Open a file to read it's permissions and convert them" 407 | msgstr "Abra um arquivo para ler suas permissões e convertê-las" 408 | 409 | #: data/io.github.ronniedroid.concessio.metainfo.xml:16 410 | msgid "Open the help dialog to read and understand the UNIX permissions system" 411 | msgstr "" 412 | "Abra o diálogo de ajuda para ler e entender o sistema de permissões do Unix" 413 | 414 | #: data/io.github.ronniedroid.concessio.metainfo.xml:30 415 | msgid "" 416 | "Application main page converting between numeric and symbolic permission" 417 | msgstr "" 418 | "Página principal do aplicativo, convertendo entre permissões numéricas e " 419 | "simbólicas" 420 | 421 | #: data/io.github.ronniedroid.concessio.metainfo.xml:34 422 | msgid "Application help page, explaining unix permissions" 423 | msgstr "Página de ajuda do aplicativo, explicando as permissões do Unix" 424 | 425 | #. Translators: Replace "translator-credits" with your names, one name per line 426 | #: src/application.js:84 427 | msgid "translator-credits" 428 | msgstr "Ioseph Silva" 429 | 430 | #: src/application.js:87 431 | msgid "Special thanks to" 432 | msgstr "Agradecimentos especiais a" 433 | 434 | #: src/window.js:141 435 | msgid "Copied to clipboard!" 436 | msgstr "Copiado para a área de transferência!" 437 | 438 | #: src/window.js:162 439 | msgid "Failed to open file." 440 | msgstr "Falha ao abrir o arquivo." 441 | -------------------------------------------------------------------------------- /po/it.po: -------------------------------------------------------------------------------- 1 | # ITALIAN TRANSLATION. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the io.github.ronniedroid.concessio package. 4 | # Albano BATTISTELLA , 2O24. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: io.github.ronniedroid.concessio\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2024-09-17 15:39+0300\n" 11 | "PO-Revision-Date: 2024-09-20 17:53+0300\n" 12 | "Last-Translator: Albano Battistella \n" 13 | "Language-Team: Albano Battistella\n" 14 | "Language: it_IT\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "X-Generator: Poedit 3.4.4\n" 19 | 20 | #: data/ui/BoxedList.ui:12 data/ui/HelpDialog.ui:67 21 | msgid "User" 22 | msgstr "Utente" 23 | 24 | #: data/ui/BoxedList.ui:21 data/ui/BoxedList.ui:89 data/ui/BoxedList.ui:157 25 | msgid "Read" 26 | msgstr "Lettura" 27 | 28 | #: data/ui/BoxedList.ui:36 data/ui/BoxedList.ui:104 data/ui/BoxedList.ui:172 29 | msgid "Write" 30 | msgstr "Scrittura" 31 | 32 | #: data/ui/BoxedList.ui:51 data/ui/BoxedList.ui:119 data/ui/BoxedList.ui:187 33 | msgid "Execute" 34 | msgstr "Eseguire" 35 | 36 | #: data/ui/BoxedList.ui:80 data/ui/HelpDialog.ui:78 37 | msgid "Group" 38 | msgstr "Gruppo" 39 | 40 | #: data/ui/BoxedList.ui:148 data/ui/HelpDialog.ui:89 41 | msgid "Others" 42 | msgstr "Altri" 43 | 44 | #: data/ui/BoxedList.ui:247 data/ui/HelpDialog.ui:261 45 | msgid "" 46 | "Executes the file with the permissions of the file owner, not the user running it." 47 | msgstr "" 48 | "Esegue il file con i permessi del proprietario del file, non dell'utente che lo sta " 49 | "eseguendo." 50 | 51 | #: data/ui/BoxedList.ui:288 data/ui/HelpDialog.ui:267 52 | msgid "" 53 | "Executes the file with the permissions of the file's group, or ensures new files in a " 54 | "directory inherit the group." 55 | msgstr "" 56 | "Esegue il file con i permessi del gruppo del file o assicura che i nuovi file in una " 57 | "directory ereditino il gruppo." 58 | 59 | #: data/ui/BoxedList.ui:329 data/ui/HelpDialog.ui:273 60 | msgid "" 61 | "Allows only the file owner or directory owner to delete files in the directory, even " 62 | "if others have write permissions. Only applies to directories and has no effect on " 63 | "files." 64 | msgstr "" 65 | "Consente solo al proprietario del file o della directory di eliminare i file nella " 66 | "directory, anche se altri hanno permessi di scrittura. Si applica solo alle directory " 67 | "e non ha effetto sui file." 68 | 69 | #: data/ui/Form.ui:16 70 | msgid "Numeric" 71 | msgstr "Numerico" 72 | 73 | #: data/ui/Form.ui:25 data/ui/Form.ui:49 74 | msgid "Copy value" 75 | msgstr "Copia valore" 76 | 77 | #: data/ui/Form.ui:40 78 | msgid "Symbolic" 79 | msgstr "Simbolico" 80 | 81 | #: data/ui/HelpDialog.ui:13 data/ui/Window.ui:140 82 | msgid "Help" 83 | msgstr "Aiuto" 84 | 85 | #: data/ui/HelpDialog.ui:37 86 | msgid "Unix Permissions" 87 | msgstr "Permessi Unix" 88 | 89 | #: data/ui/HelpDialog.ui:46 90 | msgid "" 91 | "The Unix permissions system is used to grant granulated access to file and directories " 92 | "on a Unix-like operating system" 93 | msgstr "" 94 | "Il sistema di permessi Unix viene utilizzato per concedere un accesso granulare a file " 95 | "e directory su un sistema operativo di tipo Unix" 96 | 97 | #: data/ui/HelpDialog.ui:52 98 | msgid "Permissions are granted to three groups:" 99 | msgstr "I permessi vengono concessi a tre gruppi:" 100 | 101 | #: data/ui/HelpDialog.ui:68 102 | msgid "The owner of the file" 103 | msgstr "Il proprietario del file" 104 | 105 | #: data/ui/HelpDialog.ui:79 106 | msgid "A group of users who share access to the file" 107 | msgstr "Un gruppo di utenti che condividono l'accesso al file" 108 | 109 | #: data/ui/HelpDialog.ui:90 110 | msgid "All other users on the system" 111 | msgstr "Tutti gli altri utenti del sistema" 112 | 113 | #: data/ui/HelpDialog.ui:102 114 | msgid "The types of permissions are:" 115 | msgstr "I tipi di permessi sono:" 116 | 117 | #: data/ui/HelpDialog.ui:117 118 | msgid "Read (Symbolic: r, Numeric: 4)" 119 | msgstr "Lettura (Simbolico: r, Numerico: 4)" 120 | 121 | #: data/ui/HelpDialog.ui:118 122 | msgid "Allows viewing the file's contents or listing a directory's contents" 123 | msgstr "" 124 | "Consente di visualizzare il contenuto del file o di elencare il contenuto di una " 125 | "directory" 126 | 127 | #: data/ui/HelpDialog.ui:128 128 | msgid "Write (Symbolically: w, Numerically: 2)" 129 | msgstr "Scrittura (Simbolico: w, Numericamente: 2)" 130 | 131 | #: data/ui/HelpDialog.ui:129 132 | msgid "" 133 | "Allows modifying the file's contents or creating/deleting files within a directory" 134 | msgstr "" 135 | "Consente di modificare il contenuto del file o di creare/eliminare file all'interno di " 136 | "una directory" 137 | 138 | #: data/ui/HelpDialog.ui:139 139 | msgid "Execute (Symbolically: x, Numerically: 1)" 140 | msgstr "Eseguire (Simbolicamente: x, Numericamente: 1)" 141 | 142 | #: data/ui/HelpDialog.ui:140 143 | msgid "Allows running the file as a program" 144 | msgstr "Consente di eseguire il file come programma" 145 | 146 | #: data/ui/HelpDialog.ui:153 147 | msgid "" 148 | "Permissions can either be represented symbolically or numerically. Symbolic " 149 | "permissions are represented as a string of ten characters, and numeric is represented " 150 | "by three numbers (octal notation) for Example:" 151 | msgstr "" 152 | "I permessi possono essere rappresentati simbolicamente o numericamente. I permessi " 153 | "simbolici sono rappresentati come una stringa di dieci caratteri, mentre quelli " 154 | "numerici sono rappresentati da tre numeri (notazione ottale) per esempio:" 155 | 156 | #: data/ui/HelpDialog.ui:159 157 | msgid "Symbolic: -rwxr-xr--" 158 | msgstr "Simbolico: -rwxr-xr--" 159 | 160 | #: data/ui/HelpDialog.ui:169 161 | msgid "Numeric: 754" 162 | msgstr "Numerico: 754" 163 | 164 | #: data/ui/HelpDialog.ui:184 165 | msgid "First character, the file type" 166 | msgstr "Primo carattere, il tipo di file" 167 | 168 | #: data/ui/HelpDialog.ui:185 169 | msgid "can either be '-' for file or 'd' for directory" 170 | msgstr "può essere '-' per file o 'd' per directory" 171 | 172 | #: data/ui/HelpDialog.ui:190 173 | msgid "First three positions (after file type)" 174 | msgstr "Prime tre posizioni (dopo il tipo di file)" 175 | 176 | #: data/ui/HelpDialog.ui:191 177 | msgid "" 178 | "The read, write and execute permissions for the user, here we have 'rwx', which " 179 | "translated to 4+2+1 and adds to 7" 180 | msgstr "" 181 | "I permessi di lettura, scrittura ed esecuzione per l'utente, qui abbiamo 'rwx', che " 182 | "tradotto è 4+2+1 e aggiunge 7" 183 | 184 | #: data/ui/HelpDialog.ui:196 185 | msgid "Second three positions" 186 | msgstr "Seconde tre posizioni" 187 | 188 | #: data/ui/HelpDialog.ui:197 189 | msgid "" 190 | "The read, write and execute permissions for the group, here we have 'r-x', which " 191 | "translated to 4+0+1 and adds to 5" 192 | msgstr "" 193 | "I permessi di lettura, scrittura ed esecuzione per il gruppo, qui abbiamo 'r-x', che " 194 | "tradotto è 4+0+1 e aggiunge 5" 195 | 196 | #: data/ui/HelpDialog.ui:202 197 | msgid "Last three positions" 198 | msgstr "Ultime tre posizioni" 199 | 200 | #: data/ui/HelpDialog.ui:203 201 | msgid "" 202 | "The read, write and execute permissions for other users, here we have 'r--', which " 203 | "translated to 4+0+0 and adds to 4" 204 | msgstr "" 205 | "I permessi di lettura, scrittura ed esecuzione per gli altri utenti, qui abbiamo " 206 | "'r--', che tradotto è 4+0+0 e aggiunge 4" 207 | 208 | #: data/ui/HelpDialog.ui:211 209 | msgid "Example command" 210 | msgstr "Comando di esempio" 211 | 212 | #: data/ui/HelpDialog.ui:220 213 | msgid "chmod 754 (file name)" 214 | msgstr "chmod 754 (nome file)" 215 | 216 | #: data/ui/HelpDialog.ui:230 217 | msgid "Special Permissions" 218 | msgstr "Permessi speciali" 219 | 220 | #: data/ui/HelpDialog.ui:239 221 | msgid "" 222 | "Special permissions make up a fourth access level in addition to user, group, and " 223 | "other, they allow for additional privileges over the standard permission sets" 224 | msgstr "" 225 | "I permessi speciali costituiscono un quarto livello di accesso oltre a utente, gruppo " 226 | "e altro, e consentono privilegi aggiuntivi rispetto ai set di permessi standard" 227 | 228 | #: data/ui/HelpDialog.ui:245 229 | msgid "The three special permissions are:" 230 | msgstr "I tre permessi speciali sono::" 231 | 232 | #: data/ui/HelpDialog.ui:281 233 | msgid "Special permissions can be represented symbolically or numerically." 234 | msgstr "I permessi speciali possono essere rappresentati simbolicamente o numericamente." 235 | 236 | #: data/ui/HelpDialog.ui:288 237 | msgid "Numeric representation:" 238 | msgstr "Rappresentazione numerica:" 239 | 240 | #: data/ui/HelpDialog.ui:298 241 | msgid "" 242 | "They are denoted as an extra digit before the user, group and others permissions. Can " 243 | "Either be 0, 4, 2, 1 or any combination of them." 244 | msgstr "" 245 | "Sono indicati come una cifra aggiuntiva prima dell'utente, del gruppo e degli altri " 246 | "permessi. Possono essere 0, 4, 2, 1 o una qualsiasi combinazione di essi." 247 | 248 | #: data/ui/HelpDialog.ui:308 249 | msgid "Symbolical representation:" 250 | msgstr "Rappresentazione simbolica:" 251 | 252 | #: data/ui/HelpDialog.ui:324 253 | msgid "Goes where 'x' normally is for the user" 254 | msgstr "Va dove normalmente si trova 'x' per l'utente" 255 | 256 | #: data/ui/HelpDialog.ui:330 257 | msgid "Goes where 'x' normally is for the group" 258 | msgstr "Va dove normalmente c'è 'x' per il gruppo" 259 | 260 | #: data/ui/HelpDialog.ui:336 261 | msgid "Goes where 'x' normally is for others" 262 | msgstr "Va dove normalmente c'è 'x' per gli altri" 263 | 264 | #: data/ui/HelpDialog.ui:344 265 | msgid "Symbolic: -rwsr-Sr-t" 266 | msgstr "Simbolico: --rwsr-Sr-t" 267 | 268 | #: data/ui/HelpDialog.ui:354 269 | msgid "Numeric: 7745" 270 | msgstr "Numerico: 7745" 271 | 272 | #: data/ui/HelpDialog.ui:370 273 | msgid "" 274 | "Represented as '4' numerically. Symbolically, it is either 's' if the owner has " 275 | "execute permissions or 'S' if not." 276 | msgstr "" 277 | "Rappresentato numericamente come '4'. Simbolicamente, è 's' se il proprietario ha i " 278 | "permessi di esecuzione o 'S' in caso contrario." 279 | 280 | #: data/ui/HelpDialog.ui:376 281 | msgid "" 282 | "Represented as '2' numerically. Symbolically, it is either 's' if the group has " 283 | "execute permissions or 'S' if not." 284 | msgstr "" 285 | "Rappresentato come '2' numericamente. Simbolicamente, è 's' se il gruppo ha permessi " 286 | "di esecuzione o 'S' in caso contrario." 287 | 288 | #: data/ui/HelpDialog.ui:382 289 | msgid "" 290 | "Represented as '1' numerically. Symbolically, it is either 't' if the others have " 291 | "execute permissions or 'T' if not." 292 | msgstr "" 293 | "Rappresentato come '1' numericamente. Simbolicamente, è 't' se gli altri hanno " 294 | "permessi di esecuzione o 'T' se non li hanno." 295 | 296 | #: data/ui/HelpDialog.ui:390 297 | msgid "Example commands" 298 | msgstr "Comandi di esempio" 299 | 300 | #: data/ui/HelpDialog.ui:399 301 | msgid "chmod 7745 (file name)" 302 | msgstr "chmod 7745 (nome file)" 303 | 304 | #: data/ui/HelpDialog.ui:409 305 | msgid "Further reading" 306 | msgstr "Ulteriore lettura" 307 | 308 | #: data/ui/Window.ui:4 data/ui/Window.ui:44 309 | #: data/io.github.ronniedroid.concessio.desktop:3 310 | #: data/io.github.ronniedroid.concessio.metainfo.xml:5 src/application.js:70 311 | msgid "Concessio" 312 | msgstr "Concessio" 313 | 314 | #: data/ui/Window.ui:52 data/io.github.ronniedroid.concessio.desktop:4 315 | #: data/io.github.ronniedroid.concessio.metainfo.xml:6 316 | msgid "Understand file permissions" 317 | msgstr "Comprendere i permessi dei file" 318 | 319 | #: data/ui/Window.ui:57 320 | msgid "Get started" 321 | msgstr "Iniziare" 322 | 323 | #: data/ui/Window.ui:87 324 | msgid "Open" 325 | msgstr "Apri file" 326 | 327 | #: data/ui/Window.ui:96 328 | msgid "Main Menu" 329 | msgstr "Menu principale" 330 | 331 | #: data/ui/Window.ui:144 data/ui/ShortcutsWindow.ui:42 332 | msgid "Keyboard Shortcuts" 333 | msgstr "Scorciatoie da tastiera" 334 | 335 | #: data/ui/Window.ui:148 336 | msgid "About" 337 | msgstr "Informazioni" 338 | 339 | #: data/ui/ShortcutsWindow.ui:8 340 | msgid "File" 341 | msgstr "File" 342 | 343 | #: data/ui/ShortcutsWindow.ui:11 344 | msgid "Open File" 345 | msgstr "Apri file" 346 | 347 | #: data/ui/ShortcutsWindow.ui:12 348 | msgid "Open file chooser dialog" 349 | msgstr "Apri la finestra di dialogo di selezione file" 350 | 351 | #: data/ui/ShortcutsWindow.ui:20 352 | msgid "General" 353 | msgstr "Generale" 354 | 355 | #: data/ui/ShortcutsWindow.ui:23 356 | msgid "Quit App" 357 | msgstr "Esci dall'app" 358 | 359 | #: data/ui/ShortcutsWindow.ui:29 360 | msgid "Close Window" 361 | msgstr "Chiudi finestra" 362 | 363 | #: data/ui/ShortcutsWindow.ui:35 364 | msgid "Help dialog" 365 | msgstr "Dialogo di aiuto" 366 | 367 | #: data/ui/ShortcutsWindow.ui:36 368 | msgid "Display the help dialog" 369 | msgstr "Visualizza la finestra di aiuto" 370 | 371 | #: data/ui/ShortcutsWindow.ui:43 372 | msgid "Display this keyboard shortcuts window" 373 | msgstr "Visualizza questa finestra delle scorciatoie da tastiera" 374 | 375 | #: data/io.github.ronniedroid.concessio.desktop:9 376 | msgid "Permissions;Convertor;Calculator;" 377 | msgstr "Permessi;Convertitore;Calcolatrice;" 378 | 379 | #: data/io.github.ronniedroid.concessio.metainfo.xml:11 src/application.js:74 380 | msgid "" 381 | "Concessio helps you understand and convert between unix permissions representations" 382 | msgstr "" 383 | "Concessio ti aiuta a comprendere e convertire tra le rappresentazioni dei permessi Unix" 384 | 385 | #: data/io.github.ronniedroid.concessio.metainfo.xml:13 386 | msgid "Convert between symbolic and numeric representations of UNIX file permissions" 387 | msgstr "Converti tra rappresentazioni simboliche e numeriche dei permessi dei file UNIX" 388 | 389 | #: data/io.github.ronniedroid.concessio.metainfo.xml:14 390 | msgid "Use toggle buttons to update the symbolic and numeric fields" 391 | msgstr "Utilizzare i pulsanti di attivazione per aggiornare i campi simbolici e numerici" 392 | 393 | #: data/io.github.ronniedroid.concessio.metainfo.xml:15 394 | msgid "Open a file to read it's permissions and convert them" 395 | msgstr "Aprire un file per leggerne i permessi e convertirli" 396 | 397 | #: data/io.github.ronniedroid.concessio.metainfo.xml:16 398 | msgid "Open the help dialog to read and understand the UNIX permissions system" 399 | msgstr "" 400 | "Aprire la finestra di dialogo della guida per leggere e comprendere il sistema di " 401 | "autorizzazioni UNIX" 402 | 403 | #: data/io.github.ronniedroid.concessio.metainfo.xml:30 404 | msgid "Application main page converting between numeric and symbolic permission" 405 | msgstr "" 406 | "Pagina principale dell'applicazione che converte tra autorizzazione numerica e " 407 | "simbolica" 408 | 409 | #: data/io.github.ronniedroid.concessio.metainfo.xml:34 410 | msgid "Application help page, explaining unix permissions" 411 | msgstr "Pagina di aiuto dell'applicazione, che spiega i permessi Unix" 412 | 413 | #. Translators: Replace "translator-credits" with your names, one name per line 414 | #: src/application.js:84 415 | msgid "translator-credits" 416 | msgstr "Albano Battistella " 417 | 418 | #: src/application.js:87 419 | msgid "Special thanks to" 420 | msgstr "Ringraziamenti speciali a" 421 | 422 | #: src/window.js:141 423 | msgid "Copied to clipboard!" 424 | msgstr "Copiato negli appunti!" 425 | 426 | #: src/window.js:162 427 | msgid "Failed to open file." 428 | msgstr "Impossibile aprire il file." 429 | 430 | #~ msgid "open" 431 | #~ msgstr "apri" 432 | -------------------------------------------------------------------------------- /data/ui/BoxedList.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | 340 | 341 | 342 | -------------------------------------------------------------------------------- /data/ui/HelpDialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | 420 | 421 | 422 | --------------------------------------------------------------------------------