PageRenderTime 52ms CodeModel.GetById 25ms RepoModel.GetById 1ms app.codeStats 0ms

/Multilingual/Multilingual.Example/Multilingual.Example/PageModels/LanguagePageModel.cs

https://bitbucket.org/ThunderSL/sl.xamarin.multilingual
C# | 74 lines | 65 code | 7 blank | 2 comment | 3 complexity | bf816e58042b3908c56fde8446b74fe8 MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Globalization;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Reflection;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Input;
  10. using System.Xml;
  11. using System.Xml.Linq;
  12. using System.Xml.Serialization;
  13. using Multilingual.Example.Models;
  14. using Multilingual.Example.Pages;
  15. using Multilingual.Example.Resources.Languages;
  16. using Newtonsoft.Json;
  17. using Newtonsoft.Json.Linq;
  18. using Xamarin.Forms;
  19. using Xamarin.Forms.Internals;
  20. namespace Multilingual.Example.PageModels
  21. {
  22. public class LanguagePageModel
  23. {
  24. public List<Language> Languages { get; set; }
  25. public int SelectedIndex { get; set; }
  26. public LanguagePageModel()
  27. {
  28. ReadLanguagesResources();
  29. }
  30. private void ReadLanguagesResources()
  31. {
  32. using (var stream = this.GetType().Assembly.GetManifestResourceStream("Multilingual.Example.Resources.Languages.Languages.json"))
  33. {
  34. using (var reader = new StreamReader(stream))
  35. {
  36. //Set languages picker
  37. var json = JObject.Parse(reader.ReadToEnd());
  38. Languages = JsonConvert.DeserializeObject<List<Language>>(JsonConvert.SerializeObject(json["languages"]));
  39. //Get current culture info
  40. var info = Plugin.Multilingual.Current.CurrentCultureInfo;
  41. for (var i=0; i<Languages.Count ;i++)
  42. {
  43. if (Languages[i].Abbreviation == info.TwoLetterISOLanguageName)
  44. SelectedIndex = i;
  45. }
  46. }
  47. }
  48. }
  49. public ICommand AcceptCommand
  50. {
  51. get
  52. {
  53. return new Command(() =>
  54. {
  55. var test = Languages[SelectedIndex].Abbreviation;
  56. Plugin.Multilingual.Current.CurrentCultureInfo = new CultureInfo(test);
  57. AppResources.Culture = Plugin.Multilingual.Current.CurrentCultureInfo;
  58. var page = new NavigationPage(new HomePage())
  59. {
  60. BarBackgroundColor = Color.FromHex("#212121")
  61. };
  62. Application.Current.MainPage = page;
  63. });
  64. }
  65. }
  66. }
  67. }