Multilingual tokens - akumina/AkuminaTraining GitHub Wiki

Overview

The token system that is included in the Multilingual feature allows a developer to localize strings in the user interface. This allows a developer to get localized text by using JavaScript APIs or directly inside Widget Manager views.

Token Files

Token Files Location

All language token files are located in the following path:

[site collection url]/Style Library/DigitalWorkPlace/Content/language/

The filenames are in the format ll-cc.js:

  • en-us.js
  • es-es.js

IMPORTANT: Each site visible language must have its own token file.

To add another language, just copy the en-us or es-es language file to the desired language code.

Token File Structure

The token file has a specific structure for storing the tokens. It is a JSON object, with the category name containing the individual tokens and their values. An extract is below, at the bottom of this page is a full example of the en-us.js file.

lang = {
    common: {
        "tokennotfound": "!! TOKEN NOT FOUND !!",
        "showmoreresults": "Show more results",
        "close": "Close",
        ...
    },
    footer: {
        "weather": "Weather",
        "traffic": "Traffic",
        ...
    },
...
};

Javascript API

The framework provides APIs to resolve tokens to localized text. These are located in the Akumina.Digispace.Language namespace. Call the GetText() method to resolve the token:

Akumina.Digispace.Language.GetText("common.confirmcancel")
"Confirm Cancel"

If the token does not exist, "-HC" will be appended to the end of the token name, allowing you to easily spot unlocalized tokens.

Akumina.Digispace.Language.GetText("thisdoes.notexist")
"thisdoes.notexist-HC"

Tokens in Views

Tokens can also be used in views. The syntax is an extension of the normal tokens

{{translate "category.token"}}

We can see an example below; Note the line with {{translate "genericlist.latestnews"}}.

Example is from /Style Library/DigitalWorkPlace/Content/Templates/GenericList/HomeDepartmentNews.html

