1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
using System;
using System.Collections.Generic;
using UnityEngine;
namespace I2.Loc;
[Serializable]
public class TermData
{
public string Term = string.Empty;
public eTermType TermType;
[NonSerialized]
public string Description;
public string[] Languages = Array.Empty<string>();
public byte[] Flags = Array.Empty<byte>();
[SerializeField]
private string[] Languages_Touch;
public string GetTranslation(int idx, string specialization = null, bool editMode = false)
{
string text = Languages[idx];
if (text != null)
{
text = SpecializationManager.GetSpecializedText(text, specialization);
if (!editMode)
{
text = text.Replace("[i2nt]", "").Replace("[/i2nt]", "");
}
}
return text;
}
public void SetTranslation(int idx, string translation, string specialization = null)
{
Languages[idx] = SpecializationManager.SetSpecializedText(Languages[idx], translation, specialization);
}
public void RemoveSpecialization(string specialization)
{
for (int i = 0; i < Languages.Length; i++)
{
RemoveSpecialization(i, specialization);
}
}
public void RemoveSpecialization(int idx, string specialization)
{
string text = Languages[idx];
if (!(specialization == "Any") && text.Contains("[i2s_" + specialization + "]"))
{
Dictionary<string, string> specializations = SpecializationManager.GetSpecializations(text);
specializations.Remove(specialization);
Languages[idx] = SpecializationManager.SetSpecializedText(specializations);
}
}
public bool IsAutoTranslated(int idx, bool IsTouch)
{
return (Flags[idx] & 2) > 0;
}
public void Validate()
{
int num = Mathf.Max(Languages.Length, Flags.Length);
if (Languages.Length != num)
{
Array.Resize(ref Languages, num);
}
if (Flags.Length != num)
{
Array.Resize(ref Flags, num);
}
if (Languages_Touch == null)
{
return;
}
for (int i = 0; i < Mathf.Min(Languages_Touch.Length, num); i++)
{
if (string.IsNullOrEmpty(Languages[i]) && !string.IsNullOrEmpty(Languages_Touch[i]))
{
Languages[i] = Languages_Touch[i];
Languages_Touch[i] = null;
}
}
Languages_Touch = null;
}
public bool IsTerm(string name, bool allowCategoryMistmatch)
{
if (!allowCategoryMistmatch)
{
return name == Term;
}
return name == LanguageSourceData.GetKeyFromFullTerm(Term);
}
public bool HasSpecializations()
{
for (int i = 0; i < Languages.Length; i++)
{
if (!string.IsNullOrEmpty(Languages[i]) && Languages[i].Contains("[i2s_"))
{
return true;
}
}
return false;
}
public List<string> GetAllSpecializations()
{
List<string> list = new List<string>();
for (int i = 0; i < Languages.Length; i++)
{
SpecializationManager.AppendSpecializations(Languages[i], list);
}
return list;
}
}
|