На каком языке написан Paint

Обновлено: 06.07.2024

JS Paint – это веб-версия MS Paint, созданная Исайей Однер.

Прочитайте о проекте и дополнительных функциях в файле readme.

Запрашивайте функции и сообщайте об ошибках на GitHub или по электронной почте.

Сохранить ( Ctrl+S ) теперь можно сохранять поверх открытого файла в браузерах Chrome, Edge и Opera. Это работает с использованием нового API доступа к файловой системе. Всегда используйте Сохранить как ( Ctrl+Shift+S ), если хотите сохранить новый файл.

Сохранить как теперь запрашивает имя файла и формат. Поддерживаются форматы PNG, GIF и BMP, включая файлы BMP с индексированными цветами.

Совет. Используйте PNG, если у вас нет особой причины использовать другой формат, так как он обеспечивает наилучшее качество при сохранении.

Если открыть файл BMP с палитрой, палитра загружается в поле "Цвета". Если вы загружаете монохромный BMP-файл, он загружает градиент шаблонов дизеринга в поле «Цвета».

Черно-белый режим в меню «Изображение» > «Атрибуты» обобщается до монохромного режима (хотя в окне «Атрибуты» он по-прежнему называется «Черно-белый»). Если изображение имеет только два цвета, при переключении в «Черно-белый» режим , он автоматически адаптируется к этим цветам и дает градиент шаблонов дизеринга в поле "Цвета".

Если вы используете команду «Изображение» > «Инвертировать», в монохромном режиме два цвета на изображении меняются местами, а не заменяются на противоположные цвета RGB. (Если изображение чисто черно-белое, эти две операции эквивалентны.)

Цвета > Сохранить цвета теперь также запрашивает имя файла и формат. Поддерживается абсурдное количество форматов файлов. Вы даже можете экспортировать переменные CSS для использования в проекте веб-дизайна. Палитра RIFF (*.pal) совместима с MS Paint, а палитра GIMP (*.gpl) совместима со многими графическими программами с открытым исходным кодом, такими как Inkscape и Krita.

Вы можете найти множество палитр для использования на Lospec. Загрузите палитру как GIMP GPL (или несколько других форматов) и используйте «Цвета»> «Получить цвета» и выберите файл или просто перетащите файл в JS Paint, чтобы загрузить палитру.


2021-12-08

Новые функции

Просмотр > Масштаб > Показать миниатюру для предварительного просмотра изображения в маленьком размере, отлично подходящего для пиксельной графики. Вносите точные и точные правки, сохраняя при этом все в перспективе.

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

Alt+Колесо мыши для быстрого увеличения и уменьшения масштаба на рабочем столе. В отличие от инструмента "Лупа", этот инструмент позволяет увеличивать масштаб при создании (или перемещении) выделения для большей точности.

Добавлено «Просмотр» > «Полный экран» для переключения в полноэкранный режим. Это удобно для использования JS Paint на вашем телефоне.

Инструмент «Текст» теперь автоматически расширяет текстовое поле по мере ввода. При изменении размера теперь есть минимальный размер, основанный на тексте в текстовом поле. Он точно показывает, какой размер он получит при изменении размера.

Закрепление: если вы перетащите поле «Цвета» или «Инструменты» в окно, теперь вы можете закрепить их обратно при перетаскивании панели заголовка. Раньше, чтобы закрепить его, нужно было дважды щелкнуть строку заголовка или перетащить его за край окна.

Область, которую нужно щелкнуть, чтобы перетащить панель инструментов в окно (зеленым цветом)

Меню теперь полностью доступны с клавиатуры (и программы чтения с экрана). В частности, вы можете, удерживая Alt, нажать клавишу доступа к кнопке меню, чтобы открыть меню, а затем (без Alt) нажать клавишу доступа к элементу меню, чтобы выбрать его. Ключ доступа к элементу — это подчеркнутая буква или первая буква текста элемента, если подчеркивания нет.

Сведения об ошибках теперь по умолчанию скрыты в диалоговых окнах ошибок. Подробности во многих случаях могут быть более громоздкими, чем полезными, но если они вам нужны, вы можете их расширить.

Пример окна сообщения об ошибке

Этот проект был основан на JS Paint, и теперь я реализовал звукозапись, блокнот, калькулятор и даже проводник Windows с высоким уровнем детализации.

