Important
Since Godot 4.0, the editor can generate a PO template automatically from specified scene and GDscript files.
See Automatic generation using the editor for more information.
You don't need gdgettext anymore.
The gdgettext program extracts translatable strings from given Godot input files. It is meant as an alternative for xgettext specifically for games using Godot Engine.
Currently it extracts translatable strings using the following rules:
.tscn- everytextparameter being set.gd- every call totr()
$ go get github.com/mrombout/gdgettext
$ gdgettext [option] [inputfile]...
-o file
--output=file
Write output to specified file (instead of `messages.po`).
Open Poedit Preferences and add a new extractor in the Extractors tab and enter the following settings:
| Setting | Value |
|---|---|
| Language | Godot |
| List of extensions separated by semicolons (e.g. .cpp;.h) | *.gd;*.tscn |
| Command to extract translations | gdgettext -o %o %F |
| An item in input files list | %f |
Then create a new .po file and press Extract from sources and set the root of your Godot project as the Base path and add paths containing the translatable strings to the Paths section.
After this Poedit will use gdgettext to extract all translatable strings and you can start editing the .po file using Poedit.
Use tr() in your .gd files or set the text attributes on the Controls in your scene (e.g. Button) to make strings translatable.
Using poedit gdgettext parses all your .tscn and .gd files and creates a .po file containing all translatable strings.
Now use poedit to translate all translatable string to your desired messages.
You can also create new translation files from the .po files for each language you want to support. For each language you generally create a .po file using the language code as the file name (e.g. nl.po, en.po, no.po, ja.po).
Load all .po files in your Godot project settings.