1: using System;
2: using System.Web;
3: using System.Xml;
4: using System.Xml.XPath;
5: using System.Xml.Xsl;
6: using System.Configuration;
7: using System.IO;
8: using System.Text;
9: using System.Collections;
10: using System.Text.RegularExpressions;
11: using System.Linq;
12: using System.Xml.Linq;
13: using System.Reflection;
14: using System.Globalization;
15:
16: namespace Ia.Islamic.Cl.Model
17: {
18: ////////////////////////////////////////////////////////////////////////////
19:
20: /// <summary publish="true">
21: /// Koran Reference Network Class Library support functions: Data model
22: /// </summary>
23: /// <value>
24: /// https://msdn.microsoft.com/en-us/library/z1hkazw7(v=vs.100).aspx
25: /// </value>
26: /// <remarks>
27: /// Copyright © 2001-2015 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
28: ///
29: /// This library is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by
30: /// the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
31: ///
32: /// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
33: /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
34: ///
35: /// You should have received a copy of the GNU General Public License along with this library. If not, see http://www.gnu.org/licenses.
36: ///
37: /// Copyright notice: This notice may not be removed or altered from any source distribution.
38: /// </remarks>
39: ////////////////////////////////////////////////////////////////////////////
40:
41: /// <summary>
42: ///
43: /// </summary>
44: /// <remarks></remarks>
45: public class Translation
46: {
47: private static XDocument xd;
48: private XElement xe;
49:
50: /// <summary/>
51: public string Id { get; set; }
52: /// <summary/>
53: public string MainName { get; set; }
54: /// <summary/>
55: public string MainHome { get; set; }
56: /// <summary/>
57: public string MainTitle { get; set; }
58: /// <summary/>
59: public string MainMeta { get; set; }
60: /// <summary/>
61: public string MainBismillah { get; set; }
62: /// <summary/>
63: public string IntroductionName { get; set; }
64:
65: /// <summary/>
66: public string SearchTitle { get; set; }
67: /// <summary/>
68: public string SearchInstruction { get; set; }
69: /// <summary/>
70: public string SearchHintName { get; set; }
71: /// <summary/>
72: public string SearchHint { get; set; }
73: /// <summary/>
74: public string SearchButton { get; set; }
75: /// <summary/>
76: public string SearchCase { get; set; }
77: /// <summary/>
78: public string SearchBackwards { get; set; }
79:
80: /// <summary/>
81: public string ResultEmptyField { get; set; }
82: /// <summary/>
83: public string ResultTitle { get; set; }
84: /// <summary/>
85: public string ResultSpace { get; set; }
86: /// <summary/>
87: public string ResultPeriod { get; set; }
88: /// <summary/>
89: public string ResultComma { get; set; }
90: /// <summary/>
91: public string ResultOnly { get; set; }
92: /// <summary/>
93: public string ResultSearchForWord { get; set; }
94: /// <summary/>
95: public string ResultSearchForWordEnd { get; set; }
96: /// <summary/>
97: public string ResultSearchForWords { get; set; }
98: /// <summary/>
99: public string ResultSearchForWordsEnd { get; set; }
100: /// <summary/>
101: public string ResultQuoteOn { get; set; }
102: /// <summary/>
103: public string ResultQuoteOff { get; set; }
104: /// <summary/>
105: public string ResultAnd { get; set; }
106: /// <summary/>
107: public string ResultSearchIs { get; set; }
108: /// <summary/>
109: public string ResultSensitiveForWord { get; set; }
110: /// <summary/>
111: public string ResultSensitiveForWords { get; set; }
112: /// <summary/>
113: public string ResultWildcards { get; set; }
114: /// <summary/>
115: public string ResultTheWord { get; set; }
116: /// <summary/>
117: public string ResultTheWords { get; set; }
118: /// <summary/>
119: public string ResultWasNotFound { get; set; }
120: /// <summary/>
121: public string ResultWereNotFound { get; set; }
122: /// <summary/>
123: public string ResultAppearsIn { get; set; }
124: /// <summary/>
125: public string ResultNumberOfAppearWords { get; set; }
126: /// <summary/>
127: public string ResultOneVerse { get; set; }
128: /// <summary/>
129: public string ResultManyVerses { get; set; }
130: /// <summary/>
131: public string ResultNotAllTogether { get; set; }
132: /// <summary/>
133: public string ResultAll { get; set; }
134: /// <summary/>
135: public string ResultStartingVerse { get; set; }
136: /// <summary/>
137: public string ResultStartingVerseEnd { get; set; }
138: /// <summary/>
139: public string ResultNext { get; set; }
140:
141: ////////////////////////////////////////////////////////////////////////////
142:
143: /// <summary>
144: ///
145: /// </summary>
146: public Translation(string langaugeId)
147: {
148: xe = (from q in XDocument.Elements("language").Elements("lang") where q.Attribute("symbol").Value == langaugeId select q).First();
149:
150: this.MainName = xe.Element("main").Attribute("name").Value;
151: this.MainHome = xe.Element("main").Element("home").Value;
152: this.MainTitle = xe.Element("main").Element("title").Value;
153: this.MainMeta = xe.Element("main").Element("meta").Value;
154: this.MainBismillah = xe.Element("main").Element("bismillah").Value;
155:
156: this.IntroductionName = xe.Element("intro").Attribute("name").Value;
157:
158: this.SearchTitle = xe.Element("search").Element("main").Element("title").Value;
159: this.SearchInstruction = xe.Element("search").Element("main").Element("instruction").Value;
160: this.SearchHintName = xe.Element("search").Element("main").Element("hint").Attribute("name").Value;
161: this.SearchHint = xe.Element("search").Element("main").Element("hint").Value;
162: this.SearchButton = xe.Element("search").Element("main").Element("button").Value;
163: this.SearchCase = xe.Element("search").Element("main").Element("case").Value;
164: this.SearchBackwards = xe.Element("search").Element("main").Element("backwards").Value;
165:
166: this.ResultEmptyField = xe.Element("search").Element("result").Element("empty_field").Value;
167: this.ResultTitle = xe.Element("search").Element("result").Element("title").Value;
168: this.ResultSpace = xe.Element("search").Element("result").Element("space").Value;
169: this.ResultPeriod = xe.Element("search").Element("result").Element("period").Value;
170: this.ResultComma = xe.Element("search").Element("result").Element("comma").Value;
171:
172: this.ResultOnly = xe.Element("search").Element("result").Element("only").Value;
173: this.ResultSearchForWord = xe.Element("search").Element("result").Element("search_for_word").Value;
174: this.ResultSearchForWords = xe.Element("search").Element("result").Element("search_for_words").Value;
175: this.ResultSearchForWordEnd = xe.Element("search").Element("result").Element("search_for_word_end").Value;
176: this.ResultSearchForWordsEnd = xe.Element("search").Element("result").Element("search_for_words_end").Value;
177: this.ResultQuoteOn = xe.Element("search").Element("result").Element("quote_on").Value;
178: this.ResultQuoteOff = xe.Element("search").Element("result").Element("quote_off").Value;
179: this.ResultAnd = xe.Element("search").Element("result").Element("and").Value;
180: this.ResultSearchIs = xe.Element("search").Element("result").Element("search_is").Value;
181: this.ResultSensitiveForWord = xe.Element("search").Element("result").Element("sensitive_for_word").Value;
182: this.ResultSensitiveForWords = xe.Element("search").Element("result").Element("sensitive_for_words").Value;
183: this.ResultWildcards = xe.Element("search").Element("result").Element("wildcards").Value;
184: this.ResultTheWord = xe.Element("search").Element("result").Element("the_word").Value;
185:
186: this.ResultWasNotFound = xe.Element("search").Element("result").Element("was_not_found").Value;
187: this.ResultTheWords = xe.Element("search").Element("result").Element("the_words").Value;
188: this.ResultWereNotFound = xe.Element("search").Element("result").Element("were_not_found").Value;
189: this.ResultAppearsIn = xe.Element("search").Element("result").Element("appears_in").Value;
190: this.ResultNumberOfAppearWords = xe.Element("search").Element("result").Element("number_of_appear_words").Value;
191: this.ResultOneVerse = xe.Element("search").Element("result").Element("one_verse").Value;
192:
193: this.ResultManyVerses = xe.Element("search").Element("result").Element("many_verses").Value;
194: this.ResultNotAllTogether = xe.Element("search").Element("result").Element("not_all_together").Value;
195: this.ResultAll = xe.Element("search").Element("result").Element("all").Value;
196: this.ResultStartingVerse = xe.Element("search").Element("result").Element("starting_verse").Value;
197: this.ResultStartingVerseEnd = xe.Element("search").Element("result").Element("starting_verse_end").Value;
198: this.ResultNext = xe.Element("search").Element("result").Element("next").Value;
199: }
200:
201: ////////////////////////////////////////////////////////////////////////////
202:
203: /// <summary>
204: ///
205: /// How to embed and access resources by using Visual C# http://support.microsoft.com/kb/319292/en-us
206: ///
207: /// 1. Change the "Build Action" property of your XML file from "Content" to "Embedded Resource".
208: /// 2. Add "using System.Reflection".
209: /// 3. Manifest resource stream will start with the project namespace, the location of XML file.
210: ///
211: /// </summary>
212:
213: private XDocument XDocument
214: {
215: get
216: {
217: Assembly _assembly;
218: StreamReader streamReader;
219:
220: xd = null;
221: _assembly = Assembly.GetExecutingAssembly();
222: streamReader = new StreamReader(_assembly.GetManifestResourceStream("Ia.Islamic.Cl.model.translation.xml"));
223:
224: try
225: {
226: if (streamReader.Peek() != -1)
227: {
228: xd = System.Xml.Linq.XDocument.Load(streamReader);
229: }
230: }
231: catch (Exception)
232: {
233: }
234: finally
235: {
236: }
237:
238: return xd;
239: }
240: }
241:
242: ////////////////////////////////////////////////////////////////////////////
243: ////////////////////////////////////////////////////////////////////////////
244: }
245: }