diff --git a/glib/gutils.c b/glib/gutils.c index 09c1523a7..e67c8f097 100644 --- a/glib/gutils.c +++ b/glib/gutils.c @@ -2378,36 +2378,60 @@ g_format_size_full (guint64 size, const struct Format formats[4][6] = { { - { KILOBYTE_FACTOR, N_("%.1f kB") }, - { MEGABYTE_FACTOR, N_("%.1f MB") }, - { GIGABYTE_FACTOR, N_("%.1f GB") }, - { TERABYTE_FACTOR, N_("%.1f TB") }, - { PETABYTE_FACTOR, N_("%.1f PB") }, - { EXABYTE_FACTOR, N_("%.1f EB") } + /* Translators: Keep the no-break space between %.1f and the unit symbol */ + { KILOBYTE_FACTOR, N_("%.1f kB") }, + /* Translators: Keep the no-break space between %.1f and the unit symbol */ + { MEGABYTE_FACTOR, N_("%.1f MB") }, + /* Translators: Keep the no-break space between %.1f and the unit symbol */ + { GIGABYTE_FACTOR, N_("%.1f GB") }, + /* Translators: Keep the no-break space between %.1f and the unit symbol */ + { TERABYTE_FACTOR, N_("%.1f TB") }, + /* Translators: Keep the no-break space between %.1f and the unit symbol */ + { PETABYTE_FACTOR, N_("%.1f PB") }, + /* Translators: Keep the no-break space between %.1f and the unit symbol */ + { EXABYTE_FACTOR, N_("%.1f EB") } }, { - { KIBIBYTE_FACTOR, N_("%.1f KiB") }, - { MEBIBYTE_FACTOR, N_("%.1f MiB") }, - { GIBIBYTE_FACTOR, N_("%.1f GiB") }, - { TEBIBYTE_FACTOR, N_("%.1f TiB") }, - { PEBIBYTE_FACTOR, N_("%.1f PiB") }, - { EXBIBYTE_FACTOR, N_("%.1f EiB") } + /* Translators: Keep the no-break space between %.1f and the unit symbol */ + { KIBIBYTE_FACTOR, N_("%.1f KiB") }, + /* Translators: Keep the no-break space between %.1f and the unit symbol */ + { MEBIBYTE_FACTOR, N_("%.1f MiB") }, + /* Translators: Keep the no-break space between %.1f and the unit symbol */ + { GIBIBYTE_FACTOR, N_("%.1f GiB") }, + /* Translators: Keep the no-break space between %.1f and the unit symbol */ + { TEBIBYTE_FACTOR, N_("%.1f TiB") }, + /* Translators: Keep the no-break space between %.1f and the unit symbol */ + { PEBIBYTE_FACTOR, N_("%.1f PiB") }, + /* Translators: Keep the no-break space between %.1f and the unit symbol */ + { EXBIBYTE_FACTOR, N_("%.1f EiB") } }, { - { KILOBYTE_FACTOR, N_("%.1f kb") }, - { MEGABYTE_FACTOR, N_("%.1f Mb") }, - { GIGABYTE_FACTOR, N_("%.1f Gb") }, - { TERABYTE_FACTOR, N_("%.1f Tb") }, - { PETABYTE_FACTOR, N_("%.1f Pb") }, - { EXABYTE_FACTOR, N_("%.1f Eb") } + /* Translators: Keep the no-break space between %.1f and the unit symbol */ + { KILOBYTE_FACTOR, N_("%.1f kb") }, + /* Translators: Keep the no-break space between %.1f and the unit symbol */ + { MEGABYTE_FACTOR, N_("%.1f Mb") }, + /* Translators: Keep the no-break space between %.1f and the unit symbol */ + { GIGABYTE_FACTOR, N_("%.1f Gb") }, + /* Translators: Keep the no-break space between %.1f and the unit symbol */ + { TERABYTE_FACTOR, N_("%.1f Tb") }, + /* Translators: Keep the no-break space between %.1f and the unit symbol */ + { PETABYTE_FACTOR, N_("%.1f Pb") }, + /* Translators: Keep the no-break space between %.1f and the unit symbol */ + { EXABYTE_FACTOR, N_("%.1f Eb") } }, { - { KIBIBYTE_FACTOR, N_("%.1f Kib") }, - { MEBIBYTE_FACTOR, N_("%.1f Mib") }, - { GIBIBYTE_FACTOR, N_("%.1f Gib") }, - { TEBIBYTE_FACTOR, N_("%.1f Tib") }, - { PEBIBYTE_FACTOR, N_("%.1f Pib") }, - { EXBIBYTE_FACTOR, N_("%.1f Eib") } + /* Translators: Keep the no-break space between %.1f and the unit symbol */ + { KIBIBYTE_FACTOR, N_("%.1f Kib") }, + /* Translators: Keep the no-break space between %.1f and the unit symbol */ + { MEBIBYTE_FACTOR, N_("%.1f Mib") }, + /* Translators: Keep the no-break space between %.1f and the unit symbol */ + { GIBIBYTE_FACTOR, N_("%.1f Gib") }, + /* Translators: Keep the no-break space between %.1f and the unit symbol */ + { TEBIBYTE_FACTOR, N_("%.1f Tib") }, + /* Translators: Keep the no-break space between %.1f and the unit symbol */ + { PEBIBYTE_FACTOR, N_("%.1f Pib") }, + /* Translators: Keep the no-break space between %.1f and the unit symbol */ + { EXBIBYTE_FACTOR, N_("%.1f Eib") } } }; diff --git a/glib/tests/fileutils.c b/glib/tests/fileutils.c index f90d0c7d5..b4ca2d3c7 100644 --- a/glib/tests/fileutils.c +++ b/glib/tests/fileutils.c @@ -538,57 +538,58 @@ test_format_size_for_display (void) check_string (g_format_size (0), "0 bytes"); check_string (g_format_size (1), "1 byte"); check_string (g_format_size (2), "2 bytes"); - check_string (g_format_size (1000ULL), "1.0 kB"); - check_string (g_format_size (1000ULL * 1000), "1.0 MB"); - check_string (g_format_size (1000ULL * 1000 * 1000), "1.0 GB"); - check_string (g_format_size (1000ULL * 1000 * 1000 * 1000), "1.0 TB"); - check_string (g_format_size (1000ULL * 1000 * 1000 * 1000 * 1000), "1.0 PB"); - check_string (g_format_size (1000ULL * 1000 * 1000 * 1000 * 1000 * 1000), "1.0 EB"); + /* '\302\240' is a no-break space, to keep quantity and unit symbol together at line breaks*/ + check_string (g_format_size (1000ULL), "1.0\302\240kB"); + check_string (g_format_size (1000ULL * 1000), "1.0\302\240MB"); + check_string (g_format_size (1000ULL * 1000 * 1000), "1.0\302\240GB"); + check_string (g_format_size (1000ULL * 1000 * 1000 * 1000), "1.0\302\240TB"); + check_string (g_format_size (1000ULL * 1000 * 1000 * 1000 * 1000), "1.0\302\240PB"); + check_string (g_format_size (1000ULL * 1000 * 1000 * 1000 * 1000 * 1000), "1.0\302\240EB"); check_string (g_format_size_full (0, G_FORMAT_SIZE_IEC_UNITS), "0 bytes"); check_string (g_format_size_full (1, G_FORMAT_SIZE_IEC_UNITS), "1 byte"); check_string (g_format_size_full (2, G_FORMAT_SIZE_IEC_UNITS), "2 bytes"); - check_string (g_format_size_full (2048ULL, G_FORMAT_SIZE_IEC_UNITS), "2.0 KiB"); - check_string (g_format_size_full (2048ULL * 1024, G_FORMAT_SIZE_IEC_UNITS), "2.0 MiB"); - check_string (g_format_size_full (2048ULL * 1024 * 1024, G_FORMAT_SIZE_IEC_UNITS), "2.0 GiB"); - check_string (g_format_size_full (2048ULL * 1024 * 1024 * 1024, G_FORMAT_SIZE_IEC_UNITS), "2.0 TiB"); - check_string (g_format_size_full (2048ULL * 1024 * 1024 * 1024 * 1024, G_FORMAT_SIZE_IEC_UNITS), "2.0 PiB"); - check_string (g_format_size_full (2048ULL * 1024 * 1024 * 1024 * 1024 * 1024, G_FORMAT_SIZE_IEC_UNITS), "2.0 EiB"); + check_string (g_format_size_full (2048ULL, G_FORMAT_SIZE_IEC_UNITS), "2.0\302\240KiB"); + check_string (g_format_size_full (2048ULL * 1024, G_FORMAT_SIZE_IEC_UNITS), "2.0\302\240MiB"); + check_string (g_format_size_full (2048ULL * 1024 * 1024, G_FORMAT_SIZE_IEC_UNITS), "2.0\302\240GiB"); + check_string (g_format_size_full (2048ULL * 1024 * 1024 * 1024, G_FORMAT_SIZE_IEC_UNITS), "2.0\302\240TiB"); + check_string (g_format_size_full (2048ULL * 1024 * 1024 * 1024 * 1024, G_FORMAT_SIZE_IEC_UNITS), "2.0\302\240PiB"); + check_string (g_format_size_full (2048ULL * 1024 * 1024 * 1024 * 1024 * 1024, G_FORMAT_SIZE_IEC_UNITS), "2.0\302\240EiB"); - check_string (g_format_size_full (238472938, G_FORMAT_SIZE_IEC_UNITS), "227.4 MiB"); - check_string (g_format_size_full (238472938, G_FORMAT_SIZE_DEFAULT), "238.5 MB"); - check_string (g_format_size_full (238472938, G_FORMAT_SIZE_LONG_FORMAT), "238.5 MB (238472938 bytes)"); + check_string (g_format_size_full (238472938, G_FORMAT_SIZE_IEC_UNITS), "227.4\302\240MiB"); + check_string (g_format_size_full (238472938, G_FORMAT_SIZE_DEFAULT), "238.5\302\240MB"); + check_string (g_format_size_full (238472938, G_FORMAT_SIZE_LONG_FORMAT), "238.5\302\240MB (238472938 bytes)"); check_string (g_format_size_full (0, G_FORMAT_SIZE_BITS), "0 bits"); check_string (g_format_size_full (1, G_FORMAT_SIZE_BITS), "1 bit"); check_string (g_format_size_full (2, G_FORMAT_SIZE_BITS), "2 bits"); - check_string (g_format_size_full (2000ULL, G_FORMAT_SIZE_BITS), "2.0 kb"); - check_string (g_format_size_full (2000ULL * 1000, G_FORMAT_SIZE_BITS), "2.0 Mb"); - check_string (g_format_size_full (2000ULL * 1000 * 1000, G_FORMAT_SIZE_BITS), "2.0 Gb"); - check_string (g_format_size_full (2000ULL * 1000 * 1000 * 1000, G_FORMAT_SIZE_BITS), "2.0 Tb"); - check_string (g_format_size_full (2000ULL * 1000 * 1000 * 1000 * 1000, G_FORMAT_SIZE_BITS), "2.0 Pb"); - check_string (g_format_size_full (2000ULL * 1000 * 1000 * 1000 * 1000 * 1000, G_FORMAT_SIZE_BITS), "2.0 Eb"); + check_string (g_format_size_full (2000ULL, G_FORMAT_SIZE_BITS), "2.0\302\240kb"); + check_string (g_format_size_full (2000ULL * 1000, G_FORMAT_SIZE_BITS), "2.0\302\240Mb"); + check_string (g_format_size_full (2000ULL * 1000 * 1000, G_FORMAT_SIZE_BITS), "2.0\302\240Gb"); + check_string (g_format_size_full (2000ULL * 1000 * 1000 * 1000, G_FORMAT_SIZE_BITS), "2.0\302\240Tb"); + check_string (g_format_size_full (2000ULL * 1000 * 1000 * 1000 * 1000, G_FORMAT_SIZE_BITS), "2.0\302\240Pb"); + check_string (g_format_size_full (2000ULL * 1000 * 1000 * 1000 * 1000 * 1000, G_FORMAT_SIZE_BITS), "2.0\302\240Eb"); - check_string (g_format_size_full (238472938, G_FORMAT_SIZE_BITS), "238.5 Mb"); - check_string (g_format_size_full (238472938, G_FORMAT_SIZE_BITS | G_FORMAT_SIZE_LONG_FORMAT), "238.5 Mb (238472938 bits)"); + check_string (g_format_size_full (238472938, G_FORMAT_SIZE_BITS), "238.5\302\240Mb"); + check_string (g_format_size_full (238472938, G_FORMAT_SIZE_BITS | G_FORMAT_SIZE_LONG_FORMAT), "238.5\302\240Mb (238472938 bits)"); check_string (g_format_size_full (0, G_FORMAT_SIZE_BITS | G_FORMAT_SIZE_IEC_UNITS), "0 bits"); check_string (g_format_size_full (1, G_FORMAT_SIZE_BITS | G_FORMAT_SIZE_IEC_UNITS), "1 bit"); check_string (g_format_size_full (2, G_FORMAT_SIZE_BITS | G_FORMAT_SIZE_IEC_UNITS), "2 bits"); - check_string (g_format_size_full (2048ULL, G_FORMAT_SIZE_BITS | G_FORMAT_SIZE_IEC_UNITS), "2.0 Kib"); - check_string (g_format_size_full (2048ULL * 1024, G_FORMAT_SIZE_BITS | G_FORMAT_SIZE_IEC_UNITS), "2.0 Mib"); - check_string (g_format_size_full (2048ULL * 1024 * 1024, G_FORMAT_SIZE_BITS | G_FORMAT_SIZE_IEC_UNITS), "2.0 Gib"); - check_string (g_format_size_full (2048ULL * 1024 * 1024 * 1024, G_FORMAT_SIZE_BITS | G_FORMAT_SIZE_IEC_UNITS), "2.0 Tib"); - check_string (g_format_size_full (2048ULL * 1024 * 1024 * 1024 * 1024, G_FORMAT_SIZE_BITS | G_FORMAT_SIZE_IEC_UNITS), "2.0 Pib"); - check_string (g_format_size_full (2048ULL * 1024 * 1024 * 1024 * 1024 * 1024, G_FORMAT_SIZE_BITS | G_FORMAT_SIZE_IEC_UNITS), "2.0 Eib"); + check_string (g_format_size_full (2048ULL, G_FORMAT_SIZE_BITS | G_FORMAT_SIZE_IEC_UNITS), "2.0\302\240Kib"); + check_string (g_format_size_full (2048ULL * 1024, G_FORMAT_SIZE_BITS | G_FORMAT_SIZE_IEC_UNITS), "2.0\302\240Mib"); + check_string (g_format_size_full (2048ULL * 1024 * 1024, G_FORMAT_SIZE_BITS | G_FORMAT_SIZE_IEC_UNITS), "2.0\302\240Gib"); + check_string (g_format_size_full (2048ULL * 1024 * 1024 * 1024, G_FORMAT_SIZE_BITS | G_FORMAT_SIZE_IEC_UNITS), "2.0\302\240Tib"); + check_string (g_format_size_full (2048ULL * 1024 * 1024 * 1024 * 1024, G_FORMAT_SIZE_BITS | G_FORMAT_SIZE_IEC_UNITS), "2.0\302\240Pib"); + check_string (g_format_size_full (2048ULL * 1024 * 1024 * 1024 * 1024 * 1024, G_FORMAT_SIZE_BITS | G_FORMAT_SIZE_IEC_UNITS), "2.0\302\240Eib"); - check_string (g_format_size_full (238472938, G_FORMAT_SIZE_BITS | G_FORMAT_SIZE_IEC_UNITS), "227.4 Mib"); - check_string (g_format_size_full (238472938, G_FORMAT_SIZE_BITS | G_FORMAT_SIZE_IEC_UNITS | G_FORMAT_SIZE_LONG_FORMAT), "227.4 Mib (238472938 bits)"); + check_string (g_format_size_full (238472938, G_FORMAT_SIZE_BITS | G_FORMAT_SIZE_IEC_UNITS), "227.4\302\240Mib"); + check_string (g_format_size_full (238472938, G_FORMAT_SIZE_BITS | G_FORMAT_SIZE_IEC_UNITS | G_FORMAT_SIZE_LONG_FORMAT), "227.4\302\240Mib (238472938 bits)"); } static void