diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp --- a/src/kitemviews/kfileitemmodel.cpp +++ b/src/kitemviews/kfileitemmodel.cpp @@ -2046,12 +2046,20 @@ lastMonthDate.month() == fileDate.month()) { if (daysDistance == 1) { - newGroupValue = fileTime.toString(i18nc("@title:group Date: " - "MMMM is full month name in current locale, and yyyy is " - "full year number", "'Yesterday' (MMMM, yyyy)")); - newGroupValue = i18nc("Can be used to script translation of " - "\"'Yesterday' (MMMM, yyyy)\" with context @title:group Date", - "%1", newGroupValue); + const char *format = "'Yesterday' (MMMM, yyyy)"; + const QString translatedFormat = i18nc("@title:group Date: " + "MMMM is full month name in current locale, and yyyy is full year number." + "Do not replace single quotes with other characters such as «...», otherwise the translation will break.", + format); + if (translatedFormat.count(QLatin1Char('\'')) == 2) { + newGroupValue = fileTime.toString(translatedFormat); + newGroupValue = i18nc("Can be used to script translation of " + "\"'Yesterday' (MMMM, yyyy)\" with context @title:group Date", + "%1", newGroupValue); + } else { + qCWarning(DolphinDebug) << "A wrong translation was found, please file a bug report at bugs.kde.org"; + newGroupValue = QString::fromLatin1(format); + } } else if (daysDistance <= 7) { newGroupValue = fileTime.toString(i18nc("@title:group Date: " "The week day name: dddd, MMMM is full month name " @@ -2061,33 +2069,65 @@ "\"dddd (MMMM, yyyy)\" with context @title:group Date", "%1", newGroupValue); } else if (daysDistance <= 7 * 2) { - newGroupValue = fileTime.toString(i18nc("@title:group Date: " - "MMMM is full month name in current locale, and yyyy is " - "full year number", "'One Week Ago' (MMMM, yyyy)")); - newGroupValue = i18nc("Can be used to script translation of " - "\"'One Week Ago' (MMMM, yyyy)\" with context @title:group Date", - "%1", newGroupValue); + const char *format = "'One Week Ago' (MMMM, yyyy)"; + const QString translatedFormat = i18nc("@title:group Date: " + "MMMM is full month name in current locale, and yyyy is full year number." + "Do not replace single quotes with other characters such as «...», otherwise the translation will break.", + format); + if (translatedFormat.count(QLatin1Char('\'')) == 2) { + newGroupValue = fileTime.toString(translatedFormat); + newGroupValue = i18nc("Can be used to script translation of " + "\"'One Week Ago' (MMMM, yyyy)\" with context @title:group Date", + "%1", newGroupValue); + } else { + qCWarning(DolphinDebug) << "A wrong translation was found, please file a bug report at bugs.kde.org"; + newGroupValue = QString::fromLatin1(format); + } } else if (daysDistance <= 7 * 3) { - newGroupValue = fileTime.toString(i18nc("@title:group Date: " - "MMMM is full month name in current locale, and yyyy is " - "full year number", "'Two Weeks Ago' (MMMM, yyyy)")); - newGroupValue = i18nc("Can be used to script translation of " - "\"'Two Weeks Ago' (MMMM, yyyy)\" with context @title:group Date", - "%1", newGroupValue); + const char *format = "'Two Weeks Ago' (MMMM, yyyy)"; + const QString translatedFormat = i18nc("@title:group Date: " + "MMMM is full month name in current locale, and yyyy is full year number." + "Do not replace single quotes with other characters such as «...», otherwise the translation will break.", + format); + if (translatedFormat.count(QLatin1Char('\'')) == 2) { + newGroupValue = fileTime.toString(translatedFormat); + newGroupValue = i18nc("Can be used to script translation of " + "\"'Two Weeks Ago' (MMMM, yyyy)\" with context @title:group Date", + "%1", newGroupValue); + } else { + qCWarning(DolphinDebug) << "A wrong translation was found, please file a bug report at bugs.kde.org"; + newGroupValue = QString::fromLatin1(format); + } } else if (daysDistance <= 7 * 4) { - newGroupValue = fileTime.toString(i18nc("@title:group Date: " - "MMMM is full month name in current locale, and yyyy is " - "full year number", "'Three Weeks Ago' (MMMM, yyyy)")); - newGroupValue = i18nc("Can be used to script translation of " - "\"'Three Weeks Ago' (MMMM, yyyy)\" with context @title:group Date", - "%1", newGroupValue); + const char *format = "'Three Weeks Ago' (MMMM, yyyy)"; + const QString translatedFormat = i18nc("@title:group Date: " + "MMMM is full month name in current locale, and yyyy is full year number." + "Do not replace single quotes with other characters such as «...», otherwise the translation will break.", + format); + if (translatedFormat.count(QLatin1Char('\'')) == 2) { + newGroupValue = fileTime.toString(translatedFormat); + newGroupValue = i18nc("Can be used to script translation of " + "\"'Three Weeks Ago' (MMMM, yyyy)\" with context @title:group Date", + "%1", newGroupValue); + } else { + qCWarning(DolphinDebug) << "A wrong translation was found, please file a bug report at bugs.kde.org"; + newGroupValue = QString::fromLatin1(format); + } } else { - newGroupValue = fileTime.toString(i18nc("@title:group Date: " - "MMMM is full month name in current locale, and yyyy is " - "full year number", "'Earlier on' MMMM, yyyy")); - newGroupValue = i18nc("Can be used to script translation of " - "\"'Earlier on' MMMM, yyyy\" with context @title:group Date", - "%1", newGroupValue); + const char *format = "'Earlier on' MMMM, yyyy"; + const QString translatedFormat = i18nc("@title:group Date: " + "MMMM is full month name in current locale, and yyyy is full year number." + "Do not replace single quotes with other characters such as «...», otherwise the translation will break.", + format); + if (translatedFormat.count(QLatin1Char('\'')) == 2) { + newGroupValue = fileTime.toString(translatedFormat); + newGroupValue = i18nc("Can be used to script translation of " + "\"'Earlier on' MMMM, yyyy\" with context @title:group Date", + "%1", newGroupValue); + } else { + qCWarning(DolphinDebug) << "A wrong translation was found, please file a bug report at bugs.kde.org"; + newGroupValue = QString::fromLatin1(format); + } } } else { newGroupValue = fileTime.toString(i18nc("@title:group "