Your {box_name} gets its " +"Internet connection from your router via Wi-Fi or Ethernet cable. This is a " +"typical home setup.
" +msgstr "" + +#: modules/networks/forms.py:389 +#, python-brace-format +msgid "" +"{box_name} is your routerYour {box_name} has " +"multiple network interfaces such as multiple Ethernet ports or a Wi-Fi " +"adapter. {box_name} is directly connected to the Internet and all your " +"devices connect to {box_name} for their Internet connectivity.
" +msgstr "" + +#: modules/networks/forms.py:398 +#, python-brace-format +msgid "" +"Directly connected to the InternetYour Internet " +"connection is directly attached to your {box_name} and there are no other " +"devices on the network. This can happen on community or cloud setups.
" +msgstr "" + +#: modules/networks/forms.py:417 +msgid "Choose your internet connection type" +msgstr "" + +#: modules/networks/forms.py:421 +msgid "" +"I have a public IP address that may change over timeThis means that devices on the Internet can reach you when you are " +"connected to the Internet. Every time you connect to the Internet with your " +"Internet Service Provider (ISP), you may get a different IP address, " +"especially after some offline time. Many ISPs offer this type of " +"connectivity. If you have a public IP address but are unsure if it changes " +"over time or not, it is safer to choose this option.
" +msgstr "" + +#: modules/networks/forms.py:433 +#, python-brace-format +msgid "" +"I have a public IP address that does not change over time (recommended)This means that devices on the Internet can reach you " +"when you are connected to the Internet. Every time you connect to the " +"Internet with your Internet Service Provider (ISP), you always get the same " +"IP address. This is the most trouble-free setup for many {box_name} services " +"but very few ISPs offer this. You may be able to get this service from your " +"ISP by making an additional payment.
" +msgstr "" + +#: modules/networks/forms.py:446 +#, python-brace-format +msgid "" +"I dont have a public IP addressThis means that " +"devices on the Internet can not reach you when you are connected to " +"the Internet. Every time you connect to the Internet with your Internet " +"Service Provider (ISP), you get an IP address that is only relevant for " +"local networks. Many ISPs offer this type of connectivity. This is the most " +"troublesome situation for hosting services at home. {box_name} provides many " +"workaround solutions but each solution has some limitations.
" +msgstr "" + +#: modules/networks/forms.py:459 +msgid "" +"I do not know the type of connection my ISP providesYou will be suggested the most conservative actions.
" +msgstr "" + +#: modules/networks/forms.py:476 +msgid "Preferred router configuration" +msgstr "" + +#: modules/networks/forms.py:481 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic (recommended)Most routers provide a configuration setting called DMZ. This will " +"allow the router to forward all incoming traffic from the Internet to a " +"single IP address such as the {box_name}'s IP address. First remember to " +"configure a static local IP address for your {box_name} in your router's " +"configuration.
" +msgstr "" + +#: modules/networks/forms.py:493 +#, python-brace-format +msgid "" +"Forward specific traffic as needed by each applicationYou may alternatively choose to forward only specific traffic to " +"your {box_name}. This is ideal if you have other servers like {box_name} in " +"your network or if your router does not support DMZ feature. All " +"applications that provide a web interface need you to forward traffic from " +"ports 80 and 443 to work. Each of the other applications will suggest which " +"port(s) need to be forwarded for that application to work.
" +msgstr "" + +#: modules/networks/forms.py:507 +msgid "" +"Router is currently unconfiguredChoose this if you " +"have not configured or are unable to configure the router currently and wish " +"to be reminded later. Some of the other configuration steps may fail.
" +msgstr "" + +#: modules/networks/manifest.py:8 +#: modules/networks/templates/connections_diagram.html:11 +msgid "Internet" +msgstr "" + +#: modules/networks/manifest.py:8 +#: modules/networks/templates/connections_diagram.html:32 +#: modules/networks/templates/connections_diagram.html:62 +#: modules/networks/templates/connections_fields_wifi.html:15 +#: modules/networks/views.py:102 network.py:29 +msgid "Wi-Fi" +msgstr "" + +#: modules/networks/manifest.py:8 modules/privoxy/manifest.py:10 +#: modules/samba/manifest.py:90 +msgid "Local network" +msgstr "" + +#: modules/networks/manifest.py:8 +msgid "Topology" +msgstr "" + +#: modules/networks/templates/connection_show.html:27 +#, python-format +msgid "" +"This is the primary connection that %(box_name)s relies on for Internet " +"connectivity. Altering it may render your %(box_name)s unreachable. Ensure " +"that you have other means to access %(box_name)s before altering this " +"connection." +msgstr "" + +#: modules/networks/templates/connection_show.html:40 +msgid "Edit connection" +msgstr "" + +#: modules/networks/templates/connection_show.html:47 +#: modules/networks/templates/connections_list.html:61 +msgid "Deactivate" +msgstr "" + +#: modules/networks/templates/connection_show.html:54 +#: modules/networks/templates/connections_list.html:69 +msgid "Activate" +msgstr "" + +#: modules/networks/templates/connection_show.html:60 +msgid "Delete connection" +msgstr "" + +#: modules/networks/templates/connection_show.html:63 +#: modules/networks/templates/connections_diagram.html:19 +#: modules/networks/templates/connections_diagram.html:22 +#: modules/networks/templates/connections_diagram.html:51 +#: modules/networks/templates/connections_diagram.html:73 +msgid "Connection" +msgstr "" + +#: modules/networks/templates/connection_show.html:68 +msgid "Primary connection" +msgstr "" + +#: modules/networks/templates/connection_show.html:81 +#: modules/storage/templates/storage.html:23 +msgid "Device" +msgstr "" + +#: modules/networks/templates/connection_show.html:85 +msgid "State" +msgstr "" + +#: modules/networks/templates/connection_show.html:90 +msgid "State reason" +msgstr "" + +#: modules/networks/templates/connection_show.html:99 +msgid "MAC address" +msgstr "" + +#: modules/networks/templates/connection_show.html:103 +msgid "Interface" +msgstr "" + +#: modules/networks/templates/connection_show.html:107 +#: modules/snapshot/templates/snapshot_delete_selected.html:19 +#: modules/snapshot/templates/snapshot_manage.html:34 +#: modules/snapshot/templates/snapshot_rollback.html:27 +msgid "Description" +msgstr "" + +#: modules/networks/templates/connection_show.html:113 +msgid "Physical Link" +msgstr "" + +#: modules/networks/templates/connection_show.html:118 +msgid "Link state" +msgstr "" + +#: modules/networks/templates/connection_show.html:121 +msgid "cable is connected" +msgstr "" + +#: modules/networks/templates/connection_show.html:124 +msgid "please check cable" +msgstr "" + +#: modules/networks/templates/connection_show.html:128 +#: modules/networks/templates/connection_show.html:144 +msgid "Speed" +msgstr "" + +#: modules/networks/templates/connection_show.html:130 +#, python-format +msgid "%(ethernet_speed)s Mbit/s" +msgstr "" + +#: modules/networks/templates/connection_show.html:146 +#, python-format +msgid "%(wireless_bitrate)s Mbit/s" +msgstr "" + +#: modules/networks/templates/connection_show.html:158 +msgid "Signal strength" +msgstr "" + +#: modules/networks/templates/connection_show.html:174 +#: modules/networks/templates/connections_fields.html:67 +msgid "IPv4" +msgstr "" + +#: modules/networks/templates/connection_show.html:179 +#: modules/networks/templates/connection_show.html:222 +#: modules/shadowsocks/forms.py:36 modules/shadowsocksserver/forms.py:42 +msgid "Method" +msgstr "" + +#: modules/networks/templates/connection_show.html:188 +#: modules/networks/templates/connection_show.html:229 +msgid "IP address" +msgstr "" + +#: modules/networks/templates/connection_show.html:204 +#: modules/networks/templates/connection_show.html:245 +msgid "DNS server" +msgstr "" + +#: modules/networks/templates/connection_show.html:211 +#: modules/networks/templates/connection_show.html:252 +#: modules/storage/forms.py:132 +msgid "Default" +msgstr "" + +#: modules/networks/templates/connection_show.html:217 +#: modules/networks/templates/connections_fields.html:94 +msgid "IPv6" +msgstr "" + +#: modules/networks/templates/connection_show.html:260 +msgid "This connection is not active." +msgstr "" + +#: modules/networks/templates/connection_show.html:264 +#: modules/networks/templates/connections_fields_privacy.html:15 +#: modules/openvpn/manifest.py:60 modules/privacy/__init__.py:38 +#: modules/privacy/__init__.py:77 modules/wireguard/manifest.py:45 +msgid "Privacy" +msgstr "" + +#: modules/networks/templates/connection_show.html:279 +#: modules/networks/templates/connection_show.html:304 +#: modules/networks/templates/connection_show.html:328 +msgid "Firewall zone" +msgstr "" + +#: modules/networks/templates/connection_show.html:289 +#: modules/networks/templates/connection_show.html:314 +#: modules/networks/templates/connection_show.html:338 +#: templates/internal-zone.html:13 templates/messages.html:20 +msgid "Info:" +msgstr "" + +#: modules/networks/templates/connection_show.html:292 +msgid "" +"This interface should be connected to a local network/machine. If you " +"connect this interface to a public network, services meant to be available " +"only internally will become available externally. This is a security risk." +msgstr "" + +#: modules/networks/templates/connection_show.html:317 +#: modules/networks/templates/connection_show.html:345 +msgid "" +"This interface should receive your Internet connection. If you connect it to " +"a local network/machine, many services meant to available only internally " +"will not be available." +msgstr "" + +#: modules/networks/templates/connection_show.html:330 +#: modules/networks/templates/connections_diagram.html:24 network.py:25 +msgid "External" +msgstr "" + +#: modules/networks/templates/connection_show.html:341 +#, python-format +msgid "" +"This interface is not maintained by %(box_name)s. For security, it is " +"automatically assigned to the external zone." +msgstr "" + +#: modules/networks/templates/connections_create.html:18 +msgid "Create Connection" +msgstr "" + +#: modules/networks/templates/connections_delete.html:11 +#: modules/networks/views.py:545 +msgid "Delete Connection" +msgstr "" + +#: modules/networks/templates/connections_delete.html:14 +#, python-format +msgid "Delete connection %(name)s permanently?" +msgstr "" + +#: modules/networks/templates/connections_diagram.html:16 +#: modules/networks/templates/connections_diagram.html:48 +msgid "Spacing" +msgstr "" + +#: modules/networks/templates/connections_diagram.html:29 +#: modules/networks/templates/connections_diagram.html:59 +#: modules/networks/views.py:101 network.py:28 +msgid "Ethernet" +msgstr "" + +#: modules/networks/templates/connections_diagram.html:35 +#: modules/networks/templates/connections_diagram.html:65 +#: modules/networks/templates/connections_list.html:43 +#, python-format +msgid "Show connection %(name)s" +msgstr "" + +#: modules/networks/templates/connections_diagram.html:53 network.py:25 +msgid "Internal" +msgstr "" + +#: modules/networks/templates/connections_diagram.html:77 +msgid "Computer" +msgstr "" + +#: modules/networks/templates/connections_edit.html:24 +#: modules/networks/views.py:253 modules/networks/views.py:341 +msgid "Edit Connection" +msgstr "" + +#: modules/networks/templates/connections_fields.html:13 +#: templates/messages.html:14 +msgid "Error:" +msgstr "" + +#: modules/networks/templates/connections_fields.html:20 +#: modules/users/templates/users_update.html:51 templates/messages.html:30 +msgid "Close" +msgstr "" + +#: modules/networks/templates/connections_fields.html:32 +msgid "General" +msgstr "" + +#: modules/networks/templates/connections_fields_pppoe.html:15 network.py:30 +msgid "PPPoE" +msgstr "" + +#: modules/networks/templates/connections_list.html:8 +msgid "Connections" +msgstr "" + +#: modules/networks/templates/connections_list.html:12 +#: modules/networks/templates/connections_list.html:14 +#: modules/networks/views.py:395 +msgid "Nearby Wi-Fi Networks" +msgstr "" + +#: modules/networks/templates/connections_list.html:17 +#: modules/networks/templates/connections_list.html:19 +#: modules/networks/views.py:420 +#: modules/wireguard/templates/wireguard_add_server.html:19 +msgid "Add Connection" +msgstr "" + +#: modules/networks/templates/connections_list.html:31 +msgid "Active" +msgstr "" + +#: modules/networks/templates/connections_list.html:35 +msgid "Inactive" +msgstr "" + +#: modules/networks/templates/connections_list.html:77 +#, python-format +msgid "Delete connection %(name)s" +msgstr "" + +#: modules/networks/templates/connections_type_select.html:19 +msgid "Create..." +msgstr "" + +#: modules/networks/templates/internet_connectivity_content.html:10 +msgid "What Type Of Internet Connection Do You Have?" +msgstr "" + +#: modules/networks/templates/internet_connectivity_content.html:16 +msgid "" +"Select an option that best describes the type of Internet connection. This " +"information is used only to guide you with further setup." +msgstr "" + +#: modules/networks/templates/internet_connectivity_main.html:9 +msgid "Your Internet Connection Type" +msgstr "" + +#: modules/networks/templates/internet_connectivity_main.html:14 +msgid "" +"The following best describes the type of Internet connection provided by " +"your ISP. This information is only used to suggest you necessary " +"configuration actions." +msgstr "" + +#: modules/networks/templates/internet_connectivity_main.html:23 +msgid "My ISP provides a public IP address that does not change over time." +msgstr "" + +#: modules/networks/templates/internet_connectivity_main.html:27 +msgid "My ISP provides a public IP address that may change over time." +msgstr "" + +#: modules/networks/templates/internet_connectivity_main.html:31 +msgid "My ISP does not provide a public IP address." +msgstr "" + +#: modules/networks/templates/internet_connectivity_main.html:35 +msgid "I do not know the type of connection my ISP provides." +msgstr "" + +#: modules/networks/templates/internet_connectivity_main.html:41 +#: modules/networks/templates/network_topology_main.html:41 +msgid "Update..." +msgstr "" + +#: modules/networks/templates/internet_connectivity_type.html:18 +#: modules/networks/templates/network_topology_update.html:18 +#: modules/networks/templates/router_configuration_update.html:19 +#: modules/pagekite/templates/pagekite_custom_services.html:33 +#: modules/sharing/templates/sharing_add_edit.html:25 templates/form.html:19 +msgid "Submit" +msgstr "" + +#: modules/networks/templates/network_topology_content.html:10 +#, python-format +msgid "How is Your %(box_name)s Connected to the Internet?" +msgstr "" + +#: modules/networks/templates/network_topology_content.html:16 +#, python-format +msgid "" +"Select an option that best describes how your %(box_name)s is connected in " +"your network. This information is used to guide you with further setup. It " +"can be changed later." +msgstr "" + +#: modules/networks/templates/network_topology_main.html:9 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: modules/networks/templates/network_topology_main.html:15 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: modules/networks/templates/network_topology_main.html:24 +#, python-format +msgid "" +"Your %(box_name)s gets its Internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: modules/networks/templates/network_topology_main.html:29 +#, python-format +msgid "" +"Your %(box_name)s is directly connected to the Internet and all your devices " +"connect to %(box_name)s for their Internet connectivity." +msgstr "" + +#: modules/networks/templates/network_topology_main.html:34 +#, python-format +msgid "" +"Your Internet connection is directly attached to your %(box_name)s and there " +"are no other devices on the network." +msgstr "" + +#: modules/networks/templates/networks_configuration.html:24 +msgid "" +"Advanced networking operations such as bonding, bridging and VLAN management " +"are provided by the Cockpit app." +msgstr "" + +#: modules/networks/templates/router_configuration_content.html:10 +#, python-format +msgid "Setup %(box_name)s Behind a Router" +msgstr "" + +#: modules/networks/templates/router_configuration_content.html:16 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: modules/networks/templates/router_configuration_content.html:23 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: modules/networks/templates/router_configuration_content.html:32 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options to overcome this limitation, choose 'I dont have a public IP " +"address' option in Internet connection type selection." +msgstr "" + +#: modules/networks/templates/router_configuration_content.html:39 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: modules/networks/templates/router_configuration_content.html:42 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: modules/networks/templates/router_configuration_content.html:54 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: modules/networks/templates/wifi_scan.html:14 +msgid "No Wi-Fi device detected." +msgstr "" + +#: modules/networks/templates/wifi_scan.html:21 +#, python-format +msgid "Device: %(interface_name)s" +msgstr "" + +#: modules/networks/templates/wifi_scan.html:27 +msgid "Last scanned: " +msgstr "" + +#: modules/networks/templates/wifi_scan.html:31 +msgid "never" +msgstr "" + +#: modules/networks/templates/wifi_scan.html:52 +msgid "No Wi-Fi networks found." +msgstr "" + +#: modules/networks/views.py:27 +msgid "disabled" +msgstr "" + +#: modules/networks/views.py:28 +msgid "automatic" +msgstr "" + +#: modules/networks/views.py:29 +msgid "manual" +msgstr "" + +#: modules/networks/views.py:30 +msgid "shared" +msgstr "" + +#: modules/networks/views.py:31 +msgid "link-local" +msgstr "" + +#: modules/networks/views.py:32 +msgid "dhcp" +msgstr "" + +#: modules/networks/views.py:33 +msgid "ignore" +msgstr "" + +#: modules/networks/views.py:40 +msgid "unmanaged" +msgstr "" + +#: modules/networks/views.py:41 +msgid "unavailable" +msgstr "" + +#: modules/networks/views.py:42 +msgid "disconnected" +msgstr "" + +#: modules/networks/views.py:43 +msgid "preparing" +msgstr "" + +#: modules/networks/views.py:44 +msgid "connecting" +msgstr "" + +#: modules/networks/views.py:45 +msgid "needs authentication" +msgstr "" + +#: modules/networks/views.py:46 +msgid "requesting address" +msgstr "" + +#: modules/networks/views.py:47 +msgid "checking" +msgstr "" + +#: modules/networks/views.py:48 +msgid "waiting for secondary" +msgstr "" + +#: modules/networks/views.py:49 +msgid "activated" +msgstr "" + +#: modules/networks/views.py:50 +msgid "deactivating" +msgstr "" + +#: modules/networks/views.py:58 +msgid "no reason" +msgstr "" + +#: modules/networks/views.py:60 +msgid "unknown error" +msgstr "" + +#: modules/networks/views.py:62 +msgid "device is now managed" +msgstr "" + +#: modules/networks/views.py:64 +msgid "device is now unmanaged" +msgstr "" + +#: modules/networks/views.py:66 +msgid "configuration failed" +msgstr "" + +#: modules/networks/views.py:68 +msgid "secrets required" +msgstr "" + +#: modules/networks/views.py:70 +msgid "DHCP client failed to start" +msgstr "" + +#: modules/networks/views.py:72 +msgid "DHCP client error" +msgstr "" + +#: modules/networks/views.py:74 +msgid "DHCP client failed" +msgstr "" + +#: modules/networks/views.py:76 +msgid "shared connection service failed to start" +msgstr "" + +#: modules/networks/views.py:78 +msgid "shared connection service failed" +msgstr "" + +#: modules/networks/views.py:80 +msgid "device was removed" +msgstr "" + +#: modules/networks/views.py:82 +msgid "device disconnected by user" +msgstr "" + +#: modules/networks/views.py:84 +msgid "a dependency of the connection failed" +msgstr "" + +#: modules/networks/views.py:86 +msgid "Wi-Fi network not found" +msgstr "" + +#: modules/networks/views.py:88 +msgid "a secondary connection failed" +msgstr "" + +#: modules/networks/views.py:90 +msgid "new connection activation was enqueued" +msgstr "" + +#: modules/networks/views.py:92 +msgid "a duplicate IP address was detected" +msgstr "" + +#: modules/networks/views.py:94 +msgid "selected IP method is not supported" +msgstr "" + +#: modules/networks/views.py:103 +msgid "generic" +msgstr "" + +#: modules/networks/views.py:104 +msgid "TUN or TAP interface" +msgstr "" + +#: modules/networks/views.py:105 modules/wireguard/__init__.py:47 +#: modules/wireguard/manifest.py:14 +msgid "WireGuard" +msgstr "" + +#: modules/networks/views.py:112 +msgid "ad-hoc" +msgstr "" + +#: modules/networks/views.py:113 +msgid "infrastructure" +msgstr "" + +#: modules/networks/views.py:114 +msgid "access point" +msgstr "" + +#: modules/networks/views.py:115 +msgid "mesh point" +msgstr "" + +#: modules/networks/views.py:122 +msgid "default" +msgstr "" + +#: modules/networks/views.py:155 +msgid "Cannot show connection: Connection not found." +msgstr "" + +#: modules/networks/views.py:210 +msgid "Connection Information" +msgstr "" + +#: modules/networks/views.py:225 +msgid "Cannot edit connection: Connection not found." +msgstr "" + +#: modules/networks/views.py:231 +msgid "This type of connection is not yet understood." +msgstr "" + +#: modules/networks/views.py:353 +#, python-brace-format +msgid "Activated connection {name}." +msgstr "" + +#: modules/networks/views.py:357 +msgid "Failed to activate connection: Connection not found." +msgstr "" + +#: modules/networks/views.py:363 +#, python-brace-format +msgid "Failed to activate connection {name}: No suitable device is available." +msgstr "" + +#: modules/networks/views.py:376 +#, python-brace-format +msgid "Deactivated connection {name}." +msgstr "" + +#: modules/networks/views.py:380 +msgid "Failed to de-activate connection: Connection not found." +msgstr "" + +#: modules/networks/views.py:438 +msgid "Adding New Generic Connection" +msgstr "" + +#: modules/networks/views.py:456 +msgid "Adding New Ethernet Connection" +msgstr "" + +#: modules/networks/views.py:474 +msgid "Adding New PPPoE Connection" +msgstr "" + +#: modules/networks/views.py:511 +msgid "Adding New Wi-Fi Connection" +msgstr "" + +#: modules/networks/views.py:526 +#, python-brace-format +msgid "Connection {name} deleted." +msgstr "" + +#: modules/networks/views.py:530 modules/networks/views.py:540 +msgid "Failed to delete connection: Connection not found." +msgstr "" + +#: modules/nextcloud/__init__.py:25 +msgid "" +"Nextcloud is a self-hosted productivity platform which provides private and " +"secure functions for file sharing, collaborative work, and more. Nextcloud " +"includes the Nextcloud server, client applications for desktop computers, " +"and mobile clients. The Nextcloud server provides a well integrated web " +"interface." +msgstr "" + +#: modules/nextcloud/__init__.py:30 +msgid "All users of FreedomBox can use Nextcloud. To perform administrative " +msgstr "" + +#: modules/nextcloud/__init__.py:34 +#, python-brace-format +msgid "" +"Please note that Nextcloud is installed and run inside a container provided " +"by the Nextcloud community. Security, quality, privacy and legal reviews are " +"done by the upstream project and not by Debian/{box_name}. Updates are " +"performed following an independent cycle." +msgstr "" + +#: modules/nextcloud/__init__.py:56 modules/nextcloud/manifest.py:11 +#: modules/nextcloud/manifest.py:18 +msgid "Nextcloud" +msgstr "" + +#: modules/nextcloud/forms.py:19 +msgid "Not set" +msgstr "" + +#: modules/nextcloud/forms.py:26 +msgid "Override domain" +msgstr "" + +#: modules/nextcloud/forms.py:27 +msgid "" +"Set to the domain or IP address that Nextcloud should be forced to generate " +"URLs with. Should not be needed if a valid domain is used to access " +"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"." +msgstr "" + +#: modules/nextcloud/forms.py:33 +msgid "Administrator password" +msgstr "" + +#: modules/nextcloud/forms.py:34 +msgid "" +"Optional. Set a new password for Nextcloud's administrator account " +"(nextcloud-admin). The password cannot be a common one and the minimum " +"required length is 10 characters. Leave this field blank to " +"keep the current password." +msgstr "" + +#: modules/nextcloud/forms.py:41 +msgid "Default phone region" +msgstr "" + +#: modules/nextcloud/forms.py:42 +msgid "" +"The default phone region is required to validate phone numbers in the " +"profile settings without a country code." +msgstr "" + +#: modules/nextcloud/manifest.py:56 modules/syncthing/manifest.py:58 +msgid "File sync" +msgstr "" + +#: modules/nextcloud/manifest.py:56 modules/sharing/__init__.py:34 +msgid "Sharing" +msgstr "" + +#: modules/nextcloud/manifest.py:56 modules/sogo/manifest.py:72 +msgid "Groupware" +msgstr "" + +#: modules/nextcloud/views.py:53 +msgid "Password update failed. Please choose a stronger password." +msgstr "" + +#: modules/openvpn/__init__.py:20 +#, python-brace-format +msgid "" +"Virtual Private Network (VPN) is a technique for securely connecting two " +"devices in order to access resources of a private network. While you are " +"away from home, you can connect to your {box_name} in order to join your " +"home network and access private/internal services provided by {box_name}. " +"You can also access the rest of the Internet via {box_name} for added " +"security and anonymity." +msgstr "" + +#: modules/openvpn/__init__.py:43 +msgid "Connect to VPN services" +msgstr "" + +#: modules/openvpn/__init__.py:46 modules/openvpn/manifest.py:17 +msgid "OpenVPN" +msgstr "" + +#: modules/openvpn/__init__.py:57 +#, python-brace-format +msgid "" +"Download Profile" +msgstr "" + +#: modules/openvpn/manifest.py:52 +msgid "Tunnelblick" +msgstr "" + +#: modules/openvpn/manifest.py:60 modules/wireguard/manifest.py:45 +msgid "VPN server" +msgstr "" + +#: modules/openvpn/manifest.py:60 modules/pagekite/manifest.py:17 +#: modules/wireguard/manifest.py:45 +msgid "Remote access" +msgstr "" + +#: modules/openvpn/templates/openvpn.html:12 +msgid "Profile" +msgstr "" + +#: modules/openvpn/templates/openvpn.html:15 +#, python-format +msgid "" +"To connect to %(box_name)s's VPN, you need to download a profile and feed it " +"to an OpenVPN client on your mobile or desktop machine. OpenVPN Clients are " +"available for most platforms. Click \"Learn more...\" above for recommended " +"clients and instructions on how to configure them." +msgstr "" + +#: modules/openvpn/templates/openvpn.html:24 +#, python-format +msgid "Profile is specific to each user of %(box_name)s. Keep it a secret." +msgstr "" + +#: modules/openvpn/templates/openvpn.html:34 +msgid "Download my profile" +msgstr "" + +#: modules/pagekite/__init__.py:19 +#, python-brace-format +msgid "" +"PageKite is a system for exposing {box_name} services when you don't have a " +"direct connection to the Internet. You only need this if your {box_name} " +"services are unreachable from the rest of the Internet. This includes the " +"following situations:" +msgstr "" + +#: modules/pagekite/__init__.py:24 +#, python-brace-format +msgid "{box_name} is behind a restricted firewall." +msgstr "" + +#: modules/pagekite/__init__.py:27 +#, python-brace-format +msgid "{box_name} is connected to a (wireless) router which you don't control." +msgstr "" + +#: modules/pagekite/__init__.py:29 +msgid "" +"Your ISP does not provide you an external IP address and instead provides " +"Internet connection through NAT." +msgstr "" + +#: modules/pagekite/__init__.py:31 +msgid "" +"Your ISP does not provide you a static IP address and your IP address " +"changes every time you connect to Internet." +msgstr "" + +#: modules/pagekite/__init__.py:33 +msgid "Your ISP limits incoming connections." +msgstr "" + +#: modules/pagekite/__init__.py:35 +#, python-brace-format +msgid "" +"PageKite works around NAT, firewalls and IP address limitations by using a " +"combination of tunnels and reverse proxies. You can use any pagekite service " +"provider, for example pagekite.net. In " +"the future it might be possible to use your buddy's {box_name} for this." +msgstr "" + +#: modules/pagekite/__init__.py:59 +msgid "PageKite" +msgstr "" + +#: modules/pagekite/__init__.py:72 +msgid "PageKite Domain" +msgstr "" + +#: modules/pagekite/forms.py:30 +msgid "Server domain" +msgstr "" + +#: modules/pagekite/forms.py:32 +msgid "" +"Select your pagekite server. Set \"pagekite.net\" to use the default " +"pagekite.net server." +msgstr "" + +#: modules/pagekite/forms.py:35 modules/shadowsocks/forms.py:27 +msgid "Server port" +msgstr "" + +#: modules/pagekite/forms.py:36 +msgid "Port of your pagekite server (default: 80)" +msgstr "" + +#: modules/pagekite/forms.py:38 +msgid "Kite name" +msgstr "" + +#: modules/pagekite/forms.py:39 +msgid "Example: mybox.pagekite.me" +msgstr "" + +#: modules/pagekite/forms.py:41 +msgid "Invalid kite name" +msgstr "" + +#: modules/pagekite/forms.py:45 +msgid "Kite secret" +msgstr "" + +#: modules/pagekite/forms.py:46 +msgid "" +"A secret associated with the kite or the default secret for your account if " +"no secret is set on the kite." +msgstr "" + +#: modules/pagekite/forms.py:85 +msgid "protocol" +msgstr "" + +#: modules/pagekite/forms.py:88 +msgid "external (frontend) port" +msgstr "" + +#: modules/pagekite/forms.py:91 +msgid "internal (freedombox) port" +msgstr "" + +#: modules/pagekite/forms.py:92 +msgid "Enable Subdomains" +msgstr "" + +#: modules/pagekite/forms.py:127 +msgid "Deleted custom service" +msgstr "" + +#: modules/pagekite/forms.py:161 +msgid "This service is already available as a standard service." +msgstr "" + +#: modules/pagekite/forms.py:169 +msgid "Added custom service" +msgstr "" + +#: modules/pagekite/forms.py:172 +msgid "This service already exists" +msgstr "" + +#: modules/pagekite/manifest.py:16 +msgid "Reachability" +msgstr "" + +#: modules/pagekite/manifest.py:18 +msgid "Tunneling" +msgstr "" + +#: modules/pagekite/templates/pagekite_configure.html:13 +msgid "Custom Services" +msgstr "" + +#: modules/pagekite/templates/pagekite_configure.html:17 +#: modules/pagekite/templates/pagekite_configure.html:19 +msgid "Add Custom Service" +msgstr "" + +#: modules/pagekite/templates/pagekite_configure.html:35 +#, python-format +msgid "connected to %(backend_host)s:%(backend_port)s" +msgstr "" + +#: modules/pagekite/templates/pagekite_configure.html:47 +msgid "Delete this service" +msgstr "" + +#: modules/pagekite/templates/pagekite_custom_services.html:11 +#: modules/pagekite/views.py:34 +msgid "Add custom PageKite service" +msgstr "" + +#: modules/pagekite/templates/pagekite_custom_services.html:19 +msgid "" +"Your PageKite frontend server may not support all the protocol/port " +"combinations that you are able to define here. For example, HTTPS on ports " +"other than 443 is known to cause problems." +msgstr "" + +#: modules/pagekite/utils.py:45 +msgid "Web Server (HTTP)" +msgstr "" + +#: modules/pagekite/utils.py:47 +#, python-brace-format +msgid "Site will be available at http://{0}" +msgstr "" + +#: modules/pagekite/utils.py:59 +msgid "Web Server (HTTPS)" +msgstr "" + +#: modules/pagekite/utils.py:61 +#, python-brace-format +msgid "Site will be available at https://{0}" +msgstr "" + +#: modules/pagekite/utils.py:73 +msgid "Secure Shell (SSH)" +msgstr "" + +#: modules/pagekite/utils.py:75 +msgid "" +"See SSH client setup instructions" +msgstr "" + +#: modules/performance/__init__.py:19 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: modules/performance/__init__.py:23 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + +#: modules/performance/manifest.py:18 +msgid "Monitoring" +msgstr "" + +#: modules/performance/manifest.py:18 +msgid "Resource utilization" +msgstr "" + +#: modules/power/__init__.py:14 +msgid "Restart or shut down the system." +msgstr "" + +#: modules/power/__init__.py:31 +msgid "Power" +msgstr "" + +#: modules/power/manifest.py:10 +msgid "Reboot" +msgstr "" + +#: modules/power/manifest.py:10 +msgid "Shutdown" +msgstr "" + +#: modules/power/templates/power.html:15 templates/base.html:181 +#: templates/base.html:182 +msgid "Restart" +msgstr "" + +#: modules/power/templates/power.html:18 +msgid "Shut Down" +msgstr "" + +#: modules/power/templates/power_busy_warning.html:14 +msgid "" +"Currently an installation or upgrade is running. Consider waiting until it's " +"finished before shutting down or restarting." +msgstr "" + +#: modules/power/templates/power_restart.html:17 +msgid "" +"Are you sure you want to restart? You will not be able to access this web " +"interface for a few minutes until the system is restarted." +msgstr "" + +#: modules/power/templates/power_restart.html:41 +#: modules/power/templates/power_restart.html:44 +msgid "Restart Now" +msgstr "" + +#: modules/power/templates/power_shutdown.html:17 +msgid "" +"Are you sure you want to shut down? You will not be able to access this web " +"interface after shut down." +msgstr "" + +#: modules/power/templates/power_shutdown.html:40 +#: modules/power/templates/power_shutdown.html:43 +msgid "Shut Down Now" +msgstr "" + +#: modules/privacy/__init__.py:21 +msgid "Manage system-wide privacy settings." +msgstr "" + +#: modules/privacy/__init__.py:75 +msgid "Please update privacy settings to match your preferences." +msgstr "" + +#: modules/privacy/__init__.py:80 +msgid "Review privacy setting" +msgstr "" + +#: modules/privacy/forms.py:17 +#, python-brace-format +msgid "" +"Optional Value. This URL is used to determine the publicly visible IP " +"address of your {box_name}. The URL should simply return the IPv4 or IPv6 " +"address where the client request comes from. Default is to use the service " +"provided by the FreedomBox Foundation at https://ddns.freedombox.org/ip/. If " +"empty, lookups are disabled and some functionality will fail." +msgstr "" + +#: modules/privacy/forms.py:25 +msgid "Periodically submit a list of apps used (suggested)" +msgstr "" + +#: modules/privacy/forms.py:27 +#, python-brace-format +msgid "" +"Help Debian/{box_name} developers by participating in the Popularity Contest " +"package survey program. When enabled, a list of apps used on this system " +"will be anonymously submitted to Debian every week. Statistics for the data " +"collected are publicly available at popcon.debian.org. Submission happens over the Tor " +"network for additional anonymity if Tor app is enabled." +msgstr "" + +#: modules/privacy/forms.py:37 +msgid "Allow using fallback DNS servers" +msgstr "" + +#: modules/privacy/forms.py:39 +msgid "" +"Use well-known public DNS servers to resolve domain names in unusual " +"circumstances where no DNS servers are known but internet connectivity is " +"available. Can be disabled in most cases if network connectivity is stable " +"and reliable." +msgstr "" + +#: modules/privacy/forms.py:45 +msgid "URL to look up public IP address" +msgstr "" + +#: modules/privacy/manifest.py:10 +msgid "Usage reporting" +msgstr "" + +#: modules/privacy/manifest.py:10 +msgid "External services" +msgstr "" + +#: modules/privacy/manifest.py:10 +msgid "Fallback DNS" +msgstr "" + +#: modules/privoxy/__init__.py:25 +msgid "" +"Privoxy is a non-caching web proxy with advanced filtering capabilities for " +"enhancing privacy, modifying web page data and HTTP headers, controlling " +"access, and removing ads and other obnoxious Internet junk. " +msgstr "" + +#: modules/privoxy/__init__.py:30 +#, python-brace-format +msgid "" +"You can use Privoxy by modifying your browser proxy settings to your " +"{box_name} hostname (or IP address) with port 8118. Only connections from " +"local network IP addresses are permitted. While using Privoxy, you can see " +"its configuration details and documentation at http://config.privoxy.org/ or http://p.p." +msgstr "" + +#: modules/privoxy/__init__.py:53 +msgid "Privoxy" +msgstr "" + +#: modules/privoxy/__init__.py:119 +#, python-brace-format +msgid "Access {url} with proxy {proxy} on tcp{kind}" +msgstr "" + +#: modules/privoxy/manifest.py:10 +msgid "Ad blocker" +msgstr "" + +#: modules/privoxy/manifest.py:10 modules/shadowsocks/manifest.py:18 +#: modules/torproxy/manifest.py:55 +msgid "Proxy server" +msgstr "" + +#: modules/quassel/__init__.py:24 +#, python-brace-format +msgid "" +"Quassel is an IRC application that is split into two parts, a \"core\" and a " +"\"client\". This allows the core to remain connected to IRC servers, and to " +"continue receiving messages, even when the client is disconnected. " +"{box_name} can run the Quassel core service keeping you always online and " +"one or more Quassel clients from a desktop or a mobile can be used to " +"connect and disconnect from it." +msgstr "" + +#: modules/quassel/__init__.py:31 +msgid "" +"You can connect to your Quassel core on the default Quassel port 4242. " +"Clients to connect to Quassel from your desktop and mobile devices are available." +msgstr "" + +#: modules/quassel/__init__.py:51 modules/quassel/manifest.py:9 +msgid "Quassel" +msgstr "" + +#: modules/quassel/manifest.py:33 +msgid "Quasseldroid" +msgstr "" + +#: modules/quassel/manifest.py:54 +msgid "IRC" +msgstr "" + +#: modules/radicale/__init__.py:25 +#, python-brace-format +msgid "" +"Radicale is a CalDAV and CardDAV server. It allows synchronization and " +"sharing of scheduling and contact data. To use Radicale, a supported client application" +"a> is needed. Radicale can be accessed by any user with a {box_name} login." +msgstr "" + +#: modules/radicale/__init__.py:31 +msgid "" +"Radicale provides a basic web interface, which only supports creating new " +"calendars and addressbooks. It does not support adding events or contacts, " +"which must be done using a separate client." +msgstr "" + +#: modules/radicale/__init__.py:53 modules/radicale/manifest.py:74 +msgid "Radicale" +msgstr "" + +#: modules/radicale/forms.py:14 +msgid "Only the owner of a calendar/addressbook can view or make changes." +msgstr "" + +#: modules/radicale/forms.py:18 +#, python-brace-format +msgid "" +"Any user with a {box_name} login can view any calendar/addressbook, but only " +"the owner can make changes." +msgstr "" + +#: modules/radicale/forms.py:23 +#, python-brace-format +msgid "" +"Any user with a {box_name} login can view or make changes to any calendar/" +"addressbook." +msgstr "" + +#: modules/radicale/forms.py:30 +msgid "Access rights" +msgstr "" + +#: modules/radicale/manifest.py:9 modules/sogo/manifest.py:36 +msgid "DAVx5" +msgstr "" + +#: modules/radicale/manifest.py:11 +msgid "" +"Enter the URL of the Radicale server (e.g. https://imap.example.com. For IMAP over SSL "
+"(recommended), fill the server field like imaps://imap.example.com"
+"code>."
+msgstr ""
+
+#: modules/roundcube/__init__.py:29
+msgid ""
+"For Gmail, username will be your Gmail address, password will be your Google "
+"account password and server will be imaps://imap.gmail.com. "
+"Note that you will also need to enable \"Less secure apps\" in your Google "
+"account settings (https://www.google.com/settings/security/lesssecureapps"
+"a>)."
+msgstr ""
+
+#: modules/roundcube/forms.py:16
+msgid "Use only the local mail server"
+msgstr ""
+
+#: modules/roundcube/forms.py:17
+#, python-brace-format
+msgid ""
+"When enabled, users can only read and send mails via this {box_name}. If you "
+"wish to use Roundcube with an external mail account, such as Gmail, you must "
+"uncheck this option. When unchecked, a text entry field is added to the "
+"login page so the user can specify to which account they wish to connect."
+msgstr ""
+
+#: modules/roundcube/manifest.py:23
+msgid "Email"
+msgstr ""
+
+#: modules/rssbridge/__init__.py:21
+msgid ""
+"RSS-Bridge generates RSS and Atom feeds for websites that do not have one. "
+"Generated feeds can be consumed by any feed reader."
+msgstr ""
+
+#: modules/rssbridge/__init__.py:24
+#, python-brace-format
+msgid ""
+"When enabled, RSS-Bridge can be accessed by any "
+"user belonging to the feed-reader group."
+msgstr ""
+
+#: modules/rssbridge/__init__.py:28
+#, python-brace-format
+msgid ""
+"You can use RSS-Bridge with Miniflux or Tiny Tiny RSS to follow various websites. When "
+"adding a feed, enable authentication and use your {box_name} credentials."
+msgstr ""
+
+#: modules/rssbridge/__init__.py:48 modules/ttrss/__init__.py:47
+msgid "Read and subscribe to news feeds"
+msgstr ""
+
+#: modules/rssbridge/__init__.py:51 modules/rssbridge/manifest.py:7
+msgid "RSS-Bridge"
+msgstr ""
+
+#: modules/rssbridge/forms.py:12 modules/searx/forms.py:17
+msgid "Allow Public Access"
+msgstr ""
+
+#: modules/rssbridge/forms.py:13 modules/searx/forms.py:18
+msgid "Allow this application to be used by anyone who can reach it."
+msgstr ""
+
+#: modules/rssbridge/manifest.py:16
+msgid "Feed generator"
+msgstr ""
+
+#: modules/rssbridge/manifest.py:16
+msgid "News"
+msgstr ""
+
+#: modules/samba/__init__.py:23
+msgid ""
+"Samba allows to share files and folders between FreedomBox and other "
+"computers in your local network."
+msgstr ""
+
+#: modules/samba/__init__.py:26
+#, python-brace-format
+msgid ""
+"After installation, you can choose which disks to use for sharing. Enabled "
+"shares are accessible in the file manager on your computer at location \\"
+"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). "
+"There are three types of shares you can choose from: "
+msgstr ""
+
+#: modules/samba/__init__.py:31
+msgid "Open share - accessible to everyone in your local network."
+msgstr ""
+
+#: modules/samba/__init__.py:32
+msgid ""
+"Group share - accessible only to FreedomBox users who are in the freedombox-"
+"share group."
+msgstr ""
+
+#: modules/samba/__init__.py:34
+msgid ""
+"Home share - every user in the freedombox-share group can have their own "
+"private space."
+msgstr ""
+
+#: modules/samba/__init__.py:50
+msgid "Access to the private shares"
+msgstr ""
+
+#: modules/samba/__init__.py:53
+msgid "Samba"
+msgstr ""
+
+#: modules/samba/manifest.py:12
+msgid "Android Samba Client"
+msgstr ""
+
+#: modules/samba/manifest.py:25
+msgid "Ghost Commander"
+msgstr ""
+
+#: modules/samba/manifest.py:34
+msgid "Ghost Commander - Samba plugin"
+msgstr ""
+
+#: modules/samba/manifest.py:43
+msgid "VLC media player"
+msgstr ""
+
+#: modules/samba/manifest.py:62
+msgid "GNOME Files"
+msgstr ""
+
+#: modules/samba/manifest.py:74
+msgid "Dolphin"
+msgstr ""
+
+#: modules/samba/manifest.py:91
+msgid "Network drive"
+msgstr ""
+
+#: modules/samba/manifest.py:92
+msgid "Media storage"
+msgstr ""
+
+#: modules/samba/manifest.py:93
+msgid "Backup storage"
+msgstr ""
+
+#: modules/samba/templates/samba.html:20
+msgid "Shares"
+msgstr ""
+
+#: modules/samba/templates/samba.html:22
+msgid ""
+"Note: Only specially created directories will be shared on selected disks, "
+"not the whole disk."
+msgstr ""
+
+#: modules/samba/templates/samba.html:84
+msgid "VFAT partitions are not supported"
+msgstr ""
+
+#: modules/samba/templates/samba.html:112
+#, python-format
+msgid ""
+"You can find additional information about disks on the storage module page and configure access to the "
+"shares on the users module page."
+msgstr ""
+
+#: modules/samba/templates/samba.html:120
+msgid "Users who can currently access group and home shares"
+msgstr ""
+
+#: modules/samba/templates/samba.html:124
+msgid ""
+"Users needing to re-enter their password on the password change page to "
+"access group and home shares"
+msgstr ""
+
+#: modules/samba/templates/samba.html:129
+msgid "Unavailable Shares"
+msgstr ""
+
+#: modules/samba/templates/samba.html:131
+msgid ""
+"Shares that are configured but the disk is not available. If the disk is "
+"plugged back in, sharing will be automatically enabled."
+msgstr ""
+
+#: modules/samba/templates/samba.html:140
+msgid "Share name"
+msgstr ""
+
+#: modules/samba/templates/samba.html:141
+msgid "Action"
+msgstr ""
+
+#: modules/samba/views.py:33
+msgid "FreedomBox OS disk"
+msgstr ""
+
+#: modules/samba/views.py:60 modules/storage/forms.py:140
+msgid "Open Share"
+msgstr ""
+
+#: modules/samba/views.py:64 modules/storage/forms.py:138
+msgid "Group Share"
+msgstr ""
+
+#: modules/samba/views.py:68
+msgid "Home Share"
+msgstr ""
+
+#: modules/samba/views.py:103
+msgid "Share enabled."
+msgstr ""
+
+#: modules/samba/views.py:108
+#, python-brace-format
+msgid "Error enabling share: {error_message}"
+msgstr ""
+
+#: modules/samba/views.py:113
+msgid "Share disabled."
+msgstr ""
+
+#: modules/samba/views.py:118
+#, python-brace-format
+msgid "Error disabling share: {error_message}"
+msgstr ""
+
+#: modules/searx/__init__.py:20
+msgid ""
+"Searx is a privacy-respecting Internet metasearch engine. It aggregrates and "
+"displays results from multiple search engines."
+msgstr ""
+
+#: modules/searx/__init__.py:22
+msgid ""
+"Searx can be used to avoid tracking and profiling by search engines. It "
+"stores no cookies by default."
+msgstr ""
+
+#: modules/searx/__init__.py:38
+msgid "Search the web"
+msgstr ""
+
+#: modules/searx/__init__.py:41 modules/searx/manifest.py:6
+msgid "Searx"
+msgstr ""
+
+#: modules/searx/forms.py:12
+msgid "Safe Search"
+msgstr ""
+
+#: modules/searx/forms.py:13
+msgid "Select the default family filter to apply to your search results."
+msgstr ""
+
+#: modules/searx/forms.py:14
+msgid "Moderate"
+msgstr ""
+
+#: modules/searx/forms.py:14
+msgid "Strict"
+msgstr ""
+
+#: modules/searx/manifest.py:17
+msgid "Web search"
+msgstr ""
+
+#: modules/searx/manifest.py:17
+msgid "Metasearch Engine"
+msgstr ""
+
+#: modules/security/forms.py:13
+msgid "Fail2Ban (recommended)"
+msgstr ""
+
+#: modules/security/forms.py:14
+msgid ""
+"When this option is enabled, Fail2Ban will limit brute force break-in "
+"attempts to the SSH server and other enabled password protected internet-"
+"services."
+msgstr ""
+
+#: modules/security/manifest.py:10
+msgid "Automatic bans"
+msgstr ""
+
+#: modules/security/manifest.py:10
+msgid "Reports"
+msgstr ""
+
+#: modules/security/templates/security.html:12
+#: modules/security/templates/security.html:14
+msgid "Show security report"
+msgstr ""
+
+#: modules/security/templates/security.html:19
+#: modules/upgrades/templates/backports-firstboot.html:11
+#: modules/upgrades/templates/upgrades_configure.html:49
+msgid "Frequent Feature Updates"
+msgstr ""
+
+#: modules/security/templates/security.html:21
+#: modules/upgrades/templates/upgrades_configure.html:57
+msgid "Frequent feature updates are activated."
+msgstr ""
+
+#: modules/security/templates/security.html:26
+#: modules/upgrades/templates/backports-firstboot.html:14
+#: modules/upgrades/templates/upgrades_configure.html:69
+#, python-format
+msgid ""
+"Frequent feature updates allow the %(box_name)s Service, plus a very limited "
+"set of software, to receive new features more frequently (from the backports "
+"repository). This results in receiving some new features within weeks, "
+"instead of only once every 2 years or so. Note that software with frequent "
+"feature updates does not have support from the Debian Security Team. "
+"Instead, they are maintained by contributors to Debian and the %(box_name)s "
+"community."
+msgstr ""
+
+#: modules/security/templates/security_report.html:10
+#: modules/security/views.py:65
+msgid "Security Report"
+msgstr ""
+
+#: modules/security/templates/security_report.html:12
+#, python-format
+msgid ""
+"There are %(count)s reported security vulnerabilities in the FreedomBox app, "
+"which provides the core services and user interface for a FreedomBox server."
+msgstr ""
+
+#: modules/security/templates/security_report.html:19
+msgid ""
+"The following table lists the current reported number of security "
+"vulnerabilities for each installed app. More information on the "
+"vulnerabilities can be found on the Debian Security Bug Tracker."
+msgstr ""
+
+#: modules/security/templates/security_report.html:28
+msgid ""
+"For apps that provide services, the \"Sandboxed\" column shows whether "
+"sandboxing features are in use. Sandboxing mitigates the impact of a "
+"potentially compromised app to the rest of the system."
+msgstr ""
+
+#: modules/security/templates/security_report.html:35
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: modules/security/templates/security_report.html:45
+msgid "App Name"
+msgstr ""
+
+#: modules/security/templates/security_report.html:46
+msgid "Current Vulnerabilities"
+msgstr ""
+
+#: modules/security/templates/security_report.html:47
+msgid "Sandboxed"
+msgstr ""
+
+#: modules/security/templates/security_report.html:48
+msgid "Sandbox Coverage"
+msgstr ""
+
+#: modules/security/templates/security_report.html:58
+msgid "N/A"
+msgstr ""
+
+#: modules/security/templates/security_report.html:60
+msgid "Yes"
+msgstr ""
+
+#: modules/security/templates/security_report.html:62
+msgid "No"
+msgstr ""
+
+#: modules/security/templates/security_report.html:69
+msgid "Not running"
+msgstr ""
+
+#: modules/shaarli/__init__.py:18
+msgid "Shaarli allows you to save and share bookmarks."
+msgstr ""
+
+#: modules/shaarli/__init__.py:19
+msgid ""
+"Note that Shaarli only supports a single user account, which you will need "
+"to setup on the initial visit."
+msgstr ""
+
+#: modules/shaarli/__init__.py:36 modules/shaarli/manifest.py:25
+msgid "Shaarli"
+msgstr ""
+
+#: modules/shaarli/manifest.py:12
+msgid "Shaarlier"
+msgstr ""
+
+#: modules/shaarli/manifest.py:34
+msgid "Bookmarks"
+msgstr ""
+
+#: modules/shaarli/manifest.py:34
+msgid "Link blog"
+msgstr ""
+
+#: modules/shaarli/manifest.py:34
+msgid "Single user"
+msgstr ""
+
+#: modules/shadowsocks/__init__.py:18 modules/shadowsocksserver/__init__.py:18
+msgid ""
+"Shadowsocks is a tool for securely forwarding network requests to a remote "
+"server. It consists of two parts: (1) a Shadowsocks server, and (2) a "
+"Shadowsocks client with a SOCKS5 proxy."
+msgstr ""
+
+#: modules/shadowsocks/__init__.py:21 modules/shadowsocksserver/__init__.py:21
+msgid ""
+"Shadowsocks can be used to bypass Internet filtering and censorship. This "
+"requires that the Shadowsocks server is in a location where it can freely "
+"access the Internet, without filtering."
+msgstr ""
+
+#: modules/shadowsocks/__init__.py:26
+#, python-brace-format
+msgid ""
+"Your {box_name} can run a Shadowsocks client, that can connect to a "
+"Shadowsocks server. It will also run a SOCKS5 proxy. Local devices can "
+"connect to this proxy, and their data will be encrypted and proxied through "
+"the Shadowsocks server."
+msgstr ""
+
+#: modules/shadowsocks/__init__.py:31
+msgid ""
+"To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, "
+"browser or application to http://freedombox_address:1080/"
+msgstr ""
+
+#: modules/shadowsocks/__init__.py:50
+msgid "Shadowsocks Client"
+msgstr ""
+
+#: modules/shadowsocks/forms.py:25
+msgid "Server hostname or IP address"
+msgstr ""
+
+#: modules/shadowsocks/forms.py:29
+msgid "Server port number"
+msgstr ""
+
+#: modules/shadowsocks/forms.py:32
+msgid "Password used to encrypt data. Must match server password."
+msgstr ""
+
+#: modules/shadowsocks/forms.py:37
+msgid "Encryption method. Must match setting on server."
+msgstr ""
+
+#: modules/shadowsocks/manifest.py:20 modules/shadowsocksserver/manifest.py:19
+msgid "Encrypted tunnel"
+msgstr ""
+
+#: modules/shadowsocks/manifest.py:21
+msgid "Entry point"
+msgstr ""
+
+#: modules/shadowsocks/manifest.py:22 modules/shadowsocksserver/manifest.py:21
+msgid "Shadowsocks"
+msgstr ""
+
+#: modules/shadowsocksserver/__init__.py:26
+#, python-brace-format
+msgid ""
+"Your {box_name} can run a Shadowsocks server, that allows Shadowsocks "
+"clients to connect to it. Clients' data will be encrypted and proxied "
+"through this server."
+msgstr ""
+
+#: modules/shadowsocksserver/__init__.py:47
+msgid "Shadowsocks Server"
+msgstr ""
+
+#: modules/shadowsocksserver/forms.py:10 modules/shadowsocksserver/forms.py:11
+msgid "Recommended"
+msgstr ""
+
+#: modules/shadowsocksserver/forms.py:38
+msgid "Password used to encrypt data. Clients must use the same password."
+msgstr ""
+
+#: modules/shadowsocksserver/forms.py:43
+msgid "Encryption method. Clients must use the same setting."
+msgstr ""
+
+#: modules/shadowsocksserver/manifest.py:20
+msgid "Exit point"
+msgstr ""
+
+#: modules/sharing/__init__.py:17
+#, python-brace-format
+msgid ""
+"Sharing allows you to share files and folders on your {box_name} over the "
+"web with chosen groups of users."
+msgstr ""
+
+#: modules/sharing/forms.py:17
+msgid "Name of the share"
+msgstr ""
+
+#: modules/sharing/forms.py:19
+msgid ""
+"A lowercase alpha-numeric string that uniquely identifies a share. Example: "
+"media."
+msgstr ""
+
+#: modules/sharing/forms.py:23
+msgid "Path to share"
+msgstr ""
+
+#: modules/sharing/forms.py:24
+msgid "Disk path to a folder on this server that you intend to share."
+msgstr ""
+
+#: modules/sharing/forms.py:27
+msgid "Public share"
+msgstr ""
+
+#: modules/sharing/forms.py:28
+msgid "Make files in this folder available to anyone with the link."
+msgstr ""
+
+#: modules/sharing/forms.py:33
+msgid "User groups that can read the files in the share:"
+msgstr ""
+
+#: modules/sharing/forms.py:35
+msgid ""
+"Users of the selected user groups will be able to read the files in the "
+"share."
+msgstr ""
+
+#: modules/sharing/forms.py:51
+msgid "A share with this name already exists."
+msgstr ""
+
+#: modules/sharing/forms.py:62
+msgid "Shares should be either public or shared with at least one group"
+msgstr ""
+
+#: modules/sharing/manifest.py:19 modules/zoph/manifest.py:26
+msgid "Web sharing"
+msgstr ""
+
+#: modules/sharing/templates/sharing.html:18
+#: modules/sharing/templates/sharing.html:21
+msgid "Add share"
+msgstr ""
+
+#: modules/sharing/templates/sharing.html:26
+msgid "No shares currently configured."
+msgstr ""
+
+#: modules/sharing/templates/sharing.html:33
+msgid "Disk Path"
+msgstr ""
+
+#: modules/sharing/templates/sharing.html:34
+msgid "Shared Over"
+msgstr ""
+
+#: modules/sharing/templates/sharing.html:35
+msgid "With Groups"
+msgstr ""
+
+#: modules/sharing/templates/sharing.html:52
+msgid "public access"
+msgstr ""
+
+#: modules/sharing/views.py:39
+msgid "Share added."
+msgstr ""
+
+#: modules/sharing/views.py:44
+msgid "Add Share"
+msgstr ""
+
+#: modules/sharing/views.py:60
+msgid "Share edited."
+msgstr ""
+
+#: modules/sharing/views.py:65
+msgid "Edit Share"
+msgstr ""
+
+#: modules/sharing/views.py:96
+msgid "Share deleted."
+msgstr ""
+
+#: modules/snapshot/__init__.py:18
+msgid ""
+"Snapshots allows creating and managing btrfs file system snapshots. These "
+"can be used to roll back the system to a previously known good state in case "
+"of unwanted changes to the system."
+msgstr ""
+
+#: modules/snapshot/__init__.py:22
+#, no-python-format
+msgid ""
+"Snapshots are taken periodically (called timeline snapshots) and also before "
+"and after a software installation. Older snapshots will be automatically "
+"cleaned up according to the settings below."
+msgstr ""
+
+#: modules/snapshot/__init__.py:25
+msgid ""
+"Snapshots currently work on btrfs file systems only and on the root "
+"partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. "
+msgstr ""
+
+#: modules/snapshot/__init__.py:50
+msgid "Storage Snapshots"
+msgstr ""
+
+#: modules/snapshot/forms.py:12
+msgid "Free Disk Space to Maintain"
+msgstr ""
+
+#: modules/snapshot/forms.py:13
+msgid ""
+"Maintain this percentage of free space on the disk. If free space falls "
+"below this value, older snapshots are removed until this much free space is "
+"regained. The default value is 30%."
+msgstr ""
+
+#: modules/snapshot/forms.py:20
+msgid "Timeline Snapshots"
+msgstr ""
+
+#: modules/snapshot/forms.py:21
+msgid ""
+"Enable or disable timeline snapshots (hourly, daily, monthly and yearly)."
+msgstr ""
+
+#: modules/snapshot/forms.py:26
+msgid "Software Installation Snapshots"
+msgstr ""
+
+#: modules/snapshot/forms.py:27
+msgid ""
+"Enable or disable snapshots before and after each software installation and "
+"update."
+msgstr ""
+
+#: modules/snapshot/forms.py:32
+msgid "Hourly Snapshots Limit"
+msgstr ""
+
+#: modules/snapshot/forms.py:33
+msgid "Keep a maximum of this many hourly snapshots."
+msgstr ""
+
+#: modules/snapshot/forms.py:36
+msgid "Daily Snapshots Limit"
+msgstr ""
+
+#: modules/snapshot/forms.py:37
+msgid "Keep a maximum of this many daily snapshots."
+msgstr ""
+
+#: modules/snapshot/forms.py:40
+msgid "Weekly Snapshots Limit"
+msgstr ""
+
+#: modules/snapshot/forms.py:41
+msgid "Keep a maximum of this many weekly snapshots."
+msgstr ""
+
+#: modules/snapshot/forms.py:44
+msgid "Monthly Snapshots Limit"
+msgstr ""
+
+#: modules/snapshot/forms.py:45
+msgid "Keep a maximum of this many monthly snapshots."
+msgstr ""
+
+#: modules/snapshot/forms.py:48
+msgid "Yearly Snapshots Limit"
+msgstr ""
+
+#: modules/snapshot/forms.py:49
+msgid ""
+"Keep a maximum of this many yearly snapshots. The default value is 0 (keep "
+"no yearly snapshot)."
+msgstr ""
+
+#: modules/snapshot/manifest.py:14
+msgid "Periodic"
+msgstr ""
+
+#: modules/snapshot/manifest.py:14
+msgid "Known good state"
+msgstr ""
+
+#: modules/snapshot/manifest.py:14
+msgid "Btrfs"
+msgstr ""
+
+#: modules/snapshot/templates/snapshot_delete_selected.html:12
+msgid "Delete the following snapshots permanently?"
+msgstr ""
+
+#: modules/snapshot/templates/snapshot_delete_selected.html:17
+#: modules/snapshot/templates/snapshot_manage.html:32
+#: modules/snapshot/templates/snapshot_rollback.html:25
+msgid "Number"
+msgstr ""
+
+#: modules/snapshot/templates/snapshot_delete_selected.html:18
+#: modules/snapshot/templates/snapshot_manage.html:33
+#: modules/snapshot/templates/snapshot_rollback.html:26
+msgid "Date"
+msgstr ""
+
+#: modules/snapshot/templates/snapshot_delete_selected.html:42
+#: modules/snapshot/templates/snapshot_manage.html:25
+#: modules/snapshot/views.py:197
+msgid "Delete Snapshots"
+msgstr ""
+
+#: modules/snapshot/templates/snapshot_manage.html:22
+msgid "Create Snapshot"
+msgstr ""
+
+#: modules/snapshot/templates/snapshot_manage.html:35
+msgid "Rollback"
+msgstr ""
+
+#: modules/snapshot/templates/snapshot_manage.html:45
+msgid "will be used at next boot"
+msgstr ""
+
+#: modules/snapshot/templates/snapshot_manage.html:50
+msgid "in use"
+msgstr ""
+
+#: modules/snapshot/templates/snapshot_manage.html:59
+#, python-format
+msgid "Rollback to snapshot #%(number)s"
+msgstr ""
+
+#: modules/snapshot/templates/snapshot_not_supported.html:16
+#, python-format
+msgid ""
+"You have a filesystem of type %(fs_type)s. Snapshots are "
+"currently only available on %(types_supported)s filesystems."
+msgstr ""
+
+#: modules/snapshot/templates/snapshot_rollback.html:12
+msgid "Roll back the system to this snapshot?"
+msgstr ""
+
+#: modules/snapshot/templates/snapshot_rollback.html:15
+msgid ""
+"A new snapshot with the current state of the file system will be "
+"automatically created. You will be able to undo a rollback by reverting to "
+"the newly created snapshot."
+msgstr ""
+
+#: modules/snapshot/templates/snapshot_rollback.html:44
+#, python-format
+msgid "Rollback to Snapshot #%(number)s"
+msgstr ""
+
+#: modules/snapshot/views.py:24
+msgid "manually created"
+msgstr ""
+
+#: modules/snapshot/views.py:25
+msgid "timeline"
+msgstr ""
+
+#: modules/snapshot/views.py:26
+msgid "apt"
+msgstr ""
+
+#: modules/snapshot/views.py:36
+msgid "Manage Snapshots"
+msgstr ""
+
+#: modules/snapshot/views.py:96
+msgid "Created snapshot."
+msgstr ""
+
+#: modules/snapshot/views.py:160
+msgid "Configuration update failed."
+msgstr ""
+
+#: modules/snapshot/views.py:184
+msgid "Deleted selected snapshots"
+msgstr ""
+
+#: modules/snapshot/views.py:186
+msgid "Deleting snapshot failed."
+msgstr ""
+
+#: modules/snapshot/views.py:189
+msgid "Snapshot is currently in use. Please try again later."
+msgstr ""
+
+#: modules/snapshot/views.py:208
+#, python-brace-format
+msgid "Rolled back to snapshot #{number}."
+msgstr ""
+
+#: modules/snapshot/views.py:211
+msgid "The system must be restarted to complete the rollback."
+msgstr ""
+
+#: modules/snapshot/views.py:221
+msgid "Rollback to Snapshot"
+msgstr ""
+
+#: modules/sogo/__init__.py:21
+msgid ""
+"SOGo is a groupware server that provides a rich web interface for email, "
+"calendar, tasks, and contacts. Calendar, tasks, and contacts can also be "
+"accessed with various mobile and desktop applications using the CalDAV and "
+"CardDAV standards."
+msgstr ""
+
+#: modules/sogo/__init__.py:26
+#, python-brace-format
+msgid ""
+"Webmail works with the Postfix/Dovecot email "
+"server app to retrieve, manage, and send email."
+msgstr ""
+
+#: modules/sogo/__init__.py:30
+#, python-brace-format
+msgid ""
+"All users on {box_name} can login into and use SOGo. Mails delivered to "
+"their mailboxes by the email server app can be read and new mail can be sent "
+"out."
+msgstr ""
+
+#: modules/sogo/__init__.py:48 modules/sogo/manifest.py:11
+msgid "SOGo"
+msgstr ""
+
+#: modules/sogo/manifest.py:19
+msgid "Thunderbird + SOGo connector"
+msgstr ""
+
+#: modules/sogo/manifest.py:71
+msgid "Webmail"
+msgstr ""
+
+#: modules/sogo/manifest.py:74
+msgid "Address book"
+msgstr ""
+
+#: modules/ssh/__init__.py:22
+msgid ""
+"A Secure Shell server uses the secure shell protocol to accept connections "
+"from remote computers. An authorized remote computer can perform "
+"administration tasks, copy files or run other services using such "
+"connections."
+msgstr ""
+
+#: modules/ssh/__init__.py:42
+msgid "Secure Shell Server"
+msgstr ""
+
+#: modules/ssh/__init__.py:75
+msgid "Remotely login using Secure Shell (SSH)"
+msgstr ""
+
+#: modules/ssh/forms.py:13
+msgid "Disable password authentication"
+msgstr ""
+
+#: modules/ssh/forms.py:14
+msgid ""
+"Improves security by preventing password guessing. Ensure that you have "
+"setup SSH keys in your administrator user account before enabling this "
+"option."
+msgstr ""
+
+#: modules/ssh/forms.py:21
+msgid "Allow all users to login remotely"
+msgstr ""
+
+#: modules/ssh/forms.py:22
+msgid ""
+"Allow all users who have a valid account to login remotely via SSH. When "
+"disabled, only users of groups root, admin and freedombox-ssh can login via "
+"SSH."
+msgstr ""
+
+#: modules/ssh/manifest.py:22
+msgid "SSH"
+msgstr ""
+
+#: modules/ssh/manifest.py:22
+msgid "Remote terminal"
+msgstr ""
+
+#: modules/ssh/manifest.py:22
+msgid "Fingerprints"
+msgstr ""
+
+#: modules/ssh/templates/ssh.html:11
+msgid "Server Fingerprints"
+msgstr ""
+
+#: modules/ssh/templates/ssh.html:14
+msgid ""
+"When connecting to the server, ensure that the fingerprint shown by the SSH "
+"client matches one of these fingerprints."
+msgstr ""
+
+#: modules/ssh/templates/ssh.html:24
+msgid "Algorithm"
+msgstr ""
+
+#: modules/ssh/templates/ssh.html:25
+msgid "Fingerprint"
+msgstr ""
+
+#: modules/sso/__init__.py:27
+msgid "Single Sign On"
+msgstr ""
+
+#: modules/sso/forms.py:28
+msgid "Enter the letters in the image to proceed to the login page"
+msgstr ""
+
+#: modules/sso/templates/captcha.html:20
+msgid "Proceed to Login"
+msgstr ""
+
+#: modules/sso/templates/login.html:23
+msgid "Login"
+msgstr ""
+
+#: modules/sso/views.py:86
+msgid "Logged out successfully."
+msgstr ""
+
+#: modules/storage/__init__.py:24
+#, python-brace-format
+msgid ""
+"This module allows you to manage storage media attached to your {box_name}. "
+"You can view the storage media currently in use, mount and unmount removable "
+"media, expand the root partition etc."
+msgstr ""
+
+#: modules/storage/__init__.py:227
+#, python-brace-format
+msgid "{disk_size:.1f} bytes"
+msgstr ""
+
+#: modules/storage/__init__.py:231
+#, python-brace-format
+msgid "{disk_size:.1f} KiB"
+msgstr ""
+
+#: modules/storage/__init__.py:235
+#, python-brace-format
+msgid "{disk_size:.1f} MiB"
+msgstr ""
+
+#: modules/storage/__init__.py:239
+#, python-brace-format
+msgid "{disk_size:.1f} GiB"
+msgstr ""
+
+#: modules/storage/__init__.py:242
+#, python-brace-format
+msgid "{disk_size:.1f} TiB"
+msgstr ""
+
+#: modules/storage/__init__.py:254
+msgid "The operation failed."
+msgstr ""
+
+#: modules/storage/__init__.py:256
+msgid "The operation was cancelled."
+msgstr ""
+
+#: modules/storage/__init__.py:258
+msgid "The device is already unmounting."
+msgstr ""
+
+#: modules/storage/__init__.py:260
+msgid "The operation is not supported due to missing driver/tool support."
+msgstr ""
+
+#: modules/storage/__init__.py:263
+msgid "The operation timed out."
+msgstr ""
+
+#: modules/storage/__init__.py:265
+msgid "The operation would wake up a disk that is in a deep-sleep state."
+msgstr ""
+
+#: modules/storage/__init__.py:268
+msgid "Attempting to unmount a device that is busy."
+msgstr ""
+
+#: modules/storage/__init__.py:270
+msgid "The operation has already been cancelled."
+msgstr ""
+
+#: modules/storage/__init__.py:272 modules/storage/__init__.py:274
+#: modules/storage/__init__.py:276
+msgid "Not authorized to perform the requested operation."
+msgstr ""
+
+#: modules/storage/__init__.py:278
+msgid "The device is already mounted."
+msgstr ""
+
+#: modules/storage/__init__.py:280
+msgid "The device is not mounted."
+msgstr ""
+
+#: modules/storage/__init__.py:282
+msgid "Not permitted to use the requested option."
+msgstr ""
+
+#: modules/storage/__init__.py:284
+msgid "The device is mounted by another user."
+msgstr ""
+
+#: modules/storage/__init__.py:314
+#, no-python-format, python-brace-format
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+
+#: modules/storage/__init__.py:316
+msgid "Low disk space"
+msgstr ""
+
+#: modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
+#: modules/storage/__init__.py:390
+#, no-python-format
+msgid ""
+"You cannot save configuration changes. Try rebooting the system. If the "
+"problem persists after a reboot, check the storage device for errors."
+msgstr ""
+
+#: modules/storage/__init__.py:393
+msgid "Read-only root filesystem"
+msgstr ""
+
+#: modules/storage/__init__.py:403
+msgid "Go to Power"
+msgstr ""
+
+#: modules/storage/__init__.py:447 modules/storage/tests/test_storage.py:405
+msgid "grub package is configured"
+msgstr ""
+
+#: modules/storage/forms.py:63
+msgid "Invalid directory name."
+msgstr ""
+
+#: modules/storage/forms.py:73
+msgid "Directory does not exist."
+msgstr ""
+
+#: modules/storage/forms.py:75
+msgid "Path is not a directory."
+msgstr ""
+
+#: modules/storage/forms.py:79
+msgid "Directory is not readable by the user."
+msgstr ""
+
+#: modules/storage/forms.py:82
+msgid "Directory is not writable by the user."
+msgstr ""
+
+#: modules/storage/forms.py:87
+msgid "Directory"
+msgstr ""
+
+#: modules/storage/forms.py:89
+msgid "Subdirectory (optional)"
+msgstr ""
+
+#: modules/storage/forms.py:136
+msgid "Share"
+msgstr ""
+
+#: modules/storage/forms.py:144
+msgid "Other directory (specify below)"
+msgstr ""
+
+#: modules/storage/manifest.py:9
+msgid "Disks"
+msgstr ""
+
+#: modules/storage/manifest.py:9
+msgid "Usage"
+msgstr ""
+
+#: modules/storage/manifest.py:9
+msgid "Auto-mount"
+msgstr ""
+
+#: modules/storage/manifest.py:9
+msgid "Expand partition"
+msgstr ""
+
+#: modules/storage/templates/storage.html:17
+msgid "The following storage devices are in use:"
+msgstr ""
+
+#: modules/storage/templates/storage.html:24
+msgid "Label"
+msgstr ""
+
+#: modules/storage/templates/storage.html:25
+msgid "Mount Point"
+msgstr ""
+
+#: modules/storage/templates/storage.html:27
+msgid "Used"
+msgstr ""
+
+#: modules/storage/templates/storage.html:77
+msgid "Partition Expansion"
+msgstr ""
+
+#: modules/storage/templates/storage.html:79
+#, python-format
+msgid ""
+"There is %(expandable_root_size)s of unallocated space available after your "
+"root partition. Root partition can be expanded to use this space. This "
+"will provide you additional free space to store your files."
+msgstr ""
+
+#: modules/storage/templates/storage.html:89
+#: modules/storage/templates/storage_expand.html:24 modules/storage/views.py:55
+msgid "Expand Root Partition"
+msgstr ""
+
+#: modules/storage/templates/storage.html:95
+msgid ""
+"Advanced storage operations such as disk partitioning and RAID management "
+"are provided by the Cockpit app."
+msgstr ""
+
+#: modules/storage/templates/storage_expand.html:14
+#, python-format
+msgid ""
+"Please backup your data before proceeding. After this operation, "
+"%(expandable_root_size)s of additional free space will be available in your "
+"root partition."
+msgstr ""
+
+#: modules/storage/views.py:67
+#, python-brace-format
+msgid "Error expanding partition: {exception}"
+msgstr ""
+
+#: modules/storage/views.py:70
+msgid "Partition expanded successfully."
+msgstr ""
+
+#: modules/storage/views.py:87
+#, python-brace-format
+msgid "{drive_vendor} {drive_model} can be safely unplugged."
+msgstr ""
+
+#: modules/storage/views.py:91
+msgid "Device can be safely unplugged."
+msgstr ""
+
+#: modules/storage/views.py:93
+msgid "Error ejecting device."
+msgstr ""
+
+#: modules/syncthing/__init__.py:23
+msgid ""
+"Syncthing is an application to synchronize files across multiple devices, e."
+"g. your desktop computer and mobile phone. Creation, modification, or "
+"deletion of files on one device will be automatically replicated on all "
+"other devices that also run Syncthing."
+msgstr ""
+
+#: modules/syncthing/__init__.py:28
+#, python-brace-format
+msgid ""
+"Running Syncthing on {box_name} provides an extra synchronization point for "
+"your data that is available most of the time, allowing your devices to "
+"synchronize more often. {box_name} runs a single instance of Syncthing that "
+"may be used by multiple users. Each user's set of devices may be "
+"synchronized with a distinct set of folders. The web interface on "
+"{box_name} is only available for users belonging to the \"admin\" or "
+"\"syncthing-access\" group."
+msgstr ""
+
+#: modules/syncthing/__init__.py:55
+msgid "Administer Syncthing application"
+msgstr ""
+
+#: modules/syncthing/__init__.py:59 modules/syncthing/manifest.py:12
+msgid "Syncthing"
+msgstr ""
+
+#: modules/tiddlywiki/__init__.py:25
+#, python-brace-format
+msgid ""
+"TiddlyWiki is an interactive application that runs entirely in the web "
+"browser. Each wiki is a self-contained HTML file stored on your {box_name}. "
+"Instead of writing long wiki pages, TiddlyWiki encourages you to write "
+"several short notes called Tiddlers and link them together into a dense "
+"graph."
+msgstr ""
+
+#: modules/tiddlywiki/__init__.py:30
+msgid ""
+"It is a versatile application with a wide variety of use cases - non-linear "
+"notebook, website, personal knowledge base, task and project management "
+"system, personal diary etc. Plugins can extend the functionality of "
+"TiddlyWiki. Encrypting individual tiddlers or password-protecting a wiki "
+"file is possible from within the application."
+msgstr ""
+
+#: modules/tiddlywiki/__init__.py:37
+#, python-brace-format
+msgid ""
+"TiddlyWiki is downloaded from {box_name} website and not from Debian. Wikis "
+"need to be upgraded to newer version manually."
+msgstr ""
+
+#: modules/tiddlywiki/__init__.py:46
+msgid "Create a new wiki or upload your existing wiki file to get started."
+msgstr ""
+
+#: modules/tiddlywiki/__init__.py:64 modules/tiddlywiki/manifest.py:9
+msgid "TiddlyWiki"
+msgstr ""
+
+#: modules/tiddlywiki/forms.py:32
+msgid "A TiddlyWiki file with .html file extension"
+msgstr ""
+
+#: modules/tiddlywiki/forms.py:35
+msgid "TiddlyWiki files must be in HTML format"
+msgstr ""
+
+#: modules/tiddlywiki/forms.py:37
+msgid "Upload an existing TiddlyWiki file from this computer."
+msgstr ""
+
+#: modules/tiddlywiki/manifest.py:22
+msgid "Journal"
+msgstr ""
+
+#: modules/tiddlywiki/manifest.py:23
+msgid "Digital garden"
+msgstr ""
+
+#: modules/tiddlywiki/manifest.py:24
+msgid "Zettelkasten"
+msgstr ""
+
+#: modules/tiddlywiki/templates/tiddlywiki_delete.html:18
+msgid ""
+"Hint: You can download a copy of this wiki from within "
+"TiddlyWiki before deleting it."
+msgstr ""
+
+#: modules/tor/__init__.py:34 modules/torproxy/__init__.py:30
+msgid ""
+"Tor is an anonymous communication system. You can learn more about it from "
+"the Tor Project website. For "
+"best protection when web surfing, the Tor Project recommends that you use "
+"the Tor Browser."
+msgstr ""
+
+#: modules/tor/__init__.py:40
+msgid ""
+"This app provides relay services to contribute to Tor network and help "
+"others overcome censorship."
+msgstr ""
+
+#: modules/tor/__init__.py:43
+#, python-brace-format
+msgid ""
+"This app provides an onion domain to expose {box_name} services via the Tor "
+"network. Using Tor browser, one can access {box_name} from the internet even "
+"when using an ISP that limits servers at home."
+msgstr ""
+
+#: modules/tor/__init__.py:63 modules/tor/manifest.py:61
+#: modules/torproxy/manifest.py:58
+msgid "Tor"
+msgstr ""
+
+#: modules/tor/__init__.py:77
+msgid "Tor Onion Service"
+msgstr ""
+
+#: modules/tor/__init__.py:82
+msgid "Tor Bridge Relay"
+msgstr ""
+
+#: modules/tor/__init__.py:140
+msgid "Tor relay port available"
+msgstr ""
+
+#: modules/tor/__init__.py:152
+msgid "Obfs3 transport registered"
+msgstr ""
+
+#: modules/tor/__init__.py:163
+msgid "Obfs4 transport registered"
+msgstr ""
+
+#: modules/tor/__init__.py:176
+msgid "Onion service is version 3"
+msgstr ""
+
+#: modules/tor/forms.py:33
+msgid ""
+"Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]"
+msgstr ""
+
+#: modules/tor/forms.py:76
+msgid "Use upstream bridges to connect to Tor network"
+msgstr ""
+
+#: modules/tor/forms.py:78
+msgid ""
+"When enabled, the bridges configured below will be used to connect to the "
+"Tor network. Use this option if your Internet Service Provider (ISP) blocks "
+"or censors connections to the Tor Network. This will disable relay modes."
+msgstr ""
+
+#: modules/tor/forms.py:83
+msgid "Upstream bridges"
+msgstr ""
+
+#: modules/tor/forms.py:85
+msgid ""
+"You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information "
+"here. Currently supported transports are none, obfs3, obfs4 and scamblesuit."
+msgstr ""
+
+#: modules/tor/forms.py:95
+msgid "Enable Tor relay"
+msgstr ""
+
+#: modules/tor/forms.py:96
+#, python-brace-format
+msgid ""
+"When enabled, your {box_name} will run a Tor relay and donate bandwidth to "
+"the Tor network. Do this if you have more than 2 megabits/s of upload and "
+"download bandwidth."
+msgstr ""
+
+#: modules/tor/forms.py:101
+msgid "Enable Tor bridge relay"
+msgstr ""
+
+#: modules/tor/forms.py:103
+msgid ""
+"When enabled, relay information is published in the Tor bridge database "
+"instead of public Tor relay database making it harder to censor this node. "
+"This helps others circumvent censorship."
+msgstr ""
+
+#: modules/tor/forms.py:108
+msgid "Enable Tor Onion Service"
+msgstr ""
+
+#: modules/tor/forms.py:110
+#, python-brace-format
+msgid ""
+"An onion service will allow {box_name} to provide selected services (such as "
+"wiki or chat) without revealing its location. Do not use this for strong "
+"anonymity yet."
+msgstr ""
+
+#: modules/tor/forms.py:125
+msgid "Specify at least one upstream bridge to use upstream bridges."
+msgstr ""
+
+#: modules/tor/manifest.py:15 modules/torproxy/manifest.py:14
+msgid "Tor Browser"
+msgstr ""
+
+#: modules/tor/manifest.py:31 modules/torproxy/manifest.py:30
+msgid "Orbot: Proxy with Tor"
+msgstr ""
+
+#: modules/tor/manifest.py:57
+msgid "Onion services"
+msgstr ""
+
+#: modules/tor/manifest.py:58
+msgid "Relay"
+msgstr ""
+
+#: modules/tor/manifest.py:59 modules/torproxy/manifest.py:56
+msgid "Anonymity network"
+msgstr ""
+
+#: modules/tor/templates/tor.html:23
+msgid "Onion Service"
+msgstr ""
+
+#: modules/tor/views.py:53 modules/torproxy/views.py:51
+msgid "Updating configuration"
+msgstr ""
+
+#: modules/tor/views.py:70 modules/torproxy/views.py:68
+#, python-brace-format
+msgid "Error configuring app: {error}"
+msgstr ""
+
+#: modules/torproxy/__init__.py:37
+#, python-brace-format
+msgid ""
+"This app provides a web proxy on your {box_name} for internal networks on "
+"TCP port 9050 using the SOCKS protocol. This can be used by various apps to "
+"access the internet via the Tor network. ISP censorship can be circumvented "
+"using upstream bridges."
+msgstr ""
+
+#: modules/torproxy/__init__.py:57
+msgid "Tor Proxy"
+msgstr ""
+
+#: modules/torproxy/__init__.py:81
+msgid "Tor Socks Proxy"
+msgstr ""
+
+#: modules/torproxy/__init__.py:154
+#, python-brace-format
+msgid "Access URL {url} on tcp{kind} via Tor"
+msgstr ""
+
+#: modules/torproxy/__init__.py:166
+#, python-brace-format
+msgid "Confirm Tor usage at {url} on tcp{kind}"
+msgstr ""
+
+#: modules/torproxy/forms.py:15
+msgid "Download software packages over Tor"
+msgstr ""
+
+#: modules/torproxy/forms.py:16
+msgid ""
+"When enabled, software will be downloaded over the Tor network for "
+"installations and upgrades. This adds a degree of privacy and security "
+"during software downloads."
+msgstr ""
+
+#: modules/transmission/__init__.py:25
+msgid "Transmission is a BitTorrent client with a web interface."
+msgstr ""
+
+#: modules/transmission/__init__.py:26
+msgid ""
+"BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is "
+"not anonymous."
+msgstr ""
+
+#: modules/transmission/__init__.py:28
+msgid "Please do not change the default port of the Transmission daemon."
+msgstr ""
+
+#: modules/transmission/__init__.py:30
+#, python-brace-format
+msgid ""
+"Compared to Deluge, Transmission is simpler and "
+"lightweight but is less customizable."
+msgstr ""
+
+#: modules/transmission/__init__.py:34
+#, python-brace-format
+msgid ""
+"It can be accessed by any user on {box_name} "
+"belonging to the bit-torrent group."
+msgstr ""
+
+#: modules/transmission/__init__.py:38
+#, python-brace-format
+msgid ""
+"In addition to the web interface, mobile and desktop apps can also be used "
+"to remotely control Transmission on {box_name}. To configure remote control "
+"apps, use the URL /transmission-remote/"
+"rpc."
+msgstr ""
+
+#: modules/transmission/__init__.py:44
+#, python-brace-format
+msgid ""
+"Samba shares can be set as the default download "
+"directory from the dropdown menu below."
+msgstr ""
+
+#: modules/transmission/__init__.py:48
+#, python-brace-format
+msgid ""
+"After a download has completed, you can also access your files using the Sharing app."
+msgstr ""
+
+#: modules/transmission/__init__.py:74 modules/transmission/manifest.py:8
+msgid "Transmission"
+msgstr ""
+
+#: modules/transmission/manifest.py:15
+msgid "Tremotesf"
+msgstr ""
+
+#: modules/ttrss/__init__.py:21
+msgid ""
+"Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to "
+"allow reading news from any location, while feeling as close to a real "
+"desktop application as possible."
+msgstr ""
+
+#: modules/ttrss/__init__.py:25
+#, python-brace-format
+msgid ""
+"When enabled, Tiny Tiny RSS can be accessed by any "
+"user belonging to the feed-reader group."
+msgstr ""
+
+#: modules/ttrss/__init__.py:30
+msgid ""
+"When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss or /tt-rss-app "
+"for connecting."
+msgstr ""
+
+#: modules/ttrss/__init__.py:50 modules/ttrss/manifest.py:34
+msgid "Tiny Tiny RSS"
+msgstr ""
+
+#: modules/ttrss/manifest.py:10
+msgid "TTRSS-Reader"
+msgstr ""
+
+#: modules/ttrss/manifest.py:25
+msgid "Geekttrss"
+msgstr ""
+
+#: modules/upgrades/__init__.py:34
+msgid "Check for and apply the latest software and security updates."
+msgstr ""
+
+#: modules/upgrades/__init__.py:35
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: modules/upgrades/__init__.py:67 modules/upgrades/__init__.py:128
+#: modules/upgrades/__init__.py:146 modules/upgrades/__init__.py:308
+msgid "Software Update"
+msgstr ""
+
+#: modules/upgrades/__init__.py:131
+msgid "FreedomBox Updated"
+msgstr ""
+
+#: modules/upgrades/__init__.py:141
+msgid "Run software update manually"
+msgstr ""
+
+#: modules/upgrades/__init__.py:143
+msgid ""
+"Automatic software update runs daily by default. For the first time, "
+"manually run it now."
+msgstr ""
+
+#: modules/upgrades/__init__.py:318
+#: modules/upgrades/templates/upgrades-dist-upgrade-notification.html:9
+#: modules/upgrades/templates/upgrades-dist-upgrade.html:11
+#: modules/upgrades/templates/upgrades_configure.html:16
+msgid "Distribution Update"
+msgstr ""
+
+#: modules/upgrades/__init__.py:396
+msgid "Check for package holds"
+msgstr ""
+
+#: modules/upgrades/forms.py:15
+msgid "Enable auto-update"
+msgstr ""
+
+#: modules/upgrades/forms.py:16
+msgid "When enabled, FreedomBox automatically updates once a day."
+msgstr ""
+
+#: modules/upgrades/forms.py:19
+msgid "Enable auto-update to next stable release"
+msgstr ""
+
+#: modules/upgrades/forms.py:20
+msgid ""
+"When enabled, FreedomBox will update to the next stable distribution release "
+"when it is available."
+msgstr ""
+
+#: modules/upgrades/forms.py:34
+#: modules/upgrades/templates/upgrades_configure.html:100
+msgid "Activate frequent feature updates (recommended)"
+msgstr ""
+
+#: modules/upgrades/manifest.py:10
+msgid "Reboots"
+msgstr ""
+
+#: modules/upgrades/manifest.py:10
+msgid "New features"
+msgstr ""
+
+#: modules/upgrades/templates/backports-firstboot.html:26
+msgid ""
+"It is strongly recommended to activate frequent feature updates. If not "
+"activated now, they can be activated later."
+msgstr ""
+
+#: modules/upgrades/templates/backports-firstboot.html:38
+msgid ""
+"Note: Once frequent feature updates are activated, they "
+"cannot be deactivated."
+msgstr ""
+
+#: modules/upgrades/templates/backports-firstboot.html:51
+msgid "Next"
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade-confirm.html:11
+msgid "Confirm Distribution Update?"
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade-confirm.html:21
+#, python-format
+msgid ""
+"You are about to update to the next distribution version before it has been "
+"released. Proceed only if you wish to help with beta testing of %(box_name)s "
+"functionality."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade-confirm.html:32
+msgid ""
+"Take a full backup of all apps and data before performing a distribution "
+"update."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade-confirm.html:38
+msgid ""
+"The process will take several hours. Most apps will be unavailable during "
+"this time."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade-confirm.html:44
+msgid ""
+"Don't interrupt the process by shutting down or interrupting power to the "
+"machine."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade-confirm.html:50
+msgid "If the process is interrupted, you should be able to continue it."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade-confirm.html:66
+msgid "Confirm & Start Distribution Update"
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade-notification.html:15
+msgid ""
+"Distribution update has started. This operation may take several hours. Most "
+"apps will be unavailable during this period. Don't interrupt the process by "
+"shutting down or interrupting power to the machine."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade-notification.html:21
+msgid "Distribution update has completed. Reboot the machine, if necessary."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade-notification.html:25
+#, python-format
+msgid ""
+"Distribution update will start soon. Take a backup of apps and data before "
+"then. See manual page for expected "
+"changes and transitions during the distribution upgrade."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade-notification.html:31
+#, python-format
+msgid ""
+"Distribution update will start in %(in_days)s days. Take a backup of apps "
+"and data before then. See manual page "
+"for expected changes and transitions during the distribution upgrade."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade-notification.html:42
+msgid "Go to Distribution Update"
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade-notification.html:46
+#: modules/upgrades/templates/upgrades-new-release.html:22
+#: templates/notifications.html:50 templates/operation-notification.html:23
+msgid "Dismiss"
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade.html:15
+#, python-format
+msgid ""
+"Your %(box_name)s will receive security updates, important fixes and some "
+"selected features with regular software updates. However, to provide a long "
+"software life cycle for %(box_name)s, the entire operating system will "
+"receive a major distribution update every two years or so. This will bring "
+"in major features and changes. Sometimes, old features will stop working. "
+"Please consult the manual for expected "
+"changes and transitions during a distribution upgrade. If you dislike these "
+"changes, you can keep each distribution for at least 5 years before updating."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade.html:34
+msgid ""
+"Distribution update is currently running. This operation may take several "
+"hours. Most apps will be unavailable during this period."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade.html:50
+msgid "Automatic updates are disabled."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade.html:54
+msgid "Distribution upgrades are disabled."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade.html:58
+msgid ""
+"You need to have at least 5 GB of free space available on primary disk to "
+"perform a distribution update."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade.html:65
+msgid "Your current distribution is mixed or not understood."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade.html:72
+msgid "Current Distribution:"
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade.html:74
+msgid "Unknown or mixed"
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade.html:77
+msgid "Rolling release distribution"
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade.html:84
+#, python-format
+msgid "Released: %(date)s."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade.html:91
+msgid "Next Stable Distribution:"
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade.html:93
+msgid "Unknown"
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade.html:99
+#, python-format
+msgid "Likely release: %(date)s."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade.html:107
+msgid "Next stable distribution is not available yet."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade.html:113
+#, python-format
+msgid ""
+"You are on a rolling release distribution. No distribution update is "
+"necessary. Thank you for helping test the %(box_name)s project. Please "
+"report any problems you notice."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade.html:121
+msgid ""
+"A previous run of distribution update may have been interrupted. Please re-"
+"run the distribution update."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade.html:128
+#, python-format
+msgid ""
+"A new stable distribution is available. Your %(box_name)s will be updated "
+"automatically in %(period)s. You may choose to update manually now, if you "
+"wish."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade.html:136
+#, python-format
+msgid ""
+"A new stable distribution is available. Your %(box_name)s will be updated "
+"automatically soon. You may choose to update manually now, if you wish."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade.html:144
+#, python-format
+msgid ""
+"You are on the latest stable distribution. This is recommended. However, if "
+"you wish to help beta test %(box_name)s functionality, you may update to "
+"next distribution manually. This setup may experience occational app "
+"failures until the next stable release."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade.html:157
+#: modules/upgrades/templates/upgrades-dist-upgrade.html:172
+msgid "Start Distribution Update"
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade.html:162
+msgid "Continue Distribution Update"
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-dist-upgrade.html:167
+msgid "Start Distribution Update (for testing)"
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-new-release.html:9
+#, python-format
+msgid "%(box_name)s updated"
+msgstr ""
+
+#: modules/upgrades/templates/upgrades-new-release.html:13
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades_configure.html:35
+#: modules/upgrades/templates/upgrades_configure.html:111
+msgid "Updating..."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades_configure.html:37
+#, python-format
+msgid "There is a new %(box_name)s version available."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades_configure.html:40
+msgid "Your Freedombox needs an update!"
+msgstr ""
+
+#: modules/upgrades/templates/upgrades_configure.html:52
+msgid ""
+"Frequent feature updates can be activated. Activating them is recommended."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades_configure.html:61
+msgid ""
+"Frequent feature updates cannot be activated. They may not be necessary on "
+"your distribution."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades_configure.html:88
+#, python-format
+msgid ""
+"Warning! Once frequent feature updates are activated, they "
+"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades_configure.html:105
+msgid "Manual Update"
+msgstr ""
+
+#: modules/upgrades/templates/upgrades_configure.html:125
+msgid ""
+"This may take a long time to complete. During an update, "
+"you cannot install apps. Also, this web interface may be temporarily "
+"unavailable and show an error. In that case, refresh the page to continue."
+msgstr ""
+
+#: modules/upgrades/templates/upgrades_configure.html:139
+msgid "Show recent update logs"
+msgstr ""
+
+#: modules/upgrades/views.py:72
+msgid "Error when configuring unattended-upgrades"
+msgstr ""
+
+#: modules/upgrades/views.py:117
+msgid "Started distribution update."
+msgstr ""
+
+#: modules/upgrades/views.py:153
+msgid "Upgrade process started."
+msgstr ""
+
+#: modules/upgrades/views.py:155
+msgid "Starting upgrade failed."
+msgstr ""
+
+#: modules/upgrades/views.py:165
+msgid "Frequent feature updates activated."
+msgstr ""
+
+#: modules/users/__init__.py:33
+msgid ""
+"Create and manage user accounts. These accounts serve as centralized "
+"authentication mechanism for most apps. Some apps further require a user "
+"account to be part of a group to authorize the user to access the app."
+msgstr ""
+
+#: modules/users/__init__.py:38
+#, python-brace-format
+msgid ""
+"Any user may login to {box_name} web interface to see a list of apps "
+"relevant to them in the home page. However, only users of the admin "
+"group may alter apps or system settings."
+msgstr ""
+
+#: modules/users/__init__.py:59
+msgid "Users and Groups"
+msgstr ""
+
+#: modules/users/__init__.py:85
+msgid "Access to all services and system settings"
+msgstr ""
+
+#: modules/users/__init__.py:137
+#, python-brace-format
+msgid "Check LDAP entry \"{search_item}\""
+msgstr ""
+
+#: modules/users/__init__.py:152
+#, python-brace-format
+msgid "Check nslcd config \"{key} {value}\""
+msgstr ""
+
+#: modules/users/__init__.py:182
+#, python-brace-format
+msgid "Check nsswitch config \"{database}\""
+msgstr ""
+
+#: modules/users/forms.py:36
+msgid "Username is taken or is reserved."
+msgstr ""
+
+#: modules/users/forms.py:71
+msgid ""
+"Optional. Used to send emails to reset password and important notifications."
+msgstr ""
+
+#: modules/users/forms.py:107
+msgid ""
+"Select which services should be available to the new user. The user will be "
+"able to log in to services that support single sign-on through LDAP, if they "
+"are in the appropriate group.
Users in the admin group will be "
+"able to log in to all services. They can also log in to the system through "
+"SSH and have administrative privileges (sudo)."
+msgstr ""
+
+#: modules/users/forms.py:125
+msgid "Enter a valid username."
+msgstr ""
+
+#: modules/users/forms.py:132
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: modules/users/forms.py:141
+msgid "Authorization Password"
+msgstr ""
+
+#: modules/users/forms.py:148
+#, python-brace-format
+msgid ""
+"Enter the password for user \"{user}\" to authorize account modifications."
+msgstr ""
+
+#: modules/users/forms.py:157
+msgid "Invalid password."
+msgstr ""
+
+#: modules/users/forms.py:213 modules/users/forms.py:439
+#, python-brace-format
+msgid "Creating LDAP user failed: {error}"
+msgstr ""
+
+#: modules/users/forms.py:225
+#, python-brace-format
+msgid "Failed to add new user to {group} group: {error}"
+msgstr ""
+
+#: modules/users/forms.py:241
+msgid "Authorized SSH Keys"
+msgstr ""
+
+#: modules/users/forms.py:243
+msgid ""
+"Setting an SSH public key will allow this user to securely log in to the "
+"system without using a password. You may enter multiple keys, one on each "
+"line. Blank lines and lines starting with # will be ignored."
+msgstr ""
+
+#: modules/users/forms.py:252
+msgid "Delete user"
+msgstr ""
+
+#: modules/users/forms.py:254
+msgid ""
+"Deleting the user account will also remove all the files related to the "
+"user. Deleting files can be avoided by setting the user account as inactive."
+msgstr ""
+
+#: modules/users/forms.py:305
+msgid "Failed to delete user."
+msgstr ""
+
+#: modules/users/forms.py:320
+msgid "Renaming LDAP user failed."
+msgstr ""
+
+#: modules/users/forms.py:331
+msgid "Failed to remove user from group."
+msgstr ""
+
+#: modules/users/forms.py:341
+msgid "Failed to add user to group."
+msgstr ""
+
+#: modules/users/forms.py:348
+msgid "Unable to set SSH keys."
+msgstr ""
+
+#: modules/users/forms.py:361
+msgid "Failed to change user status."
+msgstr ""
+
+#: modules/users/forms.py:402
+msgid "Changing LDAP user password failed."
+msgstr ""
+
+#: modules/users/forms.py:447
+#, python-brace-format
+msgid "Failed to add new user to admin group: {error}"
+msgstr ""
+
+#: modules/users/forms.py:470
+msgid "User account created, you are now logged in"
+msgstr ""
+
+#: modules/users/manifest.py:8
+msgid "Manage accounts"
+msgstr ""
+
+#: modules/users/manifest.py:8
+msgid "App permissions"
+msgstr ""
+
+#: modules/users/templates/users_change_password.html:11
+#, python-format
+msgid "Change Password for %(username)s"
+msgstr ""
+
+#: modules/users/templates/users_change_password.html:21
+msgid "Save Password"
+msgstr ""
+
+#: modules/users/templates/users_create.html:11
+#: modules/users/templates/users_create.html:19
+#: modules/users/templates/users_list.html:15
+#: modules/users/templates/users_list.html:17 modules/users/views.py:43
+msgid "Create User"
+msgstr ""
+
+#: modules/users/templates/users_firstboot.html:11
+msgid "Administrator Account"
+msgstr ""
+
+#: modules/users/templates/users_firstboot.html:15
+msgid ""
+"Choose a username and password to access this web interface. The password "
+"can be changed later. This user will be granted administrative privileges. "
+"Other users can be added later."
+msgstr ""
+
+#: modules/users/templates/users_firstboot.html:28
+msgid "Create Account"
+msgstr ""
+
+#: modules/users/templates/users_firstboot.html:37
+msgid "An administrator account already exists."
+msgstr ""
+
+#: modules/users/templates/users_firstboot.html:44
+msgid "The following administrator accounts exist in the system."
+msgstr ""
+
+#: modules/users/templates/users_firstboot.html:56
+#, python-format
+msgid ""
+"Delete these accounts from command line and refresh the page to create an "
+"account that is usable with %(box_name)s. On the command line run the "
+"command \"echo '{\"args\": [\"USERNAME\", \"PASSWORD\"], \"kwargs\": {}}' | "
+"sudo /usr/share/plinth/actions/actions users remove_user\". If an account is "
+"already usable with %(box_name)s, skip this step."
+msgstr ""
+
+#: modules/users/templates/users_firstboot.html:69
+msgid "Skip this step"
+msgstr ""
+
+#: modules/users/templates/users_list.html:11 modules/users/views.py:61
+msgid "Users"
+msgstr ""
+
+#: modules/users/templates/users_list.html:28
+#, python-format
+msgid "Edit user %(username)s"
+msgstr ""
+
+#: modules/users/templates/users_update.html:17
+#, python-format
+msgid "Edit User %(username)s"
+msgstr ""
+
+#: modules/users/templates/users_update.html:25
+#, python-format
+msgid ""
+"Use the change password form to "
+"change the password."
+msgstr ""
+
+#: modules/users/templates/users_update.html:37
+#: templates/language-selection.html:17
+msgid "Save Changes"
+msgstr ""
+
+#: modules/users/templates/users_update.html:46
+#, python-format
+msgid "Delete user %(username)s and all the user's files?"
+msgstr ""
+
+#: modules/users/templates/users_update.html:56
+msgid ""
+"Deleting a user account also removes all the files user's home directory. If "
+"you wish to keep these files, disable the user account instead."
+msgstr ""
+
+#: modules/users/templates/users_update.html:65
+msgid "Delete user and files"
+msgstr ""
+
+#: modules/users/templates/users_update.html:68
+msgid "Cancel"
+msgstr ""
+
+#: modules/users/views.py:41
+#, python-format
+msgid "User %(username)s created."
+msgstr ""
+
+#: modules/users/views.py:72
+#, python-format
+msgid "User %(username)s updated."
+msgstr ""
+
+#: modules/users/views.py:73
+msgid "Edit User"
+msgstr ""
+
+#: modules/users/views.py:111
+#, python-format
+msgid "User %(username)s deleted."
+msgstr ""
+
+#: modules/users/views.py:130
+msgid "Change Password"
+msgstr ""
+
+#: modules/users/views.py:131
+msgid "Password changed successfully."
+msgstr ""
+
+#: modules/wireguard/__init__.py:20
+msgid "WireGuard is a fast, modern, secure VPN tunnel."
+msgstr ""
+
+#: modules/wireguard/__init__.py:22
+#, python-brace-format
+msgid ""
+"It can be used to connect to a VPN provider which supports WireGuard, and to "
+"route all outgoing traffic from {box_name} through the VPN."
+msgstr ""
+
+#: modules/wireguard/__init__.py:26
+#, python-brace-format
+msgid ""
+"A second use case is to connect a mobile device to {box_name} while "
+"travelling. While connected to a public Wi-Fi network, all traffic can be "
+"securely relayed through {box_name}."
+msgstr ""
+
+#: modules/wireguard/forms.py:32
+msgid "Invalid key."
+msgstr ""
+
+#: modules/wireguard/forms.py:61 modules/wireguard/templates/wireguard.html:17
+#: modules/wireguard/templates/wireguard.html:77
+#: modules/wireguard/templates/wireguard_delete_server.html:24
+msgid "Public Key"
+msgstr ""
+
+#: modules/wireguard/forms.py:62
+msgid ""
+"Public key of the peer. Example: "
+"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ."
+msgstr ""
+
+#: modules/wireguard/forms.py:70
+msgid "Endpoint of the server"
+msgstr ""
+
+#: modules/wireguard/forms.py:71
+msgid ""
+"Domain name and port in the form \"ip:port\". Example: demo.wireguard."
+"com:12912 ."
+msgstr ""
+
+#: modules/wireguard/forms.py:76
+msgid "Public key of the server"
+msgstr ""
+
+#: modules/wireguard/forms.py:77
+msgid ""
+"Provided by the server operator, a long string of characters. Example: "
+"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ."
+msgstr ""
+
+#: modules/wireguard/forms.py:82
+msgid "Client IP address provided by server"
+msgstr ""
+
+#: modules/wireguard/forms.py:83
+msgid ""
+"IP address assigned to this machine on the VPN after connecting to the "
+"endpoint. This value is usually provided by the server operator. Example: "
+"192.168.0.10."
+msgstr ""
+
+#: modules/wireguard/forms.py:89
+msgid "Private key of this machine"
+msgstr ""
+
+#: modules/wireguard/forms.py:90
+msgid ""
+"Optional. New public/private keys are generated if left blank. Public key "
+"can then be provided to the server. This is the recommended way. However, "
+"some server operators insist on providing this. Example: "
+"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ."
+msgstr ""
+
+#: modules/wireguard/forms.py:98
+msgid "Pre-shared key"
+msgstr ""
+
+#: modules/wireguard/forms.py:99
+msgid ""
+"Optional. A shared secret key provided by the server to add an additional "
+"layer of security. Fill in only if provided. Example: "
+"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=."
+msgstr ""
+
+#: modules/wireguard/forms.py:105
+msgid "Use this connection to send all outgoing traffic"
+msgstr ""
+
+#: modules/wireguard/forms.py:107
+msgid "Typically checked for a VPN service through which all traffic is sent."
+msgstr ""
+
+#: modules/wireguard/manifest.py:45
+msgid "VPN client"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard.html:10
+msgid "As a Server"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard.html:12
+msgid "Peers allowed to connect to this server:"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard.html:18
+msgid "Allowed IPs"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard.html:19
+#: modules/wireguard/templates/wireguard.html:78
+msgid "Last Connected Time"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard.html:38
+#, python-format
+msgid "No peers configured to connect to this %(box_name)s yet."
+msgstr ""
+
+#: modules/wireguard/templates/wireguard.html:48
+#, python-format
+msgid "Public key for this %(box_name)s:"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard.html:54
+msgid "Not configured yet."
+msgstr ""
+
+#: modules/wireguard/templates/wireguard.html:59
+msgid "Add a new peer"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard.html:63 modules/wireguard/views.py:48
+msgid "Add Allowed Client"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard.html:67
+msgid "As a Client"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard.html:69
+#, python-format
+msgid "Servers that %(box_name)s will connect to:"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard.html:76
+#: modules/wireguard/templates/wireguard_delete_server.html:20
+msgid "Endpoint"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard.html:100
+msgid "No connections to remote servers are configured yet."
+msgstr ""
+
+#: modules/wireguard/templates/wireguard.html:110
+msgid "Add a new server"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard.html:114
+#: modules/wireguard/views.py:157
+msgid "Add Connection to Server"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard_add_client.html:19
+msgid "Add Client"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard_delete_client.html:14
+msgid "Are you sure that you want to delete this client?"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard_delete_server.html:14
+msgid "Are you sure that you want to delete this server?"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard_edit_client.html:19
+msgid "Update Client"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard_edit_server.html:19
+msgid "Update Connection"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard_show_client.html:12
+#, python-format
+msgid ""
+"%(box_name)s will allow this client to connect to it. Ensure that the client "
+"is configured with the following information."
+msgstr ""
+
+#: modules/wireguard/templates/wireguard_show_client.html:21
+msgid "Client public key:"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard_show_client.html:25
+msgid "IP address to use for client:"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard_show_client.html:29
+#: modules/wireguard/templates/wireguard_show_server.html:32
+msgid "Pre-shared key:"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard_show_client.html:33
+msgid "Server endpoints:"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard_show_client.html:41
+#: modules/wireguard/templates/wireguard_show_server.html:28
+msgid "Server public key:"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard_show_client.html:53
+#: modules/wireguard/templates/wireguard_show_server.html:52
+msgid "Data transmitted:"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard_show_client.html:57
+#: modules/wireguard/templates/wireguard_show_server.html:56
+msgid "Data received:"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard_show_client.html:61
+#: modules/wireguard/templates/wireguard_show_server.html:60
+msgid "Latest handshake:"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard_show_server.html:14
+#, python-format
+msgid ""
+"%(box_name)s will attempt to reach a WireGuard server with the following "
+"information. Ensure that the server is configured to allow %(box_name)s's "
+"public key and IP address."
+msgstr ""
+
+#: modules/wireguard/templates/wireguard_show_server.html:24
+msgid "Server endpoint:"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard_show_server.html:36
+msgid "Public key of this machine:"
+msgstr ""
+
+#: modules/wireguard/templates/wireguard_show_server.html:40
+msgid "IP address of this machine:"
+msgstr ""
+
+#: modules/wireguard/views.py:43
+msgid "Added new client."
+msgstr ""
+
+#: modules/wireguard/views.py:58 modules/wireguard/views.py:117
+msgid "Client with public key already exists"
+msgstr ""
+
+#: modules/wireguard/views.py:71
+msgid "Allowed Client"
+msgstr ""
+
+#: modules/wireguard/views.py:93
+msgid "Updated client."
+msgstr ""
+
+#: modules/wireguard/views.py:98
+msgid "Modify Client"
+msgstr ""
+
+#: modules/wireguard/views.py:131
+msgid "Delete Allowed Client"
+msgstr ""
+
+#: modules/wireguard/views.py:140
+msgid "Client deleted."
+msgstr ""
+
+#: modules/wireguard/views.py:142
+msgid "Client not found"
+msgstr ""
+
+#: modules/wireguard/views.py:152
+msgid "Added new server."
+msgstr ""
+
+#: modules/wireguard/views.py:173
+msgid "Connection to Server"
+msgstr ""
+
+#: modules/wireguard/views.py:191
+msgid "Updated server."
+msgstr ""
+
+#: modules/wireguard/views.py:196
+msgid "Modify Connection to Server"
+msgstr ""
+
+#: modules/wireguard/views.py:233
+msgid "Delete Connection to Server"
+msgstr ""
+
+#: modules/wireguard/views.py:253
+msgid "Server deleted."
+msgstr ""
+
+#: modules/wordpress/__init__.py:20
+msgid ""
+"WordPress is a popular way to create and manage websites and blogs. Content "
+"can be managed using a visual interface. Layout and functionality of the web "
+"pages can be customized. Appearance can be chosen using themes. "
+"Administration interface and produced web pages are suitable for mobile "
+"devices."
+msgstr ""
+
+#: modules/wordpress/__init__.py:26
+#, python-brace-format
+msgid ""
+"You need to run WordPress setup by visiting the app before making the site "
+"publicly available below. Setup must be run when accessing {box_name} with "
+"the correct domain name. Enable permalinks in administrator interface for "
+"better URLs to your pages and posts."
+msgstr ""
+
+#: modules/wordpress/__init__.py:31
+msgid ""
+"WordPress has its own user accounts. First administrator account is created "
+"during setup. Bookmark the admin page "
+"to reach administration interface in the future."
+msgstr ""
+
+#: modules/wordpress/__init__.py:35
+msgid ""
+"After a major version upgrade, you need to manually run database upgrade "
+"from administrator interface. Additional plugins or themes may be installed "
+"and upgraded at your own risk."
+msgstr ""
+
+#: modules/wordpress/__init__.py:53 modules/wordpress/manifest.py:6
+msgid "WordPress"
+msgstr ""
+
+#: modules/wordpress/forms.py:14
+msgid "Public access"
+msgstr ""
+
+#: modules/wordpress/forms.py:15
+msgid ""
+"Allow all visitors. Disabling allows only administrators to view the "
+"WordPress site or blog. Enable only after performing initial WordPress setup."
+msgstr ""
+
+#: modules/wordpress/manifest.py:26
+msgid "Content management system"
+msgstr ""
+
+#: modules/zoph/__init__.py:25
+#, python-brace-format
+msgid ""
+"Zoph manages your photo collection. Photos are stored on your {box_name}, "
+"under your control. Instead of focusing on galleries for public display, "
+"Zoph focuses on managing them for your own use, organizing them by who took "
+"them, where they were taken, and who is in them. Photos can be linked to "
+"multiple hierarchical albums and categories. It is easy to find all photos "
+"containing a person, or photos taken on a date, or photos taken at a "
+"location using search, map and calendar views. Individual photos can be "
+"shared with others by sending a direct link."
+msgstr ""
+
+#: modules/zoph/__init__.py:36
+#, python-brace-format
+msgid ""
+"The {box_name} user who setup Zoph will also become the administrator in "
+"Zoph. For additional users, accounts must be created both in {box_name} and "
+"in Zoph with the same user name."
+msgstr ""
+
+#: modules/zoph/__init__.py:57 modules/zoph/manifest.py:6
+msgid "Zoph"
+msgstr ""
+
+#: modules/zoph/forms.py:14
+msgid "Enable OpenStreetMap for maps"
+msgstr ""
+
+#: modules/zoph/forms.py:15
+msgid ""
+"When enabled, requests will be made to OpenStreetMap servers from user's "
+"browser. This impacts privacy."
+msgstr ""
+
+#: modules/zoph/manifest.py:26
+msgid "Photo"
+msgstr ""
+
+#: modules/zoph/manifest.py:26
+msgid "Organizer"
+msgstr ""
+
+#: modules/zoph/templates/zoph-pre-setup.html:15
+#: modules/zoph/templates/zoph-pre-setup.html:28
+msgid "Setup"
+msgstr ""
+
+#: modules/zoph/templates/zoph-pre-setup.html:18
+#, python-format
+msgid ""
+"User account %(username)s will become the administrator "
+"account for Zoph."
+msgstr ""
+
+#: network.py:31
+msgid "Generic"
+msgstr ""
+
+#: operation.py:120
+#, python-brace-format
+msgid "Error: {name}: {exception}"
+msgstr ""
+
+#: operation.py:123
+#, python-brace-format
+msgid "Waiting to start: {name}"
+msgstr ""
+
+#: operation.py:129
+#, python-brace-format
+msgid "Finished: {name}"
+msgstr ""
+
+#: package.py:213
+#, python-brace-format
+msgid "Package {package_expression} is not available for install"
+msgstr ""
+
+#: package.py:233
+#, python-brace-format
+msgid "Package {package_name} is the latest version ({latest_version})"
+msgstr ""
+
+#: package.py:427
+msgid "installing"
+msgstr ""
+
+#: package.py:429
+msgid "downloading"
+msgstr ""
+
+#: package.py:431
+msgid "media change"
+msgstr ""
+
+#: package.py:433
+#, python-brace-format
+msgid "configuration file: {file}"
+msgstr ""
+
+#: package.py:461 package.py:487
+msgid "Timeout waiting for package manager"
+msgstr ""
+
+#: setup.py:44
+msgid "Installing app"
+msgstr ""
+
+#: setup.py:46
+msgid "Updating app"
+msgstr ""
+
+#: setup.py:80
+#, python-brace-format
+msgid "Error installing app: {exception}"
+msgstr ""
+
+#: setup.py:82
+#, python-brace-format
+msgid "Error repairing app: {exception}"
+msgstr ""
+
+#: setup.py:84
+#, python-brace-format
+msgid "Error updating app: {exception}"
+msgstr ""
+
+#: setup.py:87
+msgid "App installed."
+msgstr ""
+
+#: setup.py:91
+msgid "App updated"
+msgstr ""
+
+#: setup.py:114
+msgid "Repairing app"
+msgstr ""
+
+#: setup.py:145
+#, python-brace-format
+msgid "Error running diagnostics: {error}"
+msgstr ""
+
+#: setup.py:158
+msgid "Skipping repair, no failed checks"
+msgstr ""
+
+#: setup.py:166
+#, python-brace-format
+msgid "Error repairing app: {error}"
+msgstr ""
+
+#: setup.py:172
+msgid "Re-running setup to complete repairs"
+msgstr ""
+
+#: setup.py:180
+msgid "App repaired."
+msgstr ""
+
+#: setup.py:184
+msgid "App repair completed with errors:\n"
+msgstr ""
+
+#: setup.py:204
+msgid "Uninstalling app"
+msgstr ""
+
+#: setup.py:220
+#, python-brace-format
+msgid "Error uninstalling app: {error}"
+msgstr ""
+
+#: setup.py:223
+msgid "App uninstalled."
+msgstr ""
+
+#: setup.py:590
+msgid "Updating app packages"
+msgstr ""
+
+#: templates/403.html:10
+msgid "403 Forbidden"
+msgstr ""
+
+#: templates/403.html:14
+#, python-format
+msgid "You don't have permission to access %(request_path)s on this server."
+msgstr ""
+
+#: templates/404.html:10
+#, python-format
+msgid "Page not found - %(box_name)s"
+msgstr ""
+
+#: templates/404.html:18
+msgid "404"
+msgstr ""
+
+#: templates/404.html:21
+#, python-format
+msgid "Requested page %(request_path)s was not found."
+msgstr ""
+
+#: templates/404.html:27
+msgid ""
+"If you believe this missing page should exist, please file a bug at the "
+"FreedomBox Service (Plinth) project issue tracker."
+msgstr ""
+
+#: templates/500.html:10
+msgid "500"
+msgstr ""
+
+#: templates/500.html:14
+#, python-format
+msgid ""
+"This is an internal error and not something you caused or can fix. Please "
+"report the error on the bug tracker so we can fix it. Also, please attach "
+"the status log to the bug report."
+msgstr ""
+
+#: templates/app-header.html:26
+msgid "Installation"
+msgstr ""
+
+#: templates/app.html:34
+#, python-format
+msgid "Service %(service_name)s is not running."
+msgstr ""
+
+#: templates/base.html:31
+msgid ""
+"FreedomBox is a personal server designed for privacy and data ownership. It "
+"is free software that lets you install and manage server apps with ease."
+msgstr ""
+
+#: templates/base.html:117
+msgid " Home"
+msgstr ""
+
+#: templates/base.html:125
+msgid " Apps"
+msgstr ""
+
+#: templates/base.html:134
+msgid " System"
+msgstr ""
+
+#: templates/base.html:173 templates/base.html:174
+msgid "Change password"
+msgstr ""
+
+#: templates/base.html:187 templates/base.html:188
+msgid "Shut down"
+msgstr ""
+
+#: templates/base.html:198 templates/base.html:236
+msgid "Log out"
+msgstr ""
+
+#: templates/base.html:207 templates/base.html:210
+msgid "Select language"
+msgstr ""
+
+#: templates/base.html:225 templates/base.html:227
+msgid "Log in"
+msgstr ""
+
+#: templates/clients-button.html:16
+msgid "Launch web client"
+msgstr ""
+
+#: templates/clients-button.html:25
+msgid "Client Apps"
+msgstr ""
+
+#: templates/clients.html:17
+msgid "Web"
+msgstr ""
+
+#: templates/clients.html:28
+msgid "Launch"
+msgstr ""
+
+#: templates/clients.html:53
+msgid "GNU/Linux"
+msgstr ""
+
+#: templates/clients.html:55
+msgid "Windows"
+msgstr ""
+
+#: templates/clients.html:57
+msgid "macOS"
+msgstr ""
+
+#: templates/clients.html:73
+msgid "Mobile"
+msgstr ""
+
+#: templates/clients.html:84
+msgid "Play Store"
+msgstr ""
+
+#: templates/clients.html:86
+msgid "F-Droid"
+msgstr ""
+
+#: templates/clients.html:88
+msgid "App Store"
+msgstr ""
+
+#: templates/clients.html:104
+msgid "Package"
+msgstr ""
+
+#: templates/clients.html:111
+msgid "Debian:"
+msgstr ""
+
+#: templates/clients.html:114
+msgid "Homebrew:"
+msgstr ""
+
+#: templates/clients.html:117
+msgid "RPM:"
+msgstr ""
+
+#: templates/error.html:10
+msgid "Error"
+msgstr ""
+
+#: templates/index.html:22
+#, python-format
+msgid ""
+"Enable some applications to add shortcuts to "
+"this page."
+msgstr ""
+
+#: templates/internal-zone.html:17
+#, python-format
+msgid ""
+"%(service_name)s is available only on internal networks or when the "
+"client is connected to %(box_name)s through VPN."
+msgstr ""
+
+#: templates/internal-zone.html:25
+msgid "Currently there are no network interfaces configured as internal."
+msgstr ""
+
+#: templates/internal-zone.html:30
+#, python-format
+msgid ""
+"Currently the following network interfaces are configured as internal: "
+"%(interface_list)s"
+msgstr ""
+
+#: templates/notifications-dropdown.html:11
+msgid "Notifications"
+msgstr ""
+
+#: templates/port-forwarding-info.html:8
+msgid "Port Forwarding"
+msgstr ""
+
+#: templates/port-forwarding-info.html:13
+#, python-format
+msgid ""
+"Your FreedomBox is not behind a router. No "
+"action is necessary."
+msgstr ""
+
+#: templates/port-forwarding-info.html:21
+#, python-format
+msgid ""
+"Your FreedomBox is behind a router and you "
+"are using the DMZ feature to forward all ports. No further router "
+"configuration is necessary."
+msgstr ""
+
+#: templates/port-forwarding-info.html:30
+#, python-format
+msgid ""
+"Your FreedomBox is behind a router and you "
+"are not using the DMZ feature. You will need to set up port forwarding on "
+"your router. You should forward the following ports for %(service_name)s:"
+msgstr ""
+
+#: templates/port-forwarding-info.html:42
+msgid "Service Name"
+msgstr ""
+
+#: templates/port-forwarding-info.html:43
+msgid "Protocol"
+msgstr ""
+
+#: templates/port-forwarding-info.html:44
+msgid "From Router/WAN Ports"
+msgstr ""
+
+#: templates/port-forwarding-info.html:45
+#, python-format
+msgid "To %(box_name)s Ports"
+msgstr ""
+
+#: templates/setup.html:19
+msgid "Application installed."
+msgstr ""
+
+#: templates/setup.html:26
+msgid "Install this application?"
+msgstr ""
+
+#: templates/setup.html:30
+msgid "This application needs an update. Update now?"
+msgstr ""
+
+#: templates/setup.html:46
+msgid "This application is currently not available in your distribution."
+msgstr ""
+
+#: templates/setup.html:50
+msgid "Check again"
+msgstr ""
+
+#: templates/setup.html:61
+msgid ""
+"Conflicting Packages: Some packages installed on the system "
+"conflict with the installation of this app. The following packages will be "
+"removed if you proceed:"
+msgstr ""
+
+#: templates/setup.html:80
+msgid "Update"
+msgstr ""
+
+#: templates/tags.html:24
+msgid "Search with tags"
+msgstr ""
+
+#: templates/tags.html:37
+msgid "Clear all tags"
+msgstr ""
+
+#: templates/toolbar.html:39 templates/toolbar.html:40
+msgid "Backup"
+msgstr ""
+
+#: templates/toolbar.html:53
+msgid "Re-run setup"
+msgstr ""
+
+#: templates/toolbar.html:59 templates/toolbar.html:60
+#: templates/uninstall.html:30
+msgid "Uninstall"
+msgstr ""
+
+#: templates/uninstall.html:11
+#, python-format
+msgid "Uninstall App %(app_name)s?"
+msgstr ""
+
+#: templates/uninstall.html:17
+msgid ""
+"All app data and configuration will be permanently lost. App may be "
+"installed freshly again."
+msgstr ""
+
+#: views.py:84
+msgid "Here"
+msgstr ""
+
+#: views.py:414
+msgid "Setting unchanged"
+msgstr ""
+
+#: views.py:647
+#, python-brace-format
+msgid "before uninstall of {app_id}"
+msgstr ""
+
+#: web_framework.py:122
+msgid "Gujarati"
+msgstr ""
From e0c5d042d584eb0e0fe030d686a31b66189ad59d Mon Sep 17 00:00:00 2001
From: Torra-Merin
Date: Fri, 2 May 2025 13:02:52 +0200
Subject: [PATCH 12/16] Translated using Weblate (Catalan)
Currently translated at 9.6% (179 of 1854 strings)
---
plinth/locale/ca/LC_MESSAGES/django.po | 394 +++++++++++++++----------
1 file changed, 242 insertions(+), 152 deletions(-)
diff --git a/plinth/locale/ca/LC_MESSAGES/django.po b/plinth/locale/ca/LC_MESSAGES/django.po
index edae0451f..e45fcf186 100644
--- a/plinth/locale/ca/LC_MESSAGES/django.po
+++ b/plinth/locale/ca/LC_MESSAGES/django.po
@@ -8,160 +8,170 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-21 20:08-0400\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
+"PO-Revision-Date: 2025-05-02 22:04+0000\n"
+"Last-Translator: Torra-Merin \n"
+"Language-Team: Catalan \n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 5.12-dev\n"
#: config.py:103
#, python-brace-format
msgid "Static configuration {etc_path} is setup properly"
-msgstr ""
+msgstr "La configuració estàtica {etc_path} s'ha establert correctament"
#: context_processors.py:21 views.py:168
msgid "FreedomBox"
-msgstr ""
+msgstr "FreedomBox"
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
-msgstr ""
+msgstr "El servei {service_name} està en marxa"
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
-msgstr ""
+msgstr "Escoltant a {kind} port {listen_address}:{port}"
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
-msgstr ""
+msgstr "Escoltant a {kind} port {port}"
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
-msgstr ""
+msgstr "Connecta't a {host}:{port}"
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
-msgstr ""
+msgstr "No s'ha pogut connectar a {host}:{port}"
#: forms.py:36
msgid "Backup app before uninstall"
-msgstr ""
+msgstr "Fes una còpia de seguretat de l'aplicació abans de desinstal·lar-la"
#: forms.py:37
msgid "Restoring from the backup will restore app data."
msgstr ""
+"La recuperació d'una còpia de seguretat restaurarà les dades de l'aplicació."
#: forms.py:39
msgid "Repository to backup to"
-msgstr ""
+msgstr "Repositori des d'on recuperar"
#: forms.py:64
msgid "Select a domain name to be used with this application"
-msgstr ""
+msgstr "Selecciona un nom de domini per utilitzar-lo amb aquesta aplicació"
#: forms.py:66
msgid ""
"Warning! The application may not work properly if domain name is changed "
"later."
msgstr ""
+"Compte! L'aplicació podria no funcionar correctament si el nom del domini es "
+"canvia més tard."
#: forms.py:80 modules/coturn/forms.py:31 modules/mumble/forms.py:21
msgid "TLS domain"
-msgstr ""
+msgstr "Domini TLS"
#: forms.py:82 modules/coturn/forms.py:33 modules/mumble/forms.py:23
msgid ""
"Select a domain to use TLS with. If the list is empty, please configure at "
"least one domain with certificates."
msgstr ""
+"Selecciona un domini amb el que utilitzar TLS. Si la llista és buida, "
+"configura com a mínim un domini amb certificats si us plau."
#: forms.py:92
msgid "Language"
-msgstr ""
+msgstr "Llengua"
#: forms.py:93
msgid "Language to use for presenting this web interface"
-msgstr ""
+msgstr "Llengua que s'utilitzarà per presentar aquesta interfície web"
#: forms.py:100
msgid "Use the language preference set in the browser"
-msgstr ""
+msgstr "Utilitza la configuració de llengua del navegador"
#: menu.py:116 templates/base.html:120
msgid "Home"
-msgstr ""
+msgstr "Inici"
#: menu.py:117 templates/base.html:129
msgid "Apps"
-msgstr ""
+msgstr "Aplicacions"
#: menu.py:119 menu.py:126 templates/base.html:138
msgid "System"
-msgstr ""
+msgstr "Sistema"
#: menu.py:122
msgid "Visibility"
-msgstr ""
+msgstr "Visibilitat"
#: menu.py:124
msgid "Data"
-msgstr ""
+msgstr "Dades"
#: menu.py:128 modules/networks/templates/connection_show.html:274
#: modules/security/__init__.py:35 modules/upgrades/manifest.py:10
msgid "Security"
-msgstr ""
+msgstr "Seguretat"
#: menu.py:130
msgid "Administration"
-msgstr ""
+msgstr "Administració"
#: middleware.py:134
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
+"Segurament el sistema es troba sota molta càrrega. Si us plau, intenta-ho "
+"més tard."
#: middleware.py:147
#, python-brace-format
msgid "Page not found: {url}"
-msgstr ""
+msgstr "Pàgina no trobada: {url}"
#: middleware.py:150
msgid "Error running operation."
-msgstr ""
+msgstr "Error al intentar la operació."
#: middleware.py:152
msgid "Error loading page."
-msgstr ""
+msgstr "Error al carregar la pàgina."
#: modules/apache/__init__.py:32
msgid "Apache HTTP Server"
-msgstr ""
+msgstr "Servidor HTTP d'Apache"
#: modules/apache/__init__.py:46
msgid "Web Server"
-msgstr ""
+msgstr "Servidor Web"
#: modules/apache/__init__.py:52
#, python-brace-format
msgid "{box_name} Web Interface (Plinth)"
-msgstr ""
+msgstr "{box_name} Interfície Web (Plinth)"
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
-msgstr ""
+msgstr "Accedeix a l'URL {url} a tcp{kind}"
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
-msgstr ""
+msgstr "Accedeix a l'URL {url}"
#: modules/avahi/__init__.py:24
#, python-brace-format
@@ -173,52 +183,62 @@ msgid ""
"disabled to improve security especially when connecting to a hostile local "
"network."
msgstr ""
+"La descoberta de serveis permet a altres dispositius de la xarxa que "
+"descobreixin la teva {box_name} i els serveis que té. També permet a la teva "
+"{box_name} descobrir altres serveis que funcionen a la teva xarxa local. La "
+"descoberta de serveis no és essencial i només funciona amb xarxes internes. "
+"Pot ser deshabilitada per augmentar la seguretat, especialment si et "
+"connectes a una xarxa local hostil."
#: modules/avahi/__init__.py:47
msgid "Service Discovery"
-msgstr ""
+msgstr "Descoberta de Serveis"
#: modules/avahi/__init__.py:62
msgid "Local Network Domain"
-msgstr ""
+msgstr "Domini de la Xarxa Local"
#: modules/avahi/manifest.py:14
msgid "Auto-discovery"
-msgstr ""
+msgstr "Descobriment Automàtic"
#: modules/avahi/manifest.py:14 modules/backups/manifest.py:17
msgid "Local"
-msgstr ""
+msgstr "Local"
#: modules/avahi/manifest.py:14
msgid "mDNS"
-msgstr ""
+msgstr "mDNS"
#: modules/backups/__init__.py:24
msgid "Backups allows creating and managing backup archives."
msgstr ""
+"Còpies de Seguretat permet crear i gestionar arxius de còpia de seguretat."
#: modules/backups/__init__.py:44 modules/backups/__init__.py:174
#: modules/backups/__init__.py:219
msgid "Backups"
-msgstr ""
+msgstr "Còpies de Seguretat"
#: modules/backups/__init__.py:171
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
msgstr ""
+"Activa una programació automàtica de còpies de seguretat per garantir la "
+"seguretat de les dades. Prefereix una ubicació de còpia de seguretat remota "
+"xifrada o un disc addicional connectat."
#: modules/backups/__init__.py:177
msgid "Enable a Backup Schedule"
-msgstr ""
+msgstr "Activa una programació de Còpies de Seguretat"
#: modules/backups/__init__.py:181 modules/backups/__init__.py:228
#: modules/privacy/__init__.py:84 modules/storage/__init__.py:326
#: modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
-msgstr ""
+msgstr "Ves a {app_name}"
#: modules/backups/__init__.py:216
#, python-brace-format
@@ -226,49 +246,60 @@ msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
"succeed. The latest error is: {error_message}"
msgstr ""
+"Ha fallat una còpia de seguretat programada. Els darrers {error_count} "
+"intents de còpia de seguretat no han tingut èxit. L’últim error és: "
+"{error_message}"
#: modules/backups/__init__.py:224
msgid "Error During Backup"
-msgstr ""
+msgstr "Error al fer la Còpia de Seguretat"
#: modules/backups/forms.py:34
#, python-brace-format
msgid "{app} (No data to backup)"
-msgstr ""
+msgstr "{app} (No hi ha dades per fer una còpia de seguretat)"
#: modules/backups/forms.py:54
msgid "Enable scheduled backups"
-msgstr ""
+msgstr "Habilita les còpies de seguretat programades"
#: modules/backups/forms.py:55
msgid ""
"If enabled, a backup is taken every day, every week and every month. Older "
"backups are removed."
msgstr ""
+"Si està activat, es fa una còpia de seguretat cada dia, cada setmana i cada "
+"mes. Les còpies de seguretat antigues s’eliminen."
#: modules/backups/forms.py:59
msgid "Number of daily backups to keep"
-msgstr ""
+msgstr "Número de còpies de seguretat diàries a mantenir"
#: modules/backups/forms.py:60
msgid ""
"This many latest backups are kept and the rest are removed. A value of \"0\" "
"disables backups of this type. Triggered at specified hour every day."
msgstr ""
+"Es conserven aquest nombre de còpies de seguretat més recents i la resta s’"
+"eliminen. Un valor de «0» desactiva les còpies de seguretat d’aquest tipus. "
+"Es duen a terme cada dia a l’hora especificada."
#: modules/backups/forms.py:65
msgid "Number of weekly backups to keep"
-msgstr ""
+msgstr "Número de còpies de seguretat setmanals a mantenir"
#: modules/backups/forms.py:67
msgid ""
"This many latest backups are kept and the rest are removed. A value of \"0\" "
"disables backups of this type. Triggered at specified hour every Sunday."
msgstr ""
+"Es conserven aquest nombre de còpies de seguretat més recents i la resta s’"
+"eliminen. Un valor de «0» desactiva les còpies de seguretat d’aquest tipus. "
+"S’executa a l’hora especificada cada diumenge."
#: modules/backups/forms.py:72
msgid "Number of monthly backups to keep"
-msgstr ""
+msgstr "Número de còpies de seguretat mensuals a mantenir"
#: modules/backups/forms.py:74
msgid ""
@@ -276,28 +307,33 @@ msgid ""
"disables backups of this type. Triggered at specified hour first day of "
"every month."
msgstr ""
+"Es conserven aquest nombre de còpies de seguretat més recents i la resta s’"
+"eliminen. Un valor de «0» desactiva les còpies de seguretat d’aquest tipus. "
+"S’executa a l’hora especificada el primer dia de cada mes."
#: modules/backups/forms.py:79
msgid "Hour of the day to trigger backup operation"
-msgstr ""
+msgstr "Hora del dia per activar l'operació de còpia de seguretat"
#: modules/backups/forms.py:81
msgid ""
"In 24 hour format. Services may become temporarily unavailable while running "
"backup operation at this time of the day."
msgstr ""
+"En format de 24 hores. Els serveis poden quedar temporalment inaccessibles "
+"mentre s'executa l'operació de còpia de seguretat a aquesta hora del dia."
#: modules/backups/forms.py:85 modules/backups/forms.py:107
msgid "Included apps"
-msgstr ""
+msgstr "Aplicacions incloses"
#: modules/backups/forms.py:85 modules/backups/forms.py:107
msgid "Apps to include in the backup"
-msgstr ""
+msgstr "Aplicacions que s'inclouran a la còpia de seguretat"
#: modules/backups/forms.py:101
msgid "Repository"
-msgstr ""
+msgstr "Repositori"
#: modules/backups/forms.py:103
#: modules/backups/templates/backups_delete.html:17 modules/ikiwiki/forms.py:15
@@ -305,23 +341,23 @@ msgstr ""
#: modules/samba/templates/samba.html:66
#: modules/sharing/templates/sharing.html:32
msgid "Name"
-msgstr ""
+msgstr "Nom"
#: modules/backups/forms.py:104
msgid "(Optional) Set a name for this backup archive"
-msgstr ""
+msgstr "(Opcional) Tria un nom per aquest arxiu de còpia de seguretat"
#: modules/backups/forms.py:125
msgid "Select the apps you want to restore"
-msgstr ""
+msgstr "Selecciona les aplicacions que vols restaurar"
#: modules/backups/forms.py:141 modules/kiwix/forms.py:21
msgid "Upload File"
-msgstr ""
+msgstr "Penja un Fitxer"
#: modules/backups/forms.py:143
msgid "Backup files have to be in .tar.gz format"
-msgstr ""
+msgstr "Els arxius de còpia de seguretat han d'estar en un format .tar.gz"
#: modules/backups/forms.py:145
#, python-brace-format
@@ -330,105 +366,115 @@ msgid ""
"file previously downloaded from the result of a successful backup on a "
"{box_name}. It must have a .tar.gz extension."
msgstr ""
+"Selecciona el fitxer de còpia de seguretat per pujar des de l'ordinador "
+"local. Aquest ha de ser un fitxer prèviament descarregat dels resultats "
+"d'una còpia de seguretat exitosa en un {box_name}. Ha de tenir l'extensió "
+".tar.gz."
#: modules/backups/forms.py:154
msgid "Repository path format incorrect."
-msgstr ""
+msgstr "Camí del repositori en format incorrecte."
#: modules/backups/forms.py:161
#, python-brace-format
msgid "Invalid username: {username}"
-msgstr ""
+msgstr "Nom d'usuari incorrecte: {username}"
#: modules/backups/forms.py:171
#, python-brace-format
msgid "Invalid hostname: {hostname}"
-msgstr ""
+msgstr "Nom d'amfitrió no vàlid: {hostname}"
#: modules/backups/forms.py:175
#, python-brace-format
msgid "Invalid directory path: {dir_path}"
-msgstr ""
+msgstr "Ruta de directori no vàlida: {dir_path}"
#: modules/backups/forms.py:181 modules/letsencrypt/manifest.py:11
msgid "Encryption"
-msgstr ""
+msgstr "Encriptació"
#: modules/backups/forms.py:182
msgid ""
"\"Key in Repository\" means that a password-protected key is stored with the "
"backup."
msgstr ""
+"\"Clau al repositori\" significa que una clau protegida per contrasenya està "
+"emmagatzemada amb la còpia de seguretat."
#: modules/backups/forms.py:184
msgid "Key in Repository"
-msgstr ""
+msgstr "Clau al Repositori"
#: modules/backups/forms.py:184
#: modules/matrixsynapse/templates/matrix-synapse.html:67
#: modules/searx/forms.py:14
msgid "None"
-msgstr ""
+msgstr "Cap"
#: modules/backups/forms.py:186 modules/networks/forms.py:340
msgid "Passphrase"
-msgstr ""
+msgstr "Contrasenya"
#: modules/backups/forms.py:187
msgid "Passphrase; Only needed when using encryption."
-msgstr ""
+msgstr "Contrasenya; Només es necessita si s'utilitza encriptació."
#: modules/backups/forms.py:190
msgid "Confirm Passphrase"
-msgstr ""
+msgstr "Confirma la Contrasenya"
#: modules/backups/forms.py:190
msgid "Repeat the passphrase."
-msgstr ""
+msgstr "Repeteix la Contrasenya."
#: modules/backups/forms.py:201
msgid "The entered encryption passphrases do not match"
-msgstr ""
+msgstr "Les contrasenyes d'encriptació que s'han introduït no coincideixen"
#: modules/backups/forms.py:205
msgid "Passphrase is needed for encryption."
-msgstr ""
+msgstr "La contrasenya és necessària per a poder encriptar."
#: modules/backups/forms.py:240
msgid "Select Disk or Partition"
-msgstr ""
+msgstr "Selecciona un Disc o Partició"
#: modules/backups/forms.py:241
msgid "Backups will be stored in the directory FreedomBoxBackups"
-msgstr ""
+msgstr "Les còpies de seguretat es desaran al directori FreedomBoxBackups"
#: modules/backups/forms.py:250
msgid "SSH Repository Path"
-msgstr ""
+msgstr "Camí del Repositori SSH"
#: modules/backups/forms.py:251
msgid ""
"Path of a new or existing repository. Example: user@host:~/path/to/repo/"
"i>"
msgstr ""
+"Ruta d'un repositori nou o existent. Exemple: user@host:~/path/to/repo/"
+""
#: modules/backups/forms.py:255
msgid "SSH server password"
-msgstr ""
+msgstr "Contrasenya del Servidor SSH"
#: modules/backups/forms.py:256
msgid ""
"Password of the SSH Server.
SSH key-based authentication is not yet "
"possible."
msgstr ""
+"Contrasenya del servidor SSH.
L'autenticació mitjançant clau SSH encara "
+"no és possible."
#: modules/backups/forms.py:275
msgid "Remote backup repository already exists."
-msgstr ""
+msgstr "El repositori de còpies de seguretat remot ja existeix."
#: modules/backups/forms.py:281
msgid "Select verified SSH public key"
-msgstr ""
+msgstr "Selecciona la clau pública SSH verificada"
#: modules/backups/manifest.py:14
#: modules/backups/templates/backups_repository.html:92
@@ -436,121 +482,125 @@ msgstr ""
#: modules/backups/views.py:238 modules/snapshot/manifest.py:14
#: templates/toolbar.html:44 templates/toolbar.html:45
msgid "Restore"
-msgstr ""
+msgstr "Restaurar"
#: modules/backups/manifest.py:15
msgid "Encrypted"
-msgstr ""
+msgstr "Encriptat"
#: modules/backups/manifest.py:16
msgid "Schedules"
-msgstr ""
+msgstr "Programat"
#: modules/backups/manifest.py:18
msgid "Remote"
-msgstr ""
+msgstr "Remot"
#: modules/backups/manifest.py:19
msgid "App data"
-msgstr ""
+msgstr "Dades d'aplicació"
#: modules/backups/manifest.py:20
#: modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15
#: modules/miniflux/templates/miniflux.html:12
#: modules/snapshot/templates/snapshot.html:13 templates/app.html:52
msgid "Configuration"
-msgstr ""
+msgstr "Configuració"
#: modules/backups/manifest.py:21
msgid "Borg"
-msgstr ""
+msgstr "Borg"
#: modules/backups/privileged.py:34
msgid ""
"Connection refused - make sure you provided correct credentials and the "
"server is running."
msgstr ""
+"Connexió refusada: assegura't d'haver proporcionat les credencials correctes "
+"i que el servidor està en funcionament."
#: modules/backups/privileged.py:41
msgid "Connection refused"
-msgstr ""
+msgstr "Connexió rebutjada"
#: modules/backups/privileged.py:48
msgid "Repository not found"
-msgstr ""
+msgstr "Repositori no trobat"
#: modules/backups/privileged.py:53
msgid "Incorrect encryption passphrase"
-msgstr ""
+msgstr "Contrasenya d'encriptació incorrecta"
#: modules/backups/privileged.py:58
msgid "SSH access denied"
-msgstr ""
+msgstr "Accés SSH denegat"
#: modules/backups/privileged.py:64
msgid "Repository path is neither empty nor is an existing backups repository."
msgstr ""
+"La ruta del repositori no està buida ni és un repositori de còpies de "
+"seguretat existent."
#: modules/backups/privileged.py:77
msgid "An archive with given name already exists in the repository."
-msgstr ""
+msgstr "Ja existeix un arxiu amb aquest nom al repositori."
#: modules/backups/privileged.py:84
msgid "Archive with given name was not found in the repository."
-msgstr ""
+msgstr "No s'ha trobat cap arxiu amb aquest nom al repositori."
#: modules/backups/privileged.py:90
msgid "Backup system is busy with another operation."
-msgstr ""
+msgstr "El sistema de còpies de seguretat està ocupat amb una altra operació."
#: modules/backups/privileged.py:95
msgid "Not enough space left on the disk or remote location."
-msgstr ""
+msgstr "No hi ha prou espai disponible al disc o a la ubicació remota."
#: modules/backups/repository.py:94
msgid "Existing repository is not encrypted."
-msgstr ""
+msgstr "El repositori existent no està xifrat."
#: modules/backups/repository.py:289
#, python-brace-format
msgid "{box_name} storage"
-msgstr ""
+msgstr "Emmagatzematge de {box_name}"
#: modules/backups/templates/backups.html:17 modules/backups/views.py:124
msgid "Create a new backup"
-msgstr ""
+msgstr "Crea una còpia de seguretat nova"
#: modules/backups/templates/backups.html:21
msgid "Create Backup"
-msgstr ""
+msgstr "Crea una còpia de seguretat"
#: modules/backups/templates/backups.html:24
msgid "Upload and restore a backup archive"
-msgstr ""
+msgstr "Penja i restaura un arxiu de còpia de seguretat"
#: modules/backups/templates/backups.html:28
msgid "Upload and Restore"
-msgstr ""
+msgstr "Penja i restaura"
#: modules/backups/templates/backups.html:31
msgid "Add a backup location"
-msgstr ""
+msgstr "Afegeix una ubicació de còpia de seguretat"
#: modules/backups/templates/backups.html:35
msgid "Add Backup Location"
-msgstr ""
+msgstr "Afegeix ubicació de còpia de seguretat"
#: modules/backups/templates/backups.html:38
msgid "Add a remote backup location"
-msgstr ""
+msgstr "Afegeix una ubicació de còpia de seguretat remota"
#: modules/backups/templates/backups.html:42
msgid "Add Remote Backup Location"
-msgstr ""
+msgstr "Afegeix ubicació de còpia de seguretat remota"
#: modules/backups/templates/backups.html:46
msgid "Existing Backups"
-msgstr ""
+msgstr "Còpies de seguretat existents"
#: modules/backups/templates/backups_add_remote_repository.html:21
#: modules/backups/templates/backups_upload.html:28
@@ -573,7 +623,7 @@ msgstr ""
#: modules/users/templates/users_firstboot.html:34 templates/app.html:31
#: templates/messages.html:17 templates/setup.html:43 templates/setup.html:58
msgid "Caution:"
-msgstr ""
+msgstr "Precaució:"
#: modules/backups/templates/backups_add_remote_repository.html:24
#, python-format
@@ -582,74 +632,83 @@ msgid ""
"To restore a backup on a new %(box_name)s you need the SSH credentials and, "
"if chosen, the encryption passphrase."
msgstr ""
+"Les credencials per a aquest repositori estan emmagatzemades al teu "
+"%(box_name)s.
Per restaurar una còpia de seguretat en un nou %(box_name)"
+"s necessites les credencials SSH i, si s'ha escollit, la frase de pas de "
+"xifratge."
#: modules/backups/templates/backups_add_remote_repository.html:34
msgid "Create Location"
-msgstr ""
+msgstr "Crea una ubicació"
#: modules/backups/templates/backups_add_repository.html:19
#: modules/gitweb/views.py:51
msgid "Create Repository"
-msgstr ""
+msgstr "Crea un repositori"
#: modules/backups/templates/backups_delete.html:12
msgid "Delete this archive permanently?"
-msgstr ""
+msgstr "Vols eliminar aquest arxiu permanentment?"
#: modules/backups/templates/backups_delete.html:18
msgid "Time"
-msgstr ""
+msgstr "Temps"
#: modules/backups/templates/backups_delete.html:34
#, python-format
msgid "Delete Archive %(name)s"
-msgstr ""
+msgstr "Elimina l'arxiu %(name)s"
#: modules/backups/templates/backups_repository.html:22
msgid "This repository is encrypted"
-msgstr ""
+msgstr "Aquest repositori està encriptat"
#: modules/backups/templates/backups_repository.html:33
msgid "Schedule"
-msgstr ""
+msgstr "Programa"
#: modules/backups/templates/backups_repository.html:44
msgid "Unmount Location"
-msgstr ""
+msgstr "Desmuntar la ubicació"
#: modules/backups/templates/backups_repository.html:55
msgid "Mount Location"
-msgstr ""
+msgstr "Muntar la ubicació"
#: modules/backups/templates/backups_repository.html:66
msgid "Remove Backup Location. This will not delete the remote backup."
msgstr ""
+"Elimina ubicació de còpia de seguretat. Això no suprimirà la còpia de "
+"seguretat remota."
#: modules/backups/templates/backups_repository.html:88
msgid "Download"
-msgstr ""
+msgstr "Descarrega"
#: modules/backups/templates/backups_repository.html:114
msgid "No archives currently exist."
-msgstr ""
+msgstr "Actualment no existeixen arxius."
#: modules/backups/templates/backups_repository_remove.html:13
msgid "Are you sure that you want to remove this repository?"
-msgstr ""
+msgstr "Estàs segur que vols eliminar aquest repositori?"
#: modules/backups/templates/backups_repository_remove.html:19
msgid ""
"The remote repository will not be deleted. This just removes the repository "
"from the listing on the backup page, you can add it again later on."
msgstr ""
+"El repositori remot no serà eliminat. Això només elimina el repositori de la "
+"llista de la pàgina de còpies de seguretat; podràs afegir-lo de nou més "
+"endavant."
#: modules/backups/templates/backups_repository_remove.html:31
msgid "Remove Location"
-msgstr ""
+msgstr "Eliminar ubicació"
#: modules/backups/templates/backups_restore.html:15
msgid "Restore data from"
-msgstr ""
+msgstr "Restaura dades des de"
#: modules/backups/templates/backups_upload.html:17
#, python-format
@@ -662,6 +721,13 @@ msgid ""
" backup file.\n"
" "
msgstr ""
+"\n"
+" Carrega un fitxer de còpia de seguretat descarregat d'un altre "
+"%(box_name)s per restaurar-ne \n"
+"\t\tel contingut. Després de carregar el fitxer de còpia de seguretat, "
+"podràs triar les aplicacions \n"
+"\t\tque desitges restaurar.\n"
+" "
#: modules/backups/templates/backups_upload.html:31
#, python-format
@@ -669,10 +735,12 @@ msgid ""
"You have %(max_filesize)s available to restore a backup. Exceeding this "
"limit can leave your %(box_name)s unusable."
msgstr ""
+"Tens %(max_filesize)s disponibles per restaurar una còpia de seguretat. "
+"Superar aquest límit pot deixar el teu %(box_name)s inutilitzable."
#: modules/backups/templates/backups_upload.html:45
msgid "Upload file"
-msgstr ""
+msgstr "Penja un fitxer"
#: modules/backups/templates/verify_ssh_hostkey.html:18
#, python-format
@@ -680,6 +748,8 @@ msgid ""
"Could not reach SSH host %(hostname)s. Please verify that the host is up and "
"accepting connections."
msgstr ""
+"No s'ha pogut arribar a l'amfitrió SSH %(hostname)s. Si us plau, verifica "
+"que l'amfitrió estigui en funcionament i acceptant connexions."
#: modules/backups/templates/verify_ssh_hostkey.html:34
#, python-format
@@ -687,10 +757,13 @@ msgid ""
"The authenticity of SSH host %(hostname)s could not be established. The host "
"advertises the following SSH public keys. Please verify any one of them."
msgstr ""
+"No s'ha pogut establir l'autenticitat de l'amfitrió SSH %(hostname)s. "
+"L'amfitrió anuncia les següents claus públiques SSH. Si us plau, verifica'n "
+"alguna."
#: modules/backups/templates/verify_ssh_hostkey.html:46
msgid "How to verify?"
-msgstr ""
+msgstr "Com verificar?"
#: modules/backups/templates/verify_ssh_hostkey.html:51
msgid ""
@@ -698,114 +771,117 @@ msgid ""
"one of the provided options. You can also use DSA, ECDSA, Ed25519 etc. "
"instead of RSA, by choosing the corresponding file."
msgstr ""
+"Executa la següent ordre a la màquina amfitriona SSH. La sortida hauria de "
+"coincidir amb una de les opcions proporcionades. També pots utilitzar DSA, "
+"ECDSA, Ed25519, etc., en lloc de RSA, seleccionant el fitxer corresponent."
#: modules/backups/templates/verify_ssh_hostkey.html:66
msgid "Verify Host"
-msgstr ""
+msgstr "Verifica l'amfitrió"
#: modules/backups/views.py:68
msgid "Backup schedule updated."
-msgstr ""
+msgstr "Programació de còpies de seguretat actualitzada."
#: modules/backups/views.py:87
msgid "Schedule Backups"
-msgstr ""
+msgstr "Programació de còpies de seguretat"
#: modules/backups/views.py:148
msgid "Archive created."
-msgstr ""
+msgstr "Arxiu creat."
#: modules/backups/views.py:160
msgid "Delete Archive"
-msgstr ""
+msgstr "Elimina l'arxiu"
#: modules/backups/views.py:173
msgid "Archive deleted."
-msgstr ""
+msgstr "Arxiu eliminat"
#: modules/backups/views.py:187
msgid "Upload and restore a backup"
-msgstr ""
+msgstr "Penja i restaura una còpia de seguretat"
#: modules/backups/views.py:216
msgid "Upload successful."
-msgstr ""
+msgstr "S'ha penjat correctament."
#: modules/backups/views.py:254
msgid "No backup file found."
-msgstr ""
+msgstr "No s'ha trobat cap arxiu de còpia de seguretat."
#: modules/backups/views.py:262
msgid "Restore from uploaded file"
-msgstr ""
+msgstr "Restaura des de l'arxiu penjat"
#: modules/backups/views.py:276 modules/backups/views.py:297
msgid "Restored files from backup."
-msgstr ""
+msgstr "Arxius restaurats des de la còpia de seguretat."
#: modules/backups/views.py:327
msgid "No additional disks available to add a repository."
-msgstr ""
+msgstr "No hi ha discs addicionals disponibles per afegir un repositori."
#: modules/backups/views.py:335
msgid "Create backup repository"
-msgstr ""
+msgstr "Crea repositori de còpia de seguretat"
#: modules/backups/views.py:350
msgid "Added new repository."
-msgstr ""
+msgstr "S'ha afegit un nou repositori."
#: modules/backups/views.py:364
msgid "Create remote backup repository"
-msgstr ""
+msgstr "Crea un repositori de còpia de seguretat remot"
#: modules/backups/views.py:386
msgid "Added new remote SSH repository."
-msgstr ""
+msgstr "S'ha afegit un nou repositori remot SSH."
#: modules/backups/views.py:408
msgid "Verify SSH hostkey"
-msgstr ""
+msgstr "Verifica la clau d'amfitrió SSH"
#: modules/backups/views.py:434
msgid "SSH host already verified."
-msgstr ""
+msgstr "L'amfitrió SSH ja ha estat verificat."
#: modules/backups/views.py:445
msgid "SSH host verified."
-msgstr ""
+msgstr "Amfitrió SSH verificat."
#: modules/backups/views.py:461
msgid "SSH host public key could not be verified."
-msgstr ""
+msgstr "No s'ha pogut verificar la clau pública de l'amfitrió SSH."
#: modules/backups/views.py:463
msgid "Authentication to remote server failed."
-msgstr ""
+msgstr "Ha fallat l'autenticació amb el servidor remot."
#: modules/backups/views.py:465
msgid "Error establishing connection to server: {}"
-msgstr ""
+msgstr "Error en establir la connexió amb el servidor: {}"
#: modules/backups/views.py:476
msgid "Repository removed."
-msgstr ""
+msgstr "Repositori eliminat."
#: modules/backups/views.py:490
msgid "Remove Repository"
-msgstr ""
+msgstr "Elimina el repositori"
#: modules/backups/views.py:500
msgid "Repository removed. Backups were not deleted."
-msgstr ""
+msgstr "Repositori eliminat. Les còpies de seguretat no han estat suprimides."
#: modules/backups/views.py:511
msgid "Unmounting failed!"
-msgstr ""
+msgstr "Ha fallat el desmuntatge!"
#: modules/backups/views.py:527 modules/backups/views.py:531
msgid "Mounting failed"
-msgstr ""
+msgstr "Ha fallat el muntatge"
#: modules/bepasty/__init__.py:17
msgid ""
@@ -814,6 +890,11 @@ msgid ""
"audio, video and PDF documents can be previewed in the browser. Shared files "
"can be set to expire after a time period."
msgstr ""
+"bepasty és una aplicació web que permet pujar i compartir fitxers grans. "
+"També s'hi poden enganxar i compartir fragments de text i codi. Els textos, "
+"imatges, àudios, vídeos i documents PDF es poden previsualitzar al "
+"navegador. Els fitxers compartits poden configurar-se perquè caduquin "
+"després d’un període de temps."
#: modules/bepasty/__init__.py:21
msgid ""
@@ -822,6 +903,11 @@ msgid ""
"password, you can share it with the users who should have the associated "
"permissions."
msgstr ""
+"Bepasty és una aplicació web que permet pujar i compartir fitxers grans. "
+"També es poden enganxar i compartir fragments de text i codi. Els textos, "
+"imatges, àudio, vídeos i documents PDF es poden previsualitzar al navegador. "
+"Els fitxers compartits es poden configurar perquè expirinin després d'un "
+"cert període de temps."
#: modules/bepasty/__init__.py:25
msgid ""
@@ -830,38 +916,42 @@ msgid ""
"revoke access for a single person or group, by removing their password from "
"the list."
msgstr ""
+"També pots crear diverses contrasenyes amb el mateix conjunt de privilegis i "
+"distribuir-les a diferents persones o grups. Això et permetrà, més endavant, "
+"revocar l'accés a una persona o grup específic, eliminant la seva "
+"contrasenya de la llista."
#: modules/bepasty/__init__.py:32 modules/bepasty/__init__.py:41
msgid "Read a file, if a web link to the file is available"
-msgstr ""
+msgstr "Llegeix un fitxer, si hi ha un enllaç web disponible per al fitxer"
#: modules/bepasty/__init__.py:33
msgid "Create or upload files"
-msgstr ""
+msgstr "Crea o penja fitxers"
#: modules/bepasty/__init__.py:34
msgid "List all files and their web links"
-msgstr ""
+msgstr "Llista tots els fitxers i els seus enllaços web"
#: modules/bepasty/__init__.py:35
msgid "Delete files"
-msgstr ""
+msgstr "Elimina fitxers"
#: modules/bepasty/__init__.py:36
msgid "Administer files: lock/unlock files"
-msgstr ""
+msgstr "Administrar fitxers: bloquejar/desbloquejar fitxers"
#: modules/bepasty/__init__.py:40
msgid "None, password is always required"
-msgstr ""
+msgstr "Cap, sempre es requereix contrasenya"
#: modules/bepasty/__init__.py:42
msgid "List and read all files"
-msgstr ""
+msgstr "Llistar i llegir tots els fitxers"
#: modules/bepasty/__init__.py:57 modules/bepasty/manifest.py:6
msgid "bepasty"
-msgstr ""
+msgstr "bepasty"
#: modules/bepasty/forms.py:17
msgid "Public Access (default permissions)"
From daa7c326b8930dfbd75d4c169a16390ad94553a8 Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Mon, 28 Apr 2025 14:09:38 -0700
Subject: [PATCH 13/16] minetest: Work with new luanti binary in Trixie
- Based on suggestion from Benedek[1].
Links
1) https://salsa.debian.org/freedombox-team/freedombox/-/issues/2514#note_608054
Tests:
- On Trixie, freshly install minetest server. The server is successfully running.
Command line for the process shows that gameid is minetest_game. Configuration
file is /etc/luanti/default.conf.
- Update configuration. The update is successful. The configuration
/etc/minetest/minetest.conf is created. The server command line shows using
/etc/minetest/minetest.conf as the configuration file.
- On Bookworm, freshly install minetest server. The server is running. Updating
configuration works. Command line shows that /etc/minetest/minetest.conf is
being used.
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
.../systemd/system/minetest-server.service.d/freedombox.conf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plinth/modules/minetest/data/usr/lib/systemd/system/minetest-server.service.d/freedombox.conf b/plinth/modules/minetest/data/usr/lib/systemd/system/minetest-server.service.d/freedombox.conf
index d61eea865..6a3d7483a 100644
--- a/plinth/modules/minetest/data/usr/lib/systemd/system/minetest-server.service.d/freedombox.conf
+++ b/plinth/modules/minetest/data/usr/lib/systemd/system/minetest-server.service.d/freedombox.conf
@@ -1,4 +1,4 @@
# Workaround for Debian bug #1090067
[Service]
ExecStart=
-ExecStart=/usr/lib/minetest/minetestserver --config /etc/minetest/minetest.conf --logfile /var/log/minetest/minetest.log --gameid minetest_game
+ExecStart=/usr/bin/sh -c 'if [ -e /etc/minetest/minetest.conf ] ; then CONFIG_FILE=/etc/minetest/minetest.conf; else CONFIG_FILE=/etc/luanti/default.conf; fi; if [ -x /usr/lib/minetest/minetestserver ] ; then /usr/lib/minetest/minetestserver --config $$CONFIG_FILE --logfile /var/log/minetest/minetest.log --gameid minetest_game; else exec /usr/libexec/luanti/luantiserver --config $$CONFIG_FILE --logfile /var/log/luanti/default/server.log --gameid $LUANTI_GAMEID; fi'
From 8c6c31d9914f6b4f8dfe80e3af55ae722b64ff5d Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Mon, 28 Apr 2025 14:17:56 -0700
Subject: [PATCH 14/16] minetest: Create the configuration directory if
necessary for Trixie
Closes: #2514
- On Trixie the configuration directory is /etc/luanti and not /etc/minetest.
So, it needs to be created.
Tests:
- On Trixie and Bookworm, updating configuration works. On Trixie, directory is
created if it does not exist.
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
plinth/modules/minetest/privileged.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/plinth/modules/minetest/privileged.py b/plinth/modules/minetest/privileged.py
index 73452d7b9..3bfbd3e40 100644
--- a/plinth/modules/minetest/privileged.py
+++ b/plinth/modules/minetest/privileged.py
@@ -1,6 +1,8 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""Configure Minetest server."""
+import pathlib
+
import augeas
from plinth import action_utils
@@ -15,6 +17,7 @@ def configure(max_players: int | None = None, enable_pvp: bool | None = None,
creative_mode: bool | None = None,
enable_damage: bool | None = None):
"""Update configuration file and restart daemon if necessary."""
+ pathlib.Path(CONFIG_FILE).parent.mkdir(exist_ok=True)
aug = load_augeas()
if max_players is not None:
aug.set(AUG_PATH + '/max_users', str(max_players))
From ba7f74bf71d85fdfa45c3c040d1a0d70837ac2a5 Mon Sep 17 00:00:00 2001
From: James Valleroy
Date: Mon, 5 May 2025 20:28:58 -0400
Subject: [PATCH 15/16] doc: Fetch latest manual
Signed-off-by: James Valleroy
---
doc/manual/en/Nextcloud.raw.wiki | 3 +--
doc/manual/en/ReleaseNotes.raw.wiki | 7 +++++++
doc/manual/es/ReleaseNotes.raw.wiki | 7 +++++++
3 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/doc/manual/en/Nextcloud.raw.wiki b/doc/manual/en/Nextcloud.raw.wiki
index c8b0ad2b0..946122daf 100644
--- a/doc/manual/en/Nextcloud.raw.wiki
+++ b/doc/manual/en/Nextcloud.raw.wiki
@@ -13,8 +13,6 @@
'''Available since''': !FreedomBox 24.8
-Nextcloud is considered experimental in !FreedomBox having to do with the integration of the Nextcloud container in the !FreedomBox system.
-
=== What is Nextcloud? ===
This page is new and needs a Nexcloud user to help with the content. This could be you!
@@ -41,6 +39,7 @@ If you are a Nextcloud user share how this is done.
* Upstream Project: https://nextcloud.com/
* Upstream documentation: https://nextcloud.com/support/
* Upstream support forum: https://help.nextcloud.com/
+ * The source code for the container image used by !FreedomBox: https://github.com/nextcloud/docker
* Debian Nextcloud wiki: https://wiki.debian.org/Nextcloud
{{{#!wiki comment
diff --git a/doc/manual/en/ReleaseNotes.raw.wiki b/doc/manual/en/ReleaseNotes.raw.wiki
index 545c76ee2..fdef425b2 100644
--- a/doc/manual/en/ReleaseNotes.raw.wiki
+++ b/doc/manual/en/ReleaseNotes.raw.wiki
@@ -8,6 +8,13 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f
The following are the release notes for each !FreedomBox version.
+== FreedomBox 25.9 (2025-05-05) ==
+
+ * locale: Add translation for Catalan
+ * locale: Update translations for French, Hindi, Telugu
+ * minetest: Create the configuration directory if necessary for Trixie
+ * minetest: Work with new luanti binary in Trixie
+
== FreedomBox 25.8 (2025-04-21) ==
=== Highlights ===
diff --git a/doc/manual/es/ReleaseNotes.raw.wiki b/doc/manual/es/ReleaseNotes.raw.wiki
index 545c76ee2..fdef425b2 100644
--- a/doc/manual/es/ReleaseNotes.raw.wiki
+++ b/doc/manual/es/ReleaseNotes.raw.wiki
@@ -8,6 +8,13 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f
The following are the release notes for each !FreedomBox version.
+== FreedomBox 25.9 (2025-05-05) ==
+
+ * locale: Add translation for Catalan
+ * locale: Update translations for French, Hindi, Telugu
+ * minetest: Create the configuration directory if necessary for Trixie
+ * minetest: Work with new luanti binary in Trixie
+
== FreedomBox 25.8 (2025-04-21) ==
=== Highlights ===
From 9b465faa106618178e6a878062e420136a161bcc Mon Sep 17 00:00:00 2001
From: James Valleroy
Date: Mon, 5 May 2025 20:31:43 -0400
Subject: [PATCH 16/16] Release v25.9 to unstable
Signed-off-by: James Valleroy
---
debian/changelog | 34 ++++++++++++++++++++++++++++++++++
plinth/__init__.py | 2 +-
2 files changed, 35 insertions(+), 1 deletion(-)
diff --git a/debian/changelog b/debian/changelog
index 485700453..8b9ae02fa 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,37 @@
+freedombox (25.9) unstable; urgency=medium
+
+ [ klu2300030052 ]
+ * Translated using Weblate (Telugu)
+
+ [ klu2300090005 ]
+ * Translated using Weblate (Hindi)
+
+ [ John Doe ]
+ * Translated using Weblate (French)
+
+ [ Bekkam B S M G Babi ]
+ * Translated using Weblate (Telugu)
+
+ [ Thulasi Edhala ]
+ * Translated using Weblate (Telugu)
+ * Translated using Weblate (Hindi)
+
+ [ swaroop02-cse ]
+ * Translated using Weblate (Telugu)
+
+ [ Torra-Merin ]
+ * Added translation using Weblate (Catalan)
+ * Translated using Weblate (Catalan)
+
+ [ Sunil Mohan Adapa ]
+ * minetest: Work with new luanti binary in Trixie
+ * minetest: Create the configuration directory if necessary for Trixie
+
+ [ James Valleroy ]
+ * doc: Fetch latest manual
+
+ -- James Valleroy Mon, 05 May 2025 20:29:19 -0400
+
freedombox (25.8) unstable; urgency=medium
[ James Valleroy ]
diff --git a/plinth/__init__.py b/plinth/__init__.py
index daa4e46f5..382d1029f 100644
--- a/plinth/__init__.py
+++ b/plinth/__init__.py
@@ -3,4 +3,4 @@
Package init file.
"""
-__version__ = '25.8'
+__version__ = '25.9'