Only being able to print the first character of a string is an old issue going back 5 or so years that was fixed way back then.
It is from using an old LiquidCrystal_I2C library with a hidden bug in it that shows up on more recent IDEs. (more recent being in the past several years)
My recommendation, is use libraries from the IDE library manager rather than ones downloaded from some web site. This is particularly true with the LiquidCrystal_I2C library as there are so many different versions floating around out there.
But even if you get LiquidCrystal_I2C from the IDE library manager. The library is no longer maintained and hasn't been for a few years. There are some current issues in it that need to be fixed and the guy that took over the source code copied it from the github repository (the one that the IDE uses) to another git repository. Then he tried to illegally change the s/w license and copyright on the new repository. I called him out on it, he then deleted it, but has abandoned the code on github.
He now no longer responds to any of my emails.
This leaves the LiquidCrystal_I2C library that is being used by the IDE in limbo with some issues, including one that causes the IDE to grab an incorrect version of the library.
I would recommend using the hd44780 library with the hd44780_I2Cexp i/o class.
Install it using the IDE library manager.
After installing, spend at least a few minutes reviewing the included documentation, (there is quite a bit) then run the included diagnostic tool, I2CexpDiag, that it comes with to verify that everything is working.
After that, you can look at an run any of the many included examples in the hd44780_I2Cexp i/o class.