|
Wire up internationalization for the app and ship six translations.
Infrastructure:
- meson: import i18n, define GETTEXT_PACKAGE/GSR_LOCALEDIR, add po/ subdir,
and translate the .desktop and AppStream metainfo via i18n.merge_file
(renamed to .desktop.in / .metainfo.xml.in).
- main.c: setlocale + bindtextdomain/textdomain so the catalog is loaded.
- po/: LINGUAS, POTFILES.in, meson.build (glib preset).
String marking:
- Wrap every user-visible string with _() across main.c, gsr-window.c, the four
pages and the shortcut dialog (titles, subtitles, labels, buttons, combo
display names, notifications, toasts, dialogs, menu items).
- Leave ids/keys untranslated: codec/container/service ids, GAction/icon/CSS
names, GVariant/format strings, accelerators, etc.
Linting:
- Re-enable gobject-linter's untranslated_string rule (now that i18n exists) as
an error so new user-visible strings must be wrapped.
Translations (141 messages each, %s/%d/markup placeholders preserved):
- Vietnamese (vi), German (de), French (fr), Italian (it), Spanish (es),
Portuguese (pt). Codec names, "OK", proper nouns and the product name are
intentionally left in English. Verified: msgfmt --check-format passes and the
compiled catalogs resolve (e.g. "Record" -> "Ghi hình" / "Aufnahme" /
"Enregistrement").
|
|
- Version 6.0.0 → 1.0.0, C standard gnu17 → gnu23
- Fix desktop file path (was referencing parent directory)
- global_shortcuts.c: fix systematic GVariant/GDBusProxy leaks, guint64-to-gchar*
type mismatch, buffer overflow risk, missing malloc NULL checks, debug artifacts
- gsr-window.c: fix notification timeout use-after-free, menu object leak in
finalize, localtime NULL check, extract active_mode_to_string helper
- gsr-stream-page.c, gsr-record-page.c, gsr-replay-page.c: fix timer source
leak in finalize (use-after-free if destroyed while timer running)
- gsr-shortcut-accel-dialog.c: fix Pango markup injection via shortcut titles
- gsr-info.c: fix pclose UB, replace fprintf with g_warning
- gsr-config.c: include errno in fopen failure warning
- Remove unused include, stale Phase 5 comments
|