When calling
translator.save_xml(File.join(save_file_name))
the results are stored relative to where you defined the output_folder as defined in the object instantiation.
translator = BuildingSync::Translator.new(xml_file, output_folder, epw_file_path)
If passing in a nonabsolute path, then IMO it should be relative to where you ran the script, not relative to the location of the object instantiation.