
рдПрдХрд▓-рдЧрддрд┐рд╡рд┐рдзрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рднрд╛рд╖рд╛ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рд╕реНрдХреНрд░реАрди рдХреЗ рдвреЗрд░ рдХреЛ рд░реАрд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд╣ рд░рд╣рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЙрд╕рдиреЗ рднрд╛рд╖рд╛ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдерд╛ред рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд┐рдЫрд▓реА рд╕реНрдХреНрд░реАрди рдкрд░ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рддреБрд░рдВрдд рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдзрди рдФрд░ рдмреНрдпрд╛рдЬ рдХреА рд░рдХрдо рдбрд┐рдЬрд╛рдЗрдирд░реЛрдВ рдХреЛ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИред

рдХреНрдпрд╛ рдЪрд░реНрдЪрд╛ рд╣реЛрдЧреА рдФрд░ рдХреНрдпрд╛ рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА?
рдЖрдЧреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рд╣реЛрдЧрд╛:
- рд╕рд┐рджреНрдзрд╛рдВрдд рдЬреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╕реНрд╡рд░реВрдкрд┐рдд рдЖрдЙрдЯрдкреБрдЯ, рдФрд░ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рд╡рд╛рд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдХреБрдЫ рдРрд╕рд╛ рдЬреЛ рдЖрдкрдХреЛ рдЕрдкрдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред
- рд╕рдВрд╕рд╛рдзрди рд╕реНрдЯреНрд░рд┐рдВрдЧ, рд╡реЗрдХреНрдЯрд░ рдФрд░ рдЕрдиреНрдпред рдХрд┐рд╕ рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрд░рдмреА рдореЗрдВ рдХреМрди рд╕реЗ рдЪрд┐рддреНрд░ рджрд╛рдИрдВ рд╕реЗ рдмрд╛рдИрдВ рдУрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдХреМрди рд╕реЗ рдирд╣реАрдВ, рдФрд░ рдЕрдиреНрдп рд╕реВрдХреНрд╖реНрдорддрд╛рдПрдВ рд╣реИрдВред
- рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдХреЗрдВрджреНрд░реАрдХреГрдд рдЕрдиреБрд╡рд╛рдж рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ ред рдЗрд╕реЗ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рддрд╛рдХрд┐ рд╣рд░ рдХреЛрдИ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЖрдИрдУрдПрд╕ рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рднреА рдЬреА рд╕рдХреЗред
рдФрд░ рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ:
- рдЕрднреНрдпрд╛рд╕ред рд╕рдорд╕реНрдпрд╛, рдЗрд╕рдХреА рд╕реАрдорд╛рдУрдВ рдФрд░ рдЖрд░реЗрдЦ, рдЙрджрд╛рд╣рд░рдг рдФрд░ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдзрд╛рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
- рдПрд╕рдбреАрдХреЗ рдПрдкреАрдЖрдИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
- рд╡рд┐рднрд┐рдиреНрди рдХреНрд╖реЗрддреНрд░реАрдп рдорд╛рдирдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдкреНрд░рд╛рд░реВрдкрдг рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ , рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбрд┐рдЬрд╛рдЗрдирд░реЛрдВ рдХреЛ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╣рдо рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдХреНрд░реАрди рд╣реЛ, рдФрд░ рд╣рдо рдЗрд╕рдореЗрдВ рдХреБрдЫ рдирдП рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рднрд╛рд╖рд╛ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдФрд░ рджреВрд╕рд░рд╛ рдЙрд╕ рдореБрджреНрд░рд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдкреИрд╕реЗ рдХреА рдорд╛рддреНрд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИред рдпрд╣рд╛рдБ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИред


рдкрд╛рда рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдФрд░ рд▓реЗрдЖрдЙрдЯ рдХреЛ рджрд╛рдИрдВ рд╕реЗ рдмрд╛рдИрдВ рдУрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░реВрдк рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЪрдпрдирд┐рдд рд▓реЛрдХреЗрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдм рдХреБрдЫ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛред

