From 1c547ecd126db168322935457fb8d71716da6e22 Mon Sep 17 00:00:00 2001 From: thespad Date: Sun, 16 Nov 2025 18:27:48 +0000 Subject: [PATCH 1/3] Add missing language files to default install --- Dockerfile | 11 +++++++++++ Dockerfile.aarch64 | 11 +++++++++++ readme-vars.yml | 1 + .../s6-rc.d/init-projectsend-config/run | 19 +++++++++++-------- 4 files changed, 34 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index d2fb273..94875c0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -42,6 +42,17 @@ RUN \ /tmp/projectsend.zip -d \ /app/www/public && \ mv /app/www/public/upload /defaults/ && \ + echo "**** download default lang files ****" && \ + mkdir -p /defaults/lang && \ + curl -fso \ + /defaults/lang/default.pot -L \ + "https://raw.githubusercontent.com/projectsend/projectsend/refs/heads/develop/templates/default/lang/default.pot" && \ + curl -fso \ + /defaults/lang/en.mo -L \ + "https://raw.githubusercontent.com/projectsend/projectsend/refs/heads/develop/templates/default/lang/en.mo" && \ + curl -fso \ + /defaults/lang/en.po -L \ + "https://raw.githubusercontent.com/projectsend/projectsend/refs/heads/develop/templates/default/lang/en.po" && \ printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \ echo "**** cleanup ****" && \ rm -rf \ diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index ac6fe28..7e9182a 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -42,6 +42,17 @@ RUN \ /tmp/projectsend.zip -d \ /app/www/public && \ mv /app/www/public/upload /defaults/ && \ + echo "**** download default lang files ****" && \ + mkdir -p /defaults/lang && \ + curl -fso \ + /defaults/lang/default.pot -L \ + "https://raw.githubusercontent.com/projectsend/projectsend/refs/heads/develop/templates/default/lang/default.pot" && \ + curl -fso \ + /defaults/lang/en.mo -L \ + "https://raw.githubusercontent.com/projectsend/projectsend/refs/heads/develop/templates/default/lang/en.mo" && \ + curl -fso \ + /defaults/lang/en.po -L \ + "https://raw.githubusercontent.com/projectsend/projectsend/refs/heads/develop/templates/default/lang/en.po" && \ printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \ echo "**** cleanup ****" && \ rm -rf \ diff --git a/readme-vars.yml b/readme-vars.yml index 615f290..0ec7325 100644 --- a/readme-vars.yml +++ b/readme-vars.yml @@ -88,6 +88,7 @@ init_diagram: | "projectsend:latest" <- Base Images # changelog changelogs: + - {date: "16.11.25:", desc: "Add missing language files to default install."} - {date: "14.10.25:", desc: "Rebase to 3.22."} - {date: "06.06.25:", desc: "Add crontab handler for scheduled tasks."} - {date: "21.12.24:", desc: "Rebase to Alpine 3.21, move php .ini file to /config/php."} diff --git a/root/etc/s6-overlay/s6-rc.d/init-projectsend-config/run b/root/etc/s6-overlay/s6-rc.d/init-projectsend-config/run index 6214f02..954ce0d 100755 --- a/root/etc/s6-overlay/s6-rc.d/init-projectsend-config/run +++ b/root/etc/s6-overlay/s6-rc.d/init-projectsend-config/run @@ -59,14 +59,6 @@ mkdir -p /config/translations shopt -s globstar dotglob -#check if there are newer translation files in the container and if so copy them to /config -if [[ -d /config/translations/lang && ! -L /app/www/public/lang ]]; then - for file in /app/www/public/lang/*; do - if [ $(date -r "$file" +%s) -ge $(date -r "/config/translations/lang/$(echo $file | awk -F '/' '{print $(NF)}')" +%s) ]; then - cp "$file" /config/translations/lang/ - fi - done -fi # symlink translations if [[ -d /config/translations/lang && ! -L /app/www/public/lang ]]; then rm -rf /app/www/public/lang @@ -78,6 +70,17 @@ if [[ -d /config/translations/lang && ! -L /app/www/public/lang ]]; then ln -s /config/translations/lang /app/www/public/lang fi +#check if there are newer default translation files in the container and if so copy them to /config +if [[ ! -f /config/translations/lang/en.po ]] || [[ ! -f /config/translations/lang/en.mo ]]; then + cp /defaults/lang/* /config/translations/lang/ +else + for file in /defaults/lang/*; do + if [ $(date -r "$file" +%s) -ge $(date -r "/config/translations/lang/$(echo $file | awk -F '/' '{print $(NF)}')" +%s) ]; then + cp "$file" /config/translations/lang/ + fi + done +fi + symlinks=( /app/www/public/templates/default/lang /app/www/public/templates/gallery/lang From 91376b4238f0de5ec0d91a9b232f70f707f66dba Mon Sep 17 00:00:00 2001 From: thespad Date: Sun, 16 Nov 2025 19:31:46 +0000 Subject: [PATCH 2/3] Fixes --- .../s6-rc.d/init-projectsend-config/run | 39 +++++++------------ 1 file changed, 13 insertions(+), 26 deletions(-) diff --git a/root/etc/s6-overlay/s6-rc.d/init-projectsend-config/run b/root/etc/s6-overlay/s6-rc.d/init-projectsend-config/run index 954ce0d..bfb8c32 100755 --- a/root/etc/s6-overlay/s6-rc.d/init-projectsend-config/run +++ b/root/etc/s6-overlay/s6-rc.d/init-projectsend-config/run @@ -56,10 +56,9 @@ fi #Handle translations mkdir -p /config/translations - shopt -s globstar dotglob -# symlink translations +#check if there are newer translation files in the container and if so copy them to /config if [[ -d /config/translations/lang && ! -L /app/www/public/lang ]]; then rm -rf /app/www/public/lang fi @@ -69,16 +68,9 @@ fi if [[ -d /config/translations/lang && ! -L /app/www/public/lang ]]; then ln -s /config/translations/lang /app/www/public/lang fi - -#check if there are newer default translation files in the container and if so copy them to /config if [[ ! -f /config/translations/lang/en.po ]] || [[ ! -f /config/translations/lang/en.mo ]]; then + mkdir -p /config/translations/lang cp /defaults/lang/* /config/translations/lang/ -else - for file in /defaults/lang/*; do - if [ $(date -r "$file" +%s) -ge $(date -r "/config/translations/lang/$(echo $file | awk -F '/' '{print $(NF)}')" +%s) ]; then - cp "$file" /config/translations/lang/ - fi - done fi symlinks=( @@ -88,26 +80,21 @@ symlinks=( ) for i in "${symlinks[@]}"; do - path=$(echo "$i" | awk -F '/' '{print $(NF-1)"/"$NF}') - #check if there are newer translation files in the container and if so copy them to /config - if [[ -d /config/translations/"$path" && ! -L "$i" ]]; then - for file in "$i"/*; do - if [ $(date -r "$file" +%s) -ge $(date -r "/config/translations/$(echo $i | awk -F '/' '{print $(NF-1)}')/$(echo $file | awk -F '/' '{print $(NF)}')" +%s) ]; then - cp "$file" "/config/translations/$(echo $i | awk -F '/' '{print $(NF-1)}')" - fi - done - fi + path=$(echo "${i}" | awk -F '/' '{print $(NF-1)"/"$NF}') # symlink translations - if [[ -d /config/translations/"$path" && ! -L "$i" ]]; then - rm -rf "$i" + if [[ -d /config/translations/"$path" && ! -L "${i}" ]]; then + rm -rf "${i}" fi - if [[ ! -d /config/translations/"$path" && ! -L "$i" ]]; then - mv "$i" /config/translations/"$(echo $i | awk -F '/' '{print $(NF-1)}')" + if [[ ! -d /config/translations/"$path" && ! -L "${i}" ]]; then + mv "$i" /config/translations/"$(echo "${i}" | awk -F '/' '{print $(NF-1)}')" fi - if [[ -d /config/translations/"$path" && ! -L "$i" ]]; then - ln -s /config/translations/"$path" "$i" + if [[ -d /config/translations/"$path" && ! -L "${i}" ]]; then + ln -s /config/translations/"$path" "${i}" + fi + if [[ ! -f /config/translations/"$path"/en.po ]] || [[ ! -f /config/translations/"$path"/en.mo ]]; then + mkdir -p /config/translations/"$path" + cp /defaults/lang/* /config/translations/"$path"/ fi - done shopt -u globstar dotglob From cad3445302c3aba0dcdfc5ccd1c5effd9a00cd7f Mon Sep 17 00:00:00 2001 From: thespad Date: Sun, 16 Nov 2025 20:31:55 +0000 Subject: [PATCH 3/3] Simplify copies slightly --- Dockerfile | 3 --- Dockerfile.aarch64 | 3 --- root/etc/s6-overlay/s6-rc.d/init-projectsend-config/run | 2 +- 3 files changed, 1 insertion(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index 94875c0..ef32e2a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -44,9 +44,6 @@ RUN \ mv /app/www/public/upload /defaults/ && \ echo "**** download default lang files ****" && \ mkdir -p /defaults/lang && \ - curl -fso \ - /defaults/lang/default.pot -L \ - "https://raw.githubusercontent.com/projectsend/projectsend/refs/heads/develop/templates/default/lang/default.pot" && \ curl -fso \ /defaults/lang/en.mo -L \ "https://raw.githubusercontent.com/projectsend/projectsend/refs/heads/develop/templates/default/lang/en.mo" && \ diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index 7e9182a..43d78d8 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -44,9 +44,6 @@ RUN \ mv /app/www/public/upload /defaults/ && \ echo "**** download default lang files ****" && \ mkdir -p /defaults/lang && \ - curl -fso \ - /defaults/lang/default.pot -L \ - "https://raw.githubusercontent.com/projectsend/projectsend/refs/heads/develop/templates/default/lang/default.pot" && \ curl -fso \ /defaults/lang/en.mo -L \ "https://raw.githubusercontent.com/projectsend/projectsend/refs/heads/develop/templates/default/lang/en.mo" && \ diff --git a/root/etc/s6-overlay/s6-rc.d/init-projectsend-config/run b/root/etc/s6-overlay/s6-rc.d/init-projectsend-config/run index bfb8c32..13495b8 100755 --- a/root/etc/s6-overlay/s6-rc.d/init-projectsend-config/run +++ b/root/etc/s6-overlay/s6-rc.d/init-projectsend-config/run @@ -80,7 +80,7 @@ symlinks=( ) for i in "${symlinks[@]}"; do - path=$(echo "${i}" | awk -F '/' '{print $(NF-1)"/"$NF}') + path=$(echo "${i}" | awk -F '/' '{print $(NF-1)}') # symlink translations if [[ -d /config/translations/"$path" && ! -L "${i}" ]]; then rm -rf "${i}"