angle-left

Проблемы с кодировкой в файлах локализации в Inteliji idea

Столкнулся с интересной проблемой при совместно разработке проекта. Проблема заключалась в том, что каждый раз, когда я делал коммит следом за моим коллегой, то возникала проблема при работе автоматического слияния конфликтов в git. Мало того, что конфликты в файле возникали постоянно, так ещё и diff показывал, что разница между моими изменениями и изменениями в репозитории отличалась не какими-то строками, а полным содержимым файлов. Казалось бы, откуда такая разница. И такое случалось даже если поправить всего одну переменную локализации. Чтобы понять что вообще происходит, я пошёл в настройки IDE и отключил прозрачное native-to-ascii преобразование property файлов. Эта настройка есть внутри  IDE в Settings -> Editor -> File Encodings.

 

>

 

Checkbox Transparent native-to-ascii conversion у меня стоял в значении true. Это позволило мне видеть значение свойств в файлах с русской локализации не в виде UNICODE последовательностей, а на родном русском языке. Однако у Inteliji Idea есть одно не очень приятное поведение при включенном флаге для автоматического перевода. Все UNICODE последовательности приводятся к верхнему регистру.  Каждый раз когда я вносил изменения в файл локализации для русского. Значения всех переменных приводились к верхнему регистру. И ввместо такого значения:

my.new.variable= \u041e\u0442\u043c\u0435\u043d\u0430

Я получал такое:

my.new.variable= \u041E\u0442\u043C\u0435\u043D\u0430

Из-за этого получалось, что каждый раз когда я производил push  в репозиторий, файл локализации полностью приводился к верхнему регистру. А когда кто-то делал push из моих коллег (использующих NetBeans или же воспользовавшихся лайфхаком, который будет ниже), то весь файл снова преобразовывался к lowercase. Из-за этого и приходился каждый раз делать merge сего файла.

Перейдем же к простому решению этой проблемы.

Чтобы решить эту проблему нужно добавить дополнительный ключ используемый при запуске IDE виртуальной машиной java.

Выглядит этот ключ следующим образом

-Didea.native2ascii.lowercase=true

 

Есть несколько способов добавить этот ключ. Можно создать файл vmoptions внутри директории bin внутри IDEA_HOME, но т.к. у всех она установлена в разные места, то воспользуемся более хомячковым способом. Идём внутри IDE  в Help -> Edit Custom VM Options. Нам откроется такой чудесный файл

  

Либо можно это сделать через JetBrainsToolbox. Выбираем в нём нашую IDE. Кликаем на синий гексогон справа. Settings -> Java Virtual Machine Options -> Edit и добавляем туда нужный ключ. Перезапускаем IDE и вуаля! Всё работает и файлы свойств в нижнем регистре.

-Didea.native2ascii.lowercase=true

 

На этом, пожалуй, откланяюсь!

Вперед