mcg/internal/i18n/i18n.go

38 lines
732 B
Go

package i18n
/*
#include <locale.h>
#include <stdlib.h>
#include <libintl.h>
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))
}