/// ------------------------------------------------------------------------------------ private void ReadSinglePronunciation(IPaLexPronunciation pro, WordCacheEntry wentry) { var mapping = m_dataSource.FieldMappings.SingleOrDefault(m => m.NameInDataSource == "CV-Pattern-Source"); if (mapping != null) { wentry.SetValue(mapping.NameInDataSource, pro.CVPattern); } mapping = m_dataSource.FieldMappings.SingleOrDefault(m => m.NameInDataSource == "Tone"); if (mapping != null) { wentry.SetValue(mapping.NameInDataSource, pro.Tone); } mapping = m_dataSource.FieldMappings.SingleOrDefault(m => m.NameInDataSource == "Location"); if (mapping != null) { wentry.SetValue(mapping.NameInDataSource, GetPossibilityValue(pro.Location, false)); } if (!pro.MediaFiles.Any()) { return; } // TODO: Verify that the media file is audio. var mediaFile = pro.MediaFiles.ElementAt(0); // TODO: Figure out a way to deal with more than one media file and label. wentry.SetValue("AudioFile", mediaFile.AbsoluteInternalPath); mapping = m_dataSource.FieldMappings.SingleOrDefault(m => m.NameInDataSource == "AudioFileLabel"); if (mapping != null) { wentry.SetValue("AudioFileLabel", GetMultiStringValue(mediaFile.Label, mapping.FwWsId)); } }
/// <summary> /// Audio files can be store in special audio writing systems in the LexememForm, the CitationForm or the /// Example field of the pronunciation. /// First field found will be used. /// </summary> private void SearchForAudioWritingSystems(WordCacheEntry wentry, IPaLexEntry lxEntry, IPaLexPronunciation pro) { if (m_audioWsId == null) { return; } string audioFile = null; if (lxEntry.LexemeForm != null) { audioFile = lxEntry.LexemeForm.GetString(m_audioWsId); } if (audioFile == null && lxEntry.CitationForm != null) { audioFile = lxEntry.CitationForm.GetString(m_audioWsId); } // TODO: Should look at examples also, but examples are not part of the data PA can get from FLEx. if (audioFile != null) { wentry["AudioFile"] = audioFile; } }