|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+//
|
|
|
2
|
+// TemplateNameTokenLexicon.swift
|
|
|
3
|
+// App for Indeed
|
|
|
4
|
+//
|
|
|
5
|
+// Per-word vocabulary for AI-invented CV template titles (often camelCase or
|
|
|
6
|
+// concatenated English) when no full-string key exists in Localizable.strings.
|
|
|
7
|
+//
|
|
|
8
|
+
|
|
|
9
|
+import Foundation
|
|
|
10
|
+
|
|
|
11
|
+enum TemplateNameTokenLexicon {
|
|
|
12
|
+ static func lookup(_ token: String, language: AppLanguage) -> String? {
|
|
|
13
|
+ let trimmed = token.trimmingCharacters(in: .whitespacesAndNewlines)
|
|
|
14
|
+ guard !trimmed.isEmpty else { return nil }
|
|
|
15
|
+
|
|
|
16
|
+ let table = table(for: language)
|
|
|
17
|
+ for candidate in lookupCandidates(for: trimmed) {
|
|
|
18
|
+ if let hit = table[candidate] { return hit }
|
|
|
19
|
+ }
|
|
|
20
|
+ return nil
|
|
|
21
|
+ }
|
|
|
22
|
+
|
|
|
23
|
+ /// English key plus common inflections (plurals, -ics, etc.) used in AI titles.
|
|
|
24
|
+ private static func lookupCandidates(for token: String) -> [String] {
|
|
|
25
|
+ var seen = Set<String>()
|
|
|
26
|
+ var results: [String] = []
|
|
|
27
|
+
|
|
|
28
|
+ func append(_ value: String) {
|
|
|
29
|
+ let v = value.trimmingCharacters(in: .whitespacesAndNewlines)
|
|
|
30
|
+ guard !v.isEmpty, seen.insert(v).inserted else { return }
|
|
|
31
|
+ results.append(v)
|
|
|
32
|
+ }
|
|
|
33
|
+
|
|
|
34
|
+ append(token)
|
|
|
35
|
+ append(token.capitalized)
|
|
|
36
|
+ append(normalizedKey(token))
|
|
|
37
|
+
|
|
|
38
|
+ let key = normalizedKey(token)
|
|
|
39
|
+ if key.hasSuffix("ies"), key.count > 4 {
|
|
|
40
|
+ append(String(key.dropLast(3)) + "y")
|
|
|
41
|
+ }
|
|
|
42
|
+ if key.hasSuffix("ics"), key.count > 4 {
|
|
|
43
|
+ append(String(key.dropLast(1)))
|
|
|
44
|
+ }
|
|
|
45
|
+ if key.hasSuffix("ions"), key.count > 5 {
|
|
|
46
|
+ append(String(key.dropLast(1)))
|
|
|
47
|
+ append(String(key.dropLast(3)) + "ion")
|
|
|
48
|
+ }
|
|
|
49
|
+ if key.hasSuffix("ness"), key.count > 5 {
|
|
|
50
|
+ append(String(key.dropLast(4)))
|
|
|
51
|
+ }
|
|
|
52
|
+ if key.hasSuffix("ity"), key.count > 4 {
|
|
|
53
|
+ append(String(key.dropLast(3)) + "e")
|
|
|
54
|
+ append(String(key.dropLast(3)) + "y")
|
|
|
55
|
+ }
|
|
|
56
|
+ if key.hasSuffix("es"), key.count > 3 {
|
|
|
57
|
+ append(String(key.dropLast(2)))
|
|
|
58
|
+ append(String(key.dropLast(1)))
|
|
|
59
|
+ }
|
|
|
60
|
+ if key.hasSuffix("s"), key.count > 2, !key.hasSuffix("ss") {
|
|
|
61
|
+ append(String(key.dropLast(1)))
|
|
|
62
|
+ }
|
|
|
63
|
+
|
|
|
64
|
+ return results
|
|
|
65
|
+ }
|
|
|
66
|
+
|
|
|
67
|
+ private static func normalizedKey(_ token: String) -> String {
|
|
|
68
|
+ token.prefix(1).uppercased() + token.dropFirst().lowercased()
|
|
|
69
|
+ }
|
|
|
70
|
+
|
|
|
71
|
+ private static func table(for language: AppLanguage) -> [String: String] {
|
|
|
72
|
+ switch language {
|
|
|
73
|
+ case .english:
|
|
|
74
|
+ return [:]
|
|
|
75
|
+ case .chineseSimplified:
|
|
|
76
|
+ return zhHans
|
|
|
77
|
+ case .chineseTraditional:
|
|
|
78
|
+ return zhHant
|
|
|
79
|
+ case .arabic:
|
|
|
80
|
+ return ar
|
|
|
81
|
+ case .german:
|
|
|
82
|
+ return de
|
|
|
83
|
+ case .french, .frenchCanada:
|
|
|
84
|
+ return fr
|
|
|
85
|
+ case .swedish:
|
|
|
86
|
+ return sv
|
|
|
87
|
+ }
|
|
|
88
|
+ }
|
|
|
89
|
+
|
|
|
90
|
+ static let zhHans: [String: String] = buildTable(\.zhHans)
|
|
|
91
|
+ static let zhHant: [String: String] = buildTable(\.zhHant)
|
|
|
92
|
+ static let ar: [String: String] = buildTable(\.ar)
|
|
|
93
|
+ static let de: [String: String] = buildTable(\.de)
|
|
|
94
|
+ static let fr: [String: String] = buildTable(\.fr)
|
|
|
95
|
+ static let sv: [String: String] = buildTable(\.sv)
|
|
|
96
|
+}
|
|
|
97
|
+
|
|
|
98
|
+// MARK: - Master vocabulary (one row per English token, all locales)
|
|
|
99
|
+
|
|
|
100
|
+private struct TemplateNameTokenRow {
|
|
|
101
|
+ let key: String
|
|
|
102
|
+ let zhHans: String
|
|
|
103
|
+ let zhHant: String
|
|
|
104
|
+ let de: String
|
|
|
105
|
+ let fr: String
|
|
|
106
|
+ let sv: String
|
|
|
107
|
+ let ar: String
|
|
|
108
|
+}
|
|
|
109
|
+
|
|
|
110
|
+private let templateNameTokenRows: [TemplateNameTokenRow] = [
|
|
|
111
|
+ .init(key: "AI", zhHans: "人工智能", zhHant: "人工智慧", de: "KI", fr: "IA", sv: "AI", ar: "ذكاء اصطناعي"),
|
|
|
112
|
+ .init(key: "ATS", zhHans: "ATS", zhHant: "ATS", de: "ATS", fr: "ATS", sv: "ATS", ar: "ATS"),
|
|
|
113
|
+ .init(key: "Aesthetic", zhHans: "美学", zhHant: "美學", de: "Ästhetik", fr: "Esthétique", sv: "Estetik", ar: "جمالي"),
|
|
|
114
|
+ .init(key: "Aesthetics", zhHans: "美学", zhHant: "美學", de: "Ästhetik", fr: "Esthétique", sv: "Estetik", ar: "جماليات"),
|
|
|
115
|
+ .init(key: "Airy", zhHans: "通透", zhHant: "通透", de: "Luftig", fr: "Aérien", sv: "Luftig", ar: "خفيف"),
|
|
|
116
|
+ .init(key: "Apex", zhHans: "巅峰", zhHant: "巔峰", de: "Spitze", fr: "Sommet", sv: "Topp", ar: "قمة"),
|
|
|
117
|
+ .init(key: "Arc", zhHans: "弧线", zhHant: "弧線", de: "Bogen", fr: "Arc", sv: "Båge", ar: "قوس"),
|
|
|
118
|
+ .init(key: "Artistic", zhHans: "艺术", zhHant: "藝術", de: "Künstlerisch", fr: "Artistique", sv: "Konstnärlig", ar: "فني"),
|
|
|
119
|
+ .init(key: "Atlas", zhHans: "地图", zhHant: "地圖", de: "Atlas", fr: "Atlas", sv: "Atlas", ar: "أطلس"),
|
|
|
120
|
+ .init(key: "Axis", zhHans: "轴线", zhHant: "軸線", de: "Achse", fr: "Axe", sv: "Axel", ar: "محور"),
|
|
|
121
|
+ .init(key: "Balance", zhHans: "平衡", zhHant: "平衡", de: "Balance", fr: "Équilibre", sv: "Balans", ar: "توازن"),
|
|
|
122
|
+ .init(key: "Beacon", zhHans: "灯塔", zhHant: "燈塔", de: "Leuchtfeuer", fr: "Phare", sv: "Fyr", ar: "منارة"),
|
|
|
123
|
+ .init(key: "Blueprint", zhHans: "蓝图", zhHant: "藍圖", de: "Bauplan", fr: "Plan", sv: "Ritning", ar: "مخطط"),
|
|
|
124
|
+ .init(key: "Bloom", zhHans: "绽放", zhHant: "綻放", de: "Blüte", fr: "Floraison", sv: "Blomning", ar: "ازدهار"),
|
|
|
125
|
+ .init(key: "Blue", zhHans: "蓝", zhHant: "藍", de: "Blau", fr: "Bleu", sv: "Blå", ar: "أزرق"),
|
|
|
126
|
+ .init(key: "Bold", zhHans: "大胆", zhHant: "大膽", de: "Mutig", fr: "Audacieux", sv: "Djärv", ar: "جريء"),
|
|
|
127
|
+ .init(key: "Brilliance", zhHans: "光彩", zhHant: "光彩", de: "Glanz", fr: "Éclat", sv: "Glans", ar: "تألق"),
|
|
|
128
|
+ .init(key: "Briefing", zhHans: "简报", zhHant: "簡報", de: "Kurzüberblick", fr: "Synthèse", sv: "Sammanfattning", ar: "موجز"),
|
|
|
129
|
+ .init(key: "Bright", zhHans: "明亮", zhHant: "明亮", de: "Hell", fr: "Lumineux", sv: "Ljus", ar: "مشرق"),
|
|
|
130
|
+ .init(key: "Canvas", zhHans: "画布", zhHant: "畫布", de: "Leinwand", fr: "Toile", sv: "Duk", ar: "لوحة"),
|
|
|
131
|
+ .init(key: "Cascade", zhHans: "层叠", zhHant: "層疊", de: "Kaskade", fr: "Cascade", sv: "Kaskad", ar: "تتالي"),
|
|
|
132
|
+ .init(key: "Chairman", zhHans: "主席", zhHant: "主席", de: "Vorsitzender", fr: "Président", sv: "Ordförande", ar: "رئيس"),
|
|
|
133
|
+ .init(key: "Charter", zhHans: "宪章", zhHant: "憲章", de: "Charta", fr: "Charte", sv: "Stadga", ar: "ميثاق"),
|
|
|
134
|
+ .init(key: "Chronicle", zhHans: "纪事", zhHant: "紀事", de: "Chronik", fr: "Chronique", sv: "Krönika", ar: "سجل"),
|
|
|
135
|
+ .init(key: "Circuit", zhHans: "电路", zhHant: "電路", de: "Schaltung", fr: "Circuit", sv: "Krets", ar: "دائرة"),
|
|
|
136
|
+ .init(key: "Clarity", zhHans: "明晰", zhHant: "明晰", de: "Klarheit", fr: "Clarté", sv: "Klarhet", ar: "وضوح"),
|
|
|
137
|
+ .init(key: "Clean", zhHans: "洁净", zhHant: "潔淨", de: "Sauber", fr: "Propre", sv: "Ren", ar: "نظيف"),
|
|
|
138
|
+ .init(key: "Clear", zhHans: "清晰", zhHant: "清晰", de: "Klar", fr: "Clair", sv: "Klar", ar: "واضح"),
|
|
|
139
|
+ .init(key: "Compass", zhHans: "罗盘", zhHant: "羅盤", de: "Kompass", fr: "Boussole", sv: "Kompass", ar: "بوصلة"),
|
|
|
140
|
+ .init(key: "Conduit", zhHans: "管道", zhHant: "管道", de: "Leitung", fr: "Conduit", sv: "Ledning", ar: "قناة"),
|
|
|
141
|
+ .init(key: "Core", zhHans: "核心", zhHant: "核心", de: "Kern", fr: "Noyau", sv: "Kärna", ar: "جوهر"),
|
|
|
142
|
+ .init(key: "Corporate", zhHans: "企业", zhHant: "企業", de: "Unternehmen", fr: "Entreprise", sv: "Företag", ar: "مؤسسي"),
|
|
|
143
|
+ .init(key: "Craft", zhHans: "工艺", zhHant: "工藝", de: "Handwerk", fr: "Artisanat", sv: "Hantverk", ar: "حرفة"),
|
|
|
144
|
+ .init(key: "Crisp", zhHans: "清爽", zhHant: "清爽", de: "Knackig", fr: "Net", sv: "Skarp", ar: "حاد"),
|
|
|
145
|
+ .init(key: "Creative", zhHans: "创意", zhHant: "創意", de: "Kreativ", fr: "Créatif", sv: "Kreativ", ar: "إبداعي"),
|
|
|
146
|
+ .init(key: "Crest", zhHans: "峰顶", zhHant: "峰頂", de: "Kamm", fr: "Crête", sv: "Kam", ar: "قمة"),
|
|
|
147
|
+ .init(key: "Design", zhHans: "设计", zhHant: "設計", de: "Design", fr: "Design", sv: "Design", ar: "تصميم"),
|
|
|
148
|
+ .init(key: "Dimension", zhHans: "维度", zhHant: "維度", de: "Dimension", fr: "Dimension", sv: "Dimension", ar: "بعد"),
|
|
|
149
|
+ .init(key: "Docket", zhHans: "待办", zhHant: "待辦", de: "Dokument", fr: "Rôle", sv: "Diarium", ar: "سجل"),
|
|
|
150
|
+ .init(key: "Driven", zhHans: "驱动", zhHant: "驅動", de: "Orientiert", fr: "Orienté", sv: "Driven", ar: "موجه"),
|
|
|
151
|
+ .init(key: "Dynamic", zhHans: "动态", zhHant: "動態", de: "Dynamisch", fr: "Dynamique", sv: "Dynamisk", ar: "ديناميكي"),
|
|
|
152
|
+ .init(key: "Dynamo", zhHans: "动力", zhHant: "動力", de: "Dynamik", fr: "Dynamique", sv: "Dynamik", ar: "ديناميكي"),
|
|
|
153
|
+ .init(key: "Echo", zhHans: "回音", zhHant: "回音", de: "Echo", fr: "Écho", sv: "Eko", ar: "صدى"),
|
|
|
154
|
+ .init(key: "Edge", zhHans: "边缘", zhHant: "邊緣", de: "Kante", fr: "Bord", sv: "Kant", ar: "حافة"),
|
|
|
155
|
+ .init(key: "Effortless", zhHans: "轻松", zhHant: "輕鬆", de: "Mühelos", fr: "Sans effort", sv: "Ansträngningslös", ar: "بلا جهد"),
|
|
|
156
|
+ .init(key: "Elegance", zhHans: "优雅", zhHant: "優雅", de: "Eleganz", fr: "Élégance", sv: "Elegans", ar: "أناقة"),
|
|
|
157
|
+ .init(key: "Element", zhHans: "元素", zhHant: "元素", de: "Element", fr: "Élément", sv: "Element", ar: "عنصر"),
|
|
|
158
|
+ .init(key: "Elevate", zhHans: "提升", zhHant: "提升", de: "Erheben", fr: "Élever", sv: "Lyft", ar: "رفع"),
|
|
|
159
|
+ .init(key: "Elite", zhHans: "精英", zhHant: "精英", de: "Elite", fr: "Élite", sv: "Elit", ar: "نخبة"),
|
|
|
160
|
+ .init(key: "Ember", zhHans: "余烬", zhHant: "餘燼", de: "Glut", fr: "Braise", sv: "Glöd", ar: "جمر"),
|
|
|
161
|
+ .init(key: "Essence", zhHans: "本质", zhHant: "本質", de: "Essenz", fr: "Essence", sv: "Essens", ar: "جوهر"),
|
|
|
162
|
+ .init(key: "Estate", zhHans: "庄园", zhHant: "莊園", de: "Anwesen", fr: "Domaine", sv: "Egendom", ar: "عقار"),
|
|
|
163
|
+ .init(key: "Executive", zhHans: "高管", zhHant: "高階", de: "Führungskraft", fr: "Cadre", sv: "Chefsnivå", ar: "تنفيذي"),
|
|
|
164
|
+ .init(key: "Expression", zhHans: "表达", zhHant: "表達", de: "Ausdruck", fr: "Expression", sv: "Uttryck", ar: "تعبير"),
|
|
|
165
|
+ .init(key: "Expressions", zhHans: "表达", zhHant: "表達", de: "Ausdruck", fr: "Expressions", sv: "Uttryck", ar: "تعبيرات"),
|
|
|
166
|
+ .init(key: "Facet", zhHans: "刻面", zhHant: "刻面", de: "Facette", fr: "Facette", sv: "Facett", ar: "وجه"),
|
|
|
167
|
+ .init(key: "Focus", zhHans: "聚焦", zhHant: "聚焦", de: "Fokus", fr: "Focus", sv: "Fokus", ar: "تركيز"),
|
|
|
168
|
+ .init(key: "Focused", zhHans: "专注", zhHant: "專注", de: "Fokussiert", fr: "Ciblé", sv: "Fokuserad", ar: "مركّز"),
|
|
|
169
|
+ .init(key: "Forge", zhHans: "锻造", zhHant: "鍛造", de: "Schmiede", fr: "Forge", sv: "Smedja", ar: "حدادة"),
|
|
|
170
|
+ .init(key: "Form", zhHans: "形态", zhHant: "形態", de: "Form", fr: "Forme", sv: "Form", ar: "شكل"),
|
|
|
171
|
+ .init(key: "Format", zhHans: "格式", zhHant: "格式", de: "Format", fr: "Format", sv: "Format", ar: "تنسيق"),
|
|
|
172
|
+ .init(key: "Forward", zhHans: "前瞻", zhHant: "前瞻", de: "Voraus", fr: "Avant", sv: "Framåt", ar: "مستقبلي"),
|
|
|
173
|
+ .init(key: "Foundation", zhHans: "基础", zhHant: "基礎", de: "Fundament", fr: "Fondation", sv: "Grund", ar: "أساس"),
|
|
|
174
|
+ .init(key: "Frame", zhHans: "框架", zhHant: "框架", de: "Rahmen", fr: "Cadre", sv: "Ram", ar: "إطار"),
|
|
|
175
|
+ .init(key: "Frontier", zhHans: "前沿", zhHant: "前沿", de: "Grenze", fr: "Frontière", sv: "Gräns", ar: "حدود"),
|
|
|
176
|
+ .init(key: "Fusion", zhHans: "融合", zhHant: "融合", de: "Fusion", fr: "Fusion", sv: "Fusion", ar: "دمج"),
|
|
|
177
|
+ .init(key: "Future", zhHans: "未来", zhHant: "未來", de: "Zukunft", fr: "Futur", sv: "Framtid", ar: "مستقبل"),
|
|
|
178
|
+ .init(key: "Gallery", zhHans: "画廊", zhHant: "畫廊", de: "Galerie", fr: "Galerie", sv: "Galleri", ar: "معرض"),
|
|
|
179
|
+ .init(key: "Genesis", zhHans: "起源", zhHant: "起源", de: "Genesis", fr: "Genèse", sv: "Genesis", ar: "بداية"),
|
|
|
180
|
+ .init(key: "Grace", zhHans: "优雅", zhHant: "優雅", de: "Anmut", fr: "Grâce", sv: "Grace", ar: "رشاقة"),
|
|
|
181
|
+ .init(key: "Graceful", zhHans: "雅致", zhHant: "雅致", de: "Anmutig", fr: "Gracieux", sv: "Graciös", ar: "أنيق"),
|
|
|
182
|
+ .init(key: "Gradient", zhHans: "渐变", zhHant: "漸變", de: "Verlauf", fr: "Dégradé", sv: "Gradient", ar: "تدرج"),
|
|
|
183
|
+ .init(key: "Grid", zhHans: "网格", zhHant: "網格", de: "Gitter", fr: "Grille", sv: "Rutnät", ar: "شبكة"),
|
|
|
184
|
+ .init(key: "Harmony", zhHans: "和谐", zhHant: "和諧", de: "Harmonie", fr: "Harmonie", sv: "Harmoni", ar: "انسجام"),
|
|
|
185
|
+ .init(key: "Harbor", zhHans: "港湾", zhHant: "港灣", de: "Hafen", fr: "Havre", sv: "Hamn", ar: "ميناء"),
|
|
|
186
|
+ .init(key: "Heritage", zhHans: "传承", zhHant: "傳承", de: "Erbe", fr: "Héritage", sv: "Arv", ar: "تراث"),
|
|
|
187
|
+ .init(key: "Horizon", zhHans: "地平线", zhHant: "地平線", de: "Horizont", fr: "Horizon", sv: "Horisont", ar: "أفق"),
|
|
|
188
|
+ .init(key: "Icon", zhHans: "标志", zhHant: "標誌", de: "Ikone", fr: "Icône", sv: "Ikon", ar: "أيقونة"),
|
|
|
189
|
+ .init(key: "Iconic", zhHans: "经典", zhHant: "經典", de: "Ikonisch", fr: "Iconique", sv: "Ikonisk", ar: "أيقوني"),
|
|
|
190
|
+ .init(key: "Identity", zhHans: "身份", zhHant: "身份", de: "Identität", fr: "Identité", sv: "Identitet", ar: "هوية"),
|
|
|
191
|
+ .init(key: "Impact", zhHans: "影响", zhHant: "影響", de: "Wirkung", fr: "Impact", sv: "Effekt", ar: "تأثير"),
|
|
|
192
|
+ .init(key: "Imprint", zhHans: "印记", zhHant: "印記", de: "Prägung", fr: "Empreinte", sv: "Avtryck", ar: "بصمة"),
|
|
|
193
|
+ .init(key: "Insight", zhHans: "洞察", zhHant: "洞察", de: "Einblick", fr: "Perspicacité", sv: "Insikt", ar: "بصيرة"),
|
|
|
194
|
+ .init(key: "Inspire", zhHans: "启发", zhHant: "啟發", de: "Inspiration", fr: "Inspirer", sv: "Inspirera", ar: "إلهام"),
|
|
|
195
|
+ .init(key: "Inspired", zhHans: "灵感", zhHant: "靈感", de: "Inspiriert", fr: "Inspiré", sv: "Inspirerad", ar: "ملهم"),
|
|
|
196
|
+ .init(key: "Innovate", zhHans: "创新", zhHant: "創新", de: "Innovation", fr: "Innovation", sv: "Innovation", ar: "ابتكار"),
|
|
|
197
|
+ .init(key: "Journey", zhHans: "旅程", zhHant: "旅程", de: "Reise", fr: "Parcours", sv: "Resa", ar: "رحلة"),
|
|
|
198
|
+ .init(key: "Keystone", zhHans: "基石", zhHant: "基石", de: "Schlüsselstein", fr: "Clé de voûte", sv: "Hörnsten", ar: "حجر الزاوية"),
|
|
|
199
|
+ .init(key: "Kite", zhHans: "风筝", zhHant: "風箏", de: "Drachen", fr: "Cerf-volant", sv: "Drake", ar: "طائرة ورقية"),
|
|
|
200
|
+ .init(key: "Landmark", zhHans: "地标", zhHant: "地標", de: "Wahrzeichen", fr: "Repère", sv: "Landmärke", ar: "معلم"),
|
|
|
201
|
+ .init(key: "Lattice", zhHans: "格栅", zhHant: "格柵", de: "Gitter", fr: "Treillis", sv: "Galler", ar: "شبكة"),
|
|
|
202
|
+ .init(key: "Lead", zhHans: "引领", zhHant: "引領", de: "Führung", fr: "Conduite", sv: "Ledarskap", ar: "قيادة"),
|
|
|
203
|
+ .init(key: "Leadership", zhHans: "领导力", zhHant: "領導力", de: "Führung", fr: "Leadership", sv: "Ledarskap", ar: "قيادة"),
|
|
|
204
|
+ .init(key: "Legacy", zhHans: "传承", zhHant: "傳承", de: "Vermächtnis", fr: "Héritage", sv: "Arv", ar: "إرث"),
|
|
|
205
|
+ .init(key: "Ledger", zhHans: "账本", zhHant: "帳本", de: "Hauptbuch", fr: "Registre", sv: "Huvudbok", ar: "دفتر"),
|
|
|
206
|
+ .init(key: "Lens", zhHans: "镜头", zhHant: "鏡頭", de: "Linse", fr: "Objectif", sv: "Lins", ar: "عدسة"),
|
|
|
207
|
+ .init(key: "Linea", zhHans: "线条", zhHant: "線條", de: "Linie", fr: "Ligne", sv: "Linje", ar: "خط"),
|
|
|
208
|
+ .init(key: "Linear", zhHans: "线性", zhHant: "線性", de: "Linear", fr: "Linéaire", sv: "Linjär", ar: "خطي"),
|
|
|
209
|
+ .init(key: "Lumen", zhHans: "光度", zhHant: "光度", de: "Lumen", fr: "Lumen", sv: "Lumen", ar: "لومن"),
|
|
|
210
|
+ .init(key: "Luminous", zhHans: "明亮", zhHant: "明亮", de: "Leuchtend", fr: "Lumineux", sv: "Lysande", ar: "مضيء"),
|
|
|
211
|
+ .init(key: "Marigold", zhHans: "金盏花", zhHant: "金盞花", de: "Ringelblume", fr: "Souci", sv: "Ringblomma", ar: "آذريون"),
|
|
|
212
|
+ .init(key: "Mastery", zhHans: "精通", zhHant: "精通", de: "Meisterschaft", fr: "Maîtrise", sv: "Mästerskap", ar: "إتقان"),
|
|
|
213
|
+ .init(key: "Matrix", zhHans: "矩阵", zhHant: "矩陣", de: "Matrix", fr: "Matrice", sv: "Matris", ar: "مصفوفة"),
|
|
|
214
|
+ .init(key: "Meridian", zhHans: "子午", zhHant: "子午", de: "Meridian", fr: "Méridien", sv: "Meridian", ar: "خط الزوال"),
|
|
|
215
|
+ .init(key: "Mesh", zhHans: "网状", zhHant: "網狀", de: "Netz", fr: "Maillage", sv: "Nät", ar: "شبكة"),
|
|
|
216
|
+ .init(key: "Minimal", zhHans: "简约", zhHant: "簡約", de: "Minimal", fr: "Minimaliste", sv: "Minimal", ar: "بسيط"),
|
|
|
217
|
+ .init(key: "Modern", zhHans: "现代", zhHant: "現代", de: "Modern", fr: "Moderne", sv: "Modern", ar: "عصري"),
|
|
|
218
|
+ .init(key: "Momentum", zhHans: "动能", zhHant: "動能", de: "Schwung", fr: "Élan", sv: "Momentum", ar: "زخم"),
|
|
|
219
|
+ .init(key: "Mono", zhHans: "单色", zhHant: "單色", de: "Einfarbig", fr: "Monochrome", sv: "Monokrom", ar: "أحادي"),
|
|
|
220
|
+ .init(key: "Monarch", zhHans: "君主", zhHant: "君主", de: "Monarch", fr: "Monarque", sv: "Monark", ar: "ملك"),
|
|
|
221
|
+ .init(key: "Mosaic", zhHans: "马赛克", zhHant: "馬賽克", de: "Mosaik", fr: "Mosaïque", sv: "Mosaik", ar: "فسيفساء"),
|
|
|
222
|
+ .init(key: "Motion", zhHans: "动感", zhHant: "動感", de: "Bewegung", fr: "Mouvement", sv: "Rörelse", ar: "حركة"),
|
|
|
223
|
+ .init(key: "Narrative", zhHans: "叙事", zhHant: "敘事", de: "Erzählung", fr: "Récit", sv: "Berättelse", ar: "سرد"),
|
|
|
224
|
+ .init(key: "Native", zhHans: "原生", zhHant: "原生", de: "Nativ", fr: "Natif", sv: "Nativ", ar: "أصلي"),
|
|
|
225
|
+ .init(key: "Nexus", zhHans: "枢纽", zhHant: "樞紐", de: "Nexus", fr: "Nexus", sv: "Nexus", ar: "رابط"),
|
|
|
226
|
+ .init(key: "Noble", zhHans: "尊贵", zhHant: "尊貴", de: "Edel", fr: "Noble", sv: "Ädel", ar: "نبيل"),
|
|
|
227
|
+ .init(key: "North", zhHans: "北方", zhHant: "北方", de: "Norden", fr: "Nord", sv: "Norr", ar: "شمال"),
|
|
|
228
|
+ .init(key: "Nova", zhHans: "新星", zhHant: "新星", de: "Nova", fr: "Nova", sv: "Nova", ar: "نجم"),
|
|
|
229
|
+ .init(key: "Ocean", zhHans: "海洋", zhHant: "海洋", de: "Ozean", fr: "Océan", sv: "Ocean", ar: "محيط"),
|
|
|
230
|
+ .init(key: "Oasis", zhHans: "绿洲", zhHant: "綠洲", de: "Oase", fr: "Oasis", sv: "Oas", ar: "واحة"),
|
|
|
231
|
+ .init(key: "Opus", zhHans: "作品", zhHant: "作品", de: "Opus", fr: "Opus", sv: "Opus", ar: "opus"),
|
|
|
232
|
+ .init(key: "Orbit", zhHans: "轨道", zhHant: "軌道", de: "Orbit", fr: "Orbite", sv: "Omloppsbana", ar: "مدار"),
|
|
|
233
|
+ .init(key: "Origin", zhHans: "起源", zhHant: "起源", de: "Ursprung", fr: "Origine", sv: "Ursprung", ar: "أصل"),
|
|
|
234
|
+ .init(key: "Outline", zhHans: "轮廓", zhHant: "輪廓", de: "Umriss", fr: "Contour", sv: "Kontur", ar: "مخطط"),
|
|
|
235
|
+ .init(key: "Palette", zhHans: "调色", zhHant: "調色", de: "Palette", fr: "Palette", sv: "Palett", ar: "لوحة"),
|
|
|
236
|
+ .init(key: "Path", zhHans: "路径", zhHant: "路徑", de: "Pfad", fr: "Chemin", sv: "Väg", ar: "مسار"),
|
|
|
237
|
+ .init(key: "Peak", zhHans: "峰", zhHant: "峰", de: "Gipfel", fr: "Sommet", sv: "Topp", ar: "قمة"),
|
|
|
238
|
+ .init(key: "Performance", zhHans: "绩效", zhHant: "績效", de: "Leistung", fr: "Performance", sv: "Prestation", ar: "أداء"),
|
|
|
239
|
+ .init(key: "Pinnacle", zhHans: "巅峰", zhHant: "巔峰", de: "Gipfel", fr: "Apogée", sv: "Topp", ar: "ذروة"),
|
|
|
240
|
+ .init(key: "Pioneer", zhHans: "先锋", zhHant: "先鋒", de: "Pionier", fr: "Pionnier", sv: "Pionjär", ar: "رائد"),
|
|
|
241
|
+ .init(key: "Pixel", zhHans: "像素", zhHant: "像素", de: "Pixel", fr: "Pixel", sv: "Pixel", ar: "بكسل"),
|
|
|
242
|
+ .init(key: "Pinstripe", zhHans: "细条纹", zhHant: "細條紋", de: "Nadelstreifen", fr: "Rayures fines", sv: "Smala ränder", ar: "خطوط"),
|
|
|
243
|
+ .init(key: "Poise", zhHans: "从容", zhHant: "從容", de: "Haltung", fr: "Assurance", sv: "Balans", ar: "اتزان"),
|
|
|
244
|
+ .init(key: "Portrait", zhHans: "肖像", zhHant: "肖像", de: "Porträt", fr: "Portrait", sv: "Porträtt", ar: "صورة"),
|
|
|
245
|
+ .init(key: "Prelude", zhHans: "序章", zhHant: "序章", de: "Präludium", fr: "Prélude", sv: "Preludium", ar: "مقدمة"),
|
|
|
246
|
+ .init(key: "Prestige", zhHans: "声望", zhHant: "聲望", de: "Prestige", fr: "Prestige", sv: "Prestige", ar: "هيبة"),
|
|
|
247
|
+ .init(key: "Principal", zhHans: "首席", zhHant: "首席", de: "Leitend", fr: "Principal", sv: "Ledande", ar: "رئيسي"),
|
|
|
248
|
+ .init(key: "Prime", zhHans: "首要", zhHant: "首要", de: "Prime", fr: "Premier", sv: "Prim", ar: "أول"),
|
|
|
249
|
+ .init(key: "Prism", zhHans: "棱镜", zhHant: "稜鏡", de: "Prisma", fr: "Prisme", sv: "Prisma", ar: "منشور"),
|
|
|
250
|
+ .init(key: "Professional", zhHans: "专业", zhHant: "專業", de: "Professionell", fr: "Professionnel", sv: "Professionell", ar: "احترافي"),
|
|
|
251
|
+ .init(key: "Profile", zhHans: "档案", zhHant: "檔案", de: "Profil", fr: "Profil", sv: "Profil", ar: "ملف"),
|
|
|
252
|
+ .init(key: "Progress", zhHans: "进步", zhHant: "進步", de: "Fortschritt", fr: "Progrès", sv: "Framsteg", ar: "تقدم"),
|
|
|
253
|
+ .init(key: "Pulse", zhHans: "脉动", zhHant: "脈動", de: "Puls", fr: "Pulsation", sv: "Puls", ar: "نبض"),
|
|
|
254
|
+ .init(key: "Pure", zhHans: "纯净", zhHant: "純淨", de: "Rein", fr: "Pur", sv: "Ren", ar: "نقي"),
|
|
|
255
|
+ .init(key: "Quantum", zhHans: "量子", zhHant: "量子", de: "Quantum", fr: "Quantum", sv: "Quantum", ar: "كم"),
|
|
|
256
|
+ .init(key: "Quest", zhHans: "探索", zhHant: "探索", de: "Quest", fr: "Quête", sv: "Quest", ar: "رحلة"),
|
|
|
257
|
+ .init(key: "Quorum", zhHans: "法定人数", zhHant: "法定人數", de: "Quorum", fr: "Quorum", sv: "Kvorum", ar: "نصاب"),
|
|
|
258
|
+ .init(key: "Radiance", zhHans: "光辉", zhHant: "光輝", de: "Glanz", fr: "Éclat", sv: "Glans", ar: "إشراق"),
|
|
|
259
|
+ .init(key: "Realm", zhHans: "领域", zhHant: "領域", de: "Reich", fr: "Royaume", sv: "Rike", ar: "مجال"),
|
|
|
260
|
+ .init(key: "Refined", zhHans: "精致", zhHant: "精緻", de: "Verfeinert", fr: "Raffiné", sv: "Förfinad", ar: "مُنقّى"),
|
|
|
261
|
+ .init(key: "Reflection", zhHans: "映像", zhHant: "映像", de: "Reflexion", fr: "Réflexion", sv: "Reflektion", ar: "انعكاس"),
|
|
|
262
|
+ .init(key: "Regent", zhHans: "摄政", zhHant: "攝政", de: "Regent", fr: "Régent", sv: "Ställföreträdare", ar: "وصي"),
|
|
|
263
|
+ .init(key: "Resonance", zhHans: "共鸣", zhHant: "共鳴", de: "Resonanz", fr: "Résonance", sv: "Resonans", ar: "صدى"),
|
|
|
264
|
+ .init(key: "Rhythm", zhHans: "韵律", zhHant: "韻律", de: "Rhythmus", fr: "Rythme", sv: "Rytm", ar: "إيقاع"),
|
|
|
265
|
+ .init(key: "Rise", zhHans: "崛起", zhHant: "崛起", de: "Aufstieg", fr: "Ascension", sv: "Uppgång", ar: "صعود"),
|
|
|
266
|
+ .init(key: "River", zhHans: "河", zhHant: "河", de: "Fluss", fr: "Rivière", sv: "Flod", ar: "نهر"),
|
|
|
267
|
+ .init(key: "Sculptor", zhHans: "雕刻", zhHant: "雕刻", de: "Bildhauer", fr: "Sculpteur", sv: "Bildhuggare", ar: "نحات"),
|
|
|
268
|
+ .init(key: "Serene", zhHans: "宁静", zhHant: "寧靜", de: "Gelassen", fr: "Serein", sv: "Lugn", ar: "هادئ"),
|
|
|
269
|
+ .init(key: "Serenity", zhHans: "宁静", zhHant: "寧靜", de: "Gelassenheit", fr: "Sérénité", sv: "Lugn", ar: "سكينة"),
|
|
|
270
|
+ .init(key: "Shape", zhHans: "形态", zhHant: "形態", de: "Form", fr: "Forme", sv: "Form", ar: "شكل"),
|
|
|
271
|
+ .init(key: "Sharp", zhHans: "锐利", zhHant: "銳利", de: "Scharf", fr: "Net", sv: "Skarp", ar: "حاد"),
|
|
|
272
|
+ .init(key: "Shift", zhHans: "转换", zhHant: "轉換", de: "Wandel", fr: "Shift", sv: "Skift", ar: "تحول"),
|
|
|
273
|
+ .init(key: "Signature", zhHans: "签名", zhHant: "簽名", de: "Signatur", fr: "Signature", sv: "Signatur", ar: "توقيع"),
|
|
|
274
|
+ .init(key: "Silhouette", zhHans: "剪影", zhHant: "剪影", de: "Silhouette", fr: "Silhouette", sv: "Silhuett", ar: "silhouette"),
|
|
|
275
|
+ .init(key: "Simplicity", zhHans: "简约", zhHant: "簡約", de: "Einfachheit", fr: "Simplicité", sv: "Enkelhet", ar: "بساطة"),
|
|
|
276
|
+ .init(key: "Slate", zhHans: "石板", zhHant: "石板", de: "Schiefer", fr: "Ardoise", sv: "Skiffer", ar: "لوح"),
|
|
|
277
|
+ .init(key: "Sleek", zhHans: "流畅", zhHant: "流暢", de: "Schlank", fr: "Élégant", sv: "Slank", ar: "أنيق"),
|
|
|
278
|
+ .init(key: "Skyline", zhHans: "天际", zhHant: "天際", de: "Skyline", fr: "Horizon urbain", sv: "Silhuett", ar: "أفق"),
|
|
|
279
|
+ .init(key: "Spark", zhHans: "火花", zhHant: "火花", de: "Funke", fr: "Étincelle", sv: "Gnista", ar: "شرارة"),
|
|
|
280
|
+ .init(key: "Spectrum", zhHans: "光谱", zhHant: "光譜", de: "Spektrum", fr: "Spectre", sv: "Spektrum", ar: "طيف"),
|
|
|
281
|
+ .init(key: "Spirit", zhHans: "精神", zhHant: "精神", de: "Geist", fr: "Esprit", sv: "Ande", ar: "روح"),
|
|
|
282
|
+ .init(key: "Spotlight", zhHans: "聚光", zhHant: "聚光", de: "Rampenlicht", fr: "Projecteur", sv: "Rampljus", ar: "spotlight"),
|
|
|
283
|
+ .init(key: "Sterling", zhHans: "纯正", zhHant: "純正", de: "Erstklassig", fr: "Excellence", sv: "Förstklassig", ar: "ممتاز"),
|
|
|
284
|
+ .init(key: "Stone", zhHans: "石", zhHant: "石", de: "Stein", fr: "Pierre", sv: "Sten", ar: "حجر"),
|
|
|
285
|
+ .init(key: "Story", zhHans: "故事", zhHant: "故事", de: "Story", fr: "Histoire", sv: "Berättelse", ar: "قصة"),
|
|
|
286
|
+ .init(key: "Strategic", zhHans: "战略", zhHant: "戰略", de: "Strategisch", fr: "Stratégique", sv: "Strategisk", ar: "استراتيجي"),
|
|
|
287
|
+ .init(key: "Stream", zhHans: "流线", zhHant: "流線", de: "Strom", fr: "Flux", sv: "Ström", ar: "تيار"),
|
|
|
288
|
+ .init(key: "Structure", zhHans: "结构", zhHant: "結構", de: "Struktur", fr: "Structure", sv: "Struktur", ar: "هيكل"),
|
|
|
289
|
+ .init(key: "Studio", zhHans: "工作室", zhHant: "工作室", de: "Atelier", fr: "Atelier", sv: "Ateljé", ar: "استوديو"),
|
|
|
290
|
+ .init(key: "Style", zhHans: "风格", zhHant: "風格", de: "Stil", fr: "Style", sv: "Stil", ar: "أسلوب"),
|
|
|
291
|
+ .init(key: "Styled", zhHans: "风格化", zhHant: "風格化", de: "Gestylt", fr: "Stylisé", sv: "Stylad", ar: "منسق"),
|
|
|
292
|
+ .init(key: "Summit", zhHans: "顶峰", zhHant: "頂峰", de: "Gipfel", fr: "Sommet", sv: "Topp", ar: "قمة"),
|
|
|
293
|
+ .init(key: "Surge", zhHans: "浪潮", zhHant: "浪潮", de: "Schub", fr: "Impulsion", sv: "Våg", ar: "موجة"),
|
|
|
294
|
+ .init(key: "Swiss", zhHans: "瑞士", zhHant: "瑞士", de: "Schweizer", fr: "Suisse", sv: "Schweizisk", ar: "سويسري"),
|
|
|
295
|
+ .init(key: "Swift", zhHans: "迅捷", zhHant: "迅捷", de: "Schnell", fr: "Rapide", sv: "Snabb", ar: "سريع"),
|
|
|
296
|
+ .init(key: "Synergy", zhHans: "协同", zhHant: "協同", de: "Synergie", fr: "Synergie", sv: "Synergi", ar: "تآزر"),
|
|
|
297
|
+ .init(key: "Tabular", zhHans: "表格", zhHant: "表格", de: "Tabellarisch", fr: "Tabulaire", sv: "Tabellformad", ar: "جدولي"),
|
|
|
298
|
+ .init(key: "Tapestry", zhHans: "织锦", zhHant: "織錦", de: "Tapisserie", fr: "Tapisserie", sv: "Tapet", ar: "نسيج"),
|
|
|
299
|
+ .init(key: "Tempo", zhHans: "节奏", zhHant: "節奏", de: "Tempo", fr: "Tempo", sv: "Tempo", ar: "إيقاع"),
|
|
|
300
|
+ .init(key: "Tone", zhHans: "色调", zhHant: "色調", de: "Ton", fr: "Ton", sv: "Ton", ar: "نبرة"),
|
|
|
301
|
+ .init(key: "Trail", zhHans: "轨迹", zhHant: "軌跡", de: "Pfad", fr: "Piste", sv: "Stig", ar: "مسار"),
|
|
|
302
|
+ .init(key: "Triumph", zhHans: "凯旋", zhHant: "凱旋", de: "Triumph", fr: "Triomphe", sv: "Triumf", ar: "انتصار"),
|
|
|
303
|
+ .init(key: "True", zhHans: "真实", zhHant: "真實", de: "Wahr", fr: "Vrai", sv: "Sann", ar: "حقيقي"),
|
|
|
304
|
+ .init(key: "Trust", zhHans: "信任", zhHant: "信任", de: "Vertrauen", fr: "Confiance", sv: "Förtroende", ar: "ثقة"),
|
|
|
305
|
+ .init(key: "UI", zhHans: "界面", zhHant: "介面", de: "UI", fr: "UI", sv: "UI", ar: "واجهة"),
|
|
|
306
|
+ .init(key: "Unity", zhHans: "统一", zhHant: "統一", de: "Einheit", fr: "Unité", sv: "Enhet", ar: "وحدة"),
|
|
|
307
|
+ .init(key: "Urban", zhHans: "都市", zhHant: "都市", de: "Urban", fr: "Urbain", sv: "Urban", ar: "حضري"),
|
|
|
308
|
+ .init(key: "UX", zhHans: "体验", zhHant: "體驗", de: "UX", fr: "UX", sv: "UX", ar: "تجربة"),
|
|
|
309
|
+ .init(key: "Vale", zhHans: "谷", zhHant: "谷", de: "Tal", fr: "Vallée", sv: "Dal", ar: "وadi"),
|
|
|
310
|
+ .init(key: "Valor", zhHans: "勇气", zhHant: "勇氣", de: "Tapferkeit", fr: "Vaillance", sv: "Tapperhet", ar: "شجاعة"),
|
|
|
311
|
+ .init(key: "Vault", zhHans: "宝库", zhHant: "寶庫", de: "Tresor", fr: "Coffre", sv: "Valv", ar: "خزنة"),
|
|
|
312
|
+ .init(key: "Vector", zhHans: "向量", zhHant: "向量", de: "Vektor", fr: "Vecteur", sv: "Vektor", ar: "متجه"),
|
|
|
313
|
+ .init(key: "Venture", zhHans: "创业", zhHant: "創業", de: "Unternehmung", fr: "Aventure", sv: "Satsning", ar: "مشروع"),
|
|
|
314
|
+ .init(key: "Vertex", zhHans: "顶点", zhHant: "頂點", de: "Scheitelpunkt", fr: "Sommet", sv: "Toppunkt", ar: "رأس"),
|
|
|
315
|
+ .init(key: "Vibe", zhHans: "氛围", zhHant: "氛圍", de: "Stimmung", fr: "Ambiance", sv: "Stämning", ar: "أجواء"),
|
|
|
316
|
+ .init(key: "Vibrant", zhHans: "活力", zhHant: "活力", de: "Lebhaft", fr: "Vibrant", sv: "Livfull", ar: "حيوي"),
|
|
|
317
|
+ .init(key: "Vision", zhHans: "愿景", zhHant: "願景", de: "Vision", fr: "Vision", sv: "Vision", ar: "رؤية"),
|
|
|
318
|
+ .init(key: "Visionary", zhHans: "远见", zhHant: "遠見", de: "Visionär", fr: "Visionnaire", sv: "Visionär", ar: "رؤيوي"),
|
|
|
319
|
+ .init(key: "Visual", zhHans: "视觉", zhHant: "視覺", de: "Visuell", fr: "Visuel", sv: "Visuell", ar: "بصري"),
|
|
|
320
|
+ .init(key: "Vital", zhHans: "关键", zhHant: "關鍵", de: "Vital", fr: "Vital", sv: "Vital", ar: "حيوي"),
|
|
|
321
|
+ .init(key: "Vivid", zhHans: "鲜明", zhHant: "鮮明", de: "Lebhaft", fr: "Vif", sv: "Livfull", ar: "حي"),
|
|
|
322
|
+ .init(key: "Voice", zhHans: "声音", zhHant: "聲音", de: "Stimme", fr: "Voix", sv: "Röst", ar: "صوت"),
|
|
|
323
|
+ .init(key: "Voyage", zhHans: "航程", zhHant: "航程", de: "Reise", fr: "Voyage", sv: "Resa", ar: "رحلة"),
|
|
|
324
|
+ .init(key: "Wave", zhHans: "波浪", zhHant: "波浪", de: "Welle", fr: "Vague", sv: "Våg", ar: "موجة"),
|
|
|
325
|
+ .init(key: "White", zhHans: "白", zhHant: "白", de: "Weiß", fr: "Blanc", sv: "Vit", ar: "أبيض"),
|
|
|
326
|
+ .init(key: "Zen", zhHans: "禅", zhHant: "禪", de: "Zen", fr: "Zen", sv: "Zen", ar: "zen"),
|
|
|
327
|
+ .init(key: "Zenith", zhHans: "天顶", zhHant: "天頂", de: "Zenit", fr: "Zénith", sv: "Zenit", ar: "ذروة"),
|
|
|
328
|
+ .init(key: "Flux", zhHans: "流变", zhHant: "流變", de: "Fluss", fr: "Flux", sv: "Flöde", ar: "flux"),
|
|
|
329
|
+ .init(key: "Flow", zhHans: "流动", zhHant: "流動", de: "Fluss", fr: "Flux", sv: "Flöde", ar: "flow")
|
|
|
330
|
+]
|
|
|
331
|
+
|
|
|
332
|
+private func buildTable(_ keyPath: KeyPath<TemplateNameTokenRow, String>) -> [String: String] {
|
|
|
333
|
+ Dictionary(uniqueKeysWithValues: templateNameTokenRows.map { ($0.key, $0[keyPath: keyPath]) })
|
|
|
334
|
+}
|