V tom shrnutí jsi nezmínil, jakým způsobem definuješ řetězce pro překladový katalog. Je jasné, že není potřeba překládat všechny řeťězce a ty které přeložené býti mají, se obalí "funkcí", která je pak za běhu nahrazuje překladem z katalogu:
Console.WriteLine("My name is" + " Enzo");
->
Console.WriteLine(Catalog.GetString("My name is {0}"), "Enzo");
Jméno a umístění katalogu, se určí předem:
Catalog.Init("i18n","./locale");
xgettext pak umí vytahat tyto řetězce do vlastního katalogu, který je možné třeba v Poeditu přeložit. Poedit vlastně umí všechno, co je třeba se základním .po souborem udělat, včetně exportu do *.mo.
Katalog s překladem se v zadaném adresáři hledá podle systémové proměnné $LANGUAGE, resp. $LANG, tedy hledá se příslušný adresář pro daný jazyk, když se nenajde dostaneš chybu a překlad se nenačte, např.:
(process:26268): Gtk-WARNING **: Locale not supported by C library.
Using the fallback 'C' locale.
Překlady aplikací se běžně dávají do
/usr/share/locale/..., do
locale-langpack se strkají lokalizace systému, tedy výchozích aplikací prostředí.
Nejsem na překlady expert, ještě mám co studovat, ale tohle jsem vypozoroval při používání v Pythonu