2015-07-14 3 views
0

Я использую angular-translate и имею несколько файлов JSON, содержащих строки перевода, и у меня уже есть настройка с json-комбайном для объединения всех отдельных файлов в один файл для каждого языка. Результирующий файл выглядит следующим образом:Измените все листовые узлы файла JSON с помощью gulp

{ 
    "myNamespace" : { 
    "CANCEL" : "Cancel", 
    "PENDING" : "Pending", 
    "module" : { 
     "USERNAME" : "User name", 
     "PASSWORD" : "Password" 
    } 
    } 
} 

Однако, у меня есть необходимость добавить символы в начале и в конце каждой из строк перевода, чтобы выполнить тестирование, что не существует каких-либо жестко-закодированных строк в любом месте в приложении, и, похоже, не может понять, как это сделать.

Я мог бы вручную изменить каждую из строк и создать отдельный языковой файл, но я бы предпочел сделать это программно и ПОСЛЕ остальных задач глотки. В основном он должен взять на себя полностью комбинированный английский файл и изменять каждый из листовых узлов выглядеть следующим образом:

{ 
    "myNamespace" : { 
    "CANCEL" : "\u4ECFCancel\u7D42", 
    "PENDING" : "\u4ECFPending\u7D42", 
    "module" : { 
     "USERNAME" : "\u4ECFUser name\u7D42", 
     "PASSWORD" : "\u4ECFPassword\u7D42" 
    } 
    } 
} 

Возможно ли это? Любая помощь будет принята с благодарностью.

ответ

0

я был в состоянии решить эту проблему самостоятельно, используя следующий глоток задачу:

gulp.task("i18n-pseudo-locale", function() { 
    return gulp.src(distDirectory + "/l10n/en_US.json") 
     .pipe(jsoncombine(pseudoLocale + ".json", function(data) { 
      var originalJson = data["en_US"]; 
      function processJson(json) { 
       // Leaf node 
       if (typeof(json) === "string") { 
        return "\u4ECF" + json + "s\u7D42"; 
       } 
       // object 
       for(var propertyName in json) { 
        json[propertyName] = processJson(json[propertyName]); 
       } 
       return json; 
      } 
      finalJson = processJson(originalJson); 
      return new Buffer(JSON.stringify(finalJson)); 
     })) 
     .pipe(gulp.dest(distDirectory + "/l10n")); 
}); 
Смежные вопросы