Он также включает в себя проекты других людей, другие воссоздания старых программ, такие как Webamp, дотошное воссоздание Winamp, и JS Solitaire, клон Solitaire (я настроил его для точности, добавив изображения рубашек карт и т. д.)< /p>

Идеальный пиксель

Все элементы интерфейса теперь тематически оформлены на основе OS-GUI.js и 98.css.

Весь интерфейс теперь идеален до пикселя с точностью до Windows 98. (Хорошо, есть несколько вещей, которые отличаются на пиксель или около того, но серьезно, я выровнял скриншот и получил его практически идеально.)

Улучшенный макет окна «Вид» > «Масштаб» > «Пользовательский масштаб» в соответствии с дизайном в MS Paint.

Добавлены отступы ко всем диалоговым окнам, чтобы они больше не казались тесными.

Окна сообщений теперь содержат значки предупреждений или ошибок и воспроизводят звук при их появлении.

Улучшенный вид > Просмотр растрового изображения: теперь используется цвет фона обоев темы, если изображение меньше окна. Теперь он закрывается щелчком или нажатием клавиши и не позволяет редактировать изображение (что было странно).

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

Исправлено

Кнопки меню легче открывать на сенсорном экране. Иногда приходилось дважды нажимать, прежде чем меню открывалось.

Исправлена ​​непрерывность больших квадратных кистей (ранее оставляли пробелы из-за неполной оптимизации).

Выделение и текстовые поля больше не «взрываются», если вы измените их размер до минимального. Теперь они ограничены, когда вы перетаскиваете край за противоположный край.

Исправлена ​​ошибка, из-за которой вертикально тонкие выделения было трудно или невозможно перетаскивать (несмотря на отображение курсора перетаскивания). (Перетаскиваемая область была смещена за пределы поля выбора.) Исправлена ​​аналогичная ошибка, из-за которой предварительный просмотр инструментов смещался, если высота холста была очень маленькой.

Маркеры изменения размера больше не уменьшаются, если размер объекта очень мал. Перетаскиваемая область для маркеров больше не уменьшается, за исключением размеров, где это необходимо. Теперь она значительно умнее, чем Windows 10, в отношении того, откуда можно перетаскивать маркеры.

В меню «Изображение» > «Отразить/повернуть» теперь можно щелкнуть поле ввода пользовательского градуса перед выбором параметра «Повернуть на угол».

Предварительный просмотр лупы и других инструментов теперь скрыт при перетаскивании окна «Цвета» или окна «Инструменты». Это выглядело сбивающим с толку, когда предварительный просмотр лупы отображался одновременно с контуром предварительного просмотра для перетаскивания/закрепления окна инструмента.

Для языков с письмом справа налево в представлении «История» («Правка» > «История») теперь используется раскладка справа налево, а цветовая панель и панель инструментов больше не меняют свой макет при перетаскивании их в окно или пристыковав их к боковой части приложения.

Просмотр истории и сообщения об ошибках используют более локализованный текст.

Исправлены обрезанные значки на кнопках панели инструментов окна справки в теме Modern.

Все окна теперь имеют элемент управления, сфокусированный по умолчанию, и последний сфокусированный элемент управления в окне запоминается при изменении фокуса окна.

Файл > Создать и Файл > Открыть теперь создает новый сеанс автосохранения вместо использования текущего сеанса.

Зимняя тема

Обновлена ​​зимняя тема с кнопками инструментов в стиле адвент-календаря, которые отображают (улучшенные) праздничные пиксельные изображения для каждого инструмента при их выборе.

Это означает, что тема "Зима" более удобна в использовании, поскольку она не закрывает функции всех инструментов с пиксельной графикой.

Кроме того, если вам недостаточно адвент-календаря, вы можете удерживать клавишу Shift, чтобы одновременно выбрать несколько инструментов.

Возможно, вы могли бы сделать рисунок, используя только один инструмент в течение 16 дней до Рождества, за исключением, конечно, инструментов "Выбор цвета" и "Лупа".

Снежинки в меню показывают, какую букву можно нажать, чтобы выбрать этот элемент.

Чтобы отключить зимнюю тему, нажмите на Гринча в нижней части экрана, который затем улыбнется противной улыбкой и украдет у вас Рождество. Вы можете вернуть его, выбрав «Дополнительно» > «Тема» > «Зима».

Скриншот зимней темы с леденцами и текстовым полем

Привет на нескольких языках, взгляд, направляющий курсор, и море лев лает в микрофон». ширина=

20 декабря 2020 г.

Многоязычная поддержка

JS Paint теперь в значительной степени локализован на 26 языков.

Вы можете спросить, как мне удается выпускать так много языков при первоначальном выпуске многоязычной поддержки? Что ж, в этом проекте есть уникальная возможность повторно использовать локализации из существующей программы, поскольку это в первую очередь ремейк MS Paint.

Я загрузил и установил 26 версий Windows 98 на виртуальные машины и извлек текст из mspaint.exe на каждой из них, используя набор сценариев, которые я написал для автоматизации процесса.

Чтобы изменить язык, выберите «Дополнительно» > «Язык». Ваш предпочитаемый язык может быть уже обнаружен, если он указан в настройках системы или браузера.

26 языков, сразу же!

Для арабского языка и иврита поддерживается раскладка справа налево!

Я попробовал свои силы в арабской каллиграфии.

Каллиграфия, где формы инструментов в Paint составляют арабские слова для их.

Если вы хотите внести свой вклад в перевод, свяжитесь с нами! Мне нужно выполнить некоторую техническую работу, чтобы настроить переводы сообщества на общедоступной платформе, но я рад, что люди уже проявили интерес к помощи в переводе! (Я также хочу упростить язык в различных частях пользовательского интерфейса, прежде чем просить людей перевести их.)

Режим взгляда

Для управления курсором можно использовать взгляд или движения головы.

Режим взгляда позволяет вам управлять JS Paint без помощи рук.

Он предназначен для использования с устройством отслеживания взгляда, устройством отслеживания головы или другим сценарием грубого ввода.

Чтобы поиграть с этим, вам не нужно устройство для отслеживания взгляда за тысячу долларов, достаточно веб-камеры и некоторого бесплатного программного обеспечения.

Я рекомендую включить Viacam, который является не средством отслеживания взгляда, а скорее обычным средством отслеживания движения видео, которое можно настроить для отслеживания движения головы (или туловища, или руки, или чего-либо еще). .

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

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

Режим взгляда предназначен в основном для людей с двигательными нарушениями, такими как БАС или церебральный паралич, но он также может быть просто волшебным опытом. Это также может вызывать разочарование, и для его освоения требуется некоторая практика.

Хорошо начать с раскрашивания штрихового рисунка с помощью одного лишь инструмента "Заливка" ():

  • Найдите раскраски в Интернете, скопируйте и вставьте их в JS Paint.
  • Вы можете преобразовать их в черно-белые в меню "Изображение" > "Атрибуты", а затем снова переключиться на "Цвета". (Это позволяет лучше работать с инструментом «Заливка».)
  • Включите режим «Взгляд» с помощью «Дополнительно» > «Режим взгляда» и обратите внимание, что он начнет щелкать там, где вы наводите курсор. Вы можете отключить эту задержку, щелкнув значок глаза в нижней части экрана.
  • Чтобы изображение заполнило экран, выберите Вид > Масштаб > Масштабировать до окна.

Бонус: поскольку я реализовал вертикальную цветовую рамку для режима взгляда, я решил сделать ее доступной в качестве отдельной опции. Доступ с помощью «Дополнительно» > «Вертикальная цветовая палитра».

Распознавание речи

Морской лев говорит

Используя только свой голос, вы можете переключать инструменты и цвета, перемещать изображение, нажимать кнопки на экране по имени и использовать большинство элементов меню. Вы даже можете сказать "нарисовать кошку в праздничной шляпе", чтобы JS Paint попытался нарисовать кошку в праздничной шляпе.

Эта функция хорошо сочетается с режимом Eye Gaze Mode для более полной работы без помощи рук.

Эта функция доступна только в Chrome и понимает только английский язык. Обратите внимание, что Chrome отправляет ваш голос на серверы Google.

Доступ с дополнительными функциями > Распознавание речи. Если этот параметр недоступен, ваш браузер не поддерживается.

JS Paint покажет то, что, по его мнению, вы сказали, в строке состояния в нижней части экрана.

Существует много синонимов для команд, и часто вы можете использовать очень короткие фразы, такие как "Кривая", чтобы переключиться на инструмент "Кривая". Если он не распознает ваш голос для коротких команд, таких как «Кривая» или «Вырезать», вы можете попробовать более длинные фразы, такие как «Инструмент «Кривая»» или «Вырезать выделение», так как это помогает распознавать звук как речь, а не кашель. например.

