summaryrefslogtreecommitdiffstats
path: root/src/pl/plperl/po
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:15:05 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:15:05 +0000
commit46651ce6fe013220ed397add242004d764fc0153 (patch)
tree6e5299f990f88e60174a1d3ae6e48eedd2688b2b /src/pl/plperl/po
parentInitial commit. (diff)
downloadpostgresql-14-46651ce6fe013220ed397add242004d764fc0153.tar.xz
postgresql-14-46651ce6fe013220ed397add242004d764fc0153.zip
Adding upstream version 14.5.upstream/14.5upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/pl/plperl/po')
-rw-r--r--src/pl/plperl/po/cs.po227
-rw-r--r--src/pl/plperl/po/de.po222
-rw-r--r--src/pl/plperl/po/el.po225
-rw-r--r--src/pl/plperl/po/es.po224
-rw-r--r--src/pl/plperl/po/fr.po276
-rw-r--r--src/pl/plperl/po/it.po228
-rw-r--r--src/pl/plperl/po/ja.po243
-rw-r--r--src/pl/plperl/po/ko.po237
-rw-r--r--src/pl/plperl/po/pl.po225
-rw-r--r--src/pl/plperl/po/pt_BR.po220
-rw-r--r--src/pl/plperl/po/ro.po185
-rw-r--r--src/pl/plperl/po/ru.po256
-rw-r--r--src/pl/plperl/po/sv.po222
-rw-r--r--src/pl/plperl/po/tr.po236
-rw-r--r--src/pl/plperl/po/uk.po222
-rw-r--r--src/pl/plperl/po/vi.po242
-rw-r--r--src/pl/plperl/po/zh_CN.po221
17 files changed, 3911 insertions, 0 deletions
diff --git a/src/pl/plperl/po/cs.po b/src/pl/plperl/po/cs.po
new file mode 100644
index 0000000..0bded74
--- /dev/null
+++ b/src/pl/plperl/po/cs.po
@@ -0,0 +1,227 @@
+# Czech message translation file for plperl
+# Copyright (C) 2012 PostgreSQL Global Development Group
+# This file is distributed under the same license as the PostgreSQL package.
+#
+# Tomáš Vondra <tv@fuzzy.cz>, 2012, 2013.
+msgid ""
+msgstr ""
+"Project-Id-Version: plperl-cs (PostgreSQL 9.3)\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2019-09-27 08:08+0000\n"
+"PO-Revision-Date: 2019-09-27 20:57+0200\n"
+"Last-Translator: Tomas Vondra <tv@fuzzy.cz>\n"
+"Language-Team: Czech <info@cspug.cx>\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.2.3\n"
+
+#: plperl.c:406
+msgid "If true, trusted and untrusted Perl code will be compiled in strict mode."
+msgstr "Pokud je true, trusted a untrusted Perl kód bude zkompilován ve striktním módu."
+
+#: plperl.c:420
+msgid "Perl initialization code to execute when a Perl interpreter is initialized."
+msgstr "Perl inicializační kód spouštěný při inicializaci Perl interpreteru."
+
+#: plperl.c:442
+msgid "Perl initialization code to execute once when plperl is first used."
+msgstr "Perl inicializační kód spouštěný při prvním použití jazyka plperl."
+
+#: plperl.c:450
+msgid "Perl initialization code to execute once when plperlu is first used."
+msgstr "Perl inicializační kód spouštěný při prvním použití jazyka plperlu."
+
+#: plperl.c:647
+#, c-format
+msgid "cannot allocate multiple Perl interpreters on this platform"
+msgstr "na této platformě nelze alokovat více Perl interpreterů"
+
+#: plperl.c:670 plperl.c:854 plperl.c:860 plperl.c:977 plperl.c:989
+#: plperl.c:1032 plperl.c:1055 plperl.c:2154 plperl.c:2264 plperl.c:2332
+#: plperl.c:2395
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: plperl.c:671
+#, c-format
+msgid "while executing PostgreSQL::InServer::SPI::bootstrap"
+msgstr "během spouštění PostgreSQL::InServer::SPI::bootstrap"
+
+#: plperl.c:855
+#, c-format
+msgid "while parsing Perl initialization"
+msgstr "během parsování Perl inicializace"
+
+#: plperl.c:861
+#, c-format
+msgid "while running Perl initialization"
+msgstr "během běhu Perl inicializace"
+
+#: plperl.c:978
+#, c-format
+msgid "while executing PLC_TRUSTED"
+msgstr "během spouštění PLC_TRUSTED"
+
+#: plperl.c:990
+#, c-format
+msgid "while executing utf8fix"
+msgstr "během spouštění utf8fix"
+
+#: plperl.c:1033
+#, c-format
+msgid "while executing plperl.on_plperl_init"
+msgstr "během spouštění plperl.on_plperl_init"
+
+#: plperl.c:1056
+#, c-format
+msgid "while executing plperl.on_plperlu_init"
+msgstr "během spouštění plperl.on_plperlu_init"
+
+#: plperl.c:1102 plperl.c:1793
+#, c-format
+msgid "Perl hash contains nonexistent column \"%s\""
+msgstr "Perl hash obsahuje neexistující sloupec \"%s\""
+
+#: plperl.c:1107 plperl.c:1798
+#, c-format
+msgid "cannot set system attribute \"%s\""
+msgstr "nelze nastavit systémový atribut \"%s\""
+
+#: plperl.c:1195
+#, c-format
+msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
+msgstr "počet rozměrů pole (%d) překračuje povolené maximum (%d)"
+
+#: plperl.c:1207 plperl.c:1224
+#, c-format
+msgid "multidimensional arrays must have array expressions with matching dimensions"
+msgstr "vícerozměrná pole musí mít výrazy s odpovídajícími rozměry"
+
+#: plperl.c:1260
+#, c-format
+msgid "cannot convert Perl array to non-array type %s"
+msgstr "Perlové pole nelze převést na typ %s který není pole"
+
+#: plperl.c:1363
+#, c-format
+msgid "cannot convert Perl hash to non-composite type %s"
+msgstr "Perlový hash nelze převést na nekompozitní typ %s"
+
+#: plperl.c:1385 plperl.c:3306
+#, c-format
+msgid "function returning record called in context that cannot accept type record"
+msgstr "funkce vracející záznam byla zavolána z kontextu, který neumožňuje přijetí záznamu"
+
+#: plperl.c:1444
+#, c-format
+msgid "lookup failed for type %s"
+msgstr "vyhledávání selhalo pro typ %s"
+
+#: plperl.c:1768
+#, c-format
+msgid "$_TD->{new} does not exist"
+msgstr "$_TD->{new} neexistuje"
+
+#: plperl.c:1772
+#, c-format
+msgid "$_TD->{new} is not a hash reference"
+msgstr "$_TD->{new} není odkaz na hash"
+
+#: plperl.c:1803
+#, c-format
+msgid "cannot set generated column \"%s\""
+msgstr "nelze přiřazovat do generovaného sloupce \"%s\""
+
+#: plperl.c:2029 plperl.c:2871
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "PL/Perl funkce nemohou vracet datový typ %s"
+
+#: plperl.c:2042 plperl.c:2912
+#, c-format
+msgid "PL/Perl functions cannot accept type %s"
+msgstr "PL/Perl funkce nemohou přijímat datový typ %s"
+
+#: plperl.c:2159
+#, c-format
+msgid "didn't get a CODE reference from compiling function \"%s\""
+msgstr "z kompilované funkce se nepodařilo získat CODE referenci \"%s\""
+
+#: plperl.c:2252
+#, c-format
+msgid "didn't get a return item from function"
+msgstr "z funkce nebyla získána návratová hodnota"
+
+#: plperl.c:2296 plperl.c:2363
+#, c-format
+msgid "couldn't fetch $_TD"
+msgstr "nelze načíst $_TD"
+
+#: plperl.c:2320 plperl.c:2383
+#, c-format
+msgid "didn't get a return item from trigger function"
+msgstr "z triggeru nebyla získána návratová hodnota"
+
+#: plperl.c:2444
+#, c-format
+msgid "set-valued function called in context that cannot accept a set"
+msgstr "funkce vracející tabulku (set-valued) byla zavolána z kontextu, který neumožňuje přijetí tabulky"
+
+#: plperl.c:2489
+#, c-format
+msgid "set-returning PL/Perl function must return reference to array or use return_next"
+msgstr "PL/Perl funkce vracející tabulku (set-returned) musí vracet odkaz na pole nebo používat return_next."
+
+#: plperl.c:2610
+#, c-format
+msgid "ignoring modified row in DELETE trigger"
+msgstr "ignoruje modifikovaný řádek v DELETE triggeru"
+
+#: plperl.c:2618
+#, c-format
+msgid "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\""
+msgstr "výsledek PL/Perl trigger funkce musí být undef, \"SKIP\", nebo \"MODIFY\""
+
+#: plperl.c:2866
+#, c-format
+msgid "trigger functions can only be called as triggers"
+msgstr "funkce pro obsluhu triggerů mohou být volané pouze prostřednictvím triggerů"
+
+#: plperl.c:3213
+#, c-format
+msgid "query result has too many rows to fit in a Perl array"
+msgstr "výsledek dotazu má příliš mnoho řádek pro uložení do pole v Perlu"
+
+#: plperl.c:3283
+#, c-format
+msgid "cannot use return_next in a non-SETOF function"
+msgstr "return_next nelze použít v non-SETOF funkci (funkci nevracející tabulku)"
+
+#: plperl.c:3357
+#, c-format
+msgid "SETOF-composite-returning PL/Perl function must call return_next with reference to hash"
+msgstr "PL/Perl funkce vracející tabulku složených typů (SETOF-composite-returning) musí volat return_next s odkazem na hash"
+
+#: plperl.c:4132
+#, c-format
+msgid "PL/Perl function \"%s\""
+msgstr "PL/Perl funkce \"%s\""
+
+#: plperl.c:4144
+#, c-format
+msgid "compilation of PL/Perl function \"%s\""
+msgstr "kompilace PL/Perl funkce \"%s\""
+
+#: plperl.c:4153
+#, c-format
+msgid "PL/Perl anonymous code block"
+msgstr "PL/Perl anonymní blok kódu"
+
+#~ msgid "out of memory"
+#~ msgstr "paměť vyčerpána"
+
+#~ msgid "PL/Perl function must return reference to hash or array"
+#~ msgstr "PL/Perl funkce musí vracet odkaz na hash nebo pole"
diff --git a/src/pl/plperl/po/de.po b/src/pl/plperl/po/de.po
new file mode 100644
index 0000000..ba33d41
--- /dev/null
+++ b/src/pl/plperl/po/de.po
@@ -0,0 +1,222 @@
+# German message translation file for plperl
+# Copyright (C) 2019 PostgreSQL Global Development Group
+# This file is distributed under the same license as the PostgreSQL package.
+# Peter Eisentraut <peter@eisentraut.org>, 2009 - 2019.
+#
+# Use these quotes: »%s«
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 12\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2019-05-08 08:08+0000\n"
+"PO-Revision-Date: 2019-05-08 10:45+0200\n"
+"Last-Translator: Peter Eisentraut <peter@eisentraut.org>\n"
+"Language-Team: German <pgsql-translators@postgresql.org>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: plperl.c:409
+msgid "If true, trusted and untrusted Perl code will be compiled in strict mode."
+msgstr "Wenn wahr, dann wird vertrauenswürdiger und nicht vertrauenswürdiger Perl-Code im »strict«-Modus kompiliert."
+
+#: plperl.c:423
+msgid "Perl initialization code to execute when a Perl interpreter is initialized."
+msgstr "Perl-Initialisierungscode, der ausgeführt wird, wenn der Perl-Interpreter initialisiert wird."
+
+#: plperl.c:445
+msgid "Perl initialization code to execute once when plperl is first used."
+msgstr "Perl-Initialisierungscode, der ausgeführt wird, wenn plperl zum ersten Mal benutzt wird."
+
+#: plperl.c:453
+msgid "Perl initialization code to execute once when plperlu is first used."
+msgstr "Perl-Initialisierungscode, der ausgeführt wird, wenn plperlu zum ersten Mal benutzt wird."
+
+#: plperl.c:650
+#, c-format
+msgid "cannot allocate multiple Perl interpreters on this platform"
+msgstr "auf dieser Plattform können nicht mehrere Perl-Interpreter angelegt werden"
+
+#: plperl.c:673 plperl.c:857 plperl.c:863 plperl.c:980 plperl.c:992
+#: plperl.c:1035 plperl.c:1058 plperl.c:2157 plperl.c:2267 plperl.c:2335
+#: plperl.c:2398
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: plperl.c:674
+#, c-format
+msgid "while executing PostgreSQL::InServer::SPI::bootstrap"
+msgstr "beim Ausführen von PostgreSQL::InServer::SPI::bootstrap"
+
+#: plperl.c:858
+#, c-format
+msgid "while parsing Perl initialization"
+msgstr "beim Parsen der Perl-Initialisierung"
+
+#: plperl.c:864
+#, c-format
+msgid "while running Perl initialization"
+msgstr "beim Ausführen der Perl-Initialisierung"
+
+#: plperl.c:981
+#, c-format
+msgid "while executing PLC_TRUSTED"
+msgstr "beim Ausführen von PLC_TRUSTED"
+
+#: plperl.c:993
+#, c-format
+msgid "while executing utf8fix"
+msgstr "beim Ausführen von utf8fix"
+
+#: plperl.c:1036
+#, c-format
+msgid "while executing plperl.on_plperl_init"
+msgstr "beim Ausführen von plperl.on_plperl_init"
+
+#: plperl.c:1059
+#, c-format
+msgid "while executing plperl.on_plperlu_init"
+msgstr "beim Ausführen von plperl.on_plperlu_init"
+
+#: plperl.c:1105 plperl.c:1796
+#, c-format
+msgid "Perl hash contains nonexistent column \"%s\""
+msgstr "Perl-Hash enthält nicht existierende Spalte »%s«"
+
+#: plperl.c:1110 plperl.c:1801
+#, c-format
+msgid "cannot set system attribute \"%s\""
+msgstr "Systemattribut »%s« kann nicht gesetzt werden"
+
+#: plperl.c:1198
+#, c-format
+msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
+msgstr "Anzahl der Arraydimensionen (%d) überschreitet erlaubtes Maximum (%d)"
+
+#: plperl.c:1210 plperl.c:1227
+#, c-format
+msgid "multidimensional arrays must have array expressions with matching dimensions"
+msgstr "mehrdimensionale Arrays müssen Arraysausdrücke mit gleicher Anzahl Dimensionen haben"
+
+#: plperl.c:1263
+#, c-format
+msgid "cannot convert Perl array to non-array type %s"
+msgstr "kann Perl-Array nicht in Nicht-Array-Typ %s umwandeln"
+
+#: plperl.c:1366
+#, c-format
+msgid "cannot convert Perl hash to non-composite type %s"
+msgstr "kann Perl-Hash nicht in nicht zusammengesetzten Typ %s umwandeln"
+
+#: plperl.c:1388 plperl.c:3309
+#, c-format
+msgid "function returning record called in context that cannot accept type record"
+msgstr "Funktion, die einen Record zurückgibt, in einem Zusammenhang aufgerufen, der Typ record nicht verarbeiten kann"
+
+#: plperl.c:1447
+#, c-format
+msgid "lookup failed for type %s"
+msgstr "Nachschlagen nach Typ %s fehlgeschlagen"
+
+#: plperl.c:1771
+#, c-format
+msgid "$_TD->{new} does not exist"
+msgstr "$_TD->{new} existiert nicht"
+
+#: plperl.c:1775
+#, c-format
+msgid "$_TD->{new} is not a hash reference"
+msgstr "$_TD->{new} ist keine Hash-Referenz"
+
+#: plperl.c:1806
+#, c-format
+msgid "cannot set generated column \"%s\""
+msgstr "kann generierte Spalte »%s« nicht setzen"
+
+#: plperl.c:2032 plperl.c:2874
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "PL/Perl-Funktionen können keinen Rückgabetyp %s haben"
+
+#: plperl.c:2045 plperl.c:2915
+#, c-format
+msgid "PL/Perl functions cannot accept type %s"
+msgstr "PL/Perl-Funktionen können Typ %s nicht annehmen"
+
+#: plperl.c:2162
+#, c-format
+msgid "didn't get a CODE reference from compiling function \"%s\""
+msgstr "keine CODE-Referenz erhalten beim Kompilieren von Funktion »%s«"
+
+#: plperl.c:2255
+#, c-format
+msgid "didn't get a return item from function"
+msgstr "keinen Rückgabewert aus Funktion erhalten"
+
+#: plperl.c:2299 plperl.c:2366
+#, c-format
+msgid "couldn't fetch $_TD"
+msgstr "konnte $_TD nicht auslesen"
+
+#: plperl.c:2323 plperl.c:2386
+#, c-format
+msgid "didn't get a return item from trigger function"
+msgstr "keinen Rückgabewert aus Triggerfunktion erhalten"
+
+#: plperl.c:2447
+#, c-format
+msgid "set-valued function called in context that cannot accept a set"
+msgstr "Funktion mit Mengenergebnis in einem Zusammenhang aufgerufen, der keine Mengenergebnisse verarbeiten kann"
+
+#: plperl.c:2492
+#, c-format
+msgid "set-returning PL/Perl function must return reference to array or use return_next"
+msgstr "PL/Perl-Funktionen mit Mengenergebnis müssen eine Referenz auf ein Array zurückgeben oder return_next verwenden"
+
+#: plperl.c:2613
+#, c-format
+msgid "ignoring modified row in DELETE trigger"
+msgstr "geänderte Zeile im DELETE-Trigger wird ignoriert"
+
+#: plperl.c:2621
+#, c-format
+msgid "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\""
+msgstr "Ergebnis einer PL/Perl-Triggerfunktion muss undef, »SKIP« oder »MODIFY« sein"
+
+#: plperl.c:2869
+#, c-format
+msgid "trigger functions can only be called as triggers"
+msgstr "Triggerfunktionen können nur als Trigger aufgerufen werden"
+
+#: plperl.c:3216
+#, c-format
+msgid "query result has too many rows to fit in a Perl array"
+msgstr "Anfrageergebnis hat zu viele Zeilen, um in ein Perl-Array zu passen"
+
+#: plperl.c:3286
+#, c-format
+msgid "cannot use return_next in a non-SETOF function"
+msgstr "return_next kann nur in einer Funktion mit SETOF-Rückgabetyp verwendet werden"
+
+#: plperl.c:3360
+#, c-format
+msgid "SETOF-composite-returning PL/Perl function must call return_next with reference to hash"
+msgstr "PL/Perl-Funktion, die SETOF eines zusammengesetzten Typs zurückgibt, muss return_next mit einer Referenz auf ein Hash aufrufen"
+
+#: plperl.c:4135
+#, c-format
+msgid "PL/Perl function \"%s\""
+msgstr "PL/Perl-Funktion »%s«"
+
+#: plperl.c:4147
+#, c-format
+msgid "compilation of PL/Perl function \"%s\""
+msgstr "Kompilierung der PL/Perl-Funktion »%s«"
+
+#: plperl.c:4156
+#, c-format
+msgid "PL/Perl anonymous code block"
+msgstr "anonymer PL/Perl-Codeblock"
diff --git a/src/pl/plperl/po/el.po b/src/pl/plperl/po/el.po
new file mode 100644
index 0000000..6592804
--- /dev/null
+++ b/src/pl/plperl/po/el.po
@@ -0,0 +1,225 @@
+# Greek message translation file for plperl
+# Copyright (C) 2021 PostgreSQL Global Development Group
+# This file is distributed under the same license as the plperl (PostgreSQL) package.
+# Georgios Kokolatos <gkokolatos@pm.me>, 2021.
+#
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: plperl (PostgreSQL) 14\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2021-07-21 05:08+0000\n"
+"PO-Revision-Date: 2021-07-21 09:36+0200\n"
+"Last-Translator: Georgios Kokolatos <gkokolatos@pm.me>\n"
+"Language-Team: \n"
+"Language: el\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Last-Translator: Georgios Kokolatos <gkokolatos@pm.me>\n"
+"Language-Team: \n"
+"X-Generator: Poedit 3.0\n"
+
+#: plperl.c:405
+msgid "If true, trusted and untrusted Perl code will be compiled in strict mode."
+msgstr "Εάν αληθής, αξιόπιστος και αναξιόπιστος κώδικας Perl θα μεταγλωττιστεί σε αυστηρή λειτουργία."
+
+#: plperl.c:419
+msgid "Perl initialization code to execute when a Perl interpreter is initialized."
+msgstr "Κώδικας αρχικοποίησης Perl για να εκτελέσει όταν ένας διερμηνέας Perl αρχικοποιείται."
+
+#: plperl.c:441
+msgid "Perl initialization code to execute once when plperl is first used."
+msgstr "Κώδικας αρχικοποίησης Perl για να εκτελέσει μία φορά όταν plperl χρησιμοποιείται για πρώτη φορά."
+
+#: plperl.c:449
+msgid "Perl initialization code to execute once when plperlu is first used."
+msgstr "Κώδικας αρχικοποίησης Perl για να εκτελέσει μία φορά όταν plperlu χρησιμοποιείται για πρώτη φορά."
+
+#: plperl.c:643
+#, c-format
+msgid "cannot allocate multiple Perl interpreters on this platform"
+msgstr "δεν είναι δυνατή η εκχώρηση πολλαπλών διερμηνέων Perl σε αυτήν την πλατφόρμα"
+
+#: plperl.c:666 plperl.c:850 plperl.c:856 plperl.c:973 plperl.c:985
+#: plperl.c:1028 plperl.c:1051 plperl.c:2133 plperl.c:2241 plperl.c:2309
+#: plperl.c:2372
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: plperl.c:667
+#, c-format
+msgid "while executing PostgreSQL::InServer::SPI::bootstrap"
+msgstr "κατά την εκτέλεση PostgreSQL::InServer::SPI::bootstrap"
+
+#: plperl.c:851
+#, c-format
+msgid "while parsing Perl initialization"
+msgstr "κατά την ανάλυση αρχικοποίησης Perl"
+
+#: plperl.c:857
+#, c-format
+msgid "while running Perl initialization"
+msgstr "κατά την εκτέλεση αρχικοποίησης Perl"
+
+#: plperl.c:974
+#, c-format
+msgid "while executing PLC_TRUSTED"
+msgstr "κατά την εκτέλεση PLC_TRUSTED"
+
+#: plperl.c:986
+#, c-format
+msgid "while executing utf8fix"
+msgstr "κατά την εκτέλεση utf8fix"
+
+#: plperl.c:1029
+#, c-format
+msgid "while executing plperl.on_plperl_init"
+msgstr "κατά την εκτέλεση plperl.on_plperl_init"
+
+#: plperl.c:1052
+#, c-format
+msgid "while executing plperl.on_plperlu_init"
+msgstr "κατά την εκτέλεση plperl.on_plperlu_init"
+
+#: plperl.c:1098 plperl.c:1786
+#, c-format
+msgid "Perl hash contains nonexistent column \"%s\""
+msgstr "Κατατεμαχιστής Perl περιέχει ανύπαρκτη στήλη «%s»"
+
+#: plperl.c:1103 plperl.c:1791
+#, c-format
+msgid "cannot set system attribute \"%s\""
+msgstr "δεν είναι δυνατός ο ορισμός του χαρακτηριστικού συστήματος «%s»"
+
+#: plperl.c:1191
+#, c-format
+msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
+msgstr "ο αριθμός των διαστάσεων συστυχίας (%d) υπερβαίνει το μέγιστο επιτρεπόμενο (%d)"
+
+#: plperl.c:1203 plperl.c:1220
+#, c-format
+msgid "multidimensional arrays must have array expressions with matching dimensions"
+msgstr "πολυδιάστατες συστυχίες πρέπει να περιέχουν εκφράσεις συστυχίας με αντίστοιχο αριθμό διαστάσεων"
+
+#: plperl.c:1256
+#, c-format
+msgid "cannot convert Perl array to non-array type %s"
+msgstr "δεν είναι δυνατή η μετατροπή συστυχίας Perl σε τύπο μή-συστυχίας %s"
+
+#: plperl.c:1359
+#, c-format
+msgid "cannot convert Perl hash to non-composite type %s"
+msgstr "δεν είναι δυνατή η μετατροπή κατατμητή Perl σε μη-σύνθετος τύπο %s"
+
+#: plperl.c:1381 plperl.c:3279
+#, c-format
+msgid "function returning record called in context that cannot accept type record"
+msgstr "συνάρτηση που επιστρέφει εγγραφή καλείται σε περιεχόμενο που δεν δύναται να αποδεχτεί τύπο εγγραφής"
+
+#: plperl.c:1440
+#, c-format
+msgid "lookup failed for type %s"
+msgstr "αναζήτηση απέτυχε για τύπο %s"
+
+#: plperl.c:1761
+#, c-format
+msgid "$_TD->{new} does not exist"
+msgstr "$_TD->{new} δεν υπάρχει"
+
+#: plperl.c:1765
+#, c-format
+msgid "$_TD->{new} is not a hash reference"
+msgstr "Το >{new} $_TD δεν είναι αναφορά κατατμητή"
+
+#: plperl.c:1796
+#, c-format
+msgid "cannot set generated column \"%s\""
+msgstr "δεν είναι δυνατός ο ορισμός δημιουργημένης στήλης «%s»"
+
+#: plperl.c:2008 plperl.c:2846
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "PL/Tcl συναρτήσεις δεν είναι δυνατό να επιστρέψουν τύπο %s"
+
+#: plperl.c:2021 plperl.c:2885
+#, c-format
+msgid "PL/Perl functions cannot accept type %s"
+msgstr "PL/Tcl συναρτήσεις δεν είναι δυνατό να δεχτούν τύπο %s"
+
+#: plperl.c:2138
+#, c-format
+msgid "didn't get a CODE reference from compiling function \"%s\""
+msgstr "δεν έλαβε μία αναφορά CODE από τη μεταγλώττιση της συνάρτησης «%s»"
+
+#: plperl.c:2229
+#, c-format
+msgid "didn't get a return item from function"
+msgstr "δεν έλαβε ένα στοιχείο επιστροφής από συνάρτηση"
+
+#: plperl.c:2273 plperl.c:2340
+#, c-format
+msgid "couldn't fetch $_TD"
+msgstr "δεν μπόρεσε να ανακτήσει $_TD"
+
+#: plperl.c:2297 plperl.c:2360
+#, c-format
+msgid "didn't get a return item from trigger function"
+msgstr "δεν έλαβε ένα στοιχείο επιστροφής από συνάρτηση ενεργοποίησης"
+
+#: plperl.c:2419
+#, c-format
+msgid "set-valued function called in context that cannot accept a set"
+msgstr "set-valued συνάρτηση καλείται σε περιεχόμενο που δεν μπορεί να δεχτεί ένα σύνολο"
+
+#: plperl.c:2464
+#, c-format
+msgid "set-returning PL/Perl function must return reference to array or use return_next"
+msgstr "συνάρτηση συνόλου PL/Perl πρέπει να επιστρέφει αναφορά σε συστοιχία ή να χρησιμοποιεί return_next"
+
+#: plperl.c:2585
+#, c-format
+msgid "ignoring modified row in DELETE trigger"
+msgstr "παράβλεψη τροποποιημένης σειράς σε εναύσμα DELETE"
+
+#: plperl.c:2593
+#, c-format
+msgid "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\""
+msgstr "το αποτέλεσμα της συνάρτησης ενεργοποίησης PL/Perl πρέπει να είναι undef, «SKIP» ή «MODIFY»"
+
+#: plperl.c:2841
+#, c-format
+msgid "trigger functions can only be called as triggers"
+msgstr "συναρτήσεις εναυσμάτων μπορούν να κληθούν μόνο ως εναύσματα"
+
+#: plperl.c:3186
+#, c-format
+msgid "query result has too many rows to fit in a Perl array"
+msgstr "το αποτέλεσμα ερωτήματος περιέχει πάρα πολλές σειρές για να χωρέσει σε μία συστοιχία Perl"
+
+#: plperl.c:3256
+#, c-format
+msgid "cannot use return_next in a non-SETOF function"
+msgstr "δεν είναι δυνατή η χρήση return_next σε συνάρτηση non-SETOF"
+
+#: plperl.c:3330
+#, c-format
+msgid "SETOF-composite-returning PL/Perl function must call return_next with reference to hash"
+msgstr "συνάρτηση SETOF-composite-returning PL/Perl πρέπει να καλεί return_next με αναφορά σε κατάτμηση"
+
+#: plperl.c:4105
+#, c-format
+msgid "PL/Perl function \"%s\""
+msgstr "PL/Perl συνάρτηση «%s»"
+
+#: plperl.c:4117
+#, c-format
+msgid "compilation of PL/Perl function \"%s\""
+msgstr "μεταγλώτιση της συνάρτησης PL/Perl «%s»"
+
+#: plperl.c:4126
+#, c-format
+msgid "PL/Perl anonymous code block"
+msgstr "PL/Perl ανώνυμο μπλοκ κώδικα"
diff --git a/src/pl/plperl/po/es.po b/src/pl/plperl/po/es.po
new file mode 100644
index 0000000..ebeab05
--- /dev/null
+++ b/src/pl/plperl/po/es.po
@@ -0,0 +1,224 @@
+# Spanish message translation file for plperl
+#
+# Copyright (c) 2008-2021, PostgreSQL Global Development Group
+# This file is distributed under the same license as the PostgreSQL package.
+#
+# Emanuel Calvo Franco <postgres.arg@gmail.com>, 2008.
+# Alvaro Herrera <alvherre@alvh.no-ip.org>, 2009-2012
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: plperl (PostgreSQL) 14\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2022-08-07 20:25+0000\n"
+"PO-Revision-Date: 2019-06-06 17:25-0400\n"
+"Last-Translator: Carlos Chapi <carlos.chapi@2ndquadrant.com>\n"
+"Language-Team: PgSQL-es-Ayuda <pgsql-es-ayuda@lists.postgresql.org>\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7\n"
+
+#: plperl.c:408
+msgid "If true, trusted and untrusted Perl code will be compiled in strict mode."
+msgstr "Si es verdadero, se compilará código Perl confiable y no confiable en modo «strict»."
+
+#: plperl.c:422
+msgid "Perl initialization code to execute when a Perl interpreter is initialized."
+msgstr "Código Perl de inicialización a ejecutar cuando un intérprete Perl es inicializado."
+
+#: plperl.c:444
+msgid "Perl initialization code to execute once when plperl is first used."
+msgstr "Código Perl de inicialización a ejecutar cuando plperl se usa por primera vez."
+
+#: plperl.c:452
+msgid "Perl initialization code to execute once when plperlu is first used."
+msgstr "Código Perl de inicialización a ejecutar cuando plperlu se usa por primera vez."
+
+#: plperl.c:646
+#, c-format
+msgid "cannot allocate multiple Perl interpreters on this platform"
+msgstr "no se pueden instanciar múltiples intérpretes Perl en esta plataforma"
+
+#: plperl.c:669 plperl.c:853 plperl.c:859 plperl.c:976 plperl.c:988
+#: plperl.c:1031 plperl.c:1054 plperl.c:2138 plperl.c:2246 plperl.c:2314
+#: plperl.c:2377
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: plperl.c:670
+#, c-format
+msgid "while executing PostgreSQL::InServer::SPI::bootstrap"
+msgstr "mientras se ejecutaba PostgreSQL::InServer::SPI::bootstrap"
+
+#: plperl.c:854
+#, c-format
+msgid "while parsing Perl initialization"
+msgstr "mientras se interpretaba la inicialización de Perl"
+
+#: plperl.c:860
+#, c-format
+msgid "while running Perl initialization"
+msgstr "mientras se ejecutaba la inicialización de Perl"
+
+#: plperl.c:977
+#, c-format
+msgid "while executing PLC_TRUSTED"
+msgstr "mientras se ejecutaba PLC_TRUSTED"
+
+#: plperl.c:989
+#, c-format
+msgid "while executing utf8fix"
+msgstr "mientras se ejecutaba utf8fix"
+
+#: plperl.c:1032
+#, c-format
+msgid "while executing plperl.on_plperl_init"
+msgstr "mientras se ejecutaba plperl.on_plperl_init"
+
+#: plperl.c:1055
+#, c-format
+msgid "while executing plperl.on_plperlu_init"
+msgstr "mientras se ejecutaba plperl.on_plperlu_init"
+
+#: plperl.c:1101 plperl.c:1791
+#, c-format
+msgid "Perl hash contains nonexistent column \"%s\""
+msgstr "el hash de Perl contiene el columna inexistente «%s»"
+
+#: plperl.c:1106 plperl.c:1796
+#, c-format
+msgid "cannot set system attribute \"%s\""
+msgstr "no se puede definir el atributo de sistema «%s»"
+
+#: plperl.c:1194
+#, c-format
+msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
+msgstr "el número de dimensiones del array (%d) excede el máximo permitido (%d)"
+
+#: plperl.c:1206 plperl.c:1223
+#, c-format
+msgid "multidimensional arrays must have array expressions with matching dimensions"
+msgstr "los arrays multidimensionales deben tener expresiones de arrays con dimensiones coincidentes"
+
+#: plperl.c:1259
+#, c-format
+msgid "cannot convert Perl array to non-array type %s"
+msgstr "no se puede convertir un array de Perl al tipo no-array %s"
+
+#: plperl.c:1362
+#, c-format
+msgid "cannot convert Perl hash to non-composite type %s"
+msgstr "no se puede convertir un hash de Perl al tipo no compuesto %s"
+
+#: plperl.c:1384 plperl.c:3301
+#, c-format
+msgid "function returning record called in context that cannot accept type record"
+msgstr "se llamó una función que retorna un registro en un contexto que no puede aceptarlo"
+
+#: plperl.c:1445
+#, c-format
+msgid "lookup failed for type %s"
+msgstr "búsqueda del tipo %s falló"
+
+#: plperl.c:1766
+#, c-format
+msgid "$_TD->{new} does not exist"
+msgstr "$_TD->{new} no existe"
+
+#: plperl.c:1770
+#, c-format
+msgid "$_TD->{new} is not a hash reference"
+msgstr "$_TD->{new} no es una referencia a un hash"
+
+#: plperl.c:1801
+#, c-format
+msgid "cannot set generated column \"%s\""
+msgstr "no se puede definir la columna generada «%s»"
+
+#: plperl.c:2013 plperl.c:2851
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "las funciones en PL/Perl no pueden retornar el tipo %s"
+
+#: plperl.c:2026 plperl.c:2890
+#, c-format
+msgid "PL/Perl functions cannot accept type %s"
+msgstr "funciones de PL/Perl no pueden aceptar el tipo %s"
+
+#: plperl.c:2143
+#, c-format
+msgid "didn't get a CODE reference from compiling function \"%s\""
+msgstr "no se obtuvo una referencia CODE en la compilación de la función «%s»"
+
+#: plperl.c:2234
+#, c-format
+msgid "didn't get a return item from function"
+msgstr "no se obtuvo un elemento de retorno desde la función"
+
+#: plperl.c:2278 plperl.c:2345
+#, c-format
+msgid "couldn't fetch $_TD"
+msgstr "no se pudo obtener $_TD"
+
+#: plperl.c:2302 plperl.c:2365
+#, c-format
+msgid "didn't get a return item from trigger function"
+msgstr "no se obtuvo un elemento de retorno desde la función de disparador"
+
+#: plperl.c:2424
+#, c-format
+msgid "set-valued function called in context that cannot accept a set"
+msgstr "se llamó a una función que retorna un conjunto en un contexto que no puede aceptarlo"
+
+#: plperl.c:2469
+#, c-format
+msgid "set-returning PL/Perl function must return reference to array or use return_next"
+msgstr "una función PL/Perl que retorna un conjunto debe retornar una referencia a un array o usar return_next"
+
+#: plperl.c:2590
+#, c-format
+msgid "ignoring modified row in DELETE trigger"
+msgstr "ignorando la tupla modificada en el disparador DELETE"
+
+#: plperl.c:2598
+#, c-format
+msgid "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\""
+msgstr "el resultado de la función disparadora en PL/Perl debe ser undef, «SKIP» o «MODIFY»"
+
+#: plperl.c:2846
+#, c-format
+msgid "trigger functions can only be called as triggers"
+msgstr "las funciones disparadoras sólo pueden ser llamadas como disparadores"
+
+#: plperl.c:3206
+#, c-format
+msgid "query result has too many rows to fit in a Perl array"
+msgstr "el resultado de la consulta tiene demasiados registros y no entran en un array de Perl"
+
+#: plperl.c:3278
+#, c-format
+msgid "cannot use return_next in a non-SETOF function"
+msgstr "no se puede utilizar return_next en una función sin SETOF"
+
+#: plperl.c:3352
+#, c-format
+msgid "SETOF-composite-returning PL/Perl function must call return_next with reference to hash"
+msgstr "una función Perl que retorna SETOF de un tipo compuesto debe invocar return_next con una referencia a un hash"
+
+#: plperl.c:4134
+#, c-format
+msgid "PL/Perl function \"%s\""
+msgstr "función PL/Perl «%s»"
+
+#: plperl.c:4146
+#, c-format
+msgid "compilation of PL/Perl function \"%s\""
+msgstr "compilación de la función PL/Perl «%s»"
+
+#: plperl.c:4155
+#, c-format
+msgid "PL/Perl anonymous code block"
+msgstr "bloque de código anónimo de PL/Perl"
diff --git a/src/pl/plperl/po/fr.po b/src/pl/plperl/po/fr.po
new file mode 100644
index 0000000..a927d87
--- /dev/null
+++ b/src/pl/plperl/po/fr.po
@@ -0,0 +1,276 @@
+# translation of plperl.po to fr_fr
+# french message translation file for plperl
+#
+# Use these quotes: « %s »
+# Guillaume Lelarge <guillaume@lelarge.info>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 12\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2019-05-17 01:08+0000\n"
+"PO-Revision-Date: 2019-05-17 15:02+0200\n"
+"Last-Translator: Guillaume Lelarge <guillaume@lelarge.info>\n"
+"Language-Team: French <guillaume@lelarge.info>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.2.1\n"
+
+#: plperl.c:409
+msgid ""
+"If true, trusted and untrusted Perl code will be compiled in strict mode."
+msgstr ""
+"Si true, le code Perl de confiance et sans confiance sera compilé en mode\n"
+"strict."
+
+#: plperl.c:423
+msgid ""
+"Perl initialization code to execute when a Perl interpreter is initialized."
+msgstr ""
+"Code d'initialisation Perl à exécuter lorsque un interpréteur Perl est\n"
+"initialisé."
+
+#: plperl.c:445
+msgid "Perl initialization code to execute once when plperl is first used."
+msgstr ""
+"Code d'initialisation Perl à exécuter lorsque plperl est utilisé pour la\n"
+"première fois"
+
+#: plperl.c:453
+msgid "Perl initialization code to execute once when plperlu is first used."
+msgstr ""
+"Code d'initialisation Perl à exécuter lorsque plperlu est utilisé pour la\n"
+"première fois"
+
+#: plperl.c:650
+#, c-format
+msgid "cannot allocate multiple Perl interpreters on this platform"
+msgstr "ne peut pas allouer plusieurs interpréteurs Perl sur cette plateforme"
+
+#: plperl.c:673 plperl.c:857 plperl.c:863 plperl.c:980 plperl.c:992
+#: plperl.c:1035 plperl.c:1058 plperl.c:2157 plperl.c:2267 plperl.c:2335
+#: plperl.c:2398
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: plperl.c:674
+#, c-format
+msgid "while executing PostgreSQL::InServer::SPI::bootstrap"
+msgstr "lors de l'exécution de PostgreSQL::InServer::SPI::bootstrap"
+
+#: plperl.c:858
+#, c-format
+msgid "while parsing Perl initialization"
+msgstr "lors de l'analyse de l'initialisation de perl"
+
+#: plperl.c:864
+#, c-format
+msgid "while running Perl initialization"
+msgstr "lors de l'exécution de l'initialisation de perl"
+
+#: plperl.c:981
+#, c-format
+msgid "while executing PLC_TRUSTED"
+msgstr "lors de l'exécution de PLC_TRUSTED"
+
+#: plperl.c:993
+#, c-format
+msgid "while executing utf8fix"
+msgstr "lors de l'exécution de utf8fix"
+
+#: plperl.c:1036
+#, c-format
+msgid "while executing plperl.on_plperl_init"
+msgstr "lors de l'exécution de plperl.on_plperl_init"
+
+#: plperl.c:1059
+#, c-format
+msgid "while executing plperl.on_plperlu_init"
+msgstr "lors de l'exécution de plperl.on_plperlu_init"
+
+#: plperl.c:1105 plperl.c:1796
+#, c-format
+msgid "Perl hash contains nonexistent column \"%s\""
+msgstr "Le hachage Perl contient la colonne « %s » inexistante"
+
+#: plperl.c:1110 plperl.c:1801
+#, c-format
+msgid "cannot set system attribute \"%s\""
+msgstr "ne peut pas initialiser l'attribut système « %s »"
+
+#: plperl.c:1198
+#, c-format
+msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
+msgstr "le nombre de dimensions du tableau (%d) dépasse le maximum autorisé (%d)"
+
+#: plperl.c:1210 plperl.c:1227
+#, c-format
+msgid ""
+"multidimensional arrays must have array expressions with matching dimensions"
+msgstr ""
+"les tableaux multidimensionnels doivent avoir des expressions de tableaux\n"
+"avec les dimensions correspondantes"
+
+#: plperl.c:1263
+#, c-format
+msgid "cannot convert Perl array to non-array type %s"
+msgstr ""
+"ne peut pas convertir le tableau Perl en un type %s qui n'est pas un tableau"
+
+#: plperl.c:1366
+#, c-format
+msgid "cannot convert Perl hash to non-composite type %s"
+msgstr "ne peut pas convertir le hachage Perl en un type %s non composite"
+
+#: plperl.c:1388 plperl.c:3309
+#, c-format
+msgid ""
+"function returning record called in context that cannot accept type record"
+msgstr ""
+"fonction renvoyant le type record appelée dans un contexte qui ne peut pas\n"
+"accepter le type record"
+
+#: plperl.c:1447
+#, c-format
+msgid "lookup failed for type %s"
+msgstr "recherche échouée pour le type %s"
+
+#: plperl.c:1771
+#, c-format
+msgid "$_TD->{new} does not exist"
+msgstr "$_TD->{new} n'existe pas"
+
+#: plperl.c:1775
+#, c-format
+msgid "$_TD->{new} is not a hash reference"
+msgstr "$_TD->{new} n'est pas une référence de hachage"
+
+#: plperl.c:1806
+#, c-format
+msgid "cannot set generated column \"%s\""
+msgstr "ne peut pas initialiser la colonne générée « %s »"
+
+#: plperl.c:2032 plperl.c:2874
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "Les fonctions PL/perl ne peuvent pas renvoyer le type %s"
+
+#: plperl.c:2045 plperl.c:2915
+#, c-format
+msgid "PL/Perl functions cannot accept type %s"
+msgstr "Les fonctions PL/perl ne peuvent pas accepter le type %s"
+
+#: plperl.c:2162
+#, c-format
+msgid "didn't get a CODE reference from compiling function \"%s\""
+msgstr ""
+"n'a pas obtenu une référence CODE lors de la compilation de la fonction « %s "
+"»"
+
+#: plperl.c:2255
+#, c-format
+msgid "didn't get a return item from function"
+msgstr "n'a pas obtenu un élément en retour de la fonction"
+
+#: plperl.c:2299 plperl.c:2366
+#, c-format
+msgid "couldn't fetch $_TD"
+msgstr "n'a pas pu récupérer $_TD"
+
+#: plperl.c:2323 plperl.c:2386
+#, c-format
+msgid "didn't get a return item from trigger function"
+msgstr "n'a pas obtenu un élément en retour de la fonction trigger"
+
+#: plperl.c:2447
+#, c-format
+msgid "set-valued function called in context that cannot accept a set"
+msgstr "la fonction renvoyant un ensemble a été appelée dans un contexte qui n'accepte pas un ensemble"
+
+#: plperl.c:2492
+#, c-format
+msgid ""
+"set-returning PL/Perl function must return reference to array or use "
+"return_next"
+msgstr ""
+"la fonction PL/perl renvoyant des ensembles doit renvoyer la référence à\n"
+"un tableau ou utiliser return_next"
+
+#: plperl.c:2613
+#, c-format
+msgid "ignoring modified row in DELETE trigger"
+msgstr "ignore la ligne modifiée dans le trigger DELETE"
+
+#: plperl.c:2621
+#, c-format
+msgid ""
+"result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\""
+msgstr ""
+"le résultat de la fonction trigger PL/perl doit être undef, « SKIP » ou\n"
+"« MODIFY »"
+
+#: plperl.c:2869
+#, c-format
+msgid "trigger functions can only be called as triggers"
+msgstr "les fonctions trigger peuvent seulement être appelées par des triggers"
+
+#: plperl.c:3216
+#, c-format
+msgid "query result has too many rows to fit in a Perl array"
+msgstr ""
+"le résultat de la requête contient trop de lignes pour être intégré dans un "
+"tableau Perl"
+
+#: plperl.c:3286
+#, c-format
+msgid "cannot use return_next in a non-SETOF function"
+msgstr "ne peut pas utiliser return_next dans une fonction non SETOF"
+
+#: plperl.c:3360
+#, c-format
+msgid ""
+"SETOF-composite-returning PL/Perl function must call return_next with "
+"reference to hash"
+msgstr ""
+"une fonction PL/perl renvoyant des lignes composites doit appeler\n"
+"return_next avec la référence à un hachage"
+
+#: plperl.c:4135
+#, c-format
+msgid "PL/Perl function \"%s\""
+msgstr "fonction PL/Perl « %s »"
+
+#: plperl.c:4147
+#, c-format
+msgid "compilation of PL/Perl function \"%s\""
+msgstr "compilation de la fonction PL/Perl « %s »"
+
+#: plperl.c:4156
+#, c-format
+msgid "PL/Perl anonymous code block"
+msgstr "bloc de code PL/Perl anonyme"
+
+#~ msgid "out of memory"
+#~ msgstr "mémoire épuisée"
+
+#~ msgid "composite-returning PL/Perl function must return reference to hash"
+#~ msgstr ""
+#~ "la fonction PL/perl renvoyant des valeurs composites doit renvoyer la\n"
+#~ "référence à un hachage"
+
+#~ msgid "while executing PLC_SAFE_OK"
+#~ msgstr "lors de l'exécution de PLC_SAFE_OK"
+
+#~ msgid "creation of Perl function \"%s\" failed: %s"
+#~ msgstr "échec de la création de la fonction Perl « %s » : %s"
+
+#~ msgid "error from Perl function \"%s\": %s"
+#~ msgstr "échec dans la fonction Perl « %s » : %s"
+
+#~ msgid "PL/Perl function must return reference to hash or array"
+#~ msgstr ""
+#~ "la fonction PL/perl doit renvoyer la référence à un hachage ou à un "
+#~ "tableau"
diff --git a/src/pl/plperl/po/it.po b/src/pl/plperl/po/it.po
new file mode 100644
index 0000000..359817d
--- /dev/null
+++ b/src/pl/plperl/po/it.po
@@ -0,0 +1,228 @@
+#
+# plperl.po
+# Italian message translation file for plperl
+#
+# For development and bug report please use:
+# https://github.com/dvarrazzo/postgresql-it
+#
+# Copyright (C) 2012-2017 PostgreSQL Global Development Group
+# Copyright (C) 2010, Associazione Culturale ITPUG
+#
+# Daniele Varrazzo <daniele.varrazzo@gmail.com>, 2012-2017.
+# Emanuele Zamprogno <emanuele.zamprogno@itpug.org>
+#
+# This file is distributed under the same license as the PostgreSQL package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: plperl (PostgreSQL) 11\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
+"POT-Creation-Date: 2018-10-08 14:08+0000\n"
+"PO-Revision-Date: 2017-04-23 04:42+0100\n"
+"Last-Translator: Daniele Varrazzo <daniele.varrazzo@gmail.com>\n"
+"Language-Team: https://github.com/dvarrazzo/postgresql-it\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Poedit 1.8.7.1\n"
+
+#: plperl.c:409
+msgid "If true, trusted and untrusted Perl code will be compiled in strict mode."
+msgstr "Se vero, il codice Perl affidabile e non affidabile sarà compilato in modalità strict."
+
+#: plperl.c:423
+msgid "Perl initialization code to execute when a Perl interpreter is initialized."
+msgstr "codice Perl di inizializzazione da eseguire quando l'interprete Perl è inizializzato."
+
+#: plperl.c:445
+msgid "Perl initialization code to execute once when plperl is first used."
+msgstr "codice Perl di inizializzazione da eseguire una sola volta quando plperl è usato per la prima volta."
+
+#: plperl.c:453
+msgid "Perl initialization code to execute once when plperlu is first used."
+msgstr "codice Perl di inizializzazione da eseguire una sola volta quando plperlu è usato per la prima volta."
+
+#: plperl.c:650
+#, c-format
+msgid "cannot allocate multiple Perl interpreters on this platform"
+msgstr "non è possibile allocare piû interpreti Perl su questa piattaforma"
+
+#: plperl.c:673 plperl.c:857 plperl.c:863 plperl.c:980 plperl.c:992
+#: plperl.c:1035 plperl.c:1058 plperl.c:2143 plperl.c:2253 plperl.c:2321
+#: plperl.c:2384
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: plperl.c:674
+#, c-format
+msgid "while executing PostgreSQL::InServer::SPI::bootstrap"
+msgstr "nell'esecuzione di PostgreSQL::InServer::SPI::bootstrap"
+
+#: plperl.c:858
+#, c-format
+msgid "while parsing Perl initialization"
+msgstr "durante il parsing dell'inizializzazione Perl"
+
+#: plperl.c:864
+#, c-format
+msgid "while running Perl initialization"
+msgstr "durante l'esecuzione dell'inizializzazione Perl"
+
+#: plperl.c:981
+#, c-format
+msgid "while executing PLC_TRUSTED"
+msgstr "nell'esecuzione di PLC_TRUSTED"
+
+#: plperl.c:993
+#, c-format
+msgid "while executing utf8fix"
+msgstr "durante l'esecuzione di utf8fix"
+
+#: plperl.c:1036
+#, c-format
+msgid "while executing plperl.on_plperl_init"
+msgstr "nell'esecuzione di plperl.on_plperl_init"
+
+#: plperl.c:1059
+#, c-format
+msgid "while executing plperl.on_plperlu_init"
+msgstr "nell'esecuzione di plperl.on_plperlu_init"
+
+#: plperl.c:1105 plperl.c:1787
+#, c-format
+msgid "Perl hash contains nonexistent column \"%s\""
+msgstr "La struttura hash in Perl contiene la colonna inesistente \"%s\""
+
+#: plperl.c:1110 plperl.c:1792
+#, c-format
+msgid "cannot set system attribute \"%s\""
+msgstr "l'attributo di sistema \"%s\" non si può impostare"
+
+#: plperl.c:1198
+#, c-format
+msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
+msgstr "il numero di dimensioni dell'array (%d) eccede il massimo consentito (%d)"
+
+#: plperl.c:1210 plperl.c:1227
+#, c-format
+msgid "multidimensional arrays must have array expressions with matching dimensions"
+msgstr "gli array multidimensionali devono avere espressioni array di dimensioni corrispondenti"
+
+#: plperl.c:1263
+#, c-format
+msgid "cannot convert Perl array to non-array type %s"
+msgstr "non è possibile convertire un array Perl nel tipo non-array %s"
+
+#: plperl.c:1366
+#, c-format
+msgid "cannot convert Perl hash to non-composite type %s"
+msgstr "non è possibile convertire un hash Perl nel tipo non composito %s"
+
+#: plperl.c:1388 plperl.c:3288
+#, c-format
+msgid "function returning record called in context that cannot accept type record"
+msgstr "la funzione che restituisce un record è chiamata in un contesto che non può accettare il tipo record"
+
+#: plperl.c:1447
+#, c-format
+msgid "lookup failed for type %s"
+msgstr "ricerca del tipo %s fallita"
+
+#: plperl.c:1762
+#, c-format
+msgid "$_TD->{new} does not exist"
+msgstr "$_TD->{new} non esiste"
+
+#: plperl.c:1766
+#, c-format
+msgid "$_TD->{new} is not a hash reference"
+msgstr "$_TD->{new} non è un riferimento ad un hash"
+
+#: plperl.c:2018 plperl.c:2860
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "la funzione PL/Perl non può restituire il tipo %s"
+
+#: plperl.c:2031 plperl.c:2901
+#, c-format
+msgid "PL/Perl functions cannot accept type %s"
+msgstr "la funzione PL/Perl non può accettare il tipo %s"
+
+#: plperl.c:2148
+#, c-format
+msgid "didn't get a CODE reference from compiling function \"%s\""
+msgstr "non ho ricevuto un riferimento CODE dal compilare la funzione \"%s\""
+
+#: plperl.c:2241
+#, c-format
+msgid "didn't get a return item from function"
+msgstr "la funzione non ha restituito un elemento"
+
+#: plperl.c:2285 plperl.c:2352
+#, c-format
+msgid "couldn't fetch $_TD"
+msgstr "lettura di $_TD fallita"
+
+#: plperl.c:2309 plperl.c:2372
+#, c-format
+msgid "didn't get a return item from trigger function"
+msgstr "la funzione trigger non ha restituito un elemento"
+
+#: plperl.c:2433
+#, c-format
+msgid "set-valued function called in context that cannot accept a set"
+msgstr "la funzione che restituisce insiemi è chiamata in un contesto che non può accettare un insieme"
+
+#: plperl.c:2478
+#, c-format
+msgid "set-returning PL/Perl function must return reference to array or use return_next"
+msgstr "la funzione PL/Perl che restituisce un insieme deve restituire un riferimento ad un array o usare return_next"
+
+#: plperl.c:2599
+#, c-format
+msgid "ignoring modified row in DELETE trigger"
+msgstr "modifiche alla riga ignorate nel trigger DELETE"
+
+#: plperl.c:2607
+#, c-format
+msgid "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\""
+msgstr "il risultato della funzione trigger PL/Perl deve essere undef, \"SKIP\" oppure \"MODIFY\""
+
+#: plperl.c:2855
+#, c-format
+msgid "trigger functions can only be called as triggers"
+msgstr "le funzioni trigger possono essere chiamate esclusivamente da trigger"
+
+#: plperl.c:3195
+#, c-format
+msgid "query result has too many rows to fit in a Perl array"
+msgstr "il risultato della query ha troppe righe per un array Perl"
+
+#: plperl.c:3265
+#, c-format
+msgid "cannot use return_next in a non-SETOF function"
+msgstr "non si può usare return_next in una funzione non-SETOF"
+
+#: plperl.c:3339
+#, c-format
+msgid "SETOF-composite-returning PL/Perl function must call return_next with reference to hash"
+msgstr "una funzione PL/Perl che restituisce SETOF di un tipo composito deve chiamare return_next con riferimento ad un hash"
+
+#: plperl.c:4117
+#, c-format
+msgid "PL/Perl function \"%s\""
+msgstr "funzione PL/Perl \"%s\""
+
+#: plperl.c:4129
+#, c-format
+msgid "compilation of PL/Perl function \"%s\""
+msgstr "compilazione della funzione Perl \"%s\""
+
+#: plperl.c:4138
+#, c-format
+msgid "PL/Perl anonymous code block"
+msgstr "blocco di codice anonimo PL/Perl"
diff --git a/src/pl/plperl/po/ja.po b/src/pl/plperl/po/ja.po
new file mode 100644
index 0000000..197975b
--- /dev/null
+++ b/src/pl/plperl/po/ja.po
@@ -0,0 +1,243 @@
+# Japanese message translation file for plperl
+# Copyright (C) 2022 PostgreSQL Global Development Group
+# This file is distributed under the same license as the pg_archivecleanup (PostgreSQL) package.
+# Honda Shigehiro <honda@postgresql.jp>, 2012
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: plperl (PostgreSQL 14)\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2019-06-11 11:34+0900\n"
+"PO-Revision-Date: 2021-08-25 11:26+0900\n"
+"Last-Translator: Kyotaro Horiguchi <horikyota.ntt@gmail.com>\n"
+"Language-Team: jpug-doc <jpug-doc@ml.postgresql.jp>\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 1.8.13\n"
+
+#: plperl.c:406
+msgid ""
+"If true, trusted and untrusted Perl code will be compiled in strict mode."
+msgstr ""
+"true の場合、trustedおよびuntrustedなPerlのコードはstrictモードでコンパイル"
+"されます。"
+
+#: plperl.c:420
+msgid ""
+"Perl initialization code to execute when a Perl interpreter is initialized."
+msgstr ""
+"Perlのインタプリタが初期化される際に実行されるべきPerlの初期化コード。"
+
+#: plperl.c:442
+msgid "Perl initialization code to execute once when plperl is first used."
+msgstr "plperlが最初に使用される際に一度だけ実行されるPerlの初期化コード。"
+
+#: plperl.c:450
+msgid "Perl initialization code to execute once when plperlu is first used."
+msgstr "plperluが最初に使用される際に一度だけ実行されるPerlの初期化コード。"
+
+#: plperl.c:647
+#, c-format
+msgid "cannot allocate multiple Perl interpreters on this platform"
+msgstr "このプラットフォームでは複数のPerlインタプリタを設定できません"
+
+#: plperl.c:670 plperl.c:854 plperl.c:860 plperl.c:977 plperl.c:989
+#: plperl.c:1032 plperl.c:1055 plperl.c:2154 plperl.c:2264 plperl.c:2332
+#: plperl.c:2395
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: plperl.c:671
+#, c-format
+msgid "while executing PostgreSQL::InServer::SPI::bootstrap"
+msgstr "PostgreSQL::InServer::SPI::bootstrap の実行中"
+
+#: plperl.c:855
+#, c-format
+msgid "while parsing Perl initialization"
+msgstr "Perl初期化処理のパース中"
+
+#: plperl.c:861
+#, c-format
+msgid "while running Perl initialization"
+msgstr "Perl初期化処理の実行中"
+
+#: plperl.c:978
+#, c-format
+msgid "while executing PLC_TRUSTED"
+msgstr "PLC_TRUSTEDの実行中"
+
+#: plperl.c:990
+#, c-format
+msgid "while executing utf8fix"
+msgstr "utf8fixの実行中"
+
+#: plperl.c:1033
+#, c-format
+msgid "while executing plperl.on_plperl_init"
+msgstr "plperl.on_plperl_init の実行中"
+
+#: plperl.c:1056
+#, c-format
+msgid "while executing plperl.on_plperlu_init"
+msgstr "plperl.on_plperlu_init の実行中"
+
+#: plperl.c:1102 plperl.c:1793
+#, c-format
+msgid "Perl hash contains nonexistent column \"%s\""
+msgstr "Perlハッシュに存在しない列\"%s\"があります"
+
+#: plperl.c:1107 plperl.c:1798
+#, c-format
+msgid "cannot set system attribute \"%s\""
+msgstr "システム属性\"%s\"は設定できません"
+
+#: plperl.c:1195
+#, c-format
+msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
+msgstr "配列の次元数(%d)が上限(%d)を超えています"
+
+#: plperl.c:1207 plperl.c:1224
+#, c-format
+msgid ""
+"multidimensional arrays must have array expressions with matching dimensions"
+msgstr "多次元配列は次元が合致する配列式でなければなりません"
+
+#: plperl.c:1260
+#, c-format
+msgid "cannot convert Perl array to non-array type %s"
+msgstr "Perl配列を非配列型 %s に変換できません"
+
+#: plperl.c:1363
+#, c-format
+msgid "cannot convert Perl hash to non-composite type %s"
+msgstr "Perlハッシュを非複合型 %s に変換できません"
+
+#: plperl.c:1385 plperl.c:3306
+#, c-format
+msgid ""
+"function returning record called in context that cannot accept type record"
+msgstr ""
+"レコード型を受け付けられないコンテキストでレコードを返す関数が呼び出されまし"
+"た"
+
+#: plperl.c:1444
+#, c-format
+msgid "lookup failed for type %s"
+msgstr "型 %s の検索に失敗しました"
+
+#: plperl.c:1768
+#, c-format
+msgid "$_TD->{new} does not exist"
+msgstr "$_TD->{new} は存在しません"
+
+#: plperl.c:1772
+#, c-format
+msgid "$_TD->{new} is not a hash reference"
+msgstr "$_TD->{new} はハッシュへの参照ではありません"
+
+#: plperl.c:1803
+#, c-format
+#| msgid "cannot alter inherited column \"%s\""
+msgid "cannot set generated column \"%s\""
+msgstr "生成列\"%s\"は設定できません"
+
+#: plperl.c:2029 plperl.c:2871
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "PL/Perl 関数は %s 型を返すことができません"
+
+#: plperl.c:2042 plperl.c:2912
+#, c-format
+msgid "PL/Perl functions cannot accept type %s"
+msgstr "PL/Perl 関数は %s 型を受け付けられません"
+
+#: plperl.c:2159
+#, c-format
+msgid "didn't get a CODE reference from compiling function \"%s\""
+msgstr "関数\"%s\"のコンパイルからはコード参照を取得しませんでした"
+
+#: plperl.c:2252
+#, c-format
+msgid "didn't get a return item from function"
+msgstr "関数からは戻り項目を取得しませんでした"
+
+#: plperl.c:2296 plperl.c:2363
+#, c-format
+msgid "couldn't fetch $_TD"
+msgstr "$_TD を取り出せませんでした"
+
+#: plperl.c:2320 plperl.c:2383
+#, c-format
+msgid "didn't get a return item from trigger function"
+msgstr "トリガー関数から項目を取得しませんでした"
+
+#: plperl.c:2444
+#, c-format
+msgid "set-valued function called in context that cannot accept a set"
+msgstr "集合を受け付けないコンテキストで集合値関数が呼び出されました"
+
+#: plperl.c:2489
+#, c-format
+msgid ""
+"set-returning PL/Perl function must return reference to array or use "
+"return_next"
+msgstr ""
+"集合を返す PL/Perl 関数は、配列への参照を返すかまたは return_next を使う必要"
+"があります"
+
+#: plperl.c:2610
+#, c-format
+msgid "ignoring modified row in DELETE trigger"
+msgstr "DELETE トリガーで変更された行を無視しています"
+
+#: plperl.c:2618
+#, c-format
+msgid ""
+"result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\""
+msgstr ""
+"PL/Perl のトリガー関数の結果は undef、\"SKIP\"、\"MODIFY\" のいずれかでなけ"
+"ればなりません"
+
+#: plperl.c:2866
+#, c-format
+msgid "trigger functions can only be called as triggers"
+msgstr "トリガー関数はトリガーとしてのみ呼び出せます"
+
+#: plperl.c:3213
+#, c-format
+msgid "query result has too many rows to fit in a Perl array"
+msgstr "問い合わせの結果に含まれる行数が Perl の配列に対して多すぎます"
+
+#: plperl.c:3283
+#, c-format
+msgid "cannot use return_next in a non-SETOF function"
+msgstr "集合を返す関数以外で return_next を使うことはできません"
+
+#: plperl.c:3357
+#, c-format
+msgid ""
+"SETOF-composite-returning PL/Perl function must call return_next with "
+"reference to hash"
+msgstr ""
+"複合型の集合を返す PL/Perl 関数は、ハッシュへの参照を持つ return_next を呼び"
+"出さなければなりません"
+
+#: plperl.c:4132
+#, c-format
+msgid "PL/Perl function \"%s\""
+msgstr "PL/Perl関数 \"%s\""
+
+#: plperl.c:4144
+#, c-format
+msgid "compilation of PL/Perl function \"%s\""
+msgstr "PL/Perl関数\"%s\"のコンパイル"
+
+#: plperl.c:4153
+#, c-format
+msgid "PL/Perl anonymous code block"
+msgstr "PL/Perlの無名コードブロック"
diff --git a/src/pl/plperl/po/ko.po b/src/pl/plperl/po/ko.po
new file mode 100644
index 0000000..a512cfe
--- /dev/null
+++ b/src/pl/plperl/po/ko.po
@@ -0,0 +1,237 @@
+# LANGUAGE message translation file for plperl
+# Copyright (C) 2016 PostgreSQL Global Development Group
+# This file is distributed under the same license as the PostgreSQL package.
+# Ioseph Kim <ioseph@uri.sarang.net>, 2016.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: plperl (PostgreSQL) 12\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2020-02-09 20:08+0000\n"
+"PO-Revision-Date: 2019-11-01 12:51+0900\n"
+"Last-Translator: Ioseph Kim <ioseph@uri.sarang.net>\n"
+"Language-Team: Korean Team <pgsql-kr@postgresql.kr>\n"
+"Language: ko\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: plperl.c:406
+msgid ""
+"If true, trusted and untrusted Perl code will be compiled in strict mode."
+msgstr "true로 지정하면, Perl 코드가 엄격한 구문 검사로 컴파일 됨"
+
+#: plperl.c:420
+msgid ""
+"Perl initialization code to execute when a Perl interpreter is initialized."
+msgstr "Perl 인터프리터가 초기화 될 때 실행할 Perl 초기화 코드"
+
+#: plperl.c:442
+msgid "Perl initialization code to execute once when plperl is first used."
+msgstr "plperl 모듈이 처음 사용될 때 실행할 Perl 초기화 코드"
+
+#: plperl.c:450
+msgid "Perl initialization code to execute once when plperlu is first used."
+msgstr "plperlu 모듈이 처음 사용될 때 실행할 Perl 초기화 코드"
+
+#: plperl.c:647
+#, c-format
+msgid "cannot allocate multiple Perl interpreters on this platform"
+msgstr "이 플랫폼에 여러 Perl 인터프리터를 사용할 수 없음"
+
+#: plperl.c:670 plperl.c:854 plperl.c:860 plperl.c:977 plperl.c:989
+#: plperl.c:1032 plperl.c:1055 plperl.c:2154 plperl.c:2264 plperl.c:2332
+#: plperl.c:2395
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: plperl.c:671
+#, c-format
+msgid "while executing PostgreSQL::InServer::SPI::bootstrap"
+msgstr "PostgreSQL::InServer::SPI::bootstrap 실행 중"
+
+#: plperl.c:855
+#, c-format
+msgid "while parsing Perl initialization"
+msgstr "Perl 초기화 구문 분석 중"
+
+#: plperl.c:861
+#, c-format
+msgid "while running Perl initialization"
+msgstr "Perl 초기화 실행 중"
+
+#: plperl.c:978
+#, c-format
+msgid "while executing PLC_TRUSTED"
+msgstr "PLC_TRUSTED 실행 중"
+
+#: plperl.c:990
+#, c-format
+msgid "while executing utf8fix"
+msgstr "utf8fix 실행 중"
+
+#: plperl.c:1033
+#, c-format
+msgid "while executing plperl.on_plperl_init"
+msgstr "plperl.on_plperl_init 실행 중"
+
+#: plperl.c:1056
+#, c-format
+msgid "while executing plperl.on_plperlu_init"
+msgstr "plperl.on_plperlu_init 실행 중"
+
+#: plperl.c:1102 plperl.c:1793
+#, c-format
+msgid "Perl hash contains nonexistent column \"%s\""
+msgstr "Perl 해시에 존재하지 않는 \"%s\" 칼럼이 포함되었습니다"
+
+#: plperl.c:1107 plperl.c:1798
+#, c-format
+msgid "cannot set system attribute \"%s\""
+msgstr "\"%s\" 시스템 속성을 지정할 수 없음"
+
+#: plperl.c:1195
+#, c-format
+msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
+msgstr "지정한 배열 크기(%d)가 최대치(%d)를 초과했습니다"
+
+#: plperl.c:1207 plperl.c:1224
+#, c-format
+msgid ""
+"multidimensional arrays must have array expressions with matching dimensions"
+msgstr "다차원 배열에는 일치하는 차원이 포함된 배열 식이 있어야 함"
+
+#: plperl.c:1260
+#, c-format
+msgid "cannot convert Perl array to non-array type %s"
+msgstr "Perl 배열형을 비배열형 %s 자료형으로 변환할 수 없음"
+
+#: plperl.c:1363
+#, c-format
+msgid "cannot convert Perl hash to non-composite type %s"
+msgstr "Perl 해시 자료형을 비복합 %s 자료형으로 변환할 수 없음"
+
+#: plperl.c:1385 plperl.c:3306
+#, c-format
+msgid ""
+"function returning record called in context that cannot accept type record"
+msgstr "반환 자료형이 record인데 함수가 그 자료형으로 반환하지 않음"
+
+#: plperl.c:1444
+#, c-format
+msgid "lookup failed for type %s"
+msgstr "%s 자료형 찾기 실패"
+
+#: plperl.c:1768
+#, c-format
+msgid "$_TD->{new} does not exist"
+msgstr "$_TD->{new} 없음"
+
+#: plperl.c:1772
+#, c-format
+msgid "$_TD->{new} is not a hash reference"
+msgstr "$_TD->{new} 자료형이 해시 참조가 아님"
+
+#: plperl.c:1803
+#, c-format
+msgid "cannot set generated column \"%s\""
+msgstr "\"%s\" 계산된 칼럼을 지정할 수 없음"
+
+#: plperl.c:2029 plperl.c:2871
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "PL/Perl 함수는 %s 자료형을 반환할 수 없음"
+
+#: plperl.c:2042 plperl.c:2912
+#, c-format
+msgid "PL/Perl functions cannot accept type %s"
+msgstr "PL/Perl 함수는 %s 자료형을 사용할 수 없음"
+
+#: plperl.c:2159
+#, c-format
+msgid "didn't get a CODE reference from compiling function \"%s\""
+msgstr "\"%s\" 함수를 컴파일 하면서 코드 참조를 구할 수 없음"
+
+#: plperl.c:2252
+#, c-format
+msgid "didn't get a return item from function"
+msgstr "함수에서 반환할 항목을 못 찾음"
+
+#: plperl.c:2296 plperl.c:2363
+#, c-format
+msgid "couldn't fetch $_TD"
+msgstr "$_TD 못 구함"
+
+#: plperl.c:2320 plperl.c:2383
+#, c-format
+msgid "didn't get a return item from trigger function"
+msgstr "트리거 함수에서 반환할 항목을 못 찾음"
+
+#: plperl.c:2444
+#, c-format
+msgid "set-valued function called in context that cannot accept a set"
+msgstr ""
+"set-values 함수(테이블 리턴 함수)가 set 정의 없이 사용되었습니다 (테이블과 해"
+"당 열 alias 지정하세요)"
+
+#: plperl.c:2489
+#, c-format
+msgid ""
+"set-returning PL/Perl function must return reference to array or use "
+"return_next"
+msgstr "집합 반환 PL/Perl 함수는 배열 또는 return_next 를 사용해서 반환해야 함"
+
+#: plperl.c:2610
+#, c-format
+msgid "ignoring modified row in DELETE trigger"
+msgstr "DELETE 트리거에서는 변경된 로우는 무시 함"
+
+#: plperl.c:2618
+#, c-format
+msgid ""
+"result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\""
+msgstr ""
+"PL/Perl 트리거 함수의 결과는 undef, \"SKIP\", \"MODIFY\" 중 하나여야 함"
+
+#: plperl.c:2866
+#, c-format
+msgid "trigger functions can only be called as triggers"
+msgstr "트리거 함수는 트리거로만 호출될 수 있음"
+
+#: plperl.c:3213
+#, c-format
+msgid "query result has too many rows to fit in a Perl array"
+msgstr "쿼리 결과가 Perl 배열에 담기에는 너무 많습니다"
+
+#: plperl.c:3283
+#, c-format
+msgid "cannot use return_next in a non-SETOF function"
+msgstr "SETOF 함수가 아닌 경우에는 return_next 구문을 쓸 수 없음"
+
+#: plperl.c:3357
+#, c-format
+msgid ""
+"SETOF-composite-returning PL/Perl function must call return_next with "
+"reference to hash"
+msgstr ""
+"SETOF-composite-returning PL/Perl 함수는 return_next 에서 해시 자료형을 참조"
+"해야 함"
+
+#: plperl.c:4132
+#, c-format
+msgid "PL/Perl function \"%s\""
+msgstr "\"%s\" PL/Perl 함수"
+
+#: plperl.c:4144
+#, c-format
+msgid "compilation of PL/Perl function \"%s\""
+msgstr "\"%s\" PL/Perl 함수 컴필레이션"
+
+#: plperl.c:4153
+#, c-format
+msgid "PL/Perl anonymous code block"
+msgstr "PL/Perl 익명 코드 블럭"
+
+#~ msgid "PL/Perl function must return reference to hash or array"
+#~ msgstr "PL/Perl 함수는 해시나 배열 자료형을 참조하게 반환해야 함"
diff --git a/src/pl/plperl/po/pl.po b/src/pl/plperl/po/pl.po
new file mode 100644
index 0000000..d0dd146
--- /dev/null
+++ b/src/pl/plperl/po/pl.po
@@ -0,0 +1,225 @@
+# Polish message translation file for plperl
+# Copyright (C) 2011 PostgreSQL Global Development Group
+# This file is distributed under the same license as the PostgreSQL package.
+# Begina Felicysym <begina.felicysym@wp.eu>, 2011, 2012.
+# grzegorz <begina.felicysym@wp.eu>, 2015, 2016.
+msgid ""
+msgstr ""
+"Project-Id-Version: plperl (PostgreSQL 9.1)\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
+"POT-Creation-Date: 2017-04-09 21:07+0000\n"
+"PO-Revision-Date: 2016-07-03 18:04+0200\n"
+"Last-Translator: grzegorz <begina.felicysym@wp.eu>\n"
+"Language-Team: begina.felicysym@wp.eu\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Virtaal 0.7.1\n"
+
+#: plperl.c:390
+msgid "If true, trusted and untrusted Perl code will be compiled in strict mode."
+msgstr "Jeśli prawda, zaufanych i niezaufanych kod Perl zostanie skompilowany w trybie ścisłym."
+
+#: plperl.c:404
+msgid "Perl initialization code to execute when a Perl interpreter is initialized."
+msgstr "Kod inicjujący Perl do wykonania gdy inicjowany jest interpreter Perl."
+
+#: plperl.c:426
+msgid "Perl initialization code to execute once when plperl is first used."
+msgstr "Kod inicjujący Perl do jednokrotnego wykonania gdy plperl jest użyty po raz pierwszy."
+
+#: plperl.c:434
+msgid "Perl initialization code to execute once when plperlu is first used."
+msgstr "Kod inicjujący Perl do jednokrotnego wykonania gdy plperlu jest użyty po raz pierwszy."
+
+#: plperl.c:631
+#, c-format
+msgid "cannot allocate multiple Perl interpreters on this platform"
+msgstr "nie można przydzielić wielu interpreterów Perl na tej platformie"
+
+#: plperl.c:651 plperl.c:826 plperl.c:832 plperl.c:946 plperl.c:958
+#: plperl.c:1001 plperl.c:1022 plperl.c:2074 plperl.c:2183 plperl.c:2250
+#: plperl.c:2312
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: plperl.c:652
+#, c-format
+msgid "while executing PostgreSQL::InServer::SPI::bootstrap"
+msgstr "podczas wykonania PostgreSQL::InServer::SPI::bootstrap"
+
+#: plperl.c:827
+#, c-format
+msgid "while parsing Perl initialization"
+msgstr "podczas przetwarzania inicjacji Perl"
+
+#: plperl.c:833
+#, c-format
+msgid "while running Perl initialization"
+msgstr "podczas wykonywania inicjacji Perl"
+
+#: plperl.c:947
+#, c-format
+msgid "while executing PLC_TRUSTED"
+msgstr "podczas wykonywania PLC_TRUSTED"
+
+#: plperl.c:959
+#, c-format
+msgid "while executing utf8fix"
+msgstr "podczas wykonywania utf8fix"
+
+#: plperl.c:1002
+#, c-format
+msgid "while executing plperl.on_plperl_init"
+msgstr "podczas wykonania plperl.on_plperl_init"
+
+#: plperl.c:1023
+#, c-format
+msgid "while executing plperl.on_plperlu_init"
+msgstr "podczas wykonania plperl.on_plperlu_init"
+
+#: plperl.c:1067 plperl.c:1719
+#, c-format
+msgid "Perl hash contains nonexistent column \"%s\""
+msgstr "hasz Perl zawiera nieistniejącą kolumnę \"%s\""
+
+#: plperl.c:1072 plperl.c:1724
+#, c-format
+msgid "cannot set system attribute \"%s\""
+msgstr "nie można ustawić atrybutu systemowego \"%s\""
+
+#: plperl.c:1157
+#, c-format
+msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
+msgstr "liczba wymiarów tablicy (%d) przekracza maksimum (%d)"
+
+#: plperl.c:1169 plperl.c:1186
+#, c-format
+msgid "multidimensional arrays must have array expressions with matching dimensions"
+msgstr "wielowymiarowe tablice muszą mieć wyrażenia tablicowe z pasującymi wymiarami"
+
+#: plperl.c:1221
+#, c-format
+msgid "cannot convert Perl array to non-array type %s"
+msgstr "nie można zmienić typu tablicowego Perl na typ nietablicowy %s"
+
+#: plperl.c:1323
+#, c-format
+msgid "cannot convert Perl hash to non-composite type %s"
+msgstr "nie można przekształcić Perlowego hasza na typ niezłożony %s"
+
+#: plperl.c:1334
+#, c-format
+msgid "function returning record called in context that cannot accept type record"
+msgstr "funkcja zwracająca rekord w wywołaniu, które nie akceptuje typów złożonych"
+
+#: plperl.c:1349
+#, c-format
+msgid "PL/Perl function must return reference to hash or array"
+msgstr "funkcja PL/Perl musi zwracać referencję do hasza lub tablicy"
+
+#: plperl.c:1386
+#, c-format
+msgid "lookup failed for type %s"
+msgstr "nie dało się wyszukać typu %s"
+
+#: plperl.c:1695
+#, c-format
+msgid "$_TD->{new} does not exist"
+msgstr "$_TD->{new} nie istnieje"
+
+#: plperl.c:1699
+#, c-format
+msgid "$_TD->{new} is not a hash reference"
+msgstr "$_TD->{new} nie jest referencją haszu"
+
+#: plperl.c:1950 plperl.c:2785
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "funkcje PL/Perl nie mogą zwracać wartości typu %s"
+
+#: plperl.c:1963 plperl.c:2827
+#, c-format
+msgid "PL/Perl functions cannot accept type %s"
+msgstr "funkcje PL/Perl nie obsługują typu %s"
+
+#: plperl.c:2079
+#, c-format
+msgid "didn't get a CODE reference from compiling function \"%s\""
+msgstr "nie udało się pobrać wskazania CODE z kompilowanej funkcji \"%s\""
+
+#: plperl.c:2171
+#, c-format
+msgid "didn't get a return item from function"
+msgstr "nie odebrano zwracanego elementu z funkcji"
+
+#: plperl.c:2214 plperl.c:2280
+#, c-format
+msgid "couldn't fetch $_TD"
+msgstr "nie dało się pobrać $_TD"
+
+#: plperl.c:2238 plperl.c:2300
+#, c-format
+msgid "didn't get a return item from trigger function"
+msgstr "nie odebrano zwracanego elementu z funkcji wyzwalacza"
+
+#: plperl.c:2357
+#, c-format
+msgid "set-valued function called in context that cannot accept a set"
+msgstr "funkcja zwracająca zbiór rekordów wywołana w kontekście, w którym nie jest to dopuszczalne"
+
+#: plperl.c:2401
+#, c-format
+msgid "set-returning PL/Perl function must return reference to array or use return_next"
+msgstr "funkcja PL/Perl zwracająca zbiór rekordów musi zwracać tablicę lub użyć return_next"
+
+#: plperl.c:2522
+#, c-format
+msgid "ignoring modified row in DELETE trigger"
+msgstr "ignorowanie modyfikacji wiersza w wyzwalaczy DELETE"
+
+#: plperl.c:2530
+#, c-format
+msgid "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\""
+msgstr "funkcja wyzwalacza PL/Perl musi zwracać undef, \"SKIP\", lub \"MODIFY\""
+
+#: plperl.c:2780
+#, c-format
+msgid "trigger functions can only be called as triggers"
+msgstr "procedury wyzwalaczy mogą być wywoływane jedynie przez wyzwalacze"
+
+#: plperl.c:3120
+#, c-format
+msgid "query result has too many rows to fit in a Perl array"
+msgstr "wynik zapytania ma za dużo wierszy by pomieścić w tabeli Perl"
+
+#: plperl.c:3165
+#, c-format
+msgid "cannot use return_next in a non-SETOF function"
+msgstr "nie można używać return_next w funkcji nie SETOF"
+
+#: plperl.c:3219
+#, c-format
+msgid "SETOF-composite-returning PL/Perl function must call return_next with reference to hash"
+msgstr "funkcja PL/Perl zwracająca grupę wartości złożonych musi wywołać return_next z referencją haszu"
+
+#: plperl.c:3882
+#, c-format
+msgid "PL/Perl function \"%s\""
+msgstr "funkcja PL/Perl \"%s\""
+
+#: plperl.c:3894
+#, c-format
+msgid "compilation of PL/Perl function \"%s\""
+msgstr "kompilacja funkcji PL/Perl \"%s\""
+
+#: plperl.c:3903
+#, c-format
+msgid "PL/Perl anonymous code block"
+msgstr "anonimowy blok kodu PL/Perl"
+
+#~ msgid "out of memory"
+#~ msgstr "brak pamięci"
diff --git a/src/pl/plperl/po/pt_BR.po b/src/pl/plperl/po/pt_BR.po
new file mode 100644
index 0000000..ff6a1f8
--- /dev/null
+++ b/src/pl/plperl/po/pt_BR.po
@@ -0,0 +1,220 @@
+# Brazilian Portuguese message translation file for plperl
+# Copyright (C) 2009 PostgreSQL Global Development Group
+# This file is distributed under the same license as the PostgreSQL package.
+# Euler Taveira de Oliveira <euler@timbira.com>, 2009-2016.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 9.6\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
+"POT-Creation-Date: 2016-08-09 22:53-0300\n"
+"PO-Revision-Date: 2009-05-10 01:12-0300\n"
+"Last-Translator: Euler Taveira de Oliveira <euler@timbira.com>\n"
+"Language-Team: Brazilian Portuguese <pgbr-dev@listas.postgresql.org.br>\n"
+"Language: pt_BR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: plperl.c:405
+msgid "If true, trusted and untrusted Perl code will be compiled in strict mode."
+msgstr "Se verdadeiro, código Perl confiável e não-confiável será compilado em modo estrito."
+
+#: plperl.c:419
+msgid "Perl initialization code to execute when a Perl interpreter is initialized."
+msgstr "Código de inicialização Perl executado quando um interpretador Perl for inicializado."
+
+#: plperl.c:441
+msgid "Perl initialization code to execute once when plperl is first used."
+msgstr "Código de inicialização Perl executado quando plperl for utilizado pela primeira vez."
+
+#: plperl.c:449
+msgid "Perl initialization code to execute once when plperlu is first used."
+msgstr "Código de inicialização Perl executado quando plperlu for utilizado pela primeira vez."
+
+#: plperl.c:646
+#, c-format
+msgid "cannot allocate multiple Perl interpreters on this platform"
+msgstr "não pode alocar múltiplos interpretadores Perl nessa plataforma"
+
+#: plperl.c:666 plperl.c:841 plperl.c:847 plperl.c:961 plperl.c:973
+#: plperl.c:1016 plperl.c:1037 plperl.c:2080 plperl.c:2189 plperl.c:2256
+#: plperl.c:2318
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: plperl.c:667
+#, c-format
+msgid "while executing PostgreSQL::InServer::SPI::bootstrap"
+msgstr "ao executar PostgreSQL::InServer::SPI::bootstrap"
+
+#: plperl.c:842
+#, c-format
+msgid "while parsing Perl initialization"
+msgstr "ao analisar código de inicialização Perl"
+
+#: plperl.c:848
+#, c-format
+msgid "while running Perl initialization"
+msgstr "ao executar código de inicialização Perl"
+
+#: plperl.c:962
+#, c-format
+msgid "while executing PLC_TRUSTED"
+msgstr "ao executar PLC_TRUSTED"
+
+#: plperl.c:974
+#, c-format
+msgid "while executing utf8fix"
+msgstr "ao executar utf8fix"
+
+#: plperl.c:1017
+#, c-format
+msgid "while executing plperl.on_plperl_init"
+msgstr "ao executar plperl.on_plperl_init"
+
+#: plperl.c:1038
+#, c-format
+msgid "while executing plperl.on_plperlu_init"
+msgstr "ao executar plperl.on_plperlu_init"
+
+#: plperl.c:1082 plperl.c:1722
+#, c-format
+msgid "Perl hash contains nonexistent column \"%s\""
+msgstr "hash Perl contém coluna inexistente \"%s\""
+
+#: plperl.c:1167
+#, c-format
+msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
+msgstr "número de dimensões da matriz (%d) excede o máximo permitido (%d)"
+
+#: plperl.c:1179 plperl.c:1196
+#, c-format
+msgid "multidimensional arrays must have array expressions with matching dimensions"
+msgstr "matrizes multidimensionais devem ter expressões de matriz com dimensões correspondentes"
+
+#: plperl.c:1231
+#, c-format
+msgid "cannot convert Perl array to non-array type %s"
+msgstr "não pode converter array Perl para tipo que não é array %s"
+
+#: plperl.c:1333
+#, c-format
+msgid "cannot convert Perl hash to non-composite type %s"
+msgstr "não pode converter hash Perl para tipo não-composto %s"
+
+#: plperl.c:1344
+#, c-format
+msgid "function returning record called in context that cannot accept type record"
+msgstr "função que retorna record foi chamada em um contexto que não pode aceitar tipo record"
+
+#: plperl.c:1359
+#, c-format
+msgid "PL/Perl function must return reference to hash or array"
+msgstr "função PL/Perl deve retornar referência a um hash ou uma matriz"
+
+#: plperl.c:1396
+#, c-format
+msgid "lookup failed for type %s"
+msgstr "falhou ao pesquisar por tipo %s"
+
+#: plperl.c:1699
+#, c-format
+msgid "$_TD->{new} does not exist"
+msgstr "$_TD->{new} não existe"
+
+#: plperl.c:1703
+#, c-format
+msgid "$_TD->{new} is not a hash reference"
+msgstr "$_TD->{new} não é uma referência hash"
+
+#: plperl.c:1956 plperl.c:2790
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "funções PL/Perl não podem retornar tipo %s"
+
+#: plperl.c:1969 plperl.c:2835
+#, c-format
+msgid "PL/Perl functions cannot accept type %s"
+msgstr "funções PL/Perl não podem aceitar tipo %s"
+
+#: plperl.c:2085
+#, c-format
+msgid "didn't get a CODE reference from compiling function \"%s\""
+msgstr "não obteve uma referência CODE da compilação da função \"%s\""
+
+#: plperl.c:2177
+#, c-format
+msgid "didn't get a return item from function"
+msgstr "não obteve um item de retorno da função"
+
+#: plperl.c:2220 plperl.c:2286
+#, c-format
+msgid "couldn't fetch $_TD"
+msgstr "não pôde obter $_TD"
+
+#: plperl.c:2244 plperl.c:2306
+#, c-format
+msgid "didn't get a return item from trigger function"
+msgstr "não obteve um item de retorno da função de gatilho"
+
+#: plperl.c:2363
+#, c-format
+msgid "set-valued function called in context that cannot accept a set"
+msgstr "função que tem argumento do tipo conjunto foi chamada em um contexto que não pode aceitar um conjunto"
+
+#: plperl.c:2407
+#, c-format
+msgid "set-returning PL/Perl function must return reference to array or use return_next"
+msgstr "funçao PL/Perl que retorna conjunto deve retornar referência para matriz ou usar return_next"
+
+#: plperl.c:2521
+#, c-format
+msgid "ignoring modified row in DELETE trigger"
+msgstr "ignorando registro modificado em gatilho DELETE"
+
+#: plperl.c:2529
+#, c-format
+msgid "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\""
+msgstr "resultado da função de gatilho PL/Perl deve ser undef, \"SKIP\" ou \"MODIFY\""
+
+#: plperl.c:2708 plperl.c:2718
+#, c-format
+msgid "out of memory"
+msgstr "sem memória"
+
+#: plperl.c:2782
+#, c-format
+msgid "trigger functions can only be called as triggers"
+msgstr "funções de gatilho só podem ser chamadas como gatilhos"
+
+#: plperl.c:3121
+#, c-format
+msgid "query result has too many rows to fit in a Perl array"
+msgstr "resultado da consulta tem muitos registros para caber em um array Perl"
+
+#: plperl.c:3166
+#, c-format
+msgid "cannot use return_next in a non-SETOF function"
+msgstr "não pode utilizar return_next em uma função que não retorna conjunto"
+
+#: plperl.c:3222
+#, c-format
+msgid "SETOF-composite-returning PL/Perl function must call return_next with reference to hash"
+msgstr "função PL/Perl que retorna um conjunto de tipo composto deve chamar return_next com referência a um hash"
+
+#: plperl.c:3954
+#, c-format
+msgid "PL/Perl function \"%s\""
+msgstr "função PL/Perl \"%s\""
+
+#: plperl.c:3966
+#, c-format
+msgid "compilation of PL/Perl function \"%s\""
+msgstr "compilação da função PL/Perl \"%s\""
+
+#: plperl.c:3975
+#, c-format
+msgid "PL/Perl anonymous code block"
+msgstr "bloco de código PL/Perl anônimo"
diff --git a/src/pl/plperl/po/ro.po b/src/pl/plperl/po/ro.po
new file mode 100644
index 0000000..d101c4d
--- /dev/null
+++ b/src/pl/plperl/po/ro.po
@@ -0,0 +1,185 @@
+# LANGUAGE message translation file for plperl
+# Copyright (C) 2010 PostgreSQL Global Development Group
+# This file is distributed under the same license as the PostgreSQL package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 9.1\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
+"POT-Creation-Date: 2011-11-09 20:39+0000\n"
+"PO-Revision-Date: 2022-06-15 09:26+0200\n"
+"Last-Translator: Gheorge Rosca Codreanu <max@oceanline.co.uk>\n"
+"Language-Team: ROMANA <xsoftware.consultancy@gmail.com>\n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Romanian\n"
+"X-Poedit-Country: ROMANIA\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: plperl.c:364
+msgid "If true, trusted and untrusted Perl code will be compiled in strict mode."
+msgstr "Dacă true, trusted și untrusted codul Perl se va compila în modul strict."
+
+#: plperl.c:378
+msgid "Perl initialization code to execute when a Perl interpreter is initialized."
+msgstr "codul de inițializare Perl de executat odată când interpreterul Perl este inițializat."
+
+#: plperl.c:400
+msgid "Perl initialization code to execute once when plperl is first used."
+msgstr "codul de inițializare Perl de executat odată când plperl este folosit pentru prima oară."
+
+#: plperl.c:408
+msgid "Perl initialization code to execute once when plperlu is first used."
+msgstr "codul de inițializare Perl de executat odată când plperlu este folosit pentru prima oară."
+
+#: plperl.c:625
+#: plperl.c:787
+#: plperl.c:792
+#: plperl.c:896
+#: plperl.c:907
+#: plperl.c:948
+#: plperl.c:969
+#: plperl.c:1942
+#: plperl.c:2037
+#: plperl.c:2099
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: plperl.c:626
+msgid "while executing PostgreSQL::InServer::SPI::bootstrap"
+msgstr "în timpul execuției PostgreSQL::InServer::SPI::bootstrap"
+
+#: plperl.c:788
+msgid "while parsing Perl initialization"
+msgstr "în timpul parsing inițializării Perl"
+
+#: plperl.c:793
+msgid "while running Perl initialization"
+msgstr "în timpul rulării inițializării Perl"
+
+#: plperl.c:897
+msgid "while executing PLC_TRUSTED"
+msgstr "în timpul execuției PLC_TRUSTED"
+
+#: plperl.c:908
+msgid "while executing utf8fix"
+msgstr "în timpul execuției utf8fix"
+
+#: plperl.c:949
+msgid "while executing plperl.on_plperl_init"
+msgstr "în timpul execuției plperl.on_plperl_init"
+
+#: plperl.c:970
+msgid "while executing plperl.on_plperlu_init"
+msgstr "în timpul execuției plperl.on_plperlu_init"
+
+#: plperl.c:1014
+#: plperl.c:1614
+#, c-format
+msgid "Perl hash contains nonexistent column \"%s\""
+msgstr "Perl hash conține o coloană \"%s\" inexistentă"
+
+#: plperl.c:1099
+#, c-format
+msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
+msgstr "numarul dimensiunilor array-ului (%d) depăşeşte maximul admis, %d"
+
+#: plperl.c:1111
+#: plperl.c:1128
+msgid "multidimensional arrays must have array expressions with matching dimensions"
+msgstr "array-urile multidimensionale trebuie să aibă expresii de tip array cu dimensiuni corespunzătoare"
+
+#: plperl.c:1165
+#, c-format
+msgid "cannot convert Perl array to non-array type %s"
+msgstr "nu pot converti un array Perl în tipul de dată %s"
+
+#: plperl.c:1261
+#, c-format
+msgid "cannot convert Perl hash to non-composite type %s"
+msgstr "nu pot converti tipul de dată hash din Perl într-un tip de dată composit %s"
+
+#: plperl.c:1272
+msgid "function returning record called in context that cannot accept type record"
+msgstr "apel de funcție care are rezultat de tip rând într-un context care nu acceptă tipul rând"
+
+#: plperl.c:1287
+msgid "PL/Perl function must return reference to hash or array"
+msgstr "funcția PL/Perl trebuie să returneze o referință la hash sau array"
+
+#: plperl.c:1591
+msgid "$_TD->{new} does not exist"
+msgstr "$_TD->{new} nu există"
+
+#: plperl.c:1595
+msgid "$_TD->{new} is not a hash reference"
+msgstr "$_TD->{new} nu e o referință de tip hash"
+
+#: plperl.c:1819
+#: plperl.c:2517
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "funcțiile PL/Perl functions nu pot avea ca rezultat tipul %s"
+
+#: plperl.c:1832
+#: plperl.c:2564
+#, c-format
+msgid "PL/Perl functions cannot accept type %s"
+msgstr "funcțiile PL/Perl nu pot accepta tipul %s"
+
+#: plperl.c:1946
+#, c-format
+msgid "didn't get a CODE reference from compiling function \"%s\""
+msgstr "compilarea funcției \"%s\" nu a rezultat o referință CODE"
+
+#: plperl.c:2150
+msgid "set-valued function called in context that cannot accept a set"
+msgstr "funcţie set-valoare apelată într-un context care nu acceptă set"
+
+#: plperl.c:2194
+msgid "set-returning PL/Perl function must return reference to array or use return_next"
+msgstr "funcția PL/Perl care are rezultat de tip set trebuie să intoarcă o referință la un array sau să folosească return_next"
+
+#: plperl.c:2314
+msgid "ignoring modified row in DELETE trigger"
+msgstr "ignor rândul modificat in triggerul DELETE"
+
+#: plperl.c:2322
+msgid "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\""
+msgstr "rezultatul unei funcții trigger PL/Perl trebuie să fie de tip undef, \"SKIP\", or \"MODIFY\""
+
+#: plperl.c:2448
+#: plperl.c:2454
+msgid "out of memory"
+msgstr "memorie insuficientă"
+
+#: plperl.c:2508
+msgid "trigger functions can only be called as triggers"
+msgstr "funcţiile trigger pot fi apelate doar ca triggere"
+
+#: plperl.c:2884
+msgid "cannot use return_next in a non-SETOF function"
+msgstr "nu puteți folosi return_next într-o funcție de tip non-SETOF"
+
+#: plperl.c:2940
+msgid "SETOF-composite-returning PL/Perl function must call return_next with reference to hash"
+msgstr "funcția PL/Perl cu rezultat de tip SETOF-composite trebuie să apeleze return_next cu referință la hash"
+
+#: plperl.c:3655
+#, c-format
+msgid "PL/Perl function \"%s\""
+msgstr "funcție PL/Perl \"%s\""
+
+#: plperl.c:3667
+#, c-format
+msgid "compilation of PL/Perl function \"%s\""
+msgstr "compilare a funcției PL/Perl \"%s\""
+
+#: plperl.c:3676
+msgid "PL/Perl anonymous code block"
+msgstr "bloc de cod PL/Perl anonim"
+
diff --git a/src/pl/plperl/po/ru.po b/src/pl/plperl/po/ru.po
new file mode 100644
index 0000000..5ce3979
--- /dev/null
+++ b/src/pl/plperl/po/ru.po
@@ -0,0 +1,256 @@
+# Russian message translation file for plperl
+# Copyright (C) 2012-2016 PostgreSQL Global Development Group
+# This file is distributed under the same license as the PostgreSQL package.
+# Alexander Lakhin <exclusion@gmail.com>, 2012-2017, 2019.
+msgid ""
+msgstr ""
+"Project-Id-Version: plperl (PostgreSQL current)\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2022-05-07 06:06+0300\n"
+"PO-Revision-Date: 2019-08-29 15:42+0300\n"
+"Last-Translator: Alexander Lakhin <exclusion@gmail.com>\n"
+"Language-Team: Russian <pgsql-ru-general@postgresql.org>\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: plperl.c:408
+msgid ""
+"If true, trusted and untrusted Perl code will be compiled in strict mode."
+msgstr ""
+"Если этот параметр равен true, доверенный и недоверенный код Perl будет "
+"компилироваться в строгом режиме."
+
+#: plperl.c:422
+msgid ""
+"Perl initialization code to execute when a Perl interpreter is initialized."
+msgstr ""
+"Код инициализации Perl, который выполняется при инициализации интерпретатора "
+"Perl."
+
+#: plperl.c:444
+msgid "Perl initialization code to execute once when plperl is first used."
+msgstr ""
+"Код инициализации Perl, который выполняется один раз, при первом "
+"использовании plperl."
+
+#: plperl.c:452
+msgid "Perl initialization code to execute once when plperlu is first used."
+msgstr ""
+"Код инициализации Perl, который выполняется один раз, при первом "
+"использовании plperlu."
+
+#: plperl.c:646
+#, c-format
+msgid "cannot allocate multiple Perl interpreters on this platform"
+msgstr "на этой платформе нельзя запустить множество интерпретаторов Perl"
+
+#: plperl.c:669 plperl.c:853 plperl.c:859 plperl.c:976 plperl.c:988
+#: plperl.c:1031 plperl.c:1054 plperl.c:2138 plperl.c:2246 plperl.c:2314
+#: plperl.c:2377
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: plperl.c:670
+#, c-format
+msgid "while executing PostgreSQL::InServer::SPI::bootstrap"
+msgstr "при выполнении PostgreSQL::InServer::SPI::bootstrap"
+
+#: plperl.c:854
+#, c-format
+msgid "while parsing Perl initialization"
+msgstr "при разборе параметров инициализации Perl"
+
+#: plperl.c:860
+#, c-format
+msgid "while running Perl initialization"
+msgstr "при выполнении инициализации Perl"
+
+#: plperl.c:977
+#, c-format
+msgid "while executing PLC_TRUSTED"
+msgstr "при выполнении PLC_TRUSTED"
+
+#: plperl.c:989
+#, c-format
+msgid "while executing utf8fix"
+msgstr "при выполнении utf8fix"
+
+#: plperl.c:1032
+#, c-format
+msgid "while executing plperl.on_plperl_init"
+msgstr "при выполнении plperl.on_plperl_init"
+
+#: plperl.c:1055
+#, c-format
+msgid "while executing plperl.on_plperlu_init"
+msgstr "при выполнении plperl.on_plperlu_init"
+
+#: plperl.c:1101 plperl.c:1791
+#, c-format
+msgid "Perl hash contains nonexistent column \"%s\""
+msgstr "Perl-хеш содержит несуществующий столбец \"%s\""
+
+#: plperl.c:1106 plperl.c:1796
+#, c-format
+msgid "cannot set system attribute \"%s\""
+msgstr "присвоить значение системному атрибуту \"%s\" нельзя"
+
+#: plperl.c:1194
+#, c-format
+msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
+msgstr "число размерностей массива (%d) превышает предел (%d)"
+
+#: plperl.c:1206 plperl.c:1223
+#, c-format
+msgid ""
+"multidimensional arrays must have array expressions with matching dimensions"
+msgstr ""
+"для многомерных массивов должны задаваться выражения с соответствующими "
+"размерностями"
+
+#: plperl.c:1259
+#, c-format
+msgid "cannot convert Perl array to non-array type %s"
+msgstr "Perl-массив нельзя преобразовать в тип не массива %s"
+
+#: plperl.c:1362
+#, c-format
+msgid "cannot convert Perl hash to non-composite type %s"
+msgstr "Perl-хеш нельзя преобразовать в не составной тип %s"
+
+#: plperl.c:1384 plperl.c:3301
+#, c-format
+msgid ""
+"function returning record called in context that cannot accept type record"
+msgstr ""
+"функция, возвращающая запись, вызвана в контексте, не допускающем этот тип"
+
+#: plperl.c:1445
+#, c-format
+msgid "lookup failed for type %s"
+msgstr "найти тип %s не удалось"
+
+#: plperl.c:1766
+#, c-format
+msgid "$_TD->{new} does not exist"
+msgstr "$_TD->{new} не существует"
+
+#: plperl.c:1770
+#, c-format
+msgid "$_TD->{new} is not a hash reference"
+msgstr "$_TD->{new} - не ссылка на хеш"
+
+#: plperl.c:1801
+#, c-format
+msgid "cannot set generated column \"%s\""
+msgstr "присвоить значение генерируемому столбцу \"%s\" нельзя"
+
+#: plperl.c:2013 plperl.c:2851
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "функции PL/Perl не могут возвращать тип %s"
+
+#: plperl.c:2026 plperl.c:2890
+#, c-format
+msgid "PL/Perl functions cannot accept type %s"
+msgstr "функции PL/Perl не могут принимать тип %s"
+
+#: plperl.c:2143
+#, c-format
+msgid "didn't get a CODE reference from compiling function \"%s\""
+msgstr "не удалось получить ссылку на код после компиляции функции \"%s\""
+
+#: plperl.c:2234
+#, c-format
+msgid "didn't get a return item from function"
+msgstr "не удалось получить возвращаемый элемент от функции"
+
+#: plperl.c:2278 plperl.c:2345
+#, c-format
+msgid "couldn't fetch $_TD"
+msgstr "не удалось получить $_TD"
+
+#: plperl.c:2302 plperl.c:2365
+#, c-format
+msgid "didn't get a return item from trigger function"
+msgstr "не удалось получить возвращаемый элемент от триггерной функции"
+
+#: plperl.c:2424
+#, c-format
+msgid "set-valued function called in context that cannot accept a set"
+msgstr ""
+"функция, возвращающая множество, вызвана в контексте, где ему нет места"
+
+#: plperl.c:2469
+#, c-format
+msgid ""
+"set-returning PL/Perl function must return reference to array or use "
+"return_next"
+msgstr ""
+"функция PL/Perl, возвращающая множество, должна возвращать ссылку на массив "
+"или вызывать return_next"
+
+#: plperl.c:2590
+#, c-format
+msgid "ignoring modified row in DELETE trigger"
+msgstr "в триггере DELETE изменённая строка игнорируется"
+
+#: plperl.c:2598
+#, c-format
+msgid ""
+"result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\""
+msgstr ""
+"результатом триггерной функции PL/Perl должен быть undef, \"SKIP\" или "
+"\"MODIFY\""
+
+#: plperl.c:2846
+#, c-format
+msgid "trigger functions can only be called as triggers"
+msgstr "триггерные функции могут вызываться только в триггерах"
+
+#: plperl.c:3206
+#, c-format
+msgid "query result has too many rows to fit in a Perl array"
+msgstr ""
+"результат запроса содержит слишком много строк для передачи в массиве Perl"
+
+#: plperl.c:3278
+#, c-format
+msgid "cannot use return_next in a non-SETOF function"
+msgstr ""
+"return_next можно использовать только в функциях, возвращающих множества"
+
+#: plperl.c:3352
+#, c-format
+msgid ""
+"SETOF-composite-returning PL/Perl function must call return_next with "
+"reference to hash"
+msgstr ""
+"функция PL/Perl, возвращающая составное множество, должна вызывать "
+"return_next со ссылкой на хеш"
+
+#: plperl.c:4136
+#, c-format
+msgid "PL/Perl function \"%s\""
+msgstr "функция PL/Perl \"%s\""
+
+#: plperl.c:4148
+#, c-format
+msgid "compilation of PL/Perl function \"%s\""
+msgstr "компиляция функции PL/Perl \"%s\""
+
+#: plperl.c:4157
+#, c-format
+msgid "PL/Perl anonymous code block"
+msgstr "анонимный блок кода PL/Perl"
+
+#~ msgid "PL/Perl function must return reference to hash or array"
+#~ msgstr "функция PL/Perl должна возвращать ссылку на хеш или массив"
+
+#~ msgid "out of memory"
+#~ msgstr "нехватка памяти"
diff --git a/src/pl/plperl/po/sv.po b/src/pl/plperl/po/sv.po
new file mode 100644
index 0000000..0a41ded
--- /dev/null
+++ b/src/pl/plperl/po/sv.po
@@ -0,0 +1,222 @@
+# Swedish message translation file for plperl
+# Copyright (C) 2014 PostgreSQL Global Development Group
+# This file is distributed under the same license as the PostgreSQL package.
+# Mats Erik Andersson <bsd@gisladisker.se>, 2014.
+# Dennis Björklund <db@zigo.dhs.org> 2017, 2018, 2019, 2020, 2021.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 14\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2020-04-11 01:08+0000\n"
+"PO-Revision-Date: 2021-11-07 10:37+0100\n"
+"Last-Translator: Dennis Björklund <db@zigo.dhs.org>\n"
+"Language-Team: Swedish <pgsql-translators@postgresql.org>\n"
+"Language: sv\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"
+
+#: plperl.c:405
+msgid "If true, trusted and untrusted Perl code will be compiled in strict mode."
+msgstr "Om sant, tillförlitlig och otillförlitlig Perl-kod kommer kompileras i strikt läge."
+
+#: plperl.c:419
+msgid "Perl initialization code to execute when a Perl interpreter is initialized."
+msgstr "Perl-kod för initialisering, utföres när perl-tolken förbereds."
+
+#: plperl.c:441
+msgid "Perl initialization code to execute once when plperl is first used."
+msgstr "Perl-kod för engångs-initialisering då plperl används första gången."
+
+#: plperl.c:449
+msgid "Perl initialization code to execute once when plperlu is first used."
+msgstr "Perl-kod för engångs-initialisering då plperlu används första gången."
+
+#: plperl.c:646
+#, c-format
+msgid "cannot allocate multiple Perl interpreters on this platform"
+msgstr "kan inte utnyttja flera Perl-interpretorer på denna plattform"
+
+#: plperl.c:669 plperl.c:853 plperl.c:859 plperl.c:976 plperl.c:988
+#: plperl.c:1031 plperl.c:1054 plperl.c:2136 plperl.c:2244 plperl.c:2312
+#: plperl.c:2375
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: plperl.c:670
+#, c-format
+msgid "while executing PostgreSQL::InServer::SPI::bootstrap"
+msgstr "vid utförande av PostgreSQL::InServer::SPI::bootstrap"
+
+#: plperl.c:854
+#, c-format
+msgid "while parsing Perl initialization"
+msgstr "vid tolkning av perls initieringssteg"
+
+#: plperl.c:860
+#, c-format
+msgid "while running Perl initialization"
+msgstr "vid utförande av perls initieringssteg"
+
+#: plperl.c:977
+#, c-format
+msgid "while executing PLC_TRUSTED"
+msgstr "vid utförande av PLC_TRUSTED"
+
+#: plperl.c:989
+#, c-format
+msgid "while executing utf8fix"
+msgstr "vid utförande av utf8fix"
+
+#: plperl.c:1032
+#, c-format
+msgid "while executing plperl.on_plperl_init"
+msgstr "vid utförande av plperl.on_plperl_init"
+
+#: plperl.c:1055
+#, c-format
+msgid "while executing plperl.on_plperlu_init"
+msgstr "vid utförande av plperl.on_plperlu_init"
+
+#: plperl.c:1101 plperl.c:1789
+#, c-format
+msgid "Perl hash contains nonexistent column \"%s\""
+msgstr "Perlhash innehåller en okänd kolumn \"%s\"."
+
+#: plperl.c:1106 plperl.c:1794
+#, c-format
+msgid "cannot set system attribute \"%s\""
+msgstr "kan inte sätta systemattribut \"%s\""
+
+#: plperl.c:1194
+#, c-format
+msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
+msgstr "antalet array-dimensioner (%d) överskrider det maximalt tillåtna (%d)"
+
+#: plperl.c:1206 plperl.c:1223
+#, c-format
+msgid "multidimensional arrays must have array expressions with matching dimensions"
+msgstr "flerdimensionella vektorer måste ha array-uttryck av passande dimensioner"
+
+#: plperl.c:1259
+#, c-format
+msgid "cannot convert Perl array to non-array type %s"
+msgstr "kan inte omvandla perlvektor till icke-array av typ \"%s\"."
+
+#: plperl.c:1362
+#, c-format
+msgid "cannot convert Perl hash to non-composite type %s"
+msgstr "kan inte omvandla en perlhash till icke-composite-typ \"%s\"."
+
+#: plperl.c:1384 plperl.c:3284
+#, c-format
+msgid "function returning record called in context that cannot accept type record"
+msgstr "en funktion med post som värde anropades i sammanhang där poster inte kan godtagas."
+
+#: plperl.c:1443
+#, c-format
+msgid "lookup failed for type %s"
+msgstr "uppslag misslyckades för typen \"%s\""
+
+#: plperl.c:1764
+#, c-format
+msgid "$_TD->{new} does not exist"
+msgstr "$_TD->{new} finns inte."
+
+#: plperl.c:1768
+#, c-format
+msgid "$_TD->{new} is not a hash reference"
+msgstr "$_TD->{new} är inte en hash-referens."
+
+#: plperl.c:1799
+#, c-format
+msgid "cannot set generated column \"%s\""
+msgstr "kan inte sätta genererad kolumn \"%s\""
+
+#: plperl.c:2011 plperl.c:2849
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "Funktioner i PL/Perl kan inte svara med typ \"%s\"."
+
+#: plperl.c:2024 plperl.c:2890
+#, c-format
+msgid "PL/Perl functions cannot accept type %s"
+msgstr "Funktioner i PL/Perl kan inte hantera typ \"%s\"."
+
+#: plperl.c:2141
+#, c-format
+msgid "didn't get a CODE reference from compiling function \"%s\""
+msgstr "fick inte en CODE-referens vid kompilering av funktionen \"%s\"."
+
+#: plperl.c:2232
+#, c-format
+msgid "didn't get a return item from function"
+msgstr "fick inget returnvärde från funktion"
+
+#: plperl.c:2276 plperl.c:2343
+#, c-format
+msgid "couldn't fetch $_TD"
+msgstr "kunde inte hämta $_TD"
+
+#: plperl.c:2300 plperl.c:2363
+#, c-format
+msgid "didn't get a return item from trigger function"
+msgstr "fick inget returvärde från utlösarfunktion"
+
+#: plperl.c:2422
+#, c-format
+msgid "set-valued function called in context that cannot accept a set"
+msgstr "en funktion som returnerar en mängd anropades i kontext som inte godtar en mängd"
+
+#: plperl.c:2467
+#, c-format
+msgid "set-returning PL/Perl function must return reference to array or use return_next"
+msgstr "En mängd-returnerande funktion i PL/Perl måste göra det som referens eller med return_next."
+
+#: plperl.c:2588
+#, c-format
+msgid "ignoring modified row in DELETE trigger"
+msgstr "Lämnar ändrad rad orörd i en DELETE-triggning"
+
+#: plperl.c:2596
+#, c-format
+msgid "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\""
+msgstr "resultat av en triggningsfunktion i PL/Perl måste vara undef, \"SKIP\" eller \"MODIFY\"."
+
+#: plperl.c:2844
+#, c-format
+msgid "trigger functions can only be called as triggers"
+msgstr "Triggningsfunktioner kan bara anropas vid triggning."
+
+#: plperl.c:3191
+#, c-format
+msgid "query result has too many rows to fit in a Perl array"
+msgstr "frågeresultatet har för många rader för att få plats i en Perl-array"
+
+#: plperl.c:3261
+#, c-format
+msgid "cannot use return_next in a non-SETOF function"
+msgstr "får inte nyttja return_next i funktion som ej är SETOF"
+
+#: plperl.c:3335
+#, c-format
+msgid "SETOF-composite-returning PL/Perl function must call return_next with reference to hash"
+msgstr "En funktion i PL/Perl med värderetur som SETOF måste anropa return_next med en hashreferens"
+
+#: plperl.c:4110
+#, c-format
+msgid "PL/Perl function \"%s\""
+msgstr "PL/Perl-funktion \"%s\"."
+
+#: plperl.c:4122
+#, c-format
+msgid "compilation of PL/Perl function \"%s\""
+msgstr "kompilering av PL/Perl-funktion \"%s\""
+
+#: plperl.c:4131
+#, c-format
+msgid "PL/Perl anonymous code block"
+msgstr "Anonymt kodblock i PL/Perl."
diff --git a/src/pl/plperl/po/tr.po b/src/pl/plperl/po/tr.po
new file mode 100644
index 0000000..a8708e4
--- /dev/null
+++ b/src/pl/plperl/po/tr.po
@@ -0,0 +1,236 @@
+# LANGUAGE message translation file for plperl
+# Copyright (C) 2009 PostgreSQL Global Development Group
+# This file is distributed under the same license as the PostgreSQL package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 8.4\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2019-04-26 13:38+0000\n"
+"PO-Revision-Date: 2019-06-13 17:04+0300\n"
+"Last-Translator: Devrim GÜNDÜZ <devrim@gunduz.org>\n"
+"Language-Team: Turkish <devrim@gunduz.org>\n"
+"Language: tr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+
+#: plperl.c:409
+msgid "If true, trusted and untrusted Perl code will be compiled in strict mode."
+msgstr "Doğru ise, trusted ve untrusted Perl kodları strict modda derlenecektir"
+
+#: plperl.c:423
+msgid "Perl initialization code to execute when a Perl interpreter is initialized."
+msgstr "Perl yorumlayıcısı ilklendirildiğinde çalışacak Perl ilklendirme kodu."
+
+#: plperl.c:445
+msgid "Perl initialization code to execute once when plperl is first used."
+msgstr "plperl ilk kez kullanıldığında çalışacak Perl ilklendirme kodu"
+
+#: plperl.c:453
+msgid "Perl initialization code to execute once when plperlu is first used."
+msgstr "plperlu ilk kez kullanıldığında çalışacak Perl ilklendirme kodu"
+
+#: plperl.c:650
+#, c-format
+msgid "cannot allocate multiple Perl interpreters on this platform"
+msgstr "bu platformda birden fazla Perl interpreter ayrılamıyor"
+
+#: plperl.c:673 plperl.c:857 plperl.c:863 plperl.c:980 plperl.c:992
+#: plperl.c:1035 plperl.c:1058 plperl.c:2157 plperl.c:2267 plperl.c:2335
+#: plperl.c:2398
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: plperl.c:674
+#, c-format
+msgid "while executing PostgreSQL::InServer::SPI::bootstrap"
+msgstr "PostgreSQL::InServer::SPI::bootstrap çalıştırılırken"
+
+#: plperl.c:858
+#, c-format
+msgid "while parsing Perl initialization"
+msgstr "Perl ilklendirmesi ayrıştırılırken"
+
+#: plperl.c:864
+#, c-format
+msgid "while running Perl initialization"
+msgstr "Perl ilklendirmesi sırasında"
+
+#: plperl.c:981
+#, c-format
+msgid "while executing PLC_TRUSTED"
+msgstr " PLC_TRUSTED çalıştırılırken"
+
+#: plperl.c:993
+#, c-format
+msgid "while executing utf8fix"
+msgstr "utf8fix çalıştırılırken"
+
+#: plperl.c:1036
+#, c-format
+msgid "while executing plperl.on_plperl_init"
+msgstr "plperl.on_plperl_init çalıştırılırken"
+
+#: plperl.c:1059
+#, c-format
+msgid "while executing plperl.on_plperlu_init"
+msgstr "plperl.on_plperlu_init çalıştırılırken"
+
+#: plperl.c:1105 plperl.c:1796
+#, c-format
+msgid "Perl hash contains nonexistent column \"%s\""
+msgstr "Perl hashi olmayan kolonu içeriyor: \"%s\""
+
+#: plperl.c:1110 plperl.c:1801
+#, c-format
+msgid "cannot set system attribute \"%s\""
+msgstr "\"%s\" sistem niteliği ayarlanamıyor"
+
+#: plperl.c:1198
+#, c-format
+msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
+msgstr "dizin boyut sayısı (%d), izin verilern en yüksek değerini (%d) aşmaktadır"
+
+#: plperl.c:1210 plperl.c:1227
+#, c-format
+msgid "multidimensional arrays must have array expressions with matching dimensions"
+msgstr "çok boyutlu dizinler boyut sayısı kadar dizin ifade sayısına sahip olmalıdırlar"
+
+#: plperl.c:1263
+#, c-format
+msgid "cannot convert Perl array to non-array type %s"
+msgstr "Perl dizisi (array) dizi olmayan %s tipine dönüştürülemiyor"
+
+#: plperl.c:1366
+#, c-format
+msgid "cannot convert Perl hash to non-composite type %s"
+msgstr "Perl hash'i kompozit olmayan %s tipine dönüştürülemez"
+
+#: plperl.c:1388 plperl.c:3309
+#, c-format
+msgid "function returning record called in context that cannot accept type record"
+msgstr "tip kaydı içermeyen alanda çağırılan ve kayıt döndüren fonksiyon"
+
+#: plperl.c:1447
+#, c-format
+msgid "lookup failed for type %s"
+msgstr "%s tipi için arama (lookup) başarısız oldu"
+
+#: plperl.c:1771
+#, c-format
+msgid "$_TD->{new} does not exist"
+msgstr "$_TD->{new} mevcut değil"
+
+#: plperl.c:1775
+#, c-format
+msgid "$_TD->{new} is not a hash reference"
+msgstr "$_TD->{new} hash referansı değil"
+
+#: plperl.c:1806
+#, c-format
+msgid "cannot set generated column \"%s\""
+msgstr "oluşturulan \"%s\" sütunu ayarlanamıyor"
+
+#: plperl.c:2032 plperl.c:2874
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "PL/Perl fonksiyonları %s veri tipini döndüremezler"
+
+#: plperl.c:2045 plperl.c:2915
+#, c-format
+msgid "PL/Perl functions cannot accept type %s"
+msgstr "PL/Perl fonksiyonları %s tipini kabul etmez"
+
+#: plperl.c:2162
+#, c-format
+msgid "didn't get a CODE reference from compiling function \"%s\""
+msgstr "\"%s\" fonksiyonu derlenirken CODE referansı alınamadı"
+
+#: plperl.c:2255
+#, c-format
+msgid "didn't get a return item from function"
+msgstr "fonksiyonden dönüş (return) değeri alınamadı"
+
+#: plperl.c:2299 plperl.c:2366
+#, c-format
+msgid "couldn't fetch $_TD"
+msgstr "$_TD getirilemedi"
+
+#: plperl.c:2323 plperl.c:2386
+#, c-format
+msgid "didn't get a return item from trigger function"
+msgstr "trigger fonksiyonundan dönüş (return) değeri alınamadı"
+
+#: plperl.c:2447
+#, c-format
+msgid "set-valued function called in context that cannot accept a set"
+msgstr "set değerini kabul etmediği ortamda set değeri alan fonksiyon çağırılmış"
+
+#: plperl.c:2492
+#, c-format
+msgid "set-returning PL/Perl function must return reference to array or use return_next"
+msgstr "se dönen PL/Perl fonksiyonu return_next kullanmalı ya da bir diziye referans dönmelidir"
+
+#: plperl.c:2613
+#, c-format
+msgid "ignoring modified row in DELETE trigger"
+msgstr "DELETE triggerındaki değiştirilmiş satır gözardı ediliyor"
+
+#: plperl.c:2621
+#, c-format
+msgid "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\""
+msgstr "PL/Perl trigger fonksiyonun sonucu undef, \"SKIP\" ya da \"MODIFY\" olmalıdır"
+
+#: plperl.c:2869
+#, c-format
+msgid "trigger functions can only be called as triggers"
+msgstr "trigger fonksiyonları sadece trigger olarak çağırılabilirler"
+
+#: plperl.c:3216
+#, c-format
+msgid "query result has too many rows to fit in a Perl array"
+msgstr "sorgu sonucunda bir Perl dizisine (array) sığabilecekten çok fazla satır var"
+
+#: plperl.c:3286
+#, c-format
+msgid "cannot use return_next in a non-SETOF function"
+msgstr "SETOF olmayan bir fonksiyonda return_next kullanılamaz"
+
+#: plperl.c:3360
+#, c-format
+msgid "SETOF-composite-returning PL/Perl function must call return_next with reference to hash"
+msgstr "SETOF-composite döndüren PL/Perl fonksiyonları return_next'i hash'e referans olarak çağırmalıdır"
+
+#: plperl.c:4135
+#, c-format
+msgid "PL/Perl function \"%s\""
+msgstr "\"%s\" PL/Perl fonksiyonu"
+
+#: plperl.c:4147
+#, c-format
+msgid "compilation of PL/Perl function \"%s\""
+msgstr "\"%s\" PL/Perl fonksiyonunun derlenmesi"
+
+#: plperl.c:4156
+#, c-format
+msgid "PL/Perl anonymous code block"
+msgstr "PL/Perl anonim kod bloğu"
+
+#~ msgid "composite-returning PL/Perl function must return reference to hash"
+#~ msgstr "composite döndüren PL/Perl fonksiyonu hash'e referans dönmelidir"
+
+#~ msgid "out of memory"
+#~ msgstr "yetersiz bellek"
+
+#~ msgid "creation of Perl function \"%s\" failed: %s"
+#~ msgstr " \"%s\" Perl fonksiyonunun yaratılması başarısız oldu: %s"
+
+#~ msgid "error from Perl function \"%s\": %s"
+#~ msgstr "Perl fonksiyonunda hata: \"%s\": %s"
+
+#~ msgid "PL/Perl function must return reference to hash or array"
+#~ msgstr "PL/Perl fonksiyonu hash ya da dizine referans dönmelidir"
diff --git a/src/pl/plperl/po/uk.po b/src/pl/plperl/po/uk.po
new file mode 100644
index 0000000..2d0eec8
--- /dev/null
+++ b/src/pl/plperl/po/uk.po
@@ -0,0 +1,222 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: postgresql\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2022-03-16 09:08+0000\n"
+"PO-Revision-Date: 2022-06-19 10:10\n"
+"Last-Translator: \n"
+"Language-Team: Ukrainian\n"
+"Language: uk_UA\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n"
+"X-Crowdin-Project: postgresql\n"
+"X-Crowdin-Project-ID: 324573\n"
+"X-Crowdin-Language: uk\n"
+"X-Crowdin-File: /REL_14_STABLE/plperl.pot\n"
+"X-Crowdin-File-ID: 770\n"
+
+#: plperl.c:408
+msgid "If true, trusted and untrusted Perl code will be compiled in strict mode."
+msgstr "Якщо увімкнено, надійний і ненадійний код Perl буде скомпільований в суворому режимі."
+
+#: plperl.c:422
+msgid "Perl initialization code to execute when a Perl interpreter is initialized."
+msgstr "Виконати ініціалізаційний код під час ініціалізації інтерпретатора Perl."
+
+#: plperl.c:444
+msgid "Perl initialization code to execute once when plperl is first used."
+msgstr "Виконати код ініціалізації один раз під час першого використання plperl."
+
+#: plperl.c:452
+msgid "Perl initialization code to execute once when plperlu is first used."
+msgstr "Виконати код ініціалізації один раз під час першого використання plperlu."
+
+#: plperl.c:646
+#, c-format
+msgid "cannot allocate multiple Perl interpreters on this platform"
+msgstr "не можна розмістити декілька Perl інтерпретаторів на цій платформі"
+
+#: plperl.c:669 plperl.c:853 plperl.c:859 plperl.c:976 plperl.c:988
+#: plperl.c:1031 plperl.c:1054 plperl.c:2138 plperl.c:2246 plperl.c:2314
+#: plperl.c:2377
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: plperl.c:670
+#, c-format
+msgid "while executing PostgreSQL::InServer::SPI::bootstrap"
+msgstr "під час виконання PostgreSQL::InServer::SPI::bootstrap"
+
+#: plperl.c:854
+#, c-format
+msgid "while parsing Perl initialization"
+msgstr "під час обробки ініціалізації Perl"
+
+#: plperl.c:860
+#, c-format
+msgid "while running Perl initialization"
+msgstr "під час запуску Perl ініціалізації"
+
+#: plperl.c:977
+#, c-format
+msgid "while executing PLC_TRUSTED"
+msgstr "під час виконання PLC_TRUSTED"
+
+#: plperl.c:989
+#, c-format
+msgid "while executing utf8fix"
+msgstr "під час виконання utf8fix"
+
+#: plperl.c:1032
+#, c-format
+msgid "while executing plperl.on_plperl_init"
+msgstr "під час виконання plperl.on_plperl_init"
+
+#: plperl.c:1055
+#, c-format
+msgid "while executing plperl.on_plperlu_init"
+msgstr "під час виконання plperl.on_plperlu_init"
+
+#: plperl.c:1101 plperl.c:1791
+#, c-format
+msgid "Perl hash contains nonexistent column \"%s\""
+msgstr "хеш Perl містить неіснуючу колонку \"%s\""
+
+#: plperl.c:1106 plperl.c:1796
+#, c-format
+msgid "cannot set system attribute \"%s\""
+msgstr "не вдалося встановити системний атрибут \"%s\""
+
+#: plperl.c:1194
+#, c-format
+msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
+msgstr "число вимірів масива (%d) перевищує ліміт (%d)"
+
+#: plperl.c:1206 plperl.c:1223
+#, c-format
+msgid "multidimensional arrays must have array expressions with matching dimensions"
+msgstr "для багатовимірних масивів повинні задаватись вирази з відповідними вимірами"
+
+#: plperl.c:1259
+#, c-format
+msgid "cannot convert Perl array to non-array type %s"
+msgstr "неможливо конвертувати масив Perl у тип не масиву %s"
+
+#: plperl.c:1362
+#, c-format
+msgid "cannot convert Perl hash to non-composite type %s"
+msgstr "неможливо конвертувати хеш Perl у нескладений тип %s"
+
+#: plperl.c:1384 plperl.c:3301
+#, c-format
+msgid "function returning record called in context that cannot accept type record"
+msgstr "функція, що повертає набір, викликана у контексті, що не приймає тип запис"
+
+#: plperl.c:1445
+#, c-format
+msgid "lookup failed for type %s"
+msgstr "неможливо фільтрувати для типу %s"
+
+#: plperl.c:1766
+#, c-format
+msgid "$_TD->{new} does not exist"
+msgstr "$_TD->{new} не існує"
+
+#: plperl.c:1770
+#, c-format
+msgid "$_TD->{new} is not a hash reference"
+msgstr "$_TD->{new} не є посиланням на хеш"
+
+#: plperl.c:1801
+#, c-format
+msgid "cannot set generated column \"%s\""
+msgstr "неможливо оновити згенерований стовпець \"%s\""
+
+#: plperl.c:2013 plperl.c:2851
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "функції PL/Perl не можуть повертати тип %s"
+
+#: plperl.c:2026 plperl.c:2890
+#, c-format
+msgid "PL/Perl functions cannot accept type %s"
+msgstr "функції PL/Perl не можуть приймати тип %s"
+
+#: plperl.c:2143
+#, c-format
+msgid "didn't get a CODE reference from compiling function \"%s\""
+msgstr "не отримано посилання CODE з функції компіляції \"%s\""
+
+#: plperl.c:2234
+#, c-format
+msgid "didn't get a return item from function"
+msgstr "не отримано елемент результату з функції"
+
+#: plperl.c:2278 plperl.c:2345
+#, c-format
+msgid "couldn't fetch $_TD"
+msgstr "не вдалось отримати $_TD"
+
+#: plperl.c:2302 plperl.c:2365
+#, c-format
+msgid "didn't get a return item from trigger function"
+msgstr "не отримано елемент результату з функції-тригеру"
+
+#: plperl.c:2424
+#, c-format
+msgid "set-valued function called in context that cannot accept a set"
+msgstr "функція \"set-valued\" викликана в контексті, де йому немає місця"
+
+#: plperl.c:2469
+#, c-format
+msgid "set-returning PL/Perl function must return reference to array or use return_next"
+msgstr "функція PL/Perl, що вертає набір значень, повинна посилатися на масив або використовувати return_next"
+
+#: plperl.c:2590
+#, c-format
+msgid "ignoring modified row in DELETE trigger"
+msgstr "ігнорується змінений рядок у тригері DELETE"
+
+#: plperl.c:2598
+#, c-format
+msgid "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\""
+msgstr "результат тригерної функції PL/Perl повинен бути undef, \"SKIP\" або \"MODIFY\""
+
+#: plperl.c:2846
+#, c-format
+msgid "trigger functions can only be called as triggers"
+msgstr "тригер-функція може викликатися лише як тригер"
+
+#: plperl.c:3206
+#, c-format
+msgid "query result has too many rows to fit in a Perl array"
+msgstr "результат запиту має забагато рядків для відповідності в масиві Perl"
+
+#: plperl.c:3278
+#, c-format
+msgid "cannot use return_next in a non-SETOF function"
+msgstr "не можна використовувати return_next в функціях, що не повертають набори даних"
+
+#: plperl.c:3352
+#, c-format
+msgid "SETOF-composite-returning PL/Perl function must call return_next with reference to hash"
+msgstr "Функція PL/Perl, що повертає набір композитних даних, повинна викликати return_next з посиланням на хеш"
+
+#: plperl.c:4136
+#, c-format
+msgid "PL/Perl function \"%s\""
+msgstr "PL/Perl функція \"%s\""
+
+#: plperl.c:4148
+#, c-format
+msgid "compilation of PL/Perl function \"%s\""
+msgstr "компіляція функції PL/Perl \"%s\""
+
+#: plperl.c:4157
+#, c-format
+msgid "PL/Perl anonymous code block"
+msgstr "анонімний блок коду PL/Perl"
+
diff --git a/src/pl/plperl/po/vi.po b/src/pl/plperl/po/vi.po
new file mode 100644
index 0000000..15ba874
--- /dev/null
+++ b/src/pl/plperl/po/vi.po
@@ -0,0 +1,242 @@
+# LANGUAGE message translation file for plperl
+# Copyright (C) 2018 PostgreSQL Global Development Group
+# This file is distributed under the same license as the plperl (PostgreSQL) package.
+# FIRST AUTHOR <kakalot49@gmail.com>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: plperl (PostgreSQL) 11\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
+"POT-Creation-Date: 2018-04-22 12:08+0000\n"
+"PO-Revision-Date: 2018-04-29 23:57+0900\n"
+"Language-Team: <pgvn_translators@postgresql.vn>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0.6\n"
+"Last-Translator: Dang Minh Huong <kakalot49@gmail.com>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: vi_VN\n"
+
+#: plperl.c:409
+msgid ""
+"If true, trusted and untrusted Perl code will be compiled in strict mode."
+msgstr ""
+"Nếu đúng, mã perl đáng tin cậy(PL/Perl ) và không đáng tin cậy(PL/PerlU) sẽ "
+"được biên dịch trong chế độ strict."
+
+#: plperl.c:423
+msgid ""
+"Perl initialization code to execute when a Perl interpreter is initialized."
+msgstr "Mã Perl được thực thi khi trình thông dịch Perl được khởi tạo."
+
+#: plperl.c:445
+msgid "Perl initialization code to execute once when plperl is first used."
+msgstr "Mã Perl được thực thi khi plperl được sử dụng lần đầu tiên."
+
+#: plperl.c:453
+msgid "Perl initialization code to execute once when plperlu is first used."
+msgstr "Mã Perl được thực thi khi plperlu được sử dụng lần đầu tiên."
+
+#: plperl.c:650
+#, c-format
+msgid "cannot allocate multiple Perl interpreters on this platform"
+msgstr "không thể cấp phát nhiều trình thông dịch Perl trên hệ điều hành này"
+
+#: plperl.c:673 plperl.c:857 plperl.c:863 plperl.c:980 plperl.c:992
+#: plperl.c:1035 plperl.c:1058 plperl.c:2141 plperl.c:2251 plperl.c:2319
+#: plperl.c:2382
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: plperl.c:674
+#, c-format
+msgid "while executing PostgreSQL::InServer::SPI::bootstrap"
+msgstr "trong khi thực thi PostgreSQL::InServer::SPI::bootstrap"
+
+#: plperl.c:858
+#, c-format
+msgid "while parsing Perl initialization"
+msgstr "trong khi phân tích cú pháp khởi tạo Perl"
+
+#: plperl.c:864
+#, c-format
+msgid "while running Perl initialization"
+msgstr "trong khi chạy cú pháp khởi tạo Perl"
+
+#: plperl.c:981
+#, c-format
+msgid "while executing PLC_TRUSTED"
+msgstr "trong khi chạy PLC_TRUSTED"
+
+#: plperl.c:993
+#, c-format
+msgid "while executing utf8fix"
+msgstr "trong khi thực thi utf8fix"
+
+#: plperl.c:1036
+#, c-format
+msgid "while executing plperl.on_plperl_init"
+msgstr "trong khi thực thi plperl.on_plperl_init"
+
+#: plperl.c:1059
+#, c-format
+msgid "while executing plperl.on_plperlu_init"
+msgstr "trong khi thực thi plperl.plperlu_init"
+
+#: plperl.c:1105 plperl.c:1785
+#, c-format
+msgid "Perl hash contains nonexistent column \"%s\""
+msgstr "Giá trị băm Perl chứa cột không tồn tại \"%s\""
+
+#: plperl.c:1110 plperl.c:1790
+#, c-format
+msgid "cannot set system attribute \"%s\""
+msgstr "không thể thiết lập attribute hệ thống \"%s\""
+
+#: plperl.c:1198
+#, c-format
+msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
+msgstr "số lượng chiều của mảng (%d) vượt quá số lượng tối đa cho phép (%d)"
+
+#: plperl.c:1210 plperl.c:1227
+#, c-format
+msgid ""
+"multidimensional arrays must have array expressions with matching dimensions"
+msgstr "mảng đa chiều phải có biểu thức mảng tương ứng với các chiều"
+
+#: plperl.c:1263
+#, c-format
+msgid "cannot convert Perl array to non-array type %s"
+msgstr "không thể chuyển đổi mảng Perl thành kiểu không phải mảng %s"
+
+#: plperl.c:1366
+#, c-format
+msgid "cannot convert Perl hash to non-composite type %s"
+msgstr ""
+"không thể chuyển đổi giá trị băm Perl thành kiểu không phải-composite %s"
+
+#: plperl.c:1388 plperl.c:3286
+#, c-format
+msgid ""
+"function returning record called in context that cannot accept type record"
+msgstr ""
+"hàm trả về bản ghi được gọi trong ngữ cảnh không thể chấp nhận kiểu bản ghi"
+
+#: plperl.c:1408
+#, c-format
+msgid "PL/Perl function must return reference to hash or array"
+msgstr "Hàm PL/Perl phải trả về tham thiếu tới giá trị băm hoặc mảng"
+
+#: plperl.c:1445
+#, c-format
+msgid "lookup failed for type %s"
+msgstr "không tìm thấy kiểu dữ liệu %s"
+
+#: plperl.c:1760
+#, c-format
+msgid "$_TD->{new} does not exist"
+msgstr "$_TD->{new} không tồn tại"
+
+#: plperl.c:1764
+#, c-format
+msgid "$_TD->{new} is not a hash reference"
+msgstr "$_TD->{new} không phải là một tham chiếu giá trị băm"
+
+#: plperl.c:2016 plperl.c:2858
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "Hàm PL/Perl không thể trả về kiểu %s"
+
+#: plperl.c:2029 plperl.c:2899
+#, c-format
+msgid "PL/Perl functions cannot accept type %s"
+msgstr "Hàm PL/Perl không thể chấp nhận kiểu %s"
+
+#: plperl.c:2146
+#, c-format
+msgid "didn't get a CODE reference from compiling function \"%s\""
+msgstr "không nhận được tham chiếu CODE từ hàm biên dịch \"%s\""
+
+#: plperl.c:2239
+#, c-format
+msgid "didn't get a return item from function"
+msgstr "không nhận được một mục trả về từ hàm"
+
+#: plperl.c:2283 plperl.c:2350
+#, c-format
+msgid "couldn't fetch $_TD"
+msgstr "không thể fetch $_TD"
+
+#: plperl.c:2307 plperl.c:2370
+#, c-format
+msgid "didn't get a return item from trigger function"
+msgstr "không nhận được một mục trả về từ hàm trigger"
+
+#: plperl.c:2431
+#, c-format
+msgid "set-valued function called in context that cannot accept a set"
+msgstr ""
+"hàm thiết lập giá trị được gọi trong ngữ cảnh không thể chấp nhận một tập "
+"hợp"
+
+#: plperl.c:2476
+#, c-format
+msgid ""
+"set-returning PL/Perl function must return reference to array or use "
+"return_next"
+msgstr ""
+"hàm thiết lập-trả về PL/Perl phải trả về tham chiếu tới mảng hay sử dụng "
+"return_next"
+
+#: plperl.c:2597
+#, c-format
+msgid "ignoring modified row in DELETE trigger"
+msgstr "bỏ qua hàng đã sửa đổi trong trigger DELETE"
+
+#: plperl.c:2605
+#, c-format
+msgid ""
+"result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\""
+msgstr ""
+"kết quả của hàm trigger PL/Perl phải là undef, \"SKIP\" hoặc \"MODIFY\""
+
+#: plperl.c:2853
+#, c-format
+msgid "trigger functions can only be called as triggers"
+msgstr "các hàm trigger chỉ có thể được gọi như những trigger"
+
+#: plperl.c:3193
+#, c-format
+msgid "query result has too many rows to fit in a Perl array"
+msgstr "kết quả truy vấn có quá nhiều hàng có thể vừa với một mảng Perl"
+
+#: plperl.c:3263
+#, c-format
+msgid "cannot use return_next in a non-SETOF function"
+msgstr "không thể sử dụng return_next trong hàm không phải-SETOF"
+
+#: plperl.c:3337
+#, c-format
+msgid ""
+"SETOF-composite-returning PL/Perl function must call return_next with "
+"reference to hash"
+msgstr ""
+"Hàm PL/Perl trả về SETOF-composite phải gọi return_next với tham chiếu tới "
+"giá trị băm"
+
+#: plperl.c:4115
+#, c-format
+msgid "PL/Perl function \"%s\""
+msgstr "Hàm PL/Perl \"%s\""
+
+#: plperl.c:4127
+#, c-format
+msgid "compilation of PL/Perl function \"%s\""
+msgstr "biên dịch hàm PL/Perl \"%s\""
+
+#: plperl.c:4136
+#, c-format
+msgid "PL/Perl anonymous code block"
+msgstr "Khối mã ẩn danh PL/Perl"
diff --git a/src/pl/plperl/po/zh_CN.po b/src/pl/plperl/po/zh_CN.po
new file mode 100644
index 0000000..14e2324
--- /dev/null
+++ b/src/pl/plperl/po/zh_CN.po
@@ -0,0 +1,221 @@
+# LANGUAGE message translation file for plperl
+# Copyright (C) 2010 PostgreSQL Global Development Group
+# This file is distributed under the same license as the PostgreSQL package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: plperl (PostgreSQL) 14\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2021-08-14 05:39+0000\n"
+"PO-Revision-Date: 2021-08-15 17:30+0800\n"
+"Last-Translator: Jie Zhang <zhangjie2@fujitsu.com>\n"
+"Language-Team: Chinese (Simplified) <zhangjie2@fujitsu.com>\n"
+"Language: zh_CN\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.5.7\n"
+
+#: plperl.c:405
+msgid "If true, trusted and untrusted Perl code will be compiled in strict mode."
+msgstr "如果为真的话,那么信任和非信任的Perl代码将以限制模式编译."
+
+#: plperl.c:419
+msgid "Perl initialization code to execute when a Perl interpreter is initialized."
+msgstr "当初始化一个Perl解释器时候执行Perl初始化代码"
+
+#: plperl.c:441
+msgid "Perl initialization code to execute once when plperl is first used."
+msgstr "在第一次使用plperl的时候执行一次Perl初始化代码"
+
+#: plperl.c:449
+msgid "Perl initialization code to execute once when plperlu is first used."
+msgstr "在plperlu第一次使用的时候执行一次Perl初始化代码"
+
+#: plperl.c:643
+#, c-format
+msgid "cannot allocate multiple Perl interpreters on this platform"
+msgstr "在这个平台上无法分配多个Perl解释器"
+
+#: plperl.c:666 plperl.c:850 plperl.c:856 plperl.c:973 plperl.c:985
+#: plperl.c:1028 plperl.c:1051 plperl.c:2133 plperl.c:2241 plperl.c:2309
+#: plperl.c:2372
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: plperl.c:667
+#, c-format
+msgid "while executing PostgreSQL::InServer::SPI::bootstrap"
+msgstr "同时在执行PostgreSQL::InServer::SPI::bootstrap"
+
+#: plperl.c:851
+#, c-format
+msgid "while parsing Perl initialization"
+msgstr "同时在解析Perl初始化"
+
+#: plperl.c:857
+#, c-format
+msgid "while running Perl initialization"
+msgstr "同时在运行Perl初始化"
+
+#: plperl.c:974
+#, c-format
+msgid "while executing PLC_TRUSTED"
+msgstr "同时在执行PLC_TRUSTED"
+
+#: plperl.c:986
+#, c-format
+msgid "while executing utf8fix"
+msgstr "同时在执行utf8fix"
+
+#: plperl.c:1029
+#, c-format
+msgid "while executing plperl.on_plperl_init"
+msgstr "同时在执行plperl.on_plperl_init"
+
+#: plperl.c:1052
+#, c-format
+msgid "while executing plperl.on_plperlu_init"
+msgstr "同时在执行plperl.on_plperlu_init"
+
+#: plperl.c:1098 plperl.c:1786
+#, c-format
+msgid "Perl hash contains nonexistent column \"%s\""
+msgstr "Perl的哈希功能包含不存在的列\"%s\""
+
+#: plperl.c:1103 plperl.c:1791
+#, c-format
+msgid "cannot set system attribute \"%s\""
+msgstr "不能设置系统属性\"%s\""
+
+#: plperl.c:1191
+#, c-format
+msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
+msgstr "数组的维数(%d)超过最大允许值(%d)"
+
+#: plperl.c:1203 plperl.c:1220
+#, c-format
+msgid "multidimensional arrays must have array expressions with matching dimensions"
+msgstr "多维数组必须有符合维度的数组表达式"
+
+#: plperl.c:1256
+#, c-format
+msgid "cannot convert Perl array to non-array type %s"
+msgstr "无法将Perl数组转换成非数组类型 %s"
+
+#: plperl.c:1359
+#, c-format
+msgid "cannot convert Perl hash to non-composite type %s"
+msgstr "无法将Perl哈希类型转换成非组合类型 %s"
+
+#: plperl.c:1381 plperl.c:3279
+#, c-format
+msgid "function returning record called in context that cannot accept type record"
+msgstr "返回值类型是记录的函数在不接受使用记录类型的环境中调用"
+
+#: plperl.c:1440
+#, c-format
+msgid "lookup failed for type %s"
+msgstr "类型%s查找失败"
+
+#: plperl.c:1761
+#, c-format
+msgid "$_TD->{new} does not exist"
+msgstr "$_TD->{new}不存在"
+
+#: plperl.c:1765
+#, c-format
+msgid "$_TD->{new} is not a hash reference"
+msgstr "$_TD->{new}不是一个哈希引用"
+
+#: plperl.c:1796
+#, c-format
+msgid "cannot set generated column \"%s\""
+msgstr "无法设置生成的列 \"%s\""
+
+#: plperl.c:2008 plperl.c:2846
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "PL/Perl函数无法返回类型%s"
+
+#: plperl.c:2021 plperl.c:2885
+#, c-format
+msgid "PL/Perl functions cannot accept type %s"
+msgstr "PL/Perl 函数无法使用类型%s"
+
+#: plperl.c:2138
+#, c-format
+msgid "didn't get a CODE reference from compiling function \"%s\""
+msgstr "没有从正在编译的函数 \"%s\"得到CODE参考"
+
+#: plperl.c:2229
+#, c-format
+msgid "didn't get a return item from function"
+msgstr "没有从函数得到一个返回项"
+
+#: plperl.c:2273 plperl.c:2340
+#, c-format
+msgid "couldn't fetch $_TD"
+msgstr "无法取得 $_TD"
+
+#: plperl.c:2297 plperl.c:2360
+#, c-format
+msgid "didn't get a return item from trigger function"
+msgstr "没有从触发器函数得到一个返回项"
+
+#: plperl.c:2419
+#, c-format
+msgid "set-valued function called in context that cannot accept a set"
+msgstr "在不能接受使用集合的环境中调用set-valued函数"
+
+#: plperl.c:2464
+#, c-format
+msgid "set-returning PL/Perl function must return reference to array or use return_next"
+msgstr "返回集合的PL/Perl函数必须返回对数组的引用或者使用return_next"
+
+#: plperl.c:2585
+#, c-format
+msgid "ignoring modified row in DELETE trigger"
+msgstr "在DELETE触发器中忽略已修改的记录"
+
+#: plperl.c:2593
+#, c-format
+msgid "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\""
+msgstr "PL/Perl 触发器函数的结果必须是undef, \"SKIP\", 或 \"MODIFY\""
+
+#: plperl.c:2841
+#, c-format
+msgid "trigger functions can only be called as triggers"
+msgstr "触发器函数只能以触发器的形式调用"
+
+#: plperl.c:3186
+#, c-format
+msgid "query result has too many rows to fit in a Perl array"
+msgstr "查询结果中的行太多,无法放在一个Perl数组中"
+
+#: plperl.c:3256
+#, c-format
+msgid "cannot use return_next in a non-SETOF function"
+msgstr "不能在非SETOF函数中使用return_next"
+
+#: plperl.c:3330
+#, c-format
+msgid "SETOF-composite-returning PL/Perl function must call return_next with reference to hash"
+msgstr "返回SETOF-组合类型值的PL/Perl函数必须调用带有对哈希引用的return_next"
+
+#: plperl.c:4105
+#, c-format
+msgid "PL/Perl function \"%s\""
+msgstr "PL/Perl函数\"%s\""
+
+#: plperl.c:4117
+#, c-format
+msgid "compilation of PL/Perl function \"%s\""
+msgstr "编译PL/Perl函数\"%s\""
+
+#: plperl.c:4126
+#, c-format
+msgid "PL/Perl anonymous code block"
+msgstr "PL/Perl匿名代码块"