рд╡рд╛рд╕реНрддреБ рд╕рдорд╛рдзрд╛рди
рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рдПрдХрд▓-рдЧрддрд┐рд╡рд┐рдзрд┐ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдлрд┐рд░ рднрд╛рд╖рд╛ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рддрдВрддреНрд░ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

SettingsInteractor
рд╡рд░реНрддрдорд╛рди рднрд╛рд╖рд╛ рдореВрд▓реНрдп рдХрд╛ рд╕реНрд░реЛрдд рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдЗрд╕ рдореВрд▓реНрдп рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЗрд╕реЗ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдЕрдкрдбреЗрдЯ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддрд╛ рд╣реИред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреГрдердХреНрдХрд░рдг рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ SettingsInteractor
рдкрд░ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдореВрд░реНрддрддрд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдЖрд░реЗрдЦ рдореЗрдВ, рдЧреИрд░-рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╡рд░рдг рдЫреЛрдбрд╝ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдирд┐рд░реНрдорд╛рдг рдореЗрдВ AppActivity
рд╕рдВрджрд░реНрдн рдХреЛ рдПрдХ рдирдП рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрддреА рд╣реИ рддрд╛рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрдпрдирд┐рдд рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗред
override fun attachBaseContext(base: Context) { super.attachBaseContext(applySelectedAppLanguage(base)) } private fun applySelectedAppLanguage(context: Context): Context { val locale = settingsInteractor.getUserSelectedLanguageBlocking() val newConfig = Configuration(context.resources.configuration) Locale.setDefault(locale) newConfig.setLocale(locale) return context.createConfigurationContext(newConfig) }
AppPresenter
рднрд╛рд╖рд╛ рдЕрджреНрдпрддрдиреЛрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рджреГрд╢реНрдп рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред
override fun onFirstViewAttach() { super.onFirstViewAttach() subscribeToLanguageUpdates() } private fun subscribeToLanguageUpdates() { settingsInteractor .getUserSelectedLanguageUpdates() .subscribe( { newLang -> viewState.applyNewAppLanguage(newLang) }, { error -> errorHandler.handle(error) } ) .disposeOnDestroy() }
рднрд╛рд╖рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рд╕реВрдЪрдирд╛ AppActivity
рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред
override fun applyNewAppLanguage(lang: Locale) = recreate()

AppActivity
рдЖрд╡реЗрджрди рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╣реИред рдЕрдиреНрдп рд╕рднреА рд╕реНрдХреНрд░реАрди рдХреЛ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рдкреБрди: рдмрдирд╛рддреЗ рд╕рдордп, рд╕реНрдХреНрд░реАрди рдХреЗ рдвреЗрд░ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдкрд┐рдЫрд▓реЗ рд╕реНрдХреНрд░реАрди рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ, рддреЛ рдЙрдирдХрд╛ рдкреБрдирд░реНрдирд┐рдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЕрдиреБрд╡рд╛рджрд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рднрд╛рд╖рд╛ рдЪрдпрди рд╕реВрдЪреА рдкрд░ рд░рд╣реЗрдЧрд╛ рдФрд░ рдЙрд╕рдХреА рдкрд╕рдВрдж рдХрд╛ рдкрд░рд┐рдгрд╛рдо рддреБрд░рдВрдд рджреЗрдЦреЗрдЧрд╛ред
рд╕рдВрджрд░реНрдн рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ - рд╕рдВрдЦреНрдпрд╛, рдзрди, рдмреНрдпрд╛рдЬред рдкреНрд░рддреНрдпреЗрдХ рджреГрд╢реНрдп рдХреЛ рдПрдХ рдЕрд▓рдЧ рдШрдЯрдХ рдХреЛ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рд╕реМрдВрдкрдиреЗ рджреЗрдВ, рдЗрд╕реЗ UiLocalizer
рдХрд╣рддреЗ рд╣реИрдВред