{{#FirstItem}}
<a href="{{Link}}" class="ak-featured-news-top">
    <img src="{{Image}}" />
    <div class="ak-shade-overlay"></div>
    <span class="ak-featured-news-tab">{{translate "genericlist.latestnews"}}</span>
    <div class="ak-featured-news-title-block">
        <span class="ak-featured-news-category">{{Department}}</span>
        <h3 class="ak-featured-news-title">{{Title}}</h3>
    </div>
</a>
{{/FirstItem}}

TODO: Add screenshot

Token File Reference

lang = {
    common: {
        "tokennotfound": "!! TOKEN NOT FOUND !!",
        "showmoreresults": "Show more results",
        "close": "Close",
        "save": "Save",
        "ok": "OK",
        "cancel": "Cancel",
        "confirmcancel": "Confirm Cancel",
        "cancelyesno": "Are you sure you want to cancel?",
        "yes": "Yes",
        "no": "No",
        "update": "Update",
        "error": "Error Occurred",
        "loading": "Loading ...",
        "validate": "Validate",
        "archive": "Archive",
        "delete": "Delete",
        "confirmarchive": "Confirm Archive",
        "confirmdelete": "Confirm Delete",
        "upload": "Upload",
        "next": "Next",
        "done": "Done",
        "browse": "Browse",
        "submit": "Submit",
        "edit": "Edit",
        "view": "View",
        "viewall": "View All",
        "copy": "Copy",
        "download": "Download",
        "copied": "Copied!",
        "chooselang": "Choose language",
        "adnotconfigured": "Your Azure AD is not configured",
        "nocalendardata": "Calendar data not available.",
        "nolynconmobile": "This feature is not available on tablet and mobile.",
        "azureadnotenabled": "Azure Active Directory is not enabled for this site."
    },
    footer: {
        "weather": "Weather",
        "traffic": "Traffic",
        "news": "Industry News"
    },
    traffic: {
        "googlemapskeymissing": "Google Maps API Key Missing",
        "locationplaceholder": "Enter City, State or Zip",
        "go": "Go",
        "friendlyname_city": "City",
        "friendlyname_state": "State",
        "friendlyname_postalcode": "Postal Code"
    },
    rail: {
        "you": "You",
        "on": "on",
        "chan": "Changed by",
        "sharedwithmany":"Shared with <a href=\"#\">lots of people</a>",
        "open": "Open",
        "share": "Share",
        "follow": "Follow",
        "norecentactivity": "No recent activity.",
        "selectsite": "Select Site",
        "noappsfound": "No apps found",
        "noappsconfigured": "You have no apps configured in the App Manager",
        "notloggedin": "You are not logged into the App Manager,",
        "clicktologin": "Please Click Here To Login",
        "interchangeappnotfound": "Interchange App Not Found, please make sure it contains the text 'Akumina Interchange'",
        "noeventsfound": "No events found.",
        "helloworld": "Hello World !!!",
        "myevents": "MY EVENTS",
        "mytasks": "MY TASKS",
        "mycolleagues": "MY COLLEAGUES",
        "mydashboard": "MY DASHBOARD",
        "myactivity": "MY ACTIVITY",
        "roundtable": "ROUND TABLE",
        "myapps": "MY APPS",
        "addfavorite": "ADD FAVORITE",
        "sharepointbar": "SHAREPOINT BAR",
        "allactivitylink": "All Activity",
        "appmanagerlink": "App Manager",
        "mycalendarlink": "My Calendar",
        "defaultfooter": "Footer",
        "calendarheader": "Today",
        "skypesetuprequired": "Setup Required - Add users to your local Skype for Business",
        "myactivityheader": "My Activity",            
        "contentapps": "Content Apps",
        "adminapps": "Management Apps",
        "controlapps": "Control Apps",
        "reportingapps": "Reporting Apps"
    },
    peoplelist: {
        "firstname": "First Name",
        "lastname": "Last Name",
        "certifications": "Certifications",
        "techskills": "Technical Skills",
        "practicearea": "Practice Area",
        "aboutme": "About Me",
        "hobbies": "Hobbies",
        "contactme": "Contact Me",
        "email": "Email",
        "phone": "Phone",
        "downloadresume": "Download Technical Resume",
        "additionaldetails": "Additional Details",
        "noresultsfound": "No results found.",
        "selectpracticearea": "Select Practice Area...",
        "group": "Group",
        "selectgroup": "Select Group...",
        "sortmethod": "Sort Method",
        "selectsortmethod": "Select Sort Method...",
        "search": "Search",
        "firstnameasc": "First Name (A to Z)",
        "firstnamedesc": "First Name (Z to A)",
        "lastnameasc": "Last Name (A to Z)",
        "lastnamedesc": "Last Name (Z to A)"
    },
    peopledirectory: {
        "firstname": "First Name",
        "lastname": "Last Name",
        "firstnameplaceholder": "Enter First Name",
        "lastnameplaceholder": "Enter Last Name",
        "all": "All",
        "filters": "Filters",
        "datanotavailable": "Data not available",
        "listview": "List View",
        "gridview": "Grid View",
        "peoplematchingnames": "People with {{SearchType}} names matching {{SelectedLetter}}",
        "peoplewith": "People with",
        "matchingnames":"names matching",
        "namecolumn": "Name",
        "titlecolumn": "Title",
        "emailcolumn": "Email",
        "officecolumn": "Office",
        "userdepartment": "Department",
        "useroffice": "Office",
        "userlocation": "Location",
        "userphone": "Work Phone",
        "usermobile": "Cell Phone",
        "userfax": "Fax",
        "title": "Company Directory",
        "getinstructionseterror": "Error in getting Instruction set data.",
        "getfacetserror": "Error fetching facets",
        "getuserserror": "Error fetching users.",
        "fetchingusers": "Fetching users...",
        "friendlyname_title":"Displayed Title",
        "friendlyname_sortby":"Sort By",
        "friendlyname_fetchphotofromad":"Get Photo from AD",
        "friendlyname_searchlistingdisplay":"Display Names As",
        "friendlyname_enableazselector":"Show A-Z Selector",
        "friendlyname_displayview": "Default Display View",
        "friendlyname_facets": "facets"
    },
    importantdates: {
        "allevents": "All Events",
        "noevents": "No Events to Display",
        "title": "Important Dates",
        "companynewstitle":"Company News",
        "friendlyname_listname":"List Name",
        "friendlyname_viewalllink":"View All Link",
        "friendlyname_title":"Displayed Title",
        "friendlyname_icon":"Icon",
        "friendlyname_datesfromcalendar":"Dates are from Calendar",
        "friendlyname_calendardisplay":"Calendar Display",
        "friendlyname_cacheinterval":"Cache Interval",
        "friendlyname_itemstodisplay": "# of Items to Display",
        "friendlyname_featuredfield": "Featured Field"
    },
    genericlist: {
        "loading": "Loading",
        "nositeaccess": "You do not have access to any sites",
        "nodepartments": "No departments are available",
        "featurednews": "Featured News",
        "nonewsfordepartment": "No News Found for your Department",
        "error": "Generic List Error",
        "faqlabel": "Frequently Asked Questions",
        "nofaqlabel": "No FAQ in FAQ list",
        "nofavorites": "You have no favorites to display",
        "latestphotos": "Latest Photos",
        "nofeaturedphotos": "No Featured Photos found in Image Gallery",
        "nofeaturedvideos": "No Featured Videos found in Video Gallery",
        "latestvideos": "Latest Videos",
        "clientbillinglabel": "Client Billing",
        "viewdetail": "View Detail",
        "latestnews": "Latest News",
        "instagramnophotos": "No Photos in Instagram Gallery",
        "photoslabel": "Photos",
        "videoslabel": "Videos",
        "nophotos": "No Photos in Gallery.",
        "novideos": "There are no Videos.",
        "viewall": "View All",
        "allroundtables": "All Roundtables",
        "alltasks": "All Tasks",
        "newsitemnotfound": "News Item Not Found",
        "photogallerytitle": "Photo Gallery",
        "videogallerytitle": "Video Gallery",
        "faqviewmore": "All Questions",
        "mydepartments": "MY DEPARTMENTS",
        "newstitle": "News ",
        "friendlyname_isroot": "List is on Root Site",
        "friendlyname_enablepaging": "Enable Paging",
        "friendlyname_listname": "List Name",
        "friendlyname_cacheinterval": "Cache Interval",
        "friendlyname_itemsperpage": "Items/Page"
    },
    forms: {
        "requiredfields": "Please fill out all required fields.",
        "confirmresubmitlabel": "Confirm Re-Submission",
        "confirmresubmit": "If approvals are in process for this form they will be reset and start over. Are you sure?",
        "filterbyform": "Filter by form",
        "formcolumn": "Form",
        "statuscolumn": "Status",
        "submitdatecolumn":"Submitted On",
        "moreforms": "Loading more forms",
        "allmyforms": "View All My Forms",
        "approvercomments": "Comments from approvers",
        "myformsheading": "My Forms",
        "resubmit": "Resubmit",
        "formtitleplaceholder":"Form Title goes here",
        "formdescriptionplaceholder": "Form description goes here",
        "nosubmittedforms": "You have no submitted forms",
        "vacationrequest": "Vacation Request",
        "pendingstatus": "Pending",
        "myformstitle": "My Forms",
        "formtitle": "Form",
        "friendlyname_title": "Displayed Title",
        "friendlyname_listname": "List Name",
        "friendlyname_icon": "Icon",
        "friendlyname_itemsperpage": "Items/Page"
    },
    eventdetails: {
        "date": "Date",
        "time": "Time",
        "location": "Location",
        "eventdetails": "Event Details",
        "category": "Category",
        "recurrence": "Recurrence",
        "downloadevent": "Download event",
        "returntocalendar": "Return to Calendar",
        "friendlyname_listname":"List Name",
        "friendlyname_calendarlink":"Calendar Link"
    },
    dsl: {
        "newest": "NEWEST",
        "myrecent": "MY RECENT",
        "popular": "POPULAR",
        "recommended": "RECOMMENDED",
        "namecolumn": "Name",
        "sitecolumn": "Site",
        "modifieddatecolumn": "Modified Date",
        "modifiedbycolumn": "Modified By",
        "accessdatecolumn": "Access Date",
        "viewcountpopulardays": "# Views Last {{PopularDays}} days",
        "title": "Document Summary List",
        "tabtitle": "Newest,My Recent,Popular,Recommended",
        "documentstitle": "Documents",
        "friendlyname_title": "Displayed Title",
        "friendlyname_icon": "Icon",
        "friendlyname_targetdocumentlibrary": "Document Library Name",
        "friendlyname_tablist": "Tabs to Display",
        "friendlyname_newestnumberoffiles": "Newest Files to Display",
        "friendlyname_recentnumberoffiles": "Recent Files to Display",
        "friendlyname_popularnumberoffiles": "Popular Files to Display",
        "friendlyname_recommendednumberoffiles": "Recommended Information Text",
        "friendlyname_newestinformationtext": "Newest information text",
        "friendlyname_recentinformationtext": "Recent Information Text",
        "friendlyname_popularinformationtext": "Popular Information Text",
        "friendlyname_recommendedinformationtext": "Recommended Information Text",
        "friendlyname_popularnumberofdays": "Popular Number of Days",
        "friendlyname_currentsite": "Only look on Current Site"
    },
    dms: {
        "folderslabel": "Folders",
        "documentsinfolder": "All documents, files, and folders in",
        "create": "Create",
        "folder": "Folder",
        "worddoc": "Word Document",
        "excel": "Excel",
        "ppt": "PowerPoint",
        "uploadfiles": "Upload Files",
        "completerequiredfield": "Please complete the following required fields.  All files being added will be tagged with this information.",
        "tagindividualfiles": "If you want to tag files with unique information, click “Cancel” and add the files individually",
        "norequiredfields": "There are no required fields. Please click \"Next\" to proceed.",
        "correcterrorsandtryagain": "Please correct the following errors and try again.",
        "checkin": "Check in",
        "confirmcheckin": "Do you want to check-in these files? Your changes will not be visible to others until they are checked in.",
        "checkinfiles": "Check-in the files",
        "checkinminorversion": "Minor version (draft)",
        "checkinmajorversion": "Major version (publish)",
        "confirmkeepcheckedout":"Retain your check out after checking in?",
        "keepcheckedout": "Check-in the changes but leave the files checked out to me",
        "checkincomment": "Comment for check-in: (optional)",
        "donotcheckin": "Do not check-in the files",
        "uploading": "Uploading...",
        "comments": "Comments",
        "filealreadyexistslabel": "A file with the same name already exists",
        "filealreadyexists": "A file named '<span class=\"currentUploadFileName\"></span>' already exists in this library. What would you like to do?",
        "uploadconflicts": "Do this for the next '<span class=\"remainingFiles\"></span>' conflicts",
        "replacefile": "Replace It",
        "cancelfileupload": "Don't Upload",
        "filedeletelabel": "File Delete",
        "confirmfiledelete": "Are you sure to want to Delete?",
        "allfiles": "All Files",
        "myfiles": "My Files",
        "popularfiles": "Popular",
        "recentfiles": "Recent",
        "menuopen": "Open",
        "menudownload": "Download",
        "menucheckin": "Check-In",
        "menucheckout": "Check Out",
        "menudiscardcheckout":"Discard checkout",
        "menudelete": "Delete",
        "menumore": "More",
        "menuviewprops": "View properties",
        "menueditprops": "Edit properties",
        "menusharefile": "Share this File...",
        "menusharedfilewith": "File is shared with...",
        "menufollowfile": "Follow this file",
        "menucompliance": "Compliance details",
        "menuversionhistory": "Version History",
        "menushare": "Share",
        "menufollow": "Follow",
        "browsetags": "Browse Tags",
        "currentselection": "Currently Selected",
        "namecolumn": "Name",
        "modifieddatecolumn": "Modified",
        "modifiedbycolumn": "Modified By",
        "nomoreresults": "No more results to display",
        "changedbycolumn": "Changed by",
        "sharedwithmany": "Shared with <a href=\"#\">lots of people</a>",
        "waitingfordependencies": "Waiting for DocumentsFolderTree and DocumentsGrid to Load...",
        "categories": "Categories",
        "date": "Date",
        "start": "Start",
        "end": "End",
        "today": "Today",
        "last7days": "Last 7 days",
        "last30days": "Last 30 days",
        "thisyear": "This year",
        "enternames": "enter names...",
        "filetypecolumn": "File Type",
        "fileuploadsuccess": "File(s) uploaded successfully.",
        "filedeletesuccess": "File(s) deleted successfully.",
        "filecheckoutsuccess": "File(s) Checked Out successfully.",
        "filediscardcheckoutsuccess": "Discard CheckOut of File(s) successful",
        "filecheckinsuccess": "File(s) checked-in successfully",
        "filedeletefailed": "Delete file(s) failed: {0}",
        "filecheckoutfailed": "Check Out of File(s) failed: {0}",
        "filediscardcheckoutfailed": "Discard CheckOut of File(s) failed: {0}",
        "filecheckinfailed": "File(s) check-in failed: {0}",
        "nolibraryaccess": "You do not have access to library: '{0}'",
        "foldernotfound": "Folder '{0}' not found.",
        "unsupportedfiletypeerror": "Folders and unsupported file types can't be uploaded.",
        "fileemptyerror": "{0} - This file is empty and needs content to be uploaded.",
        "searchservicenotconfigured": "Cannot retrieve popular items. Please configure search service.",
        "searchnoresults": "Your Search returned no results!",
        "cannotadditem": "You do not have permissions to add items",
        "createfoldersuccess": "Folder created successfully",
        "savefilepropertiessuccess": "File properties saved successfully",
        "savefolderpropertiessuccess": "Folder properties saved successfully",
        "itemcheckoutconfirmation": "You must check out this item before making changes.  Do you want to check out this item now?"
    },
    documentlist: {
        "searchfor": "Search for",
        "filterbytopic": "Filter By Topic",
        "selecttopic": "Select topic",
        "sortmethod": "Sort Method",
        "sortnewest": "Newest to Oldest",
        "sortoldest": "Oldest to Newest",
        "nodocuments": "No Documents",
        "lastpublished": "Last Published",
        "topic": "Topic",
        "friendlyname_isroot": "List is on Root Site",
        "friendlyname_enablepaging": "Enable Paging",
        "friendlyname_itemsperpage": "Items/Page",
        "friendlyname_cacheinterval": "Cache Interval",
        "friendlyname_listname": "List Name"
    },
    documentfilter: {
        "friendlyname_listname": "List Name",
        "friendlyname_taxonomycolumnname": "Taxonomy Column Name"
    },
    discussion: {    
        "startnewdiscussion": "Start a new discussion",
        "entertitle": "Enter a title for the discussion",
        "titlerequired": "Title is required",
        "selectfromdoclib": "select from the document library",
        "addlink": "To add a link to a file or folder",
        "choosefile": "Choose a file to link",
        "selectauthorizeduserslabel": "By default, this discussion will be visible by all authorized users of this site. If you want to control who can view this discussion thread, please select the users or groups in the box below.",
        "selectviewers": "Select users who can view this post...",
        "postdiscussion": "Post discussion",
        "addnewdiscussion": "Add New Discussion",
        "created": "CREATED",
        "lastpost": "LAST POST",
        "replies": "REPLIES",
        "confirmarchivemessage": "This action will remove the discussion from the list and archive its contents.  Do you want to continue?",
        "confirmdeletemessage": "This action will permanently delete the discussion. This action is not recoverable. Do you want to continue?",
        "editpermissions": "Edit Permissions",
        "deletethread": "Delete Thread",
        "deletepost": "Delete Post",
        "attachments": "Attachments",
        "postedondate": "POSTED ON",
        "addreplyorattachfile": "Add a reply or attach a file",
        "postreply": "Post Reply",
        "addreply": "Add Reply",
        "backtodisclist": "Back to Discussion List",
        "backtotop": "Back to Top",
        "confirmdeletethread": "Confirm Delete Thread",
        "confirmdeletepost": "Confirm Delete Post",
        "seealldiscussions": "See all Discussions"
    },
    debug: {
        "debuginfotitle": "Debug Information",
        "refreshallcache": "Refresh All Cache",
        "refreshcontentcache": "Refresh Content Cache",
        "refreshtemplatecache": "Refresh Templates Cache",
        "cachecleared": "Cache Cleared"
    },
    dashboard: {
        "nodashboardwidgetsconfigured": "You have no Dashboard Widgets Configured",
        "savedselection": "Saved dashboard widget selection",
        "errorsavingselection": "Error saving widget selection",
        "selectwidgets": "Select items to display on your dashboard. You can drag and drop the items to re-order them",
        "nodashboardwidgetsselected": "No Dashboard widgets present. Please add Dashboard Widgets",
        "noappsfound":"No apps found",
        "noappsconfigured":"You have no apps configured in the App Manager.",
        "notloggedin":"You are not logged into the App Manager",
        "clicktologin":"Please Click Here To Login",
        "interchangeappnotfound":"Interchange App Not Found, please make sure it contains the text 'Akumina Interchange'",
        "noconfigitemsavailable":"No configuration Items available.",
        "faqtitle":"Frequently Asked Questions",
        "nofaqfound":"No FAQ in FAQ list",
        "findpeoplebyname":"Find people by name",
        "username":"User Name",
        "phone":"Phone",
        "fax":"Fax",
        "noteammembersfound":"No team members found",
        "department":"Department",
        "office":"Office",
        "location":"Location",
        "workphone":"Work Phone",
        "cellphone":"Cell Phone",
        "email": "Email",
        "myapps":"My Apps",
        "contentapps": "Content Apps",
        "adminapps": "Management Apps",
        "controlapps": "Control Apps",
        "reportingapps": "Reporting Apps",
        "myteam": "My Team",
        "customize": "Customize",
        "myfavorites": "MY FAVORITES",
        "friendlyname_isroot": "List is on Root Site",
        "friendlyname_enablepaging": "Enable Paging",
        "friendlyname_itemsperpage": "Items/Page",
        "friendlyname_listname": "List Name",
        "friendlyname_cacheinterval":"Cache Interval"
    },
    calendar: {
        "previousmonth": "Previous Month",
        "nextmonth": "Next Month",
        "gridview": "Grid View",
        "listview": "List View",    
        "previousyear": "Previous Year",
        "nextyear": "Next Year",
        "jan": "Jan",
        "feb": "Feb",
        "mar": "Mar",
        "apr": "Apr",
        "may": "May",
        "jun": "Jun",
        "jul": "Jul",
        "aug": "Aug",
        "sep": "Sep",
        "oct": "Oct",
        "nov": "Nov",
        "dec": "Dec",
        "categoryfilter": "Filter by Category",
        "start": "Start",
        "end": "End",
        "location": "Location",
        "organizer": "Organizer",
        "attachments": "Attachments",
        "downloadevent": "Download event",
        "viewattachmentinoutlook": "View attachments in Outlook",
        "companycalendartitle": "Company Calendar",
        "calendartitle": "Calendar",
        "groupnameerror": "Failed to load the Company Calendar for GroupName",
        "friendlyname_groupname": "Group Name",
        "friendlyname_color": "Color",
        "friendlyname_calendartitle": "Displayed Title",
        "friendlyname_icon": "Icon",
        "friendlyname_listname": "List Name",
        "friendlyname_title": "Displayed Title",
        "friendlyname_enablepreview": "Enable Preview",
        "friendlyname_category": "Category",
        "friendlyname_isroot": "List is on Root Site",
        "friendlyname_showcategories": "Show Categories"
    },
    widgetmanager: {
        "cacheminsremaining": "Minutes Remaining in Cache",
        "propertyname": "Property Name",
        "propertyvalue": "Property Value",
        "widgetproperties": "Widget Properties",
        "widgetviews": "Widget Views",
        "widgetmanager": "Widget Manager",
        "viewslabel": "Views",
        "nopropeditsupport": "This snippet does not support property editing, please convert using Widget Manager Content App.",
        "correcterrortryagain": "Please correct the following errors and try again.",
        "getview": "Get View",
        "viewall": "View All"
    },
    additionalmarkup: {
        "videoplayerplaceholder": "video player goes here",
        "close": "Close (Esc)",
        "savedfavorite": "Saved favorite.",
        "errorsavingfavorite": "Error saving favorite.",
        "createfavorite": "Create a new favorite",
        "name": "Name",
        "link": "Link",
        "openwith": "Open With",
        "opensamewindow": "Same Window",
        "opennewwindow": "New Window",
        "allfieldsrequired":"All fields are required"
    },
    alert: {
        "requestfailed": "Request failed. {0} \n {1}",
        "selectfile": "Please select the file",
        "errorassigningpermission": "There was an error assigning permissions. {0}",
        "erroroccurred": "There was an error. {0}",
        "titlerequired": "*Title is required.",
        "specialcharactersnotallowed": "*Special Characters are not allowed in Discussion Title.",
        "browsernotsupporting": "Browser doesn't support. Please use other browsers",
        "uploadpermission": "Drag and Drop Upload \nThe documents cannot be uploaded because different permissions are needed. Request the necessary permissions.",
        "validjson": "SUCCESS - Valid JSON.",
        "invalidjson": "ERROR - Invalid JSON.",
        "errorloadingsdk": "Cannot load the SDK.",
        "errorgraphcommunication": "There was a problem communicating with Microsoft Graph: {0}",
        "configureinterchangequerykey": "You have not configured the InterchangeQueryKey. Please configure your Interchange Query Key.",
        "invalidinterchangequerykey": "Error Validating Interchange Query Key. Please configure your Interchange Query Key.",
        "edgebrowseractions": "Edge browser users must perform following actions:",
        "addurlie11": "1. Add the url '{0}' to IE11 > Internet Options (Security)> Local intranet (Sites)> Advanced",
        "remembercredential": "2. Ensure that 'Remember my credentials' checkbox is checked when specifying the credentials.",
        "selfsignedcertificate": "All browsers must perform the following action if using a self-signed cert for Interchange or if installed via the Azure Marketplace:",
        "acceptcert": "3. Please be sure to navigate to the following url to accept the cert: '{0}' in a new browser tab"
    },
    announcementitems: {
        "title": "Announcement Items",
        "newslisttitle": "News & Announcements",
        "viewallnews": "View All News",
        "friendlyname_listname": "List Name",
        "friendlyname_title":"Displayed Title",
        "friendlyname_icon":"Icon",
        "friendlyname_itemstodisplay":"# of Items to Display",
        "friendlyname_enablepaging": "Enable Paging",
        "friendlyname_viewalllink": "View All Link"
    },
    quicklinks: {
        "title": "QuickLinks",
        "friendlyname_querypart": "List Name",
        "friendlyname_title": "Displayed Title",
        "friendlyname_icon":"Icon"
    },
    genericitem: {
        "friendlyname_isroot": "List is on Root Site",
        "friendlyname_listname": "List Name",
        "friendlyname_cacheinterval": "Cache Interval"
    },
    myteam: {
        "friendlyname_isroot": "List is on Root Site",
        "friendlyname_enablepaging": "Enable Paging",
        "friendlyname_listname": "List Name",
        "friendlyname_cacheinterval": "Cache Interval",
        "friendlyname_itemsperpage":"Items/Page",
        "friendlyname_fetchphotofromad": "Get Photo from AD"
    },
    rssnews:{
        "friendlyname_rssfeedurl": "RSS Feed URL",
        "friendlyname_cacheinterval": "Cache Interval"
    },
    weather: {
        "friendlyname_city": "City",
        "friendlyname_postalcode": "Postal Code",
        "friendlyname_state": "State",
        "friendlyname_cacheinterval": "Cache Interval"
    },
    contentblock: {
        "title": "Site Alert",
        "friendlyname_listname":"List Name",
        "friendlyname_preview":"Enable Preview",
        "friendlyname_title":"Displayed Title",
        "friendlyname_icon":"Icon",
        "friendlyname_cacheinterval": "Cache Interval",
        "friendlyname_disablealert": "disablealert"
    },
    pagelayout: {
        "friendlyname_cacheinterval": "Cache Interval"
    },
    banner: {
        "friendlyname_listname": "List Name",
        "friendlyname_infiniteloop": "Infinite Loop",
        "friendlyname_autoplay": "Autoplay",
        "friendlyname_shownavigator": "Show Navigation",
        "friendlyname_transitioneffect": "Transition Effect",
        "friendlyname_slideduration": "Slide Duration (ms)",
        "friendlyname_textcolor": "Text Color",
        "friendlyname_textlocation": "Text Location",
        "friendlyname_textalignment": "Text Alignment",
        "friendlyname_h1maxcharacters": "Max. H1 Characters",
        "friendlyname_h2maxcharacters": "Max. H2 Characters",
        "friendlyname_buttonmaxcharacters": "Max. Button Characters",
        "friendlyname_enablepreview": "Enable Preview"
    },
    languagepicker: {
        "friendlyname_isroot": "List is on Root Site",
        "friendlyname_listname": "List Name",
        "friendlyname_cacheinterval": "Cache Interval"
    }
};
⚠️ **GitHub.com Fallback** ⚠️