diff options
-rw-r--r-- | localized_js.php | 242 | ||||
-rw-r--r-- | offline.js | 2 | ||||
-rwxr-xr-x | update-translations.sh | 2 | ||||
-rwxr-xr-x | utils/extract-i18n-js.pl | 15 | ||||
-rwxr-xr-x | utils/update-js-translations.sh | 48 |
5 files changed, 200 insertions, 109 deletions
diff --git a/localized_js.php b/localized_js.php index ee230940c..849bab9f1 100644 --- a/localized_js.php +++ b/localized_js.php @@ -9,13 +9,13 @@ function T_js_decl($s1) { if (!$s1) return; - $T_s1 = __($s1); +// $T_s1 = __($s1); - if ($T_s1 != $s1) { +// if ($T_s1 != $s1) { return "T_messages[\"$s1\"] = \"".__($s1)."\";\n"; - } else { - return ""; - } +// } else { +// return ""; +// } } ?> @@ -31,124 +31,152 @@ function __(msg) { } <?php - -print T_js_decl("display feeds"); -print T_js_decl("display tags"); -print T_js_decl("Loading, please wait..."); -print T_js_decl("All feeds updated."); -print T_js_decl("Marking all feeds as read..."); +print T_js_decl(""); +print T_js_decl("Actions..."); print T_js_decl("Adding feed..."); -print T_js_decl("Removing feed..."); -print T_js_decl("Saving feed..."); -print T_js_decl("Can't add category: no name specified."); print T_js_decl("Adding feed category..."); -print T_js_decl("Can't add user: no login specified."); - print T_js_decl("Adding user..."); -print T_js_decl("Can't create label: missing SQL expression."); +print T_js_decl("All"); +print T_js_decl("All articles"); +print T_js_decl("All feeds updated."); +print T_js_decl("Assign score to article:"); +print T_js_decl("Assign selected articles to label?"); +print T_js_decl("Can't add category: no name specified."); +print T_js_decl("Can't add filter: nothing to match on."); print T_js_decl("Can't create label: missing caption."); -print T_js_decl("Remove selected labels?"); -print T_js_decl("Removing selected labels..."); -print T_js_decl("No labels are selected."); -print T_js_decl("Remove selected users?"); -print T_js_decl("Removing selected users..."); -print T_js_decl("No users are selected."); -print T_js_decl("Remove selected filters?"); -print T_js_decl("Removing selected filters..."); -print T_js_decl("No filters are selected."); -print T_js_decl("Unsubscribe from selected feeds?"); -print T_js_decl("Unsubscribing from selected feeds..."); -print T_js_decl("No feeds are selected."); -print T_js_decl("Remove selected categories?"); -print T_js_decl("Removing selected categories..."); -print T_js_decl("No categories are selected."); -print T_js_decl("Saving category..."); -print T_js_decl("Loading help..."); -print T_js_decl("Saving label..."); -print T_js_decl("Login field cannot be blank."); -print T_js_decl("Saving user..."); -print T_js_decl("Saving filter..."); -print T_js_decl("No labels are selected."); -print T_js_decl("Please select only one label."); -print T_js_decl("No users are selected."); -print T_js_decl("Please select only one user."); -print T_js_decl("No users are selected."); -print T_js_decl("Please select only one user."); -print T_js_decl("Reset password of selected user?"); -print T_js_decl("Resetting password for selected user..."); -print T_js_decl("No feeds are selected."); -print T_js_decl("Please select only one feed."); -print T_js_decl("No filters are selected."); -print T_js_decl("Please select only one filter."); -print T_js_decl("No feeds are selected."); -print T_js_decl("Please select one feed."); -print T_js_decl("No categories are selected."); -print T_js_decl("Please select only one category."); -print T_js_decl("No OPML file to upload."); +print T_js_decl("Can't create user: no login specified."); +print T_js_decl("Can't open article: received invalid article link"); +print T_js_decl("Can't open article: received invalid XML"); +print T_js_decl("Can't subscribe: no feed URL given."); +print T_js_decl("Category reordering disabled"); +print T_js_decl("Category reordering enabled"); print T_js_decl("Changing category of selected feeds..."); -print T_js_decl("Reset to defaults?"); -print T_js_decl("Trying to change password..."); -print T_js_decl("Trying to change e-mail..."); -print T_js_decl("No articles are selected."); -print T_js_decl("Could not update headlines (missing XML object)"); +print T_js_decl("Clearing feed..."); +print T_js_decl("Clearing selected feed..."); +print T_js_decl("Click to collapse category"); +print T_js_decl("comments"); +print T_js_decl("Could not change feed URL."); print T_js_decl("Could not display article (missing XML object)"); -print T_js_decl("No feed selected."); -print T_js_decl("Replace current publishing address with a new one?"); -print T_js_decl("Address changed."); -print T_js_decl("Could not change address."); -print T_js_decl("You can't unsubscribe from the category."); -print T_js_decl("Please select some feed first."); -print T_js_decl("You can't edit this kind of feed."); -print T_js_decl("Can't create label: missing SQL expression."); -print T_js_decl("Can't create label: missing caption."); -print T_js_decl("Can't add user: no login specified."); -print T_js_decl("No labels are selected."); -print T_js_decl("No users are selected."); -print T_js_decl("No filters are selected."); -print T_js_decl("No feeds are selected."); -print T_js_decl("No categories are selected."); +print T_js_decl("Could not update headlines (missing XML data)"); +print T_js_decl("Could not update headlines (missing XML object)"); +print T_js_decl("Data for offline browsing has not been downloaded yet."); +print T_js_decl("display feeds"); +print T_js_decl("Entered passwords do not match."); +print T_js_decl("Entire feed"); +print T_js_decl("Erase all non-starred articles in %s?"); +print T_js_decl("Erase all non-starred articles in selected feed?"); +print T_js_decl("Error: Invalid feed URL."); +print T_js_decl("Error: No feed URL given."); +print T_js_decl("Error while trying to load more headlines"); +print T_js_decl("Failed to load article in new window"); +print T_js_decl("Failed to open window for the article"); +print T_js_decl("How many days of articles to keep (0 - use default)?"); +print T_js_decl("Invert"); +print T_js_decl("Last sync: Cancelled."); +print T_js_decl("Last sync: Error receiving data."); +print T_js_decl("Last sync: %s"); +print T_js_decl("Loading feed list..."); +print T_js_decl("Loading, please wait..."); +print T_js_decl("Local data removed."); print T_js_decl("Login field cannot be blank."); -print T_js_decl("No feeds are selected."); -print T_js_decl("Can't add filter: nothing to match on."); -print T_js_decl("Can't subscribe: no feed URL given."); -print T_js_decl("Unsubscribe from %s?"); -print T_js_decl("Mark all visible articles in %s as read?"); +print T_js_decl("Mark all articles as read?"); print T_js_decl("Mark all articles in %s as read?"); +print T_js_decl("Mark all visible articles in %s as read?"); +print T_js_decl("Mark as read:"); +print T_js_decl("Mark %d article(s) as read?"); print T_js_decl("Mark %d selected articles in %s as read?"); -print T_js_decl("Please enter label title:"); -print T_js_decl("Save current configuration?"); -print T_js_decl("Old password cannot be blank."); +print T_js_decl("Marking all feeds as read..."); print T_js_decl("New password cannot be blank."); -print T_js_decl("Entered passwords do not match."); -print T_js_decl("No articles found to mark"); -print T_js_decl("Mark %d article(s) as read?"); print T_js_decl("No article is selected."); -print T_js_decl("Star article"); -print T_js_decl("Unstar article"); +print T_js_decl("No articles are selected."); +print T_js_decl("No articles found to display."); +print T_js_decl("No articles found to mark"); +print T_js_decl("No categories are selected."); +print T_js_decl("No feeds are selected."); +print T_js_decl("No feed selected."); +print T_js_decl("No filters are selected."); +print T_js_decl("No labels are selected."); +print T_js_decl("None"); +print T_js_decl("No OPML file to upload."); +print T_js_decl("No users are selected."); +print T_js_decl("Old password cannot be blank."); +print T_js_decl("Please enter label caption:"); +print T_js_decl("Please enter login:"); +print T_js_decl("Please enter new label background color:"); +print T_js_decl("Please enter new label foreground color:"); +print T_js_decl("Please select one feed."); +print T_js_decl("Please select only one feed."); +print T_js_decl("Please select only one filter."); +print T_js_decl("Please select only one user."); +print T_js_decl("Please select some feed first."); print T_js_decl("Please wait..."); +print T_js_decl("Please wait until operation finishes."); print T_js_decl("Publish article"); -print T_js_decl("Unpublish article"); -print T_js_decl("You can't clear this type of feed."); -print T_js_decl("Erase all non-starred articles in %s?"); -print T_js_decl("Mark all articles as read?"); -print T_js_decl("Rescore articles in selected feeds?"); -print T_js_decl("Rescoring selected feeds..."); -print T_js_decl("Rescore articles in all feeds? This operation may take a lot of time."); -print T_js_decl("Rescoring feeds..."); -print T_js_decl("You can't rescore this kind of feed."); +print T_js_decl("Published feed URL changed."); +print T_js_decl("Purging selected feed..."); +print T_js_decl("Remove filter %s?"); +print T_js_decl("Remove selected articles from label?"); +print T_js_decl("Remove selected categories?"); +print T_js_decl("Remove selected filters?"); +print T_js_decl("Remove selected labels?"); +print T_js_decl("Remove selected users?"); +print T_js_decl("Removing feed..."); +print T_js_decl("Removing filter..."); +print T_js_decl("Removing offline data..."); +print T_js_decl("Removing selected categories..."); +print T_js_decl("Removing selected filters..."); +print T_js_decl("Removing selected labels..."); +print T_js_decl("Removing selected users..."); +print T_js_decl("Replace current publishing address with a new one?"); +print T_js_decl("Rescore all articles? This operation may take a lot of time."); print T_js_decl("Rescore articles in %s?"); +print T_js_decl("Rescore articles in selected feeds?"); +print T_js_decl("Rescore last 100 articles in selected feeds?"); print T_js_decl("Rescoring articles..."); print T_js_decl("Reset category order?"); -print T_js_decl("Category reordering enabled"); -print T_js_decl("Category reordering disabled"); +print T_js_decl("Reset label colors to default?"); +print T_js_decl("Reset password of selected user?"); +print T_js_decl("Resetting password for selected user..."); +print T_js_decl("Reset to defaults?"); print T_js_decl("Save changes to selected feeds?"); +print T_js_decl("Save current configuration?"); +print T_js_decl("Saving article tags..."); +print T_js_decl("Saving feed..."); print T_js_decl("Saving feeds..."); -#print T_js_decl( -#print T_js_decl( -#print T_js_decl( -#print T_js_decl( -#print T_js_decl( -#print T_js_decl( -#print T_js_decl( -#print T_js_decl( +print T_js_decl("Saving filter..."); +print T_js_decl("Saving user..."); +print T_js_decl("Select:"); +print T_js_decl("Selection"); +print T_js_decl("Selection toggle:"); +print T_js_decl("Star article"); +print T_js_decl("Starred"); +print T_js_decl("Starred articles"); +print T_js_decl("Subscribing to feed..."); +print T_js_decl("Switch Tiny Tiny RSS into offline mode?"); +print T_js_decl("Synchronizing..."); +print T_js_decl("Synchronizing articles..."); +print T_js_decl("Synchronizing articles (%d)..."); +print T_js_decl("Synchronizing categories..."); +print T_js_decl("Synchronizing feeds..."); +print T_js_decl("Synchronizing labels..."); +print T_js_decl("tag cloud"); +print T_js_decl("This will remove all offline data stored by Tiny Tiny RSS on this computer. Continue?"); +print T_js_decl("Tiny Tiny RSS has trouble accessing its server. Would you like to go offline?"); +print T_js_decl("Tiny Tiny RSS is in offline mode."); +print T_js_decl("Tiny Tiny RSS will reload. Go online?"); +print T_js_decl("Trying to change address..."); +print T_js_decl("Trying to change e-mail..."); +print T_js_decl("Trying to change password..."); +print T_js_decl("Unpublish article"); +print T_js_decl("Unread"); +print T_js_decl("Unstar article"); +print T_js_decl("Unsubscribe from %s?"); +print T_js_decl("Unsubscribe from selected feeds?"); +print T_js_decl("Unsubscribing from selected feeds..."); +print T_js_decl("You can't clear this type of feed."); +print T_js_decl("You can't edit this kind of feed."); +print T_js_decl("You can't rescore this kind of feed."); +print T_js_decl("You can't unsubscribe from the category."); +print T_js_decl("You have to synchronize some articles before going into offline mode."); +print T_js_decl("You won't be able to access offline version of Tiny Tiny RSS until you switch it into offline mode again. Go online?"); ?> diff --git a/offline.js b/offline.js index 9054ea455..010bbe05e 100644 --- a/offline.js +++ b/offline.js @@ -854,8 +854,6 @@ function update_offline_data(stage) { if (!db || offline_mode || getInitParam("offline_enabled") != "1") return; -// notify_progress("Updating offline data... (" + stage +")", true); - var query = "backend.php?op=rpc&subop=download"; var rs = db.execute("SELECT MAX(id), MIN(id) FROM articles"); diff --git a/update-translations.sh b/update-translations.sh index 0b78958b2..93c4e5d76 100755 --- a/update-translations.sh +++ b/update-translations.sh @@ -25,3 +25,5 @@ for lang in $LANGS; do PO_BASENAME=`echo $lang | sed s/.po//` update_lang $PO_BASENAME done + +./utils/update-js-translations.sh diff --git a/utils/extract-i18n-js.pl b/utils/extract-i18n-js.pl new file mode 100755 index 000000000..d6179fc70 --- /dev/null +++ b/utils/extract-i18n-js.pl @@ -0,0 +1,15 @@ +#!/usr/bin/perl -w +# +use strict; + +while (<STDIN>) { + chomp; + + if (/(__|notify_progress|notify|notify_info|notify_error)\(['"](.*?)['"]\)/) { + my $msg = $2; + + $msg =~ s/\"/\\\"/g; + + print "print T_js_decl(\"$msg\");\n"; + } +} diff --git a/utils/update-js-translations.sh b/utils/update-js-translations.sh new file mode 100755 index 000000000..432cf7ece --- /dev/null +++ b/utils/update-js-translations.sh @@ -0,0 +1,48 @@ +#!/bin/sh + +if [ ! -f localized_js.php ]; then + echo "please run this script from tt-rss directory" + exit 1 +fi + +cat >localized_js.php <<HEADER +<?php +error_reporting(E_ERROR | E_WARNING | E_PARSE); +define('DISABLE_SESSIONS', true); + +require "functions.php"; +header("Content-Type: text/plain; charset=UTF-8"); + +function T_js_decl(\$s1) { + + if (!\$s1) return; + +// \$T_s1 = __(\$s1); + +// if (\$T_s1 != \$s1) { + return "T_messages[\"\$s1\"] = \"".__(\$s1)."\";\n"; +// } else { +// return ""; +// } +} +?> + +var T_messages = new Object(); + +function __(msg) { + if (T_messages[msg]) { + return T_messages[msg]; + } else { + debug('[gettext] not found: ' + msg); + return msg; + } +} + +<?php +HEADER + +cat *js | ./utils/extract-i18n-js.pl | sort | uniq >> localized_js.php + +cat >>localized_js.php <<FOOTER +?> +FOOTER |