UiLocalizer
рдХрд┐рд╕реА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд UiLocalizer
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
private var numberFormat = NumberFormat.getNumberInstance(lang) private var percentFormat = NumberFormat.getPercentInstance(lang) private fun getNumberFormatForCurrency(currency: Currency) = NumberFormat .getCurrencyInstance(lang) .also { it.currency = currency }
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореБрджреНрд░рд╛ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрджрд┐ рдЖрдк рд╕реАрдкреАрдпреВ рд╕рд╛рдЗрдХрд┐рд▓ рдФрд░ рдореЗрдореЛрд░реА рдХреЗ рдмрд┐рдЯреНрд╕ рдХреЛ рдмрдЪрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдореБрджреНрд░рд╛ рдФрд░ рднрд╛рд╖рд╛ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХрд╛ рдореБрдЦреНрдп рдФрд░ рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рддреЛ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рдХреИрд╢ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рднрд╛рд╖рд╛рдУрдВ рдФрд░ рдореБрджреНрд░рд╛рдУрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡
Locale
рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдПрдХ рднрд╛рд╖рд╛ рдЯреИрдЧ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ , рдЬрд┐рд╕рдореЗрдВ рджреЛ-рдЕрдХреНрд╖рд░ рднрд╛рд╖рд╛ рдХреЛрдб рдФрд░ рджреЛ-рдЕрдХреНрд╖рд░ рдХреНрд╖реЗрддреНрд░ рдХреЛрдб рд╣реЛрддреЗ рд╣реИрдВред рдФрд░ Currency
рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рддреАрди-рдЕрдХреНрд╖рд░ рд╡рд╛рд▓реЗ рдЖрдИрдПрд╕рдУ рдХреЛрдб рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВред рдЗрд╕ рд░реВрдк рдореЗрдВ, рднрд╛рд╖рд╛ рдФрд░ рдореБрджреНрд░рд╛ рдХреЛ рдбрд┐рд╕реНрдХ рдкрд░ рд╕рд╣реЗрдЬрдиреЗ рдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдлрд┐рд░ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдпрд╣рд╛рдБ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред
рдХреНрд╖реЗрддреНрд░реАрдп рдорд╛рдирдХреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЙрд╕ рд╕реНрдерд┐рддрд┐ рд╕реЗ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдереАред рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдореБрджреНрд░рд╛ рдкреНрд░рддреАрдХ рдпрд╛ рдЗрд╕рдХреЗ рддреАрди-рдЕрдХреНрд╖рд░ рдХреЛрдб рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдирдХрд╛рд░рд╛рддреНрдордХ рдореМрджреНрд░рд┐рдХ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╢реВрдиреНрдп рдЪрд┐рд╣реНрди рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ, рдФрд░ рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреЛрд╖реНрдардХ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рдкреНрд░рддрд┐рд╢рдд рд╕рдВрдХреЗрдд рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╣ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐, рдХреНрд╖реЗрддреНрд░реАрдп рдкреИрдЯрд░реНрди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдФрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрд╕рд░реНрдЧ рдФрд░ рдкреНрд░рддреНрдпрдп рд╣реЛрддреЗ рд╣реИрдВ, рдПрдХ рд╣рдЬрд╛рд░ рд╡рд┐рднрд╛рдЬрдХ рдФрд░ рдПрдХ рджрд╢рдорд▓рд╡ рд╡рд┐рднрд╛рдЬрдХ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рд╡реЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред
рд╕рдВрдЦреНрдпрд╛
рдореБрджреНрд░рд╛
рдмреНрдпрд╛рдЬ
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Android SDK рдФрд░ JDK рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд░реВрдкрдг рдкрд░рд┐рдгрд╛рдо рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рднреА рд╡рд┐рдХрд▓реНрдк рд╕рд╣реА рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдЫ рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЬрдм рд╣рдо рдХреБрдЫ рдорд╛рдиреЛрдВ рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ NumberFormat
рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ DecimalFormat
рдХреА DecimalFormat
рд╣реИрдВ рдЬреЛ рдмрд╕ рд╡рд┐рднрд┐рдиреНрди рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ DecimalFormat
рдкреНрд░рдХрд╛рд░ рдкрд░ DecimalFormat
рдХрд░рдХреЗ рдФрд░ рдЗрд╕рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рд╕рдм рдХреБрдЫ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдмреЗрд╣рддрд░ рдпрд╣реА рд╣реИ рдХрд┐ рдкреВрдЬрд╛-рдкрд╛рда рдХреЛ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдПред

рдЖрдк рд╡рд┐рд╡рд┐рдзрддрд╛ рдХрд╛ рдЖрдирдВрдж рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рднреА рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╕рднреА рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдореБрджреНрд░рд╛ рдкреНрд░рддреАрдХ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

рдЕрдВрдд рдореЗрдВ
рд╕рдорд╛рдзрд╛рди рдХреА рд╕рд╛рдорд╛рдиреНрдп рдпреЛрдЬрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред

AppActivity
рдЬреАрд╡рди рдЪрдХреНрд░ рдкреВрд░реЗ рдЖрд╡реЗрджрди рдХрд╛ рдЬреАрд╡рди рдЪрдХреНрд░ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдкреВрд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдФрд░ рдЪрдпрдирд┐рдд рднрд╛рд╖рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдФрд░ рдЪреВрдВрдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЧрддрд┐рд╡рд┐рдзрд┐ рд╣реИ, рднрд╛рд╖рд╛ рдХреЛ рдПрдХ рд╕реНрдерд╛рди рдкрд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рдХреЛ рд░рдЦрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ - AppPresenter
ред
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рджреЗрдЦрд╛, рдЖрдЙрдЯрдкреБрдЯ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреНрд╖реЗрддреНрд░реАрдп рдкреНрд░рд╛рд░реВрдк рддреБрдЪреНрдЫ рдирд╣реАрдВ рд╣реИрдВред рдЖрдкрдХреЛ рд╕рднреА рдЕрд╡рд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдЦрд╛рдХрд╛ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрд╕рдбреАрдХреЗ рдХреЗ рдкреНрд░рд╛рд░реВрдкрдг рдХреЛ рд╕реМрдВрдкрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдФрд░ рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рд╕рдВрдЦреНрдпрд╛ рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдПрдЧреА, рдФрд░ рд▓реЗрдЖрдЙрдЯ рдкрд░ рдирд╣реАрдВ рдЦреАрдВрдЪреА рдЬрд╛рдПрдЧреАред
рдХреНрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ? (рдмреЛрдирд╕)
рд╕рдордп рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдирд┐рдореНрди рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
android { ... buildTypes { debug { pseudoLocalesEnabled true } } ... }
рдлреЛрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдЫрджреНрдо рд▓реЛрдХреЗрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред

рдФрд░ рдпрд╣ рджреЗрдЦреЗрдВ рдХрд┐ рд▓рдВрдмреЗ рдкрд╛рда рдХреЗ рдХрд╛рд░рдг рд▓реЗрдЖрдЙрдЯ рдХреИрд╕реЗ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ UI рдХреЗ рдХреБрдЫ рддрддреНрд╡ рд╣рдардкреВрд░реНрд╡рдХ рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рд╕рдВрджрд░реНрдн рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ рддреЛ рдЫрджреНрдо рд╕реНрдерд╛рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдореЗрдВ рд╣реИред рдЖрдк рд╕рдВрджрд░реНрдн рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрдВрджрд░ рднрд╛рд╖рд╛ рдЪрдпрди рд╕реВрдЪреА рдореЗрдВ en-XA
рдФрд░ ar-XB
рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред
рд╡рд╣ рд╕рдм рд╣реИред рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдФрд░ рдЕрдЪреНрдЫрд╛ рдореВрдб рд╣реИ!
