diff --git a/php/templates/components/container-state.twig b/php/templates/components/container-state.twig index e684e7e7..b192a3e9 100644 --- a/php/templates/components/container-state.twig +++ b/php/templates/components/container-state.twig @@ -4,27 +4,27 @@ {% if c.GetStartingState().value == 'starting' %} {{ c.displayName }} - (Starting) + ({{ t('Starting') }}) {% elseif c.GetRunningState().value == 'running' %} {{ c.displayName }} - (Running) + ({{ t('Running') }}) {% else %} {{ c.displayName }} - (Stopped) + ({{ t('Stopped') }}) {% endif %} {% if c.documentation != '' %} - (docs) + ({{ t('docs') }}) {% endif %} {% if c.GetUpdateState().value == 'different' %} - ⚠️ Update available + ⚠️ {{ t('Update') }} {{ t('available') }} {% endif %} {% if c.GetUiSecret() != '' %}
- Show password for {{ c.displayName }} + {{ t('Show password for') }} {{ c.displayName }}
{% endif %} - + \ No newline at end of file diff --git a/php/templates/containers.twig b/php/templates/containers.twig index cf8d34bb..801b06ad 100644 --- a/php/templates/containers.twig +++ b/php/templates/containers.twig @@ -10,7 +10,7 @@
{% if supportedLanguages|length > 1 %} - {% for lang in supportedLanguages %} {% endfor %} @@ -19,7 +19,7 @@
- +
@@ -28,7 +28,7 @@
{% set aio_version = include('includes/aio-version.twig') %} -

Nextcloud AIO v{{ aio_version }}

+

{{ t('Nextcloud AIO v') }}{{ aio_version }}

{# Add 2nd tab warning #} @@ -75,50 +75,50 @@ {% endfor %} {% if is_daily_backup_running == true %} -

Daily backup currently running. (Mastercontainer logs) (Borg backup container logs)

+

{{ t('Daily backup currently running.') }} ({{ t('Mastercontainer logs') }}) ({{ t('Borg backup container logs') }})

{% if automatic_updates == true %} -

This will update your containers, the mastercontainer and, on Saturdays, your Nextcloud apps if the backup is successful.

+

{{ t('This will update your containers, the mastercontainer and, on Saturdays, your Nextcloud apps if the backup is successful.') }}

{% if is_mastercontainer_update_available == true %} -

When the mastercontainer is updated it will restart, making it unavailable for a moment. (Logs)

+

{{ t('When the mastercontainer is updated it will restart, making it unavailable for a moment.') }} ({{ t('Logs') }})

{% endif %} {% endif %} {% if has_update_available == false %} -

The whole process should not take more than a few minutes.

+

{{ t('The whole process should not take more than a few minutes.') }}

{% elseif automatic_updates == true %} -

The whole process can take a while as your containers will be updated.

+

{{ t('The whole process can take a while as your containers will be updated.') }}

{% endif %} -

Reload ↻

-

If the daily backup is stuck somehow, you can unstick it by running sudo docker exec nextcloud-aio-mastercontainer rm /mnt/docker-aio-config/data/daily_backup_running and afterwards reloading this interface.

+

{{ t('Reload ↻') }}

+

{{ t('If the daily backup is stuck somehow, you can unstick it by running') }} sudo docker exec nextcloud-aio-mastercontainer rm /mnt/docker-aio-config/data/daily_backup_running {{ t('and afterwards reloading this interface.') }}

{% elseif isWatchtowerRunning == true %} -

Mastercontainer update currently running. Once the update is complete the mastercontainer will restart, making it unavailable for a moment. Please wait until it's done. (Logs)

-

Reload ↻

+

{{ t('Mastercontainer update currently running. Once the update is complete the mastercontainer will restart, making it unavailable for a moment. Please wait until it\'s done.') }} ({{ t('Logs') }})

+

{{ t('Reload ↻') }}

{% else %} {% if is_backup_container_running == false and domain == "" %} {% if isDomaincheckRunning == false %} -

Domaincheck container is not running

-

This is not expected. Most likely this happened because port {{ apache_port }} is already in use on your server. You can check the mastercontainer logs and domaincheck container logs for further clues. You should be able to resolve this by adjusting the APACHE_PORT by following the reverse proxy documentation. Advice: have a detailed look at the changed docker run command for AIO.

+

{{ t('Domaincheck container is not running') }}

+

{{ t('This is not expected. Most likely this happened because port') }} {{ apache_port }} {{ t('is already in use on your server. You can check the mastercontainer logs and domaincheck container logs for further clues. You should be able to resolve this by adjusting the APACHE_PORT by following the') }} {{ t('reverse proxy documentation') }}. {{ t('Advice: have a detailed look at the changed docker run command for AIO.') }}

{% elseif is_mastercontainer_update_available == true %} -

Mastercontainer update

-

⚠️ A mastercontainer update is available. Please click on the button below to update it. Afterwards, you will be able to proceed with the setup.

+

{{ t('Mastercontainer update') }}

+

⚠️ {{ t('A mastercontainer update is available. Please click on the button below to update it. Afterwards, you will be able to proceed with the setup.') }}

- +
{% else %} {% if not hasBackupLocation %} -

The official Nextcloud installation method. Nextcloud All-in-One provides easy deployment and maintenance with most features included in this one Nextcloud instance.

-

You can either create a new AIO instance or restore a former AIO instance from backup. See the two sections below.

+

{{ t('The official Nextcloud installation method. Nextcloud All-in-One provides easy deployment and maintenance with most features included in this one Nextcloud instance.') }}

+

{{ t('You can either create a new AIO instance or restore a former AIO instance from backup. See the two sections below.') }}

{{ include('includes/aio-config.twig') }} -

New AIO instance

+

{{ t('New AIO instance') }}

{% if apache_port == '443' %} -

AIO is currently in "normal mode" which means that it handles the TLS proxying itself. This also means that it cannot be installed behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else). If you want to run AIO behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else), see the reverse proxy documentation. Advice: have a detailed look at the changed docker run command for AIO.

