diff --git a/config.toml b/config.toml index b9c39bf8..02210843 100644 --- a/config.toml +++ b/config.toml @@ -51,12 +51,14 @@ contact = "Contact Us" edit-on-github = "Edit on GitHub" engines = "Supported TTS Engines" faq-menu-title = "F.A.Q." +go-to-top = "Go to Top" install-appgallery = "Install Organic Maps from Huawei AppGallery" install-appstore = "Install Organic Maps from the AppStore" install-googleplay = "Install Organic Maps from Google Play" install-fdroid="Install Organic Maps from F-Droid" language = "English" language-word = "Language" +more-info-om = "For more information please visit our web-site" name = "Name" token = "Token" @@ -156,12 +158,14 @@ contact = "Kontakt" edit-on-github = "Auf GitHub bearbeiten" engines = "Unterstützte TTS-Modelle" faq-menu-title = "FAQ" +go-to-top = "Nach oben" install-appgallery = "Installiere Organic Maps aus der Huawei AppGallery" install-appstore = "Installiere Organic Maps aus dem AppStore" install-googleplay = "Installiere Organic Maps von Google Play" install-fdroid = "Installiere Organic Maps aus F-Droid" language = "Deutsch" language-word = "Sprache" +more-info-om = "Für weitere Informationen besuchen Sie bitte unsere Website" name = "Name" token = "Token" [languages.es] @@ -176,12 +180,14 @@ contact = "Contacte con nosotros" edit-on-github = "Editar en GitHub" engines = "Compatibilidad con motores TTS" faq-menu-title = "Preguntas frecuentes" +go-to-top = "Arriba" install-appgallery = "Instalar Organic Maps desde la AppGallery de Huawei" install-appstore = "Instalar Organic Maps desde el AppStore" install-googleplay = "Instalar Organic Maps desde Google Play" install-fdroid = "Instalar Organic Maps desde F-Droid" language = "Español" language-word = "Idioma" +more-info-om = "Para más información, visite nuestro sitio web" name = "Nombre" token = "Ficha" [languages.eu] @@ -216,12 +222,14 @@ contact = "Nous contacter" edit-on-github = "Modifier sur GitHub" engines = "Moteurs TTS pris en charge" faq-menu-title = "F.A.Q." +go-to-top = "En haut" install-appgallery = "Installer Organic Maps depuis l'AppGallery de Huawei" install-appstore = "Installer Organic Maps depuis l'AppStore" install-googleplay = "Installer Organic Maps depuis Google Play" install-fdroid = "Installer Organic Maps depuis F-Droid" language = "Français" language-word = "Langue" +more-info-om = "Pour plus d'informations, veuillez visiter notre site web" name = "Nom" token = "Jeton" [languages.hi] @@ -378,12 +386,14 @@ contact = "Kontakt z nami" edit-on-github = "Edytuj na GitHub" engines = "Supported TTS Engines" faq-menu-title = "F.A.Q." +go-to-top = "Idź na górę" install-appgallery = "Zainstaluj Organic Maps z Huawei AppGallery" install-appstore = "Zainstaluj Organic Maps z AppStore" install-googleplay = "Zainstaluj Organic Maps z Google Play" install-fdroid = "Zainstaluj Organic Maps z F-Droid" language = "Polski" language-word = "Języki" +more-info-om = "Aby uzyskać więcej informacji, odwiedź naszą stronę internetową" name = "Nazwa" token = "Token" @@ -399,12 +409,14 @@ contact = "Contate-nos" edit-on-github = "Editar no GitHub" engines = "Compatibilidade com TTS" faq-menu-title = "Perguntas frequentes" +go-to-top = "Ir para o início" install-appgallery = "Instale Organic Maps a partir da Huawei AppGallery" install-appstore = "Instale Organic Maps a partir da AppStore" install-googleplay = "Instale Organic Maps a partir da Google Play" install-fdroid = "Instale Organic Maps a partir do F-Droid" language = "Português (Brasil)" language-word = "Idioma" +more-info-om = "Para mais informações, visite o nosso sítio web" name = "Nome" token = "Token" @@ -420,12 +432,14 @@ contact = "Связаться с нами" edit-on-github = "Редактировать на GitHub" engines = "Поддерживаемые TTS движки" faq-menu-title = "Справка" +go-to-top = "Наверх" install-appgallery = "Установите Organic Maps из Huawei AppGallery" install-appstore = "Установите Organic Maps из AppStore" install-googleplay = "Установите Organic Maps из Google Play" install-fdroid = "Установите Organic Maps из F-Droid" language = "Русский" language-word = "Язык" +more-info-om = "Больше информации на нашем сайте" name = "Название" token = "Токен" @@ -462,12 +476,14 @@ contact = "İletişim" edit-on-github = "GitHub'da Düzenle" engines = "Supported TTS Engines" faq-menu-title = "F.A.Q." +go-to-top = "Başa Git" install-appgallery = "Organic Maps'i Huawei AppGallery'den İndir" install-appstore = "Organic Maps'i AppStore'dan İndir" install-googleplay = "Organic Maps'i Google Play'den İndir" install-fdroid = "Organic Maps'i F-Droid'den İndir" language = "Türkçe" language-word = "Dil" +more-info-om = "Daha fazla bilgi için lütfen web sitemizi ziyaret edin" name = "Ad" token = "Belirteç" @@ -483,12 +499,14 @@ contact = "Контакти" edit-on-github = "Редагувати на GitHub" engines = "Supported TTS Engines" faq-menu-title = "F.A.Q." +go-to-top = "До початку" install-appgallery = "Встановіть Organic Maps з Huawei AppGallery" install-appstore = "Встановіть Organic Maps з AppStore" install-googleplay = "Встановіть Organic Maps з Google Play" install-fdroid = "Встановіть Organic Maps з F-Droid" language = "Українська" language-word = "Мова" +more-info-om = "Для отримання додаткової інформації, будь ласка, відвідайте наш веб-сайт" name = "Назва" token = "Токен" @@ -504,12 +522,14 @@ contact = "联系我们" edit-on-github = "在 GitHub 上编辑" engines = "Supported TTS Engines" faq-menu-title = "F.A.Q." +go-to-top = "回到顶部" install-appgallery = "从华为应用商店安装Organic Maps" install-appstore = "从Apple AppStore安装Organic Maps" install-googleplay = "从Google Play安装Organic Maps" install-fdroid = "从F-Droid安装Organic Maps" language = "简体中文" language-word = "语言" +more-info-om = "要获取更多信息,请访问我们的网站" name = "名称" token = "令牌" @@ -557,12 +577,14 @@ contact = "Contacte-nos" edit-on-github = "Edita no GitHub" engines = "Supported TTS Engines" faq-menu-title = "F.A.Q." +go-to-top = "Ir para o início" install-appgallery = "Instalar o Organic Maps a partir da Huawei AppGallery" install-appstore = "Instalar o Organic Maps a partir da AppStore" install-googleplay = "Instalar o Organic Maps a partir do Google Play" install-fdroid = "Instalar o Organic Maps a partir do F-Droid" language = "Português" language-word = "Idioma" +more-info-om = "Para mais informações, visite o nosso sítio na web" name = "Nome" token = "Token" diff --git a/content/faq/embedded-faq.md b/content/faq/embedded-faq.md new file mode 100644 index 00000000..aa98dd12 --- /dev/null +++ b/content/faq/embedded-faq.md @@ -0,0 +1,7 @@ +--- +title: Multilang single page FAQ +description: Multilang single page FAQ +template: "faq/embedded-faq.html" +--- + +Static FAQ page to me embedded into Android and iOS apps diff --git a/templates/faq/embedded-faq.html b/templates/faq/embedded-faq.html new file mode 100644 index 00000000..6e1ab4c0 --- /dev/null +++ b/templates/faq/embedded-faq.html @@ -0,0 +1,213 @@ +<!DOCTYPE html> +<html> + +<head> + <title>Organic Maps: Frequently Asked Questions</title> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> + <style> + /* All langs are invisible by default. */ + [lang] { + display: none; + } + + /* Dark mode support. */ + :root { + color-scheme: light dark; + --primary-color: black; + --secondary-color: #555555; + --link-color: #1e96f0; + --background-color: white; + --separator-color: #0e0e0e; + } + + @media screen and (prefers-color-scheme: dark) { + :root { + --primary-color: #b5b5b5; + --secondary-color: #858585; + --link-color: #2ea6ff; + --background-color: black; + --separator-color: #0a0a0a; + } + } + + h3 { + font-style: normal; + font-weight: bold; + font-size: 18px; + line-height: 1.4; + } + + dd { + margin-top: 0.5em; + margin-right: 0; + margin-left: 0; + margin-bottom: 16px; + font-size: 16px; + color: var(--secondary-color); + line-height: 1.4; + padding-bottom: 24px; + border-bottom: 1px solid var(--separator-color); + } + + .faq { + border-bottom: 1px solid var(--separator-color); + } + + dl { + margin: 0 0 2em 0; + } + + html { + color: var(--primary-color); + background-color: var(--background-color); + } + + body { + margin-right: 16px; + margin-left: 16px; + margin-bottom: 16px; + font-size: 16px; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + } + + html { + -webkit-text-size-adjust: none; + } + + a { + color: var(--link-color); + text-decoration: none; + } + </style> + + <script> + "use strict"; + function getLanguage() { + var lang = navigator.language || navigator.userLanguage; + var found = location.href.indexOf("?"); + if (found != -1) { + var urlParams = new URLSearchParams(location.href.substr(found)); + var queryLang = urlParams.get("lang"); + if (queryLang) lang = queryLang; + } + return lang; + } + + // TODO: Update this list with new translations. + var translations = ['en', 'ru', 'de', 'es', 'fr', 'pt', 'pl', 'tr', 'uk', 'zh']; + // Show Russian for browsers with these language codes. + var canReadRussian = ['ab', 'be', 'kk', 'ky', 'tg', 'uz']; + + // TODO: Properly handle be-EN, he-RU or similar cases. + function showLanguage() { + var lang = getLanguage(); + var iso6391 = lang.substring(0, 2); + if (canReadRussian.indexOf(iso6391) >= 0) // Array.includes is not supported in Android 5 and 6. + lang = 'ru'; + else if (translations.indexOf(iso6391) >= 0) { + if (lang != 'pt-BR') + lang = iso6391; + } else + lang = 'en'; + + var elems = document.querySelectorAll('[lang="' + lang + '"]'); + // Make them visible. + for (var i = 0; i < elems.length; ++i) elems[i].style.display = "block"; + } + </script> +</head> + +<body onload="showLanguage()"> + {# List of questions #} + {% set faq_questions_en = [ + "map/how-to-create-a-route", + "editing/map-errors", + "map/can-not-find-position", + "map/cant-download-maps", + "map/search-cannot-find-a-place", + "app/crash", + "voice/cant-hear-instructions", + "bookmarks/how-to-export", + "bookmarks/how-to-import" + ] %} + + {% set faq_languages = ["ru", "de", "es", "fr", "pl", "pt", "pt-BR", "tr", "uk", "zh-Hans"] %} {# Predefined list of + translation languages #} + + <div class="faq"> + <h2 lang="en">FAQ</h2> + <h2 lang="ru">Часто задаваемые вопросы (FAQ)</h2> + <h2 lang="de">FAQ</h2> + <h2 lang="es">FAQ</h2> + <h2 lang="fr">FAQ</h2> + <h2 lang="pt">Perguntas frequentes</h2> + <h2 lang="pt-BR">Perguntas frequentes</h2> + <h2 lang="pl">FAQ</h2> + <h2 lang="tr">SSS</h2> + <h2 lang="uk">Часті питання</h2> + <h2 lang="zh">常见问题</h2> + + <ul> + {% for faq_slug in faq_questions_en -%} + {% set faq_page_en = get_page(path = "faq/" ~ faq_slug ~ "/index.md") -%} + {% set faq_slug = faq_slug | replace(from="/", to="-") -%} + <li class="link"> + <a lang="en" href="#{{ faq_slug }}">{{ faq_page_en.title }}</a> + {#- Add translated pages -#} + {% for lang in faq_languages -%} + {% set translated_faq_page = faq_page_en.translations | filter(attribute="lang", value=lang) | first -%} + {% if not translated_faq_page -%} + {{ throw(message="Page 'faq/" ~ faq_slug ~ "/index.md' is not translated into '" ~ lang ~ "'") -}} + {%- endif %} + <a lang="{{ lang | replace(from="-Hans", to="" ) }}" href="#{{ faq_slug }}">{{ translated_faq_page.title }}</a> + {%- endfor %} + </li> + {% endfor %} + </ul> + + + <h4 lang="en"> + {{ trans(key="more-info-om", lang="en") }} <a href="https://organicmaps.app/">organicmaps.app</a> + </h4> + {% for lang in faq_languages %} + <h4 lang="{{ lang | replace(from="-Hans", to="" ) }}"> + {{ trans(key="more-info-om", lang=lang) }} <a href="https://organicmaps.app/{{ lang }}/">organicmaps.app</a> + </h4> + {%- endfor %} + </div> + + {% for faq_slug in faq_questions_en -%} + {% set faq_page_en = get_page(path = "faq/" ~ faq_slug ~ "/index.md") -%} + <dl id="{{ faq_slug | replace(from="/", to="-" ) }}"> + <dt> + <h3 lang="en">{{ faq_page_en.title }}</h3> + {# Add translations -#} + {% for lang in faq_languages -%} + {%- set translated_faq_page = faq_page_en.translations | filter(attribute="lang", value=lang) | first %} + <h3 lang="{{ lang | replace(from="-Hans", to="" ) }}">{{ translated_faq_page.title }}</h3> + {%- endfor %} + </dt> + + <dd lang="en"> + {{ faq_page_en.content | safe -}} + </dd> + {# Add translations -#} + {% for lang in faq_languages -%} + {% set translated_faq_page = faq_page_en.translations | filter(attribute="lang", value=lang) | first -%} + {% set translated_faq_page = get_page(path=translated_faq_page.path) -%} + <dd lang="{{ lang | replace(from="-Hans", to="" ) }}"> + {{ translated_faq_page.content | safe }} + </dd> + {%- endfor %} + </dl> + {%- endfor %} + + <a href="#" lang="en">{{ trans(key="go-to-top", lang="en") }}</a> + {% for lang in faq_languages -%} + <a href="#" lang="{{ lang | replace(from="-Hans", to="" ) }}">{{ trans(key="go-to-top", lang=lang) }}</a> + {% endfor %} + +</body> + +</html> \ No newline at end of file diff --git a/templates/faq/translation_status.html b/templates/faq/translation_status.html index a46d3fc2..e43aa4e1 100644 --- a/templates/faq/translation_status.html +++ b/templates/faq/translation_status.html @@ -40,7 +40,7 @@ <body> {% set all_categories = get_taxonomy(kind='faq', lang = 'en') %} {# Use English as list of all FAQ categories and questions #} -{% set faq_languages = ["ru", "de", "fr", "it", "pl", "pt", "pt-BR", "tr", "uk", "zh-Hans"] %} {# Predefined list of translation languages #} +{% set faq_languages = ["ru", "de", "es", "fr", "it", "pl", "pt", "pt-BR", "tr", "uk", "zh-Hans"] %} {# Predefined list of translation languages #} <table class="status"> <tr class="header">