mirror of
https://git.tt-rss.org/git/tt-rss.git
synced 2026-02-10 16:01:33 +00:00
Merge pull request #77 from scarabeusiv/master
Fix pluralized forms and whitespace in translations and fix the l10n tools
This commit is contained in:
@@ -55,7 +55,7 @@ class Pref_Feeds extends Handler_Protected {
|
||||
|
||||
$cat['items'] = $this->get_category_items($line['id']);
|
||||
|
||||
$cat['param'] = T_sprintf('(%d feeds)', count($cat['items']));
|
||||
$cat['param'] = vsprintf(ngettext('(%d feed)', '(%d feeds)', count($cat['items'])), count($cat['items']));
|
||||
|
||||
if (count($cat['items']) > 0 || $show_empty_cats)
|
||||
array_push($items, $cat);
|
||||
@@ -172,7 +172,7 @@ class Pref_Feeds extends Handler_Protected {
|
||||
|
||||
$cat['items'] = $this->get_category_items($line['id']);
|
||||
|
||||
$cat['param'] = T_sprintf('(%d feeds)', count($cat['items']));
|
||||
$cat['param'] = vsprintf(ngettext('(%d feed)', '(%d feeds)', count($cat['items'])), count($cat['items']));
|
||||
|
||||
if (count($cat['items']) > 0 || $show_empty_cats)
|
||||
array_push($root['items'], $cat);
|
||||
@@ -214,13 +214,13 @@ class Pref_Feeds extends Handler_Protected {
|
||||
array_push($cat['items'], $feed);
|
||||
}
|
||||
|
||||
$cat['param'] = T_sprintf('(%d feeds)', count($cat['items']));
|
||||
$cat['param'] = vsprintf(ngettext('(%d feed)', '(%d feeds)', count($cat['items'])), count($cat['items']));
|
||||
|
||||
if (count($cat['items']) > 0 || $show_empty_cats)
|
||||
array_push($root['items'], $cat);
|
||||
|
||||
$root['param'] += count($cat['items']);
|
||||
$root['param'] = T_sprintf('(%d feeds)', $root['param']);
|
||||
$root['param'] = vsprintf(ngettext('(%d feed)', '(%d feeds)', count($cat['items'])), count($cat['items']));
|
||||
|
||||
} else {
|
||||
$feed_result = db_query($this->link, "SELECT id, title, last_error,
|
||||
@@ -245,7 +245,7 @@ class Pref_Feeds extends Handler_Protected {
|
||||
array_push($root['items'], $feed);
|
||||
}
|
||||
|
||||
$root['param'] = T_sprintf('(%d feeds)', count($root['items']));
|
||||
$root['param'] = vsprintf(ngettext('(%d feed)', '(%d feeds)', count($cat['items'])), count($cat['items']));
|
||||
}
|
||||
|
||||
$fl = array();
|
||||
|
||||
@@ -288,11 +288,9 @@ class Pref_Users extends Handler_Protected {
|
||||
WHERE id = '$uid'");
|
||||
|
||||
if ($show_password) {
|
||||
print T_sprintf("Changed password of user <b>%s</b>
|
||||
to <b>%s</b>", $login, $tmp_user_pwd);
|
||||
print T_sprintf("Changed password of user <b>%s</b> to <b>%s</b>", $login, $tmp_user_pwd);
|
||||
} else {
|
||||
print T_sprintf("Sending new password of user <b>%s</b>
|
||||
to <b>%s</b>", $login, $email);
|
||||
print T_sprintf("Sending new password of user <b>%s</b> to <b>%s</b>", $login, $email);
|
||||
}
|
||||
|
||||
require_once 'classes/ttrssmailer.php';
|
||||
|
||||
+2
-2
@@ -155,8 +155,8 @@ function confirmOP() {
|
||||
}
|
||||
}
|
||||
|
||||
print "<p>".T_sprintf("Finished. Performed <b>%d</b> update(s) up to schema
|
||||
version <b>%d</b>.", $num_updates, $version)."</p>";
|
||||
print "<p>".vsprintf(ngettext("Finished. Performed <b>%d</b> update up to schema version <b>%d</b>.",
|
||||
"Finished. Performed <b>%d</b> updates up to schema version <b>%d</b>.", $num_updates), $num_updates, $version)."</p>";
|
||||
|
||||
print "<form method=\"GET\" action=\"backend.php\">
|
||||
<input type=\"hidden\" name=\"op\" value=\"logout\">
|
||||
|
||||
+2
-3
@@ -12,7 +12,7 @@
|
||||
$ERRORS[2] = __("This program requires cookies " .
|
||||
"to function properly. Your browser doesn't seem to support them.");
|
||||
|
||||
$ERRORS[3] = __("Backend sanity check failed");
|
||||
$ERRORS[3] = __("Backend sanity check failed.");
|
||||
|
||||
$ERRORS[4] = __("Frontend sanity check failed.");
|
||||
|
||||
@@ -28,8 +28,7 @@
|
||||
|
||||
$ERRORS[9] = __("Configuration check failed");
|
||||
|
||||
$ERRORS[10] = __("Your version of MySQL is not currently supported. Please see
|
||||
official site for more information.");
|
||||
$ERRORS[10] = __("Your version of MySQL is not currently supported. Please see official site for more information.");
|
||||
|
||||
$ERRORS[11] = "[This error is not returned by server]";
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
$class = ($feedctr % 2) ? "even" : "odd";
|
||||
|
||||
if ($line['articles_archived'] > 0) {
|
||||
$archived = sprintf(__("%d archived articles"), $line['articles_archived']);
|
||||
$archived = sprintf(ngettext("%d archived article", "%d archived articles", $line['articles_archived']), $line['articles_archived']);
|
||||
$archived = " <span class='subscribers'>($archived)</span>";
|
||||
} else {
|
||||
$archived = '';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?php # This file has been generated at: Thu Mar 21 23:29:09 MSK 2013
|
||||
<?php # This file has been generated at: Sun Mar 24 13:57:39 CET 2013
|
||||
|
||||
__("Title");
|
||||
__("Title or Content");
|
||||
|
||||
+6
-6
@@ -979,9 +979,9 @@ function deleteSelection() {
|
||||
var str;
|
||||
|
||||
if (getActiveFeedId() != 0) {
|
||||
str = __("Delete %d selected articles in %s?");
|
||||
str = ngettext("Delete %d selected article in %s?", "Delete %d selected articles in %s?" , rows.length);
|
||||
} else {
|
||||
str = __("Delete %d selected articles?");
|
||||
str = ngettext("Delete %d selected article?", "Delete %d selected articles?", rows.length);
|
||||
}
|
||||
|
||||
str = str.replace("%d", rows.length);
|
||||
@@ -1023,10 +1023,10 @@ function archiveSelection() {
|
||||
var op;
|
||||
|
||||
if (getActiveFeedId() != 0) {
|
||||
str = __("Archive %d selected articles in %s?");
|
||||
str = ngettext("Archive %d selected article in %s?", "Archive %d selected articles in %s?", rows.length);
|
||||
op = "archive";
|
||||
} else {
|
||||
str = __("Move %d archived articles back?");
|
||||
str = ngettext("Move %d archived article back?", "Move %d archived articles back?", rows.length);
|
||||
op = "unarchive";
|
||||
}
|
||||
|
||||
@@ -1070,7 +1070,7 @@ function catchupSelection() {
|
||||
|
||||
var fn = getFeedName(getActiveFeedId(), activeFeedIsCat());
|
||||
|
||||
var str = __("Mark %d selected articles in %s as read?");
|
||||
var str = ngettext("Mark %d selected article in %s as read?", "Mark %d selected articles in %s as read?", rows.length);
|
||||
|
||||
str = str.replace("%d", rows.length);
|
||||
str = str.replace("%s", fn);
|
||||
@@ -1317,7 +1317,7 @@ function catchupRelativeToArticle(below, id) {
|
||||
if (ids_to_mark.length == 0) {
|
||||
alert(__("No articles found to mark"));
|
||||
} else {
|
||||
var msg = __("Mark %d article(s) as read?").replace("%d", ids_to_mark.length);
|
||||
var msg = ngettext("Mark %d article as read?", "Mark %d articles as read?", ids_to_mark.length).replace("%d", ids_to_mark.length);
|
||||
|
||||
if (getInitParam("confirm_feed_catchup") != 1 || confirm(msg)) {
|
||||
|
||||
|
||||
Binary file not shown.
+1264
-1256
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+1198
-900
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+1211
-1106
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+1266
-1240
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+1219
-1114
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+1211
-1078
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+1230
-1118
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+1192
-1039
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+1212
-1062
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+1257
-1226
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+1205
-1065
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+1242
-1136
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+1185
-987
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+1253
-1177
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+1153
-972
File diff suppressed because it is too large
Load Diff
+665
-648
File diff suppressed because it is too large
Load Diff
@@ -68,7 +68,7 @@ function catchup_visible_articles(callback) {
|
||||
|
||||
var ids = get_visible_article_ids();
|
||||
|
||||
if (confirm(__("Mark %d displayed articles as read?").replace("%d", ids.length))) {
|
||||
if (confirm(ngettext("Mark %d displayed article as read?", "Mark %d displayed articles as read?", ids.length).replace("%d", ids.length))) {
|
||||
|
||||
var query = "?op=rpc&method=catchupSelected" +
|
||||
"&cmode=0&ids=" + param_escape(ids);
|
||||
@@ -515,7 +515,7 @@ function redraw_feedlist(feeds) {
|
||||
$('feeds-content').innerHTML += "<li id='F-MORE-PROMPT'>" +
|
||||
"<img src='images/blank_icon.gif'>" +
|
||||
"<a href=\"#\" onclick=\"expand_feeds()\">" +
|
||||
__("%d more...").replace("%d", feeds.length-10) +
|
||||
ngettext("%d more...", "%d more...", feeds.length-10).replace("%d", feeds.length-10) +
|
||||
"</a>" + "</li>";
|
||||
}
|
||||
|
||||
|
||||
@@ -40,9 +40,7 @@
|
||||
<div id="overlay_inner">
|
||||
<noscript>
|
||||
<p>
|
||||
<?php print_error(__("Your browser doesn't support Javascript, which is required
|
||||
for this application to function properly. Please check your
|
||||
browser settings.")) ?></p>
|
||||
<?php print_error(__("Your browser doesn't support Javascript, which is required for this application to function properly. Please check your browser settings.")) ?></p>
|
||||
</noscript>
|
||||
|
||||
<img src="images/indicator_white.gif"/>
|
||||
|
||||
@@ -37,7 +37,7 @@ function exportData() {
|
||||
} else {
|
||||
|
||||
$("export_status_message").innerHTML =
|
||||
__("Finished, exported %d articles. You can download the data <a class='visibleLink' href='%u'>here</a>.")
|
||||
ngettext("Finished, exported %d article. You can download the data <a class='visibleLink' href='%u'>here</a>.", "Finished, exported %d articles. You can download the data <a class='visibleLink' href='%u'>here</a>.", exported)
|
||||
.replace("%d", exported)
|
||||
.replace("%u", "backend.php?op=pluginhandler&plugin=import_export&subop=exportget");
|
||||
|
||||
|
||||
@@ -382,8 +382,10 @@ class Import_Export extends Plugin implements IHandler {
|
||||
}
|
||||
|
||||
print "<p>" .
|
||||
T_sprintf("Finished: %d articles processed, %d imported, %d feeds created.",
|
||||
$num_processed, $num_imported, $num_feeds_created) .
|
||||
vsprintf(__("Finished: ")).
|
||||
vsprintf(ngettext("%d article processed, ", "%d articles processed, ", $num_processed), $num_processed).
|
||||
vsprintf(ngettext("%d imported, ", "%d imported, ", $num_imported), $num_imported).
|
||||
vsprintf(ngettext("%d feed created.", "%d feeds created.", $num_feeds_created), $num_feeds_created).
|
||||
"</p>";
|
||||
|
||||
} else {
|
||||
@@ -421,8 +423,7 @@ class Import_Export extends Plugin implements IHandler {
|
||||
$this->perform_data_import($this->link, $_FILES['export_file']['tmp_name'], $_SESSION['uid']);
|
||||
|
||||
} else {
|
||||
print "<p>" . T_sprintf("Could not upload file. You might need to adjust upload_max_filesize
|
||||
in PHP.ini (current value = %s)", ini_get("upload_max_filesize")) . " or use CLI import tool.</p>";
|
||||
print "<p>" . T_sprintf("Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)", ini_get("upload_max_filesize")) . " or use CLI import tool.</p>";
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
#!/bin/sh
|
||||
|
||||
LC_ALL=C
|
||||
LANG=C
|
||||
LANGUAGE=C
|
||||
|
||||
BASENAME=`basename $0`
|
||||
TMPFILE="/tmp/$BASENAME-$$.tmp"
|
||||
OUTFILE="include/localized_schema.php"
|
||||
|
||||
@@ -3,18 +3,14 @@ TEMPLATE=messages.pot
|
||||
|
||||
./utils/update-schema-translations.sh
|
||||
|
||||
xgettext -kT_js_decl -kT_sprintf -kT_ngettext:1,2 -k__ -L PHP -o $TEMPLATE *.php mobile/*.php include/*.php `find classes -iname '*.php'` `find plugins -iname '*.php'`
|
||||
xgettext -kT_js_decl -kT_sprintf -kT_ngettext:1,2 -k__ -L PHP -o $TEMPLATE *.php include/*.php `find classes -iname '*.php'` `find plugins -iname '*.php'`
|
||||
|
||||
xgettext --from-code utf-8 -k__ -L Java -j -o $TEMPLATE js/*.js `find plugins -iname '*.js'`
|
||||
|
||||
update_lang() {
|
||||
if [ -f $1.po ]; then
|
||||
TMPFILE=/tmp/update-translations.$$
|
||||
|
||||
msgmerge -o $TMPFILE $1.po $TEMPLATE
|
||||
mv $TMPFILE $1.po
|
||||
msgfmt --statistics $1.po
|
||||
msgfmt -o $1.mo $1.po
|
||||
msgmerge --no-wrap --width 1 -U $1.po $TEMPLATE
|
||||
msgfmt --statistics $1.po -o $1.mo
|
||||
else
|
||||
echo "Usage: $0 [-p|<basename>]"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user