+

{{ t('AIO is currently in "normal mode" which means that it handles the TLS proxying itself. This also means that it cannot be installed behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else). If you want to run AIO behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else), see the') }} {{ t('reverse proxy documentation') }}. {{ t('Advice: have a detailed look at the changed docker run command for AIO.') }}

{% else %} -

AIO is currently in "reverse proxy mode" which means that it can be installed behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else) and does not do the TLS proxying itself.

+

{{ t('AIO is currently in "reverse proxy mode" which means that it can be installed behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else) and does not do the TLS proxying itself.') }}

{% endif %} -

Please type in the domain that will be used for Nextcloud and submit it.

+

{{ t('Please type in the domain that will be used for Nextcloud and submit it.') }}

{% if skip_domain_validation == true %} -

Please note: The domain validation is disabled so any domain will be accepted here! Make sure you do not make a typo here as you will not be able to change it afterwards!

+

{{ t('Please note:') }} {{ t('The domain validation is disabled so any domain will be accepted here! Make sure you do not make a typo here as you will not be able to change it afterwards!') }}

{% endif %}
@@ -127,58 +127,60 @@ {% if skip_domain_validation == true %} {% endif %} - +
{% if skip_domain_validation == false %} -

Make sure that this server is reachable on port 443 (port 443/tcp is open/forwarded in your firewall/router and 443/udp as well if you want to enable http3) and that you've correctly set up the DNS config for the domain that you enter (set the A record to your public ipv4-address and if you need ipv6, set the AAAA record to your public ipv6-address. A CNAME record is, of course, also possible). You should see hints on what went wrong in the top right corner if your domain is not accepted.

+

{{ t('Make sure that this server is reachable on port 443 (port 443/tcp is open/forwarded in your firewall/router and 443/udp as well if you want to enable http3) and that you\'ve correctly set up the DNS config for the domain that you enter (set the A record to your public ipv4-address and if you need ipv6, set the AAAA record to your public ipv6-address. A CNAME record is, of course, also possible). You should see hints on what went wrong in the top right corner if your domain is not accepted.') }}

- Click here for further hints -

If you do not have a domain yet, you can get one for free e.g. from duckdns.org and others. Recommended is to use Tailscale

-

If you have a dynamic public IP-address, you can use e.g. DDclient with a compatible domain provider for DNS updates.

-

If you only want to install AIO locally without exposing it to the public internet or if you cannot do so, feel free to follow this documentation.

-

If you should be using Cloudflare Proxy for your domain, make sure to disable the Proxy feature temporarily as it might block the domain validation attempts.

+ {{ t('Click here for further hints') }} +

{{ t('If you do not have a domain yet, you can get one for free e.g. from duckdns.org and others. Recommended is to use') }} Tailscale

+

{{ t('If you have a dynamic public IP-address, you can use e.g.') }} DDclient {{ t('with a compatible domain provider for DNS updates.') }}

+

{{ t('If you only want to install AIO locally without exposing it to the public internet or if you cannot do so, feel free to follow') }} {{ t('this documentation') }}.

+

{{ t('If you should be using Cloudflare Proxy for your domain, make sure to disable the Proxy feature temporarily as it might block the domain validation attempts.') }}

{% if apache_port != '443' %} -

