From patchwork Thu Feb 5 22:00:57 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adolf Belka X-Patchwork-Id: 9490 Return-Path: Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (Client CN "mail01.haj.ipfire.org", Issuer "R12" (verified OK)) by web04.haj.ipfire.org (Postfix) with ESMTPS id 4f6WQ55npLz3xGR for ; Thu, 05 Feb 2026 22:01:17 +0000 (UTC) Received: from mail02.haj.ipfire.org (mail02.haj.ipfire.org [IPv6:2001:678:b28::201]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (Client CN "mail02.haj.ipfire.org", Issuer "E8" (verified OK)) by mail01.ipfire.org (Postfix) with ESMTPS id 4f6WQ26l2pz5jj for ; Thu, 05 Feb 2026 22:01:14 +0000 (UTC) Received: from mail02.haj.ipfire.org (localhost [IPv6:::1]) by mail02.haj.ipfire.org (Postfix) with ESMTP id 4f6WQ060Wkz3336 for ; Thu, 05 Feb 2026 22:01:12 +0000 (UTC) X-Original-To: development@lists.ipfire.org Received: from mail01.ipfire.org (mail01.haj.ipfire.org [IPv6:2001:678:b28::25]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (Client CN "mail01.haj.ipfire.org", Issuer "R12" (verified OK)) by mail02.haj.ipfire.org (Postfix) with ESMTPS id 4f6WPs3BDNz339G for ; Thu, 05 Feb 2026 22:01:05 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mail01.ipfire.org (Postfix) with ESMTPSA id 4f6WPs1DMLz3wd; Thu, 05 Feb 2026 22:01:05 +0000 (UTC) DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=ipfire.org; s=202003ed25519; t=1770328865; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6Mg3QvklwfpVrnaiJT8TluWcZcsG0zEKwamed+U9zkI=; b=RKRXD3lZabHxBoJ0G6pZmnPIZ0zqD7P8ENyvesnHXY5ZPmjDV0c8EOGxGDZnyWxl3Yd4fH ESV+3P6Jc/jvLxCQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ipfire.org; s=202003rsa; t=1770328865; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6Mg3QvklwfpVrnaiJT8TluWcZcsG0zEKwamed+U9zkI=; b=XLbk4DHwBZEi84GoEUYNgd8v7yiyHoSvYszp6mu/ICMUk6keJXVJMhAbCv4lKr12BZxSNk 0EjxsBTVgYcYvXL9Q3rBnMjll8sSn3CWEYRJYb6LJ2anEUtIyPWgH1oSCe/TlyEKPYBq7c 02h8atQdKlpoq+NZXzGciSCT7H3XfsBW87fycD477Zmaz2hDajftaEITf/10ZWeN3CIKeM eaCcMg7xSOP1eApSCI1GDaroXVGud5F1+qW272K4fsshUpu1ltVGcDbFoR2LwjW+3cBprK F7Tt1vW3Io+oFH41T1/SR+fPs+MdzWHoS5NqxfZSXdkjtPc++2sNA3japLANog== From: Adolf Belka To: development@lists.ipfire.org Cc: Adolf Belka Subject: [PATCH] gettext: Update to version 1.0 Date: Thu, 5 Feb 2026 23:00:57 +0100 Message-ID: <20260205220059.3721136-8-adolf.belka@ipfire.org> In-Reply-To: <20260205220059.3721136-1-adolf.belka@ipfire.org> References: <20260205220059.3721136-1-adolf.belka@ipfire.org> Precedence: list List-Id: List-Subscribe: , List-Unsubscribe: , List-Post: List-Help: Sender: Mail-Followup-To: MIME-Version: 1.0 - Update from version 0.26 to 1.0 - Update of rootfile - Changelog 1.0 Improvements for maintainers and distributors: * In a po/ directory, the PO files are now exactly those that the translators submitted or committed in version control, or a translation project's daemon committed on behalf of the translators. They are no longer regularly updated with respect to the POT file in the same directory. The advantage for maintainers is that the maintainer may commit the PO files in version control, without getting - lots of modified files shown by "git status", - frequent merge conflicts when merging between branches, - a voluminous version control history. The advantage for distributors is that the role of files in a release tarball are clearer: The PO files are source code, whereas the POT file and the *.gmo files are generated files. ATTENTION translators! Translators who work directly on a package's source code (without going through a translation project) now need to run "msginit" before starting work on a PO file. * A new program 'po-fetch' is provided, that fetches the translated PO files from a translation project's site on the internet, and updates the LINGUAS file accordingly. * In a po/ directory, a new script 'fetch-po' is now added by 'gettextize'. It provides the standard interface for fetching the translated PO files. It typically either invokes the 'po-fetch' program or does nothing. Improvements for translators: * msginit: - When the PO file already exists, 'msginit' now updates it w.r.t. the POT file, like 'msgmerge' would do. Previously, 'msginit' failed with an error message in this situation. * Pretranslation: - Two new programs, 'msgpre' and 'spit', are provided, that implement machine translation through a locally installed Large Language Model (LLM). 'msgpre' applies to an entire PO file, 'spit' to a single message. - The documentation has a new chapter "Pretranslation". Improvements for maintainers: * xgettext: - The refactoring suggestion when a translatable string contains an URL or email address can now be inhibited through a command-line option '--no-check=url' or '--no-check=email', or through a comment in the source code of the form /* xgettext: no-url-check */ or /* xgettext: no-email-check */ Programming languages support: * OCaml: - xgettext now supports OCaml. - 'msgfmt -c' now verifies the syntax of translations of OCaml format strings. - A new example 'hello-ocaml' has been added. * Rust: - xgettext now recognizes 'gettextrs::gettext' invocations, like 'gettext' invocations. libgettextpo library: * The function 'po_message_get_format' now supports distinguishing whether a negative format string mark, such as 'no-c-format', is set or not. * The new functions po_message_has_workflow_flag po_message_set_workflow_flag po_message_workflow_flags_iterator, po_flag_next, po_flag_iterator_free can be used to manipulate or inspect the workflow flags of a message. * The new functions po_message_has_sticky_flag po_message_set_sticky_flag po_message_sticky_flags_iterator, po_flag_next, po_flag_iterator_free can be used to manipulate or inspect the sticky flags of a messsage. Emacs PO mode: Restore syntax highlighting in Emacs version 30 or newer. Signed-off-by: Adolf Belka --- config/rootfiles/common/gettext | 104 ++++++++++++++++++++++++++------ lfs/gettext | 6 +- 2 files changed, 89 insertions(+), 21 deletions(-) diff --git a/config/rootfiles/common/gettext b/config/rootfiles/common/gettext index 6e9a05841..28451c089 100644 --- a/config/rootfiles/common/gettext +++ b/config/rootfiles/common/gettext @@ -15,18 +15,20 @@ usr/bin/gettext.sh #usr/bin/msggrep #usr/bin/msginit #usr/bin/msgmerge +#usr/bin/msgpre #usr/bin/msgunfmt #usr/bin/msguniq #usr/bin/ngettext +#usr/bin/po-fetch #usr/bin/printf_gettext #usr/bin/printf_ngettext #usr/bin/recode-sr-latin +#usr/bin/spit #usr/bin/xgettext #usr/include/autosprintf.h #usr/include/gettext-po.h #usr/include/textstyle #usr/include/textstyle.h -#usr/include/textstyle/stdbool.h #usr/include/textstyle/version.h #usr/include/textstyle/woe32dll.h #usr/lib/gettext @@ -34,20 +36,20 @@ usr/bin/gettext.sh #usr/lib/libasprintf.so usr/lib/libasprintf.so.0 usr/lib/libasprintf.so.0.0.0 -usr/lib/libgettextlib-0.26.so +usr/lib/libgettextlib-1.0.so #usr/lib/libgettextlib.la #usr/lib/libgettextlib.so #usr/lib/libgettextpo.la #usr/lib/libgettextpo.so usr/lib/libgettextpo.so.0 -usr/lib/libgettextpo.so.0.5.15 -usr/lib/libgettextsrc-0.26.so +usr/lib/libgettextpo.so.0.6.0 +usr/lib/libgettextsrc-1.0.so #usr/lib/libgettextsrc.la usr/lib/libgettextsrc.so #usr/lib/libtextstyle.la #usr/lib/libtextstyle.so usr/lib/libtextstyle.so.0 -usr/lib/libtextstyle.so.0.2.6 +usr/lib/libtextstyle.so.0.2.7 usr/lib/preloadable_libintl.so #usr/libexec/gettext #usr/libexec/gettext/cldr-plurals @@ -1749,6 +1751,64 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-objc/po/zh_CN.po #usr/share/doc/gettext/examples/hello-objc/po/zh_HK.po #usr/share/doc/gettext/examples/hello-objc/po/zh_TW.po +#usr/share/doc/gettext/examples/hello-ocaml +#usr/share/doc/gettext/examples/hello-ocaml/INSTALL +#usr/share/doc/gettext/examples/hello-ocaml/Makefile.am +#usr/share/doc/gettext/examples/hello-ocaml/autoclean.sh +#usr/share/doc/gettext/examples/hello-ocaml/autogen.sh +#usr/share/doc/gettext/examples/hello-ocaml/configure.ac +#usr/share/doc/gettext/examples/hello-ocaml/dune-project.in +#usr/share/doc/gettext/examples/hello-ocaml/dune.in +#usr/share/doc/gettext/examples/hello-ocaml/hello.ml.in +#usr/share/doc/gettext/examples/hello-ocaml/m4 +#usr/share/doc/gettext/examples/hello-ocaml/m4/Makefile.am +#usr/share/doc/gettext/examples/hello-ocaml/po +#usr/share/doc/gettext/examples/hello-ocaml/po/LINGUAS +#usr/share/doc/gettext/examples/hello-ocaml/po/Makefile.am +#usr/share/doc/gettext/examples/hello-ocaml/po/af.po +#usr/share/doc/gettext/examples/hello-ocaml/po/ast.po +#usr/share/doc/gettext/examples/hello-ocaml/po/bg.po +#usr/share/doc/gettext/examples/hello-ocaml/po/ca.po +#usr/share/doc/gettext/examples/hello-ocaml/po/cs.po +#usr/share/doc/gettext/examples/hello-ocaml/po/da.po +#usr/share/doc/gettext/examples/hello-ocaml/po/de.po +#usr/share/doc/gettext/examples/hello-ocaml/po/el.po +#usr/share/doc/gettext/examples/hello-ocaml/po/eo.po +#usr/share/doc/gettext/examples/hello-ocaml/po/es.po +#usr/share/doc/gettext/examples/hello-ocaml/po/fi.po +#usr/share/doc/gettext/examples/hello-ocaml/po/fr.po +#usr/share/doc/gettext/examples/hello-ocaml/po/ga.po +#usr/share/doc/gettext/examples/hello-ocaml/po/gl.po +#usr/share/doc/gettext/examples/hello-ocaml/po/hr.po +#usr/share/doc/gettext/examples/hello-ocaml/po/hu.po +#usr/share/doc/gettext/examples/hello-ocaml/po/id.po +#usr/share/doc/gettext/examples/hello-ocaml/po/it.po +#usr/share/doc/gettext/examples/hello-ocaml/po/ja.po +#usr/share/doc/gettext/examples/hello-ocaml/po/ka.po +#usr/share/doc/gettext/examples/hello-ocaml/po/ky.po +#usr/share/doc/gettext/examples/hello-ocaml/po/lv.po +#usr/share/doc/gettext/examples/hello-ocaml/po/ms.po +#usr/share/doc/gettext/examples/hello-ocaml/po/mt.po +#usr/share/doc/gettext/examples/hello-ocaml/po/nb.po +#usr/share/doc/gettext/examples/hello-ocaml/po/nl.po +#usr/share/doc/gettext/examples/hello-ocaml/po/nn.po +#usr/share/doc/gettext/examples/hello-ocaml/po/pl.po +#usr/share/doc/gettext/examples/hello-ocaml/po/pt.po +#usr/share/doc/gettext/examples/hello-ocaml/po/pt_BR.po +#usr/share/doc/gettext/examples/hello-ocaml/po/ro.po +#usr/share/doc/gettext/examples/hello-ocaml/po/ru.po +#usr/share/doc/gettext/examples/hello-ocaml/po/sk.po +#usr/share/doc/gettext/examples/hello-ocaml/po/sl.po +#usr/share/doc/gettext/examples/hello-ocaml/po/sq.po +#usr/share/doc/gettext/examples/hello-ocaml/po/sr.po +#usr/share/doc/gettext/examples/hello-ocaml/po/sv.po +#usr/share/doc/gettext/examples/hello-ocaml/po/ta.po +#usr/share/doc/gettext/examples/hello-ocaml/po/tr.po +#usr/share/doc/gettext/examples/hello-ocaml/po/uk.po +#usr/share/doc/gettext/examples/hello-ocaml/po/vi.po +#usr/share/doc/gettext/examples/hello-ocaml/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-ocaml/po/zh_HK.po +#usr/share/doc/gettext/examples/hello-ocaml/po/zh_TW.po #usr/share/doc/gettext/examples/hello-pascal #usr/share/doc/gettext/examples/hello-pascal/INSTALL #usr/share/doc/gettext/examples/hello-pascal/Makefile.am @@ -2399,6 +2459,7 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/gettext_3.html #usr/share/doc/gettext/gettext_30.html #usr/share/doc/gettext/gettext_31.html +#usr/share/doc/gettext/gettext_32.html #usr/share/doc/gettext/gettext_4.html #usr/share/doc/gettext/gettext_5.html #usr/share/doc/gettext/gettext_6.html @@ -2438,13 +2499,16 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/msggrep.1.html #usr/share/doc/gettext/msginit.1.html #usr/share/doc/gettext/msgmerge.1.html +#usr/share/doc/gettext/msgpre.1.html #usr/share/doc/gettext/msgunfmt.1.html #usr/share/doc/gettext/msguniq.1.html #usr/share/doc/gettext/ngettext.1.html #usr/share/doc/gettext/ngettext.3.html +#usr/share/doc/gettext/po-fetch.1.html #usr/share/doc/gettext/printf_gettext.1.html #usr/share/doc/gettext/printf_ngettext.1.html #usr/share/doc/gettext/recode-sr-latin.1.html +#usr/share/doc/gettext/spit.1.html #usr/share/doc/gettext/textdomain.3.html #usr/share/doc/gettext/tutorial.html #usr/share/doc/gettext/xgettext.1.html @@ -2461,19 +2525,19 @@ usr/lib/preloadable_libintl.so #usr/share/doc/libtextstyle/libtextstyle_abt.html #usr/share/doc/libtextstyle/libtextstyle_toc.html #usr/share/gettext -#usr/share/gettext-0.26 -#usr/share/gettext-0.26/its -#usr/share/gettext-0.26/its/docbook.loc -#usr/share/gettext-0.26/its/docbook4.its -#usr/share/gettext-0.26/its/docbook5.its -#usr/share/gettext-0.26/its/glade.loc -#usr/share/gettext-0.26/its/glade1.its -#usr/share/gettext-0.26/its/glade2.its -#usr/share/gettext-0.26/its/gsettings.its -#usr/share/gettext-0.26/its/gsettings.loc -#usr/share/gettext-0.26/its/gtkbuilder.its -#usr/share/gettext-0.26/its/metainfo.its -#usr/share/gettext-0.26/its/metainfo.loc +#usr/share/gettext-1.0 +#usr/share/gettext-1.0/its +#usr/share/gettext-1.0/its/docbook.loc +#usr/share/gettext-1.0/its/docbook4.its +#usr/share/gettext-1.0/its/docbook5.its +#usr/share/gettext-1.0/its/glade.loc +#usr/share/gettext-1.0/its/glade1.its +#usr/share/gettext-1.0/its/glade2.its +#usr/share/gettext-1.0/its/gsettings.its +#usr/share/gettext-1.0/its/gsettings.loc +#usr/share/gettext-1.0/its/gtkbuilder.its +#usr/share/gettext-1.0/its/metainfo.its +#usr/share/gettext-1.0/its/metainfo.loc #usr/share/gettext/ABOUT-NLS #usr/share/gettext/archive.dir.tar.xz #usr/share/gettext/config.rpath @@ -2500,6 +2564,7 @@ usr/lib/preloadable_libintl.so #usr/share/gettext/po/boldquot.sed #usr/share/gettext/po/en@boldquot.header #usr/share/gettext/po/en@quot.header +#usr/share/gettext/po/fetch-po #usr/share/gettext/po/insert-header.sed #usr/share/gettext/po/quot.sed #usr/share/gettext/po/remove-potcdate.sed @@ -2553,12 +2618,15 @@ usr/lib/preloadable_libintl.so #usr/share/man/man1/msggrep.1 #usr/share/man/man1/msginit.1 #usr/share/man/man1/msgmerge.1 +#usr/share/man/man1/msgpre.1 #usr/share/man/man1/msgunfmt.1 #usr/share/man/man1/msguniq.1 #usr/share/man/man1/ngettext.1 +#usr/share/man/man1/po-fetch.1 #usr/share/man/man1/printf_gettext.1 #usr/share/man/man1/printf_ngettext.1 #usr/share/man/man1/recode-sr-latin.1 +#usr/share/man/man1/spit.1 #usr/share/man/man1/xgettext.1 #usr/share/man/man3/bind_textdomain_codeset.3 #usr/share/man/man3/bindtextdomain.3 diff --git a/lfs/gettext b/lfs/gettext index 71c1183f0..fe19951c9 100644 --- a/lfs/gettext +++ b/lfs/gettext @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2025 IPFire Team # +# Copyright (C) 2007-2026 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 0.26 +VER = 1.0 THISAPP = gettext-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -56,7 +56,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_BLAKE2 = b182e5fdb9fc46868dc39b512ef300c54c8e77a766f2d2de69289f84966d4205f494b3ecedfb30c6df581947172411ae7eb4ccc0bb1f180b67dd8a83803832a8 +$(DL_FILE)_BLAKE2 = 052bd847c8cdb963437613583256e430b52e27e5ebe29a04df6ac549552ab0f85a1e637b991ebb57e82805fb6d2d23f37c4b70d7f711dc086f57a3a32ba3f00e install : $(TARGET)