Το MVVMCROSS χειρίζεται ενημερώσεις αρχείων γλώσσας χρησιμοποιώντας τη δέσμευση εφάπαξ με συγκεκριμένο τρόπο, ιδιαίτερα όταν ασχολείται με στατικό κείμενο από αρχεία γλώσσας. Ακολουθεί μια λεπτομερής εξήγηση για το πώς λειτουργεί αυτό:
Επισκόπηση της μοναδικής δέσμευσης στο MVVMCROSS
Η μοναδική δέσμευση στο MVVMCross είναι ένας τρόπος σύνδεσης που μεταφέρει τιμές από το ViewModel στην προβολή. Αυτή η μεταφορά συμβαίνει μόνο όταν έχει οριστεί η πηγή δέσμευσης και δεν παρακολουθεί ενεργά την αλλαγή μηνυμάτων ή συμβάντων από το ViewModel. Μόλις ολοκληρωθεί η αρχική μεταφορά, η δέσμευση δεν εκτελεί ενημερώσεις εκτός εάν η ίδια η πηγή δέσμευσης επαναφέρεται [1].
ενημερώσεις αρχείων γλώσσας χειρισμού
Όταν χρησιμοποιείτε τη μοναδική δέσμευση για τα αρχεία γλώσσας, το MVVMCROSS συνήθως ορίζει το κείμενο μία φορά όταν η γλώσσα έχει επιλεγεί. Αυτό οφείλεται στο γεγονός ότι είναι κοινό για τους χρήστες να επιλέξουν μια γλώσσα στην αρχή της εφαρμογής και είναι ασυνήθιστο να την αλλάζουν συχνά. Ωστόσο, εάν η γλώσσα πρέπει να ενημερωθεί δυναμικά, η εφάπαξ δέσμευση από μόνη της δεν αρκεί, καθώς δεν ενημερώνει αυτόματα το κείμενο όταν αλλάζει η γλώσσα.
Ενημερώσεις δυναμικής γλώσσας
Για να χειριστείτε τις δυναμικές ενημερώσεις γλώσσας, θα πρέπει συνήθως να εφαρμόσετε πρόσθετη λογική. Αυτό θα μπορούσε να περιλαμβάνει την επαναφορά της πηγής δέσμευσης όταν η γλώσσα αλλάζει ή χρησιμοποιώντας διαφορετικό τρόπο δέσμευσης που υποστηρίζει ενημερώσεις, όπως η αμφίδρομη δέσμευση, αν και αυτό είναι λιγότερο κοινό για το στατικό κείμενο.
Χρήση mvvmcross.plugin.resxlocalization
Για τη διαχείριση των αρχείων γλώσσας, το MVVMCROSS παρέχει το plugin `mvvmcross.plugin.resxlocalization ', το οποίο σας επιτρέπει να αποθηκεύετε χορδές σε αρχεία` .resx` για διαφορετικές γλώσσες. Αυτό το plugin βοηθά στη διαχείριση των εντοπισμένων συμβολοσειρών και μπορεί να ενσωματωθεί στο δοχείο IOC της εφαρμογής για να παρέχει πρόσβαση σε τοπικούς πόρους από το ViewModels και τις προβολές [4].
Για να ενημερώσετε δυναμικά τη γλώσσα με αυτό το plugin, θα πρέπει να εφαρμόσετε τη λογική που ενημερώνει το UI όταν αλλάζει η γλώσσα. Αυτό μπορεί να περιλαμβάνει την ενημέρωση με το χέρι τις ιδιότητες κειμένου των στοιχείων UI ή τη χρήση μιας πιο δυναμικής προσέγγισης δέσμευσης που αντιδρά στις αλλαγές γλώσσας.
Συμπέρασμα
Ενώ η μοναδική δέσμευση είναι κατάλληλη για τη ρύθμιση στατικού κειμένου από τα αρχεία γλώσσας αρχικά, η διαχείριση δυναμικών ενημερώσεων γλώσσας απαιτεί πρόσθετα βήματα εφαρμογής. Το MVVMCROSS παρέχει εργαλεία όπως το plugin `resxlocalization 'για τη διαχείριση των εντοπισμένων πόρων, αλλά πρέπει να εφαρμόσετε τη λογική για να ενημερώσετε το UI όταν αλλάζει η γλώσσα.
Συνοπτικά, η μοναδική δέσμευση του MVVMCross δεν έχει σχεδιαστεί για να χειρίζεται αυτόματα τις ενημερώσεις γλώσσας, αλλά με τη σωστή πρόσθετη λογική και plugins, μπορείτε να επιτύχετε δυναμική υποστήριξη γλωσσών στην εφαρμογή σας.
Αναφορές:[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://www.mvvmcross.com/documentation/fundamentals/value-converters
[3] https://www.mvvmcross.com/mvvmcross-5-release/
[4] https://mobileprogrammermblog.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-intended-purpose-of-mvmcross-createbindingset
[7] https://www.mvvmcross.com/documentation/plugins/jsonlocalisation
[8] https://www.mvvmcross.com/documentation/fundamentals/linking
[9] https://www.mvvmcross.com/blog/