[aur-dev] [PATCH 1/2] Handle plurals in translations

Lukas Fleischer archlinux at cryptocrack.de
Fri Jul 4 06:31:07 EDT 2014


Use ngettext() to handle plurals properly. Also, split pagination
captions into two strings.

Signed-off-by: Lukas Fleischer <archlinux at cryptocrack.de>
---
 po/Makefile                         |  6 +++---
 web/lib/translator.inc.php          |  7 +++++++
 web/template/pkg_search_results.php | 10 ++++++++--
 web/template/pkgreq_results.php     | 10 ++++++++--
 4 files changed, 26 insertions(+), 7 deletions(-)

diff --git a/po/Makefile b/po/Makefile
index abe02fb..97e1822 100644
--- a/po/Makefile
+++ b/po/Makefile
@@ -47,9 +47,9 @@ all: ${MOFILES}
 update-pot:
 	pkgname=AUR; \
 	pkgver=`sed -n 's/.*"AUR_VERSION", "\(.*\)".*/\1/p' ../web/lib/version.inc.php`; \
-	xgettext --default-domain=aur -L php --keyword=__ --no-location \
-		--add-comments=TRANSLATORS: --package-name="$$pkgname" \
-		--package-version="$$pkgver" \
+	xgettext --default-domain=aur -L php --keyword=__ --keyword=_n:1,2 \
+		--no-location --add-comments=TRANSLATORS: \
+		--package-name="$$pkgname" --package-version="$$pkgver" \
 		--msgid-bugs-address='${MSGID_BUGS_ADDRESS}' \
 		--directory ../web --files-from POTFILES -o aur.pot
 
diff --git a/web/lib/translator.inc.php b/web/lib/translator.inc.php
index 5117b99..448c41b 100644
--- a/web/lib/translator.inc.php
+++ b/web/lib/translator.inc.php
@@ -70,6 +70,13 @@ function __() {
 	return $translated;
 }
 
+function _n($msgid1, $msgid2, $n) {
+	global $l10n;
+
+	$translated = sprintf($l10n->ngettext($msgid1, $msgid2, $n), $n);
+	return htmlspecialchars($translated, ENT_QUOTES);
+}
+
 # set up the visitor's language
 #
 function set_lang() {
diff --git a/web/template/pkg_search_results.php b/web/template/pkg_search_results.php
index e47fcb2..75131fc 100644
--- a/web/template/pkg_search_results.php
+++ b/web/template/pkg_search_results.php
@@ -12,7 +12,10 @@ if (!$result): ?>
 <?php else: ?>
 	<div id="pkglist-results" class="box">
 		<div class="pkglist-stats">
-			<p><?= __('%d packages found. Page %d of %d.', $total, $current, $pages) ?></p>
+			<p>
+				<?= _n('%d package found.', '%d packages found.', $total) ?>
+				<?= __('Page %d of %d.', $current, $pages) ?>
+			</p>
 			<?php if (count($templ_pages) > 1): ?>
 			<p class="pkglist-nav">
 				<?php foreach ($templ_pages as $pagenr => $pagestart): ?>
@@ -89,7 +92,10 @@ if (!$result): ?>
 			</table>
 
 			<div class="pkglist-stats">
-				<p><?= __('%d packages found. Page %d of %d.', $total, $current, $pages) ?></p>
+				<p>
+					<?= _n('%d package found.', '%d packages found.', $total) ?>
+					<?= __('Page %d of %d.', $current, $pages) ?>
+				</p>
 				<?php if (count($templ_pages) > 1): ?>
 				<p class="pkglist-nav">
 					<?php foreach ($templ_pages as $pagenr => $pagestart): ?>
diff --git a/web/template/pkgreq_results.php b/web/template/pkgreq_results.php
index 261a1f7..2898bd5 100644
--- a/web/template/pkgreq_results.php
+++ b/web/template/pkgreq_results.php
@@ -1,6 +1,9 @@
 <div id="pkglist-results" class="box">
 	<div class="pkglist-stats">
-		<p><?= __('%d package requests found. Page %d of %d.', $total, $current, $pages) ?></p>
+		<p>
+			<?= _n('%d package request found.', '%d package requests found.', $total) ?>
+			<?= __('Page %d of %d.', $current, $pages) ?>
+		</p>
 		<?php if (count($templ_pages) > 1): ?>
 		<p class="pkglist-nav">
 			<?php foreach ($templ_pages as $pagenr => $pagestart): ?>
@@ -83,7 +86,10 @@
 	</table>
 
 	<div class="pkglist-stats">
-		<p><?= __('%d package requests found. Page %d of %d.', $total, $current, $pages) ?></p>
+		<p>
+			<?= _n('%d package request found.', '%d package requests found.', $total) ?>
+			<?= __('Page %d of %d.', $current, $pages) ?>
+		</p>
 		<?php if (count($templ_pages) > 1): ?>
 		<p class="pkglist-nav">
 			<?php foreach ($templ_pages as $pagenr => $pagestart): ?>
-- 
2.0.1



More information about the aur-dev mailing list