Advanced language menu and locale detection.

Fix #8
Fix #21
Fix #9