I'm starting provide i18n/l10n to gvfs programs (gvfs-[cat|copy| less...]). Here is the initial work on gvfs-cat. Some comments on changes... Index: programs/Makefile.am =================================================================== --- programs/Makefile.am (revisione 1087) +++ programs/Makefile.am (copia locale) @@ -1,30 +1,31 @@ NULL = -INCLUDES = \ - -I$(top_srcdir) \ - -I$(top_builddir) \ - $(GLIB_CFLAGS) \ +INCLUDES = \ + -I$(top_srcdir) \ + -I$(top_builddir) \ + $(GLIB_CFLAGS) \ + -DGVFS_LOCALEDIR=\""$(localedir)"\" \ -DG_DISABLE_DEPRECATED Define and use GVFS_LOCALEDIR in order to get translations, of course Index: programs/gvfs-cat.c =================================================================== --- programs/gvfs-cat.c (revisione 1087) +++ programs/gvfs-cat.c (copia locale) @@ -28,10 +28,14 @@ #include <errno.h> #include <glib.h> +#include <glib/gi18n.h> #include <gio/gio.h> +static gchar **locations = NULL; + static GOptionEntry entries[] = { + {G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &locations, "locations", NULL}, { NULL } }; Added a "locations" option entry. Note that gvfs-cat don't use any command line option, this is useful below to check if you are providing a location to cat an print a warning message. Note also that, from Glib API refs: "Using G_OPTION_REMAINING instead of simply scanning argv for leftover arguments has the advantage that GOption takes care of necessary encoding conversions for strings or filenames." See below for this too. I've just a doubt: GOption API provides G_OPTION_ARG_STRING_ARRAY and G_OPTION_ARG_FILENAME_ARRAY types. Now that GIO is in glib, shouldn't G_OPTION_ARG_FILENAME_ARRAY be able to manage URIs? - context = g_option_context_new ("- output files at <location>"); + /* Translators: this message will appear immediately after the */ + /* usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE> */ + context = g_option_context_new (_("LOCATION... - concatenate LOCATIONS to standard output")); + + /* Translators: this message will appear after the usage string */ + /* and before the list of options. */ + summary = g_strconcat (_("Concatenate files at locations and print " + "to the standard output. Works just like " + "the traditional cat utility, but using " + "gvfs location instead locale files: for " + "example you can use something like " + "smb://server/resource/file.txt " + "as location to concatenate."), + "\n\n", + _("Note: none of the cat option is supported."), + NULL); + + g_option_context_set_summary (context, summary); Changed the usage string to match GNU tools standards and cat(1) --help, added a summary explaining more stuff. Please review and suggest better phrase (for example is "using gvfs location" a proper description? is "concatenate LOCATIONS and print") - - if (argc > 1) + g_free (summary); + + if (!locations) { - int i; - - for (i = 1; i < argc; i++) { - file = g_file_new_for_commandline_arg (argv[i]); - cat (file); - g_object_unref (file); - } + g_printerr (_("%s: missing locations"), argv[0]); + g_printerr ("\n"); + g_printerr (_("Try \"%s --help\" for more information."), argv[0]); + g_printerr ("\n"); + return 1; } Use locations option to check if we have any location to cat. Of course this breaks the cat(1) behavior, but I think you should use cat(1) if you simply need to concatenate stdin to stdout... + int i = 0; + + do { + file = g_file_new_for_commandline_arg (locations[i]); + cat (file); + g_object_unref (file); + } while (locations[++i]!=NULL) ; + return 0; } Also use the locations option to pass URI to cat; changed the previous `for` with a `do..while` A final note about error messages: currently gvfs-cat prints something like: $ gvfs-cat smb://server/file.txt Error opening file: No such file or directory IMHO could be better prepend the program name and the file name (this is the behavior of plain cat(1)) $ gvfs-cat smb://server/file.txt gvfs-cat: smb://server/file.txt: No such file or directory PS of course could be interesting add some cat(1) options, such as -n (number all output lines), -E (display $ at end of each line), -T (display TAB characters as ^I) and -s (never more than one single blank line). OK to open a bug and add commented GOptionExtry copying switch and comments from `cat --help`? PPS the Italian translation is updated in attached patch, so you can run `LANG=it LANGUAGE=it gvfs-cat --help` and see the message translated.
Attachment:
gvfs-cat-i18n.diff.gz
Description: GNU Zip compressed data