If you run into issues with your domain being accepted, see these steps for how to debug things.

+

{{ t('If you run into issues with your domain being accepted, see') }} {{ t('these steps') }} {{ t('for how to debug things.') }}

{% endif %} -

Hint: If the domain validation fails but you are completely sure that you've configured everything correctly, you may skip the domain validation by following this documentation.

+

{{ t('Hint:') }} {{ t('If the domain validation fails but you are completely sure that you\'ve configured everything correctly, you may skip the domain validation by following') }} {{ t('this documentation') }}.

{% endif %} -

Restore former AIO instance from backup

-

You can alternatively restore a former AIO instance from backup.

+

{{ t('Restore former AIO instance from backup') }}

+

{{ t('You can alternatively restore a former AIO instance from backup.') }}

{% endif %} {% if is_instance_restore_attempt == false %} {% if hasBackupLocation %} {% if borg_backup_mode in ['test', 'check'] %} {% if backup_exit_code > 0 %} -

Last {{ borg_backup_mode }} failed! (Logs)

+

{{ t('Last') }} {{ borg_backup_mode }} {{ t('failed!') }} ({{ t('Logs') }})

{% if borg_backup_mode == 'test' %} -

Please adjust the path and/or the encryption password in order to make it work!

+

{{ t('Please adjust the path and/or the encryption password in order to make it work!') }}

{% elseif borg_backup_mode == 'check' %} -

The backup archive seems to be corrupt. Please try to use a different intact backup archive or try to fix it by following this documentation

+

{{ t('The backup archive seems to be corrupt. Please try to use a different intact backup archive or try to fix it by following') }} {{ t('this documentation') }}

- Reveal repair option -

Below is the option to repair the integrity of your backup. Please note: Please only use this after you have read the documentation above! (It will run the command 'borg check --repair' for you.)

+ {{ t('Reveal repair option') }} +

{{ t('Below is the option to repair the integrity of your backup.') }} {{ t('Please note:') }} {{ t('Please only use this after you have read the documentation above! (It will run the command \'borg check --repair\' for you.)') }}

+ {% set confirmRepair = t('Check and repair backup integrity? Are you sure that you want to check and repair the backup integrity? This should only be done after reading the mentioned documentation.') %}
- +
{% endif %} {% elseif backup_exit_code == 0 %} -

Last {{ borg_backup_mode }} successful! (Logs)

+

{{ t('Last') }} {{ borg_backup_mode }} {{ t('successful!') }} ({{ t('Logs') }})

{% if borg_backup_mode == 'test' %} -

Feel free to check the integrity of the backup archive below before starting the restore process in order to make ensure that the restore will work. This can take a long time though depending on the size of the backup archive and is thus not required.

+

{{ t('Feel free to check the integrity of the backup archive below before starting the restore process in order to make ensure that the restore will work. This can take a long time though depending on the size of the backup archive and is thus not required.') }}

- +
{% endif %} -

Choose the backup that you want to restore and click on the button below to restore the selected backup. This will restore the whole AIO instance. Please note that the current AIO passphrase will be kept and the previous AIO passphrase will not be restored from backup!

-

Important: If the backup that you want to restore contained any community container, you need to restore the same backup a second time after this attempt so that the community container data is also correctly restored.

+

{{ t('Choose the backup that you want to restore and click on the button below to restore the selected backup. This will restore the whole AIO instance. Please note that the current AIO passphrase will be kept and the previous AIO passphrase will not be restored from backup!') }}

+

{{ t('Important:') }} {{ t('If the backup that you want to restore contained any') }} {{ t('community container') }}, {{ t('you need to restore the same backup a second time after this attempt so that the community container data is also correctly restored.') }}

+ {% set confirmRestore = t('⚠️ Important: If the backup that you want to restore contained any community container, you need to restore the same backup a second time after this attempt so that the community container data is also correctly restored.') %}
@@ -187,14 +189,14 @@ {% endfor %}
-
- +
+
{% endif %} {% elseif borg_backup_mode == 'restore' %} {% if backup_exit_code > 0 %} -

Last restore failed! (Logs)

-

The restore process has unexpectedly failed! Please adjust the path and encryption password, test it and try to restore again!

+

{{ t('Last restore failed!') }} ({{ t('Logs') }})

+

{{ t('The restore process has unexpectedly failed! Please adjust the path and encryption password, test it and try to restore again!') }}

{% endif %} {% endif %} {% endif %} @@ -202,51 +204,51 @@ {% if not hasBackupLocation or borg_backup_mode not in ['test', 'check', ''] or backup_exit_code > 0 %} {% if borg_remote_repo and backup_exit_code > 0 %}