Диалоговое окно «Редактировать цвета»

Я также реализовал диалоговое окно "Редактировать цвета". Раньше для этого использовалась собственная системная палитра цветов, и у некоторых она не работала.

Выберите «Цвета» > «Редактировать цвета» или дважды щелкните цвет в палитре, чтобы изменить его.

Анимация, трансформирующаяся между диалоговым окном выбора цвета JS Paint и MS Paint. Это довольно близко, за исключением шрифта.

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

Заключение

JS Paint теперь должен быть более доступным. И футуристично.

Конечно, всегда можно сделать больше. Режим взгляда может использовать сглаживание мазков кисти, а распознавание речи может использовать общий искусственный интеллект.

Мне бы хотелось, чтобы люди использовали JS Paint, особенно в режиме взгляда и распознавания речи, поэтому, если вы записываете видео об использовании JS Paint, отправьте его мне через эту форму. Это позволяет мне узнать, что действительно важно для людей, а что сбивает с толку, и мотивирует меня работать над новыми функциями.

Зимняя тема

В разделе «Дополнительно» > «Темы» > «Зима» доступен новый скин пользовательского интерфейса с значками зимы и праздников, праздничными шрифтами и палитрой с сезонными цветами и узорами мяты.


Счастливого Рождества и счастливой Хануки!

Лучшая история

  • Нажмите «Текст» в окне истории, чтобы вернуться к редактированию текста.
  • Вы можете вернуться к тому моменту, когда существовал выбор.
  • Примечание. Эти состояния пропускаются при обычных действиях "Отменить" и "Повторить", поэтому вам необходимо использовать окно "История".
  • История ветвлений: если вы отмените, а затем внесете изменения, вы сможете вернуться ко всему. Будущие состояния сохраняются.

Улучшенная поддержка мобильных устройств

Новое: используйте два пальца для панорамирования изображения.

Недавно я упростил захват манипуляторов для изменения размера объектов. При этом, в сочетании с мультисенсорным панорамированием, JS Paint гораздо удобнее использовать на телефоне.

Предостережение: на некоторых устройствах он работает медленно, а части интерфейса все еще слишком малы для сенсорного ввода.

Ручки теперь намного проще перетаскивать, с расширенными целевыми мишенями, как в Paint из Windows 7. Теперь вполне разумно использовать сенсорный экран! Это относится к выделенным элементам, текстовым полям и основным маркерам холста.

Наконец-то исправлено изменение размера объектов при увеличении!

Инструмент «Текст» теперь идеально отображает пиксели, которые будут размещены на холсте. Что вы видите, то и получаете! Кроме того, он сохраняет все возможности редактирования в браузере, такие как проверка орфографии, используя замысловатую, но элегантную стратегию наложения. (Я сделал прототип здесь и здесь, если вам интересно.)

При выборе параметра «Только заливка» инструмент «Многоугольник» теперь отображается с перевернутыми линиями, как это делает MS Paint. (Когда вы закончите создание многоугольника, граница фигуры будет точно соответствовать предварительному просмотру, потому что на самом деле действительно рисуется обводка того же цвета, что и заливка.)

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

Кроме того, при уменьшении масштаба с помощью лупы или изменении масштаба с помощью панели инструментов или меню верхний левый угол окна просмотра теперь остается закрепленным.

Кроме того, вставка выделенного фрагмента теперь будет происходить в верхнем левом углу области просмотра, а не всего документа.

Новое: Сетка. Увеличьте масштаб до 4x+ и используйте «Просмотр» > «Масштаб» > «Показать сетку» или Ctrl+G, чтобы включить его. Это также работает с масштабированием в браузере, чтобы обеспечить четкие линии сетки, даже если вы увеличиваете масштаб в браузере.

Новое: «Вид» > «Масштаб» > «Пользовательский масштаб», включая фактически настраиваемый числовой параметр масштабирования, в отличие от MS Paint.

Новое: динамические курсоры для кисти и ластика, так что теперь у вас есть предварительный просмотр того, где именно инструмент будет рисовать.

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

JS Paint теперь позволяет копировать данные реального изображения в буфер обмена как с помощью сочетаний клавиш, так и из меню «Правка». Эта функция доступна в Chrome 76+. По состоянию на сентябрь 2019 года другие браузеры еще не поддерживают его.

