ported ext/gettext