Localization - UXDivers/Gorilla-Player-Support GitHub Wiki
Gorilla Player 1.1.0.4 added support for localization which allows previewing you XAML pages in different languages.
When running your app compiled with Gorilla SDK you can choose which language you want to use to preview your XAML page as shown in the following image from Grial RTL fro Xamarin Forms:

Each device involved in the preview can control the language independently, therefore you can set up different devices in different languages and preview in all of them simultaneously.

Localizing your XAML pages involves two aspects:
- Localizing strings within your XAML.
 - Localizing your data.
 
Localizing XAML
Localization in Xamarin Forms is usually done using a markup extension as described here. This markup extension receives as a parameter the key to the string resource to be displayed and is responsible for pulling the string from the appropriate resx file, based on the current language.
Previewing a localized XAML in Gorilla implies identifying the markup extension you use to localize your XAML files + identifying the resx file from where those strings are pulled. Once those two settings are in place, Gorilla will do the rest.
Both of them can be configured through the Gorilla.json by defining the localization property. The following lines illustrate this:
{
  "localization": {
    "markupExtension": {
      "name": "Translate",
      "namespace": "UXDivers.Artina.Shared",
      "assembly": "UXDivers.Artina.Shared",
      "keyPropertyName": "Key"
    },
    "resources": {
      "resourceId": "UXDivers.Artina.Grial.Resx.AppResources",
      "assembly": "UXDivers.Artina.Grial",
      "defaultCulture": "en"
    }
  }
}
Localization is an object with two properties:
- 
markupExtensionis used to identify the localization markup extension by providing the assembly, namespace and class name of the extension.- Specifying the 
nameis mandatory, meanwhile thenamespaceandassemblyare optional.- So if only the 
nameproperty is specified, any markup extension with that name will be considered the localization markup extension. - If the 
namespaceproperty is specified, additionally it will check that theclr-namespaceof the associatedxmlnsmatches that specified namespace. - In the same way, if the 
assemblyproperty is specified it will check the assembly of the associatedxmlnsmatches the specified assembly. - By default, Gorilla assumes that the 
resxkey is specified through theTextproperty of the markup extension. If a different property is used, its name can be specified using thekeyPropertyName. 
 - So if only the 
 
 - Specifying the 
 - 
resourcesis used to identify the defaultresxwhere the strings resides.- 
The
resxis identified by specifying the name of the embedded resource id where the strings are (i.e.resourceIdproperty) and the assembly where theresxis located (i.e.assemblyproperty). TheresourceId, as any embedded resource, is formed as follows:<Default Namespace of the Container Project>.<Folder Name>.<Name of the File> 
 - 
 
In the example above, the default namespace is UXDivers.Artina.Grial, and the resx file name is AppResources and is located within folder Resx. Please notice that resourceId should not include the extension (.resx).
Finally, the property defaultCulture allows to specify the name of the culture in the default resx, if not specified en is assumed.
Localizing Design Time Data
Design time data can be localized by specifying culture specific DesignTimeData.json files, following the same convention used by resxs. For example, in order to specify design time data for English, Spanish, Hebrew from Israel the following files must be defined:
Project
 |_ DesginTimeData.json
 |_ DesginTimeData.es.json
 |_ DesginTimeData.he-IL.json
In the example DesginTimeData.json contains the default design time data and is assumed to be English. DesginTimeData.es.json will be used when Spanish is set and DesginTimeData.he-IL.json when Hebrew is set.
Switching between languages
The easiest way to switch between languages in Gorilla is through the options action sheet that can be triggered by doing a long tap on any part of the screen, as shown in the following animated image:

Please notice that the currently selected language is not displayed as an option in the action sheet.