-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathInternationalization.html
301 lines (258 loc) · 40.5 KB
/
Internationalization.html
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
<!DOCTYPE HTML>
<html lang="en" class="sidebar-visible no-js light">
<head>
<!-- Book generated using mdBook -->
<meta charset="UTF-8">
<title>Internationalization - Alliance Business Suite Documentation</title>
<!-- Custom HTML head -->
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta name="description" content="The Ultimate Business Development Platform">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#ffffff" />
<link rel="icon" href="favicon.svg">
<link rel="shortcut icon" href="favicon.png">
<link rel="stylesheet" href="css/variables.css">
<link rel="stylesheet" href="css/general.css">
<link rel="stylesheet" href="css/chrome.css">
<link rel="stylesheet" href="css/print.css" media="print">
<!-- Fonts -->
<link rel="stylesheet" href="FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="fonts/fonts.css">
<!-- Highlight.js Stylesheets -->
<link rel="stylesheet" href="highlight.css">
<link rel="stylesheet" href="tomorrow-night.css">
<link rel="stylesheet" href="ayu-highlight.css">
<!-- Custom theme stylesheets -->
</head>
<body>
<!-- Provide site root to javascript -->
<script type="text/javascript">
var path_to_root = "";
var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "navy" : "light";
</script>
<!-- Work around some values being stored in localStorage wrapped in quotes -->
<script type="text/javascript">
try {
var theme = localStorage.getItem('mdbook-theme');
var sidebar = localStorage.getItem('mdbook-sidebar');
if (theme.startsWith('"') && theme.endsWith('"')) {
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
}
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
}
} catch (e) { }
</script>
<!-- Set the theme before any content is loaded, prevents flash -->
<script type="text/javascript">
var theme;
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
if (theme === null || theme === undefined) { theme = default_theme; }
var html = document.querySelector('html');
html.classList.remove('no-js')
html.classList.remove('light')
html.classList.add(theme);
html.classList.add('js');
</script>
<!-- Hide / unhide sidebar before it is displayed -->
<script type="text/javascript">
var html = document.querySelector('html');
var sidebar = 'hidden';
if (document.body.clientWidth >= 1080) {
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
sidebar = sidebar || 'visible';
}
html.classList.remove('sidebar-visible');
html.classList.add("sidebar-" + sidebar);
</script>
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
<div class="sidebar-scrollbox">
<ol class="chapter"><li class="chapter-item "><a href="index.html"><strong aria-hidden="true">1.</strong> Overview</a></li><li class="chapter-item "><a href="About.html"><strong aria-hidden="true">2.</strong> About</a></li><li class="chapter-item "><a href="Roadmap.html"><strong aria-hidden="true">3.</strong> Roadmap</a></li><li class="chapter-item "><a href="References.html"><strong aria-hidden="true">4.</strong> API Reference</a></li><li class="chapter-item "><a href="Requirements.html"><strong aria-hidden="true">5.</strong> Requirements</a></li><li class="chapter-item "><a href="Getting-started.html"><strong aria-hidden="true">6.</strong> Getting Started</a></li><li class="chapter-item "><a href="Fundamentals.html"><strong aria-hidden="true">7.</strong> Fundamentals</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Fundamentals/Installation.html"><strong aria-hidden="true">7.1.</strong> Installation</a></li><li class="chapter-item "><a href="Fundamentals/Configuration.html"><strong aria-hidden="true">7.2.</strong> Configuration</a></li><li class="chapter-item "><a href="Fundamentals/Options.html"><strong aria-hidden="true">7.3.</strong> Options</a></li><li class="chapter-item "><a href="Fundamentals/Environments.html"><strong aria-hidden="true">7.4.</strong> Environments</a></li><li class="chapter-item "><a href="Fundamentals/Hosting.html"><strong aria-hidden="true">7.5.</strong> Hosting</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Fundamentals/Hosting/Hosting-on-ABS-Cloud.html"><strong aria-hidden="true">7.5.1.</strong> Hosting on ABS Cloud</a></li><li class="chapter-item "><a href="Fundamentals/Hosting/Hosting-on-IIS.html"><strong aria-hidden="true">7.5.2.</strong> Hosting on IIS</a></li></ol></li><li class="chapter-item "><a href="Fundamentals/Logging.html"><strong aria-hidden="true">7.6.</strong> Logging</a></li><li class="chapter-item "><a href="Fundamentals/Routing.html"><strong aria-hidden="true">7.7.</strong> Routing</a></li><li class="chapter-item "><a href="Fundamentals/Static-Files.html"><strong aria-hidden="true">7.8.</strong> Static Files</a></li><li class="chapter-item "><a href="Fundamentals/Data-Access.html"><strong aria-hidden="true">7.9.</strong> Data Access</a></li></ol></li><li class="chapter-item "><a href="Web-Development.html"><strong aria-hidden="true">8.</strong> Web Development</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Web-Development/Web-Portals.html"><strong aria-hidden="true">8.1.</strong> Web Portals</a></li><li class="chapter-item "><a href="Web-Development/Web-Pages.html"><strong aria-hidden="true">8.2.</strong> Web Pages</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Web-Development/Web-Pages/Razor-Pages.html"><strong aria-hidden="true">8.2.1.</strong> Razor Pages</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Web-Development/Web-Pages/Razor-Pages/Razor-Syntax.html"><strong aria-hidden="true">8.2.1.1.</strong> Razor Syntax</a></li></ol></li><li class="chapter-item "><a href="Web-Development/Web-Pages/Blazor-Pages.html"><strong aria-hidden="true">8.2.2.</strong> Blazor Pages</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Web-Development/Web-Pages/Blazor-Pages/Data-Binding.html"><strong aria-hidden="true">8.2.2.1.</strong> Data Binding</a></li><li class="chapter-item "><a href="Web-Development/Web-Pages/Blazor-Pages/Event-Handling.html"><strong aria-hidden="true">8.2.2.2.</strong> Event Handling</a></li><li class="chapter-item "><a href="Web-Development/Web-Pages/Blazor-Pages/Forms-and-validation.html"><strong aria-hidden="true">8.2.2.3.</strong> Forms and Validation</a></li></ol></li></ol></li><li class="chapter-item "><a href="Web-Development/Web-Themes.html"><strong aria-hidden="true">8.3.</strong> Web Themes</a></li><li class="chapter-item "><a href="Web-Development/Web-Templates.html"><strong aria-hidden="true">8.4.</strong> Web Templates</a></li><li class="chapter-item "><a href="Web-Development/Web-Components.html"><strong aria-hidden="true">8.5.</strong> Web Components</a></li><li class="chapter-item "><a href="Web-Development/Client-Side-Apps.html"><strong aria-hidden="true">8.6.</strong> Client Side-Apps</a></li><li class="chapter-item "><a href="Web-Development/Session-and-state-management.html"><strong aria-hidden="true">8.7.</strong> Sessions and State</a></li></ol></li><li class="chapter-item "><a href="Web-API-Development.html"><strong aria-hidden="true">9.</strong> Web API Development</a></li><li class="chapter-item "><a href="Module-Development.html"><strong aria-hidden="true">10.</strong> Module Development</a></li><li class="chapter-item expanded "><a href="Internationalization.html" class="active"><strong aria-hidden="true">11.</strong> Internationalization</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Internationalization/Localization-Strings.html"><strong aria-hidden="true">11.1.</strong> Localization Strings</a></li></ol></li><li class="chapter-item "><a href="Components.html"><strong aria-hidden="true">12.</strong> Components</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Components/Alliance-Core-Libraries.html"><strong aria-hidden="true">12.1.</strong> Alliance Core Libraries</a></li><li class="chapter-item "><a href="Components/Alliance-Business-Model.html"><strong aria-hidden="true">12.2.</strong> Alliance Business Model</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Components/Alliance-Business-Model/Records.html"><strong aria-hidden="true">12.2.1.</strong> Records</a></li><li class="chapter-item "><a href="Components/Alliance-Business-Model/Extensibility.html"><strong aria-hidden="true">12.2.2.</strong> Extensibility</a></li></ol></li><li class="chapter-item "><a href="Components/Alliance-Passport-Service.html"><strong aria-hidden="true">12.3.</strong> Alliance Passport Service</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Components/Alliance-Passport-Service/Account-Holders.html"><strong aria-hidden="true">12.3.1.</strong> Account Holders</a></li><li class="chapter-item "><a href="Components/Alliance-Passport-Service/Business-Tenants.html"><strong aria-hidden="true">12.3.2.</strong> Business Tenants</a></li><li class="chapter-item "><a href="Components/Alliance-Passport-Service/Security-Roles.html"><strong aria-hidden="true">12.3.3.</strong> Security Roles</a></li><li class="chapter-item "><a href="Components/Alliance-Passport-Service/Security-Groups.html"><strong aria-hidden="true">12.3.4.</strong> Security Groups</a></li><li class="chapter-item "><a href="Components/Alliance-Passport-Service/Business-PErmissions.html"><strong aria-hidden="true">12.3.5.</strong> Business Permissions</a></li><li class="chapter-item "><a href="Components/Alliance-Passport-Service/Connect-protocols.html"><strong aria-hidden="true">12.3.6.</strong> Connect Protocols</a></li></ol></li><li class="chapter-item "><a href="Components/Alliance-Business-Platform.html"><strong aria-hidden="true">12.4.</strong> Alliance Business Platform</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Components/Alliance-Business-Platform/APIs.html"><strong aria-hidden="true">12.4.1.</strong> Application Programming Interfaces</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Components/Alliance-Business-Platform/APIs/REST-API.html"><strong aria-hidden="true">12.4.1.1.</strong> REST API</a></li><li class="chapter-item "><a href="Components/Alliance-Business-Platform/APIs/GraphQl-API.html"><strong aria-hidden="true">12.4.1.2.</strong> GraphQl API</a></li><li class="chapter-item "><a href="Components/Alliance-Business-Platform/APIs/GRPC-API.html"><strong aria-hidden="true">12.4.1.3.</strong> GRPC API</a></li><li class="chapter-item "><a href="Components/Alliance-Business-Platform/APIs/ABS-Tx.html"><strong aria-hidden="true">12.4.1.4.</strong> ABS TermX</a></li></ol></li><li class="chapter-item "><a href="Components/Alliance-Business-Platform/SDKs.html"><strong aria-hidden="true">12.4.2.</strong> Software Development Kits</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Components/Alliance-Business-Platform/SDKs/SDK-Nuget-Package.html"><strong aria-hidden="true">12.4.2.1.</strong> .NET SDK</a></li><li class="chapter-item "><a href="Components/Alliance-Business-Platform/SDKs/DTOs-Nuget-Package.html"><strong aria-hidden="true">12.4.2.2.</strong> .NET DTOs Library</a></li><li class="chapter-item "><a href="Components/Alliance-Business-Platform/SDKs/PowerShell-CLI-Module.html"><strong aria-hidden="true">12.4.2.3.</strong> PowerShell CLI</a></li></ol></li></ol></li><li class="chapter-item "><a href="Components/Alliance-Business-Studio.html"><strong aria-hidden="true">12.5.</strong> Alliance Business Studio</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Components/Alliance-Business-Studio/Layout.html"><strong aria-hidden="true">12.5.1.</strong> Layout</a></li><li class="chapter-item "><a href="Components/Alliance-Business-Studio/Portals.html"><strong aria-hidden="true">12.5.2.</strong> Portals</a></li></ol></li><li class="chapter-item "><a href="Components/Alliance-Business-Pocket.html"><strong aria-hidden="true">12.6.</strong> Alliance Business Pocket</a></li></ol></li><li class="chapter-item "><a href="Services.html"><strong aria-hidden="true">13.</strong> Services</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Services/BlockChains-Service.html"><strong aria-hidden="true">13.1.</strong> BlockChains Service</a></li><li class="chapter-item "><a href="Services/Tenants-Service.html"><strong aria-hidden="true">13.2.</strong> Multi-Tenancy Service</a></li><li class="chapter-item "><a href="Services/Forex-Service.html"><strong aria-hidden="true">13.3.</strong> Multi-Currency Service</a></li><li class="chapter-item "><a href="Services/Pricing-Service.html"><strong aria-hidden="true">13.4.</strong> Pricing Service</a></li><li class="chapter-item "><a href="Services/Wallets-Service.html"><strong aria-hidden="true">13.5.</strong> Wallets Service</a></li></ol></li><li class="chapter-item "><a href="Modules.html"><strong aria-hidden="true">14.</strong> Official Modules</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Modules/IAM.html"><strong aria-hidden="true">14.1.</strong> IAM</a></li><li class="chapter-item "><a href="Modules/Accounting.html"><strong aria-hidden="true">14.2.</strong> Accounting</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Modules/Accounting/Accounts.html"><strong aria-hidden="true">14.2.1.</strong> Accounts</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Modules/Accounting/Accounts/Accounting-Records.html"><strong aria-hidden="true">14.2.1.1.</strong> Accounting Records</a></li></ol></li><li class="chapter-item "><a href="Modules/Accounting/Billing.html"><strong aria-hidden="true">14.2.2.</strong> Billing</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Modules/ACCOUNTING/Billing/Billing-Records.html"><strong aria-hidden="true">14.2.2.1.</strong> Billing Records</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Modules/ACCOUNTING/Billing/Billing-Records/Orders.html"><strong aria-hidden="true">14.2.2.1.1.</strong> Orders</a></li><li class="chapter-item "><a href="Modules/ACCOUNTING/Billing/Billing-Records/Invoices.html"><strong aria-hidden="true">14.2.2.1.2.</strong> Invoices</a></li><li class="chapter-item "><a href="Modules/ACCOUNTING/Billing/Billing-Records/Payments.html"><strong aria-hidden="true">14.2.2.1.3.</strong> Payments</a></li></ol></li><li class="chapter-item "><a href="Modules/ACCOUNTING/Billing/Billing-Item-Records.html"><strong aria-hidden="true">14.2.2.2.</strong> Billing Item Records</a></li></ol></li><li class="chapter-item "><a href="Modules/Accounting/Ledgers.html"><strong aria-hidden="true">14.2.3.</strong> Ledgers</a></li></ol></li><li class="chapter-item "><a href="Modules/Assets-Manager.html"><strong aria-hidden="true">14.3.</strong> Assets Manager</a></li><li class="chapter-item "><a href="Modules/CRM.html"><strong aria-hidden="true">14.4.</strong> Contact Sight</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Modules/CRM/Contacts.html"><strong aria-hidden="true">14.4.1.</strong> Contacts</a></li><li class="chapter-item "><a href="Modules/CRM/Contact-Profiles.html"><strong aria-hidden="true">14.4.2.</strong> Contact Profiles</a></li><li class="chapter-item "><a href="Modules/CRM/Contact-Relations.html"><strong aria-hidden="true">14.4.3.</strong> Contact Relations</a></li></ol></li><li class="chapter-item "><a href="Modules/ECOMMERCE.html"><strong aria-hidden="true">14.5.</strong> eCommerce</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Modules/ECOMMERCE/Carts.html"><strong aria-hidden="true">14.5.1.</strong> Carts</a></li><li class="chapter-item "><a href="Modules/ECOMMERCE/Wishlists.html"><strong aria-hidden="true">14.5.2.</strong> Wishlists</a></li><li class="chapter-item "><a href="Modules/ECOMMERCE/Comparisons.html"><strong aria-hidden="true">14.5.3.</strong> Comparisons</a></li><li class="chapter-item "><a href="Modules/ECOMMERCE/Recommendations.html"><strong aria-hidden="true">14.5.4.</strong> Recommendations</a></li><li class="chapter-item "><a href="Modules/ECOMMERCE/Products.html"><strong aria-hidden="true">14.5.5.</strong> Products</a></li><li class="chapter-item "><a href="Modules/ECOMMERCE/Services.html"><strong aria-hidden="true">14.5.6.</strong> Services</a></li><li class="chapter-item "><a href="Modules/ECOMMERCE/Subscriptions.html"><strong aria-hidden="true">14.5.7.</strong> Subscriptions</a></li><li class="chapter-item "><a href="Modules/ECOMMERCE/Payments.html"><strong aria-hidden="true">14.5.8.</strong> Payments</a></li><li class="chapter-item "><a href="Modules/ECOMMERCE/Shipping.html"><strong aria-hidden="true">14.5.9.</strong> Shipping</a></li></ol></li><li class="chapter-item "><a href="Modules/LOGISTICS.html"><strong aria-hidden="true">14.6.</strong> Logistics</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Modules/LOGISTICS/Stock-Items.html"><strong aria-hidden="true">14.6.1.</strong> Stock Items</a></li></ol></li><li class="chapter-item "><a href="Modules/Sales-Hub.html"><strong aria-hidden="true">14.7.</strong> Sales Hub</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Modules/Sales-Hub/Sales-Flows.html"><strong aria-hidden="true">14.7.1.</strong> Sales Flows</a></li><li class="chapter-item "><a href="Modules/Sales-Hub/Sales-Records.html"><strong aria-hidden="true">14.7.2.</strong> Sales Records</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Modules/Sales-Hub/Sales-Records/Deal-Units.html"><strong aria-hidden="true">14.7.2.1.</strong> Deal Units</a></li><li class="chapter-item "><a href="Modules/Sales-Hub/Sales-Records/Quotes.html"><strong aria-hidden="true">14.7.2.2.</strong> Quotes</a></li><li class="chapter-item "><a href="Modules/Sales-Hub/Sales-Records/Orders.html"><strong aria-hidden="true">14.7.2.3.</strong> Orders</a></li></ol></li></ol></li><li class="chapter-item "><a href="Modules/CMS.html"><strong aria-hidden="true">14.8.</strong> Media Portals</a></li><li class="chapter-item "><a href="Modules/Workflows.html"><strong aria-hidden="true">14.9.</strong> Workflows Studio</a></li></ol></li><li class="chapter-item "><a href="Integrations.html"><strong aria-hidden="true">15.</strong> Official Integrations</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Integrations/Self.html"><strong aria-hidden="true">15.1.</strong> ABS Self</a></li><li class="chapter-item "><a href="Integrations/Authorize.Net.html"><strong aria-hidden="true">15.2.</strong> Authorize.net</a></li><li class="chapter-item "><a href="Integrations/ePayco.html"><strong aria-hidden="true">15.3.</strong> ePayco</a></li><li class="chapter-item "><a href="Integrations/Facebook.html"><strong aria-hidden="true">15.4.</strong> Facebook</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Integrations/Facebook/Commerce.html"><strong aria-hidden="true">15.4.1.</strong> Commerce</a></li><li class="chapter-item "><a href="Integrations/Facebook/Marketing.html"><strong aria-hidden="true">15.4.2.</strong> Marketing</a></li></ol></li><li class="chapter-item "><a href="Integrations/Google.html"><strong aria-hidden="true">15.5.</strong> Google</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Integrations/Google/Merchant.html"><strong aria-hidden="true">15.5.1.</strong> Merchant</a></li><li class="chapter-item "><a href="Integrations/Google/My-Business.html"><strong aria-hidden="true">15.5.2.</strong> My Business</a></li></ol></li><li class="chapter-item "><a href="Integrations/Mercado-Libre.html"><strong aria-hidden="true">15.6.</strong> MercadoLibre</a></li><li class="chapter-item "><a href="Integrations/Stripe.html"><strong aria-hidden="true">15.7.</strong> Stripe</a></li></ol></li><li class="chapter-item "><a href="Security.html"><strong aria-hidden="true">16.</strong> Security</a></li><li class="chapter-item "><a href="Advanced.html"><strong aria-hidden="true">17.</strong> Advanced</a></li><li class="chapter-item "><a href="Online-Services.html"><strong aria-hidden="true">18.</strong> Online Services</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Online-Services/REST-API.html"><strong aria-hidden="true">18.1.</strong> AOS REST API</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Online-Services/REST-API/Authentication-and-Authorization.html"><strong aria-hidden="true">18.1.1.</strong> Authentication and Authorization</a></li></ol></li><li class="chapter-item "><a href="Online-Services/GraphQl-API.html"><strong aria-hidden="true">18.2.</strong> AOS GraphQl API</a></li><li class="chapter-item "><a href="Online-Services/Alliance-Business-Cloud.html"><strong aria-hidden="true">18.3.</strong> Alliance Business Cloud</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Online-Services/Alliance-Business-Cloud/About.html"><strong aria-hidden="true">18.3.1.</strong> About</a></li><li class="chapter-item "><a href="Online-Services/Alliance-Business-Cloud/View-Statistics.html"><strong aria-hidden="true">18.3.2.</strong> View Statistics</a></li><li class="chapter-item "><a href="Online-Services/Alliance-Business-Cloud/Hosting-Features.html"><strong aria-hidden="true">18.3.3.</strong> Hosting-Features</a></li><li class="chapter-item "><a href="Online-Services/Alliance-Business-Cloud/Allocated-and-Consumed-Resources.html"><strong aria-hidden="true">18.3.4.</strong> Allocated and Consumed Resources</a></li></ol></li><li class="chapter-item "><a href="Online-Services/Alliance-Pay-Platform.html"><strong aria-hidden="true">18.4.</strong> Alliance Pay Platform</a></li><li class="chapter-item "><a href="Online-Services/Infinity-Comex-Marketplace.html"><strong aria-hidden="true">18.5.</strong> Infinity Comex Marketplace</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="Online-Services/Infinity-Comex-Marketplace/Policies/Refunds-Policy.html"><strong aria-hidden="true">18.5.1.</strong> Refunds Policy</a></li><li class="chapter-item "><a href="Online-Services/Infinity-Comex-Marketplace/Policies/Returns-Policy.html"><strong aria-hidden="true">18.5.2.</strong> Returns Policy</a></li><li class="chapter-item "><a href="Online-Services/Infinity-Comex-Marketplace/Policies/Product-Disclaimers.html"><strong aria-hidden="true">18.5.3.</strong> Product Disclaimers</a></li><li class="chapter-item "><a href="Online-Services/Infinity-Comex-Marketplace/Policies/Price-Matching.html"><strong aria-hidden="true">18.5.4.</strong> Price Matcing Policy</a></li><li class="chapter-item "><a href="Online-Services/Infinity-Comex-Marketplace/Pricing-&-Promos.html"><strong aria-hidden="true">18.5.5.</strong> Promo Codes</a></li></ol></li><li class="chapter-item "><a href="Online-Services/Terms-and-Conditions.html"><strong aria-hidden="true">18.6.</strong> Terms and Conditions</a></li></ol></li><li class="chapter-item "><a href="Changelog.html"><strong aria-hidden="true">19.</strong> Changelog</a></li><li class="chapter-item "><a href="Contributing.html"><strong aria-hidden="true">20.</strong> Contributing</a></li><li class="chapter-item "><a href="CODE_OF_CONDUCT.html"><strong aria-hidden="true">21.</strong> Code of Conduct</a></li><li class="chapter-item "><a href="THIRD_PARTY_NOTICES.html"><strong aria-hidden="true">22.</strong> Third Party Notices</a></li><li class="chapter-item "><a href="License.html"><strong aria-hidden="true">23.</strong> License</a></li></ol> </div>
<div id="sidebar-resize-handle" class="sidebar-resize-handle"></div>
</nav>
<div id="page-wrapper" class="page-wrapper">
<div class="page">
<div id="menu-bar-hover-placeholder"></div>
<div id="menu-bar" class="menu-bar sticky bordered">
<div class="left-buttons">
<button id="sidebar-toggle" class="icon-button" type="button" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
<i class="fa fa-bars"></i>
</button>
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
<i class="fa fa-paint-brush"></i>
</button>
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
<li role="none"><button role="menuitem" class="theme" id="light">Light (default)</button></li>
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
</ul>
<button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar">
<i class="fa fa-search"></i>
</button>
</div>
<h1 class="menu-title">Alliance Business Suite Documentation</h1>
<div class="right-buttons">
<a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i>
</a>
</div>
</div>
<div id="search-wrapper" class="hidden">
<form id="searchbar-outer" class="searchbar-outer">
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
</form>
<div id="searchresults-outer" class="searchresults-outer hidden">
<div id="searchresults-header" class="searchresults-header"></div>
<ul id="searchresults">
</ul>
</div>
</div>
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
<script type="text/javascript">
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
});
</script>
<div id="content" class="content">
<main>
<h1 id="internationalization-in-the-alliance-business-suite"><a class="header" href="#internationalization-in-the-alliance-business-suite">Internationalization in the Alliance Business Suite</a></h1>
<p>A multilingual website allows the site to reach a wider audience. The Alliance Business Suite provides convenient, easy-to-use solutions for localizing portals into different languages and cultures.</p>
<p>Internationalization involves Globalization and Localization. Globalization is the process of designing apps that support different cultures. Globalization adds support for the input, display, and output of a defined set of language scripts that relate to specific geographic areas.</p>
<p>Localization is the process of adapting a globalized app, which you have already processed for localizability, to a particular culture/locale. For more information see Globalization and localization terms near the end of this document.</p>
<h2 id="how-to-make-the-apps-content-localizable"><a class="header" href="#how-to-make-the-apps-content-localizable">How to make the app's content localizable</a></h2>
<p>The Alliance Business Suite was architected to allow customers to obtain this functionality right out of the box. Through simple front-end settings for each portal, customers can select a default language for each portal and localize strings and HTML fragments by just calling the <code>_()</code> method available through code on every web content entry. (e.g: _("Hello World"))</p>
<p>Once your localizable strings have been placed in code using the String Localizer function. you can <a href="Internationalization/Localization-Strings">create localization resources using your instance's admin portal</a>.</p>
<h2 id="implement-a-strategy-to-select-the-languageculture-for-each-request"><a class="header" href="#implement-a-strategy-to-select-the-languageculture-for-each-request">Implement a strategy to select the language/culture for each request</a></h2>
<p>Localization is already set up using the ACL. Additional supported languages, as well as the primary content language for each portal, can be selected on each's portal configuration manager.</p>
<h3 id="querystringrequestcultureprovider"><a class="header" href="#querystringrequestcultureprovider">QueryStringRequestCultureProvider</a></h3>
<p>Portals can use a query string to set the Culture Info. For apps that use the cookie or Accept-Language header approach, adding a query string to the URL is useful for debugging and testing code. By default, the QueryStringRequestCultureProvider is registered as the first localization provider in the RequestCultureProvider list. You pass the query string parameters culture and UI-culture. The following example sets the specific culture (language and region) to Spanish/Mexico:</p>
<pre><code>http://yourdomain/?culture=es-MX&ui-culture=es-MX
</code></pre>
<p>If you only pass in one of the two (culture or ui-culture), the query string provider will set both values using the one you passed in. For example, setting just the culture will set both the Culture and the UICulture:</p>
<pre><code>http://localhost:5000/?culture=es-MX
</code></pre>
<h3 id="cookierequestcultureprovider"><a class="header" href="#cookierequestcultureprovider">CookieRequestCultureProvider</a></h3>
<p>Production apps will often provide a mechanism to set the culture with the ASP.NET Core culture cookie. Use the MakeCookieValue method to create a cookie.</p>
<p>The CookieRequestCultureProvider DefaultCookieName returns the default cookie name used to track the user's preferred culture information. The default cookie name is .AspNetCore.Culture.</p>
<p>The cookie format is c=%LANGCODE%|uic=%LANGCODE%, where c is Culture and uic is UICulture, for example:</p>
<pre><code>c=en-UK|uic=en-US
</code></pre>
<p>If you only specify one of culture info and UI culture, the specified culture will be used for both culture info and UI culture.</p>
<h3 id="the-accept-language-http-header"><a class="header" href="#the-accept-language-http-header">The Accept-Language HTTP header</a></h3>
<p>The Accept-Language header is settable in most browsers and was originally intended to specify the user's language. This setting indicates what the browser has been set to send or has inherited from the underlying operating system. The Accept-Language HTTP header from a browser request isn't an infallible way to detect the user's preferred language (see Setting language preferences in a browser). A production app should include a way for a user to customize their choice of culture.</p>
<h4 id="set-the-accept-language-http-header-in-ie"><a class="header" href="#set-the-accept-language-http-header-in-ie">Set the Accept-Language HTTP header in IE</a></h4>
<ol>
<li>
<p>From the gear icon, tap Internet Options.</p>
</li>
<li>
<p>Tap Languages.</p>
</li>
<li>
<p>Internet Options</p>
</li>
<li>
<p>Tap Set Language Preferences.</p>
</li>
<li>
<p>Tap Add a language.</p>
</li>
<li>
<p>Add the language.</p>
</li>
<li>
<p>Tap the language, then tap Move Up.</p>
</li>
</ol>
<h2 id="set-the-culture-programmatically"><a class="header" href="#set-the-culture-programmatically">Set the culture programmatically</a></h2>
<p>You can easily create a component to allow your users to select their preferred culture from the list of supported cultures:</p>
<p>This sample, present on the Header Component for the <a href="https://github.com/FenixAlliance/ABS.Portal.Themes.Turing">Turing Theme</a> shows you how to do so:</p>
<pre><code class="language-csharp">@{
var requestCulture = Context.Features.Get<IRequestCultureFeature>();
var cultureItems = RequestLocalizationOptions.Value.SupportedUICultures
.Select(c => new SelectListItem { Value = c.Name, Text = c.DisplayName })
.ToList();
var returnUrl = string.IsNullOrEmpty(Context.Request.Path) ? "~/" : $"~{Context.Request.Path.Value}";
}
<li class="nav-item dropdown">
<div class="dropdown-menu" aria-labelledby="SelectLang">
<!-- Current Language -->
<h6 class="dropdown-header">
<b> <i class="fas fa-globe-americas"></i>&nbsp; @_("Current Language"): </b>
<b id="CurrencyTip">
@requestCulture.RequestCulture.Culture.TwoLetterISOLanguageName
</b>
</h6>
<div class="dropdown-divider"></div>
@foreach (var item in cultureItems)
{
var value = @item.Value;
<a href="#" onclick="SelectLang('@(value.Replace(" ", ""))')" class="dropdown-item">
<i class="fas fa-language"></i>&nbsp; @item.Text
</a>
}
</div>
<script>
//Select Language
function SelectLang(value) {
cookie = "c=" + value.trim() + "|uic=" + value.trim();
Cookies.set('.AspNetCore.Culture', cookie);
window.location.reload();
}
</script>
</li>
</code></pre>
<h2 id="globalization-and-localization-terms"><a class="header" href="#globalization-and-localization-terms">Globalization and localization terms</a></h2>
<p>The process of localizing your portals also requires a basic understanding of relevant character sets commonly used in modern software development and an understanding of the issues associated with them. Although all computers store text as numbers (1's and 0's), different systems store the same text using different numbers. The localization process refers to translating the portal user interface (UI) for a specific culture/locale.</p>
<p>Localizability is an intermediate process for verifying that a globalized app is ready for localization.</p>
<p>The RFC 4646 format for the culture name is {languagecode2}-{country/regioncode2}, where {languagecode2} is the language code and {country/regioncode2} is the subculture code. For example, es-CO for Spanish (Colombia), en-US for English (United States), and en-AU for English (Australia). RFC 4646 is a combination of an ISO 639 two-letter lowercase culture code associated with a language and an ISO 3166 two-letter uppercase subculture code associated with a country or region. </p>
<p>Internationalization is often abbreviated to "I18N". The abbreviation takes the first and last letters and the number of letters between them, so 18 stands for the number of letters between the first "I" and the last "N". The same applies to Globalization (G11N), and Localization (L10N).</p>
<p>Terms:</p>
<ul>
<li><strong>Globalization (G11N)</strong>: The process of making a piece of software to support different languages and regions.</li>
<li><strong>Localization (L10N)</strong>: The process of customizing an app for a given language and region.</li>
<li><strong>Internationalization (I18N)</strong>: Describes both globalization and localization.</li>
<li><strong>Culture</strong>: It's a language and, optionally, a region.</li>
<li><strong>Neutral culture</strong>: A culture that has a specified language, but not a region. (for example "en", "es")</li>
<li><strong>Specific culture</strong>: A culture that has a specified language and region. (for example "en-US", "en-GB", "es-CL")</li>
<li><strong>Parent Culture</strong>: The neutral culture that contains a specific culture. (for example, "en" is the parent culture of "en-US" and "en-GB")</li>
<li><strong>Locale</strong>: A locale is the same as a culture.</li>
</ul>
</main>
<nav class="nav-wrapper" aria-label="Page navigation">
<!-- Mobile navigation buttons -->
<a rel="prev" href="Module-Development.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
<i class="fa fa-angle-left"></i>
</a>
<a rel="next" href="Internationalization/Localization-Strings.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
<i class="fa fa-angle-right"></i>
</a>
<div style="clear: both"></div>
</nav>
</div>
</div>
<nav class="nav-wide-wrapper" aria-label="Page navigation">
<a rel="prev" href="Module-Development.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
<i class="fa fa-angle-left"></i>
</a>
<a rel="next" href="Internationalization/Localization-Strings.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
<i class="fa fa-angle-right"></i>
</a>
</nav>
</div>
<script type="text/javascript">
window.playground_copyable = true;
</script>
<script src="elasticlunr.min.js" type="text/javascript" charset="utf-8"></script>
<script src="mark.min.js" type="text/javascript" charset="utf-8"></script>
<script src="searcher.js" type="text/javascript" charset="utf-8"></script>
<script src="clipboard.min.js" type="text/javascript" charset="utf-8"></script>
<script src="highlight.js" type="text/javascript" charset="utf-8"></script>
<script src="book.js" type="text/javascript" charset="utf-8"></script>
<!-- Custom JS scripts -->
</body>
</html>