Также: вставьте URL-адрес изображения, и JS Paint загрузит и вставит изображение. (Это альтернатива Файл > Загрузить из URL, которая заменяет документ.)

Как это растровое изображение может отображать программу C++ для "Hello World"?

значения растровых изображений — это просто биты в файле. Если вы интерпретируете эти биты как ASCii, тогда это что-то покажет. Тщательный выбор битов, и вы можете написать букву или конституцию в растровом изображении (по модулю заголовка файла). Что не понять? Это просто глупо, как самый плохой редактор в мире.

Что бы это ни стоило, существует по крайней мере один язык программирования, в котором исходный код выражается в виде изображения. Не то, чтобы это конкретное изображение работало с ним, но.

Эта анимированная GIF-ка убивает мой браузер (IE и Chrome) — есть более эффективные способы публикации видео, чем анимированная GIF-ка.

3 ответа 3

Изображение BMP (DIB) состоит из заголовка, за которым следуют несжатые данные одного цвета (для изображений 24 бит/пиксель это 3 байта на пиксель, сохраненные в обратном порядке строк и с шагом строки 4 байта).

Байты для цветовых данных используются для представления цветов (т. е. ни один из них не является "обязательным" форматом файла 2 , все они исходят из цвета каждого пикселя), и между цветами пикселей существует идеальное соответствие 1:1. и байты, записанные в файл; таким образом, используя идеально подобранные цвета, вы можете написать в файл все, что захотите (за исключением заголовка).

Когда вы открываете сгенерированный файл в блокноте, данные о цвете будут отображаться в виде текста; вы все еще можете ясно видеть из заголовка (часть от BM до начала текста), что требуется форматом файла.

На мой взгляд, это видео было сделано следующим образом: сначала автор вычислил размер, необходимый для растрового изображения, и создал файл DIB нужного размера, заполненный цветом, который расширяется до простого узора (например,все байты 65 => 'A' ); затем заменили такой шаблон кодом «полезной нагрузки», как показано на видео.

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

Милан с детства увлекался ПК, и это побудило его проявить интерес ко всем технологиям, связанным с ПК. До прихода в WindowsReport он работал веб-разработчиком. Подробнее

paint 3d язык

Для решения различных проблем с ПК мы рекомендуем DriverFix:
Это программное обеспечение будет поддерживать работоспособность ваших драйверов, тем самым защищая вас от распространенных компьютерных ошибок и сбоев оборудования. Проверьте все свои драйверы прямо сейчас, выполнив 3 простых шага:

Paint 3D может быть очень полезным инструментом, когда речь идет о 3D-моделировании. Однако многие пользователи столкнулись с проблемой языковой настройки приложения. Проще говоря, возможности установить нужный язык нигде нет.

Для многих людей это является серьезной проблемой, как сказал один из пользователей на официальном форуме Microsoft:

У меня Windows 10 на моем ноутбуке Sony Vaio, он был обновлен, и теперь я вижу новое приложение Paint 3D, но оно на арабском языке, а моя Windows 10 на английском, тогда почему оно на арабском?? Есть ли способ изменить язык?

Итак, даже если Windows 10 на английском языке, Paint 3D поставляется на арабском языке. Это серьезная проблема для тех, кто хочет что-то показать другим людям в Paint 3D. В этом случае скриншот не поможет тому, кто не знает арабского.

Настройте свой язык в Paint 3D

1. Измените язык в панели управления

2. Восстановить поврежденные системные файлы

Чтобы решить эту проблему, используйте средство проверки системных файлов.

