#!/usr/bin/env bash # Copyright (c) 2021-2026 community-scripts ORG # Author: Slaviša Arežina (tremor021) # License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE # Source: https://languagetool.org/ source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors setting_up_container network_check update_os msg_info "Installing dependencies" $STD apt install -y fasttext msg_ok "Installed dependencies" JAVA_VERSION="21" setup_java msg_info "Setting up LanguageTool" RELEASE=$(curl -fsSL https://languagetool.org/download/ | grep -oP 'LanguageTool-\K[0-9]+\.[0-9]+(\.[0-9]+)?(?=\.zip)' | sort -V | tail -n1) download_file "https://languagetool.org/download/LanguageTool-stable.zip" /tmp/LanguageTool-stable.zip unzip -q /tmp/LanguageTool-stable.zip -d /opt mv /opt/LanguageTool-*/ /opt/LanguageTool/ download_file "https://dl.fbaipublicfiles.com/fasttext/supervised-models/lid.176.bin" /opt/lid.176.bin read -r -p "Enter language code (en, de, es, fr, nl) to download ngrams or press ENTER to skip: " lang_code ngram_dir="" if [[ -n "$lang_code" ]]; then if [[ "$lang_code" =~ ^(en|de|es|fr|nl)$ ]]; then msg_info "Searching for $lang_code ngrams..." filename=$(curl -fsSL https://languagetool.org/download/ngram-data/ | grep -oP "ngrams-${lang_code}-[0-9]+\.zip" | sort -uV | tail -n1) if [[ -n "$filename" ]]; then msg_info "Downloading $filename" download_file "https://languagetool.org/download/ngram-data/${filename}" "/tmp/${filename}" mkdir -p /opt/ngrams msg_info "Extracting $lang_code ngrams to /opt/ngrams" unzip -q "/tmp/${filename}" -d /opt/ngrams rm "/tmp/${filename}" ngram_dir="/opt/ngrams" msg_ok "Installed $lang_code ngrams" else msg_info "No ngram file found for ${lang_code}" fi else msg_error "Invalid language code: $lang_code" fi fi cat </opt/LanguageTool/server.properties fasttextModel=/opt/lid.176.bin fasttextBinary=/usr/bin/fasttext EOF if [[ -n "$ngram_dir" ]]; then echo "languageModel=/opt/ngrams" >> /opt/LanguageTool/server.properties fi echo "${RELEASE}" >~/.languagetool msg_ok "Setup LanguageTool" msg_info "Creating Service" cat <<'EOF' >/etc/systemd/system/language-tool.service [Unit] Description=LanguageTool Service After=network.target [Service] WorkingDirectory=/opt/LanguageTool ExecStart=java -cp languagetool-server.jar org.languagetool.server.HTTPServer --config server.properties --public --allow-origin "*" Restart=always [Install] WantedBy=multi-user.target EOF systemctl enable -q --now language-tool msg_ok "Created Service" motd_ssh customize cleanup_lxc