Browse Source

UI: Separate translation of filename format tooltip

The tooltip string describing the filename format had many lines. It
made difficult for translators to update newly added format strings.
This commit separates the string so that each format string has each
translation.
Also construct HTML so that the column aligns.
Norihiro Kamae 2 years ago
parent
commit
81117fa5cb
2 changed files with 76 additions and 2 deletions
  1. 28 1
      UI/data/locale/en-US.ini
  2. 48 1
      UI/window-basic-settings.cpp

+ 28 - 1
UI/data/locale/en-US.ini

@@ -1074,7 +1074,34 @@ Screenshot.Source="Screenshot (Source)"
 FilenameFormatting.completer="%CCYY-%MM-%DD %hh-%mm-%ss\n%YY-%MM-%DD %hh-%mm-%ss\n%Y-%m-%d %H-%M-%S\n%y-%m-%d %H-%M-%S\n%a %Y-%m-%d %H-%M-%S\n%A %Y-%m-%d %H-%M-%S\n%Y-%b-%d %H-%M-%S\n%Y-%B-%d %H-%M-%S\n%Y-%m-%d %I-%M-%S-%p\n%Y-%m-%d %H-%M-%S-%z\n%Y-%m-%d %H-%M-%S-%Z\n%FPS\n%CRES\n%ORES\n%VF"
 
 # basic mode 'output' settings - advanced section - recording subsection - TT
-FilenameFormatting.TT="%CCYY	Year, four digits\n%YY		Year, last two digits (00-99)\n%MM		Month as a decimal number (01-12)\n%DD		Day of the month, zero-padded (01-31)\n%hh		Hour in 24h format (00-23)\n%mm		Minute (00-59)\n%ss		Second (00-61)\n%%		A % sign\n%a		Abbreviated weekday name\n%A		Full weekday name\n%b		Abbreviated month name\n%B		Full month name\n%d		Day of the month, zero-padded (01-31)\n%H		Hour in 24h format (00-23)\n%I		Hour in 12h format (01-12)\n%m		Month as a decimal number (01-12)\n%M		Minute (00-59)\n%p		AM or PM designation\n%s		Time in seconds since UNIX epoch\n%S		Second (00-61)\n%y		Year, last two digits (00-99)\n%Y		Year\n%z		ISO 8601 offset from UTC in timezone\n%Z		Timezone name or abbreviation\n%FPS		Frames per second\n%CRES		Base (canvas) resolution\n%ORES		Output (scaled) resolution\n%VF		Video format"
+FilenameFormatting.TT.CCYY="Year, four digits"
+FilenameFormatting.TT.YY="Year, last two digits (00-99)"
+FilenameFormatting.TT.MM="Month as a decimal number (01-12)"
+FilenameFormatting.TT.DD="Day of the month, zero-padded (01-31)"
+FilenameFormatting.TT.hh="Hour in 24h format (00-23)"
+FilenameFormatting.TT.mm="Minute (00-59)"
+FilenameFormatting.TT.ss="Second (00-61)"
+FilenameFormatting.TT.Percent="A % sign"
+FilenameFormatting.TT.a="Abbreviated weekday name"
+FilenameFormatting.TT.A="Full weekday name"
+FilenameFormatting.TT.b="Abbreviated month name"
+FilenameFormatting.TT.B="Full month name"
+FilenameFormatting.TT.d="Day of the month, zero-padded (01-31)"
+FilenameFormatting.TT.H="Hour in 24h format (00-23)"
+FilenameFormatting.TT.I="Hour in 12h format (01-12)"
+FilenameFormatting.TT.m="Month as a decimal number (01-12)"
+FilenameFormatting.TT.M="Minute (00-59)"
+FilenameFormatting.TT.p="AM or PM designation"
+FilenameFormatting.TT.s="Time in seconds since UNIX epoch"
+FilenameFormatting.TT.S="Second (00-61)"
+FilenameFormatting.TT.y="Year, last two digits (00-99)"
+FilenameFormatting.TT.Y="Year"
+FilenameFormatting.TT.z="ISO 8601 offset from UTC in timezone"
+FilenameFormatting.TT.Z="Timezone name or abbreviation"
+FilenameFormatting.TT.FPS="Frames per second"
+FilenameFormatting.TT.CRES="Base (canvas) resolution"
+FilenameFormatting.TT.ORES="Output (scaled) resolution"
+FilenameFormatting.TT.VF="Video format"
 
 # basic mode 'video' settings
 Basic.Settings.Video="Video"

+ 48 - 1
UI/window-basic-settings.cpp

@@ -1993,6 +1993,53 @@ void OBSBasicSettings::LoadSimpleOutputSettings()
 	SimpleStreamingEncoderChanged();
 }
 
+static inline QString makeFormatToolTip()
+{
+	static const char *format_list[][2] = {
+		{"CCYY", "FilenameFormatting.TT.CCYY"},
+		{"YY", "FilenameFormatting.TT.YY"},
+		{"MM", "FilenameFormatting.TT.MM"},
+		{"DD", "FilenameFormatting.TT.DD"},
+		{"hh", "FilenameFormatting.TT.hh"},
+		{"mm", "FilenameFormatting.TT.mm"},
+		{"ss", "FilenameFormatting.TT.ss"},
+		{"%", "FilenameFormatting.TT.Percent"},
+		{"a", "FilenameFormatting.TT.a"},
+		{"A", "FilenameFormatting.TT.A"},
+		{"b", "FilenameFormatting.TT.b"},
+		{"B", "FilenameFormatting.TT.B"},
+		{"d", "FilenameFormatting.TT.d"},
+		{"H", "FilenameFormatting.TT.H"},
+		{"I", "FilenameFormatting.TT.I"},
+		{"m", "FilenameFormatting.TT.m"},
+		{"M", "FilenameFormatting.TT.M"},
+		{"p", "FilenameFormatting.TT.p"},
+		{"s", "FilenameFormatting.TT.s"},
+		{"S", "FilenameFormatting.TT.S"},
+		{"y", "FilenameFormatting.TT.y"},
+		{"Y", "FilenameFormatting.TT.Y"},
+		{"z", "FilenameFormatting.TT.z"},
+		{"Z", "FilenameFormatting.TT.Z"},
+		{"FPS", "FilenameFormatting.TT.FPS"},
+		{"CRES", "FilenameFormatting.TT.CRES"},
+		{"ORES", "FilenameFormatting.TT.ORES"},
+		{"VF", "FilenameFormatting.TT.VF"},
+	};
+
+	QString html = "<table>";
+
+	for (auto f : format_list) {
+		html += "<tr><th align='left'>%";
+		html += f[0];
+		html += "</th><td>";
+		html += QTStr(f[1]);
+		html += "</td></tr>";
+	}
+
+	html += "</table>";
+	return html;
+}
+
 void OBSBasicSettings::LoadAdvOutputStreamingSettings()
 {
 	bool rescale = config_get_bool(main->Config(), "AdvOut", "Rescale");
@@ -2010,7 +2057,7 @@ void OBSBasicSettings::LoadAdvOutputStreamingSettings()
 	specCompleter->setCaseSensitivity(Qt::CaseSensitive);
 	specCompleter->setFilterMode(Qt::MatchContains);
 	ui->filenameFormatting->setCompleter(specCompleter);
-	ui->filenameFormatting->setToolTip(QTStr("FilenameFormatting.TT"));
+	ui->filenameFormatting->setToolTip(makeFormatToolTip());
 
 	switch (trackIndex) {
 	case 1: