From 9bdba47514015c3bfda7a177611545a5cdc4e207 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Wed, 19 Aug 2026 06:51:30 +0200 Subject: [PATCH 1/6] i18n: translation updates from weblate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Alex Co-authored-by: Andi Chandler Co-authored-by: CYAXXX <85353920+CYAXXX@users.noreply.github.com> Co-authored-by: Geeson Wan Co-authored-by: Hosted Weblate Co-authored-by: Jens Peter Nielsen Co-authored-by: Jiri Grönroos Co-authored-by: Kartik Nayak <65574961+kodebarista@users.noreply.github.com> Co-authored-by: Martin Meizoso Co-authored-by: Michael Millet Co-authored-by: Prasanta-Hembram Co-authored-by: Quentin PAGÈS Co-authored-by: Sproston Co-authored-by: Steen Rabol Co-authored-by: Walter William Beckerleg Bruckman Co-authored-by: Wilbur Lindqvist Co-authored-by: sicKat Co-authored-by: the-forest-watches Co-authored-by: therealmate Co-authored-by: 김유빈 Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-files/da/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-files/en_GB/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-files/fi/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-files/gl/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-files/hu/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-files/it/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-files/kmr/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-files/ko/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-files/nl/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-files/oc/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-files/pt_BR/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-files/ru/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-files/sat/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-files/zh_Hans/ Translation: Pop OS/COSMIC Files --- i18n/da/cosmic_files.ftl | 189 +++++++++++++++----- i18n/en-GB/cosmic_files.ftl | 100 +++++++++++ i18n/fi/cosmic_files.ftl | 5 +- i18n/gl/cosmic_files.ftl | 333 ++++++++++++++++++++++++++++++++++++ i18n/hu/cosmic_files.ftl | 2 +- i18n/it/cosmic_files.ftl | 6 +- i18n/kmr/cosmic_files.ftl | 10 +- i18n/ko/cosmic_files.ftl | 9 + i18n/nl/cosmic_files.ftl | 2 +- i18n/oc/cosmic_files.ftl | 6 + i18n/pt-BR/cosmic_files.ftl | 2 +- i18n/ru/cosmic_files.ftl | 2 +- i18n/sat/cosmic_files.ftl | 2 + i18n/zh-CN/cosmic_files.ftl | 14 +- 14 files changed, 621 insertions(+), 61 deletions(-) create mode 100644 i18n/gl/cosmic_files.ftl diff --git a/i18n/da/cosmic_files.ftl b/i18n/da/cosmic_files.ftl index 82e7f27..5666fdb 100644 --- a/i18n/da/cosmic_files.ftl +++ b/i18n/da/cosmic_files.ftl @@ -1,35 +1,43 @@ -cosmic-files = COSMIC Filer +cosmic-files = COSMIC Filhåndtering empty-folder = Tom mappe -empty-folder-hidden = Tom mappe (har skjulte filer) -no-results = Ingen resultater +empty-folder-hidden = Tom mappe (har skjulte emner) +no-results = Fandt ingen resultater filesystem = Filsystem home = Hjem networks = Netværk -notification-in-progress = Filoperationer er igangværende. -trash = Skraldespand +notification-in-progress = Fil-operationer er igang +trash = Papirkurv recents = Seneste undo = Fortryd today = I dag # Desktop view options -desktop-view-options = Indstillinger for skrivebordsudseende... -show-on-desktop = Vis på Skrivebordet -desktop-folder-content = Indhold på Skrivebordet +desktop-view-options = Valgmuligheder for skrivebordsvisning... +show-on-desktop = Vis på Skrivebord +desktop-folder-content = Skrivebords-mappeindhold mounted-drives = Monterede drev -trash-folder-icon = Skraldespandsikon -icon-size-and-spacing = Ikonstørrelse og afstand +trash-folder-icon = Papirkurv-ikon +icon-size-and-spacing = Ikonstørrelse og -afstand icon-size = Ikonstørrelse # List view name = Navn modified = Ændret -trashed-on = Smidt ud +trashed-on = Kasseret size = Størrelse # Progress footer details = Detaljer -dismiss = Afvis besked -operations-running = { $running } operationer er i gang ({ $percent }%)... -operations-running-finished = { $running } operationer er i gang ({ $percent }%), { $finished } færdiggjort... +dismiss = Luk meddelelse +operations-running = + { $running } { $running -> + [one] operation + *[other] operationer + } kører ({ $percent }%)... +operations-running-finished = + { $running } { $running -> + [one] operation + *[other] operationer + } kører ({ $percent }%), { $finished } færdig... pause = Pause -resume = Fortsæt +resume = Genoptag # Dialogs @@ -40,12 +48,12 @@ create-archive = Opret arkiv ## Empty Trash Dialog -empty-trash = Tøm skraldespand -empty-trash-warning = Er du sikker på du vil slette alle objekter i Skraldespanden permanent? +empty-trash = Tøm papirkurv +empty-trash-warning = Emner i Papirkurv-mappen vil blive slettet permanent ## Mount Error Dialog -mount-error = Kan ikke tilgå drev +mount-error = Ude af stand til at tilgå drev ## New File/Folder Dialog @@ -53,22 +61,22 @@ create-new-file = Opret ny fil create-new-folder = Opret ny mappe file-name = Filnavn folder-name = Mappenavn -file-already-exists = En fil med det navn eksisterer allerede. -folder-already-exists = En mappe med det navn eksisterer allerede. -name-hidden = Navne begyndende med "." vil blive skjult. -name-invalid = Navn kan ikke være "{ $filename }". -name-no-slashes = Navn kan ikke indeholde skråstreg. +file-already-exists = En fil med det navn eksisterer allerede +folder-already-exists = En mappe med det navn eksisterer allerede +name-hidden = Navne begyndende med "." vil være skjulte +name-invalid = Navn må ikke være "{ $filename }" +name-no-slashes = Navn må ikke indeholde skråstreger ## Open/Save Dialog -cancel = Annullér +cancel = Afbryd create = Opret open = Åbn open-file = Åbn fil open-folder = Åbn mappe -open-in-new-tab = Åbn i ny fane +open-in-new-tab = Åbn i nyt faneblad open-in-new-window = Åbn i nyt vindue -open-item-location = Åbn placering for objekt +open-item-location = Åbn emne-placering open-multiple-files = Åbn flere filer open-multiple-folders = Åbn flere mapper save = Gem @@ -87,20 +95,20 @@ rename-folder = Omdøb mappe ## Replace Dialog replace = Erstat -replace-title = "{ $filename }" eksisterer allerede på denne placering. -replace-warning = Vil du erstatte den med den du er ved at gemme? Hvis du erstatter den, overskriver du dens indhold. -replace-warning-operation = Vil du erstatte den? Hvis du erstatter den, overskriver du dens indhold. +replace-title = "{ $filename }" eksisterer allerede i denne placering +replace-warning = Ønsker du at erstatte den med den, du er ved at gemme? Erstatning af den vil overskrive dens indhold. +replace-warning-operation = Ønsker du at erstatte den? Erstatning af den vil overskrive dens indhold. original-file = Original fil replace-with = Erstat med -apply-to-all = Anvend for alle +apply-to-all = Anvend på alle keep-both = Behold begge skip = Spring over ## Set as Executable and Launch Dialog -set-executable-and-launch = Indstil som eksekverbar fil og start -set-executable-and-launch-description = Vil du indstille "{ $name }" som en eksekverbar fil og starte den? -set-and-launch = Indstil og start +set-executable-and-launch = Angiv som eksekverbar og start +set-executable-and-launch-description = Vil du angive "{ $name }" som eksekverbar og starte den? +set-and-launch = Angiv og start ## Metadata Dialog @@ -239,13 +247,13 @@ settings = Indstillinger appearance = Udseende theme = Tema -match-desktop = Match skrivebord -dark = Mørk -light = Lys +match-desktop = Følg skrivebordets indstillinger +dark = Mørkt +light = Lyst # Context menu add-to-sidebar = Tilføj til sidebjælke -compress = Komprimér -extract-here = Extract +compress = Komprimer… +extract-here = Uddrag new-file = Ny fil... new-folder = Ny mappe... open-in-terminal = Åbn i terminal @@ -280,15 +288,15 @@ quit = Afslut edit = Redigér cut = Klip copy = Kopiér -paste = Sæt ind -select-all = Vælg alt +paste = Indsæt +select-all = Vælg alle ## View zoom-in = Zoom ind default-size = Standardstørrelse zoom-out = Zoom ud -view = Visning +view = Vis grid-view = Gitter-visning list-view = Liste-visning show-hidden-files = Vis skjulte filer @@ -306,3 +314,102 @@ sort-newest-first = Nyeste først sort-oldest-first = Ældste først sort-smallest-to-largest = Mindste til største sort-largest-to-smallest = Største til mindste +delete = Slet +run = Kør +repository = Pakkearkiv +grid-spacing = Gitter-afstand +extract-password-required = Adgangskode påkrævet +extract-to = Udpak Til... +extract-to-title = Udpak til mappe +empty-trash-title = Tøm papirkurv? +keywords = Mappe;Håndtering; +comment = Filhåndteringsprogram til COSMIC-skrivebordet +copy-to-title = Vælg kopi destination +copy-to-button-label = Kopier +move-to-title = Vælg flytte destination +move-to-button-label = Flyt +deleted = + Slettede { $items } { $items -> + [one] element + *[other] elementer + } fra { trash } +removing-from-recents = + Fjerner { $items } { $items -> + [one] element + *[other] elementer + } fra { recents } +type-to-search-enter-path = Indtast stien til mappen eller filen +permanently-deleting = + Sletter permanent { $items } { $items -> + [one] element + *[other] elementer + } +execute-only = Kun kørsel +removed-from-recents = + Fjernede { $items } { $items -> + [one] element + *[other] elementer + } fra { recents } +permanently-deleted = + Slettede permanent { $items } { $items -> + [one] element + *[other] elementer + } +write-only = Kun skrivning +remove = Fjern +context-action = Konteksthandling +context-action-confirm-title = Kør “{ $name }”? +context-action-confirm-warning = + Dette vil køre på { $items } { $items -> + [one] item + *[other] items + }. +selected-items = De { $items } valgte elementer +mixed = Blandet +none = Ingen +write-execute = Skriv og kør +read-only = Kun læsning +read-execute = Læs og kør +read-write = Læs og skriv +read-write-execute = Læs, skriv og kør +keep = Behold +support = Support +progress-failed = { $percent } %, mislykkedes +pasted-image = Indsat billede +pasted-text = Indsat tekst +pasted-video = Indsat video +deleting = + Sletter { $items } { $items -> + [one] element + *[other] elementer + } fra { trash } ({ $progress })... +setting-permissions = Indstiller tilladelser for “{ $name }” til { $mode } +set-permissions = Sæt tilladelser for “{ $name }” til { $mode } +show-recents = Seneste-mappe i sidepanelet +type-to-search = Skriv for at søge +type-to-search-recursive = Søger i den aktuelle mappe og alle undermapper +type-to-search-select = Vælger den første matchende fil eller mappe +clear-recents-history = Ryd seneste historik +copy-to = Kopiér til… +delete-permanently = Slet permanent +eject = Skub ud +move-to = Flyt til… +remove-from-recents = Fjern fra seneste +reload-folder = Genindlæs mappe +copy-path = Kopiér sti +rename-confirm = Omdøb +calculate = Udregn +error = Fejl +checksum = { $kind }-kontrolsum +other-apps = Andre applikationer +related-apps = Relaterede applikationer +permanently-delete-question = Slet permanent? +permanently-delete-warning = { $target } vil blive slettet permanent. Denne handling kan ikke fortrydes. +open-with = Åbn med +favorite-path-error = Fejl ved åbning af sti +favorite-path-error-description = + Ude af stand til at åbne "{ $path }" + "{ $path }" Eksisterer muligvis ikke, eller du har måske ikketilladelse til at åbne den + + Ønsker du at fjerne den fra sidebjælken? +single-click = Enkelt klik for at åbne diff --git a/i18n/en-GB/cosmic_files.ftl b/i18n/en-GB/cosmic_files.ftl index e69de29..62d9b75 100644 --- a/i18n/en-GB/cosmic_files.ftl +++ b/i18n/en-GB/cosmic_files.ftl @@ -0,0 +1,100 @@ +save = Save +quit = Quit +name = Name +delete = Delete +cancel = Cancel +run = Run +new-window = New window +theme = Theme +appearance = Appearance +light = Light +repository = Repository +support = Support +dark = Dark +match-desktop = Match desktop +settings = Settings +replace = Replace +file = File +zoom-in = Zoom in +select-all = Select all +zoom-out = Zoom out +default-size = Default size +edit = Edit +copy = Copy +paste = Paste +view = View +undo = Undo +cut = Cut +icon-size-and-spacing = Icon size and spacing +cosmic-files = COSMIC Files +trash = Rubbish +empty-folder-hidden = Empty folder (has hidden items) +no-results = No results found +empty-folder = Empty folder +menu-settings = Settings... +recents = Recents +mounted-drives = Mounted drives +filesystem = Filesystem +home = Home +desktop-view-options = Desktop view options... +show-on-desktop = Show on Desktop +trash-folder-icon = Bin folder icon +desktop-folder-content = Desktop folder content +networks = Networks +today = Today +notification-in-progress = File operations are in progress +comment = File manager for the COSMIC desktop +keywords = Folder;Manager; +size = Size +dismiss = Dismiss message +trashed-on = Binned +create-archive = Create archive +pause = Pause +resume = Resume +grid-spacing = Grid spacing +details = Details +operations-running-finished = + { $running } { $running -> + [one] operation + *[other] operations + } running ({ $percent }%), { $finished } finished... +icon-size = Icon size +modified = Modified +operations-running = + { $running } { $running -> + [one] operation + *[other] operations + } running ({ $percent }%)... +copy-to-title = Select copy destination +open-file = Open file +open-multiple-files = Open multiple files +create-new-folder = Create new folder +create = Create +other-apps = Other applications +open-multiple-folders = Open multiple folders +extract-to = Extract To... +create-new-file = Create new file +open-in-new-window = Open in new window +folder-name = Folder name +browse-store = Browse { $store } +open-item-location = Open item location +mount-error = Unable to access drive +open = Open +extract-to-title = Extract to folder +open-with-title = How do you want to open "{ $name }"? +extract-password-required = Password required +open-folder = Open folder +open-in-new-tab = Open in new tab +file-name = File name +save-file = Save file +file-already-exists = A file with that name already exists +name-hidden = Names starting with "." will be hidden +folder-already-exists = A folder with that name already exists +empty-trash = Empty bin +empty-trash-title = Empty bin? +name-no-slashes = Name cannot contain slashes +name-invalid = Name cannot be "{ $filename }" +copy-to-button-label = Copy +move-to-title = Select move destination +move-to-button-label = Move +context-action = Context action diff --git a/i18n/fi/cosmic_files.ftl b/i18n/fi/cosmic_files.ftl index 6000bc7..f0bf682 100644 --- a/i18n/fi/cosmic_files.ftl +++ b/i18n/fi/cosmic_files.ftl @@ -225,7 +225,7 @@ settings = Asetukset appearance = Ulkoasu theme = Teema -match-desktop = Sovita työpöytään +match-desktop = Sama kuin työpöytä dark = Tumma light = Vaalea @@ -415,3 +415,6 @@ context-action-confirm-warning = }. run = Suorita rename-confirm = Nimeä uudelleen +checksum = { $kind }-tarkistussumma +calculate = Laske +error = Virhe diff --git a/i18n/gl/cosmic_files.ftl b/i18n/gl/cosmic_files.ftl new file mode 100644 index 0000000..77a5757 --- /dev/null +++ b/i18n/gl/cosmic_files.ftl @@ -0,0 +1,333 @@ +name = Nome +save = Gardar +cancel = Cancelar +run = Executar +delete = Eliminar +repository = Repositorio +support = Soporte +settings = Axustes +appearance = Apariencia +theme = Tema +match-desktop = Axustar ao escritorio +dark = Escuro +light = Claro +replace = Remplazar +file = Ficheiro +new-window = Nova xanela +quit = Pechar +edit = Editar +undo = Desfacer +cut = Cortar +copy = Copiar +paste = Pegar +select-all = Seleccionar todo +view = Ver +zoom-in = Aumentar Zoom +default-size = Tamaño por defecto +zoom-out = Afastar Zoom +menu-settings = Axustes... +cosmic-files = Ficheiros COSMIC +comment = Xestor de ficheiros para o escritorio COSMIC +keywords = Cartafol;Xestor; +empty-folder = Cartafol baleiro +empty-folder-hidden = Cartafol baleiro (contén elementos agochados) +no-results = Non se atoparon resultados +filesystem = Sistema de ficheiros +home = Inicio +networks = Redes +notification-in-progress = Operacións de ficheiros en progreso +trash = Lixo +recents = Recentes +today = Hoxe +desktop-view-options = Axustes da vista do escritorio… +show-on-desktop = Amosar no Escritorio +desktop-folder-content = Contido do cartafol Escritorio +mounted-drives = Unidades montadas +trash-folder-icon = Icona do cartafol do Lixo +icon-size-and-spacing = Tamaño e espazado das iconas +icon-size = Tamaño de icona +grid-spacing = Espazado da grella +modified = Modificado +trashed-on = No lixo +size = Tamaño +details = Detalles +dismiss = Descartar a mensaxe +operations-running = + { $running } { $executandose -> + [unha] operacion + *[outra] operacions + } executandose ({ $percent }%)... +operations-running-finished = + { $running } { $executandose -> + [unha] operacion + *[outra] operacions + } executandose ({ $percent }%), { $finished } rematadas... +pause = Pausa +resume = Retomar +create-archive = Crear arquivo comprimido +copy-to-title = Seleccionar o destino da copia +copy-to-button-label = Copiar +extract-password-required = Contrasinal necesario +extract-to = Extraer en… +extract-to-title = Extraer a cartafol +empty-trash = Baleirar Lixo +empty-trash-title = Baleirar o lixo? +empty-trash-warning = Os elementos do cartafol do lixo eliminaranse de forma permanente +mount-error = Non é posible acceder a unidade +move-to-title = Seleccionar o destino do movemento +move-to-button-label = Mover +create-new-file = Crear un novo ficheiro +create-new-folder = Crear novo cartafol +file-name = Nome do ficheiro +folder-name = Nome do cartafol +file-already-exists = Existe un ficheiro co mesmo nome +folder-already-exists = Existe un cartafol co mesmo nome +name-hidden = Os nomes que comecen por "." agocharanse +name-invalid = O nome non pode ser "{ $filename }" +name-no-slashes = O nome non pode conter barras +create = Crear +open = Abrir +open-file = Abrir ficheiro +open-folder = Abrir cartafol +open-in-new-tab = Abrir nunha nova lapela +open-in-new-window = Abrir nunha nova xanela +open-item-location = Abrir ubicación do ítem +open-multiple-files = Abrir multiples ficheiros +open-multiple-folders = Abrir multiples cartafoles +save-file = Gardar ficheiro +open-with-title = Como queres abrir «{ $name }»? +browse-store = Atopar { $store } +other-apps = Outras aplicacións +related-apps = Aplicacións relacionadas +context-action = Acción contextual +context-action-confirm-title = Executar "{ $name }"? +context-action-confirm-warning = + Esto vaise executar en { $items } { $items -> + [un] item + *[outro] items + }. +selected-items = Os { $items } elementos seleccionados +permanently-delete-question = Eliminar permanentemente? +permanently-delete-warning = { $target } será eliminado permanentemente. Esta acción non se poderá desfacer. +rename-file = Renomear ficheiro +rename-folder = Renomear cartafol +rename-confirm = Renomear +replace-title = "{ $filename }" xa existe nesta ubicación +replace-warning = Queres substituílo polo que estás a gardar? Ao substituílo sobrescribirase o seu contido. +replace-warning-operation = Queres substituílo? Ao substituílo sobrescribirase o seu contido. +original-file = Ficheiro orixinal +replace-with = Remplazar con +apply-to-all = Aplicar a todo +keep-both = Manter ambos +skip = Saltar +set-executable-and-launch = Marcar como executable e lanzalo +set-executable-and-launch-description = Queres marcar «{ $name }» como executábel e lanzalo? +set-and-launch = Marcar e executar +open-with = Abrir con +owner = Propietario +group = Grupo +other = Outro +mixed = Mesturar +none = Ningún +execute-only = Só execución +write-only = Só escritura +write-execute = Escritura e execución +read-only = Só lectura +read-execute = Lectura e execución +read-write = Lectura e escritura +read-write-execute = Lectura, escritura e execución +favorite-path-error = Erro abrindo o directorio +favorite-path-error-description = + Non foi posíbel abrir «{ $path }». + É posíbel que «{ $path }» non exista ou que non teñas permisos para abrilo. + + Queres retiralo da barra lateral? +remove = Eliminar +keep = Manter +add-network-drive = Engadir unidade de rede +connect = Conectar +connect-anonymously = Conectar de xeito anonimo +connecting = Conectando... +domain = Dominio +enter-server-address = Introducir a dirección do servidor +network-drive-description = + Os enderezos dos servidores inclúen un prefixo de protocolo e un enderezo. + Exemplos: ssh://192.168.0.1, ftp://[2001:db8::1] +network-drive-schemes = + Protocolos dispoñíbeis,Prefixo + AppleTalk,afp:// + Protocolo de transferencia de ficheiros,ftp:// ou ftps:// + Sistema de ficheiros en rede,nfs:// + Server Message Block,smb:// + Protocolo de transferencia de ficheiros por SSH,sftp:// ou ssh:// + WebDAV,dav:// ou davs:// +network-drive-error = Non foi posible acceder a unidade de rede +password = Contrasinal +remember-password = Recordar o contrasinal +try-again = Voltar a intentar +username = Nome de usuario +cancelled = Cancelado +edit-history = Editar historial +history = Historial +no-history = Non hai elementos no historial. +pending = Pendente +progress = { $percent }% +progress-cancelled = { $percent }%, cancelado +progress-failed = { $percent }%, fallou +progress-paused = { $percent }%, pausado +failed = Fallou +complete = Completado +compressing = + Comprimindo { $items } { $items -> + [one] elemento + *[other] elementos + } de «{ $from }» a «{ $to }» ({ $progress })... +compressed = + Comprimidos { $items } { $items -> + [one] elemento + *[other] elementos + } de «{ $from }» a «{ $to }» +copy_noun = Copiar +pasted-image = Imaxe pegada +pasted-text = Texto Pegado +pasted-video = Video pegado +creating = Creando "{ $name }" en "{ $parent }" +created = Creado "{ $name }" en "{ $parent }" +copying = + Copiando { $items } { $items -> + [one] elemento + *[other] elementos + } de «{ $from }» a «{ $to }» ({ $progress })... +copied = + Copiados { $items } { $items -> + [one] elemento + *[other] elementos + } de «{ $from }» a «{ $to }» +deleted = + Eliminando { $items } { $items -> + [one] elemento + *[other] elementos + } do lixo ({ $progress }) +emptying-trash = Baleirando { trash } ({ $progress })... +emptied-trash = Baleirado o { trash } +extracting = + Extraendo { $items } { $items -> + [one] elemento + *[other] elementos + } de «{ $from }» a «{ $to }» ({ $progress })... +extracted = + Extraídos { $items } { $items -> + [one] elemento + *[other] elementos + } de «{ $from }» a «{ $to }» +setting-executable-and-launching = Marcando «{ $name }» como executábel e executándoo +set-executable-and-launched = «{ $name }» marcouse como executábel e executouse +setting-permissions = Establecendo os permisos de «{ $name }» en { $mode } +set-permissions = Establecéronse os permisos de «{ $name }» en { $mode } +moving = + Movendo { $items } { $items -> + [one] elemento + *[other] elementos + } de «{ $from }» a «{ $to }» ({ $progress })... +moved = + Movidos { $items } { $items -> + [one] elemento + *[other] elementos + } de «{ $from }» a «{ $to }» +permanently-deleting = + Eliminando permanentemente { $items } { $items -> + [one] elemento + *[other] elementos + } +permanently-deleted = + Eliminados permanentemente { $items } { $items -> + [one] elemento + *[other] elementos + } +removing-from-recents = + Retirando { $items } { $items -> + [one] elemento + *[other] elementos + } dos { recents } +removed-from-recents = + Retirado { $items } { $items -> + [one] elemento + *[other] elementos + } de { recents } +renaming = Renomeando "{ $from }" a "{ $to }" +renamed = Renomeado "{ $from }" a "{ $to }" +restoring = + Restaurando { $items } { $items -> + [one] elemento + *[other] elementos + } de { trash } ({ $progress })... +restored = + Restaurado { $items } { $items -> + [one] elemento + *[other] elementos + } de { trash } +unknown-folder = cartafol descoñecido +menu-open-with = Abrir con... +default-app = { $name } (por defecto) +show-details = Amosar detalles +type = Tipo: { $mime } +items = Elementos: { $items } +item-size = Tamaño: { $size } +item-created = Creado: { $created } +item-modified = Modificado: { $modified } +item-accessed = Accedido: { $accessed } +calculating = Calculando... +checksum = { $kind } checksum +calculate = Calculado +error = Erro +single-click = Clic único para abrir +show-recents = Cartafol de recentes no panel lateral +type-to-search = Escribe para atopar +type-to-search-recursive = Busca no cartafol actual e en todos os subcartafoles +type-to-search-enter-path = Introduce a ruta do cartafol ou ficheiro +type-to-search-select = Selecciona o primeiro ficheiro ou cartafol coincidente +add-to-sidebar = Engadir o panel lateral +clear-recents-history = Limpar historial de recentes +compress = Comprimir... +copy-to = Copiar a... +delete-permanently = Eliminar permanentemente +eject = Expulsar +extract-here = Extraer +new-file = Novo ficheiro... +new-folder = Novo cartafol... +open-in-terminal = Abrir no terminal +move-to = Mover a... +move-to-trash = Mover ao lixo +restore-from-trash = Recuperar do lixo +remove-from-sidebar = Eliminar do panel lateral +sort-by-name = Ordenar por nome +sort-by-modified = Ordenar por modificación +sort-by-size = Ordenar por tamaño +sort-by-trashed = Ordenar pola data de eliminación +remove-from-recents = Eliminar de recentes +change-wallpaper = Cambiar fondo de pantalla... +desktop-appearance = Apariencia do Escritorio... +display-settings = Axustes de pantalla... +new-tab = Nova lapela +reload-folder = Recargar cartafol +rename = Renomear... +close-tab = Pechar lapela +copy-path = Copiar ruta +grid-view = Vista de grella +list-view = Vista de lista +show-hidden-files = Amosar ficheiros ocultos +list-directories-first = Listar primeiro os directorios +gallery-preview = Vista previa da galería +menu-about = Sobre Ficheiros COSMIC... +sort = Ordenar +sort-a-z = A-Z +sort-z-a = Z-A +sort-newest-first = Novos primeiro +sort-oldest-first = Antigos primeiro +sort-smallest-to-largest = Do máis pequeno ao máis grande +sort-largest-to-smallest = Do máis grande ao máis pequeno +deleting = + Eliminando { $items } { $items -> + [one] elemento + *[other] elementos + } da { trash } ({ $progress })... diff --git a/i18n/hu/cosmic_files.ftl b/i18n/hu/cosmic_files.ftl index 76bed29..827bfa1 100644 --- a/i18n/hu/cosmic_files.ftl +++ b/i18n/hu/cosmic_files.ftl @@ -386,7 +386,7 @@ new-window = Új ablak reload-folder = Mappa újratöltése rename = Átnevezés… close-tab = Lap bezárása -quit = Leállítás +quit = Kilépés ## Edit diff --git a/i18n/it/cosmic_files.ftl b/i18n/it/cosmic_files.ftl index 946507b..17abad0 100644 --- a/i18n/it/cosmic_files.ftl +++ b/i18n/it/cosmic_files.ftl @@ -1,5 +1,5 @@ cosmic-files = COSMIC Files -comment = File manager di COSMIC +comment = File manager per il desktop COSMIC keywords = File;Archivi;Cartelle;Explorer; empty-folder = Cartella vuota empty-folder-hidden = Cartella vuota (con elementi nascosti) @@ -7,7 +7,7 @@ no-results = Nessun risultato trovato filesystem = Filesystem home = Home networks = Reti -notification-in-progress = Operazioni sui file in corso. +notification-in-progress = Operazioni sui file in corso trash = Cestino recents = Recenti undo = Annulla @@ -322,7 +322,7 @@ single-click = Click singolo per aprire appearance = Aspetto theme = Tema -match-desktop = Sistema +match-desktop = Abbina al desktop dark = Scuro light = Chiaro diff --git a/i18n/kmr/cosmic_files.ftl b/i18n/kmr/cosmic_files.ftl index a6e3aeb..f45eaeb 100644 --- a/i18n/kmr/cosmic_files.ftl +++ b/i18n/kmr/cosmic_files.ftl @@ -158,7 +158,7 @@ progress-paused = { $percent }%, hate rawestandin desktop-view-options = Vebijêrkên dîtina sermaseyê... show-on-desktop = Li ser sermaseyê nîşan bide cancelled = Têkbirî -new-folder = Peldankan nû... +new-folder = Peldanka nû... match-desktop = Bi sermaseyê re li hev bîne name-no-slashes = Nav nabe ku "/" tê de hebe operations-running-finished = @@ -220,7 +220,7 @@ trash = Jêbirdank undo = Vegerîne today = Îro name = Nav -modified = Guhertî +modified = Guhertin size = Mezinahî details = Hûrgilî pause = Rawestîne @@ -229,7 +229,7 @@ copy-to-title = Rêgeha jêgirtinê hilbijêre copy-to-button-label = Jê bigire move-to-title = Rêgeha livandinê hilbijêre move-to-button-label = Bilivîne -create = Biafrîne +create = Afirandin save = Tomar bike context-action = Çalakiya naverokê context-action-confirm-title = "{ $name }" bixebtîne? @@ -263,7 +263,7 @@ restoring = } ji { trash } ({ $progress })... icon-size-and-spacing = Mezinahiya îkonan û valahiya di navbera wan de type-to-search-enter-path = Riya rêgehê yan jî pelê têdixîne -menu-open-with = Veke bi... +menu-open-with = Veke bi riya... original-file = Pelê resen read-write-execute = Xwendin, nivîsandin û xebitandin calculating = Tê jimartin... @@ -311,7 +311,7 @@ restored = domain = Navper sort = Rêz bike item-accessed = Gihîştin: { $accessed } -open-with = Veke bi +open-with = Veke bi riya keep-both = Herduyan bihêle permanently-deleted = { $items } bi mayînde hate jêbirin{ $items -> diff --git a/i18n/ko/cosmic_files.ftl b/i18n/ko/cosmic_files.ftl index 5683c39..0441da5 100644 --- a/i18n/ko/cosmic_files.ftl +++ b/i18n/ko/cosmic_files.ftl @@ -278,3 +278,12 @@ move-to-button-label = 이동 clear-recents-history = 최근 기록 비우기 copy-path = 복사 경로 move-to-title = 이동 위치 선택 +copy-to-title = 복사 경로 선택 +run = 실행 +rename-confirm = 이름 변경 +mixed = 혼합됨 +pasted-image = 붙여넣은 이미지 +pasted-text = 붙여넣은 텍스트 +pasted-video = 붙여넣은 영상 +copy-to = 복사하기... +move-to = 이동하기... diff --git a/i18n/nl/cosmic_files.ftl b/i18n/nl/cosmic_files.ftl index 2be219f..aa4ef5a 100644 --- a/i18n/nl/cosmic_files.ftl +++ b/i18n/nl/cosmic_files.ftl @@ -425,7 +425,7 @@ removed-from-recents = } uit { recents } verwijderd remove-from-recents = Uit recente verwijderen type-to-search-select = Dit selecteert het eerst overeenkomende bestand of map -comment = Bestandsbeheerder voor COSMIC desktop +comment = Bestandsbeheerder voor COSMIC copy-to-title = Kopieerbestemming aanwijzen copy-to-button-label = Kopiëren move-to-button-label = Verplaatsen diff --git a/i18n/oc/cosmic_files.ftl b/i18n/oc/cosmic_files.ftl index e69de29..aa7bd53 100644 --- a/i18n/oc/cosmic_files.ftl +++ b/i18n/oc/cosmic_files.ftl @@ -0,0 +1,6 @@ +appearance = Aparéncia +theme = Tèma +match-desktop = Assortir al burèu +dark = Fosc +light = Clar +file = Fichièr diff --git a/i18n/pt-BR/cosmic_files.ftl b/i18n/pt-BR/cosmic_files.ftl index e725da3..75b071d 100644 --- a/i18n/pt-BR/cosmic_files.ftl +++ b/i18n/pt-BR/cosmic_files.ftl @@ -388,7 +388,7 @@ new-window = Nova janela reload-folder = Recarregar pasta rename = Renomear... close-tab = Fechar aba -quit = Sair +quit = Encerrar ## Edit diff --git a/i18n/ru/cosmic_files.ftl b/i18n/ru/cosmic_files.ftl index 78ce654..d3dd432 100644 --- a/i18n/ru/cosmic_files.ftl +++ b/i18n/ru/cosmic_files.ftl @@ -272,7 +272,7 @@ extract-to-title = Распаковать в папку mount-error = Не удалось получить доступ к диску create = Создать open-with-title = Как хотите открыть «{ $name }»? -browse-store = Искать в { $store } +browse-store = Перейти в { $store } other-apps = Другие приложения related-apps = Связанные приложения selected-items = { $items } выделенных элем. diff --git a/i18n/sat/cosmic_files.ftl b/i18n/sat/cosmic_files.ftl index 67f522a..61dcbc2 100644 --- a/i18n/sat/cosmic_files.ftl +++ b/i18n/sat/cosmic_files.ftl @@ -1 +1,3 @@ cancel = ᱵᱟᱹᱛᱤᱞ +name = ᱧᱩᱛᱩᱢ +save = ᱥᱟᱧᱪᱟᱣ diff --git a/i18n/zh-CN/cosmic_files.ftl b/i18n/zh-CN/cosmic_files.ftl index a2a96a9..432c875 100644 --- a/i18n/zh-CN/cosmic_files.ftl +++ b/i18n/zh-CN/cosmic_files.ftl @@ -169,8 +169,8 @@ read-write-execute = 读取、写入和执行 favorite-path-error = 打开目录时出错 favorite-path-error-description = - 无法打开 "{ $path }" 。 - "{ $path }" 可能不存在或您没有权限打开它。 + 无法打开“{ $path }” 。 + “{ $path }”可能不存在或您没有权限打开它。 您想要从侧边栏中移除它吗? remove = 移除 @@ -267,10 +267,10 @@ extracted = [one] 项目 *[other] 项目 }到“{ $to }” -setting-executable-and-launching = 设置 "{ $name }" 为可执行文件并启动 -set-executable-and-launched = 已设 "{ $name }" 为可执行文件并且启动 -setting-permissions = 正在设置 "{ $name }" 的权限为 { $mode } -set-permissions = 设置 "{ $name }" 的权限为 { $mode } +setting-executable-and-launching = 设置 “{ $name }” 为可执行文件并启动 +set-executable-and-launched = 已设 “{ $name }” 为可执行文件并且启动 +setting-permissions = 正在设置 “{ $name }” 的权限为 { $mode } +set-permissions = 设置 “{ $name }” 的权限为 { $mode } moving = 正在从“{ $from }”移动 { $items } { $items -> [one] 项目 @@ -302,7 +302,7 @@ removed-from-recents = *[other] 项目 } renaming = 正在将“{ $from }”重命名为“{ $to }” -renamed = 已重命名"{ $from }"为"{ $to }" +renamed = 已重命名 “{ $from }” 为 “{ $to }” restoring = 正在从{ trash }中还原 { $items } { $items -> [one] 项目 From a5422167cfcf8aaf92d3f65b720411167d082ccf Mon Sep 17 00:00:00 2001 From: norepro Date: Wed, 5 Aug 2026 22:26:52 -0700 Subject: [PATCH 2/6] Return None on mtime overflow --- src/tab.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tab.rs b/src/tab.rs index 0da0db2..89ad3c0 100644 --- a/src/tab.rs +++ b/src/tab.rs @@ -1909,7 +1909,7 @@ impl ItemMetadata { Self::Path { metadata, .. } => metadata.modified().ok(), #[cfg(feature = "gvfs")] Self::GvfsPath { mtime, .. } => { - Some(SystemTime::UNIX_EPOCH + Duration::from_secs(*mtime)) + SystemTime::UNIX_EPOCH.checked_add(Duration::from_secs(*mtime)) } _ => None, } From eebf5a9d4c458a40e5cb558519a483834ac118e3 Mon Sep 17 00:00:00 2001 From: Will Sheehan Date: Wed, 19 Aug 2026 21:46:45 -0700 Subject: [PATCH 3/6] do not panic in truly invalid timestamps --- src/tab.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/tab.rs b/src/tab.rs index 89ad3c0..d11a170 100644 --- a/src/tab.rs +++ b/src/tab.rs @@ -437,7 +437,9 @@ impl<'a> FormatTime<'a> { impl Display for FormatTime<'_> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - let zoned = jiff::Zoned::try_from(self.time).unwrap(); + let Ok(zoned) = jiff::Zoned::try_from(self.time) else { + return Ok(()); + }; let now = jiff::Zoned::now(); let icu_datetime = DateTime::convert_from(zoned.datetime()); if zoned.date() == now.date() { From 3d520858f388a140ad8565145637e8224ccd3b9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20Mendon=C3=A7a?= Date: Thu, 9 Jul 2026 09:09:52 -0300 Subject: [PATCH 4/6] feat: allow renaming sidebar favorites to custom names Co-Authored-By: Claude Fable 5 --- i18n/en/cosmic_files.ftl | 4 ++ i18n/pt-BR/cosmic_files.ftl | 5 ++ src/app.rs | 124 +++++++++++++++++++++++++++++++----- src/config.rs | 100 +++++++++++++++++++++++++++++ src/dialog.rs | 12 +--- 5 files changed, 218 insertions(+), 27 deletions(-) diff --git a/i18n/en/cosmic_files.ftl b/i18n/en/cosmic_files.ftl index ea01f7e..2c1a6f5 100644 --- a/i18n/en/cosmic_files.ftl +++ b/i18n/en/cosmic_files.ftl @@ -118,6 +118,10 @@ rename-file = Rename file rename-folder = Rename folder rename-confirm = Rename +## Rename Favorite Dialog +rename-favorite = Rename sidebar item +favorite-name = Item name + ## Replace Dialog replace = Replace replace-title = "{$filename}" already exists in this location diff --git a/i18n/pt-BR/cosmic_files.ftl b/i18n/pt-BR/cosmic_files.ftl index 75b071d..38d2b79 100644 --- a/i18n/pt-BR/cosmic_files.ftl +++ b/i18n/pt-BR/cosmic_files.ftl @@ -109,6 +109,11 @@ permanently-delete-warning = Deseja realmente excluir permanentemente { $target rename-file = Renomear arquivo rename-folder = Renomear pasta +## Rename Favorite Dialog + +rename-favorite = Renomear item da barra lateral +favorite-name = Nome do item + ## Replace Dialog replace = Substituir diff --git a/src/app.rs b/src/app.rs index afc22f4..6009089 100644 --- a/src/app.rs +++ b/src/app.rs @@ -321,6 +321,7 @@ pub enum NavMenuAction { Preview(segmented_button::Entity), RunContextAction(segmented_button::Entity, usize), RemoveFromSidebar(segmented_button::Entity), + RenameFavorite(segmented_button::Entity), } impl MenuAction for NavMenuAction { @@ -575,6 +576,10 @@ pub enum DialogPage { DeleteTrash { items: Vec, }, + RenameFavorite { + entity: Entity, + name: String, + }, RenameItem { from: PathBuf, parent: PathBuf, @@ -1769,15 +1774,9 @@ impl App { for (favorite_i, favorite) in self.config.favorites.iter().enumerate() { if let Some(path) = favorite.path_opt() { - let name = if matches!(favorite, Favorite::Home) { - fl!("home") - } else if let Favorite::Network { name, .. } = favorite { - name.clone() - } else if let Some(file_name) = path.file_name().and_then(|x| x.to_str()) { - file_name.to_string() - } else { - fl!("filesystem") - }; + let name = favorite + .display_name() + .unwrap_or_else(|| fl!("filesystem")); nav_model = nav_model.insert(move |b| { b.text(name.clone()) .icon( @@ -2290,15 +2289,33 @@ impl App { .favorites .iter() .map(|favorite| { - if let Favorite::Path(path) = favorite { - for (from, to) in path_changes.iter().map(|(f, t)| (f.as_ref(), t.as_ref())) { - if path.starts_with(from) - && let Ok(relative) = path.strip_prefix(from) + match favorite { + Favorite::Path(path) => { + for (from, to) in path_changes.iter().map(|(f, t)| (f.as_ref(), t.as_ref())) { - favorites_changed = true; - return Favorite::from_path(to.join(relative)); + if path.starts_with(from) + && let Ok(relative) = path.strip_prefix(from) + { + favorites_changed = true; + return Favorite::from_path(to.join(relative)); + } } } + Favorite::Named { path, name } => { + for (from, to) in path_changes.iter().map(|(f, t)| (f.as_ref(), t.as_ref())) + { + if path.starts_with(from) + && let Ok(relative) = path.strip_prefix(from) + { + favorites_changed = true; + return Favorite::Named { + path: to.join(relative), + name: name.clone(), + }; + } + } + } + _ => {} } favorite.clone() }) @@ -2613,6 +2630,11 @@ impl Application for App { } items.push(cosmic::widget::menu::Item::Divider); if favorite_index_opt.is_some() { + items.push(cosmic::widget::menu::Item::Button( + fl!("rename-confirm"), + None, + NavMenuAction::RenameFavorite(entity), + )); items.push(cosmic::widget::menu::Item::Button( fl!("remove-from-sidebar"), None, @@ -2904,7 +2926,8 @@ impl Application for App { } else { Favorite::from_path(path) }; - if !favorites.contains(&favorite) { + let favorite_path = favorite.path_opt(); + if !favorites.iter().any(|f| f.path_opt() == favorite_path) { favorites.push(favorite); } } @@ -3262,6 +3285,18 @@ impl Application for App { DialogPage::DeleteTrash { items } => { tasks.push(self.operation(Operation::DeleteTrash { items })); } + DialogPage::RenameFavorite { entity, name } => { + if let Some(FavoriteIndex(favorite_i)) = + self.nav_model.data::(entity) + { + let mut favorites = self.config.favorites.clone(); + if let Some(favorite) = favorites.get_mut(*favorite_i) { + *favorite = favorite.with_name(name.trim()); + config_set!(favorites, favorites); + tasks.push(self.update_config()); + } + } + } DialogPage::RenameItem { from, parent, name, .. } => { @@ -4487,7 +4522,8 @@ impl Application for App { tab::Command::AddToSidebar(path) => { let mut favorites = self.config.favorites.clone(); let favorite = Favorite::from_path(path); - if !favorites.contains(&favorite) { + let favorite_path = favorite.path_opt(); + if !favorites.iter().any(|f| f.path_opt() == favorite_path) { favorites.push(favorite); } config_set!(favorites, favorites); @@ -5271,6 +5307,26 @@ impl Application for App { return self.update_config(); } } + + NavMenuAction::RenameFavorite(entity) => { + if let Some(favorite) = self + .nav_model + .data::(entity) + .and_then(|FavoriteIndex(favorite_i)| { + self.config.favorites.get(*favorite_i) + }) + { + let name = favorite + .display_name() + .unwrap_or_else(|| fl!("filesystem")); + return Task::batch([ + self.dialog_pages + .push_back(DialogPage::RenameFavorite { entity, name }), + widget::text_input::focus(self.dialog_text_input.clone()), + widget::text_input::select_all(self.dialog_text_input.clone()), + ]); + } + } }, Message::Recents => { if self.config.show_recents { @@ -6164,6 +6220,40 @@ impl Application for App { target = target ))) } + DialogPage::RenameFavorite { entity, name } => { + let entity = *entity; + let complete_maybe = if name.trim().is_empty() { + None + } else { + Some(Message::DialogComplete) + }; + + widget::dialog() + .title(fl!("rename-favorite")) + .primary_action( + widget::button::suggested(fl!("rename-confirm")) + .on_press_maybe(complete_maybe.clone()), + ) + .secondary_action( + widget::button::standard(fl!("cancel")).on_press(Message::DialogCancel), + ) + .control( + widget::column::with_children([ + widget::text::body(fl!("favorite-name")).into(), + widget::text_input("", name.as_str()) + .id(self.dialog_text_input.clone()) + .on_input(move |name| { + Message::DialogUpdate(DialogPage::RenameFavorite { + entity, + name, + }) + }) + .on_submit_maybe(complete_maybe.map(|maybe| move |_| maybe.clone())) + .into(), + ]) + .spacing(space_xxs), + ) + } DialogPage::RenameItem { from, parent, diff --git a/src/config.rs b/src/config.rs index 2138d83..bb8631e 100644 --- a/src/config.rs +++ b/src/config.rs @@ -70,6 +70,11 @@ pub enum Favorite { name: String, path: PathBuf, }, + /// A path with a custom name chosen by the user + Named { + path: PathBuf, + name: String, + }, } impl Favorite { @@ -98,6 +103,38 @@ impl Favorite { Self::Videos => dirs::video_dir(), Self::Path(path) => Some(path.clone()), Self::Network { path, .. } => Some(path.clone()), + Self::Named { path, .. } => Some(path.clone()), + } + } + + /// Name shown in the sidebar, or `None` if the path has no usable file name + pub fn display_name(&self) -> Option { + match self { + Self::Home => Some(crate::fl!("home")), + Self::Named { name, .. } | Self::Network { name, .. } => Some(name.clone()), + _ => self + .path_opt()? + .file_name() + .and_then(|x| x.to_str()) + .map(ToString::to_string), + } + } + + /// Return this favorite renamed with a custom name chosen by the user + pub fn with_name(&self, name: &str) -> Self { + match self { + Self::Network { uri, path, .. } => Self::Network { + uri: uri.clone(), + name: name.to_string(), + path: path.clone(), + }, + other => match other.path_opt() { + Some(path) => Self::Named { + path, + name: name.to_string(), + }, + None => other.clone(), + }, } } } @@ -385,3 +422,66 @@ pub const TIME_CONFIG_ID: &str = "com.system76.CosmicAppletTime"; pub struct TimeConfig { pub military_time: bool, } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn favorite_with_name_converts_path_to_named() { + let favorite = Favorite::Path(PathBuf::from("/some/dir")); + assert_eq!( + favorite.with_name("Custom"), + Favorite::Named { + path: PathBuf::from("/some/dir"), + name: "Custom".to_string(), + } + ); + } + + #[test] + fn favorite_with_name_updates_network_in_place() { + let favorite = Favorite::Network { + uri: "sftp://example.com/".to_string(), + name: "example.com".to_string(), + path: PathBuf::from("/run/mount/example"), + }; + assert_eq!( + favorite.with_name("Custom"), + Favorite::Network { + uri: "sftp://example.com/".to_string(), + name: "Custom".to_string(), + path: PathBuf::from("/run/mount/example"), + } + ); + } + + #[test] + fn favorite_with_name_converts_special_folder_to_named() { + let home = dirs::home_dir().unwrap(); + assert_eq!( + Favorite::Home.with_name("Custom"), + Favorite::Named { + path: home, + name: "Custom".to_string(), + } + ); + } + + #[test] + fn favorite_display_name() { + assert_eq!( + Favorite::Path(PathBuf::from("/some/dir")).display_name(), + Some("dir".to_string()) + ); + assert_eq!(Favorite::Path(PathBuf::from("/")).display_name(), None); + assert_eq!( + Favorite::Named { + path: PathBuf::from("/some/dir"), + name: "Custom".to_string(), + } + .display_name(), + Some("Custom".to_string()) + ); + } +} diff --git a/src/dialog.rs b/src/dialog.rs index b369b73..315691a 100644 --- a/src/dialog.rs +++ b/src/dialog.rs @@ -32,9 +32,7 @@ use std::{env, fmt, fs}; use crate::app::{ Action, ContextPage, Message as AppMessage, PreviewItem, PreviewKind, REPLACE_BUTTON_ID, }; -use crate::config::{ - Config, DialogConfig, Favorite, TIME_CONFIG_ID, ThumbCfg, TimeConfig, TypeToSearch, -}; +use crate::config::{Config, DialogConfig, TIME_CONFIG_ID, ThumbCfg, TimeConfig, TypeToSearch}; use crate::key_bind::key_binds; use crate::localize::LANGUAGE_SORTER; use crate::mounter::{MOUNTERS, MounterItem, MounterItems, MounterKey, MounterMessage}; @@ -889,13 +887,7 @@ impl App { for favorite in &self.flags.config.favorites { if let Some(path) = favorite.path_opt() { - let name = if matches!(favorite, Favorite::Home) { - fl!("home") - } else if let Favorite::Network { name, .. } = favorite { - name.clone() - } else if let Some(file_name) = path.file_name().and_then(|x| x.to_str()) { - file_name.to_string() - } else { + let Some(name) = favorite.display_name() else { continue; }; nav_model = nav_model.insert(move |b| { From 08a637767d43fa1d7521f142213708c64b8ff651 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20Mendon=C3=A7a?= Date: Thu, 20 Aug 2026 13:53:47 -0300 Subject: [PATCH 5/6] refactor: rename favorite renaming action to "Change sidebar label" Address review feedback on the sidebar favorite renaming feature: - Context menu item and dialog title now share the same "change-sidebar-label" translation key - Rename NavMenuAction::RenameFavorite and DialogPage::RenameFavorite to ChangeSidebarLabel, with the dialog field renamed to "label" - Rename Favorite::with_name to Favorite::with_label - Dialog confirm button now uses the existing "save" key instead of "rename-confirm" - Replace the "rename-favorite"/"favorite-name" keys with "sidebar-label" in en and pt-BR translations Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YRJDQDBKhCqipbcZm7U1v9 --- i18n/en/cosmic_files.ftl | 6 +++--- i18n/pt-BR/cosmic_files.ftl | 6 +++--- src/app.rs | 38 ++++++++++++++++++------------------- src/config.rs | 16 ++++++++-------- 4 files changed, 33 insertions(+), 33 deletions(-) diff --git a/i18n/en/cosmic_files.ftl b/i18n/en/cosmic_files.ftl index 2c1a6f5..2c57b53 100644 --- a/i18n/en/cosmic_files.ftl +++ b/i18n/en/cosmic_files.ftl @@ -118,9 +118,8 @@ rename-file = Rename file rename-folder = Rename folder rename-confirm = Rename -## Rename Favorite Dialog -rename-favorite = Rename sidebar item -favorite-name = Item name +## Change Sidebar Label Dialog +sidebar-label = Sidebar label ## Replace Dialog replace = Replace @@ -345,6 +344,7 @@ move-to = Move to... move-to-trash = Move to trash restore-from-trash = Restore from trash remove-from-sidebar = Remove from sidebar +change-sidebar-label = Change sidebar label sort-by-name = Sort by name sort-by-modified = Sort by modified sort-by-size = Sort by size diff --git a/i18n/pt-BR/cosmic_files.ftl b/i18n/pt-BR/cosmic_files.ftl index 38d2b79..83986f2 100644 --- a/i18n/pt-BR/cosmic_files.ftl +++ b/i18n/pt-BR/cosmic_files.ftl @@ -109,10 +109,9 @@ permanently-delete-warning = Deseja realmente excluir permanentemente { $target rename-file = Renomear arquivo rename-folder = Renomear pasta -## Rename Favorite Dialog +## Change Sidebar Label Dialog -rename-favorite = Renomear item da barra lateral -favorite-name = Nome do item +sidebar-label = Rótulo da barra lateral ## Replace Dialog @@ -370,6 +369,7 @@ open-in-terminal = Abrir no terminal move-to-trash = Mover para a lixeira restore-from-trash = Restaurar da lixeira remove-from-sidebar = Remover da barra lateral +change-sidebar-label = Alterar rótulo na barra lateral sort-by-name = Ordenar por nome sort-by-modified = Ordenar por data de modificação sort-by-size = Ordenar por tamanho diff --git a/src/app.rs b/src/app.rs index 6009089..6a7bf63 100644 --- a/src/app.rs +++ b/src/app.rs @@ -321,7 +321,7 @@ pub enum NavMenuAction { Preview(segmented_button::Entity), RunContextAction(segmented_button::Entity, usize), RemoveFromSidebar(segmented_button::Entity), - RenameFavorite(segmented_button::Entity), + ChangeSidebarLabel(segmented_button::Entity), } impl MenuAction for NavMenuAction { @@ -576,9 +576,9 @@ pub enum DialogPage { DeleteTrash { items: Vec, }, - RenameFavorite { + ChangeSidebarLabel { entity: Entity, - name: String, + label: String, }, RenameItem { from: PathBuf, @@ -2631,9 +2631,9 @@ impl Application for App { items.push(cosmic::widget::menu::Item::Divider); if favorite_index_opt.is_some() { items.push(cosmic::widget::menu::Item::Button( - fl!("rename-confirm"), + fl!("change-sidebar-label"), None, - NavMenuAction::RenameFavorite(entity), + NavMenuAction::ChangeSidebarLabel(entity), )); items.push(cosmic::widget::menu::Item::Button( fl!("remove-from-sidebar"), @@ -3285,13 +3285,13 @@ impl Application for App { DialogPage::DeleteTrash { items } => { tasks.push(self.operation(Operation::DeleteTrash { items })); } - DialogPage::RenameFavorite { entity, name } => { + DialogPage::ChangeSidebarLabel { entity, label } => { if let Some(FavoriteIndex(favorite_i)) = self.nav_model.data::(entity) { let mut favorites = self.config.favorites.clone(); if let Some(favorite) = favorites.get_mut(*favorite_i) { - *favorite = favorite.with_name(name.trim()); + *favorite = favorite.with_label(label.trim()); config_set!(favorites, favorites); tasks.push(self.update_config()); } @@ -5308,7 +5308,7 @@ impl Application for App { } } - NavMenuAction::RenameFavorite(entity) => { + NavMenuAction::ChangeSidebarLabel(entity) => { if let Some(favorite) = self .nav_model .data::(entity) @@ -5316,12 +5316,12 @@ impl Application for App { self.config.favorites.get(*favorite_i) }) { - let name = favorite + let label = favorite .display_name() .unwrap_or_else(|| fl!("filesystem")); return Task::batch([ self.dialog_pages - .push_back(DialogPage::RenameFavorite { entity, name }), + .push_back(DialogPage::ChangeSidebarLabel { entity, label }), widget::text_input::focus(self.dialog_text_input.clone()), widget::text_input::select_all(self.dialog_text_input.clone()), ]); @@ -6220,18 +6220,18 @@ impl Application for App { target = target ))) } - DialogPage::RenameFavorite { entity, name } => { + DialogPage::ChangeSidebarLabel { entity, label } => { let entity = *entity; - let complete_maybe = if name.trim().is_empty() { + let complete_maybe = if label.trim().is_empty() { None } else { Some(Message::DialogComplete) }; widget::dialog() - .title(fl!("rename-favorite")) + .title(fl!("change-sidebar-label")) .primary_action( - widget::button::suggested(fl!("rename-confirm")) + widget::button::suggested(fl!("save")) .on_press_maybe(complete_maybe.clone()), ) .secondary_action( @@ -6239,13 +6239,13 @@ impl Application for App { ) .control( widget::column::with_children([ - widget::text::body(fl!("favorite-name")).into(), - widget::text_input("", name.as_str()) + widget::text::body(fl!("sidebar-label")).into(), + widget::text_input("", label.as_str()) .id(self.dialog_text_input.clone()) - .on_input(move |name| { - Message::DialogUpdate(DialogPage::RenameFavorite { + .on_input(move |label| { + Message::DialogUpdate(DialogPage::ChangeSidebarLabel { entity, - name, + label, }) }) .on_submit_maybe(complete_maybe.map(|maybe| move |_| maybe.clone())) diff --git a/src/config.rs b/src/config.rs index bb8631e..f064076 100644 --- a/src/config.rs +++ b/src/config.rs @@ -120,8 +120,8 @@ impl Favorite { } } - /// Return this favorite renamed with a custom name chosen by the user - pub fn with_name(&self, name: &str) -> Self { + /// Return this favorite with a custom sidebar label chosen by the user + pub fn with_label(&self, name: &str) -> Self { match self { Self::Network { uri, path, .. } => Self::Network { uri: uri.clone(), @@ -428,10 +428,10 @@ mod tests { use super::*; #[test] - fn favorite_with_name_converts_path_to_named() { + fn favorite_with_label_converts_path_to_named() { let favorite = Favorite::Path(PathBuf::from("/some/dir")); assert_eq!( - favorite.with_name("Custom"), + favorite.with_label("Custom"), Favorite::Named { path: PathBuf::from("/some/dir"), name: "Custom".to_string(), @@ -440,14 +440,14 @@ mod tests { } #[test] - fn favorite_with_name_updates_network_in_place() { + fn favorite_with_label_updates_network_in_place() { let favorite = Favorite::Network { uri: "sftp://example.com/".to_string(), name: "example.com".to_string(), path: PathBuf::from("/run/mount/example"), }; assert_eq!( - favorite.with_name("Custom"), + favorite.with_label("Custom"), Favorite::Network { uri: "sftp://example.com/".to_string(), name: "Custom".to_string(), @@ -457,10 +457,10 @@ mod tests { } #[test] - fn favorite_with_name_converts_special_folder_to_named() { + fn favorite_with_label_converts_special_folder_to_named() { let home = dirs::home_dir().unwrap(); assert_eq!( - Favorite::Home.with_name("Custom"), + Favorite::Home.with_label("Custom"), Favorite::Named { path: home, name: "Custom".to_string(), From bb8b61f48b51ff0fee034c4d9749b91a6dffe87b Mon Sep 17 00:00:00 2001 From: David Carvalho Date: Sat, 22 Aug 2026 23:03:05 +0200 Subject: [PATCH 6/6] i18n(pt-BR): update translations from Weblate Currently translated at 100.0% (244 of 244 strings) Translation: Pop OS/COSMIC Files Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-files/pt_BR/ --- i18n/pt-BR/cosmic_files.ftl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/pt-BR/cosmic_files.ftl b/i18n/pt-BR/cosmic_files.ftl index 75b071d..ca2507f 100644 --- a/i18n/pt-BR/cosmic_files.ftl +++ b/i18n/pt-BR/cosmic_files.ftl @@ -350,7 +350,7 @@ light = Estilo claro ### Type to Search -type-to-search = Digite para pesquisar +type-to-search = Digitar para pesquisar type-to-search-recursive = Pesquisa na pasta atual e em todas as subpastas type-to-search-enter-path = Insere o caminho do diretório ou arquivo # Context menu