- You may still need to authorize this pubkey on your borg remote:
{{ borg_public_key }}
- To try again, resubmit your location and rerun the test. + {{ t('You may still need to authorize this pubkey on your borg remote:') }}
{{ borg_public_key }}
+ {{ t('To try again, resubmit your location and rerun the test.') }}

{% endif %}

- Please enter the location of the backup archive on your host or a - remote borg repo url - if stored remotely; and the encryption password of the backup archive below and submit all values: + {{ t('Please enter the location of the backup archive on your host or a') }} + {{ t('remote borg repo url') }} + {{ t('if stored remotely; and the encryption password of the backup archive below and submit all values:') }}

-
-
-
+
+
+
- +
{{ include('includes/backup-dirs.twig') }} -

⚠️ Please note that the backup archive must be located in a subfolder of the folder that you enter here and the subfolder which contains the archive must be named 'borg', or the backup container will not be able to find the backup archive!

+

⚠️ {{ t('Please note that the backup archive must be located in a subfolder of the folder that you enter here and the subfolder which contains the archive must be named \'borg\', or the backup container will not be able to find the backup archive!') }}

{% endif %} {% else %} -

Everything set! Click on the button below to test the path and encryption password:

+

{{ t('Everything set!') }} {{ t('Click on the button below to test the path and encryption password:') }}

- +
{% endif %} {% endif %} -

How to reset the AIO instance?

-

If something should be going wrong, for example during the initial installation, you can reset the instance by following this documentation.

+

{{ t('How to reset the AIO instance?') }}

+

{{ t('If something should be going wrong, for example during the initial installation, you can reset the instance by following') }} {{ t('this documentation') }}.

{% endif %} {% if was_start_button_clicked == true %} {% if current_channel starts with 'latest' or current_channel starts with 'beta' or current_channel starts with 'develop' %} -

You are running the {{ current_channel }} channel. (Logs)

+

{{ t('You are running the') }} {{ current_channel }} {{ t('channel.') }} ({{ t('Logs') }})

{% else %} -

No channel was found. This means that AIO is not able to update itself and its component and will also not be able to report about updates. Updates need to be done externally.

+

{{ t('No channel was found. This means that AIO is not able to update itself and its component and will also not be able to report about updates. Updates need to be done externally.') }}

{% endif %} {% endif %} {% if is_backup_container_running == true %} -

Backup container is currently running: {{ borg_backup_mode }} (Logs)

-

Reload ↻

+

{{ t('Backup container is currently running:') }} {{ borg_backup_mode }} ({{ t('Logs') }})

+

{{ t('Reload ↻') }}

{% endif %} {% if domain != "" %} @@ -254,30 +256,30 @@ {% if isApacheStarting != true %} {% if hasBackupLocation %}
- Click here to reveal the initial Nextcloud credentials + {{ t('Click here to reveal the initial Nextcloud credentials') }} {% endif %} -

Initial Nextcloud username: admin

+

{{ t('Initial Nextcloud username:') }} admin

{% if hasBackupLocation %} {# nextcloud_password needs to be duplicated due to a bug in Firefox. See https://github.com/nextcloud/all-in-one/issues/638. #} -

Initial Nextcloud password: {{ nextcloud_password }}

+

{{ t('Initial Nextcloud password:') }} {{ nextcloud_password }}

{% else %} -

Initial Nextcloud password: {{ nextcloud_password }}

+

{{ t('Initial Nextcloud password:') }} {{ nextcloud_password }}

{% endif %} -

Open your Nextcloud ↗

+

{{ t('Open your Nextcloud ↗') }}

{% if not hasBackupLocation %} -

If your Nextcloud does not open when clicking the button above, see this documentation

+

{{ t('If your Nextcloud does not open when clicking the button above, see') }} {{ t('this documentation') }}

{% endif %} {% else %} {% if isAnyRestarting == false %} -

Containers are currently starting. You might inspect the container logs by clicking on Starting next to each container for further details.

-

Reload ↻

+

{{ t('Containers are currently starting. You might inspect the container logs by clicking on') }} {{ t('Starting') }} {{ t('next to each container for further details.') }}

+

{{ t('Reload ↻') }}

{% else %} -

It seems at least one container was not able to start correctly and is currently restarting.

-

To break this endless loop, you can stop the containers below and investigate the issue in the container logs before starting the containers again.

+

{{ t('It seems at least one container was not able to start correctly and is currently restarting.') }}

+

{{ t('To break this endless loop, you can stop the containers below and investigate the issue in the container logs before starting the containers again.') }}

- +
{% endif %} {% endif %} @@ -288,7 +290,7 @@ {% endif %} {% if was_start_button_clicked == true %} -

Containers

+

{{ t('Containers') }}