From fe0167daef135089a32c64254c1a90dd2aa42172 Mon Sep 17 00:00:00 2001 From: Jaakko Keränen Date: Mon, 5 Apr 2021 12:21:28 +0300 Subject: Added new language strings for media, feeds list "about:feeds", inline downloads, and media player UI didn't have translations. --- src/audio/player.c | 21 +++++++++++++-------- src/feeds.c | 31 +++++++++++++++---------------- src/ui/documentwidget.c | 2 +- src/ui/mediaui.c | 10 ++++++---- 4 files changed, 35 insertions(+), 29 deletions(-) (limited to 'src') diff --git a/src/audio/player.c b/src/audio/player.c index d2ec9870..c08b20fc 100644 --- a/src/audio/player.c +++ b/src/audio/player.c @@ -22,6 +22,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "player.h" #include "buf.h" +#include "lang.h" #define STB_VORBIS_HEADER_ONLY #include "stb_vorbis.c" @@ -579,7 +580,7 @@ static iContentSpec contentSpec_Player_(const iPlayer *d) { content.output.freq = info.sample_rate; content.output.channels = numChannels; content.output.format = AUDIO_F32; - content.inputFormat = AUDIO_F32; /* actually stb_vorbis provides floats */ + content.inputFormat = AUDIO_F32; /* actually stb_vorbis provides floats */ stb_vorbis_close(vrb); } else if (content.type == mpeg_DecoderType) { @@ -783,23 +784,27 @@ iString *metadataLabel_Player(const iPlayer *d) { lock_Mutex(&d->decoder->tagMutex); const iString *tags = d->decoder->tags; if (!isEmpty_String(&tags[title_PlayerTag])) { - appendFormat_String(meta, "Title: %s\n", cstr_String(&tags[title_PlayerTag])); + appendFormat_String(meta, "${audio.meta.title}: %s\n", cstr_String(&tags[title_PlayerTag])); } if (!isEmpty_String(&tags[artist_PlayerTag])) { - appendFormat_String(meta, "Artist: %s\n", cstr_String(&tags[artist_PlayerTag])); + appendFormat_String(meta, "${audio.meta.artist}: %s\n", cstr_String(&tags[artist_PlayerTag])); } if (!isEmpty_String(&tags[genre_PlayerTag])) { - appendFormat_String(meta, "Genre: %s\n", cstr_String(&tags[genre_PlayerTag])); + appendFormat_String(meta, "${audio.meta.genre}: %s\n", cstr_String(&tags[genre_PlayerTag])); } if (!isEmpty_String(&tags[date_PlayerTag])) { - appendFormat_String(meta, "Date: %s\n", cstr_String(&tags[date_PlayerTag])); + appendFormat_String(meta, "${audio.meta.date}: %s\n", cstr_String(&tags[date_PlayerTag])); } unlock_Mutex(&d->decoder->tagMutex); } if (d->decoder) { - appendFormat_String(meta, "%d-bit %s %d Hz", SDL_AUDIO_BITSIZE(d->decoder->inputFormat), - SDL_AUDIO_ISFLOAT(d->decoder->inputFormat) ? "float" : "integer", - d->spec.freq); + appendFormat_String(meta, + translateCStr_Lang("${n.bit} %s %d ${hz}"), /* translation adds %d */ + SDL_AUDIO_BITSIZE(d->decoder->inputFormat), + cstr_Lang(SDL_AUDIO_ISFLOAT(d->decoder->inputFormat) + ? "numbertype.float" + : "numbertype.integer"), + d->spec.freq); } return meta; } diff --git a/src/feeds.c b/src/feeds.c index db426994..2f4714f3 100644 --- a/src/feeds.c +++ b/src/feeds.c @@ -24,6 +24,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "bookmarks.h" #include "gmrequest.h" #include "visited.h" +#include "lang.h" #include "app.h" #include @@ -637,30 +638,28 @@ size_t numUnread_Feeds(void) { return count; } -#define iPluralS(c) ((c) != 1 ? "s" : "") - const iString *entryListPage_Feeds(void) { iFeeds *d = &feeds_; iString *src = collectNew_String(); - format_String(src, "# Feed entries\n\n"); + setCStr_String(src, translateCStr_Lang("# ${feeds.list.title}\n\n")); lock_Mutex(d->mtx); const iPtrArray *subs = listSubscriptions_(); - int elapsed = elapsedSeconds_Time(&d->lastRefreshedAt) / 60; + const int elapsed = elapsedSeconds_Time(&d->lastRefreshedAt) / 60; appendFormat_String( src, - "You are subscribed to %zu feed%s that contain%s a total of %zu entries.\n", - size_PtrArray(subs), - iPluralS(size_PtrArray(subs)), - size_PtrArray(subs) == 1 ? "s" : "", - size_SortedArray(&d->entries)); + formatCStrs_Lang("feeds.list.counts.n", size_PtrArray(subs)), + formatCStrs_Lang("feeds.list.entrycount.n", size_SortedArray(&d->entries))); if (isValid_Time(&d->lastRefreshedAt)) { - appendFormat_String(src, - "\nThe latest refresh occurred %s.\n", - elapsed == 0 ? "just a moment ago" - : elapsed < 60 ? format_CStr("%d minute%s ago", elapsed, iPluralS(elapsed)) - : elapsed < 1440 ? format_CStr("%d hour%s ago", elapsed / 60, iPluralS(elapsed / 60)) - : format_CStr("%d day%s ago", elapsed / 1440, - iPluralS(elapsed / 1440))); + if (elapsed == 0) { + appendCStr_String(src, translateCStr_Lang("\n${feeds.list.refreshtime.now}\n")); + } + else { + appendFormat_String(src, + translateCStr_Lang("\n${feeds.list.refreshtime}\n"), + elapsed < 60 ? formatCStr_Lang("minutes.ago.n", elapsed) + : elapsed < 1440 ? formatCStr_Lang("hours.ago.n", elapsed / 60) + : formatCStr_Lang("days.ago.n", elapsed / 1440)); + } } iDate on; iZap(on); diff --git a/src/ui/documentwidget.c b/src/ui/documentwidget.c index ff89f5ec..e4dadeff 100644 --- a/src/ui/documentwidget.c +++ b/src/ui/documentwidget.c @@ -3222,7 +3222,7 @@ static void drawRun_DrawContext_(void *context, const iGmRun *run) { draw_Text(metaFont, topRight_Rect(linkRect), tmInlineContentMetadata_ColorId, - " \u2014 Fetching\u2026 (%.1f MB)", + translateCStr_Lang(" \u2014 ${doc.fetching}\u2026 (%.1f ${mb})"), (float) bodySize_GmRequest(mr->req) / 1.0e6f); } } diff --git a/src/ui/mediaui.c b/src/ui/mediaui.c index 2fad0cec..24b29cb0 100644 --- a/src/ui/mediaui.c +++ b/src/ui/mediaui.c @@ -27,6 +27,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "audio/player.h" #include "paint.h" #include "util.h" +#include "lang.h" #include @@ -258,16 +259,17 @@ void draw_DownloadUI(const iDownloadUI *d, iPaint *p) { draw_Text(uiLabel_FontId, init_I2(x, y2), isFinished ? uiTextAction_ColorId : uiTextDim_ColorId, - isFinished ? "Download completed." - : "Download will be cancelled if this tab is closed."); + cstr_Lang(isFinished ? "media.download.complete" : "media.download.warnclose")); const int x2 = right_Rect(rect); drawSevenSegmentBytes_(init_I2(x2, y1), uiTextDim_ColorId, info.numBytes); const iInt2 pos = init_I2(x2, y2); if (bytesPerSecond > 0) { - drawAlign_Text(uiLabel_FontId, pos, uiTextDim_ColorId, right_Alignment, "%.3f MB/s", + drawAlign_Text(uiLabel_FontId, pos, uiTextDim_ColorId, right_Alignment, + translateCStr_Lang("%.3f ${mb.per.sec}"), bytesPerSecond / 1.0e6); } else { - drawAlign_Text(uiLabel_FontId, pos, uiTextDim_ColorId, right_Alignment, "\u2014 MB/s"); + drawAlign_Text(uiLabel_FontId, pos, uiTextDim_ColorId, right_Alignment, + translateCStr_Lang("\u2014 ${mb.per.sec}")); } } -- cgit v1.2.3