In this article I would like to show you how an app is published with multiple languages ​​to the Windows App Store.

As default, you can only select one default language on the Windows App Store. In order to add more languages, the language information must be added before uploading the XAP file.

In Visual Studio, go to Project Explorer > Solution > Project > Properties and open the WMAppManifest.xml file.

Switch to the tab "Packaging" and add the specific languages. Save the changes, rebuild the XAP file and upload it again. After uploading the XAP file, now you can select multiple languages.




In this article I would like to show you how to create a XAP file for the Windows App Store.

  1. Open MS Visual Studio
  2. Open your project
  3. Go to the "Project Explorer"
  4. Right click on the Solution > Properties
  5. Change the build properties as illustrated in the screen below
  6. Apply the changes
  7. Build your project ("F7")
  8. Make sure that the build was successful (console output)
  9. Open your project in the Windows Explorer and search for "*.xap". Choose the release version. Done.



Most of the lists in Sencha Touch are connected to a store. When the store only contains a small amount of records, performance is not a problem. However, when the store is filled with a big amount of records, it is very important that the data is added in an optimum manner.

Let's have a look at the following code:
copyObjects : function(objects) {
   var taskModel = null, 
       taskStore = Ext.getStore('Tasks');

   taskStore.removeAll(true);

   Ext.Array.each(objects, function (data) {
      taskModel = Ext.create('MyApp.model.Task', data);
      taskModel.setDirty(true);
      taskStore.add(taskModel);
   });
   taskStore.sync();
}
In the above example, 100 objects are added. Tested on a Samsung Galaxy II, the execution takes 12 to 14 seconds. It simply takes too long!

After further testing, I found out that the add function takes so much time (http://docs.sencha.com/touch/2.3.1/source/Store.html # Ext-data-store-insert method). Therefore, the solution is to call this function as less as possible. This can be done with a temporary array:
copyObjects : function(objects) {
   var taskModel = null, 
       taskStore = Ext.getStore('Tasks'),
       tmp = new Array();

    taskStore.removeAll(true);

    Ext.Array.each(objects, function (data) {
       taskModel = Ext.create('MyApp.model.Task', data);
       taskModel.setDirty(true);
       tmp.push(taskModel)
    });
    taskStore.add(tmp);
    taskStore.sync();
}
The execution time takes only one second now.

Advice: Pay attention that your list is not too long, because the scrolling performance will go down as well.