9a13d306f5bf19c4ded841c9a9194ec338cd1004
[mono.git] / tools / locale-builder / CultureInfoEntry.cs
1 //
2 // Mono.Tools.LocaleBuilder.CultureInfoEntry
3 //
4 // Author(s):
5 //  Jackson Harper (jackson@ximian.com)
6 //
7 // (C) 2004 Novell, Inc (http://www.novell.com)
8 //
9
10
11 using System;
12 using System.Text;
13
14 namespace Mono.Tools.LocaleBuilder {
15
16         public class CultureInfoEntry : Entry {
17
18                 public string Language;
19                 public string Territory;
20                 public string EnglishName;
21                 public string DisplayName;
22                 public string NativeName;
23                 public string IcuName;
24                 public string Win3Lang;
25                 public string ISO2Lang;
26                 public string ISO3Lang;
27                 public string Lcid;
28                 public string ParentLcid;
29                 public string SpecificLcid;
30                 public DateTimeFormatEntry DateTimeFormatEntry;
31                 public NumberFormatEntry NumberFormatEntry;
32                 public int [] CalendarData = new int [5];
33                 public int DateTimeIndex;
34                 public int NumberIndex;
35                 
36                 
37                 public int Row;
38
39                 public CultureInfoEntry ()
40                 {
41                         DateTimeFormatEntry = new DateTimeFormatEntry ();
42                         NumberFormatEntry = new NumberFormatEntry ();
43                 }
44
45                 public string Name {
46                         get {
47                                 if (Territory == null)
48                                         return Language;
49                                 return Language + "-" + Territory;
50                         }
51                 }
52
53                 public override string ToString ()
54                 {
55                         StringBuilder builder = new StringBuilder ();
56                         AppendTableRow (builder);
57                         return builder.ToString ();
58                 }
59
60                 public void AppendTableRow (StringBuilder builder)
61                 {
62                         builder.Append ("\t{");
63                         builder.AppendFormat ("{0}, {1}, {2}, " +
64                                         "\"{3}\", \"{4}\", \"{5}\", " +
65                                         "\"{6}\", \"{7}\", \"{8}\", " +
66                                         "\"{9}\", \"{10}\", " +
67                                         "{11}, " +
68                                         "{12}, {13}",
69                                         Lcid, ParentLcid, SpecificLcid,
70                                         EncodeString (Name), EncodeString (IcuName), EncodeString (EnglishName),
71                                         EncodeString (DisplayName), EncodeString (NativeName), EncodeString (Win3Lang),
72                                         EncodeString (ISO3Lang), EncodeString (ISO2Lang),
73                                         ValuesString (CalendarData),
74                                         DateTimeFormatEntry == null ? -1 : DateTimeFormatEntry.Row,
75                                         NumberFormatEntry == null ? -1 : NumberFormatEntry.Row);
76                         builder.Append ('}');
77                 }
78
79                 private string ValuesString (int [] values)
80                 {
81                         StringBuilder builder = new StringBuilder ();
82                         builder.Append ('{');
83                         for (int i=0; i<values.Length; i++) {
84                                 builder.Append (values [i].ToString ());
85                                 if (i+1 < values.Length)
86                                         builder.Append (", ");
87                         }
88                         builder.Append ("}");
89                         return builder.ToString ();
90                 }
91         }
92         
93 }
94