Как перевести комментарии программы C++ с китайского на английский?
У меня есть проект C++, в котором комментарии исходного кода написаны на китайском языке, теперь я хочу преобразовать их в английский. Я пытался решить с помощью Google Переводчик, но получил Проблема: Целые файлы cpp или заголовок не был преобразован, а также я нашел имя структуры, класса и т. Д. Изменилось. Иногда код также изменяется.
Примечание. Каждый файл.cpp или.h содержит менее 1000 строк кода. Но существует несколько проектов C++, каждый из которых содержит около 10 файлов. Таким образом, у меня есть около 50 файлов, для которых мне нужно перевести китайский на английский. Возможно, я получу больше файлов и в будущем.
3 ответа
Ну а чего ты ожидал? Google Translate не знает, что такое файл CPP и как с ним обращаться. Вам нужно написать свою собственную программу, которая извлекает из них комментарии (не так сложно), запускает только те через Google Translate, а затем помещает их обратно.
Напоминаем, что если есть закомментированный код или комментарии ссылаются на имена переменных, они тоже будут переведены. Обнаружение и обработка этих случаев уже намного сложнее.
Сначала разделите комментарий и часть кода в другом файле, используя скрипт Python, как показано ниже:
import sys
file=sys.argv[1]
f=open(file,"r")
lines=f.readlines()
f.close()
comment=open("comment.txt","w+")
code=open("code.txt","w+")
for l in lines:
if "//" in l:
comment.write(l)
code.write("\n")
else:
code.write(l)
comment.write("\n")
comment.close()
code.close()
Теперь переведите comment.txt с помощью переводчика Google, а затем используйте
paste code.txt comment_en > source
где comment_en переводится комментарий на английский.
Извлечение комментариев - это лексическая проблема, и в основном довольно простая.
Через несколько часов вы можете написать (например, с помощью flex) какую-нибудь простую программу командной строки, извлекающую их. И хороший редактор (такой как GNU emacs) может даже быть настроен для запуска этого фильтра на выбранных кусках кода.
(обработка нескольких угловых случаев, таких как необработанные строковые литералы, может быть немного сложнее, но это происходит не часто, и вы можете обработать их вручную)
Кстати, если вам поручено работать над этим кодом, вам нужно его понять, и это займет гораздо больше времени, чем копирование, вставка или редактирование каждого комментария вручную.
Наконец, я не уверен в качестве автоматического перевода комментариев кода. Вы можете быть разочарованы. Кроме того, имена кодов (функций, классов, переменных и т. Д.) Имеют гораздо большее значение.
Возможно, добавление ваших комментариев на английском может быть мудрее.
Не забудьте использовать систему контроля версий. Вам действительно нужен один (например, git
)
(Я не уверен, что извлечение комментариев для автоматического перевода поможет вашей работе)