changeset 32331:2a096f5f527c v9.0.1497

patch 9.0.1497: the ruler percentage can't be localized Commit: https://github.com/vim/vim/commit/971cd2b8bc3e3a7faa886162cd7568938c627882 Author: Emir SARI <emir_sari@icloud.com> Date: Sat Apr 29 12:09:53 2023 +0100 patch 9.0.1497: the ruler percentage can't be localized Problem: The ruler percentage can't be localized. Solution: Use a string that can be translated. (Emir Sari, closes https://github.com/vim/vim/issues/12311)
author Bram Moolenaar <Bram@vim.org>
date Sat, 29 Apr 2023 13:15:04 +0200
parents 9f9e2a63ad56
children 9ee523cc39d0
files src/buffer.c src/version.c
diffstat 2 files changed, 22 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -5231,8 +5231,8 @@ build_stl_str_hl(
 #endif // FEAT_STL_OPT
 
 /*
- * Get relative cursor position in window into "buf[buflen]", in the form 99%,
- * using "Top", "Bot" or "All" when appropriate.
+ * Get relative cursor position in window into "buf[buflen]", in the localized
+ * percentage form like %99, 99%; using "Top", "Bot" or "All" when appropriate.
  */
     void
 get_rel_pos(
@@ -5256,13 +5256,27 @@ get_rel_pos(
     below = wp->w_buffer->b_ml.ml_line_count - wp->w_botline + 1;
     if (below <= 0)
 	vim_strncpy(buf, (char_u *)(above == 0 ? _("All") : _("Bot")),
-							(size_t)(buflen - 1));
+		    (size_t)(buflen - 1));
     else if (above <= 0)
 	vim_strncpy(buf, (char_u *)_("Top"), (size_t)(buflen - 1));
     else
-	vim_snprintf((char *)buf, (size_t)buflen, "%2d%%", above > 1000000L
-				    ? (int)(above / ((above + below) / 100L))
-				    : (int)(above * 100L / (above + below)));
+    {
+	int perc = (above > 1000000L)
+			?  (int)(above / ((above + below) / 100L))
+			:  (int)(above * 100L / (above + below));
+
+	char *p = (char *)buf;
+	size_t l = buflen;
+	if (perc < 10)
+	{
+	    // prepend one space
+	    buf[0] = ' ';
+	    ++p;
+	    --l;
+	}
+	// localized percentage value
+	vim_snprintf(p, l, _("%d%%"), perc);
+    }
 }
 
 /*
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1497,
+/**/
     1496,
 /**/
     1495,