From 81117fa5cb783e5de05d330ba073a234709dad8c Mon Sep 17 00:00:00 2001 From: Norihiro Kamae Date: Sun, 15 Jan 2023 08:15:49 +0900 Subject: [PATCH] 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. --- UI/data/locale/en-US.ini | 29 ++++++++++++++++++++- UI/window-basic-settings.cpp | 49 +++++++++++++++++++++++++++++++++++- 2 files changed, 76 insertions(+), 2 deletions(-) diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini index 0d91518d5..738160d60 100644 --- a/UI/data/locale/en-US.ini +++ b/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" diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp index 84abe98ba..c3d886b3f 100644 --- a/UI/window-basic-settings.cpp +++ b/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 = ""; + + for (auto f : format_list) { + html += ""; + } + + html += "
%"; + html += f[0]; + html += ""; + html += QTStr(f[1]); + html += "
"; + 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: