i18n implementation (#55)