This is an old thread, but I’m posting in case anyone finds this particular solution useful.
1. Don’t try to translate forms. Instead, create a separate form for each language (create one form then duplicate it for each translation). It’s a lot less bother, saves a ton of database calls (and rows), and enables easy routing of separate language forms to separate admin staff if needs be.
2. That just leaves the global form messages which you find on Ninja Forms’ Settings screen. First, edit them to taste. Next, copy and paste each one into its own line in functions.php – here’s an example :
__( 'String 1 goes here', 'ninja-forms' );
__( 'String 2 goes here', 'ninja-forms' ); etc.
All that does is put the string somewhere WPML can see and scan it. You need one of those for each string, and use ‘ninja-forms’ for the text domain. Now, in WPML, scan your theme for strings. Presto, you can now translate each string in WPML, and the correct translation will be served on the front end. You can then remove the string(s) from functions.php if you wish. If you decide to change any of the messages, you’ll need to update functions.php with the new string(s), re-scan your theme, and translate it in WPML.