refactoring i18n