Add search UI localization in multiple languages, including error messages and tooltips, to enhance user experience and accessibility across the application.

This commit is contained in:
Torsten Schulz (local)
2025-11-16 22:15:41 +01:00
parent 8f24425110
commit 63747e0fd6
12 changed files with 148 additions and 5 deletions

View File

@@ -35,6 +35,19 @@
<message id="error_page_not_found">Error 400 - Page not found</message>
<message id="error_opening_file">Error opening file.</message>
<message id="label_name">Name</message>
<!-- Search UI -->
<message id="search_title"><![CDATA[<h2>Search</h2>]]></message>
<message id="search_username_includes">Username includes</message>
<message id="search_from_age">From age</message>
<message id="search_to_age">To age</message>
<message id="search_country">Country</message>
<message id="search_country_tooltip">Select the countries you'll search for</message>
<message id="search_genders">Genders</message>
<message id="search_genders_tooltip">Select the genders you'll search for</message>
<message id="search_all">All</message>
<message id="search_button">Search</message>
<message id="search_no_results">No results.</message>
<message id="search_min_age_error">Minimum age must be at least as large as or greater than the maximum age.</message>
<message id="welcome">
<main>
<header>

View File

@@ -35,6 +35,19 @@
<message id="error_page_not_found">Fehler 400 - Seite nicht gefunden</message>
<message id="error_opening_file">Fehler beim Öffnen der Datei.</message>
<message id="label_name">Name</message>
<!-- Search UI -->
<message id="search_title"><![CDATA[<h2>Suche</h2>]]></message>
<message id="search_username_includes">Benutzername enthält</message>
<message id="search_from_age">Von Alter</message>
<message id="search_to_age">Bis Alter</message>
<message id="search_country">Land</message>
<message id="search_country_tooltip">Wähle die Länder, in denen du suchen möchtest</message>
<message id="search_genders">Geschlechter</message>
<message id="search_genders_tooltip">Wähle die Geschlechter, nach denen du suchen möchtest</message>
<message id="search_all">Alle</message>
<message id="search_button">Suchen</message>
<message id="search_no_results">Keine Treffer.</message>
<message id="search_min_age_error">Das Mindestalter muss mindestens so groß sein wie das Höchstalter.</message>
<message id="welcome">
<main>
<header>

View File

@@ -19,6 +19,19 @@
<message id="history_title"><![CDATA[<h2>Conversations with already logged in users</h2>]]></message>
<message id="history_empty">No previous conversations available.</message>
<message id="logged_in_count">Logged in: {1}</message>
<!-- Search UI -->
<message id="search_title"><![CDATA[<h2>Search</h2>]]></message>
<message id="search_username_includes">Username includes</message>
<message id="search_from_age">From age</message>
<message id="search_to_age">To age</message>
<message id="search_country">Country</message>
<message id="search_country_tooltip">Select the countries you'll search for</message>
<message id="search_genders">Genders</message>
<message id="search_genders_tooltip">Select the genders you'll search for</message>
<message id="search_all">All</message>
<message id="search_button">Search</message>
<message id="search_no_results">No results.</message>
<message id="search_min_age_error">Minimum age must be at least as large as or greater than the maximum age.</message>
<message id="welcome">
<main>
<header>

View File

@@ -19,6 +19,19 @@
<message id="history_title"><![CDATA[<h2>Conversations with already logged in users</h2>]]></message>
<message id="history_empty">No previous conversations available.</message>
<message id="logged_in_count">Logged in: {1}</message>
<!-- Search UI -->
<message id="search_title"><![CDATA[<h2>Search</h2>]]></message>
<message id="search_username_includes">Username includes</message>
<message id="search_from_age">From age</message>
<message id="search_to_age">To age</message>
<message id="search_country">Country</message>
<message id="search_country_tooltip">Select the countries you'll search for</message>
<message id="search_genders">Genders</message>
<message id="search_genders_tooltip">Select the genders you'll search for</message>
<message id="search_all">All</message>
<message id="search_button">Search</message>
<message id="search_no_results">No results.</message>
<message id="search_min_age_error">Minimum age must be at least as large as or greater than the maximum age.</message>
<message id="welcome">
<main>
<header>

View File

@@ -19,6 +19,19 @@
<message id="history_title"><![CDATA[<h2>Conversaciones con usuarios ya conectados</h2>]]></message>
<message id="history_empty">No hay conversaciones anteriores disponibles.</message>
<message id="logged_in_count">Conectados: {1}</message>
<!-- Search UI -->
<message id="search_title"><![CDATA[<h2>Búsqueda</h2>]]></message>
<message id="search_username_includes">Nombre de usuario contiene</message>
<message id="search_from_age">Edad desde</message>
<message id="search_to_age">Edad hasta</message>
<message id="search_country">País</message>
<message id="search_country_tooltip">Selecciona los países que quieres buscar</message>
<message id="search_genders">Géneros</message>
<message id="search_genders_tooltip">Selecciona los géneros que quieres buscar</message>
<message id="search_all">Todos</message>
<message id="search_button">Buscar</message>
<message id="search_no_results">Sin resultados.</message>
<message id="search_min_age_error">La edad mínima debe ser al menos igual o mayor que la edad máxima.</message>
<message id="welcome">
<main>
<header>

View File

@@ -19,6 +19,19 @@
<message id="history_title"><![CDATA[<h2>Conversations avec des utilisateurs déjà connectés</h2>]]></message>
<message id="history_empty">Aucune conversation précédente disponible.</message>
<message id="logged_in_count">Connectés&nbsp;: {1}</message>
<!-- Search UI -->
<message id="search_title"><![CDATA[<h2>Recherche</h2>]]></message>
<message id="search_username_includes">Nom dutilisateur contient</message>
<message id="search_from_age">Âge min.</message>
<message id="search_to_age">Âge max.</message>
<message id="search_country">Pays</message>
<message id="search_country_tooltip">Sélectionnez les pays à inclure dans la recherche</message>
<message id="search_genders">Genres</message>
<message id="search_genders_tooltip">Sélectionnez les genres à inclure dans la recherche</message>
<message id="search_all">Tous</message>
<message id="search_button">Rechercher</message>
<message id="search_no_results">Aucun résultat.</message>
<message id="search_min_age_error">Lâge minimum doit être au moins égal à lâge maximum.</message>
<message id="welcome">
<main>
<header>

View File

@@ -19,6 +19,19 @@
<message id="history_title"><![CDATA[<h2>Conversazioni con utenti già collegati</h2>]]></message>
<message id="history_empty">Nessuna conversazione precedente disponibile.</message>
<message id="logged_in_count">Utenti online: {1}</message>
<!-- Search UI -->
<message id="search_title"><![CDATA[<h2>Ricerca</h2>]]></message>
<message id="search_username_includes">Nome utente contiene</message>
<message id="search_from_age">Età da</message>
<message id="search_to_age">Età fino a</message>
<message id="search_country">Paese</message>
<message id="search_country_tooltip">Seleziona i paesi in cui cercare</message>
<message id="search_genders">Generi</message>
<message id="search_genders_tooltip">Seleziona i generi da includere nella ricerca</message>
<message id="search_all">Tutti</message>
<message id="search_button">Cerca</message>
<message id="search_no_results">Nessun risultato.</message>
<message id="search_min_age_error">Letà minima deve essere almeno uguale o superiore alletà massima.</message>
<message id="welcome">
<main>
<header>

View File

@@ -19,6 +19,19 @@
<message id="history_title"><![CDATA[<h2>すでにログインしているユーザーとの会話</h2>]]></message>
<message id="history_empty">過去の会話はありません。</message>
<message id="logged_in_count">ログイン中: {1}</message>
<!-- Search UI -->
<message id="search_title"><![CDATA[<h2>検索</h2>]]></message>
<message id="search_username_includes">ユーザー名に含まれる文字列</message>
<message id="search_from_age">年齢(下限)</message>
<message id="search_to_age">年齢(上限)</message>
<message id="search_country"></message>
<message id="search_country_tooltip">検索対象とする国を選択してください</message>
<message id="search_genders">性別</message>
<message id="search_genders_tooltip">検索対象とする性別を選択してください</message>
<message id="search_all">すべて</message>
<message id="search_button">検索</message>
<message id="search_no_results">結果がありません。</message>
<message id="search_min_age_error">最小年齢は最大年齢以上でなければなりません。</message>
<message id="welcome">
<main>
<header>

View File

@@ -19,6 +19,19 @@
<message id="history_title"><![CDATA[<h2>การสนทนากับผู้ใช้ที่ล็อกอินอยู่แล้ว</h2>]]></message>
<message id="history_empty">ยังไม่มีกิจกรรมการสนทนาก่อนหน้านี้</message>
<message id="logged_in_count">ออนไลน์อยู่: {1}</message>
<!-- Search UI -->
<message id="search_title"><![CDATA[<h2>ค้นหา</h2>]]></message>
<message id="search_username_includes">ชื่อผู้ใช้มีคำว่า</message>
<message id="search_from_age">อายุตั้งแต่</message>
<message id="search_to_age">อายุถึง</message>
<message id="search_country">ประเทศ</message>
<message id="search_country_tooltip">เลือกประเทศที่ต้องการค้นหา</message>
<message id="search_genders">เพศ</message>
<message id="search_genders_tooltip">เลือกเพศที่ต้องการค้นหา</message>
<message id="search_all">ทั้งหมด</message>
<message id="search_button">ค้นหา</message>
<message id="search_no_results">ไม่พบผลลัพธ์</message>
<message id="search_min_age_error">อายุต่ำสุดต้องไม่น้อยกว่าหรือเท่ากับอายุสูงสุด</message>
<message id="welcome">
<main>
<header>

View File

@@ -19,6 +19,19 @@
<message id="history_title"><![CDATA[<h2>Mga pag-uusap sa mga naka-log in na user</h2>]]></message>
<message id="history_empty">Walang mga naunang pag-uusap.</message>
<message id="logged_in_count">Naka-log in: {1}</message>
<!-- Search UI -->
<message id="search_title"><![CDATA[<h2>Paghahanap</h2>]]></message>
<message id="search_username_includes">Username ay naglalaman ng</message>
<message id="search_from_age">Edad mula</message>
<message id="search_to_age">Edad hanggang</message>
<message id="search_country">Bansa</message>
<message id="search_country_tooltip">Piliin ang (mga) bansang gusto mong hanapin</message>
<message id="search_genders">Kasarian</message>
<message id="search_genders_tooltip">Piliin ang (mga) kasarian na hahanapin</message>
<message id="search_all">Lahat</message>
<message id="search_button">Maghanap</message>
<message id="search_no_results">Walang nahanap na resulta.</message>
<message id="search_min_age_error">Ang minimum na edad ay dapat hindi bababa sa katumbas o mas mataas kaysa maximum na edad.</message>
<message id="welcome">
<main>
<header>

View File

@@ -19,6 +19,19 @@
<message id="history_title"><![CDATA[<h2>与已登录用户的会话</h2>]]></message>
<message id="history_empty">暂无历史会话。</message>
<message id="logged_in_count">当前在线: {1}</message>
<!-- Search UI -->
<message id="search_title"><![CDATA[<h2>搜索</h2>]]></message>
<message id="search_username_includes">用户名包含</message>
<message id="search_from_age">年龄从</message>
<message id="search_to_age">年龄到</message>
<message id="search_country">国家</message>
<message id="search_country_tooltip">选择要搜索的国家</message>
<message id="search_genders">性别</message>
<message id="search_genders_tooltip">选择要搜索的性别</message>
<message id="search_all">全部</message>
<message id="search_button">搜索</message>
<message id="search_no_results">没有找到结果。</message>
<message id="search_min_age_error">最小年龄必须大于或等于最大年龄。</message>
<message id="welcome">
<main>
<header>

View File

@@ -1482,16 +1482,16 @@ void App::restoreSearchFields(Wt::WContainerWidget *searchResultContainer, Wt::W
}
Wt::WLineEdit *App::setupNameSearchField(Wt::WVBoxLayout *contentLayout) {
auto userNameEdit = addSearchItemLine<Wt::WLineEdit>(contentLayout, "Username includes");
auto userNameEdit = addSearchItemLine<Wt::WLineEdit>(contentLayout, Wt::WString::tr("search_username_includes").toUTF8());
userNameEdit->changed().connect([=, this] { searchFields.userName = userNameEdit->text().trim(); });
return userNameEdit;
}
Wt::WContainerWidget *App::setupSearchButton(Wt::WVBoxLayout *contentLayout) {
auto searchButton = addSearchItemLine<Wt::WPushButton>(contentLayout, "");
searchButton->setText("Search");
searchButton->setText(Wt::WString::tr("search_button"));
auto searchResultContainer = contentLayout->addWidget(std::make_unique<Wt::WContainerWidget>(), 1);
searchResultContainer->addNew<Wt::WText>("No results");
searchResultContainer->addNew<Wt::WText>(Wt::WString::tr("search_no_results"));
searchButton->clicked().connect(this, &App::startSearch);
return searchResultContainer;
}
@@ -1499,7 +1499,7 @@ Wt::WContainerWidget *App::setupSearchButton(Wt::WVBoxLayout *contentLayout) {
void App::startSearch() {
if (searchFields.minAge > searchFields.maxAge) {
searchFields.outputContainer->clear();
searchFields.outputContainer->addNew<Wt::WText>("Minimum age must be at least as large as or greater than the maximum age.");
searchFields.outputContainer->addNew<Wt::WText>(Wt::WString::tr("search_min_age_error"));
return;
}
server_.userSearch(sessionId(), searchFields.userName.toUTF8(), searchFields.minAge, searchFields.maxAge,
@@ -1513,7 +1513,7 @@ void App::showSearch(Wt::Json::Object broadcast) {
searchFields.outputContainer->clear();
auto searchResult = (Wt::Json::Array)broadcast["data"];
if (searchResult.size() == 0) {
searchFields.outputContainer->addNew<Wt::WText>("No results.");
searchFields.outputContainer->addNew<Wt::WText>(Wt::WString::tr("search_no_results"));
}
auto searchListContainer = searchFields.outputContainer->addNew<Wt::WContainerWidget>();
auto searchList = searchListContainer->setLayout(std::make_unique<Wt::WVBoxLayout>());