From c8c7e1546f425c1c1d32cb90c66746b002cda6c4 Mon Sep 17 00:00:00 2001 From: sspanak Date: Mon, 21 Oct 2024 16:56:30 +0300 Subject: [PATCH] help translations --- app/build.gradle | 8 +- app/constants.gradle | 4 +- app/help-tools.gradle | 10 +- .../sspanak/tt9/preferences/HelpActivity.java | 18 +- .../screens/main/MainSettingsScreen.java | 13 + .../sspanak/tt9/util/SystemSettings.java | 2 + app/src/main/res/xml/prefs.xml | 1 - docs/help/help.en.md | 335 +++++++++++++++++ docs/help/help.es.md | 332 +++++++++++++++++ docs/help/help.ru.md | 332 +++++++++++++++++ docs/user-manual.md | 336 +----------------- 11 files changed, 1044 insertions(+), 347 deletions(-) create mode 100644 docs/help/help.en.md create mode 100644 docs/help/help.es.md create mode 100644 docs/help/help.ru.md mode change 100644 => 120000 docs/user-manual.md diff --git a/app/build.gradle b/app/build.gradle index 0a85ebd5..7eafc4e9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -32,11 +32,11 @@ tasks.register('copyDictionaries', Copy) { } tasks.register('convertHelp') { - inputs.file HELP_MARKDOWN - outputs.file HELP_HTML + inputs.dir HELP_MARKDOWN_DIR + outputs.dir HELP_HTML_DIR doLast { - markdownToHTML(HELP_MARKDOWN, HELP_HTML) + convertHelpDocs(HELP_MARKDOWN_DIR, HELP_HTML_DIR) } } @@ -58,7 +58,7 @@ tasks.register('updateManifest') { clean { delete LANGUAGES_OUTPUT_DIR delete DICTIONARIES_OUTPUT_DIR - delete HELP_HTML + delete HELP_HTML_DIR } // using the exported Closures directly causes weird values, hence the extra wrappers here diff --git a/app/constants.gradle b/app/constants.gradle index a72b130c..4c96c664 100644 --- a/app/constants.gradle +++ b/app/constants.gradle @@ -10,8 +10,8 @@ def ROOT_DIR = "${project.rootDir}/app" def MAIN_ASSETS_DIR = "${ROOT_DIR}/src/main/assets" def FULL_VERSION_ASSETS_DIR = "${ROOT_DIR}/src/full/assets" -ext.HELP_MARKDOWN = "${project.rootDir}/docs/user-manual.md" -ext.HELP_HTML = "${MAIN_ASSETS_DIR}/help.html" +ext.HELP_MARKDOWN_DIR = "${project.rootDir}/docs/help" +ext.HELP_HTML_DIR = "${MAIN_ASSETS_DIR}/help" ext.LANGUAGES_INPUT_DIR = "${ROOT_DIR}/${LANGUAGES_DIR_NAME}" ext.DEFINITIONS_INPUT_DIR = "${LANGUAGES_INPUT_DIR}/${DEFINITIONS_DIR_NAME}" diff --git a/app/help-tools.gradle b/app/help-tools.gradle index 0c147aa0..b8d343e7 100644 --- a/app/help-tools.gradle +++ b/app/help-tools.gradle @@ -1,4 +1,10 @@ -ext.markdownToHTML = { markdownPath, htmlPath -> +ext.convertHelpDocs = {markdownDir, htmlDir -> + fileTree(markdownDir).getFiles().parallelStream().forEach { File markdownPath -> + markdownToHtml(markdownPath.path, "${htmlDir}/${markdownPath.name.replaceAll("\\.md\$", ".html")}") + } +} + +static markdownToHtml(markdownPath, htmlPath) { def text = new File(markdownPath).text text = convertHeaders(text) @@ -63,7 +69,7 @@ static convertHeaders(markdown) { } def header = line.replaceAll("^#+", "").trim() - def anchor = header.toLowerCase().replaceAll("[^a-z0-9]+", "-").replaceAll("[\\-]+\$", "") + def anchor = header.toLowerCase().replaceAll("[^\\d\\p{L}]+", "-").replaceAll("[\\-]+\$", "") return "${header}" } else { diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/HelpActivity.java b/app/src/main/java/io/github/sspanak/tt9/preferences/HelpActivity.java index c98031b2..b7eb51a9 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/HelpActivity.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/HelpActivity.java @@ -3,12 +3,14 @@ package io.github.sspanak.tt9.preferences; import android.content.res.AssetManager; import java.io.BufferedReader; +import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import io.github.sspanak.tt9.ui.WebViewActivity; import io.github.sspanak.tt9.util.Logger; +import io.github.sspanak.tt9.util.SystemSettings; public class HelpActivity extends WebViewActivity { @Override @@ -18,9 +20,8 @@ public class HelpActivity extends WebViewActivity { @Override protected String getText() { - AssetManager assets = getAssets(); try { - InputStream stream = assets.open("help.html"); + InputStream stream = getHelpFileStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(stream, StandardCharsets.UTF_8)); StringBuilder builder = new StringBuilder(); String line; @@ -29,8 +30,19 @@ public class HelpActivity extends WebViewActivity { } return builder.toString(); } catch (Exception e) { - Logger.e(getClass().getSimpleName(), "Failed opening the help.html file."); + Logger.e(getClass().getSimpleName(), "Failed opening the help HTML document."); return ""; } } + + private InputStream getHelpFileStream() throws IOException { + AssetManager assets = getAssets(); + String systemLanguage = SystemSettings.getLocale().replaceFirst("_\\w+$", ""); + + try { + return assets.open("help/help." + systemLanguage + ".html"); + } catch (IOException ignored) { + return assets.open("help/help.en.html"); + } + } } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/main/MainSettingsScreen.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/main/MainSettingsScreen.java index 250ecf96..12be3d34 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/main/MainSettingsScreen.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/main/MainSettingsScreen.java @@ -25,6 +25,7 @@ public class MainSettingsScreen extends BaseScreenFragment { public void onCreate() { createSettingsSection(); createAboutSection(); + updateHelpButtonDescription(); resetFontSize(false); } @@ -51,6 +52,18 @@ public class MainSettingsScreen extends BaseScreenFragment { } + private void updateHelpButtonDescription() { + Preference help = findPreference("screen_help"); + if (help == null) { + return; + } + + String systemLanguage = SystemSettings.getLocale().replaceAll("_\\w+$", ""); + boolean missingLanguage = !systemLanguage.equals("en") && !systemLanguage.equals("es") && !systemLanguage.equals("ru"); + help.setSummary(missingLanguage ? "English only" : ""); + } + + private void createSettingsSection() { boolean isTT9On = SystemSettings.isTT9Enabled(activity); diff --git a/app/src/main/java/io/github/sspanak/tt9/util/SystemSettings.java b/app/src/main/java/io/github/sspanak/tt9/util/SystemSettings.java index 7b425154..36bef94c 100644 --- a/app/src/main/java/io/github/sspanak/tt9/util/SystemSettings.java +++ b/app/src/main/java/io/github/sspanak/tt9/util/SystemSettings.java @@ -7,6 +7,7 @@ import android.provider.Settings; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodManager; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import java.util.Locale; @@ -41,6 +42,7 @@ public class SystemSettings { return false; } + @NonNull public static String getLocale() { Locale locale = Build.VERSION.SDK_INT >= Build.VERSION_CODES.N ? LocaleList.getDefault().get(0) : Locale.getDefault(); String country = locale.getCountry(); diff --git a/app/src/main/res/xml/prefs.xml b/app/src/main/res/xml/prefs.xml index bac5506a..59b2af25 100644 --- a/app/src/main/res/xml/prefs.xml +++ b/app/src/main/res/xml/prefs.xml @@ -5,7 +5,6 @@