GNU gettext – свободна библиотека на проекта GNU за интернационализация, широко използвана в свободния софтуер.
Основната разлика от други подобни инструменти е, че GNU gettext използва техните английски оригинали, а не специални идентификатори, за да обозначи преведените низове в текста на програмата. Така се оказва, че програмата не се нуждае от преводни файлове, за да покаже интерфейса на български език. Това обикновено е удобно, тъй като повечето разработвани приложения вече са написани на английски език.
В GNU gettext има поддръжка на множествено число. За целта се използва специална функция в изходния код на програмата и се задават два реда – в единствено и множествено число. При заместване на превод на друг език се използват толкова форми на низ за превод, колкото са необходими за този език. За тази цел заглавието на файла за превод трябва да съдържа специфичен за езика израз за избор на числото на низ за превод по ред.
Библиотеката GNU gettext предлага преводите да се съхраняват във файлове с разширения.mo (на английски език. Machine Object(двоичен файл, специфичен за платформата, който може да бъде прочетен от програма), или.gmo (GNU.mo).po (английски Portable Object, независим от платформата файл за превод, който може да се чете от човек) и.pot ( PO template е каталог, предварително подготвен.po файл за превод на нов език). Освен самите низове за превод, файловете.po могат да съдържат коментари на преводача и различни служебни бележки.
Предполага се, че за генерирането и актуализирането на тези файлове при промяна на програмата ще се използват редица помощни програми.
Първоначално редовете от изходния текст на програмата се събират с помощта на програмата xgettext в.pot-файл (директория). Актуализирането на този файл и на файловете за превод, като се използват новите и променените редове, появили се в изходния текст, се извършва от програмата msgmerge.. В същото време се запазват всички вече преведени редове, а тези, които са се променили, се отбелязват като неточни (на английски език fuzzy). По подразбиране такива редове няма да бъдат използвани от програмата. Те са необходими за удобство на преводача: често е по-лесно да се базираме на съществуващ, макар и остарял, превод, отколкото да превеждаме отново цялата фраза.
За да започне преводът на дадена програма на определен език, преводачът създава файл.po-: копирайте файла.pot-на желаното място и променете заглавието в него. За тази цел можете да използвате програмата msginit.. Готовият файл за превод се преобразува във файлове.mo-от обслужващата програма msgfmt.
Съществуват и помощни програми за преводачи, които улесняват редактирането на превода, напр:
Освен основната имплементация GNU gettext за стандартния език C, съществуват имплементации на подобен подход за езиците C++, Objective-C, скриптове sh/bash, Python, Perl, PHP, GNU CLISP, Emacs Lisp, librep, GNU Smalltalk, Java, GNU awk, Pascal, wxWidgets (с използване на клас wxLocale), YCP (език YaST2), Tcl, Pike и R, платформени езици Mono (пространство от имена Mono.UNIX), както и за рамката Qt. Някои от тези езици се поддържат директно от споменатите по-горе помощни програми.
Използването в повечето езици е подобно на това в C.


