LCD print arrays of Strings with millis();

Thanks!
Somehow I haven't copied the code from my full program - thus wrong data types.

After the change LCD shows the last message only. It runs through the function very fast when the interval is passed. It should wait those 2000 millis. I probably made it more complicated than it should be.
I imagine loop should also restart itself once all 4 languages have been displayed.

Now I've made this, but only String no.2 of an array is being showed. Aghh.

void kalba() {
  //function telling users they should select the language
  //four languages should switch between with the delay of 2 sec.

  unsigned long currentLCDMillis = millis(); //check current time
  unsigned long  interval2 = 2000;
  static unsigned long previousLCDMillis = 0; //set first old time to 0


  String languages[4] = {"Kalba?", "Language?", "Runa?", "Y3Ik?"};
  int i = 0;
  if (currentLCDMillis - previousLCDMillis > interval2) {
    i++;
    lcd.setCursor (6, 0);
    lcd.print("       ");           //delete the old text
    lcd.setCursor (6, 0);
    lcd.print(languages[i]);
    previousLCDMillis = currentLCDMillis;
    if (i == 3) {
      i = 0;
    }
  }
}