From f346f985dfe1ca800a6828206990fb190db10bed Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Thu, 4 Nov 2010 18:06:09 +0000 Subject: [PATCH] Add filetypes_get_display_name() to get translations for filetype None. git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5366 ea778897-0a13-0410-b9d1-a72fbfd435f5 --- ChangeLog | 6 +++++- src/document.c | 2 +- src/filetypes.c | 14 ++++++++++++-- src/filetypes.h | 10 ++++++++-- src/symbols.c | 3 ++- src/ui_utils.c | 2 +- 6 files changed, 29 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index cc540c6bf..364328aa5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,7 +4,11 @@ Do not translate 'name' field for filetype None because it is used for hash table lookup. This fixes missing files in the Open dialog for the 'All files' filter with non-English locales (thanks to Sardem - FF7). + FF7, fixes #3094771). + * src/filetypes.c, src/filetypes.h, src/document.c, src/symbols.c, + src/ui_utils.c: + Add filetypes_get_display_name() to get translations for filetype + None. 2010-11-02 Nick Treleaven diff --git a/src/document.c b/src/document.c index c261c6895..497689659 100644 --- a/src/document.c +++ b/src/document.c @@ -2526,7 +2526,7 @@ void document_set_filetype(GeanyDocument *doc, GeanyFiletype *type) old_ft = doc->file_type; geany_debug("%s : %s (%s)", (doc->file_name != NULL) ? doc->file_name : "unknown", - (type->name != NULL) ? type->name : "unknown", + type->name, (doc->encoding != NULL) ? doc->encoding : "unknown"); ft_changed = (doc->file_type != type); /* filetype has changed */ diff --git a/src/filetypes.c b/src/filetypes.c index f2af06ecb..fd8bf81c5 100644 --- a/src/filetypes.c +++ b/src/filetypes.c @@ -93,7 +93,8 @@ static void init_builtin_filetypes(void) #define NONE /* these macros are only to ease navigation */ ft = filetypes[GEANY_FILETYPES_NONE]; - /* ft->name must not be translated as it is used for filetype lookup */ + /* ft->name must not be translated as it is used for filetype lookup. + * Use filetypes_get_display_name() instead. */ ft->name = g_strdup("None"); ft->title = g_strdup(_("None")); ft->group = GEANY_FILETYPE_GROUP_NONE; @@ -1359,7 +1360,7 @@ static void compile_regex(GeanyFiletype *ft, regex_t *regex, gchar *regstr) gchar buf[256]; regerror(retval, regex, buf, sizeof buf); ui_set_statusbar(TRUE, _("Bad regex for filetype %s: %s"), - ft->name, buf); + filetypes_get_display_name(ft), buf); } /* regex will be freed in set_error_regex(). */ } @@ -1541,3 +1542,12 @@ void filetypes_reload(void) } +/** Gets @c ft->name or a translation for filetype None. + * @param ft . + * @return . + * @since Geany 0.20 */ +const gchar *filetypes_get_display_name(GeanyFiletype *ft) +{ + return ft->id == GEANY_FILETYPES_NONE ? _("None") : ft->name; +} + diff --git a/src/filetypes.h b/src/filetypes.h index 213c909b1..47295720e 100644 --- a/src/filetypes.h +++ b/src/filetypes.h @@ -118,8 +118,12 @@ struct GeanyFiletype /** Represents the langType of tagmanager (see the table * in tagmanager/parsers.h), -1 represents all, -2 none. */ langType lang; - gchar *name; /**< Short name, e.g. "C". */ - gchar *title; /**< Shown in the file open dialog. E.g. "C source file". */ + /** Untranslated short name, such as "C", "None". + * Must not be translated as it's used for hash table lookups - use + * filetypes_get_display_name() instead. */ + gchar *name; + /** Shown in the file open dialog, such as "C source file". */ + gchar *title; gchar *extension; /**< Default file extension for new files, or @c NULL. */ gchar **pattern; /**< Array of filename-matching wildcard strings. */ gchar *context_action_cmd; @@ -176,6 +180,8 @@ void filetypes_reload(void); GeanyFiletype *filetypes_index(gint idx); +const gchar *filetypes_get_display_name(GeanyFiletype *ft); + GeanyFiletype *filetypes_detect_from_document(GeanyDocument *doc); GeanyFiletype *filetypes_detect_from_extension(const gchar *utf8_filename); diff --git a/src/symbols.c b/src/symbols.c index 543330c3e..364b0be0b 100644 --- a/src/symbols.c +++ b/src/symbols.c @@ -1441,7 +1441,8 @@ void symbols_show_load_tags_dialog(void) if (ft != NULL && symbols_load_global_tags(fname, ft)) /* For translators: the first wildcard is the filetype, the second the filename */ - ui_set_statusbar(TRUE, _("Loaded %s tags file '%s'."), ft->name, utf8_fname); + ui_set_statusbar(TRUE, _("Loaded %s tags file '%s'."), + filetypes_get_display_name(ft), utf8_fname); else ui_set_statusbar(TRUE, _("Could not load tags file '%s'."), utf8_fname); diff --git a/src/ui_utils.c b/src/ui_utils.c index 9fcad3a41..0f27c5ba9 100644 --- a/src/ui_utils.c +++ b/src/ui_utils.c @@ -249,7 +249,7 @@ static void add_statusbar_statistics(GString *stats_str, } break; case 'f': - g_string_append(stats_str, doc->file_type->name); + g_string_append(stats_str, filetypes_get_display_name(doc->file_type)); break; case 'S': symbols_get_current_function(doc, &cur_tag); -- 2.11.4.GIT