„MVVMCross“ tvarko kalbos failų atnaujinimus, naudodama vienkartinį įrišimą tam tikru būdu, ypač kai kalbama apie statinį tekstą iš kalbos failų. Štai išsamus paaiškinimas, kaip tai veikia:
Vienkartinio įrišimo „MVVMCross“ apžvalga
Vienkartinis įrišimas „MVVMCross“ yra įrišimo režimas, perkeliantis reikšmes iš „ViewModel“ į vaizdą. Šis perdavimas įvyksta tik tada, kai nustatomas įrišimo šaltinis, ir jis aktyviai stebi pakeitimų pranešimus ar įvykius iš „ViewModel“. Kai pradinis perdavimas bus baigtas, įrišimas neatlieka jokių atnaujinimų, nebent pats įrišimo šaltinis yra atstatytas [1].
Kalbos failo atnaujinimų tvarkymas
Kai naudoja vienkartinį kalbos failų įrišimą, MVVMCross paprastai nustato tekstą vieną kartą, kai pasirinkta kalba. Taip yra todėl, kad vartotojams įprasta pasirinkti kalbą programos pradžioje, ir neįprasta, kad jie dažnai ją keičia. Tačiau jei kalbą reikia atnaujinti dinamiškai, vien tik vienkartinis įrišimas nėra pakankamas, nes ji automatiškai neatnaujina teksto, kai keičiasi kalba.
Dinaminės kalbos atnaujinimai
Norint tvarkyti dinaminius kalbos atnaujinimus, jums paprastai reikės įdiegti papildomą logiką. Tai gali apimti įrišimo šaltinio iš naujo nustatymą, kai kalba keičiasi arba naudojant skirtingą surišimo režimą, palaikantį atnaujinimus, pavyzdžiui, dvipusį įrišimą, nors tai yra rečiau statiniam tekstui.
MVVMCROSS.PLUGIN.RESXLOCAlizacijos naudojimas
Kalbos failų valdymui „MVVMCross“ pateikia „Mvvmcross.plugin.resxLocalization“ papildinį, kuris leidžia saugoti stygas „.resx“ failuose skirtingoms kalboms. Šis papildinys padeda valdyti lokalias eilutes ir gali būti integruotas su programos IOC konteineriu, kad suteiktų prieigą prie lokalizuotų išteklių iš „ViewModels“ ir „Views“ [4].
Norėdami dinamiškai atnaujinti kalbą naudodami šį papildinį, turėtumėte įdiegti logiką, kuri atnaujina vartotojo sąsają, kai keičiasi kalba. Tai gali apimti rankiniu būdu atnaujinti UI elementų teksto savybes arba naudojant dinamiškesnį įrišimo metodą, kuris reaguoja į kalbos pakeitimus.
Išvada
Nors vienkartinis įrišimas yra tinkamas norint nustatyti statinį tekstą iš kalbos failų, iš pradžių tvarkant dinaminius kalbos atnaujinimus reikia papildomų įgyvendinimo veiksmų. „MVVMCross“ teikia tokius įrankius kaip „Resxlocalization“ papildinys, kad būtų galima valdyti lokalizuotus išteklius, tačiau, norint atnaujinti UI, turite įdiegti logiką, kai keičiasi kalba.
Apibendrinant galima pasakyti, kad vienkartinis „MVVMCross“ įrišimas nėra skirtas automatiškai tvarkyti kalbos atnaujinimus, tačiau naudodamiesi tinkama papildoma logika ir papildiniais galite pasiekti dinaminę kalbos palaikymą savo programoje.
Citatos:[1] https://www.mvvmcross.com/documentation/fundamentals/data-dinding
[2] https://www.mvvmcross.com/documentation/fundamentals/value-converters
[3] https://www.mvvmcross.com/mvvmcross-5-release/
[4] https://mobileprogrammerblog.wordpress.com/2017/12/30/mvvm-cross-with-xamarin-platform-resx-localization/
[5] https://stackoverflow.com/questions/17156368/
[6] https://stackoverflow.com/questions/60311571/the-interved-purpose-of-mvvmcross-createBindingset
[7] https://www.mvvmcross.com/documentation/plugins/jsonlocalisation
[8] https://www.mvvmcross.com/documentation/fundamentals/linking
[9] https://www.mvvmcross.com/blog/