package i18n /* #include #include #include static void init_i18n(const char* domain, const char* localedir) { setlocale(LC_ALL, ""); bindtextdomain(domain, localedir); bind_textdomain_codeset(domain, "UTF-8"); textdomain(domain); } */ import "C" import ( "log" "unsafe" ) func Init(domain, localeDir string) { cDomain := C.CString(domain) defer C.free(unsafe.Pointer(cDomain)) cDir := C.CString(localeDir) defer C.free(unsafe.Pointer(cDir)) log.Println("initialize localization for domain", domain, "with directory", localeDir) C.init_i18n(cDomain, cDir) } func T(msgid string) string { c := C.CString(msgid) defer C.free(unsafe.Pointer(c)) return C.GoString(C.gettext(c)) }