extern int _nl_msg_cat_cntr;
++_nl_msg_cat_cntr;
+# elif defined(DYNAMIC_GETTEXT)
+ // Same thing when gettext is loaded at runtime.
+ if (dyn_libintl_nl_msg_cat_cntr != NULL)
+ ++*dyn_libintl_nl_msg_cat_cntr;
# endif
// Reset $LC_ALL, otherwise it would overrule everything.
vim_setenv((char_u *)"LC_ALL", (char_u *)"");
char *(*dyn_libintl_bind_textdomain_codeset)(const char *, const char *)
= null_libintl_bind_textdomain_codeset;
int (*dyn_libintl_wputenv)(const wchar_t *) = null_libintl_wputenv;
+int *dyn_libintl_nl_msg_cat_cntr = NULL;
int
dyn_libintl_init(void)
if (dyn_libintl_wputenv == NULL || dyn_libintl_wputenv == _wputenv)
dyn_libintl_wputenv = null_libintl_wputenv;
+ // The _nl_msg_cat_cntr variable is optional. It is used to make gettext
+ // drop the translations it cached.
+ dyn_libintl_nl_msg_cat_cntr = (int *)GetProcAddress(hLibintlDLL,
+ "_nl_msg_cat_cntr");
+
return 1;
}
dyn_libintl_bindtextdomain = null_libintl_bindtextdomain;
dyn_libintl_bind_textdomain_codeset = null_libintl_bind_textdomain_codeset;
dyn_libintl_wputenv = null_libintl_wputenv;
+ dyn_libintl_nl_msg_cat_cntr = NULL;
}
static char *
extern char *(*dyn_libintl_bind_textdomain_codeset)(const char *domainname, const char *codeset);
extern char *(*dyn_libintl_textdomain)(const char *domainname);
extern int (*dyn_libintl_wputenv)(const wchar_t *envstring);
+extern int *dyn_libintl_nl_msg_cat_cntr;
#endif