summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2025-05-04 09:29:41 -0300
committerEuAndreh <eu@euandre.org>2025-05-04 09:29:41 -0300
commitb5260b292ae5f54902ec7a61fde340e03ce854e9 (patch)
treec73f6b14f462251bda9c9c5a389fe6db8e5112bf
parentAdd standalone uuid(1) utility (diff)
downloaduuid-b5260b292ae5f54902ec7a61fde340e03ce854e9.tar.gz
uuid-b5260b292ae5f54902ec7a61fde340e03ce854e9.tar.xz
Add i18n for manpages
Diffstat (limited to '')
-rw-r--r--Makefile5
-rw-r--r--deps.mk5
-rw-r--r--doc/uuid.de.1.adoc129
-rw-r--r--doc/uuid.eo.1.adoc129
-rw-r--r--doc/uuid.es.1.adoc129
-rw-r--r--doc/uuid.fr.1.adoc129
-rw-r--r--doc/uuid.pt.1.adoc129
-rw-r--r--po/de.po304
-rw-r--r--po/eo.po304
-rw-r--r--po/es.po304
-rw-r--r--po/fr.po304
-rw-r--r--po/note.txt5
-rw-r--r--po/po4a.cfg5
-rw-r--r--po/pt.po304
-rw-r--r--po/uuid.pot303
15 files changed, 2488 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index abd4ca9..d912d70 100644
--- a/Makefile
+++ b/Makefile
@@ -142,6 +142,11 @@ bench: $(benchmarks/main.bin-check)
+i18n:
+ po4a po/po4a.cfg
+
+
+
## Remove *all* derived artifacts produced during the build.
## A dedicated test asserts that this is always true.
clean:
diff --git a/deps.mk b/deps.mk
index 8630b53..21edbee 100644
--- a/deps.mk
+++ b/deps.mk
@@ -15,7 +15,12 @@ mains.go = \
tests/main.go \
manpages.N.adoc = \
+ doc/uuid.de.1.adoc \
doc/uuid.en.1.adoc \
+ doc/uuid.eo.1.adoc \
+ doc/uuid.es.1.adoc \
+ doc/uuid.fr.1.adoc \
+ doc/uuid.pt.1.adoc \
functional-tests/lib.go = \
tests/functional/string-round-trip/uuid.go \
diff --git a/doc/uuid.de.1.adoc b/doc/uuid.de.1.adoc
new file mode 100644
index 0000000..a0d507b
--- /dev/null
+++ b/doc/uuid.de.1.adoc
@@ -0,0 +1,129 @@
+= uuid(1)
+
+
+
+== NAME
+
+uuid - generate or validate a UUIDv4
+
+
+
+== SYNOPSYS
+
+*uuid* [_STRING_]
+
+
+
+== EXAMPLES
+
+
+=== Print a UUID on the terminal
+
+....
+$ uuid
+d3891787-c952-af17-d697-0df3b85981e1
+....
+
+
+=== Create a new UUID as part of a path
+
+....
+dir="$PWD"/"$(uuid)"/data
+....
+
+
+=== Validate a given UUID
+
+....
+ID="$(basename -- "$directory")"
+if ! uuid "$ID"; then
+ echo "Bad UUID in directory: $ID" >&2
+ exit 1
+fi
+....
+
+
+
+== DESCRIPTION
+
+The *uuid* utility generates a new UUID when no _STRING_ is given and write it to _stdout_. If a _STRING_ is given, *uuid* validates it and exits, and produces no output.
+
+
+
+== OPERANDS
+
+_STRING_:: If it is
+
+ *not given*::: generate a brand new random UUIDv4, print it to _stdout_ and exit normally;
+ *given*::: test if it is a valid UUIDv4 and exit normally if so.
+
+
+
+== IO
+
+
+=== STDIN
+
+Not used.
+
+
+=== STDOUT
+
+The UUIDv4 format is made of byte blocks encoded as hexadecimals, using a <hyphen-minus>('`-`') as the block separator:
+
+....
+XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
+....
+
+An example output is:
+
+....
+cb46d0c0-b2aa-4a6c-a119-8deace2544a2
+....
+
+
+=== STDERR
+
+Not used.
+
+
+=== INPUT FILES
+
+None.
+
+
+=== OUTPUT FILES
+
+None.
+
+
+
+== EXIT STATUS
+
+0:: Generating or validating a UUID was successfull.
+3:: UUID validation failed.
+
+
+
+== CONFORMING TO
+
+The v4 UUID defined in *RFC 9562*.
+
+
+
+== SEE ALSO
+
+
+
+== AUTHORS
+
+mailto:eu@euandre.org[EuAndreh] and contributors.
+
+
+
+== BUGS
+
+* Report bugs to the mailto:~euandreh/public-inbox@lists.sr.ht[mailing list]. Use the subject "[uuid] BUG or TASK: <description>".
+* Browse bugs https://euandre.org/git/uuid/TODOs.html[online].
+* https://euandre.org/git/uuid/[Homepage].
+* https://lists.sr.ht/~euandreh/public-inbox?search=%5Buuid%5D[Comments and discussions].
diff --git a/doc/uuid.eo.1.adoc b/doc/uuid.eo.1.adoc
new file mode 100644
index 0000000..a0d507b
--- /dev/null
+++ b/doc/uuid.eo.1.adoc
@@ -0,0 +1,129 @@
+= uuid(1)
+
+
+
+== NAME
+
+uuid - generate or validate a UUIDv4
+
+
+
+== SYNOPSYS
+
+*uuid* [_STRING_]
+
+
+
+== EXAMPLES
+
+
+=== Print a UUID on the terminal
+
+....
+$ uuid
+d3891787-c952-af17-d697-0df3b85981e1
+....
+
+
+=== Create a new UUID as part of a path
+
+....
+dir="$PWD"/"$(uuid)"/data
+....
+
+
+=== Validate a given UUID
+
+....
+ID="$(basename -- "$directory")"
+if ! uuid "$ID"; then
+ echo "Bad UUID in directory: $ID" >&2
+ exit 1
+fi
+....
+
+
+
+== DESCRIPTION
+
+The *uuid* utility generates a new UUID when no _STRING_ is given and write it to _stdout_. If a _STRING_ is given, *uuid* validates it and exits, and produces no output.
+
+
+
+== OPERANDS
+
+_STRING_:: If it is
+
+ *not given*::: generate a brand new random UUIDv4, print it to _stdout_ and exit normally;
+ *given*::: test if it is a valid UUIDv4 and exit normally if so.
+
+
+
+== IO
+
+
+=== STDIN
+
+Not used.
+
+
+=== STDOUT
+
+The UUIDv4 format is made of byte blocks encoded as hexadecimals, using a <hyphen-minus>('`-`') as the block separator:
+
+....
+XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
+....
+
+An example output is:
+
+....
+cb46d0c0-b2aa-4a6c-a119-8deace2544a2
+....
+
+
+=== STDERR
+
+Not used.
+
+
+=== INPUT FILES
+
+None.
+
+
+=== OUTPUT FILES
+
+None.
+
+
+
+== EXIT STATUS
+
+0:: Generating or validating a UUID was successfull.
+3:: UUID validation failed.
+
+
+
+== CONFORMING TO
+
+The v4 UUID defined in *RFC 9562*.
+
+
+
+== SEE ALSO
+
+
+
+== AUTHORS
+
+mailto:eu@euandre.org[EuAndreh] and contributors.
+
+
+
+== BUGS
+
+* Report bugs to the mailto:~euandreh/public-inbox@lists.sr.ht[mailing list]. Use the subject "[uuid] BUG or TASK: <description>".
+* Browse bugs https://euandre.org/git/uuid/TODOs.html[online].
+* https://euandre.org/git/uuid/[Homepage].
+* https://lists.sr.ht/~euandreh/public-inbox?search=%5Buuid%5D[Comments and discussions].
diff --git a/doc/uuid.es.1.adoc b/doc/uuid.es.1.adoc
new file mode 100644
index 0000000..a0d507b
--- /dev/null
+++ b/doc/uuid.es.1.adoc
@@ -0,0 +1,129 @@
+= uuid(1)
+
+
+
+== NAME
+
+uuid - generate or validate a UUIDv4
+
+
+
+== SYNOPSYS
+
+*uuid* [_STRING_]
+
+
+
+== EXAMPLES
+
+
+=== Print a UUID on the terminal
+
+....
+$ uuid
+d3891787-c952-af17-d697-0df3b85981e1
+....
+
+
+=== Create a new UUID as part of a path
+
+....
+dir="$PWD"/"$(uuid)"/data
+....
+
+
+=== Validate a given UUID
+
+....
+ID="$(basename -- "$directory")"
+if ! uuid "$ID"; then
+ echo "Bad UUID in directory: $ID" >&2
+ exit 1
+fi
+....
+
+
+
+== DESCRIPTION
+
+The *uuid* utility generates a new UUID when no _STRING_ is given and write it to _stdout_. If a _STRING_ is given, *uuid* validates it and exits, and produces no output.
+
+
+
+== OPERANDS
+
+_STRING_:: If it is
+
+ *not given*::: generate a brand new random UUIDv4, print it to _stdout_ and exit normally;
+ *given*::: test if it is a valid UUIDv4 and exit normally if so.
+
+
+
+== IO
+
+
+=== STDIN
+
+Not used.
+
+
+=== STDOUT
+
+The UUIDv4 format is made of byte blocks encoded as hexadecimals, using a <hyphen-minus>('`-`') as the block separator:
+
+....
+XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
+....
+
+An example output is:
+
+....
+cb46d0c0-b2aa-4a6c-a119-8deace2544a2
+....
+
+
+=== STDERR
+
+Not used.
+
+
+=== INPUT FILES
+
+None.
+
+
+=== OUTPUT FILES
+
+None.
+
+
+
+== EXIT STATUS
+
+0:: Generating or validating a UUID was successfull.
+3:: UUID validation failed.
+
+
+
+== CONFORMING TO
+
+The v4 UUID defined in *RFC 9562*.
+
+
+
+== SEE ALSO
+
+
+
+== AUTHORS
+
+mailto:eu@euandre.org[EuAndreh] and contributors.
+
+
+
+== BUGS
+
+* Report bugs to the mailto:~euandreh/public-inbox@lists.sr.ht[mailing list]. Use the subject "[uuid] BUG or TASK: <description>".
+* Browse bugs https://euandre.org/git/uuid/TODOs.html[online].
+* https://euandre.org/git/uuid/[Homepage].
+* https://lists.sr.ht/~euandreh/public-inbox?search=%5Buuid%5D[Comments and discussions].
diff --git a/doc/uuid.fr.1.adoc b/doc/uuid.fr.1.adoc
new file mode 100644
index 0000000..a0d507b
--- /dev/null
+++ b/doc/uuid.fr.1.adoc
@@ -0,0 +1,129 @@
+= uuid(1)
+
+
+
+== NAME
+
+uuid - generate or validate a UUIDv4
+
+
+
+== SYNOPSYS
+
+*uuid* [_STRING_]
+
+
+
+== EXAMPLES
+
+
+=== Print a UUID on the terminal
+
+....
+$ uuid
+d3891787-c952-af17-d697-0df3b85981e1
+....
+
+
+=== Create a new UUID as part of a path
+
+....
+dir="$PWD"/"$(uuid)"/data
+....
+
+
+=== Validate a given UUID
+
+....
+ID="$(basename -- "$directory")"
+if ! uuid "$ID"; then
+ echo "Bad UUID in directory: $ID" >&2
+ exit 1
+fi
+....
+
+
+
+== DESCRIPTION
+
+The *uuid* utility generates a new UUID when no _STRING_ is given and write it to _stdout_. If a _STRING_ is given, *uuid* validates it and exits, and produces no output.
+
+
+
+== OPERANDS
+
+_STRING_:: If it is
+
+ *not given*::: generate a brand new random UUIDv4, print it to _stdout_ and exit normally;
+ *given*::: test if it is a valid UUIDv4 and exit normally if so.
+
+
+
+== IO
+
+
+=== STDIN
+
+Not used.
+
+
+=== STDOUT
+
+The UUIDv4 format is made of byte blocks encoded as hexadecimals, using a <hyphen-minus>('`-`') as the block separator:
+
+....
+XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
+....
+
+An example output is:
+
+....
+cb46d0c0-b2aa-4a6c-a119-8deace2544a2
+....
+
+
+=== STDERR
+
+Not used.
+
+
+=== INPUT FILES
+
+None.
+
+
+=== OUTPUT FILES
+
+None.
+
+
+
+== EXIT STATUS
+
+0:: Generating or validating a UUID was successfull.
+3:: UUID validation failed.
+
+
+
+== CONFORMING TO
+
+The v4 UUID defined in *RFC 9562*.
+
+
+
+== SEE ALSO
+
+
+
+== AUTHORS
+
+mailto:eu@euandre.org[EuAndreh] and contributors.
+
+
+
+== BUGS
+
+* Report bugs to the mailto:~euandreh/public-inbox@lists.sr.ht[mailing list]. Use the subject "[uuid] BUG or TASK: <description>".
+* Browse bugs https://euandre.org/git/uuid/TODOs.html[online].
+* https://euandre.org/git/uuid/[Homepage].
+* https://lists.sr.ht/~euandreh/public-inbox?search=%5Buuid%5D[Comments and discussions].
diff --git a/doc/uuid.pt.1.adoc b/doc/uuid.pt.1.adoc
new file mode 100644
index 0000000..a0d507b
--- /dev/null
+++ b/doc/uuid.pt.1.adoc
@@ -0,0 +1,129 @@
+= uuid(1)
+
+
+
+== NAME
+
+uuid - generate or validate a UUIDv4
+
+
+
+== SYNOPSYS
+
+*uuid* [_STRING_]
+
+
+
+== EXAMPLES
+
+
+=== Print a UUID on the terminal
+
+....
+$ uuid
+d3891787-c952-af17-d697-0df3b85981e1
+....
+
+
+=== Create a new UUID as part of a path
+
+....
+dir="$PWD"/"$(uuid)"/data
+....
+
+
+=== Validate a given UUID
+
+....
+ID="$(basename -- "$directory")"
+if ! uuid "$ID"; then
+ echo "Bad UUID in directory: $ID" >&2
+ exit 1
+fi
+....
+
+
+
+== DESCRIPTION
+
+The *uuid* utility generates a new UUID when no _STRING_ is given and write it to _stdout_. If a _STRING_ is given, *uuid* validates it and exits, and produces no output.
+
+
+
+== OPERANDS
+
+_STRING_:: If it is
+
+ *not given*::: generate a brand new random UUIDv4, print it to _stdout_ and exit normally;
+ *given*::: test if it is a valid UUIDv4 and exit normally if so.
+
+
+
+== IO
+
+
+=== STDIN
+
+Not used.
+
+
+=== STDOUT
+
+The UUIDv4 format is made of byte blocks encoded as hexadecimals, using a <hyphen-minus>('`-`') as the block separator:
+
+....
+XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
+....
+
+An example output is:
+
+....
+cb46d0c0-b2aa-4a6c-a119-8deace2544a2
+....
+
+
+=== STDERR
+
+Not used.
+
+
+=== INPUT FILES
+
+None.
+
+
+=== OUTPUT FILES
+
+None.
+
+
+
+== EXIT STATUS
+
+0:: Generating or validating a UUID was successfull.
+3:: UUID validation failed.
+
+
+
+== CONFORMING TO
+
+The v4 UUID defined in *RFC 9562*.
+
+
+
+== SEE ALSO
+
+
+
+== AUTHORS
+
+mailto:eu@euandre.org[EuAndreh] and contributors.
+
+
+
+== BUGS
+
+* Report bugs to the mailto:~euandreh/public-inbox@lists.sr.ht[mailing list]. Use the subject "[uuid] BUG or TASK: <description>".
+* Browse bugs https://euandre.org/git/uuid/TODOs.html[online].
+* https://euandre.org/git/uuid/[Homepage].
+* https://lists.sr.ht/~euandreh/public-inbox?search=%5Buuid%5D[Comments and discussions].
diff --git a/po/de.po b/po/de.po
new file mode 100644
index 0000000..f3a3a89
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,304 @@
+# German translations for PACKAGE package
+# Copyright (C) 2025 Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2025.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2025-05-04 09:15-0300\n"
+"PO-Revision-Date: 2025-05-04 09:15-0300\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. type: Title =
+#: doc/uuid.en.1.adoc:1
+#, no-wrap
+msgid "uuid(1)"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:5
+#, no-wrap
+msgid "NAME"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:8
+msgid "uuid - generate or validate a UUIDv4"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:11
+#, no-wrap
+msgid "SYNOPSYS"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:14
+msgid "*uuid* [_STRING_]"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:17
+#, no-wrap
+msgid "EXAMPLES"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:20
+#, no-wrap
+msgid "Print a UUID on the terminal"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:25
+#, no-wrap
+msgid ""
+"$ uuid\n"
+"d3891787-c952-af17-d697-0df3b85981e1\n"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:28
+#, no-wrap
+msgid "Create a new UUID as part of a path"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:32
+#, no-wrap
+msgid "dir=\"$PWD\"/\"$(uuid)\"/data\n"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:35
+#, no-wrap
+msgid "Validate a given UUID"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:43
+#, no-wrap
+msgid ""
+"ID=\"$(basename -- \"$directory\")\"\n"
+"if ! uuid \"$ID\"; then\n"
+"\techo \"Bad UUID in directory: $ID\" >&2\n"
+"\texit 1\n"
+"fi\n"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:47
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:52
+msgid ""
+"The *uuid* utility generates a new UUID when no _STRING_ is given and write "
+"it to _stdout_. If a _STRING_ is given, *uuid* validates it and exits, and "
+"produces no output."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:55
+#, no-wrap
+msgid "OPERANDS"
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:57
+#, no-wrap
+msgid "_STRING_"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:58
+msgid "If it is"
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:59
+#, no-wrap
+msgid "*not given*"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:61
+msgid ""
+"generate a brand new random UUIDv4, print it to _stdout_ and exit normally;"
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:61
+#, no-wrap
+msgid "*given*"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:62
+msgid "test if it is a valid UUIDv4 and exit normally if so."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:65
+#, no-wrap
+msgid "IO"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:68
+#, no-wrap
+msgid "STDIN"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:71 doc/uuid.en.1.adoc:92
+msgid "Not used."
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:73
+#, no-wrap
+msgid "STDOUT"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:77
+msgid ""
+"The UUIDv4 format is made of byte blocks encoded as hexadecimals, using a "
+"<hyphen-minus>('`-`') as the block separator:"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:80
+#, no-wrap
+msgid "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:83
+msgid "An example output is:"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:86
+#, no-wrap
+msgid "cb46d0c0-b2aa-4a6c-a119-8deace2544a2\n"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:89
+#, no-wrap
+msgid "STDERR"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:94
+#, no-wrap
+msgid "INPUT FILES"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:97 doc/uuid.en.1.adoc:102
+msgid "None."
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:99
+#, no-wrap
+msgid "OUTPUT FILES"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:105
+#, no-wrap
+msgid "EXIT STATUS"
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:107
+#, no-wrap
+msgid "0"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:108
+msgid "Generating or validating a UUID was successfull."
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:108
+#, no-wrap
+msgid "3"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:109
+msgid "UUID validation failed."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:112
+#, no-wrap
+msgid "CONFORMING TO"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:115
+msgid "The v4 UUID defined in *RFC 9562*."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:118
+#, no-wrap
+msgid "SEE ALSO"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:122
+#, no-wrap
+msgid "AUTHORS"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:125
+msgid "mailto:eu@euandre.org[EuAndreh] and contributors."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:128
+#, no-wrap
+msgid "BUGS"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:132
+msgid ""
+"Report bugs to the mailto:~euandreh/public-inbox@lists.sr.ht[mailing list]. "
+"Use the subject \"[uuid] BUG or TASK: <description>\"."
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:133
+msgid "Browse bugs https://euandre.org/git/uuid/TODOs.html[online]."
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:134
+msgid "https://euandre.org/git/uuid/[Homepage]."
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:134
+msgid ""
+"https://lists.sr.ht/~euandreh/public-inbox?search=%5Buuid%5D[Comments and "
+"discussions]."
+msgstr ""
diff --git a/po/eo.po b/po/eo.po
new file mode 100644
index 0000000..87ea581
--- /dev/null
+++ b/po/eo.po
@@ -0,0 +1,304 @@
+# Esperanto translations for PACKAGE package
+# Copyright (C) 2025 Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2025.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2025-05-04 09:15-0300\n"
+"PO-Revision-Date: 2025-05-04 09:15-0300\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: eo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. type: Title =
+#: doc/uuid.en.1.adoc:1
+#, no-wrap
+msgid "uuid(1)"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:5
+#, no-wrap
+msgid "NAME"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:8
+msgid "uuid - generate or validate a UUIDv4"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:11
+#, no-wrap
+msgid "SYNOPSYS"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:14
+msgid "*uuid* [_STRING_]"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:17
+#, no-wrap
+msgid "EXAMPLES"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:20
+#, no-wrap
+msgid "Print a UUID on the terminal"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:25
+#, no-wrap
+msgid ""
+"$ uuid\n"
+"d3891787-c952-af17-d697-0df3b85981e1\n"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:28
+#, no-wrap
+msgid "Create a new UUID as part of a path"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:32
+#, no-wrap
+msgid "dir=\"$PWD\"/\"$(uuid)\"/data\n"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:35
+#, no-wrap
+msgid "Validate a given UUID"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:43
+#, no-wrap
+msgid ""
+"ID=\"$(basename -- \"$directory\")\"\n"
+"if ! uuid \"$ID\"; then\n"
+"\techo \"Bad UUID in directory: $ID\" >&2\n"
+"\texit 1\n"
+"fi\n"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:47
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:52
+msgid ""
+"The *uuid* utility generates a new UUID when no _STRING_ is given and write "
+"it to _stdout_. If a _STRING_ is given, *uuid* validates it and exits, and "
+"produces no output."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:55
+#, no-wrap
+msgid "OPERANDS"
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:57
+#, no-wrap
+msgid "_STRING_"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:58
+msgid "If it is"
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:59
+#, no-wrap
+msgid "*not given*"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:61
+msgid ""
+"generate a brand new random UUIDv4, print it to _stdout_ and exit normally;"
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:61
+#, no-wrap
+msgid "*given*"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:62
+msgid "test if it is a valid UUIDv4 and exit normally if so."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:65
+#, no-wrap
+msgid "IO"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:68
+#, no-wrap
+msgid "STDIN"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:71 doc/uuid.en.1.adoc:92
+msgid "Not used."
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:73
+#, no-wrap
+msgid "STDOUT"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:77
+msgid ""
+"The UUIDv4 format is made of byte blocks encoded as hexadecimals, using a "
+"<hyphen-minus>('`-`') as the block separator:"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:80
+#, no-wrap
+msgid "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:83
+msgid "An example output is:"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:86
+#, no-wrap
+msgid "cb46d0c0-b2aa-4a6c-a119-8deace2544a2\n"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:89
+#, no-wrap
+msgid "STDERR"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:94
+#, no-wrap
+msgid "INPUT FILES"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:97 doc/uuid.en.1.adoc:102
+msgid "None."
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:99
+#, no-wrap
+msgid "OUTPUT FILES"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:105
+#, no-wrap
+msgid "EXIT STATUS"
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:107
+#, no-wrap
+msgid "0"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:108
+msgid "Generating or validating a UUID was successfull."
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:108
+#, no-wrap
+msgid "3"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:109
+msgid "UUID validation failed."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:112
+#, no-wrap
+msgid "CONFORMING TO"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:115
+msgid "The v4 UUID defined in *RFC 9562*."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:118
+#, no-wrap
+msgid "SEE ALSO"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:122
+#, no-wrap
+msgid "AUTHORS"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:125
+msgid "mailto:eu@euandre.org[EuAndreh] and contributors."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:128
+#, no-wrap
+msgid "BUGS"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:132
+msgid ""
+"Report bugs to the mailto:~euandreh/public-inbox@lists.sr.ht[mailing list]. "
+"Use the subject \"[uuid] BUG or TASK: <description>\"."
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:133
+msgid "Browse bugs https://euandre.org/git/uuid/TODOs.html[online]."
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:134
+msgid "https://euandre.org/git/uuid/[Homepage]."
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:134
+msgid ""
+"https://lists.sr.ht/~euandreh/public-inbox?search=%5Buuid%5D[Comments and "
+"discussions]."
+msgstr ""
diff --git a/po/es.po b/po/es.po
new file mode 100644
index 0000000..c8d79fa
--- /dev/null
+++ b/po/es.po
@@ -0,0 +1,304 @@
+# Spanish translations for PACKAGE package
+# Copyright (C) 2025 Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2025.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2025-05-04 09:15-0300\n"
+"PO-Revision-Date: 2025-05-04 09:15-0300\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. type: Title =
+#: doc/uuid.en.1.adoc:1
+#, no-wrap
+msgid "uuid(1)"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:5
+#, no-wrap
+msgid "NAME"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:8
+msgid "uuid - generate or validate a UUIDv4"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:11
+#, no-wrap
+msgid "SYNOPSYS"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:14
+msgid "*uuid* [_STRING_]"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:17
+#, no-wrap
+msgid "EXAMPLES"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:20
+#, no-wrap
+msgid "Print a UUID on the terminal"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:25
+#, no-wrap
+msgid ""
+"$ uuid\n"
+"d3891787-c952-af17-d697-0df3b85981e1\n"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:28
+#, no-wrap
+msgid "Create a new UUID as part of a path"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:32
+#, no-wrap
+msgid "dir=\"$PWD\"/\"$(uuid)\"/data\n"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:35
+#, no-wrap
+msgid "Validate a given UUID"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:43
+#, no-wrap
+msgid ""
+"ID=\"$(basename -- \"$directory\")\"\n"
+"if ! uuid \"$ID\"; then\n"
+"\techo \"Bad UUID in directory: $ID\" >&2\n"
+"\texit 1\n"
+"fi\n"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:47
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:52
+msgid ""
+"The *uuid* utility generates a new UUID when no _STRING_ is given and write "
+"it to _stdout_. If a _STRING_ is given, *uuid* validates it and exits, and "
+"produces no output."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:55
+#, no-wrap
+msgid "OPERANDS"
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:57
+#, no-wrap
+msgid "_STRING_"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:58
+msgid "If it is"
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:59
+#, no-wrap
+msgid "*not given*"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:61
+msgid ""
+"generate a brand new random UUIDv4, print it to _stdout_ and exit normally;"
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:61
+#, no-wrap
+msgid "*given*"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:62
+msgid "test if it is a valid UUIDv4 and exit normally if so."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:65
+#, no-wrap
+msgid "IO"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:68
+#, no-wrap
+msgid "STDIN"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:71 doc/uuid.en.1.adoc:92
+msgid "Not used."
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:73
+#, no-wrap
+msgid "STDOUT"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:77
+msgid ""
+"The UUIDv4 format is made of byte blocks encoded as hexadecimals, using a "
+"<hyphen-minus>('`-`') as the block separator:"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:80
+#, no-wrap
+msgid "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:83
+msgid "An example output is:"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:86
+#, no-wrap
+msgid "cb46d0c0-b2aa-4a6c-a119-8deace2544a2\n"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:89
+#, no-wrap
+msgid "STDERR"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:94
+#, no-wrap
+msgid "INPUT FILES"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:97 doc/uuid.en.1.adoc:102
+msgid "None."
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:99
+#, no-wrap
+msgid "OUTPUT FILES"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:105
+#, no-wrap
+msgid "EXIT STATUS"
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:107
+#, no-wrap
+msgid "0"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:108
+msgid "Generating or validating a UUID was successfull."
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:108
+#, no-wrap
+msgid "3"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:109
+msgid "UUID validation failed."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:112
+#, no-wrap
+msgid "CONFORMING TO"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:115
+msgid "The v4 UUID defined in *RFC 9562*."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:118
+#, no-wrap
+msgid "SEE ALSO"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:122
+#, no-wrap
+msgid "AUTHORS"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:125
+msgid "mailto:eu@euandre.org[EuAndreh] and contributors."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:128
+#, no-wrap
+msgid "BUGS"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:132
+msgid ""
+"Report bugs to the mailto:~euandreh/public-inbox@lists.sr.ht[mailing list]. "
+"Use the subject \"[uuid] BUG or TASK: <description>\"."
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:133
+msgid "Browse bugs https://euandre.org/git/uuid/TODOs.html[online]."
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:134
+msgid "https://euandre.org/git/uuid/[Homepage]."
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:134
+msgid ""
+"https://lists.sr.ht/~euandreh/public-inbox?search=%5Buuid%5D[Comments and "
+"discussions]."
+msgstr ""
diff --git a/po/fr.po b/po/fr.po
new file mode 100644
index 0000000..5d80427
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,304 @@
+# French translations for PACKAGE package
+# Copyright (C) 2025 Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2025.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2025-05-04 09:15-0300\n"
+"PO-Revision-Date: 2025-05-04 09:15-0300\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. type: Title =
+#: doc/uuid.en.1.adoc:1
+#, no-wrap
+msgid "uuid(1)"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:5
+#, no-wrap
+msgid "NAME"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:8
+msgid "uuid - generate or validate a UUIDv4"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:11
+#, no-wrap
+msgid "SYNOPSYS"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:14
+msgid "*uuid* [_STRING_]"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:17
+#, no-wrap
+msgid "EXAMPLES"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:20
+#, no-wrap
+msgid "Print a UUID on the terminal"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:25
+#, no-wrap
+msgid ""
+"$ uuid\n"
+"d3891787-c952-af17-d697-0df3b85981e1\n"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:28
+#, no-wrap
+msgid "Create a new UUID as part of a path"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:32
+#, no-wrap
+msgid "dir=\"$PWD\"/\"$(uuid)\"/data\n"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:35
+#, no-wrap
+msgid "Validate a given UUID"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:43
+#, no-wrap
+msgid ""
+"ID=\"$(basename -- \"$directory\")\"\n"
+"if ! uuid \"$ID\"; then\n"
+"\techo \"Bad UUID in directory: $ID\" >&2\n"
+"\texit 1\n"
+"fi\n"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:47
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:52
+msgid ""
+"The *uuid* utility generates a new UUID when no _STRING_ is given and write "
+"it to _stdout_. If a _STRING_ is given, *uuid* validates it and exits, and "
+"produces no output."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:55
+#, no-wrap
+msgid "OPERANDS"
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:57
+#, no-wrap
+msgid "_STRING_"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:58
+msgid "If it is"
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:59
+#, no-wrap
+msgid "*not given*"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:61
+msgid ""
+"generate a brand new random UUIDv4, print it to _stdout_ and exit normally;"
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:61
+#, no-wrap
+msgid "*given*"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:62
+msgid "test if it is a valid UUIDv4 and exit normally if so."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:65
+#, no-wrap
+msgid "IO"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:68
+#, no-wrap
+msgid "STDIN"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:71 doc/uuid.en.1.adoc:92
+msgid "Not used."
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:73
+#, no-wrap
+msgid "STDOUT"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:77
+msgid ""
+"The UUIDv4 format is made of byte blocks encoded as hexadecimals, using a "
+"<hyphen-minus>('`-`') as the block separator:"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:80
+#, no-wrap
+msgid "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:83
+msgid "An example output is:"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:86
+#, no-wrap
+msgid "cb46d0c0-b2aa-4a6c-a119-8deace2544a2\n"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:89
+#, no-wrap
+msgid "STDERR"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:94
+#, no-wrap
+msgid "INPUT FILES"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:97 doc/uuid.en.1.adoc:102
+msgid "None."
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:99
+#, no-wrap
+msgid "OUTPUT FILES"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:105
+#, no-wrap
+msgid "EXIT STATUS"
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:107
+#, no-wrap
+msgid "0"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:108
+msgid "Generating or validating a UUID was successfull."
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:108
+#, no-wrap
+msgid "3"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:109
+msgid "UUID validation failed."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:112
+#, no-wrap
+msgid "CONFORMING TO"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:115
+msgid "The v4 UUID defined in *RFC 9562*."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:118
+#, no-wrap
+msgid "SEE ALSO"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:122
+#, no-wrap
+msgid "AUTHORS"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:125
+msgid "mailto:eu@euandre.org[EuAndreh] and contributors."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:128
+#, no-wrap
+msgid "BUGS"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:132
+msgid ""
+"Report bugs to the mailto:~euandreh/public-inbox@lists.sr.ht[mailing list]. "
+"Use the subject \"[uuid] BUG or TASK: <description>\"."
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:133
+msgid "Browse bugs https://euandre.org/git/uuid/TODOs.html[online]."
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:134
+msgid "https://euandre.org/git/uuid/[Homepage]."
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:134
+msgid ""
+"https://lists.sr.ht/~euandreh/public-inbox?search=%5Buuid%5D[Comments and "
+"discussions]."
+msgstr ""
diff --git a/po/note.txt b/po/note.txt
new file mode 100644
index 0000000..45279a4
--- /dev/null
+++ b/po/note.txt
@@ -0,0 +1,5 @@
+PO4A-HEADER: mode=eof
+
+
+
+// Generated from po4a(1).
diff --git a/po/po4a.cfg b/po/po4a.cfg
new file mode 100644
index 0000000..3a2afdc
--- /dev/null
+++ b/po/po4a.cfg
@@ -0,0 +1,5 @@
+[options] --keep 0 --master-charset UTF-8 --localized-charset UTF-8 --addendum-charset UTF-8
+
+[po_directory] po
+
+[type: asciidoc] doc/uuid.en.1.adoc $lang:doc/uuid.$lang.1.adoc
diff --git a/po/pt.po b/po/pt.po
new file mode 100644
index 0000000..2cf2e9f
--- /dev/null
+++ b/po/pt.po
@@ -0,0 +1,304 @@
+# Portuguese translations for PACKAGE package
+# Copyright (C) 2025 Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2025.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2025-05-04 09:15-0300\n"
+"PO-Revision-Date: 2025-05-04 09:15-0300\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: pt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. type: Title =
+#: doc/uuid.en.1.adoc:1
+#, no-wrap
+msgid "uuid(1)"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:5
+#, no-wrap
+msgid "NAME"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:8
+msgid "uuid - generate or validate a UUIDv4"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:11
+#, no-wrap
+msgid "SYNOPSYS"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:14
+msgid "*uuid* [_STRING_]"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:17
+#, no-wrap
+msgid "EXAMPLES"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:20
+#, no-wrap
+msgid "Print a UUID on the terminal"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:25
+#, no-wrap
+msgid ""
+"$ uuid\n"
+"d3891787-c952-af17-d697-0df3b85981e1\n"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:28
+#, no-wrap
+msgid "Create a new UUID as part of a path"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:32
+#, no-wrap
+msgid "dir=\"$PWD\"/\"$(uuid)\"/data\n"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:35
+#, no-wrap
+msgid "Validate a given UUID"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:43
+#, no-wrap
+msgid ""
+"ID=\"$(basename -- \"$directory\")\"\n"
+"if ! uuid \"$ID\"; then\n"
+"\techo \"Bad UUID in directory: $ID\" >&2\n"
+"\texit 1\n"
+"fi\n"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:47
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:52
+msgid ""
+"The *uuid* utility generates a new UUID when no _STRING_ is given and write "
+"it to _stdout_. If a _STRING_ is given, *uuid* validates it and exits, and "
+"produces no output."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:55
+#, no-wrap
+msgid "OPERANDS"
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:57
+#, no-wrap
+msgid "_STRING_"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:58
+msgid "If it is"
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:59
+#, no-wrap
+msgid "*not given*"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:61
+msgid ""
+"generate a brand new random UUIDv4, print it to _stdout_ and exit normally;"
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:61
+#, no-wrap
+msgid "*given*"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:62
+msgid "test if it is a valid UUIDv4 and exit normally if so."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:65
+#, no-wrap
+msgid "IO"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:68
+#, no-wrap
+msgid "STDIN"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:71 doc/uuid.en.1.adoc:92
+msgid "Not used."
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:73
+#, no-wrap
+msgid "STDOUT"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:77
+msgid ""
+"The UUIDv4 format is made of byte blocks encoded as hexadecimals, using a "
+"<hyphen-minus>('`-`') as the block separator:"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:80
+#, no-wrap
+msgid "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:83
+msgid "An example output is:"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:86
+#, no-wrap
+msgid "cb46d0c0-b2aa-4a6c-a119-8deace2544a2\n"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:89
+#, no-wrap
+msgid "STDERR"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:94
+#, no-wrap
+msgid "INPUT FILES"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:97 doc/uuid.en.1.adoc:102
+msgid "None."
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:99
+#, no-wrap
+msgid "OUTPUT FILES"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:105
+#, no-wrap
+msgid "EXIT STATUS"
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:107
+#, no-wrap
+msgid "0"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:108
+msgid "Generating or validating a UUID was successfull."
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:108
+#, no-wrap
+msgid "3"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:109
+msgid "UUID validation failed."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:112
+#, no-wrap
+msgid "CONFORMING TO"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:115
+msgid "The v4 UUID defined in *RFC 9562*."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:118
+#, no-wrap
+msgid "SEE ALSO"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:122
+#, no-wrap
+msgid "AUTHORS"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:125
+msgid "mailto:eu@euandre.org[EuAndreh] and contributors."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:128
+#, no-wrap
+msgid "BUGS"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:132
+msgid ""
+"Report bugs to the mailto:~euandreh/public-inbox@lists.sr.ht[mailing list]. "
+"Use the subject \"[uuid] BUG or TASK: <description>\"."
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:133
+msgid "Browse bugs https://euandre.org/git/uuid/TODOs.html[online]."
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:134
+msgid "https://euandre.org/git/uuid/[Homepage]."
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:134
+msgid ""
+"https://lists.sr.ht/~euandreh/public-inbox?search=%5Buuid%5D[Comments and "
+"discussions]."
+msgstr ""
diff --git a/po/uuid.pot b/po/uuid.pot
new file mode 100644
index 0000000..da2a106
--- /dev/null
+++ b/po/uuid.pot
@@ -0,0 +1,303 @@
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2025-05-04 09:15-0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: Title =
+#: doc/uuid.en.1.adoc:1
+#, no-wrap
+msgid "uuid(1)"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:5
+#, no-wrap
+msgid "NAME"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:8
+msgid "uuid - generate or validate a UUIDv4"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:11
+#, no-wrap
+msgid "SYNOPSYS"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:14
+msgid "*uuid* [_STRING_]"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:17
+#, no-wrap
+msgid "EXAMPLES"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:20
+#, no-wrap
+msgid "Print a UUID on the terminal"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:25
+#, no-wrap
+msgid ""
+"$ uuid\n"
+"d3891787-c952-af17-d697-0df3b85981e1\n"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:28
+#, no-wrap
+msgid "Create a new UUID as part of a path"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:32
+#, no-wrap
+msgid "dir=\"$PWD\"/\"$(uuid)\"/data\n"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:35
+#, no-wrap
+msgid "Validate a given UUID"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:43
+#, no-wrap
+msgid ""
+"ID=\"$(basename -- \"$directory\")\"\n"
+"if ! uuid \"$ID\"; then\n"
+"\techo \"Bad UUID in directory: $ID\" >&2\n"
+"\texit 1\n"
+"fi\n"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:47
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:52
+msgid ""
+"The *uuid* utility generates a new UUID when no _STRING_ is given and write "
+"it to _stdout_. If a _STRING_ is given, *uuid* validates it and exits, and "
+"produces no output."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:55
+#, no-wrap
+msgid "OPERANDS"
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:57
+#, no-wrap
+msgid "_STRING_"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:58
+msgid "If it is"
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:59
+#, no-wrap
+msgid "*not given*"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:61
+msgid "generate a brand new random UUIDv4, print it to _stdout_ and exit normally;"
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:61
+#, no-wrap
+msgid "*given*"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:62
+msgid "test if it is a valid UUIDv4 and exit normally if so."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:65
+#, no-wrap
+msgid "IO"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:68
+#, no-wrap
+msgid "STDIN"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:71 doc/uuid.en.1.adoc:92
+msgid "Not used."
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:73
+#, no-wrap
+msgid "STDOUT"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:77
+msgid ""
+"The UUIDv4 format is made of byte blocks encoded as hexadecimals, using a "
+"<hyphen-minus>('`-`') as the block separator:"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:80
+#, no-wrap
+msgid "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:83
+msgid "An example output is:"
+msgstr ""
+
+#. type: delimited block .
+#: doc/uuid.en.1.adoc:86
+#, no-wrap
+msgid "cb46d0c0-b2aa-4a6c-a119-8deace2544a2\n"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:89
+#, no-wrap
+msgid "STDERR"
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:94
+#, no-wrap
+msgid "INPUT FILES"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:97 doc/uuid.en.1.adoc:102
+msgid "None."
+msgstr ""
+
+#. type: Title ===
+#: doc/uuid.en.1.adoc:99
+#, no-wrap
+msgid "OUTPUT FILES"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:105
+#, no-wrap
+msgid "EXIT STATUS"
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:107
+#, no-wrap
+msgid "0"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:108
+msgid "Generating or validating a UUID was successfull."
+msgstr ""
+
+#. type: Labeled list
+#: doc/uuid.en.1.adoc:108
+#, no-wrap
+msgid "3"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:109
+msgid "UUID validation failed."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:112
+#, no-wrap
+msgid "CONFORMING TO"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:115
+msgid "The v4 UUID defined in *RFC 9562*."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:118
+#, no-wrap
+msgid "SEE ALSO"
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:122
+#, no-wrap
+msgid "AUTHORS"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:125
+msgid "mailto:eu@euandre.org[EuAndreh] and contributors."
+msgstr ""
+
+#. type: Title ==
+#: doc/uuid.en.1.adoc:128
+#, no-wrap
+msgid "BUGS"
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:132
+msgid ""
+"Report bugs to the mailto:~euandreh/public-inbox@lists.sr.ht[mailing list]. "
+"Use the subject \"[uuid] BUG or TASK: <description>\"."
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:133
+msgid "Browse bugs https://euandre.org/git/uuid/TODOs.html[online]."
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:134
+msgid "https://euandre.org/git/uuid/[Homepage]."
+msgstr ""
+
+#. type: Plain text
+#: doc/uuid.en.1.adoc:134
+msgid ""
+"https://lists.sr.ht/~euandreh/public-inbox?search=%5Buuid%5D[Comments and "
+"discussions]."
+msgstr ""