Stack Exchange network consists of 183 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.
The solutions seems good to me. I would suggest to use a contrib module config_permissions drupal.org/project/config_perms to extend the permissions. you can also create the custom permissions as well.
I'm guessing it's because the en recipe node id is 10, and it doesn't load the translated node. >> Yup the translated node will also its dedicated node id.So for fr language you will have to pass the nid of fr language recipee node.
Yup if the module name is yop then hook_menu should be yop_menu() {} The callback function name can be anything but as per drupal coding standards it should be prefixed with your module name i.e. yop in your case.