diff --git a/.github/workflows/add-lang.yml b/.github/workflows/add-lang.yml
index ba9e82110..05e912461 100644
--- a/.github/workflows/add-lang.yml
+++ b/.github/workflows/add-lang.yml
@@ -7,7 +7,7 @@ jobs:
permissions:
contents: write
issues: write
- runs-on: ubuntu-latest
+ runs-on: ubuntu-22.04
if: github.event.label.name == 'new language'
steps:
diff --git a/.github/workflows/jekyll.yml b/.github/workflows/jekyll.yml
index 2721ad32e..2cd5e15ab 100644
--- a/.github/workflows/jekyll.yml
+++ b/.github/workflows/jekyll.yml
@@ -11,7 +11,7 @@ jobs:
jekyll_site_ci:
permissions:
contents: write
- runs-on: ubuntu-latest
+ runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 475c71cc2..1186ac7a2 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -7,7 +7,7 @@ jobs:
build_and_deploy_site:
permissions:
contents: write
- runs-on: ubuntu-latest
+ runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
@@ -107,7 +107,7 @@ jobs:
needs: build_and_deploy_site
permissions:
contents: write
- runs-on: ubuntu-latest
+ runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: ${{ github.sha }} update from release
diff --git a/1-ru-index.md b/1-ru-index.md
new file mode 120000
index 000000000..d14f2cae3
--- /dev/null
+++ b/1-ru-index.md
@@ -0,0 +1 @@
+wiki/ru/1-index.md
\ No newline at end of file
diff --git a/1-th-index.md b/1-th-index.md
new file mode 120000
index 000000000..9dfa4264e
--- /dev/null
+++ b/1-th-index.md
@@ -0,0 +1 @@
+wiki/th/1-index.md
\ No newline at end of file
diff --git a/_config.yml b/_config.yml
index e54def40e..cb9212f9e 100644
--- a/_config.yml
+++ b/_config.yml
@@ -2,9 +2,11 @@ plugins:
- jekyll-paginate-v2
- jekyll-polyglot
- jekyll-minifier
-languages: ["en", "sv-SE", "zh-CN", "nb-NO", "ko-KR", "pt-BR", "pt-PT", "nl", "es", "de", "it", "fr"]
+languages: ["en", "ru", "th", "sv-SE", "zh-CN", "nb-NO", "ko-KR", "pt-BR", "pt-PT", "nl", "es", "de", "it", "fr"]
default_lang: "en"
language_names:
+ ru: Русский
+ th: ไทย
sv-SE: Svenska
en: English
zh-CN: 简体中文
@@ -26,6 +28,7 @@ kramdown:
# Jamulus release binary links
download_root_link: "https://github.com/jamulussoftware/jamulus/releases/download/r3_11_0/"
+download_ios_app_store_link: "https://apps.apple.com/us/app/jamulus/id6654925705"
download_file_names:
deb-gui: "jamulus_3.11.0_ubuntu_amd64.deb"
deb-headless: "jamulus-headless_3.11.0_ubuntu_amd64.deb"
diff --git a/_po4a-tools/po4a-create-all-targets.sh b/_po4a-tools/po4a-create-all-targets.sh
index 9b30b51ee..64f516250 100755
--- a/_po4a-tools/po4a-create-all-targets.sh
+++ b/_po4a-tools/po4a-create-all-targets.sh
@@ -99,16 +99,17 @@ process_with_po4a () {
THRESHOLD="$THRESH_VAL"
fi
- # Determine file format to be used
+ # Determine file format to be used and set options (configured as an array to allow adding an arbitrary number of them)
+ OPTION=()
if [ $ext == yml ] ; then
FILE_FORMAT=yaml
- OPTION="skip_array"
+ OPTION=("skip_array")
elif [[ $ext == html || "$filename" == *'-index' ]] ; then # '-index.md' has a markdown extension but is actually html and should be processed as such by po4a
FILE_FORMAT=xml
- OPTION="ontagerror=warn"
+ OPTION=("ontagerror=warn" "attributes=src alt")
elif [ $ext == md ] ; then
FILE_FORMAT=text
- OPTION="markdown"
+ OPTION=("markdown")
fi
# Run po4a-translate and create target files
@@ -120,7 +121,7 @@ process_with_po4a () {
--localized "$targ_doc" \
--localized-charset "UTF-8" \
--no-deprecation \
- --option "$OPTION" \
+ "${OPTION[@]/#/--option=}" \
--keep "$THRESHOLD"
# Display message if translated file is created
diff --git a/_po4a-tools/po4a-update-templates.sh b/_po4a-tools/po4a-update-templates.sh
index 234fefda7..3ac68221f 100755
--- a/_po4a-tools/po4a-update-templates.sh
+++ b/_po4a-tools/po4a-update-templates.sh
@@ -60,16 +60,17 @@ while IFS= read -r -d '' doc ; do
echo creating "$po_file"
fi
- # Determine file format to be used
+ # Determine file format to be used and set options (configured as an array to allow adding an arbitrary number of them)
+ OPTION=()
if [ $ext == yml ] ; then
FILE_FORMAT=yaml
- OPTION="skip_array"
+ OPTION=("skip_array")
elif [[ $ext == html || "$filename" == *'-index' ]] ; then # '-index.md' has a markdown extension but is actually html and should be processed as such by po4a
FILE_FORMAT=xml
- OPTION="ontagerror=warn"
+ OPTION=("ontagerror=warn" "attributes=src alt")
elif [ $ext == md ] ; then
FILE_FORMAT=text
- OPTION="markdown"
+ OPTION=("markdown")
fi
# Update/create .po files
@@ -80,7 +81,7 @@ while IFS= read -r -d '' doc ; do
--msgmerge-opt --no-wrap \
--wrap-po newlines \
--no-deprecation \
- --option "$OPTION" \
+ "${OPTION[@]/#/--option=}" \
--po "$po_file" ; then
echo ''
echo Error updating "$lang" PO file for: "$filename".$ext
diff --git a/_posts/2022-01-25-Related-Projects.md b/_posts/2022-01-25-Related-Projects.md
index 2738f3d96..8fbf317f6 100644
--- a/_posts/2022-01-25-Related-Projects.md
+++ b/_posts/2022-01-25-Related-Projects.md
@@ -65,10 +65,6 @@ and to zip them up and download them via a web browser. It is implemented in PHP
* [gojam](https://github.com/dtinth/gojam) is an implementation of a Jamulus client written in Go. This tool is intended for headless streaming use-cases. Used by **jamulus-lounge**.
* [jamviz](https://github.com/dtinth/jamviz) shows active connections of a Jamulus server that is running **jamulus-lounge**. Used to show activity to a livestreaming audience.
-## Koord
-
-Koord adds real-time video of participants to Jamulus technology in a new application, available for desktop and mobile devices. The [Koord.live website](https://koord.live/) offers private servers and additional playback and recording features.
-
## Melomax
The [Melomax website](https://melomax.live) offers private servers groups can use with Jamulus client software.
diff --git a/_posts/2022-02-01-Midi-Mixerboard-Control.md b/_posts/2022-02-01-Midi-Mixerboard-Control.md
index 86bfc3f53..f3a825cc8 100644
--- a/_posts/2022-02-01-Midi-Mixerboard-Control.md
+++ b/_posts/2022-02-01-Midi-Mixerboard-Control.md
@@ -12,12 +12,15 @@ In this article Windows is used as an example, however it will be possible to pe
## What do you need?
-1. Jamulus with JACK support (not the standard ASIO version if you are using Windows), you can [download the Jamulus JACK version for Windows here]({{ site.download_root_link }}{{ site.download_file_names.windows-jack }})).
+1. Jamulus with JACK support (not the standard ASIO version if you are using Windows, _but see the note below regarding Jamulus versions 3.12.0 onwards_), you can [download the Jamulus JACK version for Windows here]({{ site.download_root_link }}{{ site.download_file_names.windows-jack }})).
2. You need an audio device with ASIO support or you can use a universal ASIO driver like ASIO4ALL.
3. You need a MIDI Control Surface. Many different models are available. I am using a Worlde EasyControl 9.

4. JACK for Windows [get it from the JACK audio page](https://jackaudio.org/downloads/).
+### Update for Jamulus 3.12.0 on Windows
+The ASIO version of Jamulus 3.12.0 for Windows has introduced native support for MIDI devices without the need for JACK. If using 3.12.0 or later on Windows, you can skip all the sections below that relate to JACK. [See here](/wiki/Tips-Tricks-More#using---ctrlmidich-for-midi-controllers) for more details.
+
### What do you need to know?
You need to know the MIDI Control Change numbers which are assigned to the buttons/faders/knobs of your MIDI Control Surface device. For the device I use, the setup is:
diff --git a/_translator-files/po/de/1-index.po b/_translator-files/po/de/1-index.po
index a90eccf05..3cc64b95f 100644
--- a/_translator-files/po/de/1-index.po
+++ b/_translator-files/po/de/1-index.po
@@ -1,15 +1,17 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR Free Software Foundation, Inc.
# This file is distributed under the same license as the PACKAGE package.
-# ann0see <20726856+ann0see@users.noreply.github.com>, 2022, 2023, 2024.
+# ann0see <20726856+ann0see@users.noreply.github.com>, 2022, 2023, 2024, 2025.
# Eric Brändli , 2024.
# Victor Jouhoff , 2024.
# nobkd <44443899+nobkd@users.noreply.github.com>, 2024.
# Mia Kaanen , 2024.
+# Umber Security , 2025.
+# Christopher Kühlbach , 2025.
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"PO-Revision-Date: 2024-08-04 18:57+0000\n"
+"PO-Revision-Date: 2025-09-29 19:02+0000\n"
"Last-Translator: ann0see <20726856+ann0see@users.noreply.github.com>\n"
"Language-Team: \n"
"Language: de\n"
@@ -17,7 +19,7 @@ msgstr ""
"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.7-dev\n"
+"X-Generator: Weblate 5.14-dev\n"
#. type: Content of: outside any tag (error?)
#: ../wiki/en/misc/1-index.md:1
@@ -68,7 +70,17 @@ msgstr "Was ist Jamulus?"
#: ../wiki/en/misc/1-index.md:23
#, no-wrap
msgid "Jamulus lets you play, rehearse, or jam with your friends, your band, or anyone you find online. Play together remotely in time with high quality, low-latency sound on a normal broadband connection. [Download it here!](wiki/Getting-Started)\n"
-msgstr "Jamulus ermöglicht es dir mit deinen Freunden, deiner Band oder jedem, den du online findest, zu spielen, zu proben oder gemeinsam zu musizieren. Spiele in Echtzeit zusammen mit hochwertigem Sound und geringer Latenz über eine normale Breitbandverbindung. [Lade es hier herunter!](wiki/Getting-Started)\n"
+msgstr "Mit Jamulus kannst du gemeinsam mit Freunden, deiner Band oder jeden den du online findest spielen, proben oder musizieren – in Echtzeit, mit hochwertigem Sound und geringer Latenz, ganz einfach über eine normale Internetverbindung. [Lade es hier herunter!](wiki/Getting-Started)\n"
+
+#. type: Attribute 'src' of: