diff options
| author | frosty <gabriel@bwaaa.monster> | 2026-04-01 00:37:15 +0300 |
|---|---|---|
| committer | frosty <gabriel@bwaaa.monster> | 2026-04-01 00:37:15 +0300 |
| commit | c41ab84738ddfc71d6062e0d173afa33ac2c35a6 (patch) | |
| tree | fa3f377277a99877fda4415f30cbff56468031db /src/Routes | |
| parent | 335b6f46837f3496467da50de2d9bce0c5ef6a1a (diff) | |
| download | omnisearch-c41ab84738ddfc71d6062e0d173afa33ac2c35a6.tar.gz | |
feat: begin working on localisation
Diffstat (limited to 'src/Routes')
| -rw-r--r-- | src/Routes/Home.c | 4 | ||||
| -rw-r--r-- | src/Routes/Images.c | 5 | ||||
| -rw-r--r-- | src/Routes/Search.c | 4 | ||||
| -rw-r--r-- | src/Routes/Settings.c | 24 | ||||
| -rw-r--r-- | src/Routes/SettingsSave.c | 6 |
5 files changed, 42 insertions, 1 deletions
diff --git a/src/Routes/Home.c b/src/Routes/Home.c index c857663..48edfd9 100644 --- a/src/Routes/Home.c +++ b/src/Routes/Home.c @@ -1,19 +1,23 @@ #include "Home.h" #include "../Utility/Utility.h" +#include <beaker.h> #include <stdlib.h> int home_handler(UrlParams *params) { (void)params; char *theme = get_theme(""); + char *locale = get_locale("en_uk"); TemplateContext ctx = new_context(); context_set(&ctx, "theme", theme); + beaker_set_locale(&ctx, locale); char *rendered_html = render_template("home.html", &ctx); send_response(rendered_html); free(rendered_html); free_context(&ctx); free(theme); + free(locale); return 0; } diff --git a/src/Routes/Images.c b/src/Routes/Images.c index 98fd3f4..636f071 100644 --- a/src/Routes/Images.c +++ b/src/Routes/Images.c @@ -5,6 +5,7 @@ #include "../Utility/Unescape.h" #include "../Utility/Utility.h" #include "Config.h" +#include <beaker.h> static char *build_images_request_cache_key(const char *query, int page, const char *client_key) { @@ -46,6 +47,10 @@ int images_handler(UrlParams *params) { context_set(&ctx, "theme", theme); free(theme); + char *locale = get_locale("en_uk"); + beaker_set_locale(&ctx, locale); + free(locale); + context_set(&ctx, "page", page_str); context_set(&ctx, "prev_page", prev_str); context_set(&ctx, "next_page", next_str); diff --git a/src/Routes/Search.c b/src/Routes/Search.c index 170b488..c5b3ec0 100644 --- a/src/Routes/Search.c +++ b/src/Routes/Search.c @@ -419,6 +419,10 @@ int results_handler(UrlParams *params) { context_set(&ctx, "theme", theme); free(theme); + char *locale = get_locale("en_uk"); + beaker_set_locale(&ctx, locale); + free(locale); + char page_str[16]; snprintf(page_str, sizeof(page_str), "%d", page); context_set(&ctx, "page", page_str); diff --git a/src/Routes/Settings.c b/src/Routes/Settings.c index 05edc56..cfadd09 100644 --- a/src/Routes/Settings.c +++ b/src/Routes/Settings.c @@ -1,5 +1,6 @@ #include "Settings.h" #include "../Utility/Utility.h" +#include <beaker.h> #include <stdlib.h> #include <string.h> @@ -9,21 +10,42 @@ int settings_handler(UrlParams *params) { for (int i = 0; i < params->count; i++) { if (strcmp(params->params[i].key, "q") == 0) { query = params->params[i].value; - break; } } } char *theme = get_theme("system"); + char *locale = get_locale("en_uk"); + + LocaleInfo locales[32]; + int locale_count = beaker_get_all_locales(locales, 32); + + char **locale_data[32]; + int inner_counts[32]; + for (int i = 0; i < locale_count; i++) { + locale_data[i] = malloc(sizeof(char *) * 2); + locale_data[i][0] = locales[i].meta.id; + locale_data[i][1] = locales[i].meta.name; + inner_counts[i] = 2; + } TemplateContext ctx = new_context(); + beaker_set_locale(&ctx, locale); context_set(&ctx, "query", query); context_set(&ctx, "theme", theme); + context_set(&ctx, "locale", locale); + context_set_array_of_arrays(&ctx, "locales", locale_data, locale_count, inner_counts); + + for (int i = 0; i < locale_count; i++) { + free(locale_data[i]); + } + char *rendered_html = render_template("settings.html", &ctx); send_response(rendered_html); free(rendered_html); free(theme); + free(locale); free_context(&ctx); return 0; diff --git a/src/Routes/SettingsSave.c b/src/Routes/SettingsSave.c index d286507..323fe0d 100644 --- a/src/Routes/SettingsSave.c +++ b/src/Routes/SettingsSave.c @@ -4,12 +4,15 @@ int settings_save_handler(UrlParams *params) { const char *theme = ""; + const char *locale = ""; const char *query = ""; if (params) { for (int i = 0; i < params->count; i++) { if (strcmp(params->params[i].key, "theme") == 0) { theme = params->params[i].value; + } else if (strcmp(params->params[i].key, "locale") == 0) { + locale = params->params[i].value; } else if (strcmp(params->params[i].key, "q") == 0) { query = params->params[i].value; } @@ -19,6 +22,9 @@ int settings_save_handler(UrlParams *params) { if (strlen(theme) > 0) { set_cookie("theme", theme, "Fri, 31 Dec 2038 23:59:59 GMT", "/", false, false); } + if (strlen(locale) > 0) { + set_cookie("locale", locale, "Fri, 31 Dec 2038 23:59:59 GMT", "/", false, false); + } char redirect_url[512]; snprintf(redirect_url, sizeof(redirect_url), "/settings?q=%s", query); |
