pnorman / ogr2osm

pnorman's version of UVM's Rewrite of ogr2osm
Other
78 stars 46 forks source link

Translation file locations #8

Closed pnorman closed 11 years ago

pnorman commented 12 years ago

the error error: Could not load translation method '%s'. Translation script must be in your current directory, or in the translations/ subdirectory of your current or ogr2osm.py directory. does not reflect where we look for translation scripts

skorasaurus commented 12 years ago

This is a nasty bug. Was this a regression introduced in an updated commit (if so, which one?) or did this feature never work ? I've also tried the newest (March 28th,2012) release of Andrew's uvm and also experienced the same bug no matter whether I put it in the translations directory or in the same folder as ogr2osm.py

pnorman commented 12 years ago

It's not a regression in my version. I'm not sure if the bug is exactly the same with the SVN version but there's always been oddities around the path and where translations are found

simon04 commented 11 years ago

The following patch should fix this bug. In addition, import and syntax error are reported differently:

diff --git a/ogr2osm.py b/ogr2osm.py
index e773747..4f48b8b 100755
--- a/ogr2osm.py
+++ b/ogr2osm.py
@@ -188,7 +188,7 @@ if options.translationMethod:
         # first check translations in the subdir translations of cwd
         sys.path.insert(0, os.path.join(os.getcwd(), "translations"))
         # then check subdir of script dir
-        sys.path.insert(1, os.path.join(os.path.abspath(__file__), "translations"))
+        sys.path.insert(1, os.path.join(os.path.dirname(__file__), "translations"))
         # (the cwd will also be checked implicityly)

     # strip .py if present, as import wants just the module name
@@ -197,11 +197,16 @@ if options.translationMethod:

     try:
         translations = __import__(options.translationMethod)
-    except:
+    except ImportError as e:
         parser.error("Could not load translation method '%s'. Translation "
                "script must be in your current directory, or in the "
                "translations/ subdirectory of your current or ogr2osm.py "
-               "directory.") % (options.translationMethod)
+               "directory. The following directories have been considered: %s"
+               % (options.translationMethod, str(sys.path)))
+    except SyntaxError as e:
+        parser.error("Syntax error in '%s'. Translation script is malformed:\n%s"
+               % (options.translationMethod, e))
     l.info("Successfully loaded '%s' translation method ('%s')."
            % (options.translationMethod, os.path.realpath(translations.__file__)))
 else: