Have the command line 'synfig' tool run 'setlocale()' whether or not gettext is avail...
[synfig.git] / synfig-core / trunk / src / tool / main.cpp
index 8141c00..afda522 100644 (file)
@@ -35,6 +35,7 @@
 #include <list>
 #include <ETL/clock>
 #include <algorithm>
+#include <cstring>
 
 #include <synfig/loadcanvas.h>
 #include <synfig/savecanvas.h>
@@ -57,6 +58,14 @@ using namespace synfig;
 
 /* === M A C R O S ========================================================= */
 
+#ifdef ENABLE_NLS
+#undef _
+#define _(x) gettext(x)
+#else
+#undef _
+#define _(x) (x)
+#endif
+
 enum exit_code
 {
        SYNFIGTOOL_OK                           = 0,
@@ -836,6 +845,13 @@ int main(int argc, char *argv[])
        arg_list_t arg_list;
        job_list_t job_list;
 
+       setlocale(LC_ALL, "");
+
+#ifdef ENABLE_NLS
+       bindtextdomain("synfig", LOCALEDIR);
+       textdomain("synfig");
+#endif
+
        progname=argv[0];
        Progress p(argv[0]);
 
@@ -958,7 +974,8 @@ int main(int argc, char *argv[])
                        if(target_name.empty() && !job_list.front().outfilename.empty())
                        {
                                VERBOSE_OUT(3)<<_("Target name undefined, attempting to figure it out")<<endl;
-                               string ext=job_list.front().outfilename.substr(job_list.front().outfilename.rfind('.')+1);
+                               string ext = filename_extension(job_list.front().outfilename);
+                               if (ext.length()) ext = ext.substr(1);
                                if(Target::ext_book().count(ext))
                                        target_name=Target::ext_book()[ext];
                                else
@@ -978,9 +995,7 @@ int main(int argc, char *argv[])
                        // given input filename. (ie: change the extension)
                        if(job_list.front().outfilename.empty())
                        {
-                               job_list.front().outfilename=job_list.front().filename;
-                               job_list.front().outfilename.erase(find(job_list.front().outfilename.begin(),job_list.front().outfilename.end(),'.'),job_list.front().outfilename.end());
-                               job_list.front().outfilename+='.';
+                               job_list.front().outfilename = filename_sans_extension(job_list.front().filename) + '.';
                                if(Target::book().count(target_name))
                                        job_list.front().outfilename+=Target::book()[target_name].second;
                                else