From e6463d7fe097b39c9e8952ef9f5758fa0ee0e4bd Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Mon, 2 Jun 2025 12:42:59 +0200 Subject: wks: Use templates for the server responses. * common/helpfile.c (gnupg_get_template): Add arg locale_override and adjust all callers. * tools/wks-receive.c (struct receive_ctx_s): Add field ct_language. (get_language): New. (new_part): Call it. (wks_receive): Pass language to the result callback. * tools/gpg-wks-client.c (short_locale): New. (main): Get and store the current locale. (command_create): Fix a glitch for the Posteo hack. Insert the locale into the confirmation request. (send_confirmation_response): Ditto. * tools/gpg-wks-server.c (struct server_ctx_s): Add field language. (only_ascii): New. (struct my_subst_vars_s, my_subst_vars_cb, my_subst_vars): New. (send_confirmation_request): Use a template. (send_congratulation_message): Ditto. (check_and_publish): Pss ctx to send_congratulation_message. (command_receive_cb): Add arg language. * doc/wks-utils.txt, doc/wks-utils.de.txt: New. * doc/Makefile.am (helpfiles): Add them. -- GnuPG-bug-id: 7381 Note that the subject is not yet translated or templated due to a missing header encoding function. --- common/helpfile.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'common/helpfile.c') diff --git a/common/helpfile.c b/common/helpfile.c index 956ec2516..240562794 100644 --- a/common/helpfile.c +++ b/common/helpfile.c @@ -234,21 +234,25 @@ findkey_locale (const char *domain, const char *key, const char *locname, intervening lines (except for comment lines) lead to the same help text. Lines following the key lines make up the actual template texts. */ - char * -gnupg_get_template (const char *domain, const char *key, unsigned int flags) +gnupg_get_template (const char *domain, const char *key, unsigned int flags, + const char *override_locale) { - static const char *locname; + static const char *locname_buffer; + const char *locname; char *result; - if (!locname) + if (override_locale && *override_locale) + locname = override_locale; + else if (!locname_buffer) { char *buffer, *p; int count = 0; const char *s = gnupg_messages_locale_name (); + buffer = xtrystrdup (s); if (!buffer) - locname = ""; + locname_buffer = ""; else { for (p = buffer; *p; p++) @@ -259,9 +263,12 @@ gnupg_get_template (const char *domain, const char *key, unsigned int flags) if (count++) *p = 0; /* Also cut at an underscore in the territory. */ } - locname = buffer; + locname_buffer = buffer; } + locname = locname_buffer; } + else + locname = locname_buffer; if (!key || !*key) return NULL; @@ -293,5 +300,6 @@ char * gnupg_get_help_string (const char *key, int only_current) { return gnupg_get_template ("help", key, - only_current? GET_TEMPLATE_CURRENT_LOCALE : 0); + only_current? GET_TEMPLATE_CURRENT_LOCALE : 0, + NULL); } -- cgit v1.2.3