Various cleanup in i18n code (having funcs implemented in two different places is tricky, you quickly forget to add/edit one, we already have this problem with ugly bplayer stub... e.g. since r53938, BLF_locale_explode was not implemented in non-WITH_INTERNATIONAL builds). Also tried to simplify #ifdef's here...
This commit is contained in:
@@ -33,6 +33,8 @@
|
||||
#ifndef __BLF_TRANSLATION_H__
|
||||
#define __BLF_TRANSLATION_H__
|
||||
|
||||
#include "BLI_utildefines.h" /* for bool type */
|
||||
|
||||
#define TEXT_DOMAIN_NAME "blender"
|
||||
|
||||
/* blf_lang.c */
|
||||
@@ -53,7 +55,8 @@ const char *BLF_lang_get(void);
|
||||
|
||||
/* Get locale's elements (if relevant pointer is not NULL and element actually exists, e.g. if there is no variant,
|
||||
* *variant and *language_variant will always be NULL).
|
||||
* Non-null elements are always MEM_mallocN'ed, it's the caller's responsibility to free them.
|
||||
* Non-null elements are always MEM_mallocN'ed, it's the caller's responsibility to free them.
|
||||
* NOTE: Always available, even in non-WITH_INTERNATIONAL builds.
|
||||
*/
|
||||
void BLF_locale_explode(const char *locale, char **language, char **country, char **variant,
|
||||
char **language_country, char **language_variant);
|
||||
@@ -63,16 +66,14 @@ struct EnumPropertyItem *BLF_RNA_lang_enum_properties(void);
|
||||
|
||||
/* blf_translation.c */
|
||||
|
||||
#ifdef WITH_INTERNATIONAL
|
||||
unsigned char *BLF_get_unifont(int *unifont_size);
|
||||
void BLF_free_unifont(void);
|
||||
#endif
|
||||
|
||||
const char *BLF_pgettext(const char *msgctxt, const char *msgid);
|
||||
|
||||
/* translation */
|
||||
int BLF_translate_iface(void);
|
||||
int BLF_translate_tooltips(void);
|
||||
bool BLF_translate_iface(void);
|
||||
bool BLF_translate_tooltips(void);
|
||||
const char *BLF_translate_do_iface(const char *msgctxt, const char *msgid);
|
||||
const char *BLF_translate_do_tooltip(const char *msgctxt, const char *msgid);
|
||||
|
||||
@@ -83,17 +84,17 @@ const char *BLF_translate_do_tooltip(const char *msgctxt, const char *msgid);
|
||||
|
||||
/* Those macros should be used everywhere in UI code. */
|
||||
#ifdef WITH_INTERNATIONAL
|
||||
/* #define _(msgid) BLF_gettext(msgid) */
|
||||
#define IFACE_(msgid) BLF_translate_do_iface(NULL, msgid)
|
||||
#define TIP_(msgid) BLF_translate_do_tooltip(NULL, msgid)
|
||||
#define CTX_IFACE_(context, msgid) BLF_translate_do_iface(context, msgid)
|
||||
#define CTX_TIP_(context, msgid) BLF_translate_do_tooltip(context, msgid)
|
||||
/*# define _(msgid) BLF_gettext(msgid) */
|
||||
# define IFACE_(msgid) BLF_translate_do_iface(NULL, msgid)
|
||||
# define TIP_(msgid) BLF_translate_do_tooltip(NULL, msgid)
|
||||
# define CTX_IFACE_(context, msgid) BLF_translate_do_iface(context, msgid)
|
||||
# define CTX_TIP_(context, msgid) BLF_translate_do_tooltip(context, msgid)
|
||||
#else
|
||||
/* #define _(msgid) msgid */
|
||||
#define IFACE_(msgid) msgid
|
||||
#define TIP_(msgid) msgid
|
||||
#define CTX_IFACE_(context, msgid) msgid
|
||||
#define CTX_TIP_(context, msgid) msgid
|
||||
/*# define _(msgid) msgid */
|
||||
# define IFACE_(msgid) msgid
|
||||
# define TIP_(msgid) msgid
|
||||
# define CTX_IFACE_(context, msgid) msgid
|
||||
# define CTX_TIP_(context, msgid) msgid
|
||||
#endif
|
||||
|
||||
/* Helper macro, when we want to define a same msgid for multiple msgctxt...
|
||||
@@ -160,7 +161,7 @@ typedef struct
|
||||
|
||||
#define BLF_I18NCONTEXTS_ITEM(ctxt_id, py_id) {#ctxt_id, py_id, ctxt_id}
|
||||
|
||||
#define BLF_I18NCONTEXTS_DESC { \
|
||||
#define BLF_I18NCONTEXTS_DESC { \
|
||||
BLF_I18NCONTEXTS_ITEM(BLF_I18NCONTEXT_DEFAULT, "default"), \
|
||||
BLF_I18NCONTEXTS_ITEM(BLF_I18NCONTEXT_OPERATOR_DEFAULT, "operator_default"), \
|
||||
BLF_I18NCONTEXTS_ITEM(BLF_I18NCONTEXT_ID_ACTION, "id_action"), \
|
||||
@@ -198,6 +199,4 @@ typedef struct
|
||||
{NULL, NULL, NULL} \
|
||||
}
|
||||
|
||||
//#undef _BLF_I18NCONTEXTS_ITEM
|
||||
|
||||
#endif /* __BLF_TRANSLATION_H__ */
|
||||
|
||||
@@ -29,18 +29,16 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "RNA_types.h"
|
||||
|
||||
#include "BLF_translation.h" /* own include */
|
||||
|
||||
#include "BLI_utildefines.h"
|
||||
|
||||
#ifdef WITH_INTERNATIONAL
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "boost_locale_wrapper.h"
|
||||
#include "BLI_fileops.h"
|
||||
#include "BLI_linklist.h"
|
||||
#include "BLI_path_util.h"
|
||||
#include "BLI_string.h"
|
||||
|
||||
#include "BKE_global.h"
|
||||
|
||||
@@ -48,10 +46,9 @@
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
#include "BLI_fileops.h"
|
||||
#include "BLI_linklist.h"
|
||||
#include "BLI_path_util.h"
|
||||
#include "BLI_string.h"
|
||||
#ifdef WITH_INTERNATIONAL
|
||||
|
||||
#include "boost_locale_wrapper.h"
|
||||
|
||||
/* Locale options. */
|
||||
static const char **locales = NULL;
|
||||
@@ -59,9 +56,6 @@ static int num_locales = 0;
|
||||
static EnumPropertyItem *locales_menu = NULL;
|
||||
static int num_locales_menu = 0;
|
||||
|
||||
#define ULANGUAGE ((U.language >= 0 && U.language < num_locales) ? U.language : 0)
|
||||
#define LOCALE(_id) (locales ? locales[(_id)] : "")
|
||||
|
||||
static void free_locales(void)
|
||||
{
|
||||
if (locales) {
|
||||
@@ -177,14 +171,20 @@ static void fill_locales(void)
|
||||
|
||||
BLI_file_free_lines(lines);
|
||||
}
|
||||
#endif /* WITH_INTERNATIONAL */
|
||||
|
||||
EnumPropertyItem *BLF_RNA_lang_enum_properties(void)
|
||||
{
|
||||
#ifdef WITH_INTERNATIONAL
|
||||
return locales_menu;
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
void BLF_lang_init(void)
|
||||
{
|
||||
#ifdef WITH_INTERNATIONAL
|
||||
char *messagepath = BLI_get_folder(BLENDER_DATAFILES, "locale");
|
||||
|
||||
if (messagepath) {
|
||||
@@ -194,15 +194,24 @@ void BLF_lang_init(void)
|
||||
else {
|
||||
printf("%s: 'locale' data path for translations not found, continuing\n", __func__);
|
||||
}
|
||||
#else
|
||||
#endif
|
||||
}
|
||||
|
||||
void BLF_lang_free(void)
|
||||
{
|
||||
#ifdef WITH_INTERNATIONAL
|
||||
free_locales();
|
||||
#else
|
||||
#endif
|
||||
}
|
||||
|
||||
#define ULANGUAGE ((U.language >= 0 && U.language < num_locales) ? U.language : 0)
|
||||
#define LOCALE(_id) (locales ? locales[(_id)] : "")
|
||||
|
||||
void BLF_lang_set(const char *str)
|
||||
{
|
||||
#ifdef WITH_INTERNATIONAL
|
||||
int ulang = ULANGUAGE;
|
||||
const char *short_locale = str ? str : LOCALE(ulang);
|
||||
const char *short_locale_utf8 = NULL;
|
||||
@@ -232,17 +241,24 @@ void BLF_lang_set(const char *str)
|
||||
if (short_locale[0]) {
|
||||
MEM_freeN((void *)short_locale_utf8);
|
||||
}
|
||||
#else
|
||||
(void)str;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Get the current locale (short code, e.g. es_ES). */
|
||||
const char *BLF_lang_get(void)
|
||||
{
|
||||
#ifdef WITH_INTERNATIONAL
|
||||
const char *locale = LOCALE(ULANGUAGE);
|
||||
if (locale[0] == '\0') {
|
||||
/* Default locale, we have to find which one we are actually using! */
|
||||
locale = bl_locale_get();
|
||||
}
|
||||
return locale;
|
||||
#else
|
||||
return "";
|
||||
#endif
|
||||
}
|
||||
|
||||
#undef LOCALE
|
||||
@@ -299,32 +315,3 @@ void BLF_locale_explode(const char *locale, char **language, char **country, cha
|
||||
MEM_freeN(_t);
|
||||
}
|
||||
}
|
||||
|
||||
#else /* ! WITH_INTERNATIONAL */
|
||||
|
||||
struct EnumPropertyItem *BLF_RNA_lang_enum_properties(void)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void BLF_lang_init(void)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
void BLF_lang_free(void)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
void BLF_lang_set(const char *UNUSED(str))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
const char *BLF_lang_get(void)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
#endif /* WITH_INTERNATIONAL */
|
||||
|
||||
@@ -33,28 +33,28 @@
|
||||
|
||||
#include "BLF_translation.h"
|
||||
|
||||
#ifdef WITH_INTERNATIONAL
|
||||
|
||||
#include "boost_locale_wrapper.h"
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
#include "BLI_utildefines.h"
|
||||
#include "BLI_fileops.h"
|
||||
#include "BLI_path_util.h"
|
||||
#include "BLI_string.h"
|
||||
#include "BLI_path_util.h"
|
||||
#include "BLI_fileops.h"
|
||||
|
||||
#include "DNA_userdef_types.h" /* For user settings. */
|
||||
|
||||
#include "BPY_extern.h"
|
||||
|
||||
#ifdef WITH_INTERNATIONAL
|
||||
|
||||
#include "boost_locale_wrapper.h"
|
||||
|
||||
static const char unifont_filename[] = "droidsans.ttf.gz";
|
||||
static unsigned char *unifont_ttf = NULL;
|
||||
static int unifont_size = 0;
|
||||
#endif /* WITH_INTERNATIONAL */
|
||||
|
||||
unsigned char *BLF_get_unifont(int *unifont_size_r)
|
||||
{
|
||||
#ifdef WITH_INTERNATIONAL
|
||||
if (unifont_ttf == NULL) {
|
||||
char *fontpath = BLI_get_folder(BLENDER_DATAFILES, "fonts");
|
||||
if (fontpath) {
|
||||
@@ -72,15 +72,20 @@ unsigned char *BLF_get_unifont(int *unifont_size_r)
|
||||
*unifont_size_r = unifont_size;
|
||||
|
||||
return unifont_ttf;
|
||||
#else
|
||||
(void)unifont_size_r;
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
void BLF_free_unifont(void)
|
||||
{
|
||||
#ifdef WITH_INTERNATIONAL
|
||||
if (unifont_ttf)
|
||||
MEM_freeN(unifont_ttf);
|
||||
}
|
||||
|
||||
#else
|
||||
#endif
|
||||
}
|
||||
|
||||
const char *BLF_pgettext(const char *msgctxt, const char *msgid)
|
||||
{
|
||||
@@ -103,21 +108,21 @@ const char *BLF_pgettext(const char *msgctxt, const char *msgid)
|
||||
#endif
|
||||
}
|
||||
|
||||
int BLF_translate_iface(void)
|
||||
bool BLF_translate_iface(void)
|
||||
{
|
||||
#ifdef WITH_INTERNATIONAL
|
||||
return (U.transopts & USER_DOTRANSLATE) && (U.transopts & USER_TR_IFACE);
|
||||
#else
|
||||
return 0;
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
int BLF_translate_tooltips(void)
|
||||
bool BLF_translate_tooltips(void)
|
||||
{
|
||||
#ifdef WITH_INTERNATIONAL
|
||||
return (U.transopts & USER_DOTRANSLATE) && (U.transopts & USER_TR_TOOLTIPS);
|
||||
#else
|
||||
return 0;
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user