Skip to content

Commit

Permalink
Merge pull request #2 from kbirgoren/bug-fix
Browse files Browse the repository at this point in the history
Bug Fix & Improvement
  • Loading branch information
kbirgoren committed May 13, 2019
2 parents c3cc14d + 5ebd8a9 commit f5b3bd4
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,9 @@
"description" : "Update variables from JSON file",
"author" : "Kurtulus Birgoren",
"homepage" : "https://github.com/kbirgoren",
"version" : "1.0",
"version" : "1.1",
"identifier" : "com.translate.from.json",
"icon" : "icon.png",
"appcast": "https://raw.githubusercontent.com/kbirgoren/sketch-json-translator/master/appcast.xml",
"commands" : [
{
"name" : "Import JSON",
Expand All @@ -31,4 +30,4 @@
"updateLanguageID"
]
}
}
}
79 changes: 50 additions & 29 deletions Translate from JSON.sketchplugin/Contents/Sketch/script.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,51 +55,72 @@ var importFile = function (context) {
saveLanguageFile(stringify(fileContent), context.scriptPath);
updateLanguage(context)
}
var updateLanguage = function (context) {




var updateLanguage = function(context) {

sketch.UI.message('Updating...')

var contextApi = context.api();
var document = sketch.getSelectedDocument();
var selectedLanguage = null;
var languageData = readLanguageFile(context.scriptPath);
var availableLanguages = Object.keys(languageData);
var dropdown = contextApi.getSelectionFromUser("Choose A Language", availableLanguages, 0);

dropdownSelectedIndex = dropdown[1];
selectedLanguage = availableLanguages[dropdownSelectedIndex];
document.pages.forEach(translate)

function translateTextLayer(layer) {
var variableName = layer.name
if (checkRegex(variableName)) {
sketch.UI.message('Translating:' + variableName)
translation = eval('languageData.' + selectedLanguage + '.' + checkRegex(variableName) + '')
if (translation) layer.text = translation;
else layer.text = 'ERROR:' + variableName + '';
layer.name = variableName;
}
}

function translateSymbolLayer(layer) {
var variables = checkVariablesForSymbol(layer.name)
var variablesArray = variables.split(',')
for (i = 0; i < variablesArray.length; i++) {
var overrideName = variablesArray[i].split('=')[0]
var variableName = variablesArray[i].split('=')[1]
layer.overrides.forEach(override => {
if (override.property === 'stringValue') {
translation = eval('languageData.' + selectedLanguage + '.' + checkRegex(variableName) + '')
if (override.affectedLayer.name === overrideName) {
if (translation) override.value = translation
else override.value = 'ERROR:' + variableName + '';
}
}
})
}
}

function translate(page) {
page.layers.forEach(layer => {
layer.layers.forEach(layer => {

if (layer.type === 'Text') {
var variableName = layer.name
if (checkRegex(variableName)) {
sketch.UI.message('Translating:' + variableName)
translation = eval('languageData.' + selectedLanguage + '.' + checkRegex(variableName) + '')
if (translation) layer.text = translation;
else layer.text = 'ERROR:' + variableName + '';
layer.name = variableName;
}
}

if (layer.type == 'SymbolInstance' && checkVariablesForSymbol(layer.name)){
var variables = checkVariablesForSymbol(layer.name)
var variablesArray = variables.split(',')
for(i=0; i < variablesArray.length; i++){
var overrideName = variablesArray[i].split('=')[0]
var variableName = variablesArray[i].split('=')[1]
layer.overrides.forEach(override=>{
translation = eval('languageData.' + selectedLanguage + '.' + checkRegex(variableName) + '')
if (override.affectedLayer.name === overrideName) {
if (translation) override.value = translation
else override.value = 'ERROR:' + variableName + '';
}
})
}
if (layer.type === 'Text') translateTextLayer(layer)

if (layer.type === 'SymbolInstance' && checkVariablesForSymbol(layer.name)) translateSymbolLayer(layer)

if (layer.type === "Group") {

layer.layers.forEach(layer => {

if (layer.type === 'Text') translateTextLayer(layer)

if (layer.type === 'SymbolInstance' && checkVariablesForSymbol(layer.name)) translateSymbolLayer(layer)

})
}

})
})
sketch.UI.message('Translated')
Expand Down

0 comments on commit f5b3bd4

Please sign in to comment.