We need a robuster architecture for our unit settings
The problems we have now:
- We have both Formatter and unit selecting code scattered in c++ side, we should try to unify that
- In settings page, we set unit by their i18n()-ed value directly into config file, but in Formatter we compare them with English string. I think store localised string in config file is a bad idea
- Code duplication in settings page
- The current bindings' method is a bit awkward