konstantinbueschel
1/27/2015 - 3:41 PM

Dynamically change languages in a Titanium Alloy app (for testing)

Dynamically change languages in a Titanium Alloy app (for testing)

// add this to the Alloy.js file
// Set to run in ENV_DEV mode so it's used for testing withou
// having to change languages on device etc
// NO checks in place so assumes you know what you're doing, have
// the relevant strings files and specify the correct one!
// should work on Android - not tested yet!

if (ENV_DEV) {

	Alloy.Globals.setLanguage = function(lang) {

		lang = lang || "en";

		var file = Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory, lang + '/strings.xml'),
		    doc = Ti.XML.parseString(file.read().toString()),
		    nodes = doc.getElementsByTagName('string'),
		    strings = {};

		for (var i = 0; i < nodes.length; i++) {
			strings[nodes.item(i).getAttribute('name')] = nodes.item(i).text;
		};

		W = L;

		// redefine L - NOT ideal but necessary to test
		// languages without affecting existing code
		L = function(key) {
			return strings[key];
		};
	};

	Alloy.Globals.setLanguage();

}