commit 732e5deef2ba5ef054fb424fc240926dd3fc6c0b
parent b4ec76c874658c0af348da396bee582b8c8901f0
Auteur: Selve <selve@asteride.xyz>
Date: Sun, 21 Jan 2024 10:15:05 -0500
internationalisation avec gettext plutôt qu'avec catgets
Diffstat:
4 files changed, 49 insertions(+), 31 deletions(-)
diff --git a/Makefile b/Makefile
@@ -1,16 +1,18 @@
COPT_SPCL = -O2 -DNDEBUG
COPT = -Wall -Wextra -Werror -Wpedantic --std=c89 ${COPT_SPCL}
CC = cc
-PREFIX = "/usr/local/bin"
+PREFIX = /usr/local/bin
+I18N_DOS = '"/usr/local/share/locale"'
+CPPOPT = -I/usr/local/include -DI18N_DOMAINE='"aplat"' -DI18N_DOS=${I18N_DOS}
.SUFFIXES: .c .o
.c.o:
- ${CC} ${COPT} -c "$<"
+ ${CC} ${COPT} ${CPPOPT} -c "$<"
all: aplat
aplat: aplat.o tampon.o
- ${CC} ${COPT} -o "$@" aplat.o tampon.o
+ ${CC} ${COPT} -L/usr/local/lib -lintl -o "$@" aplat.o tampon.o
install: aplat
install -m 755 aplat ${PREFIX}/aplat
diff --git a/aplat.c b/aplat.c
@@ -2,8 +2,8 @@
#include <stdio.h>
#include <stdlib.h>
-#include <nl_types.h>
-#include "trad.h"
+#include <libintl.h>
+#include <locale.h>
#include "tampon.h"
@@ -23,6 +23,8 @@
#define JT_FCT 2 /* séparateur fictif */
#define JT_ATM 3 /* atome */
+#define _(c) gettext(c)
+
static void utilisation(void);
static int transformer(FILE *);
static int prch_jeton(FILE *, struct tampon *, int);
@@ -31,7 +33,6 @@ static int guillemets(FILE *, struct tampon *);
static int bloc(FILE *, struct tampon *);
char *nom_prog; /* nom du programme */
-nl_catd catd;
struct tampon etq; /* tampon à étiquettes */
struct tampon ctn; /* tampon à texte */
@@ -42,7 +43,10 @@ main(int argc, char **argv)
if ((nom_prog = argv[0]) == NULL || nom_prog[0] == '\0')
nom_prog = "aplat";
- catd = catopen("aplat", 0);
+ setlocale(LC_ALL, "");
+ /*setlocale(LC_MESSAGES, "");*/
+ bindtextdomain(I18N_DOMAINE, I18N_DOS);
+ textdomain(I18N_DOMAINE);
if (argc > 1) {
utilisation();
@@ -62,8 +66,7 @@ main(int argc, char **argv)
static void
utilisation(void)
{
- printf(catgets(catd, ESMBL, TRAD_I_UTILISATION, TRAD_M_UTILISATION),
- nom_prog);
+ printf(_("Utilisation: %s <[fichier]\n"), nom_prog);
}
static int transformer(FILE *f)
@@ -83,7 +86,8 @@ static int transformer(FILE *f)
return 0;
default:
fprintf(stderr,
- catgets(catd, ESMBL, TRAD_I_ERR_PREMCAR, TRAD_M_ERR_PREMCAR),
+ _("%s: le premier caractère affichable "
+ "doit être « ( »\n"),
nom_prog);
return -1;
}
@@ -158,9 +162,7 @@ ferm:
assert(0);
deseq:
- fprintf(stderr,
- catgets(catd, ESMBL, TRAD_I_ERR_PAR, TRAD_M_ERR_PAR),
- nom_prog);
+ fprintf(stderr, _("%s: parenthèses déséquilibrées\n"), nom_prog);
return -1;
}
diff --git a/po/modele.pot b/po/modele.pot
@@ -0,0 +1,32 @@
+# Modèle pour la traduction de aplat
+# Copyright (C) 2024 Selve
+# Ce fichier est distribué sous la même licence que aplat.
+# Selve <selve@asteride.xyz>, 2024.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PAQUET VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-01-21 10:12-0500\n"
+"PO-Revision-Date: AAAA-MM-JJ HH:MM+FUSEAU\n"
+"Last-Translator: PRÉNOM NOM <ADRESSE@COURRIEL>\n"
+"Language-Team: LANGUE <LL@DOMAINE>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: aplat.c:69
+#, c-format
+msgid "Utilisation: %s <[fichier]\n"
+msgstr ""
+
+#: aplat.c:89
+#, c-format
+msgid "%s: le premier caractère affichable doit être « ( »\n"
+msgstr ""
+
+#: aplat.c:165
+#, c-format
+msgid "%s: parenthèses déséquilibrées\n"
+msgstr ""
diff --git a/trad.h b/trad.h
@@ -1,18 +0,0 @@
-#ifndef TRAD_H
-#define TRAD_H
-
-#define ESMBL 1 /* ensemble pour catgets */
-
-#define TRAD_I_UTILISATION 1
-#define TRAD_M_UTILISATION \
-"UTILISATION: %s <[fichier]\n"
-
-#define TRAD_I_ERR_PREMCAR 2
-#define TRAD_M_ERR_PREMCAR \
-"%s: le premier caractère affichable doit être « ( »\n"
-
-#define TRAD_I_ERR_PAR 3
-#define TRAD_M_ERR_PAR \
-"%s: parenthèses déséquilibrées\n"
-
-#endif