задний план
Я недавно участвовал в двух зарубежных проектах компании.Проект должен заменить китайский на португальский и английский.Проект важный и времени мало.После нормального развития китайскую запись нужно заменить на метод.
Такие как:var open = '打开'
заменитьvar open = intl.get('需要记录的key值').d('打开')
Потому что, когда раньше не было инструмента, я мог только заменить один за другим, назвать значение ключа, проверить, не повторяется ли оно, проверить, нет ли пропусков... Это пустая трата времени.
Эффективность инструментов
В международном задании коллега выполнил нагрузку, которую мне нужно было выполнить за день, за десять минут.Это дало мне ощущение, что я открыл для себя новый мир.Около 80% правильного контента можно заменить одной строкой команд. Конечно, скорость очень высокая!
Но поиск и исправление ошибок — тоже крайне болезненный процесс, люди всегда недовольны настоящим и надеются на лучшее.
Метод, используемый коллегами, заключается в том, чтобы прочитать содержимое файла, затем сопоставить китайский фрагмент по регулярности, а затем заменить его. Этот ход написать относительно просто, но проблема состоит в том, чтобы написать содержание, которое в наибольшей степени соответствует правильному содержанию, и заменить его правильной формой.Портал гаджетов Авторы коллеги
Зачем снова разрабатывать подобный гаджет
Потому что для гаджетов коллеги, я думаю, все же немного хуже, и масштабируемости может не хватить.Хочется сделать все больше и больше бесплатных операций.Это может быть более хлопотно, и если есть какие-то новые ситуации, это не легко расширить. Дело в том, что регуляры длинные и я не хочу их читать (хотя я был зациклен на регулярах).
Расскажи мне о моем новом гаджете
Вдохновившись гаджетом коллеги, я подумал о более элегантном способе.В голову пришло то, почему я не мог разобрать файл, найти место, где находится строка, а потом судить, китайский ли он, и если да , замените его.Идея почти такая же, но я решил конвертировать код файла в ast и заменить его на этой основе.
На этой основе я разработалi18n-astгаджет
Кратко расскажем об этом инструменте, какие модули используются
- Когда код @babel/types преобразуется в ast, различные типы
- ядро babel-core для преобразования кода в ast
- Babel-генератор преобразует ast в код
- мел добавляет цвет подсказке
- инструмент командной строки командира
- инструмент глобального адреса
- инструмент для проверки шутки
- ...и целая куча плагинов для Babel
как использовать
По состоянию на 17 сентября была выпущена версия 0.1.3, охватывающая большинство сценариев.
В основном делится на 3 шага: установка, запись командной строки или файла конфигурации, выполнение
Установить
Используйте нпм:
npm install --save-dev i18n-ast
Используйте пряжу:
yarn add i18n-ast --dev
записать конфигурацию
- Использование командной строки
- -e [путь к файлу для конвертации]
- -o [вывести путь к файлу записи для перевода]
- -X [исключенный файл, несколько, пожалуйста, используйте сегментацию ","]
i18n-ast -e [path] -o [path] -x [path]
- Новый файл конфигурации I18n-ast.config.js в корневом каталоге Конфигурационный файл имеет непревзойденное содержимое и соответствует значению случайного числа KEY.
module.exports = () => ({
entry: "需要转换的文件路径",
output: "输出的文件路径",
//排除的文件(类型是数组)
exclude: [],
//可以自定义随机字符串,第一个参数是当前文件的路径
randomFuc: (filePath) => `${filePath.split('/').pop()}-${Math.random()}`
})
увидеть эффект
До конвертации
после преобразования
Извлечение записи перевода
Как показано на рисунке, процесс перевода совершенен. Сейчас поддерживается только реакция, но я оставил место для vue. Заинтересованные друзья могут дать звезду, чтобы поддерживать этот проект вместе.
Адрес проекта на гитхабеGitHub.com/UN stone/i18…
следующий план обслуживания
Если спроса будет немного, я буду поддерживать его потихоньку по следующему плану, ведь мне еще нужно работать, и большая часть моей энергии приходится тратить на работу.
Todo List
- [ ] Замена
- js
- [x] Китайская строка в объекте
- [x] Китайские параметры в методе
- [x] строка шаблона (содержит простые переменные)
- react
- [x] Китайские свойства в реакции
- [x] Китайский контент в реакции
- vue (будет добавлено)
- js
- [ ] excel
- [ ] Перевести входной файл в excel
- [ ] excel преобразовать в файл перевода
- [ ] Коллекция сменных корпусов
- [ ] Определить, импортировать ли модуль, если нет, то он будет импортирован автоматически
- [ ] Метод замены можно настроить
- [ ] Внедрение автоматического перевода, перевод простых записей (atool-i10n)