From c41ab84738ddfc71d6062e0d173afa33ac2c35a6 Mon Sep 17 00:00:00 2001 From: frosty Date: Wed, 1 Apr 2026 00:37:15 +0300 Subject: feat: begin working on localisation --- src/Routes/Settings.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'src/Routes/Settings.c') 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 #include #include @@ -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; -- cgit v1.2.3