Update localization string use and data
Review the code for proper use of localized strings. Fix display code to always output them as utf8. Recreate the localization template with the strings currently in use. Convert all existing .po files to utf8. Run msgmerge on all .po files to update strings to match the new template. Due to my lack of experience in using gettext and subsequent avoidance of messing with it, the localization data has not been updated in quite some time and most strings have become obsolete. This unfortunately has resulted in wasted effort from some translators, most recently @J0hsHH and @Strahinja, to whom I can only offer an apology and an invitation to review their translations.
This commit is contained in:
parent
dbea2ae857
commit
82e16c8630
45
about.c
45
about.c
|
@ -17,6 +17,7 @@
|
|||
|
||||
#include "main.h"
|
||||
#include "about.h"
|
||||
#include "uiutil.h"
|
||||
#include <ncurses.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
|
@ -55,6 +56,11 @@ static unsigned nrand (unsigned r)
|
|||
return rand() % r;
|
||||
}
|
||||
|
||||
static void mvadd_center_utf8 (unsigned line, const char* text)
|
||||
{
|
||||
mvadd_utf8 (line, (COLS - utf8_length (text)) / 2u, text);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// Santa Hunta
|
||||
|
||||
|
@ -74,7 +80,9 @@ static void SHDrawGun (unsigned gun_pos)
|
|||
static void SHDrawStatus (void)
|
||||
{
|
||||
attron (WA_BOLD);
|
||||
mvprintw (LINES - 1, 1, _("Move: cursor or %c/%c; shoot: space; quit: %c"), _settings.keybindings.prev, _settings.keybindings.next, _settings.keybindings.quit);
|
||||
char helpstr[128];
|
||||
snprintf (helpstr, sizeof (helpstr), _("Move: cursor or %c/%c; shoot: space; quit: %c"), _settings.keybindings.prev, _settings.keybindings.next, _settings.keybindings.quit);
|
||||
mvadd_utf8 (LINES - 1, 1, helpstr);
|
||||
move (LINES - 1, COLS - 1);
|
||||
attroff (WA_BOLD);
|
||||
}
|
||||
|
@ -83,15 +91,15 @@ static void SHDrawScore (int score, int level)
|
|||
{
|
||||
attron (WA_REVERSE);
|
||||
mvhline (0, 0, ' ', COLS);
|
||||
mvaddstr (0, 1, "Santa Hunta!");
|
||||
mvadd_utf8 (0, 1, _("Santa Hunta!"));
|
||||
|
||||
char scorestr[16];
|
||||
snprintf (scorestr, sizeof (scorestr), _("Score: %d"), score);
|
||||
mvaddstr (0, COLS - strlen (scorestr) - 1, scorestr);
|
||||
mvadd_utf8 (0, COLS - utf8_length (scorestr) - 1, scorestr);
|
||||
|
||||
char levelstr[16];
|
||||
snprintf (levelstr, sizeof (levelstr), _("Level: %d"), level);
|
||||
mvaddstr (0, (COLS - strlen (levelstr)) / 2u, levelstr);
|
||||
mvadd_center_utf8 (0, levelstr);
|
||||
|
||||
attroff (WA_REVERSE);
|
||||
}
|
||||
|
@ -232,7 +240,7 @@ static void printFinalScore (unsigned score)
|
|||
static void SHFinalScore (int score)
|
||||
{
|
||||
attron (WA_BOLD);
|
||||
mvaddstr ((LINES - 5) / 2u - 2, (COLS - strlen ("Final score:")) / 2u, "Final score:");
|
||||
mvadd_center_utf8 ((LINES - 5) / 2u - 2, _("Final score:"));
|
||||
for (int k; (k = getch()) < ' ' || k > '~';) {
|
||||
unsigned rand_color = 10 + nrand (6);
|
||||
attron (COLOR_PAIR (rand_color));
|
||||
|
@ -333,10 +341,9 @@ static void santaHunta (void)
|
|||
|
||||
void UIAbout (void)
|
||||
{
|
||||
|
||||
if (COLS < 80) {
|
||||
erase();
|
||||
mvprintw (0, 0, _("Need at least 80 COLS terminal, sorry!"));
|
||||
mvadd_utf8 (0, 0, _("Need at least 80 COLS terminal, sorry!"));
|
||||
getch();
|
||||
return;
|
||||
}
|
||||
|
@ -351,18 +358,20 @@ void UIAbout (void)
|
|||
mvaddstr (5, xpos, " / \\ / | \\\\ \\/ / \\ | / / | \\\\ ___\\ \\ | / / \\");
|
||||
mvaddstr (6, xpos, "/______ / / ___|___/ \\____/ /__|__/ / ___|___/ \\____ \\ /__|__/ /______ /");
|
||||
mvaddstr (7, xpos, " \\/ \\/ \\/ \\/ \\/");
|
||||
mvprintw (9, (COLS - strlen ("Version " SNOWNEWS_VERSTRING)) / 2u, "Version %s", SNOWNEWS_VERSTRING);
|
||||
char verstrbuf [128];
|
||||
snprintf (verstrbuf, sizeof(verstrbuf), _("Version %s"), SNOWNEWS_VERSTRING);
|
||||
mvadd_center_utf8 (9, verstrbuf);
|
||||
|
||||
mvaddstr (11, COLS / 2 - (strlen (_("Brought to you by:"))) / 2, _("Brought to you by:"));
|
||||
mvaddstr (13, COLS / 2 - (strlen (_("Main code"))) / 2, _("Main code"));
|
||||
mvaddstr (14, COLS / 2 - 6, "Oliver Feiler");
|
||||
mvaddstr (16, COLS / 2 - (strlen (_("Additional code"))) / 2, _("Additional code"));
|
||||
mvaddstr (17, COLS / 2 - 4, "Rene Puls");
|
||||
mvaddstr (19, COLS / 2 - (strlen (_("Translation team"))) / 2, _("Translation team"));
|
||||
mvaddstr (20, COLS / 2 - 31, "Oliver Feiler, Frank van der Loo, Pascal Varet, Simon Isakovic,");
|
||||
mvaddstr (21, COLS / 2 - 32, "Fernando J. Pereda, Marco Cova, Cheng-Lung Sung, Dmitry Petukhov");
|
||||
mvaddstr (22, COLS / 2 - 26, "Douglas Campos, Ray Iwata, Piotr Ozarowski, Yang Huan");
|
||||
mvaddstr (23, COLS / 2 - 15, "Ihar Hrachyshka, Mats Berglund");
|
||||
mvadd_center_utf8 (11, _("Brought to you by:"));
|
||||
mvadd_center_utf8 (13, _("Main code"));
|
||||
mvadd_center_utf8 (14, "Oliver Feiler");
|
||||
mvadd_center_utf8 (16, _("Additional code"));
|
||||
mvadd_center_utf8 (17, "Mike Sharov, Rene Puls");
|
||||
mvadd_center_utf8 (19, _("Translation team"));
|
||||
mvadd_center_utf8 (20, "Frank van der Loo, Pascal Varet, Simon Isakovic, Страхиња Радић");
|
||||
mvadd_center_utf8 (21, "Fernando J. Pereda, Marco Cova, Cheng-Lung Sung, Dmitry Petukhov");
|
||||
mvadd_center_utf8 (22, "Douglas Campos, Ray Iwata, Piotr Ozarowski, Yang Huan");
|
||||
mvadd_center_utf8 (23, "Ihar Hrachyshka, Mats Berglund, Johannes Hove-Henriksen");
|
||||
|
||||
key = getch();
|
||||
}
|
||||
|
|
101
conv.c
101
conv.c
|
@ -25,12 +25,6 @@
|
|||
#include <openssl/evp.h>
|
||||
#include <openssl/md5.h>
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
static int calcAgeInDays (const struct tm* t);
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
// This is a replacement for strsep which is not portable (missing on Solaris).
|
||||
//
|
||||
// http://www.winehq.com/hypermail/wine-patches/2001/11/0024.html
|
||||
|
@ -303,74 +297,6 @@ time_t pubDateToUnix (const char* pubDate)
|
|||
#endif
|
||||
}
|
||||
|
||||
char* unixToPostDateString (time_t unixDate)
|
||||
{
|
||||
int len = 64;
|
||||
char* time_str = malloc (len);
|
||||
|
||||
int strfstr_len = 32;
|
||||
char* time_strfstr = malloc (strfstr_len);
|
||||
|
||||
struct tm t;
|
||||
gmtime_r (&unixDate, &t);
|
||||
|
||||
strftime (time_strfstr, strfstr_len, _(", %H:%M"), &t);
|
||||
strcpy (time_str, _("Posted "));
|
||||
len -= strlen (_("Posted "));
|
||||
if (len <= 0)
|
||||
return NULL;
|
||||
|
||||
int age = calcAgeInDays (&t);
|
||||
if (age == 0) {
|
||||
strncat (time_str, _("today"), len - 1);
|
||||
len -= strlen (_("today"));
|
||||
if (len <= 0)
|
||||
return NULL;
|
||||
if (!(!t.tm_hour && !t.tm_min && !t.tm_sec))
|
||||
strncat (time_str, time_strfstr, len - 1);
|
||||
} else if (age == 1) {
|
||||
strncat (time_str, _("yesterday"), len - 1);
|
||||
len -= strlen (_("yesterday"));
|
||||
if (len <= 0)
|
||||
return NULL;
|
||||
if (!(!t.tm_hour && !t.tm_min && !t.tm_sec))
|
||||
strncat (time_str, time_strfstr, len - 1);
|
||||
} else if ((age > 1) && (age < 7)) {
|
||||
char tmpstr[32];
|
||||
snprintf (tmpstr, sizeof (tmpstr), _("%d days ago"), age);
|
||||
strncat (time_str, tmpstr, len - 1);
|
||||
len -= strlen (tmpstr);
|
||||
if (len <= 0)
|
||||
return NULL;
|
||||
if (!(!t.tm_hour && !t.tm_min && !t.tm_sec))
|
||||
strncat (time_str, time_strfstr, len - 1);
|
||||
} else if (age == 7) {
|
||||
strncat (time_str, _("a week ago"), len - 1);
|
||||
len -= strlen (_("a week ago"));
|
||||
if (len <= 0)
|
||||
return NULL;
|
||||
if (!(!t.tm_hour && !t.tm_min && !t.tm_sec))
|
||||
strncat (time_str, time_strfstr, len - 1);
|
||||
} else if (age < 0) {
|
||||
strcpy (time_str, _("Not yet posted: "));
|
||||
len = 64 - strlen (_("Not yet posted: "));
|
||||
if (!t.tm_hour && !t.tm_min && !t.tm_sec)
|
||||
strftime (time_strfstr, strfstr_len, _("%x"), &t);
|
||||
else
|
||||
strftime (time_strfstr, strfstr_len, _("%x, %H:%M"), &t);
|
||||
strncat (time_str, time_strfstr, len - 1);
|
||||
} else {
|
||||
if (!t.tm_hour && !t.tm_min && !t.tm_sec)
|
||||
strftime (time_strfstr, strfstr_len, _("%x"), &t);
|
||||
else
|
||||
strftime (time_strfstr, strfstr_len, _("%x, %H:%M"), &t);
|
||||
strncat (time_str, time_strfstr, len - 1);
|
||||
}
|
||||
free (time_strfstr);
|
||||
|
||||
return time_str;
|
||||
}
|
||||
|
||||
static int calcAgeInDays (const struct tm* t)
|
||||
{
|
||||
time_t unix_t = time (NULL);
|
||||
|
@ -380,3 +306,30 @@ static int calcAgeInDays (const struct tm* t)
|
|||
// (((current year - passed year) * 365) + current year day) - passed year day
|
||||
return (((current_t.tm_year - t->tm_year) * 365) + current_t.tm_yday) - t->tm_yday;
|
||||
}
|
||||
|
||||
char* unixToPostDateString (time_t unixDate)
|
||||
{
|
||||
struct tm t;
|
||||
gmtime_r (&unixDate, &t);
|
||||
|
||||
int age = calcAgeInDays (&t);
|
||||
char daystr[32];
|
||||
if (age == 0)
|
||||
snprintf (daystr, sizeof(daystr), _("today"));
|
||||
else if (age == 1)
|
||||
snprintf (daystr, sizeof(daystr), _("yesterday"));
|
||||
else if (age < 7)
|
||||
snprintf (daystr, sizeof(daystr), _("%d days ago"), age);
|
||||
else if (age == 7)
|
||||
snprintf (daystr, sizeof(daystr), _("a week ago"));
|
||||
else
|
||||
strftime (daystr, sizeof(daystr), _("on %x"), &t);
|
||||
|
||||
char timestr[32] = "";
|
||||
if (!(!t.tm_hour && !t.tm_min && !t.tm_sec))
|
||||
strftime (timestr, sizeof(timestr), ", %R", &t);
|
||||
|
||||
char rstr[96];
|
||||
snprintf (rstr, sizeof(rstr), "%s%s%s", _("Posted "), daystr, timestr);
|
||||
return strdup (rstr);
|
||||
}
|
||||
|
|
153
dialog.c
153
dialog.c
|
@ -28,8 +28,6 @@
|
|||
|
||||
char* UIOneLineEntryField (int x, int y)
|
||||
{
|
||||
char* text = malloc (512);
|
||||
|
||||
// UIStatus switches off attron!
|
||||
attron (WA_REVERSE);
|
||||
echo();
|
||||
|
@ -39,7 +37,8 @@ char* UIOneLineEntryField (int x, int y)
|
|||
// Beware of hardcoded textlength size!
|
||||
// getnstr size does NOT include \0. This is really stupid and causes
|
||||
// 1-byte overflows. Always size=len-1!
|
||||
getnstr (text, 511);
|
||||
char text [512] = {0};
|
||||
getnstr (text, sizeof(text)-1);
|
||||
|
||||
noecho();
|
||||
if (!_settings.cursor_always_visible)
|
||||
|
@ -47,7 +46,7 @@ char* UIOneLineEntryField (int x, int y)
|
|||
attroff (WA_REVERSE);
|
||||
|
||||
// This memory needs to be freed in the calling function!
|
||||
return text;
|
||||
return strdup (text);
|
||||
}
|
||||
|
||||
void UIChangeBrowser (void)
|
||||
|
@ -221,13 +220,14 @@ void FeedInfo (const struct feed* current_feed)
|
|||
if (pauthinfo)
|
||||
memmove (strstr (url, "://") + 3, pauthinfo + 1, strlen (pauthinfo));
|
||||
|
||||
UISupportDrawBox (5, 4, COLS - 6, 13);
|
||||
unsigned boxw = COLS - 6, centerx = COLS / 2u, leftx = centerx - boxw/2 + 4;
|
||||
|
||||
UISupportDrawBox (5, 4, boxw, 13);
|
||||
|
||||
unsigned centerx = COLS / 2u;
|
||||
attron (WA_REVERSE);
|
||||
mvaddstr (5, centerx - ((strlen (current_feed->title)) / 2), current_feed->title);
|
||||
mvaddnstr (7, centerx - (COLS / 2 - 7), url, COLS - 14);
|
||||
move (8, centerx - (COLS / 2 - 7));
|
||||
mvaddn_utf8 (5, centerx - utf8_length(current_feed->title), current_feed->title, boxw-8);
|
||||
mvaddn_utf8 (7, leftx, url, boxw-8);
|
||||
move (8, leftx);
|
||||
if (current_feed->lastmodified) {
|
||||
char timebuf [32] = "";
|
||||
ctime_r (¤t_feed->lastmodified, timebuf);
|
||||
|
@ -235,9 +235,10 @@ void FeedInfo (const struct feed* current_feed)
|
|||
if (timebuf[i] == '\n')
|
||||
timebuf[i] = 0;
|
||||
timebuf[sizeof(timebuf)-1] = 0;
|
||||
printw (_("Last updated: %s"), timebuf);
|
||||
add_utf8 (_("Last updated: "));
|
||||
addstr (timebuf);
|
||||
} else
|
||||
addstr (_("No modification date."));
|
||||
add_utf8 (_("No modification date."));
|
||||
free (url);
|
||||
url = NULL;
|
||||
|
||||
|
@ -247,14 +248,17 @@ void FeedInfo (const struct feed* current_feed)
|
|||
free (hashme);
|
||||
|
||||
struct stat cachestat;
|
||||
move (9, centerx - (COLS / 2 - 7));
|
||||
move (9, leftx);
|
||||
if (stat (cachefile, &cachestat) < 0)
|
||||
addstr (_("Not in disk cache."));
|
||||
else
|
||||
printw (_("In disk cache: %jd bytes"), cachestat.st_size);
|
||||
add_utf8 (_("Not in disk cache."));
|
||||
else {
|
||||
char cacheszbuf [64];
|
||||
snprintf (cacheszbuf, sizeof(cacheszbuf), _("In disk cache: %jd bytes"), cachestat.st_size);
|
||||
add_utf8 (cacheszbuf);
|
||||
}
|
||||
|
||||
// Print category info
|
||||
mvaddstr (10, centerx - (COLS / 2 - 7), _("Categories:"));
|
||||
mvadd_utf8 (10, leftx, _("Categories:"));
|
||||
addstr (" ");
|
||||
if (current_feed->feedcategories == NULL)
|
||||
addstr (_("none"));
|
||||
|
@ -265,21 +269,23 @@ void FeedInfo (const struct feed* current_feed)
|
|||
}
|
||||
|
||||
// Tell user if feed uses auth, but don't display the string.
|
||||
move (11, centerx - (COLS / 2 - 7));
|
||||
move (11, leftx);
|
||||
if (current_feed->lasterror) {
|
||||
addstr (_("Download failed: "));
|
||||
addstr (current_feed->lasterror);
|
||||
add_utf8 (_("Download failed: "));
|
||||
add_utf8 (current_feed->lasterror);
|
||||
} else if (pauthinfo)
|
||||
addstr (_("Feed uses authentication."));
|
||||
add_utf8 (_("Feed uses authentication."));
|
||||
else
|
||||
addstr (_("Feed does not use authentication."));
|
||||
add_utf8 (_("Feed does not use authentication."));
|
||||
|
||||
// Display filter script if any.
|
||||
if (current_feed->perfeedfilter != NULL) {
|
||||
UISupportDrawBox (5, 13, COLS - 6, 14);
|
||||
UISupportDrawBox (5, 13, boxw, 14);
|
||||
attron (WA_REVERSE);
|
||||
mvaddstr (13, 7, _("Filtered through:"));
|
||||
mvaddnstr (13, 7 + strlen (_("Filtered through:")) + 1, current_feed->perfeedfilter, COLS - 14 - strlen (_("Filtered through:")));
|
||||
const char* filteredmsg = _("Filtered through:");
|
||||
mvadd_utf8 (13, leftx, filteredmsg);
|
||||
addstr (" ");
|
||||
addn_utf8 (current_feed->perfeedfilter, boxw-8-utf8_length(filteredmsg));
|
||||
}
|
||||
|
||||
UIStatus (_("Displaying feed information."), 0, 0);
|
||||
|
@ -293,7 +299,7 @@ bool UIDeleteFeed (const char* feedname)
|
|||
UISupportDrawBox (3, 5, COLS - 3, 8);
|
||||
|
||||
attron (WA_REVERSE);
|
||||
mvaddstr (6, COLS / 2 - 21, _("Are you sure you want to delete this feed?"));
|
||||
mvadd_utf8 (6, COLS / 2 - 21, _("Are you sure you want to delete this feed?"));
|
||||
mvprintw (7, 5, "%s", feedname);
|
||||
|
||||
UIStatus (_("Type 'y' to delete, any other key to abort."), 0, 0);
|
||||
|
@ -325,28 +331,28 @@ void UIHelpScreen (void)
|
|||
mvprintw (centery + 3, centerx - offset, "%c:", _settings.keybindings.nofilter);
|
||||
mvprintw (centery + 4, centerx - offset, "%c:", _settings.keybindings.newheadlines);
|
||||
mvprintw (centery + 5, centerx - offset, "%c:", _settings.keybindings.perfeedfilter);
|
||||
mvaddstr (centery + 6, centerx - offset, _("tab:"));
|
||||
mvadd_utf8 (centery + 6, centerx - offset, _("tab:"));
|
||||
mvprintw (centery + 7, centerx - offset, "%c:", _settings.keybindings.about);
|
||||
mvprintw (centery + 8, centerx - offset, "%c:", _settings.keybindings.quit);
|
||||
// Descriptions
|
||||
mvaddstr (centery - 9, centerx - offsetstr, _("Add RSS feed..."));
|
||||
mvaddstr (centery - 8, centerx - offsetstr, _("Delete highlighted RSS feed..."));
|
||||
mvaddstr (centery - 7, centerx - offsetstr, _("Rename feed..."));
|
||||
mvaddstr (centery - 6, centerx - offsetstr, _("Reload all feeds"));
|
||||
mvaddstr (centery - 5, centerx - offsetstr, _("Reload this feed"));
|
||||
mvaddstr (centery - 4, centerx - offsetstr, _("Mark all read"));
|
||||
mvaddstr (centery - 3, centerx - offsetstr, _("Change default browser..."));
|
||||
mvaddstr (centery - 2, centerx - offsetstr, _("Move item up, down"));
|
||||
mvaddstr (centery - 1, centerx - offsetstr, _("Sort feed list alphabetically"));
|
||||
mvaddstr (centery, centerx - offsetstr, _("Categorize feed..."));
|
||||
mvaddstr (centery + 1, centerx - offsetstr, _("Apply filter..."));
|
||||
mvaddstr (centery + 2, centerx - offsetstr, _("Only current category"));
|
||||
mvaddstr (centery + 3, centerx - offsetstr, _("Remove filter"));
|
||||
mvaddstr (centery + 4, centerx - offsetstr, _("Show new headlines"));
|
||||
mvaddstr (centery + 5, centerx - offsetstr, _("Add conversion filter..."));
|
||||
mvaddstr (centery + 6, centerx - offsetstr, _("Type Ahead Find"));
|
||||
mvaddstr (centery + 7, centerx - offsetstr, _("About"));
|
||||
mvaddstr (centery + 8, centerx - offsetstr, _("Quit program"));
|
||||
mvadd_utf8 (centery - 9, centerx - offsetstr, _("Add RSS feed..."));
|
||||
mvadd_utf8 (centery - 8, centerx - offsetstr, _("Delete highlighted RSS feed..."));
|
||||
mvadd_utf8 (centery - 7, centerx - offsetstr, _("Rename feed..."));
|
||||
mvadd_utf8 (centery - 6, centerx - offsetstr, _("Reload all feeds"));
|
||||
mvadd_utf8 (centery - 5, centerx - offsetstr, _("Reload this feed"));
|
||||
mvadd_utf8 (centery - 4, centerx - offsetstr, _("Mark all read"));
|
||||
mvadd_utf8 (centery - 3, centerx - offsetstr, _("Change default browser..."));
|
||||
mvadd_utf8 (centery - 2, centerx - offsetstr, _("Move item up, down"));
|
||||
mvadd_utf8 (centery - 1, centerx - offsetstr, _("Sort feed list alphabetically"));
|
||||
mvadd_utf8 (centery, centerx - offsetstr, _("Categorize feed..."));
|
||||
mvadd_utf8 (centery + 1, centerx - offsetstr, _("Apply filter..."));
|
||||
mvadd_utf8 (centery + 2, centerx - offsetstr, _("Only current category"));
|
||||
mvadd_utf8 (centery + 3, centerx - offsetstr, _("Remove filter"));
|
||||
mvadd_utf8 (centery + 4, centerx - offsetstr, _("Show new headlines"));
|
||||
mvadd_utf8 (centery + 5, centerx - offsetstr, _("Add conversion filter..."));
|
||||
mvadd_utf8 (centery + 6, centerx - offsetstr, _("Type Ahead Find"));
|
||||
mvadd_utf8 (centery + 7, centerx - offsetstr, _("About"));
|
||||
mvadd_utf8 (centery + 8, centerx - offsetstr, _("Quit program"));
|
||||
attroff (WA_REVERSE);
|
||||
|
||||
UIStatus (_("Press the any(tm) key to exit help screen."), 0, 0);
|
||||
|
@ -361,9 +367,11 @@ void UIDisplayFeedHelp (void)
|
|||
attron (WA_REVERSE);
|
||||
// Keys
|
||||
const int offset = 18, offsetstr = 7;
|
||||
mvprintw (centery - 5, centerx - offset, _("%c, up:"), _settings.keybindings.prev);
|
||||
mvprintw (centery - 4, centerx - offset, _("%c, down:"), _settings.keybindings.next);
|
||||
mvaddstr (centery - 3, centerx - offset, _("enter:"));
|
||||
mvprintw (centery - 5, centerx - offset, "%c", _settings.keybindings.prev);
|
||||
add_utf8 (_(", up:"));
|
||||
mvprintw (centery - 4, centerx - offset, "%c", _settings.keybindings.next);
|
||||
add_utf8 (_(", down:"));
|
||||
mvadd_utf8 (centery - 3, centerx - offset, _("enter:"));
|
||||
mvprintw (centery - 2, centerx - offset, "%c:", _settings.keybindings.reload);
|
||||
mvprintw (centery - 1, centerx - offset, "%c:", _settings.keybindings.forcereload);
|
||||
mvprintw (centery, centerx - offset, "%c:", _settings.keybindings.urljump);
|
||||
|
@ -371,21 +379,21 @@ void UIDisplayFeedHelp (void)
|
|||
mvprintw (centery + 2, centerx - offset, "%c:", _settings.keybindings.markread);
|
||||
mvprintw (centery + 3, centerx - offset, "%c:", _settings.keybindings.markunread);
|
||||
mvprintw (centery + 4, centerx - offset, "%c:", _settings.keybindings.feedinfo);
|
||||
mvaddstr (centery + 5, centerx - offset, _("tab:"));
|
||||
mvadd_utf8 (centery + 5, centerx - offset, _("tab:"));
|
||||
mvprintw (centery + 6, centerx - offset, "%c:", _settings.keybindings.prevmenu);
|
||||
// Descriptions
|
||||
mvprintw (centery - 5, centerx - offsetstr, _("Previous item"));
|
||||
mvprintw (centery - 4, centerx - offsetstr, _("Next item"));
|
||||
mvaddstr (centery - 3, centerx - offsetstr, _("View item"));
|
||||
mvprintw (centery - 2, centerx - offsetstr, _("Reload this feed"));
|
||||
mvprintw (centery - 1, centerx - offsetstr, _("Force reload this feed"));
|
||||
mvprintw (centery, centerx - offsetstr, _("Open homepage"));
|
||||
mvprintw (centery + 1, centerx - offsetstr, _("Open link"));
|
||||
mvprintw (centery + 2, centerx - offsetstr, _("Mark all read"));
|
||||
mvprintw (centery + 3, centerx - offsetstr, _("Toggle item read status"));
|
||||
mvprintw (centery + 4, centerx - offsetstr, _("Show feed info..."));
|
||||
mvaddstr (centery + 5, centerx - offsetstr, _("Type Ahead Find"));
|
||||
mvprintw (centery + 6, centerx - offsetstr, _("Return to main menu"));
|
||||
mvadd_utf8 (centery - 5, centerx - offsetstr, _("Previous item"));
|
||||
mvadd_utf8 (centery - 4, centerx - offsetstr, _("Next item"));
|
||||
mvadd_utf8 (centery - 3, centerx - offsetstr, _("View item"));
|
||||
mvadd_utf8 (centery - 2, centerx - offsetstr, _("Reload this feed"));
|
||||
mvadd_utf8 (centery - 1, centerx - offsetstr, _("Force reload this feed"));
|
||||
mvadd_utf8 (centery, centerx - offsetstr, _("Open homepage"));
|
||||
mvadd_utf8 (centery + 1, centerx - offsetstr, _("Open link"));
|
||||
mvadd_utf8 (centery + 2, centerx - offsetstr, _("Mark all read"));
|
||||
mvadd_utf8 (centery + 3, centerx - offsetstr, _("Toggle item read status"));
|
||||
mvadd_utf8 (centery + 4, centerx - offsetstr, _("Show feed info..."));
|
||||
mvadd_utf8 (centery + 5, centerx - offsetstr, _("Type Ahead Find"));
|
||||
mvadd_utf8 (centery + 6, centerx - offsetstr, _("Return to main menu"));
|
||||
attroff (WA_REVERSE);
|
||||
|
||||
UIStatus (_("Press the any(tm) key to exit help screen."), 0, 0);
|
||||
|
@ -394,7 +402,6 @@ void UIDisplayFeedHelp (void)
|
|||
|
||||
void UIDisplayItemHelp (void)
|
||||
{
|
||||
|
||||
unsigned centerx = COLS / 2u, centery = LINES / 2u;
|
||||
UISupportDrawBox (centerx - 18, centery - 2, centerx + 18, centery + 3);
|
||||
|
||||
|
@ -404,12 +411,13 @@ void UIDisplayItemHelp (void)
|
|||
mvprintw (centery - 1, centerx - offset, "%c, <-:", _settings.keybindings.prev);
|
||||
mvprintw (centery, centerx - offset, "%c, ->:", _settings.keybindings.next);
|
||||
mvprintw (centery + 1, centerx - offset, "%c:", _settings.keybindings.urljump);
|
||||
mvprintw (centery + 2, centerx - offset, _("%c, enter:"), _settings.keybindings.prevmenu);
|
||||
mvprintw (centery + 2, centerx - offset, "%c", _settings.keybindings.prevmenu);
|
||||
add_utf8 (_(", enter:"));
|
||||
// Descriptions
|
||||
mvaddstr (centery - 1, centerx - offsetstr, _("Previous item"));
|
||||
mvaddstr (centery, centerx - offsetstr, _("Next item"));
|
||||
mvaddstr (centery + 1, centerx - offsetstr, _("Open link"));
|
||||
mvaddstr (centery + 2, centerx - offsetstr, _("Return to overview"));
|
||||
mvadd_utf8 (centery - 1, centerx - offsetstr, _("Previous item"));
|
||||
mvadd_utf8 (centery, centerx - offsetstr, _("Next item"));
|
||||
mvadd_utf8 (centery + 1, centerx - offsetstr, _("Open link"));
|
||||
mvadd_utf8 (centery + 2, centerx - offsetstr, _("Return to overview"));
|
||||
attroff (WA_REVERSE);
|
||||
|
||||
UIStatus (_("Press the any(tm) key to exit help screen."), 0, 0);
|
||||
|
@ -438,13 +446,15 @@ void CategorizeFeed (struct feed* current_feed)
|
|||
UISupportDrawBox ((COLS / 2) - 37, 2, (COLS / 2) + 37, 1 + 4 + nfeedcat + 1);
|
||||
|
||||
attron (WA_REVERSE);
|
||||
mvprintw (3, (COLS / 2) - ((strlen (_("Category configuration for %s")) + strlen (current_feed->title)) / 2), _("Category configuration for %s"), current_feed->title);
|
||||
char titlebuf [256];
|
||||
snprintf (titlebuf, sizeof(titlebuf), _("Category configuration for %s"), current_feed->title);
|
||||
mvadd_utf8 (3, (COLS - utf8_length(titlebuf))/2u, titlebuf);
|
||||
|
||||
char catletter = '1';
|
||||
// No category defined yet
|
||||
if (current_feed->feedcategories == NULL) {
|
||||
unsigned y = 5;
|
||||
mvaddstr (y, (COLS / 2) - 33, _("No category defined. Select one or add a new category:"));
|
||||
mvadd_utf8 (y, (COLS / 2) - 33, _("No category defined. Select one or add a new category:"));
|
||||
for (const struct categories * c = _settings.global_categories; c; ++y, c = c->next) {
|
||||
mvprintw (y + 1, COLS / 2 - 33, "%c. %s", catletter, c->name);
|
||||
if (++catletter == '9' + 1)
|
||||
|
@ -455,7 +465,7 @@ void CategorizeFeed (struct feed* current_feed)
|
|||
UIStatus (tmp, 0, 0);
|
||||
} else {
|
||||
unsigned y = 5;
|
||||
mvaddstr (y, (COLS / 2) - 33, _("Categories defined for this feed:"));
|
||||
mvadd_utf8 (y, (COLS / 2) - 33, _("Categories defined for this feed:"));
|
||||
for (const struct feedcategories * c = current_feed->feedcategories; c; ++y, c = c->next) {
|
||||
mvprintw (y + 1, COLS / 2 - 33, "%c. %s", catletter, c->name);
|
||||
if (++catletter == '9' + 1)
|
||||
|
@ -478,7 +488,7 @@ void CategorizeFeed (struct feed* current_feed)
|
|||
attron (WA_REVERSE);
|
||||
catletter = '1';
|
||||
unsigned y = 5;
|
||||
mvaddstr (y, (COLS / 2) - 33, _("Select a new category or add a new one:"));
|
||||
mvadd_utf8 (y, (COLS / 2) - 33, _("Select a new category or add a new one:"));
|
||||
for (const struct categories * c = _settings.global_categories; c; ++y, c = c->next) {
|
||||
mvprintw (y + 1, COLS / 2 - 33, "%c. %s", catletter, c->name);
|
||||
if (++catletter == '9' + 1)
|
||||
|
@ -542,7 +552,8 @@ char* DialogGetCategoryFilter (void)
|
|||
UISupportDrawBox ((COLS / 2) - 35, 2, (COLS / 2) + 35, nglobalcat + 4);
|
||||
|
||||
attron (WA_REVERSE);
|
||||
mvaddstr (3, (COLS / 2) - (strlen (_("Select filter to apply")) / 2), _("Select filter to apply"));
|
||||
const char* title = _("Select filter to apply");
|
||||
mvaddstr (3, (COLS - utf8_length(title)) / 2u, title);
|
||||
|
||||
char catletter = '1';
|
||||
unsigned y = 3;
|
||||
|
|
2
feedio.c
2
feedio.c
|
@ -381,7 +381,7 @@ void WriteCache (void)
|
|||
|
||||
unsigned count = 1;
|
||||
int oldnumobjects = 0;
|
||||
unsigned titlestrlen = strlen (_("Saving settings ["));
|
||||
unsigned titlestrlen = utf8_length (_("Saving settings ["));
|
||||
|
||||
for (const struct feed* cur_ptr = _feed_list; cur_ptr; cur_ptr = cur_ptr->next) {
|
||||
// Progress bar
|
||||
|
|
60
main.c
60
main.c
|
@ -110,7 +110,7 @@ static void modifyPIDFile (enum EPIDAction action)
|
|||
if (action == pid_file_create) {
|
||||
FILE* file = fopen (pid_path, "w");
|
||||
if (!file) {
|
||||
printf ("Unable to write PID file %s!", pid_path);
|
||||
printf (_("Unable to write PID file %s!"), pid_path);
|
||||
return;
|
||||
}
|
||||
fprintf (file, "%d", getpid());
|
||||
|
@ -133,12 +133,14 @@ static void checkPIDFile (void)
|
|||
pid_t pid = atoi (pidbuf);
|
||||
|
||||
if (kill (pid, 0) == 0) {
|
||||
printf ("Snownews seems to be already running with process ID %d.\n", pid);
|
||||
printf ("A pid file exists at \"%s\".\n", pid_path);
|
||||
printf (_("Snownews seems to be already running with process ID %d.\n"
|
||||
"A pid file exists at \"%s\".\n"), pid, pid_path);
|
||||
exit (2);
|
||||
} else {
|
||||
printf ("A pid file exists at \"%s\",\nbut Snownews doesn't seem to be running. Delete that file and start it again.\n", pid_path);
|
||||
printf ("Continue anyway? (y/n) ");
|
||||
printf (_("A pid file exists at \"%s\",\n"
|
||||
"but snownews doesn't seem to be running.\n"
|
||||
"Delete that file and start it again.\n"
|
||||
"Continue anyway? (y/n) "), pid_path);
|
||||
char ybuf[2] = { };
|
||||
fgets (ybuf, sizeof (ybuf), stdin);
|
||||
if (ybuf[0] != 'y')
|
||||
|
@ -206,13 +208,11 @@ _Noreturn void MainQuit (const char* func, const char* error)
|
|||
printf ("Exiting via signal %d.\n", last_signal);
|
||||
#endif
|
||||
}
|
||||
printf (_("Aborting program execution!\nAn internal error occured. Snownews has quit, no changes has been saved!\n"));
|
||||
printf (_("Please submit a bugreport at https://github.com/msharov/snownews/issues\n"));
|
||||
printf (_("Aborting program execution!\n"
|
||||
"snownews quit without saving changes due to internal error!\n"
|
||||
"Please submit a bugreport at https://github.com/msharov/snownews/issues\n"));
|
||||
printf ("----\n");
|
||||
// Please don't localize! I don't want to receive Japanese error messages.
|
||||
// Thanks. :)
|
||||
printf ("While executing: %s\n", func);
|
||||
printf ("Error as reported by the system: %s\n\n", error);
|
||||
printf (_("While executing: %s\nError: %s\n\n"), func, error);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
|
@ -257,18 +257,12 @@ static void InstallSignalHandlers (void)
|
|||
|
||||
static void printHelp (void)
|
||||
{
|
||||
printf (_("Snownews %s\n\n"), SNOWNEWS_VERSTRING);
|
||||
printf (_("usage: snownews [-huV] [--help|--update|--version]\n\n"));
|
||||
printf (_("\t--charset|-l\tForce using this charset.\n"));
|
||||
printf (_("\t--cursor-on|-c\tForce cursor always visible.\n"));
|
||||
printf (_("\t--help|-h\tPrint this help message.\n"));
|
||||
printf (_("\t--update|-u\tAutomatically update every feed.\n"));
|
||||
printf (_("\t--version|-V\tPrint version number and exit.\n"));
|
||||
}
|
||||
|
||||
static void badOption (const char* arg)
|
||||
{
|
||||
printf (_("Option %s requires an argument.\n"), arg);
|
||||
printf ("Snownews " SNOWNEWS_VERSTRING "\n\n");
|
||||
printf (_("Usage: snownews [-chuV]\n\n"
|
||||
" -h, --help\t\tPrint this help message.\n"
|
||||
" -V, --version\t\tPrint version number and exit.\n"
|
||||
" -c, --cursor-on\tForce cursor always visible.\n"
|
||||
" -u, --update\t\tAutomatically update every feed.\n"));
|
||||
}
|
||||
|
||||
//}}}-------------------------------------------------------------------
|
||||
|
@ -308,26 +302,18 @@ int main (int argc, char* argv[])
|
|||
bool autoupdate = false; // Automatically update feeds on app start... or not if set to 0.
|
||||
for (int i = 1; i < argc; ++i) {
|
||||
char* arg = argv[i];
|
||||
if (strcmp (arg, "--version") == 0 || strcmp (arg, "-V") == 0) {
|
||||
printf (_("Snownews version %s\n\n"), SNOWNEWS_VERSION);
|
||||
return EXIT_SUCCESS;
|
||||
} else if (strcmp (arg, "-u") == 0 || strcmp (arg, "--update") == 0) {
|
||||
if (strcmp (arg, "-u") == 0 || strcmp (arg, "--update") == 0)
|
||||
autoupdate = true;
|
||||
} else if (strcmp (arg, "-c") == 0 || strcmp (arg, "--cursor-on") == 0) {
|
||||
else if (strcmp (arg, "-c") == 0 || strcmp (arg, "--cursor-on") == 0)
|
||||
_settings.cursor_always_visible = true;
|
||||
} else if (strcmp (arg, "-l") == 0 || strcmp (arg, "--charset") == 0) {
|
||||
const char* chset = argv[i++];
|
||||
if (chset)
|
||||
_settings.global_charset = chset;
|
||||
else {
|
||||
badOption (arg);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
else if (strcmp (arg, "--version") == 0 || strcmp (arg, "-V") == 0) {
|
||||
printf ("snownews " SNOWNEWS_VERSTRING "\n");
|
||||
return EXIT_SUCCESS;
|
||||
} else if (strcmp (arg, "-h") == 0 || strcmp (arg, "--help") == 0) {
|
||||
printHelp();
|
||||
return EXIT_SUCCESS;
|
||||
} else {
|
||||
printf ("Unkown option given: \"%s\".\n", arg);
|
||||
printf (_("Unknown option \"%s\"\n"), arg);
|
||||
printHelp();
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
|
1
main.h
1
main.h
|
@ -123,7 +123,6 @@ struct categories {
|
|||
|
||||
struct settings {
|
||||
struct categories* global_categories;
|
||||
const char* global_charset;
|
||||
char* browser; // Browser command. lynx is standard.
|
||||
char* proxyname; // Hostname of proxyserver.
|
||||
unsigned short proxyport; // Port on proxyserver to use.
|
||||
|
|
6
parse.c
6
parse.c
|
@ -198,7 +198,7 @@ static void parse_rdf10_item (struct feed* feed, xmlDocPtr doc, xmlNodePtr node)
|
|||
item->data->hash = genItemHash (hashitems, 3);
|
||||
}
|
||||
if (!item->data->title)
|
||||
item->data->title = strdup ("Untitled");
|
||||
item->data->title = strdup (_("No title"));
|
||||
if (guid) {
|
||||
xmlFree (guid);
|
||||
guid = NULL;
|
||||
|
@ -310,7 +310,7 @@ static void parse_atom_entry (struct feed* feed, xmlDocPtr doc, xmlNodePtr node)
|
|||
item->data->hash = genItemHash (hashitems, 3);
|
||||
}
|
||||
if (!item->data->title)
|
||||
item->data->title = strdup ("Untitled");
|
||||
item->data->title = strdup (_("No title"));
|
||||
if (guid) {
|
||||
free (guid);
|
||||
guid = NULL;
|
||||
|
@ -452,7 +452,7 @@ int DeXML (struct feed* cur_ptr)
|
|||
free (cur_ptr->title);
|
||||
cur_ptr->title = strdup (cur_ptr->custom_title);
|
||||
} else if (!cur_ptr->title)
|
||||
cur_ptr->title = strdup ("Untitled");
|
||||
cur_ptr->title = strdup (_("No title"));
|
||||
if (cur_ptr->original)
|
||||
free (cur_ptr->original);
|
||||
cur_ptr->original = strdup (cur_ptr->title);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
################ Source files ##########################################
|
||||
|
||||
po/srcs := $(filter-out po/messages.po,$(wildcard po/*.po))
|
||||
po/srcs := $(filter-out po/snownews.pot,$(wildcard po/*.po))
|
||||
po/objs := $(addprefix $O,$(po/srcs:.po=.mo))
|
||||
locales := $(notdir $(po/srcs:.po=))
|
||||
|
||||
|
|
1105
po/be@latin.po
1105
po/be@latin.po
File diff suppressed because it is too large
Load Diff
765
po/messages.po
765
po/messages.po
|
@ -1,765 +0,0 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#: about.c:275 about.c:276 main.c:114 net-support.c:100 netio.c:351
|
||||
#: netio.c:352 netio.c:359 netio.c:360 netio.c:373 netio.c:374 netio.c:382
|
||||
#: netio.c:383
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2004-09-22 12:10+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: about.c:254
|
||||
msgid "Need at least 80 COLS terminal, sorry!"
|
||||
msgstr ""
|
||||
|
||||
#: about.c:306 about.c:328
|
||||
#, c-format
|
||||
msgid "Version %s"
|
||||
msgstr ""
|
||||
|
||||
#: about.c:307
|
||||
msgid "Merry Christmas from the Snownews developers."
|
||||
msgstr ""
|
||||
|
||||
#: about.c:308 about.c:331
|
||||
msgid "Main code"
|
||||
msgstr ""
|
||||
|
||||
#: about.c:310 about.c:333
|
||||
msgid "Additional code"
|
||||
msgstr ""
|
||||
|
||||
#: about.c:312 about.c:335
|
||||
msgid "Translation team"
|
||||
msgstr ""
|
||||
|
||||
#: about.c:328
|
||||
msgid "Version"
|
||||
msgstr ""
|
||||
|
||||
#: about.c:330
|
||||
msgid "Brought to you by:"
|
||||
msgstr ""
|
||||
|
||||
#: conversions.c:129 interface.c:164 interface.c:167
|
||||
msgid "No description available."
|
||||
msgstr ""
|
||||
|
||||
#: conversions.c:443
|
||||
#, c-format
|
||||
msgid "ERROR: zlib_uncompress: %d %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: conversions.c:459
|
||||
msgid "ERROR: No output during decompression"
|
||||
msgstr ""
|
||||
|
||||
#: conversions.c:492
|
||||
msgid "ERROR: Invalid magic bytes for GZIP data"
|
||||
msgstr ""
|
||||
|
||||
#: conversions.c:497
|
||||
msgid "ERROR: Compression method is not deflate"
|
||||
msgstr ""
|
||||
|
||||
#: conversions.c:502
|
||||
#, c-format
|
||||
msgid "ERROR: Unsupported flags %d\n"
|
||||
msgstr ""
|
||||
|
||||
#: cookies.c:184
|
||||
#, c-format
|
||||
msgid "Cookie for %s has expired!"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:84 dialog.c:86
|
||||
#, c-format
|
||||
msgid "Current setting: %s"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:99 dialog.c:653 interface.c:1213 interface.c:1342
|
||||
msgid "Aborted."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:106
|
||||
#, c-format
|
||||
msgid "Only %s format strings allowed for default browser!"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:111 ui-support.c:244
|
||||
msgid ""
|
||||
"Unsafe browser string (contains quotes)! See snownews.kcore.de/faq#toc2.4"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:131
|
||||
msgid "Enter new name. Blank line to abort. '-' to reset."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:144
|
||||
msgid "The new title must not contain a \"|\" character!"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:192
|
||||
msgid "Enter URL of the feed you want to add. Blank line to abort."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:272
|
||||
msgid ""
|
||||
"The feed could not be parsed. Do you need a filter script for this feed? (y/"
|
||||
"n)"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:324
|
||||
#, c-format
|
||||
msgid "Last updated: %s"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:326
|
||||
msgid "No modification date."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:329
|
||||
#, c-format
|
||||
msgid "In disk cache: %lld bytes"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:331
|
||||
msgid "Not in disk cache."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:334 dialog.c:336 dialog.c:339
|
||||
msgid "Categories:"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:336
|
||||
msgid "none"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:345
|
||||
msgid "Feed uses authentication."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:347
|
||||
msgid "Feed does not use authentication."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:353 dialog.c:354
|
||||
#, c-format
|
||||
msgid "Last webserver status: %d"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:381 dialog.c:382
|
||||
msgid "Filtered through:"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:385
|
||||
msgid "Displaying feed information."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:400
|
||||
msgid "Are you sure you want to delete this feed?"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:403
|
||||
msgid "Type 'y' to delete, any other key to abort."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:440 dialog.c:496
|
||||
msgid "tab:"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:444
|
||||
msgid "Add RSS feed..."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:445
|
||||
msgid "Delete highlighted RSS feed..."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:446
|
||||
msgid "Rename feed..."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:447
|
||||
msgid "Reload all feeds"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:448 dialog.c:502
|
||||
msgid "Reload this feed"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:449 dialog.c:505
|
||||
msgid "Mark all read"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:450
|
||||
msgid "Change default browser..."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:451
|
||||
msgid "Move item up, down"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:452
|
||||
msgid "Sort feed list alphabetically"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:453
|
||||
msgid "Categorize feed..."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:454
|
||||
msgid "Apply filter..."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:455
|
||||
msgid "Only current category"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:456
|
||||
msgid "Remove filter"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:457
|
||||
msgid "Toggle AND/OR filtering"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:458
|
||||
msgid "Show new headlines"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:459
|
||||
msgid "Add conversion filter..."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:460 dialog.c:508
|
||||
msgid "Type Ahead Find"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:461
|
||||
msgid "About"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:462
|
||||
msgid "Quit program"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:465 dialog.c:512 dialog.c:544
|
||||
msgid "Press the any(tm) key to exit help screen."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:487
|
||||
#, c-format
|
||||
msgid "%c, up:"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:488
|
||||
#, c-format
|
||||
msgid "%c, down:"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:489
|
||||
msgid "enter:"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:499 dialog.c:538
|
||||
msgid "Previous item"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:500 dialog.c:539
|
||||
msgid "Next item"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:501
|
||||
msgid "View item"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:503
|
||||
msgid "Open homepage"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:504 dialog.c:540
|
||||
msgid "Open link"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:506
|
||||
msgid "Mark item unread"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:507
|
||||
msgid "Show feed info..."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:509
|
||||
msgid "Return to main menu"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:531
|
||||
msgid "cursor:"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:535
|
||||
#, c-format
|
||||
msgid "%c, enter:"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:537
|
||||
msgid "Scroll text"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:541
|
||||
msgid "Return to overview"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:581 dialog.c:582
|
||||
#, c-format
|
||||
msgid "Category configuration for %s"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:589
|
||||
msgid "No category defined. Select one or add a new category:"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:598 dialog.c:638
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Select category number to add, press 'A' to add a new category or '%c' to "
|
||||
"quit."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:603
|
||||
msgid "Categories defined for this feed:"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:612
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Select a category number to delete, press 'A' to add a new one or '%c' to "
|
||||
"quit."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:629
|
||||
msgid "Select a new category or add a new one:"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:650
|
||||
msgid "Enter new category name."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:658
|
||||
msgid "Category already defined for this feed!"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:723
|
||||
msgid "Select filter to apply"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:736
|
||||
msgid "Select a category number or any other key to reset filters."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:774
|
||||
msgid "Enter script to pipe feed through."
|
||||
msgstr ""
|
||||
|
||||
#: filters.c:52
|
||||
#, c-format
|
||||
msgid "Loading \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: filters.c:109
|
||||
#, c-format
|
||||
msgid "Could not write temp file for filter: %s"
|
||||
msgstr ""
|
||||
|
||||
#: interface.c:161 interface.c:577 interface.c:580
|
||||
msgid "No title"
|
||||
msgstr ""
|
||||
|
||||
#: interface.c:241 interface.c:611
|
||||
msgid "-> No link"
|
||||
msgstr ""
|
||||
|
||||
#: interface.c:256
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Press '%c' or Enter to return to previous screen. Hit '%c' for help screen."
|
||||
msgstr ""
|
||||
|
||||
#: interface.c:627
|
||||
#, c-format
|
||||
msgid "Press '%c' to return to main menu, '%c' to show help."
|
||||
msgstr ""
|
||||
|
||||
#: interface.c:734 interface.c:1184 interface.c:1194 interface.c:1204
|
||||
#: interface.c:1243 interface.c:1468 interface.c:1476 interface.c:1484
|
||||
#: interface.c:1493
|
||||
msgid "Please deactivate the category filter before using this function."
|
||||
msgstr ""
|
||||
|
||||
#: interface.c:1115 interface.c:1117 interface.c:1134
|
||||
msgid "new"
|
||||
msgstr ""
|
||||
|
||||
#: interface.c:1128
|
||||
#, c-format
|
||||
msgid "%3d new"
|
||||
msgstr ""
|
||||
|
||||
#: interface.c:1150
|
||||
#, c-format
|
||||
msgid "Press '%c' for help window."
|
||||
msgstr ""
|
||||
|
||||
#: interface.c:1210
|
||||
msgid "Successfully added new item..."
|
||||
msgstr ""
|
||||
|
||||
#: interface.c:1217
|
||||
msgid "Invalid URL! Please add http:// if you forgot this."
|
||||
msgstr ""
|
||||
|
||||
#: interface.c:1221
|
||||
msgid "There was a problem adding the feed!"
|
||||
msgstr ""
|
||||
|
||||
#: interface.c:1420 interface.c:1437
|
||||
msgid "You cannot move items while a category filter is defined!"
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:53
|
||||
#, c-format
|
||||
msgid "Bad request"
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:56
|
||||
#, c-format
|
||||
msgid "Payment required"
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:59
|
||||
#, c-format
|
||||
msgid "Access denied"
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:62
|
||||
#, c-format
|
||||
msgid "Internal server error"
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:65
|
||||
#, c-format
|
||||
msgid "Not implemented"
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:69
|
||||
#, c-format
|
||||
msgid "Service unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:88
|
||||
#, c-format
|
||||
msgid "%s: Invalid URL!"
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:91
|
||||
#, c-format
|
||||
msgid "%s: Couldn't create network socket!"
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:94
|
||||
#, c-format
|
||||
msgid "%s: Can't resolve host!"
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:97
|
||||
#, c-format
|
||||
msgid "%s: Connection refused!"
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:100
|
||||
#, c-format
|
||||
msgid "%s: Couldn't connect to server: %s"
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:105
|
||||
#, c-format
|
||||
msgid "%s: Connection timed out."
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:110
|
||||
#, c-format
|
||||
msgid "%s: Too many HTTP redirects encountered! Giving up."
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:113
|
||||
#, c-format
|
||||
msgid "%s: Server sent an invalid redirect!"
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:117
|
||||
#, c-format
|
||||
msgid "%s: This feed no longer exists. Please unsubscribe!"
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:121
|
||||
#, c-format
|
||||
msgid "%s: Could not download feed: %s"
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:124
|
||||
#, c-format
|
||||
msgid "%s: Error in server reply."
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:127
|
||||
#, c-format
|
||||
msgid "%s: Authentication failed!"
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:130
|
||||
#, c-format
|
||||
msgid "%s: URL does not contain authentication information!"
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:133
|
||||
#, c-format
|
||||
msgid "%s: Could not generate authentication information!"
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:136
|
||||
#, c-format
|
||||
msgid "%s: Unsupported authentication method requested by server!"
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:139
|
||||
#, c-format
|
||||
msgid "%s: Error decompressing server reply!"
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:207
|
||||
msgid "Invalid XML! Cannot parse this feed!"
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:251
|
||||
#, c-format
|
||||
msgid "Cache for %s is toast. Reloading from server..."
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:286
|
||||
#, c-format
|
||||
msgid "Could not load %s!"
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:305 io-internal.c:306
|
||||
msgid "Loading cache ["
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:351 io-internal.c:352
|
||||
msgid "Saving settings ["
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:357
|
||||
msgid "Save settings (browser)"
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:374
|
||||
msgid "Save settings (urls)"
|
||||
msgstr ""
|
||||
|
||||
#: io-internal.c:430
|
||||
msgid "Writing cache file"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:59
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Bye.\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:68
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Aborting program execution!\n"
|
||||
"An internal error occured. Snownews has quit, no changes has been saved!\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:69
|
||||
#, c-format
|
||||
msgid ""
|
||||
"This shouldn't happen, please submit a bugreport to kiza@kcore.de, tell me "
|
||||
"what you where doing and include the output below in your mail.\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:72
|
||||
#, c-format
|
||||
msgid "While executing: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:73
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Error as reported by the system: %s\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:124 main.c:135
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Snownews version %s\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:130
|
||||
#, c-format
|
||||
msgid "The option \"--disable-versioncheck\" has been obsoleted.\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:131
|
||||
#, c-format
|
||||
msgid "Please see the manpage for details.\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:132
|
||||
#, c-format
|
||||
msgid "(To deactivate check, put -1 into ~/.snownews/updatecheck)\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:136
|
||||
#, c-format
|
||||
msgid ""
|
||||
"usage: snownews [-huV] [--help|--update|--version]\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:137
|
||||
#, c-format
|
||||
msgid "\t--update|-u\tAutomatically update every feed.\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:138
|
||||
#, c-format
|
||||
msgid "\t--help|-h\tPrint this help message.\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:139
|
||||
#, c-format
|
||||
msgid "\t--version|-V\tPrint version number and exit.\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:140
|
||||
#, c-format
|
||||
msgid "\t--disable-versioncheck (obsoleted)\n"
|
||||
msgstr ""
|
||||
|
||||
#: netio.c:149 netio.c:151 netio.c:311
|
||||
#, c-format
|
||||
msgid "Downloading \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: netio.c:309
|
||||
#, c-format
|
||||
msgid "Downloading \"http://%s%s\""
|
||||
msgstr ""
|
||||
|
||||
#: netio.c:503 netio.c:504
|
||||
msgid "URL points to permanent redirect, updating with new location..."
|
||||
msgstr ""
|
||||
|
||||
#: os-support.c:90
|
||||
msgid "Allocating memory"
|
||||
msgstr ""
|
||||
|
||||
#: setup.c:64
|
||||
msgid "Creating new config \"browser\"..."
|
||||
msgstr ""
|
||||
|
||||
#: setup.c:67
|
||||
msgid "Create initial configfile \"config\""
|
||||
msgstr ""
|
||||
|
||||
#: setup.c:557 setup.c:561
|
||||
msgid "Creating config directory ~/.snownews/"
|
||||
msgstr ""
|
||||
|
||||
#: setup.c:562
|
||||
msgid "A file with the name \"~/.snownews/\" exists!"
|
||||
msgstr ""
|
||||
|
||||
#: setup.c:570 setup.c:573
|
||||
msgid "Creating config directory ~/.snownews/cache/"
|
||||
msgstr ""
|
||||
|
||||
#: setup.c:574
|
||||
msgid "A file with the name \"~/.snownews/cache/\" exists!"
|
||||
msgstr ""
|
||||
|
||||
#: setup.c:584
|
||||
msgid "Reading configuration settings..."
|
||||
msgstr ""
|
||||
|
||||
#: setup.c:596
|
||||
msgid "Creating new configfile."
|
||||
msgstr ""
|
||||
|
||||
#: setup.c:599
|
||||
msgid "Create initial configfile \"urls\""
|
||||
msgstr ""
|
||||
|
||||
#: ui-support.c:179
|
||||
msgid "Sorting, please wait..."
|
||||
msgstr ""
|
||||
|
||||
#: ui-support.c:256
|
||||
msgid "Invalid URL passed. Possible shell exploit attempted!"
|
||||
msgstr ""
|
||||
|
||||
#: ui-support.c:261 ui-support.c:263
|
||||
#, c-format
|
||||
msgid "Executing %s"
|
||||
msgstr ""
|
||||
|
||||
#: ui-support.c:341
|
||||
msgid "(New headlines)"
|
||||
msgstr ""
|
||||
|
||||
#: updatecheck.c:96
|
||||
#, c-format
|
||||
msgid "A new version %s of Snownews is available.\n"
|
||||
msgstr ""
|
||||
|
||||
#: updatecheck.c:97
|
||||
#, c-format
|
||||
msgid ""
|
||||
"If you want to download it, go to http://snownews.kcore.de/downloading/\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
|
||||
#: updatecheck.c:98
|
||||
#, c-format
|
||||
msgid ""
|
||||
"To disable the auto version check see the manpage.\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
|
||||
#: updatecheck.c:99
|
||||
#, c-format
|
||||
msgid "http://snownews.kcore.de/download/snownews-%s.tar.gz (.sign)\n"
|
||||
msgstr ""
|
||||
|
||||
#: updatecheck.c:100
|
||||
#, c-format
|
||||
msgid "http://snownews.kcore.de/download/snownews-%s.i386.tar.bz2 (.sign)\n"
|
||||
msgstr ""
|
1355
po/pt_BR.po
1355
po/pt_BR.po
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,556 @@
|
|||
# This file is part of Snownews - A lightweight console RSS newsreader
|
||||
#
|
||||
# Copyright (c) 2003-2009 Oliver Feiler <kiza@kcore.de>
|
||||
# Copyright (c) 2003-2009 Rene Puls <rpuls@gmx.net>
|
||||
# Copyright (c) 2021 Mike Sharov <msharov@users.sourceforge.net>
|
||||
#
|
||||
# Snownews is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License version 3
|
||||
# as published by the Free Software Foundation.
|
||||
#
|
||||
# Snownews is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# See the GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Snownews. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: snownews\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-10-25 12:47-0400\n"
|
||||
"Language: en\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: about.c:84
|
||||
#, c-format
|
||||
msgid "Move: cursor or %c/%c; shoot: space; quit: %c"
|
||||
msgstr ""
|
||||
|
||||
#: about.c:94
|
||||
msgid "Santa Hunta!"
|
||||
msgstr ""
|
||||
|
||||
#: about.c:97
|
||||
#, c-format
|
||||
msgid "Score: %d"
|
||||
msgstr ""
|
||||
|
||||
#: about.c:101
|
||||
#, c-format
|
||||
msgid "Level: %d"
|
||||
msgstr ""
|
||||
|
||||
#: about.c:243
|
||||
msgid "Final score:"
|
||||
msgstr ""
|
||||
|
||||
#: about.c:346
|
||||
msgid "Need at least 80 COLS terminal, sorry!"
|
||||
msgstr ""
|
||||
|
||||
#: about.c:362
|
||||
#, c-format
|
||||
msgid "Version %s"
|
||||
msgstr ""
|
||||
|
||||
#: about.c:365
|
||||
msgid "Brought to you by:"
|
||||
msgstr ""
|
||||
|
||||
#: about.c:366
|
||||
msgid "Main code"
|
||||
msgstr ""
|
||||
|
||||
#: about.c:368
|
||||
msgid "Additional code"
|
||||
msgstr ""
|
||||
|
||||
#: about.c:370
|
||||
msgid "Translation team"
|
||||
msgstr ""
|
||||
|
||||
#: conv.c:318
|
||||
#, c-format
|
||||
msgid "today"
|
||||
msgstr ""
|
||||
|
||||
#: conv.c:320
|
||||
#, c-format
|
||||
msgid "yesterday"
|
||||
msgstr ""
|
||||
|
||||
#: conv.c:322
|
||||
#, c-format
|
||||
msgid "%d days ago"
|
||||
msgstr ""
|
||||
|
||||
#: conv.c:324
|
||||
#, c-format
|
||||
msgid "a week ago"
|
||||
msgstr ""
|
||||
|
||||
#: conv.c:326
|
||||
#, c-format
|
||||
msgid "on %x"
|
||||
msgstr ""
|
||||
|
||||
#: conv.c:333
|
||||
msgid "Posted "
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:57 dialog.c:59
|
||||
#, c-format
|
||||
msgid "Current setting: %s"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:71 dialog.c:511
|
||||
msgid "Aborted."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:78
|
||||
#, c-format
|
||||
msgid "Only %s format strings allowed for default browser!"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:83 uiutil.c:156
|
||||
msgid ""
|
||||
"Unsafe browser string (contains quotes)! See snownews.kcore.de/faq#toc2.4"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:98
|
||||
msgid "Enter new name. Blank line to abort. '-' to reset."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:110
|
||||
msgid "The new title must not contain a \"|\" character!"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:150
|
||||
msgid "Enter URL of the feed you want to add. Blank line to abort."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:198
|
||||
msgid ""
|
||||
"The feed could not be parsed. Do you need a filter script for this feed? (y/"
|
||||
"n)"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:238
|
||||
msgid "Last updated: "
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:241
|
||||
msgid "No modification date."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:253
|
||||
msgid "Not in disk cache."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:256
|
||||
#, c-format
|
||||
msgid "In disk cache: %jd bytes"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:261
|
||||
msgid "Categories:"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:264
|
||||
msgid "none"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:274
|
||||
msgid "Download failed: "
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:277
|
||||
msgid "Feed uses authentication."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:279
|
||||
msgid "Feed does not use authentication."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:285
|
||||
msgid "Filtered through:"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:291
|
||||
msgid "Displaying feed information."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:302
|
||||
msgid "Are you sure you want to delete this feed?"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:305
|
||||
msgid "Type 'y' to delete, any other key to abort."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:334 dialog.c:382
|
||||
msgid "tab:"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:338
|
||||
msgid "Add RSS feed..."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:339
|
||||
msgid "Delete highlighted RSS feed..."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:340
|
||||
msgid "Rename feed..."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:341
|
||||
msgid "Reload all feeds"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:342 dialog.c:388
|
||||
msgid "Reload this feed"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:343 dialog.c:392
|
||||
msgid "Mark all read"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:344
|
||||
msgid "Change default browser..."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:345
|
||||
msgid "Move item up, down"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:346
|
||||
msgid "Sort feed list alphabetically"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:347
|
||||
msgid "Categorize feed..."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:348
|
||||
msgid "Apply filter..."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:349
|
||||
msgid "Only current category"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:350
|
||||
msgid "Remove filter"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:351
|
||||
msgid "Show new headlines"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:352
|
||||
msgid "Add conversion filter..."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:353 dialog.c:395
|
||||
msgid "Type Ahead Find"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:354
|
||||
msgid "About"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:355
|
||||
msgid "Quit program"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:358 dialog.c:399 dialog.c:423
|
||||
msgid "Press the any(tm) key to exit help screen."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:371
|
||||
msgid ", up:"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:373
|
||||
msgid ", down:"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:374
|
||||
msgid "enter:"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:385 dialog.c:417
|
||||
msgid "Previous item"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:386 dialog.c:418
|
||||
msgid "Next item"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:387
|
||||
msgid "View item"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:389
|
||||
msgid "Force reload this feed"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:390
|
||||
msgid "Open homepage"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:391 dialog.c:419
|
||||
msgid "Open link"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:393
|
||||
msgid "Toggle item read status"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:394
|
||||
msgid "Show feed info..."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:396
|
||||
msgid "Return to main menu"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:415
|
||||
msgid ", enter:"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:420
|
||||
msgid "Return to overview"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:450
|
||||
#, c-format
|
||||
msgid "Category configuration for %s"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:457
|
||||
msgid "No category defined. Select one or add a new category:"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:464 dialog.c:498
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Select category number to add, press 'A' to add a new category or '%c' to "
|
||||
"quit."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:468
|
||||
msgid "Categories defined for this feed:"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:475
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Select a category number to delete, press 'A' to add a new one or '%c' to "
|
||||
"quit."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:491
|
||||
msgid "Select a new category or add a new one:"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:508
|
||||
msgid "Enter new category name."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:515
|
||||
msgid "Category already defined for this feed!"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:555
|
||||
msgid "Select filter to apply"
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:566
|
||||
msgid "Select a category number or any other key to reset filters."
|
||||
msgstr ""
|
||||
|
||||
#: dialog.c:594
|
||||
msgid "Enter script to pipe feed through."
|
||||
msgstr ""
|
||||
|
||||
#: feedio.c:73
|
||||
msgid "Invalid XML! Cannot parse this feed!"
|
||||
msgstr ""
|
||||
|
||||
#: feedio.c:110
|
||||
#, c-format
|
||||
msgid "Cache for %s is toast. Reloading from server..."
|
||||
msgstr ""
|
||||
|
||||
#: feedio.c:147
|
||||
#, c-format
|
||||
msgid "Could not load %s!"
|
||||
msgstr ""
|
||||
|
||||
#: feedio.c:162 feedio.c:163
|
||||
msgid "Loading cache ["
|
||||
msgstr ""
|
||||
|
||||
#: feedio.c:373 feedio.c:384
|
||||
msgid "Saving settings ["
|
||||
msgstr ""
|
||||
|
||||
#: filters.c:36
|
||||
#, c-format
|
||||
msgid "Loading \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: main.c:113
|
||||
#, c-format
|
||||
msgid "Unable to write PID file %s!"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:136
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Snownews seems to be already running with process ID %d.\n"
|
||||
"A pid file exists at \"%s\".\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:140
|
||||
#, c-format
|
||||
msgid ""
|
||||
"A pid file exists at \"%s\",\n"
|
||||
"but snownews doesn't seem to be running.\n"
|
||||
"Delete that file and start it again.\n"
|
||||
"Continue anyway? (y/n) "
|
||||
msgstr ""
|
||||
|
||||
#: main.c:211
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Aborting program execution!\n"
|
||||
"snownews quit without saving changes due to internal error!\n"
|
||||
"Please submit a bugreport at https://github.com/msharov/snownews/issues\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:215
|
||||
#, c-format
|
||||
msgid ""
|
||||
"While executing: %s\n"
|
||||
"Error: %s\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:261
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Usage: snownews [-chuV]\n"
|
||||
"\n"
|
||||
" -h, --help\t\tPrint this help message.\n"
|
||||
" -V, --version\t\tPrint version number and exit.\n"
|
||||
" -c, --cursor-on\tForce cursor always visible.\n"
|
||||
" -u, --update\t\tAutomatically update every feed.\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:316
|
||||
#, c-format
|
||||
msgid "Unknown option \"%s\"\n"
|
||||
msgstr ""
|
||||
|
||||
#: netio.c:121
|
||||
msgid "already up to date"
|
||||
msgstr ""
|
||||
|
||||
#: parse.c:201 parse.c:313 parse.c:455 ui.c:224 ui.c:302 ui.c:305
|
||||
msgid "No title"
|
||||
msgstr ""
|
||||
|
||||
#: setup.c:37
|
||||
msgid "configuration dir path is too long"
|
||||
msgstr ""
|
||||
|
||||
#: setup.c:51
|
||||
msgid "cache dir path is too long"
|
||||
msgstr ""
|
||||
|
||||
#: setup.c:98
|
||||
msgid "Save settings (browser)"
|
||||
msgstr ""
|
||||
|
||||
#: setup.c:456
|
||||
msgid "Reading configuration settings..."
|
||||
msgstr ""
|
||||
|
||||
#: ui.c:96
|
||||
msgid "No description available."
|
||||
msgstr ""
|
||||
|
||||
#: ui.c:123
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Press '%c' or Enter to return to previous screen. Hit '%c' for help screen."
|
||||
msgstr ""
|
||||
|
||||
#: ui.c:332
|
||||
#, c-format
|
||||
msgid "Press '%c' to return to main menu, '%c' to show help."
|
||||
msgstr ""
|
||||
|
||||
#: ui.c:412 ui.c:776 ui.c:787 ui.c:794 ui.c:824 ui.c:1013 ui.c:1021 ui.c:1028
|
||||
#: ui.c:1036
|
||||
msgid "Please deactivate the category filter before using this function."
|
||||
msgstr ""
|
||||
|
||||
#: ui.c:719
|
||||
#, c-format
|
||||
msgid "%3u new"
|
||||
msgid_plural "%3u new"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ui.c:744
|
||||
#, c-format
|
||||
msgid "Press '%c' for help window."
|
||||
msgstr ""
|
||||
|
||||
#: ui.c:746
|
||||
#, c-format
|
||||
msgid "Press '%c' for help window. (Press '%c' to play Santa Hunta!)"
|
||||
msgstr ""
|
||||
|
||||
#: ui.c:798
|
||||
msgid "Successfully added new item..."
|
||||
msgstr ""
|
||||
|
||||
#: ui.c:802
|
||||
msgid "Invalid URL! Please add http:// if you forgot this."
|
||||
msgstr ""
|
||||
|
||||
#: ui.c:805
|
||||
msgid "There was a problem adding the feed!"
|
||||
msgstr ""
|
||||
|
||||
#: ui.c:960 ui.c:977
|
||||
msgid "You cannot move items while a category filter is defined!"
|
||||
msgstr ""
|
||||
|
||||
#: uiutil.c:91
|
||||
msgid "Sorting, please wait..."
|
||||
msgstr ""
|
||||
|
||||
#: uiutil.c:160
|
||||
msgid "Invalid URL passed. Possible shell exploit attempted!"
|
||||
msgstr ""
|
||||
|
||||
#: uiutil.c:169
|
||||
#, c-format
|
||||
msgid "Executing %s"
|
||||
msgstr ""
|
||||
|
||||
#: uiutil.c:220
|
||||
msgid "(New headlines)"
|
||||
msgstr ""
|
1152
po/uk_UA.po
1152
po/uk_UA.po
File diff suppressed because it is too large
Load Diff
1071
po/zh_CN.po
1071
po/zh_CN.po
File diff suppressed because it is too large
Load Diff
1090
po/zh_TW.po
1090
po/zh_TW.po
File diff suppressed because it is too large
Load Diff
4
setup.c
4
setup.c
|
@ -34,7 +34,7 @@ void ConfigFilePath (const char* filename, char* path, size_t pathsz)
|
|||
else
|
||||
pathlen = snprintf (path, pathsz, "%s/.config/" SNOWNEWS_NAME "/%s", getenv("HOME"), filename);
|
||||
if (pathlen >= pathsz)
|
||||
MainQuit ("ConfigFilePath", "configuration dir path is too long");
|
||||
MainQuit ("ConfigFilePath", _("configuration dir path is too long"));
|
||||
if (path[pathlen-1] == '/')
|
||||
path[pathlen-1] = 0;
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ void CacheFilePath (const char* filename, char* path, size_t pathsz)
|
|||
else
|
||||
pathlen = snprintf (path, pathsz, "%s/.local/share/" SNOWNEWS_NAME "/%s", getenv("HOME"), filename);
|
||||
if (pathlen >= pathsz)
|
||||
MainQuit ("CacheFilePath", "cache dir path is too long");
|
||||
MainQuit ("CacheFilePath", _("cache dir path is too long"));
|
||||
if (path[pathlen-1] == '/')
|
||||
path[pathlen-1] = 0;
|
||||
}
|
||||
|
|
10
ui.c
10
ui.c
|
@ -221,7 +221,7 @@ static int UIDisplayFeed (struct feed* current_feed)
|
|||
if (!title)
|
||||
title = current_feed->title;
|
||||
if (!title)
|
||||
title = "Untitled";
|
||||
title = _("No title");
|
||||
UISupportDrawHeader (title);
|
||||
|
||||
// We start the item list below the header
|
||||
|
@ -703,9 +703,9 @@ void UIMainInterface (void)
|
|||
|
||||
int columns;
|
||||
if (cur_ptr->feedcategories != NULL)
|
||||
columns = COLS - 26 - strlen (_("new"));
|
||||
columns = COLS - 26 - strlen ("new");
|
||||
else
|
||||
columns = COLS - 9 - strlen (_("new"));
|
||||
columns = COLS - 9 - strlen ("new");
|
||||
|
||||
mvaddn_utf8 (ypos, 1, cur_ptr->title, columns);
|
||||
if (xmlStrlen ((xmlChar*) cur_ptr->title) > columns)
|
||||
|
@ -719,11 +719,11 @@ void UIMainInterface (void)
|
|||
const char* localized_msg = ngettext ("%3u new", "%3u new", newcount);
|
||||
char msgbuf[16];
|
||||
snprintf (msgbuf, sizeof (msgbuf), localized_msg, newcount);
|
||||
mvadd_utf8 (ypos, COLS - 1 - strlen (localized_msg), msgbuf);
|
||||
mvadd_utf8 (ypos, COLS - 1 - utf8_length (localized_msg), msgbuf);
|
||||
}
|
||||
|
||||
if (cur_ptr->feedcategories != NULL)
|
||||
mvaddn_utf8 (ypos, COLS - 21 - strlen (_("new")), cur_ptr->feedcategories->name, 15);
|
||||
mvaddn_utf8 (ypos, COLS - 21 - strlen ("new"), cur_ptr->feedcategories->name, 15);
|
||||
|
||||
++ypos;
|
||||
|
||||
|
|
Loading…
Reference in New Issue