Автоматическая проверка сравнения в файлах Angular i18n json

У меня есть 2 файла en.json и xx.json с переводами в приложении Angular. Обычной идеей является создание перевода в обоих файлах для многоязычного приложения, но иногда некоторые программисты добавляют перевод только в один из этих файлов, потому что они тестируют приложение только на своем языке.

Я ищу инструмент, который проверяет одинаковую структуру в обоих файлах JSON, иначе он выдает ошибку и помогает с добавлением при создании переводов для второго языка. Знаете ли вы какие-либо передовые методы, инструменты или плагины для этого? Я использую Вебсторм.

attranslate — современный инструмент, специально разработанный для сравнения и синхронизации JSON-файлов: github.com/fkirc/attranslate

Mike76 21.11.2020 07:38
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
3
1
1 756
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Попробуйте POEditor. Это бесплатно до 1000 строк.

Вы можете проверить Pootle (http://pootle.translatehouse.org/index.html) или Poedit (https://poedit.net) или POEditor (https://poeditor.com/)

Используйте небольшой скрипт Node.js

Поскольку у вас уже установлен Angular (что означает, что у вас есть NPM и Node.Js), вы можете найти несоответствия в ваших JSON-файлах перевода с помощью скрипта. Вот как это выглядит

Код

const fs = require('fs');

// Define your file paths here
const files = ['./english.json', './russian.json']

// Read contents and parse JSON
const filesWithKeys = files.map(f => ({
  name: f,
  content: JSON.parse(fs.readFileSync(f, 'utf8'))
}));

// Gather all the keys used in all files in one array
const allKeys = filesWithKeys.map(f => Object.keys(f.content)).flat();

// Find the missing keys by file
const missingKeysByFile = filesWithKeys.map(f => ({
  name: f.name,
  missingKeys: allKeys.filter(k => !(k in f.content))
})).filter(f => f.missingKeys.length > 0);


// Print the result
missingKeysByFile.forEach(f => {
  console.info(`File "${f.name}" is missing keys [ ${f.missingKeys.join(' ')} ]`);
});

Пример вывода

File "english.json" is missing keys [ appTitle, contentHeader ]
File "russian.json" is missing keys [ usernameHint ]

Примечание. Не работает для вложенных JSON.

khenriksson 02.12.2021 16:21

Другие вопросы по теме