Customize Translation
Kiosk Client allows customization of the translation files. All supported translation files are deployed by the installer under <InstallationFolder>\Translations folder.
All localization files should have UTF-8 encoding set.
To customize the translation content, create a subfolder named Translations in the Custom folder, in C:\ProgramData\NEC\kiosk\Custom. Create custom translation files only for the languages for which customization is desired. The files can have the same name as those in the installation directory, or they can be named with a .overrides.json suffix.
In the example below, customizations were made for the en-US version, so this is the only file what appears under custom Translations subfolder.
Each resource file has the same structure: main section is Pages which has sub-sections named after each page displayed in the application.
In the custom json files with translations, only the tags for which a custom translation is desired will be mentioned, while maintaining the structure of the install resource file. The translations for the remaining tags will be sourced from the translation file located in the installation folder.
Example
Customizing the default text of the Check In/Check Out buttons can be easily achieved by adding only the CheckIn/CheckOut tags under Pages.Home section in en-us.json or en-us.overrides.json file in the custom folder.
en-US.json or en-US.overrides.json
{
"Pages": {
"Home": {
"CheckIn": "START",
"CheckOut": "END"
}
}
}
When default text is changed, the customized text should fit in the overall user interface layout. A translation that is too long may overlap nearby text or pictures.
Customizing Kiosk Pages
Here are the maximum string sizes you should use in each page, using English text as an example:
Section name | Text | Max Word Length (given the font size) |
---|---|---|
Language | "English": "English", "Spanish": "Español", "Italian": "Italiana", "Malay": "Melayu", "Chinese": "中文", "Japanese": "日本語", "German": "Deutsche", "French": "Française", "Portuguese": "Português", "Korean": "한국어", "Romanian": "Română", "Arabic": "العربية", "Russian": "Pусский", "Vietnamese": "Tiếng Việt", "Thai": "แบบไทย", "TraditionalChinese": "中國傳統的", "Indonesian": "Indonesia" |
12 characters |
Common | "Loading": "Loading...", | 60 characters |
"UserIdleTimeout": "Your session is about to expire.\nYou will be automatically redirected to the main screen in {{idleCountDown}}.\n\nClick OK to continue your session." | ~1000 characters | |
Navigation | "Assistance": "Assistance", "IAgree": "I Agree", "Cancel": "Start Over", "CancelAction": "Cancel", "Next": "Next", "Previous": "Previous", "Back": "Back", "Verify": "Verify", "AdditionalServices": "Additional Services", "ConfirmCheckIn": "Confirm Check In", "Finish": "Finish", "CheckOut": "Check Out", "CreateKeyCard": "Create Key Card", "CreateAnotherCard": "Create Another Card", "TakePhoto": "Take Photo", "Sign": "Submit", "Clear": "Clear", "Credit": "Credit", "AddCard": "Add Credit Card", "SwipeCard": "Payment Method", "CheckIn": "Check In", "Continue": "Continue", "ReplaceExisting": "Replace Existing", "PreCheckIn": "Pre-Check In", "ConfirmPreCheckIn": "Confirm Pre-Check In", "Ok": "OK", "Yes": "Yes", "No": "No" |
15 characters |
Signature | "Title": "Signature", | 60 characters/per line |
"AgreementNote": "By signing and submitting my signature, I confirm that I have read and agreed to the use of all personal information I am providing in accordance with the Global Privacy Policy for Guests, which is available at sg.nec.com/en_SG/privacy/" |
120 characters/per line | |
"Sign": "Sign Here:" | 15 characters | |
GDPR | "Title": "General Data Protection Regulation", | 40 characters/per line |
"FailedToLoadGDPRFile": "Failed to load GDPR file content from {{ filePath }}." | 60 characters | |
HealthDeclaration | "Title": "Select Options", | 60 characters |
Home | "Title": "Select Options", | 60 characters/per line |
"CheckIn": "Check In", "CheckOut": "Check Out", "PreCheckIn": "Pre-Check In", "AdditionalKeys": "Additional Keys", "Extra1": "Complete Early Arrival", "Extra2": "Late Guest Registration", |
24 characters | |
RetrieveBooking | "Title": "Retrieve Booking", | 60 characters/per line |
"EnterBookingReferenceNumber": "Enter Booking Reference Number", "EnterYourName": "Enter Your Name", "EnterYourLastName": "Enter Your Last Name", "EnterYourFullName": "Enter Your Full Name", "EnterYourPhoneNumber": "Enter Your Phone Number", "EnterRoomNumber": "Enter Your Room Number", "EnterCheckInDate": "Enter Your Check In Date", "EnterCheckOutDate": "Enter Your Check Out Date", "EnterDocumentNumber": "Enter Your ID Document Number", |
32 characters | |
"Monday": "Mon", "Tuesday": "Tue", "Wednesday": "Wed", "Thursday": "Thu", "Friday": "Fri", "Saturday": "Sat", "Sunday": "Sun", |
3 characters | |
"January": "January", "February": "February", "March": "March", "April": "April", "May": "May", "June": "June", "July": "July", "August": "August", "September": "September", "October": "October", "November": "November", "December": "December", |
15 characters | |
"OR": "OR", "AND": "AND" |
10 characters | |
Passport | "Title": "Documentation", | 45 characters |
"PleaseScan": "Please insert your documentation into the scanner", "ScanInProgress": "Please wait while the system is scanning your documentation ...", "RemovePassport": "Please remove your identification document from the scanner in order to continue.", "FlipPassport": "Please flip your identification document to the other side and reinsert it into the scanner." |
60 characters | |
Verification | "Title": "Verification", | 45 characters |
"PleaseStandInFrontOfCamera": "Please stand in front of the camera and position your face in the screen below", "PressButton": "Click Take Photo to verify your identity", "VerificationInProgress": "Please wait until your picture is verified.", "VerifyingWait": "Verifying data. Please wait ...", "VerifyingPhoto": "Verifying your photo. Please wait ...", "VerifyingPhotoAlreadyTaken": "Verifying your already taken photo. Please wait ..." |
60 characters | |
BookingDetails | "Title": "Booking Details", | 45 characters |
"AgreementNote": "By submitting this form and any supporting documents, I confirm that I have read and agreed to the use of the personal information. <br />I am giving you in accordance with your Global Privacy Policy for Guests, which is available at sg.nec.com/en_SG/privacy/", "Loading": "Loading ..." |
60 characters | |
PaymentSelect | "Title": "Payment Method", | 45 characters |
"HelpText": "Please select your method of payment" | 60 characters | |
AddCreditCard | "Title": "Add Payment Method", | 45 characters |
"HelpText": "Insert your credit card into the machine", "PaymentRegistered": "A Credit card is already registered to this reservation", "SelectCCType": "Select payment method", "ReadCCDetailsWait": "Reading credit card details. Please wait ..." |
60 characters | |
"BillCreditCard_CheckIn": "Credit card ending in {{ last4Digits }} was successfully added and will be used for check in.\n\nPress Continue to continue checking in, or Back to review your booking details.", "BillCreditCard_CheckOut": "Credit card ending in {{ last4Digits }} was successfully added and will be used for check out.\n\nPress Continue to continue checking out, or Back to review your invoice.", |
~1000 characters | |
"CardSwipe": "Card Swipe", | 15 characters | |
"HelpText": "Insert bills into the bill collector and insert any coins into the coin selector" | 60 characters | |
Keycard | "Title": "Key Card", | 45 characters |
"HelpText": "Take a Key Card and place it on the Key Card Encoder to register the key.<br/>Press 'Create Key Card' to get your room key.", "CardEncodedText": "Your Room key card is ready.<br/>You can press 'Create Another Card' to get another room key, or press Next to continue.", "Loading": "Preparing your key card. Please wait ..." |
60 characters | |
Completed | "HelpTextCheckIn": "Congratulations, you have successfully checked into room <span>{{roomNumber}}</span>.", "HelpTextCheckOut": "Congratulations, you have checked out of room <span>{{roomNumber}}</span>. Please return your room keys.", "HelpTextCheckIn2": "We hope you enjoy your stay!", "HelpTextCheckOut2": "See you again soon!", "Loading": "Loading ..." |
60 characters |
"CheckInTitle": "Check In Completed", "CheckOutTitle": "Check Out Completed", |
45 characters | |
FolioDetails | "Title": "Invoice", | 45 characters |
"CreditCard": "Credit Card:", | 15 characters | |
"Loading": "Retrieving your booking details. Please wait ...", | 60 characters | |
"NoCreditCard": "No card found" | 20 characters | |
SendFolioDetails | "EmailSubject": "Billing summary for your stay", "InvoiceCopy": "Would you like a copy of your invoice?", "Email": "Email", "EnterAddress": "< email address >", "MultipleEmails": "Multiple email addresses need to be separated by a comma.", "Print": "Print", "Yes": "Yes", "No": "No", "SelectCopy": "Select from the option(s) available for your Invoice copy", "Other": "< Enter email address >" |
- |
ReservationInfo | "BookingReferenceNo": "Booking Reference No.", "FirstName": "First Name:", "LastName": "Last Name:", "Residence": "Country of Residence:", "PassportNumber": "Document Number:", "RoomType": "Room Type:", "RoomNumber": "Room Number:", "NumberofGuests": "Number of Guests:", "Rooms": "Number of Rooms:", "ExtraBeds": "Number of Extra Beds:", "Adults": "Number of Adults:", "Children": "Number of Children:", "RoomRate": "Room Rate:", "CheckIn": "Check In", "CheckOut": "Check Out", "Date": "Date", "Description": "Description", "Reference": "Reference", "Amount": "Amount", "Balance": "Balance", "GuestName": "Guest Name", "CreditCard": "Credit Card:", "None": "None", "GuestSignature": "Guest Signature:" |
20 characters |
GuestNumber | "Adult": " Adults", "Children": "Children", "Guest": "Guests" |
15 characters |
ErrorMessages | ~1000 characters | |
InfoMessages | "EmailSent": "A copy of your invoice has been sent to: ", "SentToPrint": "A copy of your invoice has been sent to the printer." |
Customizing Guest Notification Messages
The messages found in the first section in any of the translation files are messages that are sent to the end users via e-mail or SMS, in the conditions described below.
Notification message key | Purpose | Default text | Notes |
---|---|---|---|
AgeRestrictionSentTitle | Subject of the notification email automatically sent when an under-age check in is attempted | Booking restriction | |
AgeRestrictionSent | Content of the notification message automatically sent when an under-age check in is attempted (Both email and SMS) | A guest named {{ lastName }} {{ firstName }}, born on {{ birthDate }}, is attempting to perform an unassisted check-in from terminal {{ terminalId }}. Immediate attention of hotel staff is required. |
|
CheckInMessageHtml | Content of the email message sent at guest's demand, when finishing check-in | Thank you for staying at <b>{{hotelName}}</b>!<br>Your room number is <b>{{roomNumber}}</b>.<br>You can use the WiFi network in your hotel room for free. <br>Use these credentials to connect:<br>Network ID: <b>{{networkId}}</b>, <br>Password: <b>{{wifiPassword}}</b> | If the hotel policy is to include the hotel name or the room number in the WiFi credentials, then you can use the {{hotelName}} and {{roomNumber}} placeholders instead of or in addition to {{networkId}} and {{wifiPassword}}. (The latter two will be always filled in with the valued from the kioskconf.json file). |
CheckInMessageTxt | Content of the SMS message sent at guest's demand, when finishing check-in | Thank you for staying at {{hotelName}}! Your room number is {{roomNumber}}. You can use the WiFi network in your hotel room for free. Use these credentials to connect: Network ID: {{networkId}}, Password: {{wifiPassword}} | If the hotel policy is to include the hotel name or the room number in the WiFi credentials, then you can use the {{hotelName}} and {{roomNumber}} placeholders instead of or in addition to {{networkId}} and {{wifiPassword}}. (The latter two will be always filled in with the valued from the kioskconf.json file). |
Example
Customizing the default text of the AgeRestrictionSentTitle can be easily achieved by adding only this tag under NotificationMessages section in en-us.json or en-us.overrides.json file in the C:\ProgramData\NEC\kiosk\Custom\Translations folder.
{
"NotificationMessages": {
"AgeRestrictionSentTitle": "Custom text"
}
}
Customizing the UDF translations
For each UDF defined in the User Defined Fields in Kiosk Admin, we should have a corresponding entry in the translation file. By default, the translation files do not have anything related to the UDFs.
Example
If the User Defined fields are defined as:
Then in the en-US.json or en-US.overrides.json custom translation file, located in C:\ProgramData\NEC\kiosk\Custom\Translations, under Pages.Signature section, we should have three entries having the name equal to the Code of the UDF fields:
{
"Pages": {
...
"Signature": {
"LBL_UDFC07": "Sangri-La Promo",
"LBL_UDFC08": "3rd Party Promo",
"LBL_UDFC09": "GC eStatement"
}
...
}
}
If these entries are not defined in the translation file, then Kiosk Client will show Pages.Signature.
Customizing the Health Declaration translations
The text that the Kiosk Client will show per each question is going to be taken from the translation files.
Each translation file will have its own localized text for a specific label. These labels need to match the question labels defined in Kiosk Admin.
These localizations are going to be placed together with other custom translations, in C:\ProgramData\NEC\kiosk\Custom\Translations\en-US.json under the Health Declaration page section.
In the custom file, only the fields for which customization is desired must be added. In the example below, in en-US.json file was added custom translation only for HealthDeclaration.Title and the health questions. The translations for the rest of the tags on the HealthDeclaration page will be taken from the translation file with the same name in the installation folder.
en-US.json
{
"Pages": {
...
"HealthDeclaration": {
"Title": "Your Custom Health Declaration Title",
"Q1_ARI_Symptoms": "Are you currently experiencing any Acute Respiratory Infection (ARI) symptoms?",
"Q2_CovidContact": "In the last 14 days, have you been in close proximity to anyone who was tested positive for COVID-19?",
"Q3_Travel": "Have you traveled or returned from overseas in the last 21 days"
}
...
}
...
}
Note
The last three lines (the ones beginning with Q1.., Q2.., Q3...) are the lines related to the health questions. On a fresh installed Kiosk Client application, there will be no lines in the file en-US.json from install folder; they should be added manually in C:\ProgramData\NEC\kiosk\Custom\Translations\en-US.json after configuring the questions in the Health Declaration page of the Kiosk Admin.