public static void readAndBuildDictionary(ApolloDictionary app)
        {
            string resourcePrefix = null;

            #if __IOS__
            resourcePrefix = "Wilson_oficial.iOS.";
            #elif __ANDROID__
            resourcePrefix = "Wilson_oficial.Droid.";
            #endif

            //Get the files from the source folder
            var    assembly = typeof(ReadDictFiles).GetTypeInfo().Assembly;
            Stream stream1  = assembly.GetManifestResourceStream(resourcePrefix + "Dictionaries.Governor_Dictionary.txt");
            Stream stream2  = assembly.GetManifestResourceStream(resourcePrefix + "Dictionaries.nhs-acronym-dictionary.txt");

            //read each file from Stream and make it into usable data
            var dictionary = new List <WordDefinition>();
            dictionary.AddRange(processWords(stream1));
            dictionary.AddRange(processWords(stream2));

            //get words from the personalized filesystem, which contains all the new words the user had added
            ReadUserWordsFile(app);

            //update main Dictionary
            app.List = dictionary;
        }
        public App()
        {
            InitializeComponent();

            //open file and get the file pointer
            OpenFile();

            //initialize the dictionary
            app = new ApolloDictionary();
            ReadDictFiles.readAndBuildDictionary(app);

            //initializing the History methods to get user stored words
            userProp = new UserProperties();

            MainPage = new Wilson_oficial.Pages.HomePage();
        }
        private static async void ReadUserWordsFile(ApolloDictionary app)
        {
            var readText = await PCLHelper.ReadAllTextAsync("MyDictionary.txt", App.folder);

            if (!string.IsNullOrEmpty(readText))
            {
                //split the string into sequence of words
                string[] separator   = { Environment.NewLine };
                string[] wordsAndDef = readText.Split(separator, StringSplitOptions.RemoveEmptyEntries);

                //take each word and split it into Name, Definition and Category
                //from the file, which is in this model: word1 -> definition1 -> category1,category2,category3
                string[] separator2 = { " -> " };
                foreach (string wordDef in wordsAndDef)
                {
                    string[] word = wordDef.Split(separator2, StringSplitOptions.RemoveEmptyEntries);

                    WordDefinition newWord = new WordDefinition
                    {
                        Name       = word[0],
                        Definition = word[1],
                        Category   = word[2]
                    };

                    try
                    {
                        //word is added to the Dictionary
                        app.AddSingleWord = newWord;
                    }
                    catch (Exception e)
                    {
                        //don't do anything
                    }
                }

                //Send a new message when the file was read
                MessagingCenter.Send(new ReadDictFiles(), "fileReadingDone");
            }
            else
            {
                //call function again until it gets a result from the file
                ReadUserWordsFile(app);
            }
        }