From fd1202c87f60a8754a57627b03cd7be5be1ba0cf Mon Sep 17 00:00:00 2001 From: Erwan Guyader Date: Thu, 21 Oct 2021 14:06:26 +0200 Subject: [PATCH 1/2] gui/elm: Add SyncConfig data structure MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We'll want to pass in to the Elm GUI more than just the Cozy's address and the OAuth client name so we add a new data structure to hold all the information about the synchronization config (i.e. OAuth client and remote Cozy). We take the opportunity to store the address as a `Url` rather than a simple `String` for better type checking and to rename the `synchronization` port into `sync-config` to better reflect the data that is passed through. --- gui/elm/Data/SyncConfig.elm | 65 ++++++++++++++++++++++++++++++++ gui/elm/Ports.elm | 4 -- gui/elm/Window/Tray.elm | 9 +++-- gui/elm/Window/Tray/Settings.elm | 34 +++++++++++------ gui/main.js | 13 ++++++- gui/ports.js | 20 ++++++++-- 6 files changed, 121 insertions(+), 24 deletions(-) create mode 100644 gui/elm/Data/SyncConfig.elm diff --git a/gui/elm/Data/SyncConfig.elm b/gui/elm/Data/SyncConfig.elm new file mode 100644 index 000000000..9985bd2f0 --- /dev/null +++ b/gui/elm/Data/SyncConfig.elm @@ -0,0 +1,65 @@ +port module Data.SyncConfig exposing (SyncConfig, gotSyncConfig, init) + +import Url exposing (Url) + + +type alias SyncConfig = + { address : Maybe Url + , capabilities : + { flatSubdomains : Bool + } + , deviceId : String + , deviceName : String + , flags : + { partialSyncEnabled : Bool + } + } + + +init : SyncConfig +init = + { address = Nothing + , capabilities = + { flatSubdomains = True + } + , deviceId = "" + , deviceName = "" + , flags = + { partialSyncEnabled = False + } + } + + + +-- Communicate through ports + + +port syncConfig : (EncodedSyncConfig -> msg) -> Sub msg + + +gotSyncConfig : (SyncConfig -> msg) -> Sub msg +gotSyncConfig msg = + syncConfig (msg << decode) + + +type alias EncodedSyncConfig = + { address : String + , capabilities : + { flatSubdomains : Bool + } + , deviceId : String + , deviceName : String + , flags : + { partialSyncEnabled : Bool + } + } + + +decode : EncodedSyncConfig -> SyncConfig +decode { address, capabilities, deviceId, deviceName, flags } = + { address = Url.fromString address + , capabilities = capabilities + , deviceId = deviceId + , deviceName = deviceName + , flags = flags + } diff --git a/gui/elm/Ports.elm b/gui/elm/Ports.elm index 85fc2722a..d68ec02d4 100644 --- a/gui/elm/Ports.elm +++ b/gui/elm/Ports.elm @@ -31,7 +31,6 @@ port module Ports exposing , showHelp , showInParent , startSync - , synchonization , transfer , unlinkCozy , updateDownloading @@ -116,9 +115,6 @@ port showHelp : () -> Cmd msg port startSync : String -> Cmd msg -port synchonization : (( String, String ) -> msg) -> Sub msg - - port transfer : (EncodedFile -> msg) -> Sub msg diff --git a/gui/elm/Window/Tray.elm b/gui/elm/Window/Tray.elm index c68e80a4d..4906a2f04 100644 --- a/gui/elm/Window/Tray.elm +++ b/gui/elm/Window/Tray.elm @@ -10,6 +10,7 @@ module Window.Tray exposing import Data.Platform exposing (Platform) import Data.Status as Status exposing (Status) +import Data.SyncConfig as SyncConfig exposing (SyncConfig) import Data.SyncState as SyncState exposing (SyncState) import Html exposing (..) import Html.Attributes exposing (..) @@ -59,7 +60,7 @@ init version platform = type Msg = GotSyncState SyncState - | SyncStart ( String, String ) + | GotSyncConfig SyncConfig | GoToCozy | GoToFolder | GoToTab Page @@ -96,10 +97,10 @@ update msg model = , Cmd.none ) - SyncStart info -> + GotSyncConfig config -> let ( settings, _ ) = - Settings.update (Settings.FillAddressAndDevice info) model.settings + Settings.update (Settings.GotSyncConfig config) model.settings in ( { model | page = DashboardPage, settings = settings }, Cmd.none ) @@ -148,7 +149,7 @@ update msg model = subscriptions : Model -> Sub Msg subscriptions model = Sub.batch - [ Ports.synchonization SyncStart + [ SyncConfig.gotSyncConfig GotSyncConfig , Ports.gototab GoToStrTab , SyncState.gotNewState GotSyncState diff --git a/gui/elm/Window/Tray/Settings.elm b/gui/elm/Window/Tray/Settings.elm index f05000d15..0fbb924db 100644 --- a/gui/elm/Window/Tray/Settings.elm +++ b/gui/elm/Window/Tray/Settings.elm @@ -11,11 +11,13 @@ module Window.Tray.Settings exposing import Data.DiskSpace exposing (DiskSpace) import Data.Status exposing (Status(..)) +import Data.SyncConfig as SyncConfig exposing (SyncConfig) import Html exposing (..) import Html.Attributes exposing (..) import Html.Events exposing (..) import Locale exposing (Helpers) import Ports +import Url exposing (Url) import View.ProgressBar as ProgressBar @@ -27,8 +29,7 @@ type alias Model = { version : String , newRelease : Maybe ( String, String ) , autoLaunch : Bool - , address : String - , deviceName : String + , syncConfig : SyncConfig , disk : DiskSpace , busyUnlinking : Bool , busyQuitting : Bool @@ -41,8 +42,7 @@ init version = { version = version , newRelease = Nothing , autoLaunch = True - , address = "" - , deviceName = "" + , syncConfig = SyncConfig.init , disk = { used = 0 , quota = 0 @@ -58,11 +58,11 @@ init version = type Msg - = SetAutoLaunch Bool + = GotSyncConfig SyncConfig + | SetAutoLaunch Bool | AutoLaunchSet Bool | QuitAndInstall | NewRelease ( String, String ) - | FillAddressAndDevice ( String, String ) | UpdateDiskSpace DiskSpace | UnlinkCozy | CancelUnlink @@ -77,6 +77,9 @@ update msg model = case msg of + GotSyncConfig syncConfig -> + ( { model | syncConfig = syncConfig }, Cmd.none ) + SetAutoLaunch autoLaunch -> ( { model | autoLaunch = autoLaunch }, Ports.autoLauncher autoLaunch ) @@ -89,9 +92,6 @@ update msg model = NewRelease ( notes, name ) -> ( { model | newRelease = Just ( notes, name ) }, Cmd.none ) - FillAddressAndDevice ( address, deviceName ) -> - ( { model | address = address, deviceName = deviceName }, Cmd.none ) - UpdateDiskSpace disk -> ( { model | disk = disk }, Cmd.none ) @@ -181,11 +181,11 @@ view helpers status model = , h2 [] [ text (helpers.t "Account About") ] , p [] [ strong [] [ text (helpers.t "Account Account" ++ " ") ] - , a [ href model.address ] [ text model.address ] + , cozyLink model ] , p [] [ strong [] [ text (helpers.t "Account Device name" ++ " ") ] - , text model.deviceName + , text model.syncConfig.deviceName ] , p [] [ strong [] [ text (helpers.t "Settings Version" ++ " ") ] @@ -228,6 +228,18 @@ view helpers status model = ] +cozyLink : Model -> Html Msg +cozyLink model = + let + { address } = + model.syncConfig + + url = + Maybe.withDefault "" <| Maybe.map Url.toString address + in + a [ href url ] [ text url ] + + syncButton : Helpers -> Status -> Model -> Html Msg syncButton helpers status model = let diff --git a/gui/main.js b/gui/main.js index b5faa62ce..cea027312 100644 --- a/gui/main.js +++ b/gui/main.js @@ -19,6 +19,8 @@ const { const migrations = require('../core/pouch/migrations') const config = require('../core/config') const winRegistry = require('../core/utils/win_registry') +const capabilities = require('../core/utils/capabilities') +const flags = require('../core/utils/flags') const autoLaunch = require('./js/autolaunch') const lastFiles = require('./js/lastfiles') @@ -149,8 +151,15 @@ const showWindow = async bounds => { try { await trayWindow.show(bounds) - const { cozyUrl, deviceName } = desktop.config - trayWindow.send('synchronization', cozyUrl, deviceName) + const { cozyUrl, deviceName, deviceId } = desktop.config + trayWindow.send( + 'sync-config', + cozyUrl, + deviceName, + deviceId, + await capabilities(desktop.config), + await flags(desktop.config) + ) const files = await lastFiles.list() for (const file of files) { diff --git a/gui/ports.js b/gui/ports.js index eff7bdad1..0eb636eb9 100644 --- a/gui/ports.js +++ b/gui/ports.js @@ -80,9 +80,23 @@ elmectron.ports.chooseFolder.subscribe(() => { ipcRenderer.send('choose-folder') }) -ipcRenderer.on('synchronization', (event, url, deviceName) => { - elmectron.ports.synchonization.send([url, deviceName]) -}) +ipcRenderer.on( + 'sync-config', + (event, address, deviceName, deviceId, capabilities, flags) => { + const partialSyncEnabled = + flags['settings.partial-desktop-sync.show-synced-folders-selection'] + elmectron.ports.syncConfig.send({ + address, + deviceName, + deviceId, + capabilities, + flags: { + partialSyncEnabled: + partialSyncEnabled != null ? partialSyncEnabled : false + } + }) + } +) elmectron.ports.startSync.subscribe(folder => { ipcRenderer.send('start-sync', folder) }) From a5e7e59622bd30e69ab817e077188987e3e78fad Mon Sep 17 00:00:00 2001 From: Erwan Guyader Date: Mon, 15 Nov 2021 18:01:39 +0100 Subject: [PATCH 2/2] gui: Add partial sync configuration button We add a button in the `Preferences` tab of the main window to open the partial synchronization configuration for the Desktop's OAuth client within the remote Cozy Settings app. It will be opened in the user's own Web browser for 2 reasons: 1. it clearly shows the configuration can be done from the Settings Web app and thus any computer 2. the user is more likely to be logged into their Cozy in their own browser and thus not be required to log in again to configure the Desktop's partial synchronization The button will only be shown if the `settings.partial-desktop-sync.show-synced-folders-selection` flag is enabled (either in the local configuration or on the remote Cozy). --- gui/elm/Data/SyncConfig.elm | 43 +++++++++++++++++++++++++++++++- gui/elm/Util/Conditional.elm | 12 +++++++++ gui/elm/Window/Tray/Settings.elm | 33 ++++++++++++++++++++++++ gui/locales/de.json | 4 ++- gui/locales/en.json | 4 ++- gui/locales/eo.json | 4 ++- gui/locales/es.json | 4 ++- gui/locales/fr.json | 2 ++ gui/locales/it_IT.json | 4 ++- gui/locales/ja.json | 4 ++- gui/locales/nl.json | 4 ++- gui/locales/nl_NL.json | 10 +++++--- gui/locales/pl.json | 4 ++- gui/locales/sq.json | 4 ++- gui/locales/zh_CN.json | 4 ++- 15 files changed, 125 insertions(+), 15 deletions(-) create mode 100644 gui/elm/Util/Conditional.elm diff --git a/gui/elm/Data/SyncConfig.elm b/gui/elm/Data/SyncConfig.elm index 9985bd2f0..9e3415dd6 100644 --- a/gui/elm/Data/SyncConfig.elm +++ b/gui/elm/Data/SyncConfig.elm @@ -1,4 +1,4 @@ -port module Data.SyncConfig exposing (SyncConfig, gotSyncConfig, init) +port module Data.SyncConfig exposing (SyncConfig, buildAppUrl, gotSyncConfig, init) import Url exposing (Url) @@ -30,6 +30,47 @@ init = } +type alias AppSlug = + String + + +buildAppUrl : SyncConfig -> AppSlug -> Maybe Url +buildAppUrl { address, capabilities } slug = + let + cozyName = + case address of + Just url -> + String.split "." url.host + |> List.head + |> Maybe.withDefault "" + + _ -> + "" + + host = + case ( address, capabilities.flatSubdomains ) of + ( Just url, True ) -> + String.replace cozyName (cozyName ++ "-" ++ slug) url.host + + ( Just url, False ) -> + String.join "." [ slug, url.host ] + + ( _, _ ) -> + "" + in + Maybe.map + (\url -> + { protocol = url.protocol + , host = host + , port_ = url.port_ + , path = "" + , query = Nothing + , fragment = Nothing + } + ) + address + + -- Communicate through ports diff --git a/gui/elm/Util/Conditional.elm b/gui/elm/Util/Conditional.elm new file mode 100644 index 000000000..7b5a8b206 --- /dev/null +++ b/gui/elm/Util/Conditional.elm @@ -0,0 +1,12 @@ +module Util.Conditional exposing (viewIf) + +import Html exposing (Html, text) + + +viewIf : Bool -> Html msg -> Html msg +viewIf condition content = + if condition then + content + + else + text "" diff --git a/gui/elm/Window/Tray/Settings.elm b/gui/elm/Window/Tray/Settings.elm index 0fbb924db..a1b232c72 100644 --- a/gui/elm/Window/Tray/Settings.elm +++ b/gui/elm/Window/Tray/Settings.elm @@ -18,6 +18,7 @@ import Html.Events exposing (..) import Locale exposing (Helpers) import Ports import Url exposing (Url) +import Util.Conditional exposing (viewIf) import View.ProgressBar as ProgressBar @@ -156,6 +157,10 @@ versionLine helpers model = view : Helpers -> Status -> Model -> Html Msg view helpers status model = + let + { partialSyncEnabled } = + model.syncConfig.flags + in section [ class "two-panes__content two-panes__content--settings" ] [ h2 [] [ text (helpers.t "Account Cozy disk space") ] , diskQuotaLine helpers model @@ -178,6 +183,10 @@ view helpers status model = ] , h2 [] [ text (helpers.t "Settings Synchronize manually") ] , syncButton helpers status model + , viewIf partialSyncEnabled <| + h2 [] [ text (helpers.t "Settings Selective synchronization") ] + , viewIf partialSyncEnabled <| + selectiveSyncButton helpers model , h2 [] [ text (helpers.t "Account About") ] , p [] [ strong [] [ text (helpers.t "Account Account" ++ " ") ] @@ -256,3 +265,27 @@ syncButton helpers status model = attribute "disabled" "true" ] [ span [] [ text (helpers.t "Settings Sync") ] ] + + +selectiveSyncButton : Helpers -> Model -> Html Msg +selectiveSyncButton helpers model = + let + { deviceId } = + model.syncConfig + + settingsUrl = + SyncConfig.buildAppUrl model.syncConfig "settings" + + configurationUrl = + case settingsUrl of + Just url -> + String.join "/" [ Url.toString url, "#/connectedDevices", deviceId ] + + Nothing -> + "" + in + a + [ class "btn" + , href configurationUrl + ] + [ span [] [ text (helpers.t "Settings Configure") ] ] diff --git a/gui/locales/de.json b/gui/locales/de.json index 338eab029..f595af153 100644 --- a/gui/locales/de.json +++ b/gui/locales/de.json @@ -205,8 +205,10 @@ "Settings Start Cozy Drive on system startup": "Cozy Drive mit dem System starten", "Settings Startup": "Ihre Cozy wird automatisch mit ihrem Computer synchronisiert.", "Settings Sync": "Synchronisieren", - "Settings Synchronize manually": "Manuell synchronisieren", "Settings Version": "Version", + "Settings Synchronize manually": "Manuell synchronisieren", + "Settings Configure": "Configure", + "Settings Selective synchronization": "Selective synchronization", "SyncDirEmpty Detail": "Um Datenverlust zu vermeiden, wird dies nicht synchronisiert. Wenn du die Synchronisation wirklich zurücksetzen möchtest, kannst du einfach den Cozy Ordner entfernen.", "SyncDirEmpty Message": "Es sieht so aus, als sei dein Cozy Ordner geleert worden. Vielleicht ist er auf einer Festplatte, die gerade nicht eingesteckt ist?", diff --git a/gui/locales/en.json b/gui/locales/en.json index 3e6831403..b78586207 100644 --- a/gui/locales/en.json +++ b/gui/locales/en.json @@ -205,8 +205,10 @@ "Settings Start Cozy Drive on system startup": "Start Cozy Drive on system startup", "Settings Startup": "Your Cozy will be automatically synchronized with your computer", "Settings Sync": "Synchronize", - "Settings Synchronize manually": "Synchronize manually", "Settings Version": "Version", + "Settings Synchronize manually": "Synchronize manually", + "Settings Configure": "Configure", + "Settings Selective synchronization": "Selective synchronization", "SyncDirEmpty Detail": "To avoid losing your data, this will not be synchronized. If you really want to reset the synchronization, you can just remove your Cozy folder.", "SyncDirEmpty Message": "Look like you Cozy folder got emptied. May be it is on a hard-drive which is not plugged at the moment?", diff --git a/gui/locales/eo.json b/gui/locales/eo.json index 3e6831403..b78586207 100644 --- a/gui/locales/eo.json +++ b/gui/locales/eo.json @@ -205,8 +205,10 @@ "Settings Start Cozy Drive on system startup": "Start Cozy Drive on system startup", "Settings Startup": "Your Cozy will be automatically synchronized with your computer", "Settings Sync": "Synchronize", - "Settings Synchronize manually": "Synchronize manually", "Settings Version": "Version", + "Settings Synchronize manually": "Synchronize manually", + "Settings Configure": "Configure", + "Settings Selective synchronization": "Selective synchronization", "SyncDirEmpty Detail": "To avoid losing your data, this will not be synchronized. If you really want to reset the synchronization, you can just remove your Cozy folder.", "SyncDirEmpty Message": "Look like you Cozy folder got emptied. May be it is on a hard-drive which is not plugged at the moment?", diff --git a/gui/locales/es.json b/gui/locales/es.json index 608e9bacd..f14f9653a 100644 --- a/gui/locales/es.json +++ b/gui/locales/es.json @@ -205,8 +205,10 @@ "Settings Start Cozy Drive on system startup": "Activar Cozy Drive al iniciar el sistema.", "Settings Startup": "Su Cozy se sincronizará automáticamente con su ordenador", "Settings Sync": "Sincronizar", - "Settings Synchronize manually": "Sincronizar manualmente", "Settings Version": "Versión", + "Settings Synchronize manually": "Sincronizar manualmente", + "Settings Configure": "Configure", + "Settings Selective synchronization": "Selective synchronization", "SyncDirEmpty Detail": "Para evitar la pérdida de datos, estos no se sincronizarán. Si realmente desea restablecer la sincronización, sólo tiene que eliminar la carpeta Cozy.", "SyncDirEmpty Message": "Mire si su carpeta Cozy está llena. Quizás su disco duro no está conectado en este momento.", diff --git a/gui/locales/fr.json b/gui/locales/fr.json index 9f29f2d4d..9f823546d 100644 --- a/gui/locales/fr.json +++ b/gui/locales/fr.json @@ -207,6 +207,8 @@ "Settings Sync": "Synchroniser", "Settings Synchronize manually": "Synchroniser manuellement", "Settings Version": "Version", + "Settings Configure": "Configurer", + "Settings Selective synchronization": "Synchronisation sélective", "SyncDirEmpty Detail": "Afin d'éviter toute perte de données, ces changements ne seront pas synchronisés. Si vous souhaitez vraiment réinitialiser la synchronisation, vous pouvez simplement supprimer votre dossier Cozy.", "SyncDirEmpty Message": "Il semblerait que votre dossier Cozy ait été vidé. Peut-être se trouve-t-il sur un disque externe qui n'est pas connecté actuellement ?", diff --git a/gui/locales/it_IT.json b/gui/locales/it_IT.json index e87b7b212..bc9d3e7d9 100644 --- a/gui/locales/it_IT.json +++ b/gui/locales/it_IT.json @@ -205,8 +205,10 @@ "Settings Start Cozy Drive on system startup": "Esegui Cozy Drive all'avvio del sistema", "Settings Startup": "Il tuo Cozy verrà sincronizzato automaticamente con il tuo computer", "Settings Sync": "Synchronize", - "Settings Synchronize manually": "Synchronize manually", "Settings Version": "Versione", + "Settings Synchronize manually": "Synchronize manually", + "Settings Configure": "Configure", + "Settings Selective synchronization": "Selective synchronization", "SyncDirEmpty Detail": "To avoid losing your data, this will not be synchronized. If you really want to reset the synchronization, you can just remove your Cozy folder.", "SyncDirEmpty Message": "Look like you Cozy folder got emptied. May be it is on a hard-drive which is not plugged at the moment?", diff --git a/gui/locales/ja.json b/gui/locales/ja.json index 59a50e325..78cd4b646 100644 --- a/gui/locales/ja.json +++ b/gui/locales/ja.json @@ -205,8 +205,10 @@ "Settings Start Cozy Drive on system startup": "システム起動時に Cozy デスクトップを開始", "Settings Startup": "Cozy はお使いのコンピュータと自動的に同期されます", "Settings Sync": "同期", - "Settings Synchronize manually": "手動で同期", "Settings Version": "バージョン", + "Settings Synchronize manually": "手動で同期", + "Settings Configure": "Configure", + "Settings Selective synchronization": "Selective synchronization", "SyncDirEmpty Detail": "データの損失を避けるために、これは同期されません。 本当に同期をリセットしたい場合は、Cozy フォルダーを削除してください。", "SyncDirEmpty Message": "Cozy のフォルダが空になったようです。 現在接続されていないハードドライブ上にある可能性がありますか?", diff --git a/gui/locales/nl.json b/gui/locales/nl.json index 2e77b7132..859ad11e7 100644 --- a/gui/locales/nl.json +++ b/gui/locales/nl.json @@ -205,8 +205,10 @@ "Settings Start Cozy Drive on system startup": "Cozy Drive automatisch opstarten", "Settings Startup": "Je Cozy wordt automatisch gesynchroniseerd met je computer", "Settings Sync": "Synchroniseren", - "Settings Synchronize manually": "Handmatig synchroniseren", "Settings Version": "Versie", + "Settings Synchronize manually": "Handmatig synchroniseren", + "Settings Configure": "Configure", + "Settings Selective synchronization": "Selective synchronization", "SyncDirEmpty Detail": "Om gegevensverlies te voorkomen, vindt er geen synchronisatie plaats. Als je synchronisatie wilt afdwingen, dan kun je je Cozy-map verwijderen.", "SyncDirEmpty Message": "Het lijkt erop dat je Cozy-map is geleegd. Bevinden de gegevens zich op een harde schijf die momenteel niet is aangekoppeld?", diff --git a/gui/locales/nl_NL.json b/gui/locales/nl_NL.json index 80626cef7..6cb228209 100644 --- a/gui/locales/nl_NL.json +++ b/gui/locales/nl_NL.json @@ -66,8 +66,8 @@ "Dashboard Offline": "Geen internetverbinding", "Dashboard Recent activities": "Recente activiteiten", "Dashboard Show more files": "Meer bestanden tonen", - "Dashboard Sync in progress (preparation)": "Sync in progress (preparation)", - "Dashboard Sync in progress (transfer)": "Sync in progress (transfer)", + "Dashboard Sync in progress (preparation)": "Bezig met synchroniseren (voorbereiden)…", + "Dashboard Sync in progress (transfer)": "Bezig met synchroniseren (overdracht)…", "Dashboard Synchronization impossible": "Synchronisatie niet mogelijk", "Dashboard Synchronization suspended": "Synchronisatie is onderbroken", "Dashboard Synchronize": "Synchroniseren", @@ -205,8 +205,10 @@ "Settings Start Cozy Drive on system startup": "Cozy Drive automatisch opstarten", "Settings Startup": "Je Cozy wordt automatisch gesynchroniseerd met je computer", "Settings Sync": "Synchroniseren", - "Settings Synchronize manually": "Handmatig synchroniseren", "Settings Version": "Versie", + "Settings Synchronize manually": "Handmatig synchroniseren", + "Settings Configure": "Configure", + "Settings Selective synchronization": "Selective synchronization", "SyncDirEmpty Detail": "Om gegevensverlies te voorkomen, is de synchronisatie gestopt. Als je synchronisatie wilt afdwingen, verwijder dan je Cozy-map.", "SyncDirEmpty Message": "Het lijkt erop dat je Cozy-map is geleegd. Bevindt deze zich op een harde schijf die momenteel niet is aangekoppeld?", @@ -226,7 +228,7 @@ "Tray Relaunch synchronization": "Synchronisatie herstarten", "Tray Settings": "Instellingen", "Tray Show application": "App tonen", - "Tray Sync in progress": "Sync in progress", + "Tray Sync in progress": "Bezig met synchroniseren…", "Tray Your cozy is up to date": "Je Cozy is bijgewerkt", "TwoPanes Help": "Hulp", diff --git a/gui/locales/pl.json b/gui/locales/pl.json index 5d33b0de4..26d4a7342 100644 --- a/gui/locales/pl.json +++ b/gui/locales/pl.json @@ -205,8 +205,10 @@ "Settings Start Cozy Drive on system startup": "Uruchom Cozy Drive podczas startu systemu", "Settings Startup": "Twój Cozy będzie automatycznie synchronizowany z Twoim komputerem", "Settings Sync": "Synchronize", - "Settings Synchronize manually": "Synchronize manually", "Settings Version": "Wersja", + "Settings Synchronize manually": "Synchronize manually", + "Settings Configure": "Configure", + "Settings Selective synchronization": "Selective synchronization", "SyncDirEmpty Detail": "To avoid losing your data, this will not be synchronized. If you really want to reset the synchronization, you can just remove your Cozy folder.", "SyncDirEmpty Message": "Look like you Cozy folder got emptied. May be it is on a hard-drive which is not plugged at the moment?", diff --git a/gui/locales/sq.json b/gui/locales/sq.json index 3e6831403..b78586207 100644 --- a/gui/locales/sq.json +++ b/gui/locales/sq.json @@ -205,8 +205,10 @@ "Settings Start Cozy Drive on system startup": "Start Cozy Drive on system startup", "Settings Startup": "Your Cozy will be automatically synchronized with your computer", "Settings Sync": "Synchronize", - "Settings Synchronize manually": "Synchronize manually", "Settings Version": "Version", + "Settings Synchronize manually": "Synchronize manually", + "Settings Configure": "Configure", + "Settings Selective synchronization": "Selective synchronization", "SyncDirEmpty Detail": "To avoid losing your data, this will not be synchronized. If you really want to reset the synchronization, you can just remove your Cozy folder.", "SyncDirEmpty Message": "Look like you Cozy folder got emptied. May be it is on a hard-drive which is not plugged at the moment?", diff --git a/gui/locales/zh_CN.json b/gui/locales/zh_CN.json index 48e7afefa..657ed9008 100644 --- a/gui/locales/zh_CN.json +++ b/gui/locales/zh_CN.json @@ -205,8 +205,10 @@ "Settings Start Cozy Drive on system startup": "随机开启", "Settings Startup": "Your Cozy will be automatically synchronized with your computer", "Settings Sync": "Synchronize", - "Settings Synchronize manually": "Synchronize manually", "Settings Version": "版本", + "Settings Synchronize manually": "Synchronize manually", + "Settings Configure": "Configure", + "Settings Selective synchronization": "Selective synchronization", "SyncDirEmpty Detail": "To avoid losing your data, this will not be synchronized. If you really want to reset the synchronization, you can just remove your Cozy folder.", "SyncDirEmpty Message": "Look like you Cozy folder got emptied. May be it is on a hard-drive which is not plugged at the moment?",