aboutsummaryrefslogtreecommitdiff
path: root/libcpp
diff options
context:
space:
mode:
Diffstat (limited to 'libcpp')
-rw-r--r--libcpp/ChangeLog14
-rw-r--r--libcpp/include/line-map.h19
-rw-r--r--libcpp/line-map.cc33
-rw-r--r--libcpp/po/ChangeLog8
-rw-r--r--libcpp/po/es.po60
-rw-r--r--libcpp/po/zh_CN.po61
6 files changed, 132 insertions, 63 deletions
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index eef6ec7..3c5bae1 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,17 @@
+2025-06-17 Jason Merrill <jason@redhat.com>
+
+ * line-map.cc (linemap_location_from_module_p): Add.
+ * include/line-map.h: Declare it.
+
+2025-06-11 David Malcolm <dmalcolm@redhat.com>
+
+ PR other/116792
+ * include/line-map.h (typedef expanded_location): Convert to...
+ (struct expanded_location): ...this.
+ (operator==): New decl, for expanded_location.
+ (operator!=): Likewise.
+ * line-map.cc (operator==): New decl, for expanded_location.
+
2025-05-07 Jakub Jelinek <jakub@redhat.com>
PR preprocessor/108900
diff --git a/libcpp/include/line-map.h b/libcpp/include/line-map.h
index 75cc1ad..21a59af 100644
--- a/libcpp/include/line-map.h
+++ b/libcpp/include/line-map.h
@@ -1111,6 +1111,10 @@ extern location_t linemap_module_loc
extern void linemap_module_reparent
(line_maps *, location_t loc, location_t new_parent);
+/* TRUE iff the location comes from a module import. */
+extern bool linemap_location_from_module_p
+ (const line_maps *, location_t);
+
/* Restore the linemap state such that the map at LWM-1 continues.
Return start location of the new map. */
extern location_t linemap_module_restore
@@ -1280,7 +1284,7 @@ linemap_location_before_p (const line_maps *set,
return linemap_compare_locations (set, loc_a, loc_b) >= 0;
}
-typedef struct
+struct expanded_location
{
/* The name of the source file involved. */
const char *file;
@@ -1294,7 +1298,18 @@ typedef struct
/* In a system header?. */
bool sysp;
-} expanded_location;
+};
+
+extern bool
+operator== (const expanded_location &a,
+ const expanded_location &b);
+inline bool
+operator!= (const expanded_location &a,
+ const expanded_location &b)
+{
+ return !(a == b);
+}
+
/* This is enum is used by the function linemap_resolve_location
below. The meaning of the values is explained in the comment of
diff --git a/libcpp/line-map.cc b/libcpp/line-map.cc
index cf65571..33701b5 100644
--- a/libcpp/line-map.cc
+++ b/libcpp/line-map.cc
@@ -767,6 +767,17 @@ linemap_module_restore (line_maps *set, line_map_uint_t lwm)
return 0;
}
+/* TRUE iff the location comes from a module import. */
+
+bool
+linemap_location_from_module_p (const line_maps *set, location_t loc)
+{
+ const line_map_ordinary *map = linemap_ordinary_map_lookup (set, loc);
+ while (map && map->reason != LC_MODULE)
+ map = linemap_included_from_linemap (set, map);
+ return !!map;
+}
+
/* Returns TRUE if the line table set tracks token locations across
macro expansion, FALSE otherwise. */
@@ -1949,6 +1960,28 @@ linemap_expand_location (const line_maps *set,
return xloc;
}
+bool
+operator== (const expanded_location &a,
+ const expanded_location &b)
+{
+ /* "file" can be null; for them to be equal they must both
+ have either null or nonnull values, and if non-null
+ they must compare as equal. */
+ if ((a.file == nullptr) != (b.file == nullptr))
+ return false;
+ if (a.file && strcmp (a.file, b.file))
+ return false;
+
+ if (a.line != b.line)
+ return false;
+ if (a.column != b.column)
+ return false;
+ if (a.data != b.data)
+ return false;
+ if (a.sysp != b.sysp)
+ return false;
+ return true;
+}
/* Dump line map at index IX in line table SET to STREAM. If STREAM
is NULL, use stderr. IS_MACRO is true if the caller wants to
diff --git a/libcpp/po/ChangeLog b/libcpp/po/ChangeLog
index 262bcb1..d9f18ea 100644
--- a/libcpp/po/ChangeLog
+++ b/libcpp/po/ChangeLog
@@ -1,3 +1,11 @@
+2025-05-16 Joseph Myers <josmyers@redhat.com>
+
+ * es.po: Update.
+
+2025-05-15 Joseph Myers <josmyers@redhat.com>
+
+ * zh_CN.po: Update.
+
2025-05-14 Joseph Myers <josmyers@redhat.com>
* es.po: Update.
diff --git a/libcpp/po/es.po b/libcpp/po/es.po
index 4c55a08..65207a8 100644
--- a/libcpp/po/es.po
+++ b/libcpp/po/es.po
@@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: cpplib 15.1-b20250316\n"
"Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
"POT-Creation-Date: 2025-03-14 22:05+0000\n"
-"PO-Revision-Date: 2025-05-14 12:48-0600\n"
+"PO-Revision-Date: 2025-05-16 12:16-0600\n"
"Last-Translator: Cristian Othón Martínez Vera <cfuga@cfuga.mx>\n"
"Language-Team: Spanish <es@tp.org.es>\n"
"Language: es\n"
@@ -58,7 +58,7 @@ msgstr "los nombres universales de carácter de C99 son incompatibles con C90"
#: charset.cc:1556
#, gcc-internal-format
msgid "the meaning of %<\\%c%> is different in traditional C"
-msgstr "el significado de <\\%c> es diferente en C tradicional"
+msgstr "el significado de %<\\%c%> es diferente en C tradicional"
#: charset.cc:1595
#, gcc-internal-format
@@ -95,7 +95,7 @@ msgstr "¿Quiso decir %<\\N{%s}%>?"
#: charset.cc:1693
#, gcc-internal-format
msgid "%<\\N{%> not terminated with %<}%> after %.*s; treating it as separate tokens"
-msgstr "%<\\N{%> no termina con %<}%> después de %.*s; se trata como elemntos separados"
+msgstr "%<\\N{%> no termina con %<}%> después de %.*s; se trata como elementos separados"
#: charset.cc:1702
#, gcc-internal-format
@@ -247,11 +247,11 @@ msgstr "secuencia de escape desconocida: %<\\%s%>"
#: charset.cc:2436
msgid "converting escape sequence to execution character set"
-msgstr "se convierte una secuencia de escape al conjunto de caracteres de ejecución"
+msgstr "se convierte la secuencia de escape al conjunto de caracteres de ejecución"
#: charset.cc:2576
msgid "missing open quote"
-msgstr "falta comilla abierta"
+msgstr "falta comilla al inicio"
#: charset.cc:2807
msgid "character not encodable in a single execution character code unit"
@@ -373,7 +373,7 @@ msgstr "los nombres de macro deben ser identificadores"
#: directives.cc:743 directives.cc:747
#, gcc-internal-format
msgid "undefining %qs"
-msgstr "borrando la definición de %qs"
+msgstr "se borra la definición de %qs"
#: directives.cc:805
#, gcc-internal-format
@@ -383,7 +383,7 @@ msgstr "falta el carácter de terminación %<>%>"
#: directives.cc:865
#, gcc-internal-format
msgid "%<#%s%> expects %<\"FILENAME\"%> or %<<FILENAME>%>"
-msgstr "%<#%s$> espera %<«NOMBREFICHERO»%> o %<<NOMBREFICHERO>%>"
+msgstr "%<#%s$> espera %<\"NOMBREFICHERO\"%> o %<<NOMBREFICHERO>%>"
#: directives.cc:911 directives.cc:1391
#, gcc-internal-format, gfc-internal-format
@@ -398,7 +398,7 @@ msgstr "la profundidad anidada %u de %<#include%> excede el máximo de %u (utili
#: directives.cc:965
#, gcc-internal-format
msgid "%<#include_next%> in primary source file"
-msgstr "%<#include_next%> en fichero primario de código fuente"
+msgstr "%<#include_next%> en fichero de código fuente primario"
#: directives.cc:1037 directives.cc:1059 directives.cc:1062 directives.cc:1065
#, gcc-internal-format, gfc-internal-format
@@ -447,7 +447,7 @@ msgstr "se esperaba %<(%>"
#: directives.cc:1269
#, gcc-internal-format
msgid "too large %<gnu::offset%> argument"
-msgstr "argumento %<gnu::offset%> demasiado grande"
+msgstr "el argumento %<gnu::offset%> es demasiado grande"
#: directives.cc:1316
msgid "expected character string literal"
@@ -682,7 +682,7 @@ msgstr "uso de una constante de coma flotante hexadecimal C99"
#: expr.cc:789
#, gcc-internal-format
msgid "invalid suffix %<%.*s%> on floating constant"
-msgstr "sufijo %<%.*s%> inválido en la constante de coma flotante"
+msgstr "sufijo %<%.*s%> inválido en una constante de coma flotante"
#: expr.cc:800 expr.cc:870
#, gcc-internal-format
@@ -696,7 +696,7 @@ msgstr "el sufijo para una constante doble es una extensión GCC"
#: expr.cc:815
#, gcc-internal-format
msgid "invalid suffix %<%.*s%> with hexadecimal floating constant"
-msgstr "sufijo %<%.*s%> inválido en la constante de coma flotante hexadecimal"
+msgstr "sufijo %<%.*s%> inválido en una constante de coma flotante hexadecimal"
#: expr.cc:829 expr.cc:833
msgid "decimal floating constants are a C23 feature"
@@ -705,7 +705,7 @@ msgstr "las constantes de coma flotante decimal son una característica de C23"
#: expr.cc:853
#, gcc-internal-format
msgid "invalid suffix %<%.*s%> on integer constant"
-msgstr "sufijo %<%.*s%> inválido en la constante entera"
+msgstr "sufijo %<%.*s%> inválido en una constante entera"
#: expr.cc:878
msgid "use of C++11 long long integer constant"
@@ -744,7 +744,7 @@ msgstr "las constantes imaginarias son una característica de C2Y"
#: expr.cc:956
msgid "binary constants are a C++14 feature or GCC extension"
-msgstr "las constantes binarias son una característica C++14 o una extensión de GCC"
+msgstr "las constantes binarias son una característica de C++14 o una extensión de GCC"
#: expr.cc:961
msgid "binary constants are a C23 feature or GCC extension"
@@ -838,7 +838,7 @@ msgstr "operando de parámetro imbuído demasiado grande"
#: expr.cc:1658
#, gcc-internal-format, gfc-internal-format
msgid "impossible operator '%u'"
-msgstr "operador '%u' imposible"
+msgstr "operador «%u» imposible"
#: expr.cc:1759
#, gcc-internal-format
@@ -852,7 +852,7 @@ msgstr "%<?%> sin %<:%> a continuación"
#: expr.cc:1798
msgid "integer overflow in preprocessor expression"
-msgstr "desbordamiento entero en expresión del preprocesador"
+msgstr "desbordamiento entero en una expresión del preprocesador"
#: expr.cc:1803
#, gcc-internal-format
@@ -871,7 +871,7 @@ msgstr "el operando derecho de %qs cambia de signo cuando es promovido"
#: expr.cc:2099
msgid "traditional C rejects the unary plus operator"
-msgstr "C tradicional rechaza el operador unario mas"
+msgstr "C tradicional rechaza el operador unario más"
#: expr.cc:2197
#, gcc-internal-format, gfc-internal-format
@@ -890,7 +890,7 @@ msgstr "directorio NULL en %<find_file%>"
#: files.cc:603
msgid "one or more PCH files were found, but they were invalid"
-msgstr "se encontró uno o más ficheros PCH, pero eran inválidos"
+msgstr "se encontraron uno o más ficheros PCH, pero eran inválidos"
#: files.cc:607
#, gcc-internal-format
@@ -934,7 +934,7 @@ msgstr "Guardias múltiples de include pueden ser útiles para:\n"
#: files.cc:2306
#, gcc-internal-format
msgid "header guard %qs followed by %<#define%> of a different macro"
-msgstr "guarda de encabezado %qs seguida por %<#define%> de un macro diferente"
+msgstr "guarda de cabecera %qs seguida por %<#define%> de un macro diferente"
#: files.cc:2310
#, gcc-internal-format
@@ -954,7 +954,7 @@ msgstr "la aritmética del preprocesador tiene una precisión máxima de %lu bit
#: init.cc:687
#, gcc-internal-format
msgid "CPP arithmetic must be at least as precise as a target %<int%>"
-msgstr "la aritmética de CPP debe se al menos tan precisa como un %<int%> del objetivo"
+msgstr "la aritmética de CPP debe ser al menos tan precisa como un %<int%> del objetivo"
#: init.cc:691
#, gcc-internal-format
@@ -1111,7 +1111,7 @@ msgstr "%<__VA_OPT__%> solamente puede aparecer en la expansión de una macro va
#: lex.cc:2186
#, gcc-internal-format
msgid "attempt to use poisoned %qs"
-msgstr "intento de utilizar %qs envenenado"
+msgstr "se intenta usar %qs envenenado"
#: lex.cc:2191
msgid "poisoned here"
@@ -1151,7 +1151,7 @@ msgstr "carácter inválido nueva línea en un delimitador de cadena cruda"
#: lex.cc:2731 lex.cc:5671
#, gcc-internal-format, gfc-internal-format
msgid "invalid character '%c' in raw string delimiter"
-msgstr "carácter inválido '%c' en un delimitador de cadena cruda"
+msgstr "carácter inválido «%c» en un delimitador de cadena cruda"
#: lex.cc:2770 lex.cc:2793
msgid "unterminated raw string"
@@ -1168,7 +1168,7 @@ msgstr "falta el carácter de terminación %c"
#: lex.cc:2986
msgid "C++11 requires a space between string literal and macro"
-msgstr "C++11 requiere un espacio entre cadena literal y macro"
+msgstr "C++11 requiere un espacio entre una cadena literal y un macro"
#: lex.cc:3579
msgid "module control-line cannot be in included file"
@@ -1177,7 +1177,7 @@ msgstr "la línea de control del módulo no puede estar en un fichero incluido"
#: lex.cc:3593
#, gcc-internal-format
msgid "module control-line %qs cannot be an object-like macro"
-msgstr "la línea de control del módulo %qs no puede ser una macro de tipo objeto"
+msgstr "la línea de control del módulo %qs no puede ser un macro de tipo objeto"
#: lex.cc:3631
#, gcc-internal-format
@@ -1187,7 +1187,7 @@ msgstr "el nombre de módulo %qs no puede ser una macro de tipo objeto"
#: lex.cc:3637
#, gcc-internal-format
msgid "module partition %qs cannot be an object-like macro"
-msgstr "la partición de módulo %qs no puede ser una macro de tipo objeto"
+msgstr "la partición de módulo %qs no puede ser un macro de tipo objeto"
#: lex.cc:3658
#, gcc-internal-format
@@ -1290,7 +1290,7 @@ msgstr "macro interna %qs inválida"
#: macro.cc:579 macro.cc:687
#, gcc-internal-format
msgid "macro %qs might prevent reproducible builds"
-msgstr "macro %qs quizá previene compilaciones reproducibles"
+msgstr "el macro %qs quizá previene compilaciones reproducibles"
#: macro.cc:610
msgid "could not determine file timestamp"
@@ -1401,7 +1401,7 @@ msgstr "se esperaba %<)%> después de %<...%>"
#: macro.cc:3624
msgid "anonymous variadic macros were introduced in C++11"
-msgstr "las macros variadic anónimas se introdujeron en C++11"
+msgstr "los macros variadic anónimos se introdujeron en C++11"
#: macro.cc:3625 macro.cc:3629
msgid "anonymous variadic macros were introduced in C99"
@@ -1440,7 +1440,7 @@ msgstr "%<#%> no es seguido por un parámetro de macro"
#: macro.cc:3961
#, gcc-internal-format
msgid "%qs redefined"
-msgstr "%qs redefinido"
+msgstr "se redefine %qs"
#: macro.cc:3965
msgid "this is the location of the previous definition"
@@ -1453,7 +1453,7 @@ msgstr "el argumento de macro %qs debería ser convertido a cadena en C tradicio
#: pch.cc:90 pch.cc:342 pch.cc:356 pch.cc:374 pch.cc:380 pch.cc:389 pch.cc:396
msgid "while writing precompiled header"
-msgstr "al escribir el encabezado precompilado"
+msgstr "al escribir la cabecera precompilada"
#: pch.cc:616
#, gcc-internal-format
@@ -1482,7 +1482,7 @@ msgstr "%s: no se usa porque %<__COUNTER__%> es inválido"
#: pch.cc:722 pch.cc:885
msgid "while reading precompiled header"
-msgstr "al leer el encabezado precompilado"
+msgstr "al leer la cabecera precompilada"
#: traditional.cc:891
#, gcc-internal-format
@@ -1523,7 +1523,7 @@ msgstr "error de sintaxis en la lista de parámetros de macro"
#~ msgstr "#include anidado con demasiada profundidad"
#~ msgid "missing ')' after \"__has_include__\""
-#~ msgstr "falta ')' tras \"__has_include__\""
+#~ msgstr "falta ')' después de \"__has_include__\""
#~ msgid "\"%s\" may not appear in macro parameter list"
#~ msgstr "«%s» podría faltar en la lista de parámetro de macro"
diff --git a/libcpp/po/zh_CN.po b/libcpp/po/zh_CN.po
index 467575b..2262520 100644
--- a/libcpp/po/zh_CN.po
+++ b/libcpp/po/zh_CN.po
@@ -2,22 +2,24 @@
# Copyright (C) 2005 Free Software Foundation, Inc.
# This file is distributed under the same license as the gcc package.
# Meng Jie <zuxy.meng@gmail.com>, 2005-2010.
+# Boyuan Yang <073plan@gmail.com>, 2025.
+# Anbang LI <anbangli@foxmail.com>, 2025.
# Zhanhaoxiang Zhang <zzhx2006@outlook.com>, 2024, 2025.
#
msgid ""
msgstr ""
-"Project-Id-Version: cpplib 15-b20250216\n"
+"Project-Id-Version: cpplib 15.1-b20250316\n"
"Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
"POT-Creation-Date: 2025-03-14 22:05+0000\n"
-"PO-Revision-Date: 2025-02-20 18:32+0800\n"
-"Last-Translator: Zhanhaoxiang Zhang <zzhx2006@outlook.com>\n"
+"PO-Revision-Date: 2025-05-15 12:47-0400\n"
+"Last-Translator: Boyuan Yang <073plan@gmail.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-"X-Generator: Poedit 3.5\n"
+"X-Generator: Poedit 3.6\n"
#: charset.cc:759
#, gcc-internal-format, gfc-internal-format
@@ -49,12 +51,12 @@ msgstr "字符 0x%lx 在执行字符集中不是单字节的"
#: charset.cc:1549
msgid "universal character names are only valid in C++ and C99"
-msgstr "Unicode 字符名只在 C++ 和 C99 中有效"
+msgstr "通用字符名只在 C++ 和 C99 中有效"
#: charset.cc:1553
#, gcc-internal-format
msgid "C99%'s universal character names are incompatible with C90"
-msgstr "C99 的 Unicode 字符名与 C90 不兼容"
+msgstr "C99 的通用字符名与 C90 不兼容"
#: charset.cc:1556
#, gcc-internal-format
@@ -64,29 +66,29 @@ msgstr "%<\\%c%> 的意义与在传统 C 中不同"
#: charset.cc:1595
#, gcc-internal-format
msgid "%<\\N%> not followed by %<{%>"
-msgstr "%<\\N%> 后没有 %<{%>"
+msgstr "%<\\N%> 后面没有 %<{%>"
#: charset.cc:1625
msgid "empty named universal character escape sequence; treating it as separate tokens"
-msgstr "空的命名 Unicode 字符转义序列;将其视为独立 token 处理"
+msgstr "空命名通用字符转义序列; 将其视为单独的词元"
#: charset.cc:1632
msgid "empty named universal character escape sequence"
-msgstr "空的命名 Unicode 字符转义序列"
+msgstr "空的命名通用字符转义序列"
#: charset.cc:1639
msgid "named universal character escapes are only valid in C++23"
-msgstr "命名 Unicode 字符转义序列(named universal character escapes)仅在 C++23 中有效"
+msgstr "命名通用字符转义仅在 C++23 中有效"
#: charset.cc:1659
#, gcc-internal-format
msgid "%<\\N{%.*s}%> is not a valid universal character; treating it as separate tokens"
-msgstr "%<\\N{%.*s}%> 不是一个有效的 Unicode 字符;将其视为独立 token 处理"
+msgstr "%<\\N{%.*s}%> 不是有效的通用字符; 将其视为独立的词元"
#: charset.cc:1665
#, gcc-internal-format
msgid "%<\\N{%.*s}%> is not a valid universal character"
-msgstr "%<\\N{%.*s}%> 不是一个有效的 Unicode 字符"
+msgstr "%<\\N{%.*s}%> 不是一个有效的通用字符"
#: charset.cc:1675
#, gcc-internal-format
@@ -96,7 +98,7 @@ msgstr "你是说 %<\\N{%s}%> 吗?"
#: charset.cc:1693
#, gcc-internal-format
msgid "%<\\N{%> not terminated with %<}%> after %.*s; treating it as separate tokens"
-msgstr "在 %.*s 之后 %<\\N{%> 未以 %<}%> 结束;将其视为独立 token 处理"
+msgstr "在 %.*s 之后 %<\\N{%> 未以 %<}%> 结束;将其视为独立词元"
#: charset.cc:1702
#, gcc-internal-format
@@ -110,7 +112,7 @@ msgstr "在 %<_cpp_valid_ucn%> 中但不是一个 UCN"
#: charset.cc:1753
msgid "empty delimited escape sequence; treating it as separate tokens"
-msgstr "空的带分隔符的转义序列;将其视为独立 token 处理"
+msgstr "空的带分隔符的转义序列;将其视为独立词元"
#: charset.cc:1760 charset.cc:2163 charset.cc:2280
msgid "empty delimited escape sequence"
@@ -128,12 +130,12 @@ msgstr "带分隔符的转义序列仅在 C2Y 中有效"
#: charset.cc:1794
#, gcc-internal-format
msgid "%<\\u{%> not terminated with %<}%> after %.*s; treating it as separate tokens"
-msgstr "在 %.*s 之后 %<\\u{%> 未以 %<}%> 结束;将其视为独立 token 处理"
+msgstr "在 %.*s 之后 %<\\u{%> 未以 %<}%> 结束;将其视为独立词元"
#: charset.cc:1806
#, gcc-internal-format
msgid "incomplete universal character name %.*s"
-msgstr "不完全的 Unicode 字符名 %.*s"
+msgstr "不完整的通用字符名 %.*s"
#: charset.cc:1810
#, gcc-internal-format
@@ -143,12 +145,12 @@ msgstr "在 %.*s 之后 %<\\u{%> 未以 %<}%> 结束"
#: charset.cc:1818
#, gcc-internal-format
msgid "%.*s is not a valid universal character"
-msgstr "%.*s 不是一个有效的 Unicode 字符"
+msgstr "%.*s 不是一个有效的通用字符"
#: charset.cc:1834 charset.cc:1838
#, gcc-internal-format
msgid "%.*s is not a valid universal character name before C23"
-msgstr "在C23之前,%.*s 不是一个有效的 Unicode 字符名"
+msgstr "在C23之前,%.*s 不是一个有效的通用字符名"
#: charset.cc:1854 lex.cc:2096
#, gcc-internal-format
@@ -158,17 +160,17 @@ msgstr "%<$%> 出现在标识符或数字中"
#: charset.cc:1864
#, gcc-internal-format
msgid "universal character %.*s is not valid in an identifier"
-msgstr "Unicode 字符 %.*s 在标识符中无效"
+msgstr "通用字符 %.*s 在标识符中无效"
#: charset.cc:1868
#, gcc-internal-format
msgid "universal character %.*s is not valid at the start of an identifier"
-msgstr "Unicode 字符 %.*s 在标识符开头无效"
+msgstr "通用字符 %.*s 在标识符开头无效"
#: charset.cc:1875
#, gcc-internal-format
msgid "%.*s is outside the UCS codespace"
-msgstr "%.*s 超出了 UCS 码空间"
+msgstr "%.*s 在 UCS 码空间之外"
#: charset.cc:1919 charset.cc:3072
msgid "converting UCN to source character set"
@@ -186,7 +188,7 @@ msgstr "扩展字符 %.*s 在标识符中无效"
#: charset.cc:2007
#, gcc-internal-format
msgid "extended character %.*s is not valid at the start of an identifier"
-msgstr "扩展字符 %.*s 在标识符开头无效"
+msgstr "扩展字符 %.*s 在标识符的开头无效"
#: charset.cc:2129
#, gcc-internal-format
@@ -208,10 +210,9 @@ msgid "hex escape sequence out of range"
msgstr "16 进制转义序列越界"
#: charset.cc:2247
-#, fuzzy, gcc-internal-format
-#| msgid "%<\\o%> not followed by %<}%>"
+#, gcc-internal-format
msgid "%<\\o%> not followed by %<{%>"
-msgstr "%<\\o%> 后没有 %<}%>"
+msgstr "%<\\o%> 后面没有 %<{%>"
#: charset.cc:2305
#, gcc-internal-format
@@ -461,16 +462,14 @@ msgid "%<#embed%> not supported in traditional C"
msgstr "在传统C中不支持 %<#embed%>"
#: directives.cc:1370
-#, fuzzy, gcc-internal-format
-#| msgid "%<#%s%> before C++23 is a GCC extension"
+#, gcc-internal-format
msgid "%<#%s%> before C++26 is a GCC extension"
-msgstr "%<#%s%> 在C++23以前是一个 GCC 扩展"
+msgstr "%<#%s%> 在 C++26 以前是一个 GCC 扩展"
#: directives.cc:1379
-#, fuzzy, gcc-internal-format
-#| msgid "%<#%s%> is a GCC extension"
+#, gcc-internal-format
msgid "%<#%s%> is a C23 feature"
-msgstr "%<#%s%> 是一个 GCC 扩展"
+msgstr "%<#%s%> 是一个 C23 特性"
#: directives.cc:1436
#, gcc-internal-format