командная строка администратор

  1. Нажмите клавишу Windows, чтобы открыть меню «Пуск», и напишите «Командная строка».
  2. Нажмите правой кнопкой мыши командную строку и выберите "Запуск от имени администратора".
  3. В окне "Администратор: Командная строка" введите sfc /scannow и нажмите Enter.
  4. Начнется процесс восстановления. Не закрывайте командную строку и не прерывайте процесс восстановления. Процесс восстановления может занять несколько минут.
  5. Заключение

    Как видите, выбор другого языка в Paint 3D может привести к небольшому дерганью в настройках. Однако эта проблема может быть признаком повреждения системного файла.

    К счастью, эту проблему можно быстро решить с помощью представленных выше решений.

    Подошли ли вам наши решения? Вы нашли другой способ изменить язык в Paint 3D? Дайте нам знать в разделе комментариев ниже!

    СВЯЗАННЫЕ СТАТЬИ, КОТОРЫЕ НУЖНО ПОСМОТРЕТЬ:

    • Можно ли использовать Paint 3D для преобразования изображений в черно-белые?
    • Paint 3D не сохраняет [6 ДЕЙСТВИТЕЛЬНО РАБОТАЮЩИХ ИСПРАВЛЕНИЙ]
    • Вот как можно обрезать круг в Paint 3D.

    idee restoro

    По-прежнему возникают проблемы? Исправьте их с помощью этого инструмента:

    «Это не может быть так просто. Ни за что." Но это было так. У меня уже был абзац кода для преобразования файла RESX в список пар ключ/значение (нет, это абзац LINQ-to-XML: посмотрите метод “ FromResX» из моего старого проекта ResXCheck), так что я уже был на полпути (так сказать).

    Мне не хотелось заново переводить все, что у меня уже было; человеческий перевод обычно лучше, чем машинный перевод. Итак, первым требованием была поддержка инкрементного перевода. Это требовало возможности указать исходный файл ResX (в моем случае английский), предыдущую версию исходного ResX и последний перевод исходного ResX для данного языка. При этом достаточно нескольких простых запросов LINQ и алгебры множеств, чтобы определить, какие строки являются новыми, какие изменены, а у каких уже есть переводы (при условии, что они не новые и не изменены). Большая часть кода посвящена их подсчету и выводу на консоль для забавы.

    Еще один небольшой справочный материал для тех, кто не работал с локализацией: строковые ресурсы указываются как имя и значение. В коде вы используете имя для поиска локализованного текста, например. Resources.GetString("MainWindow.FileMenu.Text"), который дает вам "Файл" для английского или любого другого, подходящего для выбранного языка. На самом деле это просто словарь ключ/значение, к которому применяется обычная алгебра множеств. Кроме того, все это запихивается в файл XML с расширением «resx». Теперь вы знаете.

    Следующим препятствием была обработка ускорителей клавиатуры, которые в WinForms указываются с помощью амперсанда. Например, имя меню «Файл» сохраняется как «&Файл», чтобы указать, что F — это клавиша клавиатуры, которую вы используете для доступа к нему. Это было сделано путем выяснения того, что такое ускоритель (String.IndexOf), удаления его, а затем добавления его обратно в переведенный текст. Если в переведенной строке был этот символ, я использовал его (я вставил ампсерсанд в нужное место). В противном случае я использовал соглашение о добавлении «(&X)» к строке, где «X» — это клавиша быстрого доступа (вы видите это, например, в японских переводах). Это было бы тривиально принять для WPF, который использует одну подчеркивание вместо амперсанда, предположительно потому, что амперсанды неприятны при вводе в XAML или что-то в этом роде.

    Последним препятствием было то, что API Bing ограничивает вас 50 запросами в минуту, прежде чем он начнет выдавать ошибку отказа в обслуживании. Регулировать достаточно легко с помощью Thread.Sleep(), а также логики повторных попыток на случай, если это не сработает.

    На данный момент перевод ~1000 строк с английского на любой другой язык занял 23 минуты. Поскольку 8 языков уже готовы, это дает время работы около 9 часов. Это долго! Тем не менее, это намного короче и намного дешевле, чем человеческий перевод, поэтому для меня это все равно будет считаться успехом. К счастью, Bing Translation предоставляет перегруженный метод для выполнения пакетного запроса, так что мне удалось сократить время примерно до 23 секунд. Да, секунды. На язык. ~9 минут всего. Было бы еще быстрее, если бы API (или протокол? Не знаю) не ограничивался строкой запроса размером 64 КБ.

    Это один из тех волшебных моментов в разработке программного обеспечения, когда вы пишете код в течение часа или двух, питаясь только Red Bull (или 2***) и новой музыкой, и удивляетесь, что он не только компилируется … но это работает. На данный момент мой главный вопрос, почему я не подумал об этом раньше. Вы не часто получаете такую ​​отдачу от затраченных средств.

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


    * Внимательный читатель заметит, что Bing Translation в настоящее время поддерживает 34 языка, и резонно спросит: «Почему только 33?» Ответ: тайский перевод искажает все коды форматирования, такие как и заполнители, в строках.

    ** Единственное изменение касалось «XP SP2» и «Vista» в сообщении об ошибке установщика с указанием минимальных системных требований. Они были обновлены до «XP SP3» и «Vista SP1». Я справился с этим… сам!

    Читайте также: