From 18a7af9fcf70c6e9f80f0d3c5f2fe766c8823613 Mon Sep 17 00:00:00 2001 From: ignotus Date: Fri, 21 Jun 2024 23:16:35 +0200 Subject: [PATCH 01/18] Lang select (#11) * Initial replacements testing OK so far * Add language selection dropdown * Don't store lang preference * Align dropdown to the right. Remove unneeded code from fw.css * Make dropdown scrollable * Clean/move/improve css styling, add icon, lang sel. outline * Remove unneeded css * Show full lang names, automate adding langs * AUTO: Add new language: (eu) #4 * Revert "AUTO: Add new language: (eu) #4" This reverts commit 301c9486933621f8b5ae9300b4b7ba106b55662e. * Correction * AUTO: Add new language: (Basque) #5 * Update add-lang.yml * AUTO: Add new language: (English (American)) #6 * Correction * Revert language additions * Correction * Correction * Update * Update * Add check * Update error message * Revert lang code hyphens * Add changes by @gilgongo * Combine with gilgongo's stuff * Correct title check * Correct pt-BR language codes * Revert lang code changes --------- Co-authored-by: Gilgongo Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- .github/workflows/add-lang.yml | 22 +- 1-ko-KR-index.md | 1 + 1-ko_KR-index.md | 1 - 1-nb_NO-index.md | 1 - 1-no-NO-index.md | 1 + 1-pt-BR-index.md | 1 + 1-pt-PT-index.md | 1 + 1-pt_BR-index.md | 1 - 1-pt_PT-index.md | 1 - 1-zh-CN-index.md | 1 + 1-zh_CN-index.md | 1 - _config.yml | 14 +- _includes/general/nav.html | 13 +- _includes/headtags.html | 3 +- _includes/langselect.html | 233 ++++++++++++++++-- _po4a-tools/po4a-add-language.sh | 30 +-- _translator-files/README.md | 8 +- assets/css/fw.css | 46 +--- .../bandwidth-diagram.inc | 0 .../channel-mapping.inc | 0 .../connection-setup-window.inc | 0 .../diagram-overview.inc | 0 .../diagram-reg-server.inc | 0 .../diagram-unreg-server.inc | 0 .../led-green.inc | 0 .../led-red.inc | 0 .../led-yellow.inc | 0 .../main-screen-default.inc | 0 .../main-screen-medium.inc | 0 .../mixer-channels.inc | 0 .../profile-tooltip.inc | 0 .../server-active.inc | 0 .../server-inactive.inc | 0 .../settings-advanced.inc | 0 .../settings-network.inc | 0 .../settings-profile.inc | 0 assets/img/lang-icon.png | Bin 0 -> 11260 bytes .../bandwidth-diagram.inc | 0 .../channel-mapping.inc | 0 .../connection-setup-window.inc | 0 .../diagram-overview.inc | 0 .../diagram-reg-server.inc | 0 .../diagram-unreg-server.inc | 0 .../led-green.inc | 0 .../led-red.inc | 0 .../led-yellow.inc | 0 .../main-screen-default.inc | 0 .../main-screen-medium.inc | 0 .../mixer-channels.inc | 0 .../profile-tooltip.inc | 0 .../server-active.inc | 0 .../server-inactive.inc | 0 .../settings-advanced.inc | 0 .../settings-network.inc | 0 .../settings-profile.inc | 0 .../bandwidth-diagram.inc | 0 .../channel-mapping.inc | 0 .../connection-setup-window.inc | 0 .../diagram-overview.inc | 0 .../diagram-reg-server.inc | 0 .../diagram-unreg-server.inc | 0 .../led-green.inc | 0 .../led-red.inc | 0 .../led-yellow.inc | 0 .../main-screen-default.inc | 0 .../main-screen-medium.inc | 0 .../mixer-channels.inc | 0 .../profile-tooltip.inc | 0 .../server-active.inc | 0 .../server-inactive.inc | 0 .../settings-advanced.inc | 0 .../settings-network.inc | 0 .../settings-profile.inc | 0 .../bandwidth-diagram.inc | 0 .../channel-mapping.inc | 0 .../connection-setup-window.inc | 0 .../diagram-overview.inc | 0 .../diagram-reg-server.inc | 0 .../diagram-unreg-server.inc | 0 .../led-green.inc | 0 .../led-red.inc | 0 .../led-yellow.inc | 0 .../main-screen-default.inc | 0 .../main-screen-medium.inc | 0 .../mixer-channels.inc | 0 .../profile-tooltip.inc | 0 .../server-active.inc | 0 .../server-inactive.inc | 0 .../settings-advanced.inc | 0 .../settings-network.inc | 0 .../settings-profile.inc | 0 .../bandwidth-diagram.inc | 0 .../channel-mapping.inc | 0 .../connection-setup-window.inc | 0 .../diagram-overview.inc | 0 .../diagram-reg-server.inc | 0 .../diagram-unreg-server.inc | 0 .../led-green.inc | 0 .../led-red.inc | 0 .../led-yellow.inc | 0 .../main-screen-default.inc | 0 .../main-screen-medium.inc | 0 .../mixer-channels.inc | 0 .../profile-tooltip.inc | 0 .../server-active.inc | 0 .../server-inactive.inc | 0 .../settings-advanced.inc | 0 .../settings-network.inc | 0 .../settings-profile.inc | 0 sitemap.xml | 2 +- 110 files changed, 280 insertions(+), 101 deletions(-) create mode 120000 1-ko-KR-index.md delete mode 120000 1-ko_KR-index.md delete mode 120000 1-nb_NO-index.md create mode 120000 1-no-NO-index.md create mode 120000 1-pt-BR-index.md create mode 120000 1-pt-PT-index.md delete mode 120000 1-pt_BR-index.md delete mode 120000 1-pt_PT-index.md create mode 120000 1-zh-CN-index.md delete mode 120000 1-zh_CN-index.md rename assets/img/{ko_KR-screenshots => ko-KR-screenshots}/bandwidth-diagram.inc (100%) rename assets/img/{ko_KR-screenshots => ko-KR-screenshots}/channel-mapping.inc (100%) rename assets/img/{ko_KR-screenshots => ko-KR-screenshots}/connection-setup-window.inc (100%) rename assets/img/{ko_KR-screenshots => ko-KR-screenshots}/diagram-overview.inc (100%) rename assets/img/{ko_KR-screenshots => ko-KR-screenshots}/diagram-reg-server.inc (100%) rename assets/img/{ko_KR-screenshots => ko-KR-screenshots}/diagram-unreg-server.inc (100%) rename assets/img/{ko_KR-screenshots => ko-KR-screenshots}/led-green.inc (100%) rename assets/img/{ko_KR-screenshots => ko-KR-screenshots}/led-red.inc (100%) rename assets/img/{ko_KR-screenshots => ko-KR-screenshots}/led-yellow.inc (100%) rename assets/img/{ko_KR-screenshots => ko-KR-screenshots}/main-screen-default.inc (100%) rename assets/img/{ko_KR-screenshots => ko-KR-screenshots}/main-screen-medium.inc (100%) rename assets/img/{ko_KR-screenshots => ko-KR-screenshots}/mixer-channels.inc (100%) rename assets/img/{ko_KR-screenshots => ko-KR-screenshots}/profile-tooltip.inc (100%) rename assets/img/{ko_KR-screenshots => ko-KR-screenshots}/server-active.inc (100%) rename assets/img/{ko_KR-screenshots => ko-KR-screenshots}/server-inactive.inc (100%) rename assets/img/{ko_KR-screenshots => ko-KR-screenshots}/settings-advanced.inc (100%) rename assets/img/{ko_KR-screenshots => ko-KR-screenshots}/settings-network.inc (100%) rename assets/img/{ko_KR-screenshots => ko-KR-screenshots}/settings-profile.inc (100%) create mode 100644 assets/img/lang-icon.png rename assets/img/{nb_NO-screenshots => nb-NO-screenshots}/bandwidth-diagram.inc (100%) rename assets/img/{nb_NO-screenshots => nb-NO-screenshots}/channel-mapping.inc (100%) rename assets/img/{nb_NO-screenshots => nb-NO-screenshots}/connection-setup-window.inc (100%) rename assets/img/{nb_NO-screenshots => nb-NO-screenshots}/diagram-overview.inc (100%) rename assets/img/{nb_NO-screenshots => nb-NO-screenshots}/diagram-reg-server.inc (100%) rename assets/img/{nb_NO-screenshots => nb-NO-screenshots}/diagram-unreg-server.inc (100%) rename assets/img/{nb_NO-screenshots => nb-NO-screenshots}/led-green.inc (100%) rename assets/img/{nb_NO-screenshots => nb-NO-screenshots}/led-red.inc (100%) rename assets/img/{nb_NO-screenshots => nb-NO-screenshots}/led-yellow.inc (100%) rename assets/img/{nb_NO-screenshots => nb-NO-screenshots}/main-screen-default.inc (100%) rename assets/img/{nb_NO-screenshots => nb-NO-screenshots}/main-screen-medium.inc (100%) rename assets/img/{nb_NO-screenshots => nb-NO-screenshots}/mixer-channels.inc (100%) rename assets/img/{nb_NO-screenshots => nb-NO-screenshots}/profile-tooltip.inc (100%) rename assets/img/{nb_NO-screenshots => nb-NO-screenshots}/server-active.inc (100%) rename assets/img/{nb_NO-screenshots => nb-NO-screenshots}/server-inactive.inc (100%) rename assets/img/{nb_NO-screenshots => nb-NO-screenshots}/settings-advanced.inc (100%) rename assets/img/{nb_NO-screenshots => nb-NO-screenshots}/settings-network.inc (100%) rename assets/img/{nb_NO-screenshots => nb-NO-screenshots}/settings-profile.inc (100%) rename assets/img/{pt_BR-screenshots => pt-BR-screenshots}/bandwidth-diagram.inc (100%) rename assets/img/{pt_BR-screenshots => pt-BR-screenshots}/channel-mapping.inc (100%) rename assets/img/{pt_BR-screenshots => pt-BR-screenshots}/connection-setup-window.inc (100%) rename assets/img/{pt_BR-screenshots => pt-BR-screenshots}/diagram-overview.inc (100%) rename assets/img/{pt_BR-screenshots => pt-BR-screenshots}/diagram-reg-server.inc (100%) rename assets/img/{pt_BR-screenshots => pt-BR-screenshots}/diagram-unreg-server.inc (100%) rename assets/img/{pt_BR-screenshots => pt-BR-screenshots}/led-green.inc (100%) rename assets/img/{pt_BR-screenshots => pt-BR-screenshots}/led-red.inc (100%) rename assets/img/{pt_BR-screenshots => pt-BR-screenshots}/led-yellow.inc (100%) rename assets/img/{pt_BR-screenshots => pt-BR-screenshots}/main-screen-default.inc (100%) rename assets/img/{pt_BR-screenshots => pt-BR-screenshots}/main-screen-medium.inc (100%) rename assets/img/{pt_BR-screenshots => pt-BR-screenshots}/mixer-channels.inc (100%) rename assets/img/{pt_BR-screenshots => pt-BR-screenshots}/profile-tooltip.inc (100%) rename assets/img/{pt_BR-screenshots => pt-BR-screenshots}/server-active.inc (100%) rename assets/img/{pt_BR-screenshots => pt-BR-screenshots}/server-inactive.inc (100%) rename assets/img/{pt_BR-screenshots => pt-BR-screenshots}/settings-advanced.inc (100%) rename assets/img/{pt_BR-screenshots => pt-BR-screenshots}/settings-network.inc (100%) rename assets/img/{pt_BR-screenshots => pt-BR-screenshots}/settings-profile.inc (100%) rename assets/img/{pt_PT-screenshots => pt-PT-screenshots}/bandwidth-diagram.inc (100%) rename assets/img/{pt_PT-screenshots => pt-PT-screenshots}/channel-mapping.inc (100%) rename assets/img/{pt_PT-screenshots => pt-PT-screenshots}/connection-setup-window.inc (100%) rename assets/img/{pt_PT-screenshots => pt-PT-screenshots}/diagram-overview.inc (100%) rename assets/img/{pt_PT-screenshots => pt-PT-screenshots}/diagram-reg-server.inc (100%) rename assets/img/{pt_PT-screenshots => pt-PT-screenshots}/diagram-unreg-server.inc (100%) rename assets/img/{pt_PT-screenshots => pt-PT-screenshots}/led-green.inc (100%) rename assets/img/{pt_PT-screenshots => pt-PT-screenshots}/led-red.inc (100%) rename assets/img/{pt_PT-screenshots => pt-PT-screenshots}/led-yellow.inc (100%) rename assets/img/{pt_PT-screenshots => pt-PT-screenshots}/main-screen-default.inc (100%) rename assets/img/{pt_PT-screenshots => pt-PT-screenshots}/main-screen-medium.inc (100%) rename assets/img/{pt_PT-screenshots => pt-PT-screenshots}/mixer-channels.inc (100%) rename assets/img/{pt_PT-screenshots => pt-PT-screenshots}/profile-tooltip.inc (100%) rename assets/img/{pt_PT-screenshots => pt-PT-screenshots}/server-active.inc (100%) rename assets/img/{pt_PT-screenshots => pt-PT-screenshots}/server-inactive.inc (100%) rename assets/img/{pt_PT-screenshots => pt-PT-screenshots}/settings-advanced.inc (100%) rename assets/img/{pt_PT-screenshots => pt-PT-screenshots}/settings-network.inc (100%) rename assets/img/{pt_PT-screenshots => pt-PT-screenshots}/settings-profile.inc (100%) rename assets/img/{zh_CN-screenshots => zh-CN-screenshots}/bandwidth-diagram.inc (100%) rename assets/img/{zh_CN-screenshots => zh-CN-screenshots}/channel-mapping.inc (100%) rename assets/img/{zh_CN-screenshots => zh-CN-screenshots}/connection-setup-window.inc (100%) rename assets/img/{zh_CN-screenshots => zh-CN-screenshots}/diagram-overview.inc (100%) rename assets/img/{zh_CN-screenshots => zh-CN-screenshots}/diagram-reg-server.inc (100%) rename assets/img/{zh_CN-screenshots => zh-CN-screenshots}/diagram-unreg-server.inc (100%) rename assets/img/{zh_CN-screenshots => zh-CN-screenshots}/led-green.inc (100%) rename assets/img/{zh_CN-screenshots => zh-CN-screenshots}/led-red.inc (100%) rename assets/img/{zh_CN-screenshots => zh-CN-screenshots}/led-yellow.inc (100%) rename assets/img/{zh_CN-screenshots => zh-CN-screenshots}/main-screen-default.inc (100%) rename assets/img/{zh_CN-screenshots => zh-CN-screenshots}/main-screen-medium.inc (100%) rename assets/img/{zh_CN-screenshots => zh-CN-screenshots}/mixer-channels.inc (100%) rename assets/img/{zh_CN-screenshots => zh-CN-screenshots}/profile-tooltip.inc (100%) rename assets/img/{zh_CN-screenshots => zh-CN-screenshots}/server-active.inc (100%) rename assets/img/{zh_CN-screenshots => zh-CN-screenshots}/server-inactive.inc (100%) rename assets/img/{zh_CN-screenshots => zh-CN-screenshots}/settings-advanced.inc (100%) rename assets/img/{zh_CN-screenshots => zh-CN-screenshots}/settings-network.inc (100%) rename assets/img/{zh_CN-screenshots => zh-CN-screenshots}/settings-profile.inc (100%) diff --git a/.github/workflows/add-lang.yml b/.github/workflows/add-lang.yml index f59925dc8..f6e8be953 100644 --- a/.github/workflows/add-lang.yml +++ b/.github/workflows/add-lang.yml @@ -17,12 +17,14 @@ jobs: ISSUE_TITLE: ${{ github.event.issue.title }} ISSUE_NUM: ${{ github.event.issue.number }} run: | - NEW_LANG=$(sed 's/.*\[\([^]]*\)].*/\1/' <<< "$ISSUE_TITLE") - if [[ $NEW_LANG =~ ^[a-z]{2}(_[A-Z]{2})?$ ]]; then - echo "new_lang=$NEW_LANG" >> $GITHUB_ENV + LANG_CODE=$(sed 's/.*\[\([^]]*\)].*/\1/' <<< "$ISSUE_TITLE") + FULL_LANG=$(sed 's/.*<\([^>]*\)>.*/\1/' <<< "$ISSUE_TITLE") + if [[ $LANG_CODE =~ ^[a-z]{2}(-[A-Z]{2})?$ && $ISSUE_TITLE =~ <[^>]+> ]]; then + echo "lang_code=$LANG_CODE" >> $GITHUB_ENV + echo "full_lang=$FULL_LANG" >> $GITHUB_ENV echo "issue_num=$ISSUE_NUM" >> $GITHUB_ENV else - echo Error: language code in wrong format. + echo Error: language name/code in wrong format. exit 1 fi @@ -34,11 +36,11 @@ jobs: # Check if language has been added previously. - name: Check if language is already present run: | - if [ -d "_translator-files/po/${{ env.new_lang }}" ] ; then - echo Error: The language [${{ env.new_lang }}] seems to already exist. + if [ -d "_translator-files/po/${{ env.lang_code }}" ] ; then + echo Error: The language [${{ env.lang_code }}] seems to already exist. exit 1 else - echo Language: [${{ env.new_lang }}] not detected. Proceeding to add [${{ env.new_lang }}]. + echo Language: [${{ env.lang_code }}] not detected. Proceeding to add [${{ env.lang_code }}]. fi # Check po4a cache. If CACHE_HIT: true, retrieve the cache. @@ -64,7 +66,7 @@ jobs: with: branch: next-release default_author: github_actions - message: 'AUTO: Add new language: (${{ env.new_lang }}) #${{ env.issue_num }}' + message: 'AUTO: Add new language: ${{ env.lang_code }}: ${{ env.full_lang }} #${{ env.issue_num }}' # Add comment to issue informing of the creation of the language files: - name: Add comment to issue @@ -72,11 +74,11 @@ jobs: with: issue-number: ${{ env.issue_num }} body: | - - The .po files have been created for **${{ env.new_lang }}** and are now available on [Weblate](https://hosted.weblate.org/projects/jamulus/#languages). If you prefer not to use Weblate and intend to submit translations via a Pull Request, your language files can be found on the `next-release` branch in `_translator-files/po/${{ env.new_lang }}/`. + - The .po files have been created for **${{ env.full_lang }}** and are now available on [Weblate](https://hosted.weblate.org/projects/jamulus/#languages). If you prefer not to use Weblate and intend to submit translations via a Pull Request, your language files can be found on the `next-release` branch in `_translator-files/po/${{ env.lang_code }}/`. - Please consult [this README file](https://github.com/jamulussoftware/jamuluswebsite/tree/next-release/_translator-files#readme) for more information on the translation process. # Create target translated files. Never pushed to the repo. - - name: Create translated docs and stats + - name: Create translated docs run: ./_po4a-tools/po4a-create-all-targets.sh # Build site diff --git a/1-ko-KR-index.md b/1-ko-KR-index.md new file mode 120000 index 000000000..dcbfc3e5f --- /dev/null +++ b/1-ko-KR-index.md @@ -0,0 +1 @@ +wiki/ko-KR/1-index.md \ No newline at end of file diff --git a/1-ko_KR-index.md b/1-ko_KR-index.md deleted file mode 120000 index a0ddd1ed5..000000000 --- a/1-ko_KR-index.md +++ /dev/null @@ -1 +0,0 @@ -wiki/it/1-index.md \ No newline at end of file diff --git a/1-nb_NO-index.md b/1-nb_NO-index.md deleted file mode 120000 index 7ed927f5b..000000000 --- a/1-nb_NO-index.md +++ /dev/null @@ -1 +0,0 @@ -wiki/nb_NO/1-index.md \ No newline at end of file diff --git a/1-no-NO-index.md b/1-no-NO-index.md new file mode 120000 index 000000000..744c886c5 --- /dev/null +++ b/1-no-NO-index.md @@ -0,0 +1 @@ +wiki/nb-NO/1-index.md \ No newline at end of file diff --git a/1-pt-BR-index.md b/1-pt-BR-index.md new file mode 120000 index 000000000..b359112af --- /dev/null +++ b/1-pt-BR-index.md @@ -0,0 +1 @@ +wiki/pt-BR/1-index.md \ No newline at end of file diff --git a/1-pt-PT-index.md b/1-pt-PT-index.md new file mode 120000 index 000000000..9a57c11cc --- /dev/null +++ b/1-pt-PT-index.md @@ -0,0 +1 @@ +wiki/pt-PT/1-index.md \ No newline at end of file diff --git a/1-pt_BR-index.md b/1-pt_BR-index.md deleted file mode 120000 index cde6353a4..000000000 --- a/1-pt_BR-index.md +++ /dev/null @@ -1 +0,0 @@ -wiki/pt_BR/1-index.md \ No newline at end of file diff --git a/1-pt_PT-index.md b/1-pt_PT-index.md deleted file mode 120000 index cee00554d..000000000 --- a/1-pt_PT-index.md +++ /dev/null @@ -1 +0,0 @@ -wiki/pt_PT/1-index.md \ No newline at end of file diff --git a/1-zh-CN-index.md b/1-zh-CN-index.md new file mode 120000 index 000000000..ce52b6b04 --- /dev/null +++ b/1-zh-CN-index.md @@ -0,0 +1 @@ +wiki/zh-CN/1-index.md \ No newline at end of file diff --git a/1-zh_CN-index.md b/1-zh_CN-index.md deleted file mode 120000 index 64e3ade1a..000000000 --- a/1-zh_CN-index.md +++ /dev/null @@ -1 +0,0 @@ -wiki/zh_CN/1-index.md \ No newline at end of file diff --git a/_config.yml b/_config.yml index cc7a3169b..4d065b3f5 100644 --- a/_config.yml +++ b/_config.yml @@ -2,8 +2,20 @@ plugins: - jekyll-paginate-v2 - jekyll-polyglot - jekyll-minifier -languages: ["en", "zh_CN", "nb_NO", "ko_KR", "pt_BR", "pt_PT", "nl", "es", "de", "it", "fr"] +languages: ["en", "zh-CN", "nb-NO", "ko-KR", "pt-BR", "pt-PT", "nl", "es", "de", "it", "fr"] default_lang: "en" +language_names: + en: English + zh-CN: 简体中文 + nb-NO: Norsk (bokmål) + ko-KR: 한국어 + pt-PT: Português (Portugal) + pt-BR: Português (Brasil) + nl: Nederlands + es: Español + de: Deutsch + it: Italiano + fr: Français exclude_from_localization: ["assets", "images", "css", "README.md", "manifest.json", "humans.txt", "sitemap.xml", "robots.txt", "404.html", "CNAME", "LICENSE.md"] parallel_localization: true a_rootpage: "https://jamulus.io" diff --git a/_includes/general/nav.html b/_includes/general/nav.html index 478556936..e14af317a 100644 --- a/_includes/general/nav.html +++ b/_includes/general/nav.html @@ -6,7 +6,8 @@ {% for item in site.data.navigation.nav %} {% if item.url %}
  • -

    {{ item.title }}

    + {% if page.lang == site.default_lang %}{% capture lang_rel %}canonical{% endcapture %}{% else %}{% capture lang_rel %}alternate{% endcapture %}{% endif %} +

    {{ item.title }}

    {% else %}
  • {{ item.title }}

    @@ -14,11 +15,13 @@

    {{ item.title }}

    {% if item.subfolderitems[0] %}
      {% for entry in item.subfolderitems %} -
    • {{ entry.page }} + {% if page.lang == site.default_lang %}{% capture lang_rel %}canonical{% endcapture %}{% else %}{% capture lang_rel %}alternate{% endcapture %}{% endif %} +
    • {{ entry.page }} {% if entry.subsubfolderitems[0] %}
        - {% for subentry in entry.subsubfolderitems %} -
      • {{ subentry.page }}
      • + {% for subentry in entry.subsubfolderitems %} + {% if page.lang == site.default_lang %}{% capture lang_rel %}canonical{% endcapture %}{% else %}{% capture lang_rel %}alternate{% endcapture %}{% endif %} +
      • {{ subentry.page }}
      • {% endfor %}
      {% endif %} @@ -30,6 +33,6 @@

      {{ item.title }}

      {% endfor %} {% endif %}
    -
    {{ site.data.copyright.nav.docs }}
    +
    {{ site.data.copyright.nav.docs }}
    diff --git a/_includes/headtags.html b/_includes/headtags.html index ec39696d1..97f35a10e 100644 --- a/_includes/headtags.html +++ b/_includes/headtags.html @@ -2,10 +2,11 @@ {% for lng in site.languages %} {% if lng == site.default_lang %} {% capture langlink %}{{ site.a_rootpage }}{{ page.url }}{% endcapture %} + {% else %} {% capture langlink %}{{ site.a_rootpage }}/{{ lng }}{{ page.url }}{% endcapture %} + {% endif %} - {% endfor %} diff --git a/_includes/langselect.html b/_includes/langselect.html index 63ffa89bf..c0a6d4444 100644 --- a/_includes/langselect.html +++ b/_includes/langselect.html @@ -1,17 +1,218 @@ -
    -
    This site might also be available in your native language. Select your preferred language below:
    -
      - {% for lng in site.languages %} - {% if lng == site.active_lang %} -
    • {{ lng }}
    • - {% else %} - {% if lng == site.default_lang %} - {% capture langlink %} {{ page.url }}{% endcapture %} - {% else %} - {% capture langlink %}/{{ lng }}{{ page.url }}{% endcapture %} - {% endif %} -
    • {{ lng }}
    • - {% endif %} - {% endfor %} -
    +
    +
    + +
    + + +
    +
    + + diff --git a/_po4a-tools/po4a-add-language.sh b/_po4a-tools/po4a-add-language.sh index 83044585e..f7c91cb7f 100755 --- a/_po4a-tools/po4a-add-language.sh +++ b/_po4a-tools/po4a-add-language.sh @@ -8,38 +8,40 @@ SCRIPT_DIR=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P ) cd "$SCRIPT_DIR" # Create and populate .po file folder -mkdir ../_translator-files/po/$new_lang +mkdir ../_translator-files/po/$lang_code echo '' -echo .po file folder created for "$new_lang" -echo Creating .po files for "$new_lang" +echo .po file folder created for "$lang_code" +echo Creating .po files for "$full_lang" ./po4a-update-templates.sh # Go to root directory cd ../ # Create symlinks for 1-index.md file -ln -s -r ./wiki/$new_lang/1-index.md ./1-$new_lang-index.md +ln -s -r ./wiki/$lang_code/1-index.md ./1-$lang_code-index.md if [ $(echo $?) == 0 ] ; then echo '' - echo 1-"$new_lang"-index.md symlink created for "$new_lang" in / + echo 1-"$lang_code"-index.md symlink created for "$full_lang" in / else - echo Error creating 1-"$new_lang"-index.md symlink in / + echo Error creating 1-"$lang_code"-index.md symlink in / exit 1 fi -# Add new language to array in _config.yml -sed -i "s/\(\[\"en\",\)/\1 \"$new_lang\",/" _config.yml +# Add new language to _config.yml +sed -i "s/\(\[\"en\",\)/\1 \"$lang_code\",/" _config.yml +sed -i "/^language_names:/a\ $lang_code: $full_lang" _config.yml + if [ $(echo $?) == 0 ] ; then - echo "$new_lang" added to language array in _config.yml + echo "$lang_code" added to _config.yml else - echo Error adding "$new_lang" to language array in _config.yml + echo Error adding "$lang_code" to _config.yml exit 1 fi # Create images folder for new language -if [ ! -d "./assets/img/$new_lang-screenshots" ] ; then - cp -frp ./assets/img/en-screenshots -T ./assets/img/$new_lang-screenshots - echo Screenshots created for "$new_lang" in ./assets/img/"$new_lang"-screenshots/ +if [ ! -d "./assets/img/$lang_code-screenshots" ] ; then + cp -frp ./assets/img/en-screenshots -T ./assets/img/$lang_code-screenshots + echo Screenshots created for "$full_lang" in ./assets/img/"$lang_code"-screenshots/ else - echo Error: screenshots folder for "$new_lang" seems to already exist + echo Error: screenshots folder for "$full_lang" seems to already exist fi diff --git a/_translator-files/README.md b/_translator-files/README.md index 2715e0da9..b20be457b 100644 --- a/_translator-files/README.md +++ b/_translator-files/README.md @@ -6,7 +6,7 @@ All the Jamulus project files (application and website) are listed together on W **Some tips regarding translations:** -- Change the `lang: en` parameter in the files containing it at the beginning of the file to your language code (it, fr, de, etc.). Remember that if you are translating a regional variation (e.g. `pt_BR`), that's what you must use. Also make sure the `permalink: [parameter]` (e.g. /wiki/Client-Troubleshooting) stays the same. +- Change the `lang: en` parameter in the files containing it at the beginning of the file to your language code (it, fr, de, etc.). Remember that if you are translating a regional variation (e.g. `pt-BR`), that's what you must use. Also make sure the `permalink: [parameter]` (e.g. /wiki/Client-Troubleshooting) stays the same. - At times there are links to other docs: `[translate this](don't translate this)`, or specific paragraphs in other parts of the website: `[translate this](don't translate this#translate-this-but-dont-use-capitals-nor-apostrophes)`. Make sure the last part after the hashtag uses the exact same words as the relevant paragraph title you use in your translation. - Some documents contain links to screenshots. Make sure you change the language code in them to your own. You can create screenshots for your language in `/assets/img/[LANG]-screenshots` - note that we do not store these image locally but instead use include files calling an external URL to them. Please see README.md on the website repository for further information. Also note that screenshots that do not need to be localised are symlinked to the English version from each `[LANG]-screenshots` directory. - There are documents containing portions of text that do not require translation, e.g. scripts, links, etc. In these cases, please do not leave the translation field empty, but copy the source text into the translation field. @@ -23,9 +23,9 @@ All the Jamulus project files (application and website) are listed together on W ## Adding a new language -Open an issue ([here](https://github.com/jamulussoftware/jamuluswebsite/issues)) with the language code of the new language you want to add in square brackets. It is important that you use the following format for the language code: +Open an issue ([here](https://github.com/jamulussoftware/jamuluswebsite/issues)) with the full language name (in your language) in between "less than/greater than" signs (<>) and the language code of the new language you want to add in square brackets. It is important that you use the following format for the language code: -- Lower case if it is a two-character code (e.g. "Add Basque [eu]") -- Lower case + underscore + upper case for regional variations (e.g. "Add Brazilian Portuguese [pt_BR]"). +- Lower case if it is a two-character code (e.g. "Add \ [eu]") +- Lower case + hyphen + upper case for regional variations (e.g. "Add \ [pt-BR]"). You will be notified on the issue thread you opened when the language files have been created. You can then work on the translations. diff --git a/assets/css/fw.css b/assets/css/fw.css index 1ad3a9d17..e5702e2ce 100644 --- a/assets/css/fw.css +++ b/assets/css/fw.css @@ -82,44 +82,10 @@ main li { margin-bottom: 0.5em; } -#suglang { - display: none; -} - -.chlang { - border: solid 2px #c94a55; - padding: 0.2em; -} - -.proplang { - font-style: italic; -} - -#langselect { - color: #1181a4; -} - -#langselect ul { - padding: 0; - margin: 0; - text-align: right; -} - -#langselect ul li { - display: inline-block; - list-style-type: none; - margin: 0 0.8em 0 0; - padding: 0; -} - -#langselect .selected, #gnav .selected, #paginator .selected { +#gnav .selected, #paginator .selected { font-weight: bold; text-decoration: underline; - color: #2b7288; -} - -#langselect.chlang ul li a, #langselect.chlang .selected { - color: inherit; + color: #2b7288; /* Dark moderate cyan */ } header #navbtn { @@ -321,10 +287,6 @@ details>summary { } @media (min-width:940px) { - #langselect ul li { - margin: 0 0.3em 0 0; - } - #mnv { display: block !important; } @@ -459,10 +421,6 @@ details>summary { background-color: #ea6571 !important; } - .chlang { - border-color: #ea6571; - } - #cc { color: #52bada; } diff --git a/assets/img/ko_KR-screenshots/bandwidth-diagram.inc b/assets/img/ko-KR-screenshots/bandwidth-diagram.inc similarity index 100% rename from assets/img/ko_KR-screenshots/bandwidth-diagram.inc rename to assets/img/ko-KR-screenshots/bandwidth-diagram.inc diff --git a/assets/img/ko_KR-screenshots/channel-mapping.inc b/assets/img/ko-KR-screenshots/channel-mapping.inc similarity index 100% rename from assets/img/ko_KR-screenshots/channel-mapping.inc rename to assets/img/ko-KR-screenshots/channel-mapping.inc diff --git a/assets/img/ko_KR-screenshots/connection-setup-window.inc b/assets/img/ko-KR-screenshots/connection-setup-window.inc similarity index 100% rename from assets/img/ko_KR-screenshots/connection-setup-window.inc rename to assets/img/ko-KR-screenshots/connection-setup-window.inc diff --git a/assets/img/ko_KR-screenshots/diagram-overview.inc b/assets/img/ko-KR-screenshots/diagram-overview.inc similarity index 100% rename from assets/img/ko_KR-screenshots/diagram-overview.inc rename to assets/img/ko-KR-screenshots/diagram-overview.inc diff --git a/assets/img/ko_KR-screenshots/diagram-reg-server.inc b/assets/img/ko-KR-screenshots/diagram-reg-server.inc similarity index 100% rename from assets/img/ko_KR-screenshots/diagram-reg-server.inc rename to assets/img/ko-KR-screenshots/diagram-reg-server.inc diff --git a/assets/img/ko_KR-screenshots/diagram-unreg-server.inc b/assets/img/ko-KR-screenshots/diagram-unreg-server.inc similarity index 100% rename from assets/img/ko_KR-screenshots/diagram-unreg-server.inc rename to assets/img/ko-KR-screenshots/diagram-unreg-server.inc diff --git a/assets/img/ko_KR-screenshots/led-green.inc b/assets/img/ko-KR-screenshots/led-green.inc similarity index 100% rename from assets/img/ko_KR-screenshots/led-green.inc rename to assets/img/ko-KR-screenshots/led-green.inc diff --git a/assets/img/ko_KR-screenshots/led-red.inc b/assets/img/ko-KR-screenshots/led-red.inc similarity index 100% rename from assets/img/ko_KR-screenshots/led-red.inc rename to assets/img/ko-KR-screenshots/led-red.inc diff --git a/assets/img/ko_KR-screenshots/led-yellow.inc b/assets/img/ko-KR-screenshots/led-yellow.inc similarity index 100% rename from assets/img/ko_KR-screenshots/led-yellow.inc rename to assets/img/ko-KR-screenshots/led-yellow.inc diff --git a/assets/img/ko_KR-screenshots/main-screen-default.inc b/assets/img/ko-KR-screenshots/main-screen-default.inc similarity index 100% rename from assets/img/ko_KR-screenshots/main-screen-default.inc rename to assets/img/ko-KR-screenshots/main-screen-default.inc diff --git a/assets/img/ko_KR-screenshots/main-screen-medium.inc b/assets/img/ko-KR-screenshots/main-screen-medium.inc similarity index 100% rename from assets/img/ko_KR-screenshots/main-screen-medium.inc rename to assets/img/ko-KR-screenshots/main-screen-medium.inc diff --git a/assets/img/ko_KR-screenshots/mixer-channels.inc b/assets/img/ko-KR-screenshots/mixer-channels.inc similarity index 100% rename from assets/img/ko_KR-screenshots/mixer-channels.inc rename to assets/img/ko-KR-screenshots/mixer-channels.inc diff --git a/assets/img/ko_KR-screenshots/profile-tooltip.inc b/assets/img/ko-KR-screenshots/profile-tooltip.inc similarity index 100% rename from assets/img/ko_KR-screenshots/profile-tooltip.inc rename to assets/img/ko-KR-screenshots/profile-tooltip.inc diff --git a/assets/img/ko_KR-screenshots/server-active.inc b/assets/img/ko-KR-screenshots/server-active.inc similarity index 100% rename from assets/img/ko_KR-screenshots/server-active.inc rename to assets/img/ko-KR-screenshots/server-active.inc diff --git a/assets/img/ko_KR-screenshots/server-inactive.inc b/assets/img/ko-KR-screenshots/server-inactive.inc similarity index 100% rename from assets/img/ko_KR-screenshots/server-inactive.inc rename to assets/img/ko-KR-screenshots/server-inactive.inc diff --git a/assets/img/ko_KR-screenshots/settings-advanced.inc b/assets/img/ko-KR-screenshots/settings-advanced.inc similarity index 100% rename from assets/img/ko_KR-screenshots/settings-advanced.inc rename to assets/img/ko-KR-screenshots/settings-advanced.inc diff --git a/assets/img/ko_KR-screenshots/settings-network.inc b/assets/img/ko-KR-screenshots/settings-network.inc similarity index 100% rename from assets/img/ko_KR-screenshots/settings-network.inc rename to assets/img/ko-KR-screenshots/settings-network.inc diff --git a/assets/img/ko_KR-screenshots/settings-profile.inc b/assets/img/ko-KR-screenshots/settings-profile.inc similarity index 100% rename from assets/img/ko_KR-screenshots/settings-profile.inc rename to assets/img/ko-KR-screenshots/settings-profile.inc diff --git a/assets/img/lang-icon.png b/assets/img/lang-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..04334f25967f35c0e15e978a416638b432e44f60 GIT binary patch literal 11260 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
  • {{ site.language_names[lng] }}
  • {% else %} {% if lng == site.default_lang %} - {% capture langlink %}{{ page.url }}{% endcapture %} + {% capture langlink %} + {{ site.baseurl }}{{ page.url | replace: '/*' }} + {% endcapture %} {% capture lang_rel %}canonical{% endcapture %} {% else %} - {% capture langlink %}/{{ lng }}{{ page.url }}{% endcapture %} + {% capture langlink %} + {{ site.baseurl }}/{{ lng }}{{ page.url }} + {% endcapture %} {% capture lang_rel %}alternate{% endcapture %} {% endif %}
  • {{ site.language_names[lng] }}
  • @@ -30,189 +35,3 @@ - - diff --git a/assets/css/langsel.css b/assets/css/langsel.css new file mode 100644 index 000000000..52042ce9f --- /dev/null +++ b/assets/css/langsel.css @@ -0,0 +1,111 @@ +#langselect-container { + text-align: right; +} + +#langselect ul li { + display: inline-block; + list-style-type: none; + margin: 0 0.8em 0 0; + padding: 0; +} + +#langselect .selected { + font-weight: bold; + text-decoration: none; + color: #2b7288; /* Dark moderate cyan */ + border: 2px solid #2b7288; /* Border with the same color */ + border-radius: 5px; /* Rounded corners */ + padding: 0; +} + +.language-dropdown { + position: relative; + display: inline-block; +} + +.dropdown-button { + background-color: #3daed2; /* Aquarius */ + color: white; + padding: 6px; + font-size: 16px; + border: none; + border-radius: 5px; + cursor: pointer; + text-align: left; + display: flex; + align-items: center; +} + +.dropdown-button-content { + display: flex; + align-items: center; +} + +.lang-icon { + height: 18px; + margin-right: 8px; +} + +.lang-text { + display: inline-block; +} + +.dropdown-button:hover { + text-decoration: none; + transition: 0.4s; + opacity: 0.8; +} + +.dropdown-content { + display: none; + position: absolute; + background-color: #eaf8fd; /* Light cyan */ + min-width: 80px; + box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); + border-radius: 5px; + z-index: 1; + padding: 0; + margin: 0; + list-style-type: none; + white-space: normal; + left: 0; + text-align: left; +} + +.language-dropdown:focus-within .dropdown-content { + display: block; +} + +.dropdown-content ul { + padding: 10px; + margin: 0; + text-align: left; +} + +.dropdown-content li { + width: 100%; + white-space: nowrap; +} + +.dropdown-content a { + padding: 0px; + text-decoration: none; + display: block; +} + +.dropdown-content a:hover { + background-color: #f1f1f1; /* Whitesmoke */ +} + +.selected { + font-weight: bold; +} + +/* Media query for small screens */ +@media (max-height: 500px) { + .dropdown-content { + max-height: 200px; /* Adjust the height as needed */ + overflow-y: auto; /* Enable vertical scrolling */ + overflow-x: hidden; /* Disable horizontal scrolling */ + } +} diff --git a/assets/img/lang-icon.png b/assets/img/lang-icon.png deleted file mode 100644 index 04334f25967f35c0e15e978a416638b432e44f60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11260 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 + + + + + + + From 13f90244c56379cde71590baa14cbc6c1f638b27 Mon Sep 17 00:00:00 2001 From: ignotus666 Date: Wed, 26 Jun 2024 18:10:55 +0200 Subject: [PATCH 03/18] Change add-lang message, remove suglang reference --- .github/workflows/add-lang.yml | 2 +- assets/css/noscript.css | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/add-lang.yml b/.github/workflows/add-lang.yml index f6e8be953..7d092523f 100644 --- a/.github/workflows/add-lang.yml +++ b/.github/workflows/add-lang.yml @@ -40,7 +40,7 @@ jobs: echo Error: The language [${{ env.lang_code }}] seems to already exist. exit 1 else - echo Language: [${{ env.lang_code }}] not detected. Proceeding to add [${{ env.lang_code }}]. + echo Language: [${{ env.lang_code }}] seems to be new as no Language: [${{ env.lang_code }}] was found. Proceeding to add [${{ env.lang_code }}]. fi # Check po4a cache. If CACHE_HIT: true, retrieve the cache. diff --git a/assets/css/noscript.css b/assets/css/noscript.css index ce66a38ad..ca86fc77b 100644 --- a/assets/css/noscript.css +++ b/assets/css/noscript.css @@ -1,3 +1,3 @@ -#suglang, #mnv { +#mnv { display: block !important; } From e4691dece27ca9517fb56210fc7571976c5fa3aa Mon Sep 17 00:00:00 2001 From: ignotus666 Date: Thu, 27 Jun 2024 08:47:29 +0200 Subject: [PATCH 04/18] Improve accessibility --- _includes/langselect.html | 10 +++++----- assets/css/langsel.css | 17 ++++++++++++++--- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/_includes/langselect.html b/_includes/langselect.html index 28c9ab232..39dc1f39f 100644 --- a/_includes/langselect.html +++ b/_includes/langselect.html @@ -2,19 +2,19 @@
    - - - - diff --git a/assets/css/langsel.css b/assets/css/langsel.css new file mode 100644 index 000000000..e09f66d23 --- /dev/null +++ b/assets/css/langsel.css @@ -0,0 +1,41 @@ +#langselect-container { + text-align: right; +} + +.language-dropdown { + display: inline-block; +} + +#language-select { + background-color: #3daed2; /* Aquarius */ + color: white; + padding: 6px; + font-size: 16px; + border: none; + border-radius: 5px; + cursor: pointer; + text-align: left; +} + +#language-select option { + color: #2b7288; /* Dark moderate cyan */ + background-color: #eaf8fd; /* Light cyan */ +} + +#language-select option[selected] { + font-weight: bold; +} + +/* Styling for hover and focus states */ +#language-select:hover, #language-select:focus { + opacity: 0.8; + transition: 0.4s; +} + +@media (max-height: 500px) { + #language-select { + max-height: 200px; /* Adjust the height as needed */ + overflow-y: auto; /* Enable vertical scrolling */ + overflow-x: hidden; /* Disable horizontal scrolling */ + } +} diff --git a/assets/css/noscript.css b/assets/css/noscript.css index ce66a38ad..ca86fc77b 100644 --- a/assets/css/noscript.css +++ b/assets/css/noscript.css @@ -1,3 +1,3 @@ -#suglang, #mnv { +#mnv { display: block !important; } diff --git a/assets/img/lang-icon.png b/assets/img/lang-icon.png deleted file mode 100644 index 04334f25967f35c0e15e978a416638b432e44f60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11260 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 Date: Tue, 2 Jul 2024 09:07:32 +0200 Subject: [PATCH 09/18] Add no-JS option --- _includes/langselect.html | 33 +++++++++++++++++++++++++-------- assets/css/langsel.css | 9 +++++---- assets/css/noscript.css | 5 +++++ 3 files changed, 35 insertions(+), 12 deletions(-) diff --git a/_includes/langselect.html b/_includes/langselect.html index 72143bba6..910351dbe 100644 --- a/_includes/langselect.html +++ b/_includes/langselect.html @@ -1,9 +1,28 @@
    -
    - + {% assign sorted_languages = site.languages | sort %} + {% for lng in sorted_languages %} + {% if lng == site.default_lang %} + {% capture langlink %} {{ page.url }}{% endcapture %} + {% capture lang_rel %}canonical{% endcapture %} + {% else %} + {% capture langlink %}{{ site.baseurl }}/{{ lng }}{{ page.url }}{% endcapture %} + {% capture lang_rel %}alternate{% endcapture %} + {% endif %} + + {% endfor %} + +
    + + +
    + +
    diff --git a/assets/css/langsel.css b/assets/css/langsel.css index e09f66d23..17212feba 100644 --- a/assets/css/langsel.css +++ b/assets/css/langsel.css @@ -1,7 +1,3 @@ -#langselect-container { - text-align: right; -} - .language-dropdown { display: inline-block; } @@ -39,3 +35,8 @@ overflow-x: hidden; /* Disable horizontal scrolling */ } } + +/* Hide the plain list of languages by default */ +.language-list { + display: none; +} diff --git a/assets/css/noscript.css b/assets/css/noscript.css index ca86fc77b..a7196d7f7 100644 --- a/assets/css/noscript.css +++ b/assets/css/noscript.css @@ -1,3 +1,8 @@ #mnv { display: block !important; } + +/* Force display of the plain list of languages when JS is disabled */ +.language-list { + display: block !important; +} From 452769676ef5643949eb1c6f828157c896bbd500 Mon Sep 17 00:00:00 2001 From: ignotus666 Date: Tue, 2 Jul 2024 13:44:57 +0200 Subject: [PATCH 10/18] Correction to no-JS list --- _includes/langselect.html | 6 +++--- assets/css/langsel.css | 17 +++++++++++++++++ assets/css/noscript.css | 7 ++++++- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/_includes/langselect.html b/_includes/langselect.html index 910351dbe..7e491eb56 100644 --- a/_includes/langselect.html +++ b/_includes/langselect.html @@ -1,6 +1,6 @@
    - +
    - + diff --git a/assets/css/langsel.css b/assets/css/langsel.css index 17212feba..9cd4ea76d 100644 --- a/assets/css/langsel.css +++ b/assets/css/langsel.css @@ -40,3 +40,20 @@ .language-list { display: none; } + +/* Horizontal list with JS disabled */ +.language-list { + list-style: none; + padding: 0; + margin: 0; + display: flex; +} + +.language-list li { + margin-right: 10px; /* Adjust spacing as needed */ +} + +.language-list li a { + text-decoration: none; + color: #3daed2; +} diff --git a/assets/css/noscript.css b/assets/css/noscript.css index a7196d7f7..cd38d4756 100644 --- a/assets/css/noscript.css +++ b/assets/css/noscript.css @@ -4,5 +4,10 @@ /* Force display of the plain list of languages when JS is disabled */ .language-list { - display: block !important; + display: flex !important; +} + +/* Hide the language dropdown when JS is disabled */ +.language-dropdown { + display: none !important; } From 0178a3b3cc196d11ce36afc537ab0e9a3c463b8a Mon Sep 17 00:00:00 2001 From: ignotus666 Date: Tue, 2 Jul 2024 15:36:44 +0200 Subject: [PATCH 11/18] Make non-JS selection highlighted --- _includes/langselect.html | 2 +- assets/css/langsel.css | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/_includes/langselect.html b/_includes/langselect.html index 7e491eb56..642fa0eb5 100644 --- a/_includes/langselect.html +++ b/_includes/langselect.html @@ -31,7 +31,7 @@ {% capture langlink %}{{ site.baseurl }}/{{ lng }}{{ page.url }}{% endcapture %} {% capture lang_rel %}alternate{% endcapture %} {% endif %} -
  • {{ lng }}
  • +
  • {{ lng }}
  • {% endfor %} diff --git a/assets/css/langsel.css b/assets/css/langsel.css index 9cd4ea76d..e5462ec88 100644 --- a/assets/css/langsel.css +++ b/assets/css/langsel.css @@ -41,7 +41,7 @@ display: none; } -/* Horizontal list with JS disabled */ +/* Horizontal list styling */ .language-list { list-style: none; padding: 0; @@ -55,5 +55,11 @@ .language-list li a { text-decoration: none; - color: #3daed2; + color: #3daed2; /* Match the dropdown button color */ +} + +/* Highlight the active language code */ +.language-list li a.active { + font-weight: bold; + text-decoration: underline; } From 15510fd0426a12a30bda1d01714cc1013f07087f Mon Sep 17 00:00:00 2001 From: ignotus666 Date: Wed, 3 Jul 2024 16:14:53 +0200 Subject: [PATCH 12/18] Add language-container to fw.css --- assets/css/fw.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/assets/css/fw.css b/assets/css/fw.css index e5702e2ce..61ca44ad5 100644 --- a/assets/css/fw.css +++ b/assets/css/fw.css @@ -82,6 +82,10 @@ main li { margin-bottom: 0.5em; } +#langselect-container { + text-align: right; +} + #gnav .selected, #paginator .selected { font-weight: bold; text-decoration: underline; From 5d837794f5694ea47b432626be8bd3d709cb3938 Mon Sep 17 00:00:00 2001 From: ignotus666 Date: Wed, 10 Jul 2024 10:49:14 +0200 Subject: [PATCH 13/18] Correct translation readme --- _translator-files/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_translator-files/README.md b/_translator-files/README.md index b20be457b..039e77edf 100644 --- a/_translator-files/README.md +++ b/_translator-files/README.md @@ -23,9 +23,9 @@ All the Jamulus project files (application and website) are listed together on W ## Adding a new language -Open an issue ([here](https://github.com/jamulussoftware/jamuluswebsite/issues)) with the full language name (in your language) in between "less than/greater than" signs (<>) and the language code of the new language you want to add in square brackets. It is important that you use the following format for the language code: +Open an issue ([here](https://github.com/jamulussoftware/jamuluswebsite/issues)) with the full language name (in your language) enclosed in angle brackets (<>) and the language code of the new language you want to add in square brackets. It is important that you use the following format for the language code: -- Lower case if it is a two-character code (e.g. "Add \ [eu]") +- Lower case if it is a two-character code (e.g. "Add \ [eu]") - Lower case + hyphen + upper case for regional variations (e.g. "Add \ [pt-BR]"). You will be notified on the issue thread you opened when the language files have been created. You can then work on the translations. From 6d642e93711924c3d4130fee7ddb4a18cb7b8bc1 Mon Sep 17 00:00:00 2001 From: ignotus666 Date: Mon, 15 Jul 2024 15:59:20 +0200 Subject: [PATCH 14/18] Fix canonical/alternate links --- _includes/lang-links.html | 10 ++++++++++ _includes/langselect.html | 14 +++++++------- _layouts/mainhomepage.html | 3 +++ 3 files changed, 20 insertions(+), 7 deletions(-) create mode 100644 _includes/lang-links.html diff --git a/_includes/lang-links.html b/_includes/lang-links.html new file mode 100644 index 000000000..46c115249 --- /dev/null +++ b/_includes/lang-links.html @@ -0,0 +1,10 @@ + +{% assign sorted_languages = site.languages | sort %} +{% for lng in sorted_languages %} + {% if lng == site.default_lang %} + + {% else %} + + {% endif %} +{% endfor %} + diff --git a/_includes/langselect.html b/_includes/langselect.html index 642fa0eb5..8026c1e63 100644 --- a/_includes/langselect.html +++ b/_includes/langselect.html @@ -7,11 +7,9 @@ {% assign sorted_languages = site.languages | sort %} {% for lng in sorted_languages %} {% if lng == site.default_lang %} - {% capture langlink %} {{ page.url }}{% endcapture %} - {% capture lang_rel %}canonical{% endcapture %} + {% capture langlink %}{{ page.url }}{% endcapture %} {% else %} {% capture langlink %}{{ site.baseurl }}/{{ lng }}{{ page.url }}{% endcapture %} - {% capture lang_rel %}alternate{% endcapture %} {% endif %}