From 6fc3416a1b7d59c1b91960c3393ba876456d5514 Mon Sep 17 00:00:00 2001 From: Storm Dragon Date: Thu, 29 Oct 2026 02:46:41 -0400 Subject: [PATCH] Preferences tab added for the internal UI. --- config/settings/settings.toml | 5 + docs/fenrir.1 | 21 ++- docs/fenrir.adoc | 18 +- docs/user.md | 15 +- docs/user.txt | 17 +- internal/app/application.go | 1 + internal/app/emoji_menu.go | 1 + internal/app/internal_ui.go | 9 + internal/app/internal_ui_settings_test.go | 48 ++++++ internal/app/runtime_settings.go | 1 + internal/app/spellcheck_menu.go | 1 + internal/config/config.go | 28 +++- internal/config/config_test.go | 66 ++++++++ internal/config/document.go | 2 +- internal/config/document_test.go | 2 +- internal/config/migrate_test.go | 2 +- internal/i18n/locale/de/LC_MESSAGES/fenrir.po | 158 ++++++++++-------- internal/i18n/locale/es/LC_MESSAGES/fenrir.po | 158 ++++++++++-------- internal/i18n/locale/fenrir.pot | 158 ++++++++++-------- internal/i18n/locale/pl/LC_MESSAGES/fenrir.po | 158 ++++++++++-------- internal/i18n/locale/pt/LC_MESSAGES/fenrir.po | 158 ++++++++++-------- internal/i18n/locale/ru/LC_MESSAGES/fenrir.po | 158 ++++++++++-------- internal/interaction/grid.go | 21 ++- internal/interaction/grid_test.go | 35 ++++ internal/interaction/presentation.go | 2 +- internal/interaction/session.go | 14 +- internal/preferences/settings_test.go | 35 +++- 27 files changed, 858 insertions(+), 434 deletions(-) create mode 100644 internal/app/internal_ui_settings_test.go diff --git a/config/settings/settings.toml b/config/settings/settings.toml index 584157b9..2ef413ed 100644 --- a/config/settings/settings.toml +++ b/config/settings/settings.toml @@ -54,6 +54,11 @@ word_echo = false # Enables character echo while CapsLock is on, even if character_echo is false. echo_on_capslock = false +[internal_ui] +# Spoken detail in Fenrir-owned grids, such as Emoji and Spellcheck. +announce_grid_coordinates = true +announce_item_position = true + [reading] # Automatic completed-word checking uses the session language and PATH. spellcheck = true diff --git a/docs/fenrir.1 b/docs/fenrir.1 index 1e944979..1231ce91 100644 --- a/docs/fenrir.1 +++ b/docs/fenrir.1 @@ -224,7 +224,7 @@ feedback, and attribute feedback are configurable in Reading. .SS Fenrir Menu and quick settings Press \f[B]Fenrir+F\f[R] to open the Fenrir Menu. It contains settings tabs for presentation, speech, sound, reading, -keyboard, clipboard, and other options. +keyboard, internal UI, clipboard, and other options. The form captures its navigation keys until it closes. .IP \(bu 2 At the tab selector, use arrows to choose a tab. @@ -244,6 +244,25 @@ Sound volume is between 0.0 and 1.0. Backend, device, keyboard layout, sound theme, and other launch\-only settings take effect on the next start. .PP +The \f[B]Internal UI\f[R] tab controls speech in Fenrir\(cqs own menus +and dialogs. +\f[B]Announce grid row and column\f[R] and \f[B]Announce item +position\f[R] are independent checkboxes, both enabled by default. +Disable coordinates to omit \(lqrow 1, column 2\(rq; disable item +position to omit \(lq2 of 20\(rq. +Item names and grid navigation remain available with both disabled. +Saved changes apply immediately to Emoji and Spellcheck grids and +persist across launches. +These are global settings, so this tab is omitted from application +settings. +The TOML keys are \f[CR]internal_ui.announce_grid_coordinates\f[R] and +\f[CR]internal_ui.announce_item_position\f[R]. +.PP +Settings saves use mode \f[CR]644\f[R] for the standard system settings +file at \f[CR]/etc/fenrirscreenreader/settings/settings.toml\f[R], so +other users can read it as a startup fallback. +Personal settings and application profiles use mode \f[CR]600\f[R]. +.PP Quick settings work without opening the form: .IP \(bu 2 \f[B]Fenrir+Space\f[R] diff --git a/docs/fenrir.adoc b/docs/fenrir.adoc index 301d7fba..92982b58 100644 --- a/docs/fenrir.adoc +++ b/docs/fenrir.adoc @@ -154,7 +154,7 @@ are configurable in Reading. === Fenrir Menu and quick settings Press *Fenrir{plus}F* to open the Fenrir Menu. It contains settings tabs -for presentation, speech, sound, reading, keyboard, clipboard, and other +for presentation, speech, sound, reading, keyboard, internal UI, clipboard, and other options. The form captures its navigation keys until it closes. * At the tab selector, use arrows to choose a tab. @@ -169,6 +169,22 @@ rate, Up and Down change the value by 10; Left and Right change it by 1. Sound volume is between 0.0 and 1.0. Backend, device, keyboard layout, sound theme, and other launch-only settings take effect on the next start. +The *Internal UI* tab controls speech in Fenrir’s own menus and dialogs. +*Announce grid row and column* and *Announce item position* are +independent checkboxes, both enabled by default. Disable coordinates to +omit “row 1, column 2”; disable item position to omit “2 of 20”. Item +names and grid navigation remain available with both disabled. Saved +changes apply immediately to Emoji and Spellcheck grids and persist +across launches. These are global settings, so this tab is omitted from +application settings. The TOML keys are +`internal++_++ui.announce++_++grid++_++coordinates` and +`internal++_++ui.announce++_++item++_++position`. + +Settings saves use mode `644` for the standard system settings file at +`/etc/fenrirscreenreader/settings/settings.toml`, so other users can +read it as a startup fallback. Personal settings and application +profiles use mode `600`. + Quick settings work without opening the form: [cols=",",options="header",] diff --git a/docs/user.md b/docs/user.md index 8a88cf30..a2b80b63 100644 --- a/docs/user.md +++ b/docs/user.md @@ -362,7 +362,7 @@ indentation feedback, and attribute feedback are configurable in Reading. ## Fenrir Menu and quick settings Press **Fenrir+F** to open the Fenrir Menu. It contains settings tabs for -presentation, speech, sound, reading, keyboard, clipboard, and other options. +presentation, speech, sound, reading, keyboard, internal UI, clipboard, and other options. The form captures its navigation keys until it closes. - At the tab selector, use arrows to choose a tab. @@ -376,6 +376,19 @@ Up and Down change the value by 10; Left and Right change it by 1. Sound volume between 0.0 and 1.0. Backend, device, keyboard layout, sound theme, and other launch-only settings take effect on the next start. +The **Internal UI** tab controls speech in Fenrir's own menus and dialogs. +**Announce grid row and column** and **Announce item position** are independent +checkboxes, both enabled by default. Disable coordinates to omit “row 1, column 2”; +disable item position to omit “2 of 20”. Item names and grid navigation remain +available with both disabled. Saved changes apply immediately to Emoji and +Spellcheck grids and persist across launches. These are global settings, so this +tab is omitted from application settings. The TOML keys are +`internal_ui.announce_grid_coordinates` and `internal_ui.announce_item_position`. + +Settings saves use mode `644` for the standard system settings file at +`/etc/fenrirscreenreader/settings/settings.toml`, so other users can read it as a +startup fallback. Personal settings and application profiles use mode `600`. + Quick settings work without opening the form: | Shortcut | Action | diff --git a/docs/user.txt b/docs/user.txt index 86639c65..a097b957 100644 --- a/docs/user.txt +++ b/docs/user.txt @@ -146,7 +146,7 @@ Fenrir+Shift+V announces the Fenrir version. Fenrir Menu and quick settings Press Fenrir+F to open the Fenrir Menu. It contains settings tabs for -presentation, speech, sound, reading, keyboard, clipboard, and other +presentation, speech, sound, reading, keyboard, internal UI, clipboard, and other options. The form captures its navigation keys until it closes. - At the tab selector, use arrows to choose a tab. @@ -161,6 +161,21 @@ rate, Up and Down change the value by 10; Left and Right change it by 1. Sound volume is between 0.0 and 1.0. Backend, device, keyboard layout, sound theme, and other launch-only settings take effect on the next start. +The Internal UI tab controls speech in Fenrir’s own menus and dialogs. +Announce grid row and column and Announce item position are independent +checkboxes, both enabled by default. Disable coordinates to omit “row 1, +column 2”; disable item position to omit “2 of 20”. Item names and grid +navigation remain available with both disabled. Saved changes apply +immediately to Emoji and Spellcheck grids and persist across launches. +These are global settings, so this tab is omitted from application +settings. The TOML keys are internal_ui.announce_grid_coordinates and +internal_ui.announce_item_position. + +Settings saves use mode 644 for the standard system settings file at +/etc/fenrirscreenreader/settings/settings.toml, so other users can read +it as a startup fallback. Personal settings and application profiles use +mode 600. + Quick settings work without opening the form: Shortcut Action diff --git a/internal/app/application.go b/internal/app/application.go index dbf886e8..484a5a67 100644 --- a/internal/app/application.go +++ b/internal/app/application.go @@ -97,6 +97,7 @@ func new_application(ctx context.Context, source Source, keyboards Keyboards, vo a.voice.punctuation, a.voice.punctuationLevel = options.Punctuation, options.Settings.Reading.PunctuationLevel a.voice.settings, a.voice.play = &a.settings.live, a.play a.ui = new_internal_ui(ctx, keyboards, a.voice) + a.ui.gridSettings = func() config.InternalUI { return a.settings.live.InternalUI } a.ui.previewSpelling = a.preview_spelling a.ui.discoverChoices, a.ui.saveSettings = options.SettingsChoices, a.save_menu_settings a.speechResults = make(chan speechChangeResult, 1) diff --git a/internal/app/emoji_menu.go b/internal/app/emoji_menu.go index f2393686..e9f8e5d4 100644 --- a/internal/app/emoji_menu.go +++ b/internal/app/emoji_menu.go @@ -21,6 +21,7 @@ func (ui *internalUI) open_emoji(clipboards *clipboardHost) { ui.failed("Could not open Emoji Menu: {0}", err) return } + ui.configure_session(session) ui.session = session ui.action = func(action string, session *interaction.Session) { if action != "copy_emoji" { diff --git a/internal/app/internal_ui.go b/internal/app/internal_ui.go index 784dff8f..ef6d2557 100644 --- a/internal/app/internal_ui.go +++ b/internal/app/internal_ui.go @@ -48,6 +48,7 @@ type internalUI struct { discoverChoices func(config.Settings) preferences.Discovery changed func(*interaction.Session) onClosed func() + gridSettings func() config.InternalUI previewSpelling func(config.Reading) speechOverride *config.Speech testSpeech func(context.Context, config.Speech, config.Speech) error @@ -153,6 +154,13 @@ func (ui *internalUI) update(update uiUpdate) { } } +func (ui *internalUI) configure_session(session *interaction.Session) { + if ui.gridSettings != nil { + settings := ui.gridSettings() + session.Configure_grid(settings.AnnounceGridCoordinates, settings.AnnounceItemPosition) + } +} + func (ui *internalUI) handle(key interaction.Key) { if key.Name == "escape" { ui.close() @@ -161,6 +169,7 @@ func (ui *internalUI) handle(key interaction.Key) { if ui.session == nil { return } // Loading or saving still owns every key. + ui.configure_session(ui.session) result := ui.session.Handle(key) if ui.changed != nil { ui.changed(ui.session) diff --git a/internal/app/internal_ui_settings_test.go b/internal/app/internal_ui_settings_test.go new file mode 100644 index 00000000..925f021b --- /dev/null +++ b/internal/app/internal_ui_settings_test.go @@ -0,0 +1,48 @@ +// Copyright (c) 2026 Storm Dragon +// SPDX-License-Identifier: GPL-3.0-or-later + +package app + +import ( + "strings" + "testing" + + "git.stormux.org/storm/fenrir/internal/config" + "git.stormux.org/storm/fenrir/internal/interaction" +) + +func TestInternalUIMenuSaveAndCancel(t *testing.T) { + a, voice := persistence_application(t, true) + for _, save := range []bool{false, true} { + a.open_settings() + receive_ui(t, a.ui) + for count := 0; a.ui.session.Describe() != "Internal UI tab"; count++ { + if count > 20 { + t.Fatal("Internal UI tab missing") + } + a.ui.handle(interaction.Key{Name: "right"}) + } + for range 2 { + a.ui.handle(interaction.Key{Name: "tab"}) + a.ui.handle(interaction.Key{Name: "space"}) + } + if save { + a.ui.action("save", a.ui.session) + a.settings_save_result(committed_menu_result(t, a)) + } else { + a.ui.handle(interaction.Key{Name: "escape"}) + } + loaded, _, err := config.Load(a.options.ConfigPath, nil) + want := config.InternalUI{AnnounceGridCoordinates: !save, AnnounceItemPosition: !save} + if err != nil || loaded.InternalUI != want || a.settings.live.InternalUI != want { + t.Fatal("save/cancel diverged", loaded.InternalUI, a.settings.live.InternalUI, err) + } + a.ui.open_emoji(a.clipboards) + a.ui.handle(interaction.Key{Name: "tab"}) + got := voice.messages[len(voice.messages)-1] + if strings.Contains(got, "row 1, column 1") != !save || strings.Contains(got, "1 of ") != !save { + t.Fatal("Emoji did not use saved grid preferences", got) + } + a.ui.handle(interaction.Key{Name: "escape"}) + } +} diff --git a/internal/app/runtime_settings.go b/internal/app/runtime_settings.go index eea33e29..a2505427 100644 --- a/internal/app/runtime_settings.go +++ b/internal/app/runtime_settings.go @@ -79,6 +79,7 @@ func (a *application) apply_saved_settings(saved config.Settings, speechApplied } a.settings.saveDraft = saved a.settings.resetBase = saved + a.settings.live.InternalUI = saved.InternalUI a.settings.live.Screen = saved.Screen a.configure_screen() a.preview_spelling(saved.Reading) diff --git a/internal/app/spellcheck_menu.go b/internal/app/spellcheck_menu.go index 901a7dbd..915fcffc 100644 --- a/internal/app/spellcheck_menu.go +++ b/internal/app/spellcheck_menu.go @@ -58,6 +58,7 @@ func (h *spellcheckMenu) open(word string) { ui.failed("Could not open Spellcheck Menu: {0}", err) return } + ui.configure_session(session) ui.session, ui.action = session, h.action ui.changed = func(session *interaction.Session) { source := session.Values()["suggestions.word"].Text diff --git a/internal/config/config.go b/internal/config/config.go index 0be1e79f..20e5f531 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -47,11 +47,17 @@ type Review struct { LeaveReviewOnScreenChange bool `toml:"leave_review_on_screen_change"` } +type InternalUI struct { + AnnounceGridCoordinates bool `toml:"announce_grid_coordinates" label:"Announce grid row and column"` + AnnounceItemPosition bool `toml:"announce_item_position" label:"Announce item position"` +} + type Settings struct { Version int `toml:"version"` Presentation Presentation `toml:"presentation" label:"Presentation"` Keyboard Keyboard `toml:"keyboard" label:"Keyboard"` Reading Reading `toml:"reading" label:"Reading"` + InternalUI InternalUI `toml:"internal_ui" label:"Internal UI"` Review Review `toml:"review"` Screen Screen `toml:"screen"` Clipboard Clipboard `toml:"clipboard" label:"Clipboard"` @@ -163,7 +169,7 @@ type Reading struct { } func Defaults() Settings { - return Settings{Screen: Screen{IgnoredVTs: []int{}}, Review: Review{LineBreak: true, EndOfScreen: true, LeaveReviewOnCursorChange: true, LeaveReviewOnScreenChange: true}, Prompt: Prompt{ExactMatches: []string{}, CustomPatterns: []string{}}, Version: 3, Presentation: Presentation{DateTime: DateTime{TimeFormat: "locale", DateFormat: "locale"}, Progress: Progress{Enabled: true}, Sound: Sound{Enabled: true, Volume: 0.7, Driver: "pulse", Theme: "default", Device: "default"}, Speech: Speech{Enabled: true, Rate: 0, Volume: 100, Driver: "speech-dispatcher"}}, Keyboard: Keyboard{MultiPressTimeoutMS: int(input.DefaultMultiPressTimeout / time.Millisecond), Layout: "desktop", CharacterEcho: true}, Reading: Reading{Emoticons: true, RepeatedSymbolsMin: 4, Spellcheck: true, SpellcheckSound: true, Attributes: "none", AttributeFormat: presentation.Default_attribute_format, Indentation: "none", RaisePitchForCapitals: true, Automatic: true, CursorEcho: true, Mode: "cursor", PunctuationProfile: "default", PunctuationLevel: "some"}, Clipboard: Clipboard{NumberOfClipboards: 200, ExportPath: "/tmp/fenrirClipboard"}, General: General{ScriptPath: "/usr/share/fenrirscreenreader/scripts", ScriptKeys: []string{"KEY_COMPOSE"}}, Scripts: Scripts{Workers: 2, QueueLimit: 16, OutputBytes: 1 << 20}, Remote: Remote{Enabled: true, EnableCommandRemote: true, EnableSettingsRemote: true}} + return Settings{InternalUI: InternalUI{AnnounceGridCoordinates: true, AnnounceItemPosition: true}, Screen: Screen{IgnoredVTs: []int{}}, Review: Review{LineBreak: true, EndOfScreen: true, LeaveReviewOnCursorChange: true, LeaveReviewOnScreenChange: true}, Prompt: Prompt{ExactMatches: []string{}, CustomPatterns: []string{}}, Version: 3, Presentation: Presentation{DateTime: DateTime{TimeFormat: "locale", DateFormat: "locale"}, Progress: Progress{Enabled: true}, Sound: Sound{Enabled: true, Volume: 0.7, Driver: "pulse", Theme: "default", Device: "default"}, Speech: Speech{Enabled: true, Rate: 0, Volume: 100, Driver: "speech-dispatcher"}}, Keyboard: Keyboard{MultiPressTimeoutMS: int(input.DefaultMultiPressTimeout / time.Millisecond), Layout: "desktop", CharacterEcho: true}, Reading: Reading{Emoticons: true, RepeatedSymbolsMin: 4, Spellcheck: true, SpellcheckSound: true, Attributes: "none", AttributeFormat: presentation.Default_attribute_format, Indentation: "none", RaisePitchForCapitals: true, Automatic: true, CursorEcho: true, Mode: "cursor", PunctuationProfile: "default", PunctuationLevel: "some"}, Clipboard: Clipboard{NumberOfClipboards: 200, ExportPath: "/tmp/fenrirClipboard"}, General: General{ScriptPath: "/usr/share/fenrirscreenreader/scripts", ScriptKeys: []string{"KEY_COMPOSE"}}, Scripts: Scripts{Workers: 2, QueueLimit: 16, OutputBytes: 1 << 20}, Remote: Remote{Enabled: true, EnableCommandRemote: true, EnableSettingsRemote: true}} } func (s Settings) Validate() error { @@ -317,8 +323,20 @@ func Save(path string, settings Settings) error { } func save_data(path string, data []byte) error { + absolutePath, err := filepath.Abs(path) + if err != nil { + return err + } + if absolutePath == SystemPath { + // System settings also seed unprivileged users' first launch. + return save_data_with_permissions(path, data, 0644, 0755) + } + return save_data_with_permissions(path, data, 0600, 0700) +} + +func save_data_with_permissions(path string, data []byte, fileMode, dirMode os.FileMode) error { dir := filepath.Dir(path) - if err := os.MkdirAll(dir, 0700); err != nil { + if err := os.MkdirAll(dir, dirMode); err != nil { return err } file, err := os.CreateTemp(dir, ".settings-*.toml") @@ -330,6 +348,12 @@ func save_data(path string, data []byte) error { file.Close() return err } + // Keep the temporary file private until its contents are complete. Apply + // permissions before syncing and atomically replacing the destination. + if err := file.Chmod(fileMode); err != nil { + file.Close() + return err + } if err := file.Sync(); err != nil { file.Close() return err diff --git a/internal/config/config_test.go b/internal/config/config_test.go index b4eb0233..5e074c43 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -190,3 +190,69 @@ func TestClipboardPersistenceDefaultsAndSavedHistoryLimit(t *testing.T) { t.Fatal(loaded.Clipboard, err) } } + +func TestInternalUIDefaultsAndPersistence(t *testing.T) { + for _, data := range []string{"", "version=3\n[internal_ui]\nannounce_grid_coordinates=false\n"} { + settings, err := Decode([]byte(data)) + if err != nil || settings.InternalUI.AnnounceGridCoordinates != (data == "") || !settings.InternalUI.AnnounceItemPosition { + t.Fatal("omitted options lost defaults", settings.InternalUI, err) + } + } + for _, coordinates := range []bool{false, true} { + for _, position := range []bool{false, true} { + settings := Defaults() + settings.InternalUI = InternalUI{AnnounceGridCoordinates: coordinates, AnnounceItemPosition: position} + path := filepath.Join(t.TempDir(), "settings.toml") + if err := Save(path, settings); err != nil { + t.Fatal(err) + } + loaded, _, err := Load(path, nil) + if err != nil || loaded.InternalUI != settings.InternalUI { + t.Fatal(loaded.InternalUI, err) + } + } + } +} + +func TestAtomicSavePermissionsForSystemAndPersonalSettings(t *testing.T) { + for _, system := range []bool{false, true} { + name := "personal" + fileMode, dirMode := os.FileMode(0600), os.FileMode(0700) + if system { + name, fileMode, dirMode = "system", 0644, 0755 + } + t.Run(name, func(t *testing.T) { + path := filepath.Join(t.TempDir(), "settings", "settings.toml") + save := func(data []byte) error { + if system { + // Exercise the system writer in a private directory, without + // writing to the installed configuration or requiring root. + return save_data_with_permissions(path, data, fileMode, dirMode) + } + return save_data(path, data) + } + for _, data := range []string{"initial", "replacement"} { + if err := save([]byte(data)); err != nil { + t.Fatal(err) + } + info, err := os.Stat(path) + if err != nil || info.Mode().Perm() != fileMode { + t.Fatal("file permissions", info, err) + } + info, err = os.Stat(filepath.Dir(path)) + if err != nil || info.Mode().Perm() != dirMode { + t.Fatal("directory permissions", info, err) + } + content, err := os.ReadFile(path) + if err != nil || string(content) != data { + t.Fatal("contents", string(content), err) + } + // Simulate the permissions left by an older save (or an + // overly permissive personal file) before replacing it again. + if err := os.Chmod(path, fileMode^0044); err != nil { + t.Fatal(err) + } + } + }) + } +} diff --git a/internal/config/document.go b/internal/config/document.go index 848d32f8..537ab70e 100644 --- a/internal/config/document.go +++ b/internal/config/document.go @@ -140,7 +140,7 @@ func Open_document(path string, fallback Settings) (*Document, error) { } // Save checks for external edits made since the menu opened before writing. -// Atomic replacement still uses the same private file permissions as Save. +// Atomic replacement uses the same system/private permissions policy as Save. func (d *Document) Save(settings Settings) error { data, err := read_document(d.path) if d.existed { diff --git a/internal/config/document_test.go b/internal/config/document_test.go index 74eadd5b..86224589 100644 --- a/internal/config/document_test.go +++ b/internal/config/document_test.go @@ -46,7 +46,7 @@ func TestDocumentPreservesSectionOrderAndPrivateAtomicSave(t *testing.T) { if err != nil { t.Fatal(err) } - if loaded.Settings.Presentation.Speech.Rate != 41 || !reflect.DeepEqual(loaded.Order, []string{"presentation", "presentation.speech", "presentation.sound", "presentation.progress", "presentation.time_and_date", "reading", "keyboard", "review", "screen", "clipboard", "general", "scripts", "remote", "prompt"}) { + if loaded.Settings.Presentation.Speech.Rate != 41 || !reflect.DeepEqual(loaded.Order, []string{"presentation", "presentation.speech", "presentation.sound", "presentation.progress", "presentation.time_and_date", "reading", "keyboard", "internal_ui", "review", "screen", "clipboard", "general", "scripts", "remote", "prompt"}) { t.Fatal(loaded) } info, err := os.Stat(path) diff --git a/internal/config/migrate_test.go b/internal/config/migrate_test.go index 77069d10..223190f4 100644 --- a/internal/config/migrate_test.go +++ b/internal/config/migrate_test.go @@ -79,7 +79,7 @@ cursor_echo = false t.Fatal(string(data), err) } got, err := Open_document(path, Defaults()) - wantedOrder := []string{"clipboard", "presentation", "presentation.sound", "presentation.speech", "presentation.progress", "presentation.time_and_date", "keyboard", "reading", "review", "screen", "general", "scripts", "remote", "prompt"} + wantedOrder := []string{"clipboard", "presentation", "presentation.sound", "presentation.speech", "presentation.progress", "presentation.time_and_date", "keyboard", "reading", "internal_ui", "review", "screen", "general", "scripts", "remote", "prompt"} if err != nil || !reflect.DeepEqual(got.Settings, wanted) || !reflect.DeepEqual(got.Order, wantedOrder) { t.Fatal(got, err) } diff --git a/internal/i18n/locale/de/LC_MESSAGES/fenrir.po b/internal/i18n/locale/de/LC_MESSAGES/fenrir.po index 1f93b820..8bd8e1fc 100644 --- a/internal/i18n/locale/de/LC_MESSAGES/fenrir.po +++ b/internal/i18n/locale/de/LC_MESSAGES/fenrir.po @@ -67,7 +67,7 @@ msgstr "Aktivität" msgid "Add" msgstr "Hinzufügen" -#: internal/app/emoji_menu.go:34 internal/app/spellcheck_menu.go:107 +#: internal/app/emoji_menu.go:35 internal/app/spellcheck_menu.go:108 msgid "Added {0} to clipboard" msgstr "{0} zur Zwischenablage hinzugefügt" @@ -115,6 +115,14 @@ msgstr "Anker" msgid "Angry" msgstr "Wütend" +#: internal/config/config.go:51 +msgid "Announce grid row and column" +msgstr "Zeile und Spalte im Raster ansagen" + +#: internal/config/config.go:52 +msgid "Announce item position" +msgstr "Elementposition ansagen" + #: internal/emoji/catalog.go:201 msgid "Ant" msgstr "Ameise" @@ -148,11 +156,11 @@ msgstr "Rüstung" msgid "Astronaut" msgstr "Astronaut" -#: internal/config/config.go:155 +#: internal/config/config.go:161 msgid "Attribute format" msgstr "Attributformat" -#: internal/config/config.go:154 +#: internal/config/config.go:160 msgid "Attributes" msgstr "Attribute" @@ -164,11 +172,11 @@ msgstr "Australien" msgid "Auto Rickshaw" msgstr "Autorikscha" -#: internal/config/config.go:145 +#: internal/config/config.go:151 msgid "Automatic reading" msgstr "Automatisches Lesen" -#: internal/config/config.go:156 +#: internal/config/config.go:162 msgid "Automatic spell checking" msgstr "Automatische Rechtschreibprüfung" @@ -244,7 +252,7 @@ msgstr "Fledermaus" msgid "Battery" msgstr "Batterie" -#: internal/config/config.go:129 +#: internal/config/config.go:135 msgid "Baud rate" msgstr "Baudrate" @@ -264,7 +272,7 @@ msgstr "Biber" msgid "Bee" msgstr "Biene" -#: internal/config/config.go:151 +#: internal/config/config.go:157 msgid "Beep for capital letters" msgstr "Signalton bei Großbuchstaben" @@ -441,7 +449,7 @@ msgstr "Ketten" msgid "Channel name {0}" msgstr "Kanalname {0}" -#: internal/config/config.go:140 +#: internal/config/config.go:146 msgid "Character echo" msgstr "Zeichenansage" @@ -545,16 +553,16 @@ msgstr "Live-Bereich 9 löschen" msgid "Clinking Glasses" msgstr "Sektgläser" -#: internal/config/config.go:57 +#: internal/config/config.go:63 msgid "Clipboard" msgstr "Zwischenablage" -#: internal/app/application.go:144 internal/app/application.go:147 +#: internal/app/application.go:145 internal/app/application.go:148 #: internal/app/clipboard.go:218 internal/app/clipboard.go:374 msgid "Clipboard import failed" msgstr "Import aus der Zwischenablage fehlgeschlagen" -#: internal/config/config.go:106 +#: internal/config/config.go:112 msgid "Clipboard sync" msgstr "Zwischenablage synchronisieren" @@ -662,7 +670,7 @@ msgstr "Alias in die Zwischenablage kopieren" msgid "Corn" msgstr "Mais" -#: internal/app/spellcheck_menu.go:175 +#: internal/app/spellcheck_menu.go:176 msgid "Could not check spelling: {0}" msgstr "Rechtschreibung konnte nicht geprüft werden: {0}" @@ -681,7 +689,7 @@ msgid "Could not open Emoji Menu: {0}" msgstr "Emoji-Menü konnte nicht geöffnet werden: {0}" #: internal/app/fenrir_menu.go:40 internal/app/fenrir_menu.go:69 -#: internal/app/fenrir_menu.go:89 internal/app/runtime_settings.go:133 +#: internal/app/fenrir_menu.go:89 internal/app/runtime_settings.go:134 msgid "Could not open Fenrir Menu: {0}" msgstr "Fenrir-Menü konnte nicht geöffnet werden: {0}" @@ -694,12 +702,12 @@ msgstr "Rechtschreibmenü konnte nicht geöffnet werden: {0}" msgid "Could not restore application settings: {0}" msgstr "Anwendungseinstellungen konnten nicht wiederhergestellt werden: {0}" -#: internal/app/spellcheck_menu.go:155 +#: internal/app/spellcheck_menu.go:156 msgid "Could not save exceptions: {0}" msgstr "Ausnahmen konnten nicht gespeichert werden: {0}" #: internal/app/fenrir_menu.go:200 internal/app/fenrir_menu.go:206 -#: internal/app/runtime_settings.go:176 internal/app/runtime_settings.go:204 +#: internal/app/runtime_settings.go:177 internal/app/runtime_settings.go:205 msgid "Could not save settings: {0}" msgstr "Einstellungen konnten nicht gespeichert werden: {0}" @@ -759,7 +767,7 @@ msgstr "Curlingstein" msgid "Curry Rice" msgstr "Reis mit curry" -#: internal/config/config.go:146 +#: internal/config/config.go:152 msgid "Cursor echo" msgstr "Cursoransage" @@ -775,7 +783,7 @@ msgstr "Dolch" msgid "Dango" msgstr "Dango" -#: internal/config/config.go:102 +#: internal/config/config.go:108 msgid "Date format" msgstr "Datumsformat" @@ -808,7 +816,7 @@ msgstr "Dänemark" msgid "Desktop computer" msgstr "Desktop-Computer" -#: internal/config/config.go:138 +#: internal/config/config.go:144 msgid "Devices" msgstr "Geräte" @@ -816,7 +824,7 @@ msgstr "Geräte" msgid "Devil" msgstr "Teufel" -#: internal/app/spellcheck_menu.go:191 +#: internal/app/spellcheck_menu.go:192 msgid "Dictionary {0}. {1}. {2}" msgstr "Wörterbuch {0}. {1}. {2}" @@ -864,7 +872,7 @@ msgstr "Drache" msgid "Dragon Face" msgstr "Drachengesicht" -#: internal/config/config.go:120 internal/config/config.go:127 +#: internal/config/config.go:126 internal/config/config.go:133 msgid "Driver" msgstr "Treiber" @@ -900,7 +908,7 @@ msgstr "Adler" msgid "Ear" msgstr "Ohr" -#: internal/config/config.go:142 +#: internal/config/config.go:148 msgid "Echo on CapsLock" msgstr "Zeichenansage bei Feststelltaste" @@ -932,11 +940,11 @@ msgstr "Emoji" msgid "Emoji Menu" msgstr "Emoji-Menü" -#: internal/config/config.go:160 +#: internal/config/config.go:166 msgid "Emoticons" msgstr "Emoticons" -#: internal/config/config.go:107 +#: internal/config/config.go:113 msgid "Enable Persistent Clipboard" msgstr "Dauerhafte Zwischenablage aktivieren" @@ -1007,7 +1015,7 @@ msgstr "Gesicht mit herausgestreckter zunge" msgid "Face with symbols" msgstr "Gesicht mit Symbolen" -#: internal/app/quick_settings.go:295 internal/app/runtime_settings.go:159 +#: internal/app/quick_settings.go:295 internal/app/runtime_settings.go:160 msgid "Failed to save settings." msgstr "Einstellungen konnten nicht gespeichert werden." @@ -1319,7 +1327,7 @@ msgstr "Wanderstiefel" msgid "Hippopotamus" msgstr "Nilpferd" -#: internal/config/config.go:109 +#: internal/config/config.go:115 msgid "History items" msgstr "Einträge im Verlauf" @@ -1359,7 +1367,7 @@ msgstr "Kobold" msgid "Import to Clipboard" msgstr "In Zwischenablage importieren" -#: internal/config/config.go:153 +#: internal/config/config.go:159 msgid "Indentation" msgstr "Einrückung" @@ -1375,6 +1383,10 @@ msgstr "Information nicht verfügbar" msgid "Input {0}" msgstr "Eingang {0}" +#: internal/config/config.go:60 +msgid "Internal UI" +msgstr "Interne Benutzeroberfläche" + #: internal/applicationoverrides/ninjam/ninjam.go:155 msgid "Interval position {0} of {1}" msgstr "Intervallposition {0} von {1}" @@ -1407,7 +1419,7 @@ msgstr "Jeans" msgid "Kangaroo" msgstr "Känguru" -#: internal/config/config.go:53 internal/emoji/catalog.go:401 +#: internal/config/config.go:58 internal/emoji/catalog.go:401 msgid "Keyboard" msgstr "Tastatur" @@ -1459,7 +1471,7 @@ msgstr "Letzte Nachricht" msgid "Laughing" msgstr "Lachend" -#: internal/config/config.go:139 +#: internal/config/config.go:145 msgid "Layout" msgstr "Tastaturbelegung" @@ -1616,7 +1628,7 @@ msgstr "Mikrofon" msgid "Minibus" msgstr "Kleinbus" -#: internal/config/config.go:159 +#: internal/config/config.go:165 msgid "Misspelling sound" msgstr "Signalton bei Rechtschreibfehlern" @@ -1769,7 +1781,7 @@ msgstr "Keine Codex-Nachricht empfangen" msgid "No chat message received" msgstr "Keine Chatnachricht empfangen" -#: internal/interaction/grid.go:43 internal/interaction/grid.go:79 +#: internal/interaction/grid.go:54 internal/interaction/grid.go:90 #: internal/interaction/list.go:46 msgid "No matches" msgstr "Keine Treffer" @@ -1970,7 +1982,7 @@ msgstr "Ananas" msgid "Pink Heart" msgstr "Pinkes herz" -#: internal/config/config.go:133 +#: internal/config/config.go:139 msgid "Pitch" msgstr "Tonhöhe" @@ -2030,7 +2042,7 @@ msgstr "Trank" msgid "Present the version of Fenrir currently in use." msgstr "Verwendete Fenrir-Version ansagen." -#: internal/config/config.go:52 +#: internal/config/config.go:57 msgid "Presentation" msgstr "Ausgabe" @@ -2061,11 +2073,11 @@ msgstr "Fortschrittsüberwachung aktiviert" msgid "PulseAudio" msgstr "PulseAudio" -#: internal/config/config.go:149 +#: internal/config/config.go:155 msgid "Punctuation level" msgstr "Satzzeichenstufe" -#: internal/config/config.go:148 +#: internal/config/config.go:154 msgid "Punctuation profile" msgstr "Satzzeichenprofil" @@ -2097,7 +2109,7 @@ msgstr "Eisenbahnwagen" msgid "Rainbow" msgstr "Regenbogen" -#: internal/config/config.go:150 +#: internal/config/config.go:156 msgid "Raise pitch for capital letters" msgstr "Tonhöhe bei Großbuchstaben anheben" @@ -2121,7 +2133,7 @@ msgstr "Widder" msgid "Rat" msgstr "Ratte" -#: internal/config/config.go:126 +#: internal/config/config.go:132 msgid "Rate" msgstr "Geschwindigkeit" @@ -2169,11 +2181,11 @@ msgstr "Live-Bereich 8 lesen" msgid "Read live region 9" msgstr "Live-Bereich 9 lesen" -#: internal/config/config.go:157 +#: internal/config/config.go:163 msgid "Read misspelled word" msgstr "Falsch geschriebenes Wort vorlesen" -#: internal/config/config.go:54 +#: internal/config/config.go:59 msgid "Reading" msgstr "Lesen" @@ -2209,11 +2221,11 @@ msgstr "Entfernt die Markierungen des ausgewählten Textes" msgid "Rename channel" msgstr "Kanal umbenennen" -#: internal/config/config.go:161 +#: internal/config/config.go:167 msgid "Repeated symbols" msgstr "Wiederholte Symbole" -#: internal/config/config.go:162 +#: internal/config/config.go:168 msgid "Repeated symbols minimum length" msgstr "Mindestanzahl wiederholter Symbole" @@ -2313,7 +2325,7 @@ msgstr "Salutierendes Gesicht" msgid "Santa" msgstr "Weihnachtsmann" -#: internal/app/runtime_settings.go:155 internal/app/runtime_settings.go:172 +#: internal/app/runtime_settings.go:156 internal/app/runtime_settings.go:173 msgid "Save unavailable." msgstr "Speichern nicht verfügbar." @@ -2329,11 +2341,11 @@ msgstr "Essen genießend" msgid "Saxophone" msgstr "Saxofon" -#: internal/config/config.go:152 +#: internal/config/config.go:158 msgid "Say “cap” before capital letters" msgstr "„Groß“ vor Großbuchstaben ansagen" -#: internal/config/config.go:158 +#: internal/config/config.go:164 msgid "Say “misspelled”" msgstr "„Falsch geschrieben“ ansagen" @@ -2369,11 +2381,11 @@ msgstr "Skriptquelle ist keine gültige Datei" msgid "Scroll" msgstr "Schriftrolle" -#: internal/interaction/grid.go:71 +#: internal/interaction/grid.go:82 msgid "Search cleared" msgstr "Suche gelöscht" -#: internal/interaction/grid.go:73 +#: internal/interaction/grid.go:84 msgid "Search {0}" msgstr "Suche {0}" @@ -2385,7 +2397,7 @@ msgstr "Spross" msgid "Select a temporary application override" msgstr "Temporäre Anwendungseinstellungen auswählen" -#: internal/config/config.go:121 +#: internal/config/config.go:127 msgid "Select sound theme" msgstr "Klangthema auswählen" @@ -2393,7 +2405,7 @@ msgstr "Klangthema auswählen" msgid "Selected channel or control" msgstr "Ausgewählter Kanal oder Bedienelement" -#: internal/config/config.go:128 +#: internal/config/config.go:134 msgid "Serial port" msgstr "Serielle Schnittstelle" @@ -2538,11 +2550,11 @@ msgstr "Fußball" msgid "Socks" msgstr "Socken" -#: internal/config/config.go:95 +#: internal/config/config.go:101 msgid "Sound" msgstr "Klang" -#: internal/config/config.go:118 +#: internal/config/config.go:124 msgid "Sound enabled" msgstr "Klang aktiviert" @@ -2566,7 +2578,7 @@ msgstr "Spanien" msgid "Sparkles" msgstr "Funkeln" -#: internal/config/config.go:94 +#: internal/config/config.go:100 msgid "Speech" msgstr "Sprache" @@ -2574,15 +2586,15 @@ msgstr "Sprache" msgid "Speech Dispatcher" msgstr "Speech Dispatcher" -#: internal/config/config.go:130 +#: internal/config/config.go:136 msgid "Speech Dispatcher module" msgstr "Speech-Dispatcher-Modul" -#: internal/config/config.go:125 +#: internal/config/config.go:131 msgid "Speech enabled" msgstr "Sprachausgabe aktiviert" -#: internal/config/config.go:131 +#: internal/config/config.go:137 msgid "Speech language" msgstr "Ausgabesprache" @@ -2590,7 +2602,7 @@ msgstr "Ausgabesprache" msgid "Speech restored" msgstr "Sprachausgabe wiederhergestellt" -#: internal/config/config.go:132 +#: internal/config/config.go:138 msgid "Speech voice" msgstr "Stimme" @@ -2598,11 +2610,11 @@ msgstr "Stimme" msgid "Speedboat" msgstr "Schnellboot" -#: internal/app/spellcheck_menu.go:81 +#: internal/app/spellcheck_menu.go:82 msgid "Spell checking is unavailable" msgstr "Rechtschreibprüfung nicht verfügbar" -#: internal/app/spellcheck_menu.go:180 +#: internal/app/spellcheck_menu.go:181 msgid "Spell checking is unavailable: {0}" msgstr "Rechtschreibprüfung nicht verfügbar: {0}" @@ -2778,11 +2790,11 @@ msgstr "Daumen hoch" msgid "Tiger Face" msgstr "Tigergesicht" -#: internal/config/config.go:97 +#: internal/config/config.go:103 msgid "Time and date" msgstr "Uhrzeit und Datum" -#: internal/config/config.go:101 +#: internal/config/config.go:107 msgid "Time format" msgstr "Zeitformat" @@ -2806,7 +2818,7 @@ msgstr "Oben" msgid "Tornado" msgstr "Wirbelsturm" -#: internal/config/config.go:147 +#: internal/config/config.go:153 msgid "Tracking mode" msgstr "Verfolgungsmodus" @@ -2952,7 +2964,7 @@ msgstr "" msgid "Volleyball" msgstr "Volleyball" -#: internal/config/config.go:119 internal/config/config.go:134 +#: internal/config/config.go:125 internal/config/config.go:140 msgid "Volume" msgstr "Lautstärke" @@ -3072,7 +3084,7 @@ msgstr "Wolf" msgid "Word" msgstr "Wort" -#: internal/config/config.go:141 +#: internal/config/config.go:147 msgid "Word echo" msgstr "Wortansage" @@ -3914,15 +3926,15 @@ msgstr "Sprache und Signaltöne" msgid "speech enabled" msgstr "Sprachausgabe eingeschaltet" -#: internal/config/config.go:131 +#: internal/config/config.go:137 msgid "speech language" msgstr "Ausgabesprache" -#: internal/config/config.go:133 +#: internal/config/config.go:139 msgid "speech pitch" msgstr "Tonhöhe" -#: internal/config/config.go:126 +#: internal/config/config.go:132 msgid "speech rate" msgstr "Sprechgeschwindigkeit" @@ -3930,11 +3942,11 @@ msgstr "Sprechgeschwindigkeit" msgid "speech temporary disabled" msgstr "Sprachausgabe vorübergehend ausgeschaltet" -#: internal/config/config.go:132 +#: internal/config/config.go:138 msgid "speech voice" msgstr "Stimme" -#: internal/config/config.go:134 +#: internal/config/config.go:140 msgid "speech volume" msgstr "Sprachlautstärke" @@ -4041,7 +4053,7 @@ msgstr "Anwendungseinstellungen für {0} gespeichert." msgid "{0} button" msgstr "{0} Schaltfläche" -#: internal/app/internal_ui.go:122 +#: internal/app/internal_ui.go:123 msgid "{0} closed" msgstr "{0} geschlossen" @@ -4057,7 +4069,7 @@ msgstr "{0} Eingabefeld {1}" msgid "{0} grid. {1}" msgstr "{0} Raster. {1}" -#: internal/app/spellcheck_menu.go:134 +#: internal/app/spellcheck_menu.go:135 msgid "{0} is already in dictionary" msgstr "{0} ist bereits im Wörterbuch" @@ -4089,10 +4101,18 @@ msgstr "{0} {1}" msgid "{0}, {1}" msgstr "{0}, {1}" -#: internal/interaction/grid.go:39 +#: internal/interaction/grid.go:46 +msgid "{0}. row {1}, column {2}" +msgstr "{0}. Zeile {1}, Spalte {2}" + +#: internal/interaction/grid.go:44 msgid "{0}. row {1}, column {2}. {3} of {4}" msgstr "{0}. Zeile {1}, Spalte {2}. {3} von {4}" +#: internal/interaction/grid.go:48 +msgid "{0}. {1} of {2}" +msgstr "{0}. {1} von {2}" + #: internal/applicationoverrides/override.go:30 msgid "{0}: {1}" msgstr "{0}: {1}" diff --git a/internal/i18n/locale/es/LC_MESSAGES/fenrir.po b/internal/i18n/locale/es/LC_MESSAGES/fenrir.po index 666ef55b..6d5562f5 100644 --- a/internal/i18n/locale/es/LC_MESSAGES/fenrir.po +++ b/internal/i18n/locale/es/LC_MESSAGES/fenrir.po @@ -67,7 +67,7 @@ msgstr "Actividad" msgid "Add" msgstr "Añadir" -#: internal/app/emoji_menu.go:34 internal/app/spellcheck_menu.go:107 +#: internal/app/emoji_menu.go:35 internal/app/spellcheck_menu.go:108 msgid "Added {0} to clipboard" msgstr "Se añadió {0} al portapapeles" @@ -115,6 +115,14 @@ msgstr "Ancla" msgid "Angry" msgstr "Enfadado" +#: internal/config/config.go:51 +msgid "Announce grid row and column" +msgstr "Anunciar fila y columna de la cuadrícula" + +#: internal/config/config.go:52 +msgid "Announce item position" +msgstr "Anunciar posición del elemento" + #: internal/emoji/catalog.go:201 msgid "Ant" msgstr "Hormiga" @@ -148,11 +156,11 @@ msgstr "Armadura" msgid "Astronaut" msgstr "Astronauta" -#: internal/config/config.go:155 +#: internal/config/config.go:161 msgid "Attribute format" msgstr "Formato de atributos" -#: internal/config/config.go:154 +#: internal/config/config.go:160 msgid "Attributes" msgstr "Atributos" @@ -164,11 +172,11 @@ msgstr "Australia" msgid "Auto Rickshaw" msgstr "Mototaxi" -#: internal/config/config.go:145 +#: internal/config/config.go:151 msgid "Automatic reading" msgstr "Lectura automática" -#: internal/config/config.go:156 +#: internal/config/config.go:162 msgid "Automatic spell checking" msgstr "Revisión ortográfica automática" @@ -244,7 +252,7 @@ msgstr "Murciélago" msgid "Battery" msgstr "Pila" -#: internal/config/config.go:129 +#: internal/config/config.go:135 msgid "Baud rate" msgstr "Velocidad en baudios" @@ -264,7 +272,7 @@ msgstr "Castor" msgid "Bee" msgstr "Abeja" -#: internal/config/config.go:151 +#: internal/config/config.go:157 msgid "Beep for capital letters" msgstr "Pitido para letras mayúsculas" @@ -441,7 +449,7 @@ msgstr "Cadenas" msgid "Channel name {0}" msgstr "Nombre del canal {0}" -#: internal/config/config.go:140 +#: internal/config/config.go:146 msgid "Character echo" msgstr "Eco de caracteres" @@ -545,16 +553,16 @@ msgstr "Borrar la región dinámica 9" msgid "Clinking Glasses" msgstr "Copas brindando" -#: internal/config/config.go:57 +#: internal/config/config.go:63 msgid "Clipboard" msgstr "Portapapeles" -#: internal/app/application.go:144 internal/app/application.go:147 +#: internal/app/application.go:145 internal/app/application.go:148 #: internal/app/clipboard.go:218 internal/app/clipboard.go:374 msgid "Clipboard import failed" msgstr "Error al importar el portapapeles" -#: internal/config/config.go:106 +#: internal/config/config.go:112 msgid "Clipboard sync" msgstr "Sincronización del portapapeles" @@ -664,7 +672,7 @@ msgstr "Copiar alias al portapapeles" msgid "Corn" msgstr "Maíz" -#: internal/app/spellcheck_menu.go:175 +#: internal/app/spellcheck_menu.go:176 msgid "Could not check spelling: {0}" msgstr "No se pudo revisar la ortografía: {0}" @@ -683,7 +691,7 @@ msgid "Could not open Emoji Menu: {0}" msgstr "No se pudo abrir el menú de emojis: {0}" #: internal/app/fenrir_menu.go:40 internal/app/fenrir_menu.go:69 -#: internal/app/fenrir_menu.go:89 internal/app/runtime_settings.go:133 +#: internal/app/fenrir_menu.go:89 internal/app/runtime_settings.go:134 msgid "Could not open Fenrir Menu: {0}" msgstr "No se pudo abrir el menú de Fenrir: {0}" @@ -696,12 +704,12 @@ msgstr "No se pudo abrir el menú de ortografía: {0}" msgid "Could not restore application settings: {0}" msgstr "No se pudo restaurar la configuración de la aplicación: {0}" -#: internal/app/spellcheck_menu.go:155 +#: internal/app/spellcheck_menu.go:156 msgid "Could not save exceptions: {0}" msgstr "No se pudieron guardar las excepciones: {0}" #: internal/app/fenrir_menu.go:200 internal/app/fenrir_menu.go:206 -#: internal/app/runtime_settings.go:176 internal/app/runtime_settings.go:204 +#: internal/app/runtime_settings.go:177 internal/app/runtime_settings.go:205 msgid "Could not save settings: {0}" msgstr "No se pudo guardar la configuración: {0}" @@ -761,7 +769,7 @@ msgstr "Piedra de curling" msgid "Curry Rice" msgstr "Arroz con curry" -#: internal/config/config.go:146 +#: internal/config/config.go:152 msgid "Cursor echo" msgstr "Eco del cursor" @@ -777,7 +785,7 @@ msgstr "Daga" msgid "Dango" msgstr "Dango" -#: internal/config/config.go:102 +#: internal/config/config.go:108 msgid "Date format" msgstr "Formato de fecha" @@ -810,7 +818,7 @@ msgstr "Dinamarca" msgid "Desktop computer" msgstr "Computadora de escritorio" -#: internal/config/config.go:138 +#: internal/config/config.go:144 msgid "Devices" msgstr "Dispositivos" @@ -818,7 +826,7 @@ msgstr "Dispositivos" msgid "Devil" msgstr "Diablo" -#: internal/app/spellcheck_menu.go:191 +#: internal/app/spellcheck_menu.go:192 msgid "Dictionary {0}. {1}. {2}" msgstr "Diccionario {0}. {1}. {2}" @@ -866,7 +874,7 @@ msgstr "Dragón" msgid "Dragon Face" msgstr "Cara de dragón" -#: internal/config/config.go:120 internal/config/config.go:127 +#: internal/config/config.go:126 internal/config/config.go:133 msgid "Driver" msgstr "Controlador" @@ -902,7 +910,7 @@ msgstr "Águila" msgid "Ear" msgstr "Oreja" -#: internal/config/config.go:142 +#: internal/config/config.go:148 msgid "Echo on CapsLock" msgstr "Eco con Bloq Mayús" @@ -934,11 +942,11 @@ msgstr "Emoji" msgid "Emoji Menu" msgstr "Menú de emojis" -#: internal/config/config.go:160 +#: internal/config/config.go:166 msgid "Emoticons" msgstr "Emoticonos" -#: internal/config/config.go:107 +#: internal/config/config.go:113 msgid "Enable Persistent Clipboard" msgstr "Activar portapapeles persistente" @@ -1010,7 +1018,7 @@ msgstr "Cara sacando la lengua" msgid "Face with symbols" msgstr "Cara con símbolos" -#: internal/app/quick_settings.go:295 internal/app/runtime_settings.go:159 +#: internal/app/quick_settings.go:295 internal/app/runtime_settings.go:160 msgid "Failed to save settings." msgstr "No se pudo guardar la configuración." @@ -1322,7 +1330,7 @@ msgstr "Bota de senderismo" msgid "Hippopotamus" msgstr "Hipopótamo" -#: internal/config/config.go:109 +#: internal/config/config.go:115 msgid "History items" msgstr "Elementos del historial" @@ -1362,7 +1370,7 @@ msgstr "Diablillo" msgid "Import to Clipboard" msgstr "Importar al portapapeles" -#: internal/config/config.go:153 +#: internal/config/config.go:159 msgid "Indentation" msgstr "Sangría" @@ -1378,6 +1386,10 @@ msgstr "Información no disponible" msgid "Input {0}" msgstr "Entrada {0}" +#: internal/config/config.go:60 +msgid "Internal UI" +msgstr "Interfaz interna" + #: internal/applicationoverrides/ninjam/ninjam.go:155 msgid "Interval position {0} of {1}" msgstr "Posición del intervalo {0} de {1}" @@ -1410,7 +1422,7 @@ msgstr "Vaqueros" msgid "Kangaroo" msgstr "Canguro" -#: internal/config/config.go:53 internal/emoji/catalog.go:401 +#: internal/config/config.go:58 internal/emoji/catalog.go:401 msgid "Keyboard" msgstr "Teclado" @@ -1462,7 +1474,7 @@ msgstr "Último mensaje" msgid "Laughing" msgstr "Riendo" -#: internal/config/config.go:139 +#: internal/config/config.go:145 msgid "Layout" msgstr "Distribución del teclado" @@ -1619,7 +1631,7 @@ msgstr "Micrófono" msgid "Minibus" msgstr "Minibús" -#: internal/config/config.go:159 +#: internal/config/config.go:165 msgid "Misspelling sound" msgstr "Sonido de error ortográfico" @@ -1779,7 +1791,7 @@ msgstr "No se ha recibido ningún mensaje de Codex" msgid "No chat message received" msgstr "No se ha recibido ningún mensaje de chat" -#: internal/interaction/grid.go:43 internal/interaction/grid.go:79 +#: internal/interaction/grid.go:54 internal/interaction/grid.go:90 #: internal/interaction/list.go:46 msgid "No matches" msgstr "Sin coincidencias" @@ -1981,7 +1993,7 @@ msgstr "Piña" msgid "Pink Heart" msgstr "Corazón rosa" -#: internal/config/config.go:133 +#: internal/config/config.go:139 msgid "Pitch" msgstr "Tono" @@ -2041,7 +2053,7 @@ msgstr "Poción" msgid "Present the version of Fenrir currently in use." msgstr "Anunciar la versión de Fenrir en uso." -#: internal/config/config.go:52 +#: internal/config/config.go:57 msgid "Presentation" msgstr "Presentación" @@ -2070,11 +2082,11 @@ msgstr "Seguimiento del progreso activado" msgid "PulseAudio" msgstr "PulseAudio" -#: internal/config/config.go:149 +#: internal/config/config.go:155 msgid "Punctuation level" msgstr "Nivel de puntuación" -#: internal/config/config.go:148 +#: internal/config/config.go:154 msgid "Punctuation profile" msgstr "Perfil de puntuación" @@ -2106,7 +2118,7 @@ msgstr "Vagón" msgid "Rainbow" msgstr "Arcoíris" -#: internal/config/config.go:150 +#: internal/config/config.go:156 msgid "Raise pitch for capital letters" msgstr "Elevar el tono para letras mayúsculas" @@ -2130,7 +2142,7 @@ msgstr "Carnero" msgid "Rat" msgstr "Rata" -#: internal/config/config.go:126 +#: internal/config/config.go:132 msgid "Rate" msgstr "Velocidad" @@ -2178,11 +2190,11 @@ msgstr "Leer la región dinámica 8" msgid "Read live region 9" msgstr "Leer la región dinámica 9" -#: internal/config/config.go:157 +#: internal/config/config.go:163 msgid "Read misspelled word" msgstr "Leer la palabra mal escrita" -#: internal/config/config.go:54 +#: internal/config/config.go:59 msgid "Reading" msgstr "Lectura" @@ -2218,11 +2230,11 @@ msgstr "Elimina las marcas del texto seleccionado" msgid "Rename channel" msgstr "Cambiar nombre del canal" -#: internal/config/config.go:161 +#: internal/config/config.go:167 msgid "Repeated symbols" msgstr "Símbolos repetidos" -#: internal/config/config.go:162 +#: internal/config/config.go:168 msgid "Repeated symbols minimum length" msgstr "Cantidad mínima de símbolos repetidos" @@ -2322,7 +2334,7 @@ msgstr "Cara saludando militarmente" msgid "Santa" msgstr "Papá Noel" -#: internal/app/runtime_settings.go:155 internal/app/runtime_settings.go:172 +#: internal/app/runtime_settings.go:156 internal/app/runtime_settings.go:173 msgid "Save unavailable." msgstr "Guardado no disponible." @@ -2338,11 +2350,11 @@ msgstr "Saboreando comida" msgid "Saxophone" msgstr "Saxofón" -#: internal/config/config.go:152 +#: internal/config/config.go:158 msgid "Say “cap” before capital letters" msgstr "Decir «mayúscula» antes de las letras mayúsculas" -#: internal/config/config.go:158 +#: internal/config/config.go:164 msgid "Say “misspelled”" msgstr "Decir «mal escrita»" @@ -2378,11 +2390,11 @@ msgstr "El origen del script no es un archivo válido" msgid "Scroll" msgstr "Pergamino" -#: internal/interaction/grid.go:71 +#: internal/interaction/grid.go:82 msgid "Search cleared" msgstr "Búsqueda borrada" -#: internal/interaction/grid.go:73 +#: internal/interaction/grid.go:84 msgid "Search {0}" msgstr "Buscar {0}" @@ -2394,7 +2406,7 @@ msgstr "Planta joven" msgid "Select a temporary application override" msgstr "Seleccionar ajustes temporales para una aplicación" -#: internal/config/config.go:121 +#: internal/config/config.go:127 msgid "Select sound theme" msgstr "Seleccionar tema de sonido" @@ -2402,7 +2414,7 @@ msgstr "Seleccionar tema de sonido" msgid "Selected channel or control" msgstr "Canal o control seleccionado" -#: internal/config/config.go:128 +#: internal/config/config.go:134 msgid "Serial port" msgstr "Puerto serie" @@ -2547,11 +2559,11 @@ msgstr "Balón de fútbol" msgid "Socks" msgstr "Calcetines" -#: internal/config/config.go:95 +#: internal/config/config.go:101 msgid "Sound" msgstr "Sonido" -#: internal/config/config.go:118 +#: internal/config/config.go:124 msgid "Sound enabled" msgstr "Sonido activado" @@ -2575,7 +2587,7 @@ msgstr "España" msgid "Sparkles" msgstr "Destellos" -#: internal/config/config.go:94 +#: internal/config/config.go:100 msgid "Speech" msgstr "Voz" @@ -2583,15 +2595,15 @@ msgstr "Voz" msgid "Speech Dispatcher" msgstr "Speech Dispatcher" -#: internal/config/config.go:130 +#: internal/config/config.go:136 msgid "Speech Dispatcher module" msgstr "Módulo de Speech Dispatcher" -#: internal/config/config.go:125 +#: internal/config/config.go:131 msgid "Speech enabled" msgstr "Voz activada" -#: internal/config/config.go:131 +#: internal/config/config.go:137 msgid "Speech language" msgstr "Idioma de la voz" @@ -2599,7 +2611,7 @@ msgstr "Idioma de la voz" msgid "Speech restored" msgstr "Voz restablecida" -#: internal/config/config.go:132 +#: internal/config/config.go:138 msgid "Speech voice" msgstr "Voz de síntesis" @@ -2607,11 +2619,11 @@ msgstr "Voz de síntesis" msgid "Speedboat" msgstr "Lancha motora" -#: internal/app/spellcheck_menu.go:81 +#: internal/app/spellcheck_menu.go:82 msgid "Spell checking is unavailable" msgstr "La revisión ortográfica no está disponible" -#: internal/app/spellcheck_menu.go:180 +#: internal/app/spellcheck_menu.go:181 msgid "Spell checking is unavailable: {0}" msgstr "La revisión ortográfica no está disponible: {0}" @@ -2787,11 +2799,11 @@ msgstr "Pulgar arriba" msgid "Tiger Face" msgstr "Cara de tigre" -#: internal/config/config.go:97 +#: internal/config/config.go:103 msgid "Time and date" msgstr "Hora y fecha" -#: internal/config/config.go:101 +#: internal/config/config.go:107 msgid "Time format" msgstr "Formato de hora" @@ -2815,7 +2827,7 @@ msgstr "Fin" msgid "Tornado" msgstr "Tornado" -#: internal/config/config.go:147 +#: internal/config/config.go:153 msgid "Tracking mode" msgstr "Modo de seguimiento" @@ -2959,7 +2971,7 @@ msgstr "Prueba de voz: El veloz zorro marrón salta sobre el perro perezoso." msgid "Volleyball" msgstr "Voleibol" -#: internal/config/config.go:119 internal/config/config.go:134 +#: internal/config/config.go:125 internal/config/config.go:140 msgid "Volume" msgstr "Volumen" @@ -3079,7 +3091,7 @@ msgstr "Lobo" msgid "Word" msgstr "Palabra" -#: internal/config/config.go:141 +#: internal/config/config.go:147 msgid "Word echo" msgstr "Eco de palabras" @@ -3922,15 +3934,15 @@ msgstr "voz y pitidos" msgid "speech enabled" msgstr "Habla activada" -#: internal/config/config.go:131 +#: internal/config/config.go:137 msgid "speech language" msgstr "idioma de la voz" -#: internal/config/config.go:133 +#: internal/config/config.go:139 msgid "speech pitch" msgstr "tono de voz" -#: internal/config/config.go:126 +#: internal/config/config.go:132 msgid "speech rate" msgstr "velocidad de voz" @@ -3938,11 +3950,11 @@ msgstr "velocidad de voz" msgid "speech temporary disabled" msgstr "Habla desactivada temporalmente" -#: internal/config/config.go:132 +#: internal/config/config.go:138 msgid "speech voice" msgstr "voz de síntesis" -#: internal/config/config.go:134 +#: internal/config/config.go:140 msgid "speech volume" msgstr "volumen de voz" @@ -4049,7 +4061,7 @@ msgstr "Configuración de la aplicación {0} guardada." msgid "{0} button" msgstr "{0} botón" -#: internal/app/internal_ui.go:122 +#: internal/app/internal_ui.go:123 msgid "{0} closed" msgstr "{0} cerrado" @@ -4065,7 +4077,7 @@ msgstr "{0} campo de texto {1}" msgid "{0} grid. {1}" msgstr "{0} cuadrícula. {1}" -#: internal/app/spellcheck_menu.go:134 +#: internal/app/spellcheck_menu.go:135 msgid "{0} is already in dictionary" msgstr "{0} ya está en el diccionario" @@ -4097,10 +4109,18 @@ msgstr "{0} {1}" msgid "{0}, {1}" msgstr "{0}, {1}" -#: internal/interaction/grid.go:39 +#: internal/interaction/grid.go:46 +msgid "{0}. row {1}, column {2}" +msgstr "{0}. fila {1}, columna {2}" + +#: internal/interaction/grid.go:44 msgid "{0}. row {1}, column {2}. {3} of {4}" msgstr "{0}. fila {1}, columna {2}. {3} de {4}" +#: internal/interaction/grid.go:48 +msgid "{0}. {1} of {2}" +msgstr "{0}. {1} de {2}" + #: internal/applicationoverrides/override.go:30 msgid "{0}: {1}" msgstr "{0}: {1}" diff --git a/internal/i18n/locale/fenrir.pot b/internal/i18n/locale/fenrir.pot index 21c5d59c..e818711b 100644 --- a/internal/i18n/locale/fenrir.pot +++ b/internal/i18n/locale/fenrir.pot @@ -57,7 +57,7 @@ msgstr "" msgid "Add" msgstr "" -#: internal/app/emoji_menu.go:34 internal/app/spellcheck_menu.go:107 +#: internal/app/emoji_menu.go:35 internal/app/spellcheck_menu.go:108 msgid "Added {0} to clipboard" msgstr "" @@ -105,6 +105,14 @@ msgstr "" msgid "Angry" msgstr "" +#: internal/config/config.go:51 +msgid "Announce grid row and column" +msgstr "" + +#: internal/config/config.go:52 +msgid "Announce item position" +msgstr "" + #: internal/emoji/catalog.go:201 msgid "Ant" msgstr "" @@ -137,11 +145,11 @@ msgstr "" msgid "Astronaut" msgstr "" -#: internal/config/config.go:155 +#: internal/config/config.go:161 msgid "Attribute format" msgstr "" -#: internal/config/config.go:154 +#: internal/config/config.go:160 msgid "Attributes" msgstr "" @@ -153,11 +161,11 @@ msgstr "" msgid "Auto Rickshaw" msgstr "" -#: internal/config/config.go:145 +#: internal/config/config.go:151 msgid "Automatic reading" msgstr "" -#: internal/config/config.go:156 +#: internal/config/config.go:162 msgid "Automatic spell checking" msgstr "" @@ -233,7 +241,7 @@ msgstr "" msgid "Battery" msgstr "" -#: internal/config/config.go:129 +#: internal/config/config.go:135 msgid "Baud rate" msgstr "" @@ -253,7 +261,7 @@ msgstr "" msgid "Bee" msgstr "" -#: internal/config/config.go:151 +#: internal/config/config.go:157 msgid "Beep for capital letters" msgstr "" @@ -429,7 +437,7 @@ msgstr "" msgid "Channel name {0}" msgstr "" -#: internal/config/config.go:140 +#: internal/config/config.go:146 msgid "Character echo" msgstr "" @@ -533,15 +541,15 @@ msgstr "" msgid "Clinking Glasses" msgstr "" -#: internal/config/config.go:57 +#: internal/config/config.go:63 msgid "Clipboard" msgstr "" -#: internal/app/application.go:144 internal/app/application.go:147 internal/app/clipboard.go:218 internal/app/clipboard.go:374 +#: internal/app/application.go:145 internal/app/application.go:148 internal/app/clipboard.go:218 internal/app/clipboard.go:374 msgid "Clipboard import failed" msgstr "" -#: internal/config/config.go:106 +#: internal/config/config.go:112 msgid "Clipboard sync" msgstr "" @@ -649,7 +657,7 @@ msgstr "" msgid "Corn" msgstr "" -#: internal/app/spellcheck_menu.go:175 +#: internal/app/spellcheck_menu.go:176 msgid "Could not check spelling: {0}" msgstr "" @@ -665,7 +673,7 @@ msgstr "" msgid "Could not open Emoji Menu: {0}" msgstr "" -#: internal/app/fenrir_menu.go:40 internal/app/fenrir_menu.go:69 internal/app/fenrir_menu.go:89 internal/app/runtime_settings.go:133 +#: internal/app/fenrir_menu.go:40 internal/app/fenrir_menu.go:69 internal/app/fenrir_menu.go:89 internal/app/runtime_settings.go:134 msgid "Could not open Fenrir Menu: {0}" msgstr "" @@ -677,11 +685,11 @@ msgstr "" msgid "Could not restore application settings: {0}" msgstr "" -#: internal/app/spellcheck_menu.go:155 +#: internal/app/spellcheck_menu.go:156 msgid "Could not save exceptions: {0}" msgstr "" -#: internal/app/fenrir_menu.go:200 internal/app/fenrir_menu.go:206 internal/app/runtime_settings.go:176 internal/app/runtime_settings.go:204 +#: internal/app/fenrir_menu.go:200 internal/app/fenrir_menu.go:206 internal/app/runtime_settings.go:177 internal/app/runtime_settings.go:205 msgid "Could not save settings: {0}" msgstr "" @@ -741,7 +749,7 @@ msgstr "" msgid "Curry Rice" msgstr "" -#: internal/config/config.go:146 +#: internal/config/config.go:152 msgid "Cursor echo" msgstr "" @@ -757,7 +765,7 @@ msgstr "" msgid "Dango" msgstr "" -#: internal/config/config.go:102 +#: internal/config/config.go:108 msgid "Date format" msgstr "" @@ -789,7 +797,7 @@ msgstr "" msgid "Desktop computer" msgstr "" -#: internal/config/config.go:138 +#: internal/config/config.go:144 msgid "Devices" msgstr "" @@ -797,7 +805,7 @@ msgstr "" msgid "Devil" msgstr "" -#: internal/app/spellcheck_menu.go:191 +#: internal/app/spellcheck_menu.go:192 msgid "Dictionary {0}. {1}. {2}" msgstr "" @@ -845,7 +853,7 @@ msgstr "" msgid "Dragon Face" msgstr "" -#: internal/config/config.go:120 internal/config/config.go:127 +#: internal/config/config.go:126 internal/config/config.go:133 msgid "Driver" msgstr "" @@ -881,7 +889,7 @@ msgstr "" msgid "Ear" msgstr "" -#: internal/config/config.go:142 +#: internal/config/config.go:148 msgid "Echo on CapsLock" msgstr "" @@ -913,11 +921,11 @@ msgstr "" msgid "Emoji Menu" msgstr "" -#: internal/config/config.go:160 +#: internal/config/config.go:166 msgid "Emoticons" msgstr "" -#: internal/config/config.go:107 +#: internal/config/config.go:113 msgid "Enable Persistent Clipboard" msgstr "" @@ -977,7 +985,7 @@ msgstr "" msgid "Face with symbols" msgstr "" -#: internal/app/quick_settings.go:295 internal/app/runtime_settings.go:159 +#: internal/app/quick_settings.go:295 internal/app/runtime_settings.go:160 msgid "Failed to save settings." msgstr "" @@ -1289,7 +1297,7 @@ msgstr "" msgid "Hippopotamus" msgstr "" -#: internal/config/config.go:109 +#: internal/config/config.go:115 msgid "History items" msgstr "" @@ -1329,7 +1337,7 @@ msgstr "" msgid "Import to Clipboard" msgstr "" -#: internal/config/config.go:153 +#: internal/config/config.go:159 msgid "Indentation" msgstr "" @@ -1345,6 +1353,10 @@ msgstr "" msgid "Input {0}" msgstr "" +#: internal/config/config.go:60 +msgid "Internal UI" +msgstr "" + #: internal/applicationoverrides/ninjam/ninjam.go:155 msgid "Interval position {0} of {1}" msgstr "" @@ -1377,7 +1389,7 @@ msgstr "" msgid "Kangaroo" msgstr "" -#: internal/config/config.go:53 internal/emoji/catalog.go:401 +#: internal/config/config.go:58 internal/emoji/catalog.go:401 msgid "Keyboard" msgstr "" @@ -1429,7 +1441,7 @@ msgstr "" msgid "Laughing" msgstr "" -#: internal/config/config.go:139 +#: internal/config/config.go:145 msgid "Layout" msgstr "" @@ -1585,7 +1597,7 @@ msgstr "" msgid "Minibus" msgstr "" -#: internal/config/config.go:159 +#: internal/config/config.go:165 msgid "Misspelling sound" msgstr "" @@ -1733,7 +1745,7 @@ msgstr "" msgid "No chat message received" msgstr "" -#: internal/interaction/grid.go:43 internal/interaction/grid.go:79 internal/interaction/list.go:46 +#: internal/interaction/grid.go:54 internal/interaction/grid.go:90 internal/interaction/list.go:46 msgid "No matches" msgstr "" @@ -1933,7 +1945,7 @@ msgstr "" msgid "Pink Heart" msgstr "" -#: internal/config/config.go:133 +#: internal/config/config.go:139 msgid "Pitch" msgstr "" @@ -1993,7 +2005,7 @@ msgstr "" msgid "Present the version of Fenrir currently in use." msgstr "" -#: internal/config/config.go:52 +#: internal/config/config.go:57 msgid "Presentation" msgstr "" @@ -2021,11 +2033,11 @@ msgstr "" msgid "PulseAudio" msgstr "" -#: internal/config/config.go:149 +#: internal/config/config.go:155 msgid "Punctuation level" msgstr "" -#: internal/config/config.go:148 +#: internal/config/config.go:154 msgid "Punctuation profile" msgstr "" @@ -2057,7 +2069,7 @@ msgstr "" msgid "Rainbow" msgstr "" -#: internal/config/config.go:150 +#: internal/config/config.go:156 msgid "Raise pitch for capital letters" msgstr "" @@ -2081,7 +2093,7 @@ msgstr "" msgid "Rat" msgstr "" -#: internal/config/config.go:126 +#: internal/config/config.go:132 msgid "Rate" msgstr "" @@ -2129,11 +2141,11 @@ msgstr "" msgid "Read live region 9" msgstr "" -#: internal/config/config.go:157 +#: internal/config/config.go:163 msgid "Read misspelled word" msgstr "" -#: internal/config/config.go:54 +#: internal/config/config.go:59 msgid "Reading" msgstr "" @@ -2169,11 +2181,11 @@ msgstr "" msgid "Rename channel" msgstr "" -#: internal/config/config.go:161 +#: internal/config/config.go:167 msgid "Repeated symbols" msgstr "" -#: internal/config/config.go:162 +#: internal/config/config.go:168 msgid "Repeated symbols minimum length" msgstr "" @@ -2273,7 +2285,7 @@ msgstr "" msgid "Santa" msgstr "" -#: internal/app/runtime_settings.go:155 internal/app/runtime_settings.go:172 +#: internal/app/runtime_settings.go:156 internal/app/runtime_settings.go:173 msgid "Save unavailable." msgstr "" @@ -2289,11 +2301,11 @@ msgstr "" msgid "Saxophone" msgstr "" -#: internal/config/config.go:152 +#: internal/config/config.go:158 msgid "Say “cap” before capital letters" msgstr "" -#: internal/config/config.go:158 +#: internal/config/config.go:164 msgid "Say “misspelled”" msgstr "" @@ -2329,11 +2341,11 @@ msgstr "" msgid "Scroll" msgstr "" -#: internal/interaction/grid.go:71 +#: internal/interaction/grid.go:82 msgid "Search cleared" msgstr "" -#: internal/interaction/grid.go:73 +#: internal/interaction/grid.go:84 msgid "Search {0}" msgstr "" @@ -2345,7 +2357,7 @@ msgstr "" msgid "Select a temporary application override" msgstr "" -#: internal/config/config.go:121 +#: internal/config/config.go:127 msgid "Select sound theme" msgstr "" @@ -2353,7 +2365,7 @@ msgstr "" msgid "Selected channel or control" msgstr "" -#: internal/config/config.go:128 +#: internal/config/config.go:134 msgid "Serial port" msgstr "" @@ -2497,11 +2509,11 @@ msgstr "" msgid "Socks" msgstr "" -#: internal/config/config.go:95 +#: internal/config/config.go:101 msgid "Sound" msgstr "" -#: internal/config/config.go:118 +#: internal/config/config.go:124 msgid "Sound enabled" msgstr "" @@ -2525,7 +2537,7 @@ msgstr "" msgid "Sparkles" msgstr "" -#: internal/config/config.go:94 +#: internal/config/config.go:100 msgid "Speech" msgstr "" @@ -2533,15 +2545,15 @@ msgstr "" msgid "Speech Dispatcher" msgstr "" -#: internal/config/config.go:130 +#: internal/config/config.go:136 msgid "Speech Dispatcher module" msgstr "" -#: internal/config/config.go:125 +#: internal/config/config.go:131 msgid "Speech enabled" msgstr "" -#: internal/config/config.go:131 +#: internal/config/config.go:137 msgid "Speech language" msgstr "" @@ -2549,7 +2561,7 @@ msgstr "" msgid "Speech restored" msgstr "" -#: internal/config/config.go:132 +#: internal/config/config.go:138 msgid "Speech voice" msgstr "" @@ -2557,11 +2569,11 @@ msgstr "" msgid "Speedboat" msgstr "" -#: internal/app/spellcheck_menu.go:81 +#: internal/app/spellcheck_menu.go:82 msgid "Spell checking is unavailable" msgstr "" -#: internal/app/spellcheck_menu.go:180 +#: internal/app/spellcheck_menu.go:181 msgid "Spell checking is unavailable: {0}" msgstr "" @@ -2737,11 +2749,11 @@ msgstr "" msgid "Tiger Face" msgstr "" -#: internal/config/config.go:97 +#: internal/config/config.go:103 msgid "Time and date" msgstr "" -#: internal/config/config.go:101 +#: internal/config/config.go:107 msgid "Time format" msgstr "" @@ -2765,7 +2777,7 @@ msgstr "" msgid "Tornado" msgstr "" -#: internal/config/config.go:147 +#: internal/config/config.go:153 msgid "Tracking mode" msgstr "" @@ -2905,7 +2917,7 @@ msgstr "" msgid "Volleyball" msgstr "" -#: internal/config/config.go:119 internal/config/config.go:134 +#: internal/config/config.go:125 internal/config/config.go:140 msgid "Volume" msgstr "" @@ -3021,7 +3033,7 @@ msgstr "" msgid "Word" msgstr "" -#: internal/config/config.go:141 +#: internal/config/config.go:147 msgid "Word echo" msgstr "" @@ -3809,15 +3821,15 @@ msgstr "" msgid "speech enabled" msgstr "" -#: internal/config/config.go:131 +#: internal/config/config.go:137 msgid "speech language" msgstr "" -#: internal/config/config.go:133 +#: internal/config/config.go:139 msgid "speech pitch" msgstr "" -#: internal/config/config.go:126 +#: internal/config/config.go:132 msgid "speech rate" msgstr "" @@ -3825,11 +3837,11 @@ msgstr "" msgid "speech temporary disabled" msgstr "" -#: internal/config/config.go:132 +#: internal/config/config.go:138 msgid "speech voice" msgstr "" -#: internal/config/config.go:134 +#: internal/config/config.go:140 msgid "speech volume" msgstr "" @@ -3933,7 +3945,7 @@ msgstr "" msgid "{0} button" msgstr "" -#: internal/app/internal_ui.go:122 +#: internal/app/internal_ui.go:123 msgid "{0} closed" msgstr "" @@ -3949,7 +3961,7 @@ msgstr "" msgid "{0} grid. {1}" msgstr "" -#: internal/app/spellcheck_menu.go:134 +#: internal/app/spellcheck_menu.go:135 msgid "{0} is already in dictionary" msgstr "" @@ -3981,10 +3993,18 @@ msgstr "" msgid "{0}, {1}" msgstr "" -#: internal/interaction/grid.go:39 +#: internal/interaction/grid.go:46 +msgid "{0}. row {1}, column {2}" +msgstr "" + +#: internal/interaction/grid.go:44 msgid "{0}. row {1}, column {2}. {3} of {4}" msgstr "" +#: internal/interaction/grid.go:48 +msgid "{0}. {1} of {2}" +msgstr "" + #: internal/applicationoverrides/override.go:30 msgid "{0}: {1}" msgstr "" diff --git a/internal/i18n/locale/pl/LC_MESSAGES/fenrir.po b/internal/i18n/locale/pl/LC_MESSAGES/fenrir.po index 1b16724f..95c19f22 100644 --- a/internal/i18n/locale/pl/LC_MESSAGES/fenrir.po +++ b/internal/i18n/locale/pl/LC_MESSAGES/fenrir.po @@ -68,7 +68,7 @@ msgstr "Aktywność" msgid "Add" msgstr "Dodaj" -#: internal/app/emoji_menu.go:34 internal/app/spellcheck_menu.go:107 +#: internal/app/emoji_menu.go:35 internal/app/spellcheck_menu.go:108 msgid "Added {0} to clipboard" msgstr "Dodano {0} do schowka" @@ -116,6 +116,14 @@ msgstr "Kotwica" msgid "Angry" msgstr "Złość" +#: internal/config/config.go:51 +msgid "Announce grid row and column" +msgstr "Ogłaszaj wiersz i kolumnę siatki" + +#: internal/config/config.go:52 +msgid "Announce item position" +msgstr "Ogłaszaj pozycję elementu" + #: internal/emoji/catalog.go:201 msgid "Ant" msgstr "mrówka" @@ -149,11 +157,11 @@ msgstr "Pancerz" msgid "Astronaut" msgstr "Astronauta" -#: internal/config/config.go:155 +#: internal/config/config.go:161 msgid "Attribute format" msgstr "Format atrybutów" -#: internal/config/config.go:154 +#: internal/config/config.go:160 msgid "Attributes" msgstr "Atrybuty" @@ -165,11 +173,11 @@ msgstr "Australia" msgid "Auto Rickshaw" msgstr "autoriksza" -#: internal/config/config.go:145 +#: internal/config/config.go:151 msgid "Automatic reading" msgstr "Automatyczne czytanie" -#: internal/config/config.go:156 +#: internal/config/config.go:162 msgid "Automatic spell checking" msgstr "Automatyczne sprawdzanie pisowni" @@ -245,7 +253,7 @@ msgstr "Nietoperz" msgid "Battery" msgstr "bateria" -#: internal/config/config.go:129 +#: internal/config/config.go:135 msgid "Baud rate" msgstr "Szybkość transmisji" @@ -265,7 +273,7 @@ msgstr "bóbr" msgid "Bee" msgstr "Pszczoła" -#: internal/config/config.go:151 +#: internal/config/config.go:157 msgid "Beep for capital letters" msgstr "Sygnał dla wielkich liter" @@ -442,7 +450,7 @@ msgstr "Łańcuchy" msgid "Channel name {0}" msgstr "Nazwa kanału {0}" -#: internal/config/config.go:140 +#: internal/config/config.go:146 msgid "Character echo" msgstr "Echo znaków" @@ -546,16 +554,16 @@ msgstr "Wyczyść obszar dynamiczny 9" msgid "Clinking Glasses" msgstr "stukające się kieliszki" -#: internal/config/config.go:57 +#: internal/config/config.go:63 msgid "Clipboard" msgstr "Schowek" -#: internal/app/application.go:144 internal/app/application.go:147 +#: internal/app/application.go:145 internal/app/application.go:148 #: internal/app/clipboard.go:218 internal/app/clipboard.go:374 msgid "Clipboard import failed" msgstr "Importowanie schowka nie powiodło się" -#: internal/config/config.go:106 +#: internal/config/config.go:112 msgid "Clipboard sync" msgstr "Synchronizacja schowka" @@ -664,7 +672,7 @@ msgstr "Kopiuj alias do schowka" msgid "Corn" msgstr "Kukurydza" -#: internal/app/spellcheck_menu.go:175 +#: internal/app/spellcheck_menu.go:176 msgid "Could not check spelling: {0}" msgstr "Nie można sprawdzić pisowni: {0}" @@ -683,7 +691,7 @@ msgid "Could not open Emoji Menu: {0}" msgstr "Nie można otworzyć menu emoji: {0}" #: internal/app/fenrir_menu.go:40 internal/app/fenrir_menu.go:69 -#: internal/app/fenrir_menu.go:89 internal/app/runtime_settings.go:133 +#: internal/app/fenrir_menu.go:89 internal/app/runtime_settings.go:134 msgid "Could not open Fenrir Menu: {0}" msgstr "Nie można otworzyć menu Fenrira: {0}" @@ -696,12 +704,12 @@ msgstr "Nie można otworzyć menu sprawdzania pisowni: {0}" msgid "Could not restore application settings: {0}" msgstr "Nie można przywrócić ustawień aplikacji: {0}" -#: internal/app/spellcheck_menu.go:155 +#: internal/app/spellcheck_menu.go:156 msgid "Could not save exceptions: {0}" msgstr "Nie można zapisać wyjątków: {0}" #: internal/app/fenrir_menu.go:200 internal/app/fenrir_menu.go:206 -#: internal/app/runtime_settings.go:176 internal/app/runtime_settings.go:204 +#: internal/app/runtime_settings.go:177 internal/app/runtime_settings.go:205 msgid "Could not save settings: {0}" msgstr "Nie można zapisać ustawień: {0}" @@ -761,7 +769,7 @@ msgstr "kamień do curlingu" msgid "Curry Rice" msgstr "ryż curry" -#: internal/config/config.go:146 +#: internal/config/config.go:152 msgid "Cursor echo" msgstr "Echo kursora" @@ -777,7 +785,7 @@ msgstr "Sztylet" msgid "Dango" msgstr "dango" -#: internal/config/config.go:102 +#: internal/config/config.go:108 msgid "Date format" msgstr "Format daty" @@ -810,7 +818,7 @@ msgstr "Dania" msgid "Desktop computer" msgstr "Komputer stacjonarny" -#: internal/config/config.go:138 +#: internal/config/config.go:144 msgid "Devices" msgstr "Urządzenia" @@ -818,7 +826,7 @@ msgstr "Urządzenia" msgid "Devil" msgstr "Diabeł" -#: internal/app/spellcheck_menu.go:191 +#: internal/app/spellcheck_menu.go:192 msgid "Dictionary {0}. {1}. {2}" msgstr "Słownik {0}. {1}. {2}" @@ -866,7 +874,7 @@ msgstr "smok" msgid "Dragon Face" msgstr "głowa smoka" -#: internal/config/config.go:120 internal/config/config.go:127 +#: internal/config/config.go:126 internal/config/config.go:133 msgid "Driver" msgstr "Sterownik" @@ -902,7 +910,7 @@ msgstr "orzeł" msgid "Ear" msgstr "ucho" -#: internal/config/config.go:142 +#: internal/config/config.go:148 msgid "Echo on CapsLock" msgstr "Echo przy CapsLock" @@ -934,11 +942,11 @@ msgstr "Emoji" msgid "Emoji Menu" msgstr "Menu emoji" -#: internal/config/config.go:160 +#: internal/config/config.go:166 msgid "Emoticons" msgstr "Emotikony" -#: internal/config/config.go:107 +#: internal/config/config.go:113 msgid "Enable Persistent Clipboard" msgstr "Włącz trwały schowek" @@ -1009,7 +1017,7 @@ msgstr "twarz wystawiająca język" msgid "Face with symbols" msgstr "Twarz z symbolami" -#: internal/app/quick_settings.go:295 internal/app/runtime_settings.go:159 +#: internal/app/quick_settings.go:295 internal/app/runtime_settings.go:160 msgid "Failed to save settings." msgstr "Nie udało się zapisać ustawień." @@ -1321,7 +1329,7 @@ msgstr "but turystyczny" msgid "Hippopotamus" msgstr "hipopotam" -#: internal/config/config.go:109 +#: internal/config/config.go:115 msgid "History items" msgstr "Elementy historii" @@ -1361,7 +1369,7 @@ msgstr "Diabełek" msgid "Import to Clipboard" msgstr "Importuj do schowka" -#: internal/config/config.go:153 +#: internal/config/config.go:159 msgid "Indentation" msgstr "Wcięcia" @@ -1377,6 +1385,10 @@ msgstr "Informacje niedostępne" msgid "Input {0}" msgstr "Wejście {0}" +#: internal/config/config.go:60 +msgid "Internal UI" +msgstr "Interfejs wewnętrzny" + #: internal/applicationoverrides/ninjam/ninjam.go:155 msgid "Interval position {0} of {1}" msgstr "Pozycja interwału {0} z {1}" @@ -1409,7 +1421,7 @@ msgstr "dżinsy" msgid "Kangaroo" msgstr "kangur" -#: internal/config/config.go:53 internal/emoji/catalog.go:401 +#: internal/config/config.go:58 internal/emoji/catalog.go:401 msgid "Keyboard" msgstr "Klawiatura" @@ -1461,7 +1473,7 @@ msgstr "Ostatni komunikat" msgid "Laughing" msgstr "Śmiech" -#: internal/config/config.go:139 +#: internal/config/config.go:145 msgid "Layout" msgstr "Układ klawiatury" @@ -1618,7 +1630,7 @@ msgstr "mikrofon" msgid "Minibus" msgstr "minibus" -#: internal/config/config.go:159 +#: internal/config/config.go:165 msgid "Misspelling sound" msgstr "Dźwięk błędu pisowni" @@ -1774,7 +1786,7 @@ msgstr "Nie otrzymano wiadomości od Codex" msgid "No chat message received" msgstr "Nie odebrano wiadomości czatu" -#: internal/interaction/grid.go:43 internal/interaction/grid.go:79 +#: internal/interaction/grid.go:54 internal/interaction/grid.go:90 #: internal/interaction/list.go:46 msgid "No matches" msgstr "Brak dopasowań" @@ -1975,7 +1987,7 @@ msgstr "Ananas" msgid "Pink Heart" msgstr "różowe serce" -#: internal/config/config.go:133 +#: internal/config/config.go:139 msgid "Pitch" msgstr "Wysokość głosu" @@ -2035,7 +2047,7 @@ msgstr "Mikstura" msgid "Present the version of Fenrir currently in use." msgstr "Odczytaj używaną wersję Fenrira." -#: internal/config/config.go:52 +#: internal/config/config.go:57 msgid "Presentation" msgstr "Prezentacja" @@ -2064,11 +2076,11 @@ msgstr "Monitorowanie postępu włączone" msgid "PulseAudio" msgstr "PulseAudio" -#: internal/config/config.go:149 +#: internal/config/config.go:155 msgid "Punctuation level" msgstr "Poziom interpunkcji" -#: internal/config/config.go:148 +#: internal/config/config.go:154 msgid "Punctuation profile" msgstr "Profil interpunkcji" @@ -2100,7 +2112,7 @@ msgstr "wagon kolejowy" msgid "Rainbow" msgstr "Tęcza" -#: internal/config/config.go:150 +#: internal/config/config.go:156 msgid "Raise pitch for capital letters" msgstr "Podnieś wysokość głosu dla wielkich liter" @@ -2124,7 +2136,7 @@ msgstr "biały baran" msgid "Rat" msgstr "szczur" -#: internal/config/config.go:126 +#: internal/config/config.go:132 msgid "Rate" msgstr "Szybkość" @@ -2172,11 +2184,11 @@ msgstr "Czytaj obszar dynamiczny 8" msgid "Read live region 9" msgstr "Czytaj obszar dynamiczny 9" -#: internal/config/config.go:157 +#: internal/config/config.go:163 msgid "Read misspelled word" msgstr "Czytaj błędnie napisane słowo" -#: internal/config/config.go:54 +#: internal/config/config.go:59 msgid "Reading" msgstr "Czytanie" @@ -2212,11 +2224,11 @@ msgstr "Usuwa znaczniki z zaznaczonego tekstu" msgid "Rename channel" msgstr "Zmień nazwę kanału" -#: internal/config/config.go:161 +#: internal/config/config.go:167 msgid "Repeated symbols" msgstr "Powtarzane symbole" -#: internal/config/config.go:162 +#: internal/config/config.go:168 msgid "Repeated symbols minimum length" msgstr "Minimalna liczba powtarzanych symboli" @@ -2316,7 +2328,7 @@ msgstr "Twarz salutująca" msgid "Santa" msgstr "Święty Mikołaj" -#: internal/app/runtime_settings.go:155 internal/app/runtime_settings.go:172 +#: internal/app/runtime_settings.go:156 internal/app/runtime_settings.go:173 msgid "Save unavailable." msgstr "Zapisywanie niedostępne." @@ -2332,11 +2344,11 @@ msgstr "Delektowanie się jedzeniem" msgid "Saxophone" msgstr "saksofon" -#: internal/config/config.go:152 +#: internal/config/config.go:158 msgid "Say “cap” before capital letters" msgstr "Mów „duża” przed wielkimi literami" -#: internal/config/config.go:158 +#: internal/config/config.go:164 msgid "Say “misspelled”" msgstr "Mów „błędna pisownia”" @@ -2372,11 +2384,11 @@ msgstr "Źródło skryptu nie jest prawidłowym plikiem" msgid "Scroll" msgstr "Zwój" -#: internal/interaction/grid.go:71 +#: internal/interaction/grid.go:82 msgid "Search cleared" msgstr "Wyszukiwanie wyczyszczone" -#: internal/interaction/grid.go:73 +#: internal/interaction/grid.go:84 msgid "Search {0}" msgstr "Szukaj {0}" @@ -2388,7 +2400,7 @@ msgstr "sadzonka" msgid "Select a temporary application override" msgstr "Wybierz tymczasowe ustawienia aplikacji" -#: internal/config/config.go:121 +#: internal/config/config.go:127 msgid "Select sound theme" msgstr "Wybierz motyw dźwiękowy" @@ -2396,7 +2408,7 @@ msgstr "Wybierz motyw dźwiękowy" msgid "Selected channel or control" msgstr "Wybrany kanał lub element sterujący" -#: internal/config/config.go:128 +#: internal/config/config.go:134 msgid "Serial port" msgstr "Port szeregowy" @@ -2541,11 +2553,11 @@ msgstr "Piłka nożna" msgid "Socks" msgstr "skarpetki" -#: internal/config/config.go:95 +#: internal/config/config.go:101 msgid "Sound" msgstr "Dźwięk" -#: internal/config/config.go:118 +#: internal/config/config.go:124 msgid "Sound enabled" msgstr "Dźwięk włączony" @@ -2569,7 +2581,7 @@ msgstr "Hiszpania" msgid "Sparkles" msgstr "Iskierki" -#: internal/config/config.go:94 +#: internal/config/config.go:100 msgid "Speech" msgstr "Mowa" @@ -2577,15 +2589,15 @@ msgstr "Mowa" msgid "Speech Dispatcher" msgstr "Speech Dispatcher" -#: internal/config/config.go:130 +#: internal/config/config.go:136 msgid "Speech Dispatcher module" msgstr "Moduł Speech Dispatcher" -#: internal/config/config.go:125 +#: internal/config/config.go:131 msgid "Speech enabled" msgstr "Mowa włączona" -#: internal/config/config.go:131 +#: internal/config/config.go:137 msgid "Speech language" msgstr "Język mowy" @@ -2593,7 +2605,7 @@ msgstr "Język mowy" msgid "Speech restored" msgstr "Mowa przywrócona" -#: internal/config/config.go:132 +#: internal/config/config.go:138 msgid "Speech voice" msgstr "Głos" @@ -2601,11 +2613,11 @@ msgstr "Głos" msgid "Speedboat" msgstr "ścigacz wodny" -#: internal/app/spellcheck_menu.go:81 +#: internal/app/spellcheck_menu.go:82 msgid "Spell checking is unavailable" msgstr "Sprawdzanie pisowni jest niedostępne" -#: internal/app/spellcheck_menu.go:180 +#: internal/app/spellcheck_menu.go:181 msgid "Spell checking is unavailable: {0}" msgstr "Sprawdzanie pisowni jest niedostępne: {0}" @@ -2781,11 +2793,11 @@ msgstr "Kciuk w górę" msgid "Tiger Face" msgstr "głowa tygrysa" -#: internal/config/config.go:97 +#: internal/config/config.go:103 msgid "Time and date" msgstr "Czas i data" -#: internal/config/config.go:101 +#: internal/config/config.go:107 msgid "Time format" msgstr "Format czasu" @@ -2809,7 +2821,7 @@ msgstr "Góra." msgid "Tornado" msgstr "tornado" -#: internal/config/config.go:147 +#: internal/config/config.go:153 msgid "Tracking mode" msgstr "Tryb śledzenia" @@ -2954,7 +2966,7 @@ msgstr "Test głosu: Szybki brązowy lis przeskakuje nad leniwym psem." msgid "Volleyball" msgstr "Siatkówka" -#: internal/config/config.go:119 internal/config/config.go:134 +#: internal/config/config.go:125 internal/config/config.go:140 msgid "Volume" msgstr "Głośność" @@ -3074,7 +3086,7 @@ msgstr "Wilk" msgid "Word" msgstr "Słowo" -#: internal/config/config.go:141 +#: internal/config/config.go:147 msgid "Word echo" msgstr "Echo słów" @@ -3913,15 +3925,15 @@ msgstr "mowa i sygnały" msgid "speech enabled" msgstr "Mowa włączona." -#: internal/config/config.go:131 +#: internal/config/config.go:137 msgid "speech language" msgstr "język mowy" -#: internal/config/config.go:133 +#: internal/config/config.go:139 msgid "speech pitch" msgstr "wysokość głosu" -#: internal/config/config.go:126 +#: internal/config/config.go:132 msgid "speech rate" msgstr "szybkość mowy" @@ -3929,11 +3941,11 @@ msgstr "szybkość mowy" msgid "speech temporary disabled" msgstr "Mowa tymczasowo wyłączona." -#: internal/config/config.go:132 +#: internal/config/config.go:138 msgid "speech voice" msgstr "głos" -#: internal/config/config.go:134 +#: internal/config/config.go:140 msgid "speech volume" msgstr "głośność mowy" @@ -4040,7 +4052,7 @@ msgstr "Ustawienia aplikacji {0} zapisane." msgid "{0} button" msgstr "{0} przycisk" -#: internal/app/internal_ui.go:122 +#: internal/app/internal_ui.go:123 msgid "{0} closed" msgstr "{0} zamknięte" @@ -4056,7 +4068,7 @@ msgstr "{0} pole edycji {1}" msgid "{0} grid. {1}" msgstr "{0} siatka. {1}" -#: internal/app/spellcheck_menu.go:134 +#: internal/app/spellcheck_menu.go:135 msgid "{0} is already in dictionary" msgstr "{0} jest już w słowniku" @@ -4088,10 +4100,18 @@ msgstr "{0} {1}" msgid "{0}, {1}" msgstr "{0}, {1}" -#: internal/interaction/grid.go:39 +#: internal/interaction/grid.go:46 +msgid "{0}. row {1}, column {2}" +msgstr "{0}. wiersz {1}, kolumna {2}" + +#: internal/interaction/grid.go:44 msgid "{0}. row {1}, column {2}. {3} of {4}" msgstr "{0}. wiersz {1}, kolumna {2}. {3} z {4}" +#: internal/interaction/grid.go:48 +msgid "{0}. {1} of {2}" +msgstr "{0}. {1} z {2}" + #: internal/applicationoverrides/override.go:30 msgid "{0}: {1}" msgstr "{0}: {1}" diff --git a/internal/i18n/locale/pt/LC_MESSAGES/fenrir.po b/internal/i18n/locale/pt/LC_MESSAGES/fenrir.po index 2db2abe1..3e2bd659 100644 --- a/internal/i18n/locale/pt/LC_MESSAGES/fenrir.po +++ b/internal/i18n/locale/pt/LC_MESSAGES/fenrir.po @@ -66,7 +66,7 @@ msgstr "Atividade" msgid "Add" msgstr "Adicionar" -#: internal/app/emoji_menu.go:34 internal/app/spellcheck_menu.go:107 +#: internal/app/emoji_menu.go:35 internal/app/spellcheck_menu.go:108 msgid "Added {0} to clipboard" msgstr "{0} adicionado à área de transferência" @@ -114,6 +114,14 @@ msgstr "Âncora" msgid "Angry" msgstr "Zangado" +#: internal/config/config.go:51 +msgid "Announce grid row and column" +msgstr "Anunciar linha e coluna da grade" + +#: internal/config/config.go:52 +msgid "Announce item position" +msgstr "Anunciar posição do item" + #: internal/emoji/catalog.go:201 msgid "Ant" msgstr "Formiga" @@ -147,11 +155,11 @@ msgstr "Armadura" msgid "Astronaut" msgstr "Astronauta" -#: internal/config/config.go:155 +#: internal/config/config.go:161 msgid "Attribute format" msgstr "Formato dos atributos" -#: internal/config/config.go:154 +#: internal/config/config.go:160 msgid "Attributes" msgstr "Atributos" @@ -163,11 +171,11 @@ msgstr "Austrália" msgid "Auto Rickshaw" msgstr "Automóvel riquixá" -#: internal/config/config.go:145 +#: internal/config/config.go:151 msgid "Automatic reading" msgstr "Leitura automática" -#: internal/config/config.go:156 +#: internal/config/config.go:162 msgid "Automatic spell checking" msgstr "Verificação ortográfica automática" @@ -243,7 +251,7 @@ msgstr "Morcego" msgid "Battery" msgstr "Pilha" -#: internal/config/config.go:129 +#: internal/config/config.go:135 msgid "Baud rate" msgstr "Taxa de transmissão" @@ -263,7 +271,7 @@ msgstr "Castor" msgid "Bee" msgstr "Abelha" -#: internal/config/config.go:151 +#: internal/config/config.go:157 msgid "Beep for capital letters" msgstr "Sinal sonoro para letras maiúsculas" @@ -440,7 +448,7 @@ msgstr "Correntes" msgid "Channel name {0}" msgstr "Nome do canal {0}" -#: internal/config/config.go:140 +#: internal/config/config.go:146 msgid "Character echo" msgstr "Eco de caracteres" @@ -544,16 +552,16 @@ msgstr "Limpar região dinâmica 9" msgid "Clinking Glasses" msgstr "Taças brindando" -#: internal/config/config.go:57 +#: internal/config/config.go:63 msgid "Clipboard" msgstr "Área de transferência" -#: internal/app/application.go:144 internal/app/application.go:147 +#: internal/app/application.go:145 internal/app/application.go:148 #: internal/app/clipboard.go:218 internal/app/clipboard.go:374 msgid "Clipboard import failed" msgstr "Falha ao importar a área de transferência" -#: internal/config/config.go:106 +#: internal/config/config.go:112 msgid "Clipboard sync" msgstr "Sincronização da área de transferência" @@ -662,7 +670,7 @@ msgstr "Copiar alias para a área de transferência" msgid "Corn" msgstr "Milho" -#: internal/app/spellcheck_menu.go:175 +#: internal/app/spellcheck_menu.go:176 msgid "Could not check spelling: {0}" msgstr "Não foi possível verificar a ortografia: {0}" @@ -681,7 +689,7 @@ msgid "Could not open Emoji Menu: {0}" msgstr "Não foi possível abrir o menu de emojis: {0}" #: internal/app/fenrir_menu.go:40 internal/app/fenrir_menu.go:69 -#: internal/app/fenrir_menu.go:89 internal/app/runtime_settings.go:133 +#: internal/app/fenrir_menu.go:89 internal/app/runtime_settings.go:134 msgid "Could not open Fenrir Menu: {0}" msgstr "Não foi possível abrir o menu do Fenrir: {0}" @@ -694,12 +702,12 @@ msgstr "Não foi possível abrir o menu de ortografia: {0}" msgid "Could not restore application settings: {0}" msgstr "Não foi possível restaurar as configurações do aplicativo: {0}" -#: internal/app/spellcheck_menu.go:155 +#: internal/app/spellcheck_menu.go:156 msgid "Could not save exceptions: {0}" msgstr "Não foi possível salvar as exceções: {0}" #: internal/app/fenrir_menu.go:200 internal/app/fenrir_menu.go:206 -#: internal/app/runtime_settings.go:176 internal/app/runtime_settings.go:204 +#: internal/app/runtime_settings.go:177 internal/app/runtime_settings.go:205 msgid "Could not save settings: {0}" msgstr "Não foi possível salvar as configurações: {0}" @@ -759,7 +767,7 @@ msgstr "Pedra de curling" msgid "Curry Rice" msgstr "Arroz com curry" -#: internal/config/config.go:146 +#: internal/config/config.go:152 msgid "Cursor echo" msgstr "Eco do cursor" @@ -775,7 +783,7 @@ msgstr "Adaga" msgid "Dango" msgstr "Dango" -#: internal/config/config.go:102 +#: internal/config/config.go:108 msgid "Date format" msgstr "Formato da data" @@ -808,7 +816,7 @@ msgstr "Dinamarca" msgid "Desktop computer" msgstr "Computador de mesa" -#: internal/config/config.go:138 +#: internal/config/config.go:144 msgid "Devices" msgstr "Dispositivos" @@ -816,7 +824,7 @@ msgstr "Dispositivos" msgid "Devil" msgstr "Diabo" -#: internal/app/spellcheck_menu.go:191 +#: internal/app/spellcheck_menu.go:192 msgid "Dictionary {0}. {1}. {2}" msgstr "Dicionário {0}. {1}. {2}" @@ -864,7 +872,7 @@ msgstr "Dragão" msgid "Dragon Face" msgstr "Rosto de dragão" -#: internal/config/config.go:120 internal/config/config.go:127 +#: internal/config/config.go:126 internal/config/config.go:133 msgid "Driver" msgstr "Controlador" @@ -900,7 +908,7 @@ msgstr "Águia" msgid "Ear" msgstr "Orelha" -#: internal/config/config.go:142 +#: internal/config/config.go:148 msgid "Echo on CapsLock" msgstr "Eco com CapsLock" @@ -932,11 +940,11 @@ msgstr "Emoji" msgid "Emoji Menu" msgstr "Menu de emojis" -#: internal/config/config.go:160 +#: internal/config/config.go:166 msgid "Emoticons" msgstr "Emoticons" -#: internal/config/config.go:107 +#: internal/config/config.go:113 msgid "Enable Persistent Clipboard" msgstr "Ativar área de transferência persistente" @@ -1009,7 +1017,7 @@ msgstr "Rosto mostrando a língua" msgid "Face with symbols" msgstr "Rosto com símbolos" -#: internal/app/quick_settings.go:295 internal/app/runtime_settings.go:159 +#: internal/app/quick_settings.go:295 internal/app/runtime_settings.go:160 msgid "Failed to save settings." msgstr "Falha ao salvar as configurações." @@ -1321,7 +1329,7 @@ msgstr "Bota de trekking" msgid "Hippopotamus" msgstr "Hipopótamo" -#: internal/config/config.go:109 +#: internal/config/config.go:115 msgid "History items" msgstr "Itens do histórico" @@ -1361,7 +1369,7 @@ msgstr "Diabinho" msgid "Import to Clipboard" msgstr "Importar para a área de transferência" -#: internal/config/config.go:153 +#: internal/config/config.go:159 msgid "Indentation" msgstr "Recuo" @@ -1377,6 +1385,10 @@ msgstr "Informação indisponível" msgid "Input {0}" msgstr "Entrada {0}" +#: internal/config/config.go:60 +msgid "Internal UI" +msgstr "Interface interna" + #: internal/applicationoverrides/ninjam/ninjam.go:155 msgid "Interval position {0} of {1}" msgstr "Posição do intervalo {0} de {1}" @@ -1409,7 +1421,7 @@ msgstr "Jeans" msgid "Kangaroo" msgstr "Canguru" -#: internal/config/config.go:53 internal/emoji/catalog.go:401 +#: internal/config/config.go:58 internal/emoji/catalog.go:401 msgid "Keyboard" msgstr "Teclado" @@ -1461,7 +1473,7 @@ msgstr "Última mensagem" msgid "Laughing" msgstr "Rindo" -#: internal/config/config.go:139 +#: internal/config/config.go:145 msgid "Layout" msgstr "Layout do teclado" @@ -1618,7 +1630,7 @@ msgstr "Microfone" msgid "Minibus" msgstr "Van" -#: internal/config/config.go:159 +#: internal/config/config.go:165 msgid "Misspelling sound" msgstr "Som de erro ortográfico" @@ -1776,7 +1788,7 @@ msgstr "Nenhuma mensagem do Codex recebida" msgid "No chat message received" msgstr "Nenhuma mensagem de chat recebida" -#: internal/interaction/grid.go:43 internal/interaction/grid.go:79 +#: internal/interaction/grid.go:54 internal/interaction/grid.go:90 #: internal/interaction/list.go:46 msgid "No matches" msgstr "Nenhum resultado" @@ -1978,7 +1990,7 @@ msgstr "Abacaxi" msgid "Pink Heart" msgstr "Coração rosa" -#: internal/config/config.go:133 +#: internal/config/config.go:139 msgid "Pitch" msgstr "Tom" @@ -2038,7 +2050,7 @@ msgstr "Poção" msgid "Present the version of Fenrir currently in use." msgstr "Anunciar a versão do Fenrir em uso." -#: internal/config/config.go:52 +#: internal/config/config.go:57 msgid "Presentation" msgstr "Apresentação" @@ -2068,11 +2080,11 @@ msgstr "Monitoramento de progresso ativado" msgid "PulseAudio" msgstr "PulseAudio" -#: internal/config/config.go:149 +#: internal/config/config.go:155 msgid "Punctuation level" msgstr "Nível de pontuação" -#: internal/config/config.go:148 +#: internal/config/config.go:154 msgid "Punctuation profile" msgstr "Perfil de pontuação" @@ -2104,7 +2116,7 @@ msgstr "Vagão de trem" msgid "Rainbow" msgstr "Arco-íris" -#: internal/config/config.go:150 +#: internal/config/config.go:156 msgid "Raise pitch for capital letters" msgstr "Elevar o tom para letras maiúsculas" @@ -2128,7 +2140,7 @@ msgstr "Carneiro" msgid "Rat" msgstr "Rato" -#: internal/config/config.go:126 +#: internal/config/config.go:132 msgid "Rate" msgstr "Velocidade" @@ -2176,11 +2188,11 @@ msgstr "Ler região dinâmica 8" msgid "Read live region 9" msgstr "Ler região dinâmica 9" -#: internal/config/config.go:157 +#: internal/config/config.go:163 msgid "Read misspelled word" msgstr "Ler palavra com erro ortográfico" -#: internal/config/config.go:54 +#: internal/config/config.go:59 msgid "Reading" msgstr "Leitura" @@ -2216,11 +2228,11 @@ msgstr "Remove as marcas do texto selecionado" msgid "Rename channel" msgstr "Renomear canal" -#: internal/config/config.go:161 +#: internal/config/config.go:167 msgid "Repeated symbols" msgstr "Símbolos repetidos" -#: internal/config/config.go:162 +#: internal/config/config.go:168 msgid "Repeated symbols minimum length" msgstr "Quantidade mínima de símbolos repetidos" @@ -2320,7 +2332,7 @@ msgstr "Cara saudando militarmente" msgid "Santa" msgstr "Papai Noel" -#: internal/app/runtime_settings.go:155 internal/app/runtime_settings.go:172 +#: internal/app/runtime_settings.go:156 internal/app/runtime_settings.go:173 msgid "Save unavailable." msgstr "Salvamento indisponível." @@ -2336,11 +2348,11 @@ msgstr "Saboreando comida" msgid "Saxophone" msgstr "Saxofone" -#: internal/config/config.go:152 +#: internal/config/config.go:158 msgid "Say “cap” before capital letters" msgstr "Dizer “maiúscula” antes das letras maiúsculas" -#: internal/config/config.go:158 +#: internal/config/config.go:164 msgid "Say “misspelled”" msgstr "Dizer “erro ortográfico”" @@ -2376,11 +2388,11 @@ msgstr "A origem do script não é um arquivo válido" msgid "Scroll" msgstr "Pergaminho" -#: internal/interaction/grid.go:71 +#: internal/interaction/grid.go:82 msgid "Search cleared" msgstr "Pesquisa limpa" -#: internal/interaction/grid.go:73 +#: internal/interaction/grid.go:84 msgid "Search {0}" msgstr "Pesquisar {0}" @@ -2392,7 +2404,7 @@ msgstr "Muda de planta" msgid "Select a temporary application override" msgstr "Selecionar configurações temporárias de um aplicativo" -#: internal/config/config.go:121 +#: internal/config/config.go:127 msgid "Select sound theme" msgstr "Selecionar tema de som" @@ -2400,7 +2412,7 @@ msgstr "Selecionar tema de som" msgid "Selected channel or control" msgstr "Canal ou controle selecionado" -#: internal/config/config.go:128 +#: internal/config/config.go:134 msgid "Serial port" msgstr "Porta serial" @@ -2545,11 +2557,11 @@ msgstr "Bola de futebol" msgid "Socks" msgstr "Meias" -#: internal/config/config.go:95 +#: internal/config/config.go:101 msgid "Sound" msgstr "Som" -#: internal/config/config.go:118 +#: internal/config/config.go:124 msgid "Sound enabled" msgstr "Som ativado" @@ -2573,7 +2585,7 @@ msgstr "Espanha" msgid "Sparkles" msgstr "Brilhos" -#: internal/config/config.go:94 +#: internal/config/config.go:100 msgid "Speech" msgstr "Fala" @@ -2581,15 +2593,15 @@ msgstr "Fala" msgid "Speech Dispatcher" msgstr "Speech Dispatcher" -#: internal/config/config.go:130 +#: internal/config/config.go:136 msgid "Speech Dispatcher module" msgstr "Módulo do Speech Dispatcher" -#: internal/config/config.go:125 +#: internal/config/config.go:131 msgid "Speech enabled" msgstr "Fala ativada" -#: internal/config/config.go:131 +#: internal/config/config.go:137 msgid "Speech language" msgstr "Idioma da fala" @@ -2597,7 +2609,7 @@ msgstr "Idioma da fala" msgid "Speech restored" msgstr "Fala restaurada" -#: internal/config/config.go:132 +#: internal/config/config.go:138 msgid "Speech voice" msgstr "Voz de síntese" @@ -2605,11 +2617,11 @@ msgstr "Voz de síntese" msgid "Speedboat" msgstr "Lancha" -#: internal/app/spellcheck_menu.go:81 +#: internal/app/spellcheck_menu.go:82 msgid "Spell checking is unavailable" msgstr "A verificação ortográfica não está disponível" -#: internal/app/spellcheck_menu.go:180 +#: internal/app/spellcheck_menu.go:181 msgid "Spell checking is unavailable: {0}" msgstr "A verificação ortográfica não está disponível: {0}" @@ -2785,11 +2797,11 @@ msgstr "Polegar para cima" msgid "Tiger Face" msgstr "Rosto de tigre" -#: internal/config/config.go:97 +#: internal/config/config.go:103 msgid "Time and date" msgstr "Hora e data" -#: internal/config/config.go:101 +#: internal/config/config.go:107 msgid "Time format" msgstr "Formato da hora" @@ -2813,7 +2825,7 @@ msgstr "Topo" msgid "Tornado" msgstr "Tornado" -#: internal/config/config.go:147 +#: internal/config/config.go:153 msgid "Tracking mode" msgstr "Modo de acompanhamento" @@ -2959,7 +2971,7 @@ msgstr "" msgid "Volleyball" msgstr "Voleibol" -#: internal/config/config.go:119 internal/config/config.go:134 +#: internal/config/config.go:125 internal/config/config.go:140 msgid "Volume" msgstr "Volume" @@ -3079,7 +3091,7 @@ msgstr "Lobo" msgid "Word" msgstr "Palavra" -#: internal/config/config.go:141 +#: internal/config/config.go:147 msgid "Word echo" msgstr "Eco de palavras" @@ -3926,15 +3938,15 @@ msgstr "fala e sinais sonoros" msgid "speech enabled" msgstr "fala ativada" -#: internal/config/config.go:131 +#: internal/config/config.go:137 msgid "speech language" msgstr "idioma da fala" -#: internal/config/config.go:133 +#: internal/config/config.go:139 msgid "speech pitch" msgstr "tom da fala" -#: internal/config/config.go:126 +#: internal/config/config.go:132 msgid "speech rate" msgstr "velocidade da fala" @@ -3942,11 +3954,11 @@ msgstr "velocidade da fala" msgid "speech temporary disabled" msgstr "fala temporariamente desativada" -#: internal/config/config.go:132 +#: internal/config/config.go:138 msgid "speech voice" msgstr "voz de síntese" -#: internal/config/config.go:134 +#: internal/config/config.go:140 msgid "speech volume" msgstr "volume da fala" @@ -4053,7 +4065,7 @@ msgstr "Configurações do aplicativo {0} salvas." msgid "{0} button" msgstr "{0} botão" -#: internal/app/internal_ui.go:122 +#: internal/app/internal_ui.go:123 msgid "{0} closed" msgstr "{0} fechado" @@ -4069,7 +4081,7 @@ msgstr "{0} campo de texto {1}" msgid "{0} grid. {1}" msgstr "{0} grade. {1}" -#: internal/app/spellcheck_menu.go:134 +#: internal/app/spellcheck_menu.go:135 msgid "{0} is already in dictionary" msgstr "{0} já está no dicionário" @@ -4101,10 +4113,18 @@ msgstr "{0} {1}" msgid "{0}, {1}" msgstr "{0}, {1}" -#: internal/interaction/grid.go:39 +#: internal/interaction/grid.go:46 +msgid "{0}. row {1}, column {2}" +msgstr "{0}. linha {1}, coluna {2}" + +#: internal/interaction/grid.go:44 msgid "{0}. row {1}, column {2}. {3} of {4}" msgstr "{0}. linha {1}, coluna {2}. {3} de {4}" +#: internal/interaction/grid.go:48 +msgid "{0}. {1} of {2}" +msgstr "{0}. {1} de {2}" + #: internal/applicationoverrides/override.go:30 msgid "{0}: {1}" msgstr "{0}: {1}" diff --git a/internal/i18n/locale/ru/LC_MESSAGES/fenrir.po b/internal/i18n/locale/ru/LC_MESSAGES/fenrir.po index 8d5717ad..f4372e0c 100644 --- a/internal/i18n/locale/ru/LC_MESSAGES/fenrir.po +++ b/internal/i18n/locale/ru/LC_MESSAGES/fenrir.po @@ -65,7 +65,7 @@ msgstr "Активность" msgid "Add" msgstr "Добавить" -#: internal/app/emoji_menu.go:34 internal/app/spellcheck_menu.go:107 +#: internal/app/emoji_menu.go:35 internal/app/spellcheck_menu.go:108 msgid "Added {0} to clipboard" msgstr "{0} добавлено в буфер обмена" @@ -113,6 +113,14 @@ msgstr "Якорь" msgid "Angry" msgstr "Злость" +#: internal/config/config.go:51 +msgid "Announce grid row and column" +msgstr "Объявлять строку и столбец сетки" + +#: internal/config/config.go:52 +msgid "Announce item position" +msgstr "Объявлять позицию элемента" + #: internal/emoji/catalog.go:201 msgid "Ant" msgstr "Муравей" @@ -146,11 +154,11 @@ msgstr "Броня" msgid "Astronaut" msgstr "Астронавт" -#: internal/config/config.go:155 +#: internal/config/config.go:161 msgid "Attribute format" msgstr "Формат атрибутов" -#: internal/config/config.go:154 +#: internal/config/config.go:160 msgid "Attributes" msgstr "Атрибуты" @@ -162,11 +170,11 @@ msgstr "Австралия" msgid "Auto Rickshaw" msgstr "Авторикша" -#: internal/config/config.go:145 +#: internal/config/config.go:151 msgid "Automatic reading" msgstr "Автоматическое чтение" -#: internal/config/config.go:156 +#: internal/config/config.go:162 msgid "Automatic spell checking" msgstr "Автоматическая проверка правописания" @@ -242,7 +250,7 @@ msgstr "Летучая мышь" msgid "Battery" msgstr "Батарейка" -#: internal/config/config.go:129 +#: internal/config/config.go:135 msgid "Baud rate" msgstr "Скорость передачи" @@ -262,7 +270,7 @@ msgstr "Бобр" msgid "Bee" msgstr "Пчела" -#: internal/config/config.go:151 +#: internal/config/config.go:157 msgid "Beep for capital letters" msgstr "Звуковой сигнал для заглавных букв" @@ -439,7 +447,7 @@ msgstr "Цепи" msgid "Channel name {0}" msgstr "Название канала {0}" -#: internal/config/config.go:140 +#: internal/config/config.go:146 msgid "Character echo" msgstr "Эхо символов" @@ -543,16 +551,16 @@ msgstr "Очистить динамическую область 9" msgid "Clinking Glasses" msgstr "Чокающиеся бокалы" -#: internal/config/config.go:57 +#: internal/config/config.go:63 msgid "Clipboard" msgstr "Буфер обмена" -#: internal/app/application.go:144 internal/app/application.go:147 +#: internal/app/application.go:145 internal/app/application.go:148 #: internal/app/clipboard.go:218 internal/app/clipboard.go:374 msgid "Clipboard import failed" msgstr "Не удалось импортировать буфер обмена" -#: internal/config/config.go:106 +#: internal/config/config.go:112 msgid "Clipboard sync" msgstr "Синхронизация буфера обмена" @@ -661,7 +669,7 @@ msgstr "Копировать псевдоним в буфер обмена" msgid "Corn" msgstr "Кукуруза" -#: internal/app/spellcheck_menu.go:175 +#: internal/app/spellcheck_menu.go:176 msgid "Could not check spelling: {0}" msgstr "Не удалось проверить правописание: {0}" @@ -680,7 +688,7 @@ msgid "Could not open Emoji Menu: {0}" msgstr "Не удалось открыть меню эмодзи: {0}" #: internal/app/fenrir_menu.go:40 internal/app/fenrir_menu.go:69 -#: internal/app/fenrir_menu.go:89 internal/app/runtime_settings.go:133 +#: internal/app/fenrir_menu.go:89 internal/app/runtime_settings.go:134 msgid "Could not open Fenrir Menu: {0}" msgstr "Не удалось открыть меню Fenrir: {0}" @@ -693,12 +701,12 @@ msgstr "Не удалось открыть меню проверки право msgid "Could not restore application settings: {0}" msgstr "Не удалось восстановить настройки приложения: {0}" -#: internal/app/spellcheck_menu.go:155 +#: internal/app/spellcheck_menu.go:156 msgid "Could not save exceptions: {0}" msgstr "Не удалось сохранить исключения: {0}" #: internal/app/fenrir_menu.go:200 internal/app/fenrir_menu.go:206 -#: internal/app/runtime_settings.go:176 internal/app/runtime_settings.go:204 +#: internal/app/runtime_settings.go:177 internal/app/runtime_settings.go:205 msgid "Could not save settings: {0}" msgstr "Не удалось сохранить настройки: {0}" @@ -758,7 +766,7 @@ msgstr "Керлинг" msgid "Curry Rice" msgstr "Рис с карри" -#: internal/config/config.go:146 +#: internal/config/config.go:152 msgid "Cursor echo" msgstr "Озвучивание курсора" @@ -774,7 +782,7 @@ msgstr "Кинжал" msgid "Dango" msgstr "Данго" -#: internal/config/config.go:102 +#: internal/config/config.go:108 msgid "Date format" msgstr "Формат даты" @@ -807,7 +815,7 @@ msgstr "Дания" msgid "Desktop computer" msgstr "Настольный компьютер" -#: internal/config/config.go:138 +#: internal/config/config.go:144 msgid "Devices" msgstr "Устройства" @@ -815,7 +823,7 @@ msgstr "Устройства" msgid "Devil" msgstr "Дьявол" -#: internal/app/spellcheck_menu.go:191 +#: internal/app/spellcheck_menu.go:192 msgid "Dictionary {0}. {1}. {2}" msgstr "Словарь {0}. {1}. {2}" @@ -863,7 +871,7 @@ msgstr "Дракон" msgid "Dragon Face" msgstr "Голова дракона" -#: internal/config/config.go:120 internal/config/config.go:127 +#: internal/config/config.go:126 internal/config/config.go:133 msgid "Driver" msgstr "Драйвер" @@ -899,7 +907,7 @@ msgstr "Орел" msgid "Ear" msgstr "Ухо" -#: internal/config/config.go:142 +#: internal/config/config.go:148 msgid "Echo on CapsLock" msgstr "Эхо при CapsLock" @@ -931,11 +939,11 @@ msgstr "Эмодзи" msgid "Emoji Menu" msgstr "Меню эмодзи" -#: internal/config/config.go:160 +#: internal/config/config.go:166 msgid "Emoticons" msgstr "Текстовые смайлики" -#: internal/config/config.go:107 +#: internal/config/config.go:113 msgid "Enable Persistent Clipboard" msgstr "Включить постоянный буфер обмена" @@ -1005,7 +1013,7 @@ msgstr "Показывает язык" msgid "Face with symbols" msgstr "Лицо с символами" -#: internal/app/quick_settings.go:295 internal/app/runtime_settings.go:159 +#: internal/app/quick_settings.go:295 internal/app/runtime_settings.go:160 msgid "Failed to save settings." msgstr "Не удалось сохранить настройки." @@ -1317,7 +1325,7 @@ msgstr "Треккинговый ботинок" msgid "Hippopotamus" msgstr "Гиппопотам" -#: internal/config/config.go:109 +#: internal/config/config.go:115 msgid "History items" msgstr "Элементы истории" @@ -1357,7 +1365,7 @@ msgstr "Бесёнок" msgid "Import to Clipboard" msgstr "Импортировать в буфер обмена" -#: internal/config/config.go:153 +#: internal/config/config.go:159 msgid "Indentation" msgstr "Отступы" @@ -1373,6 +1381,10 @@ msgstr "Информация недоступна" msgid "Input {0}" msgstr "Вход {0}" +#: internal/config/config.go:60 +msgid "Internal UI" +msgstr "Внутренний интерфейс" + #: internal/applicationoverrides/ninjam/ninjam.go:155 msgid "Interval position {0} of {1}" msgstr "Позиция интервала {0} из {1}" @@ -1405,7 +1417,7 @@ msgstr "Джинсы" msgid "Kangaroo" msgstr "Кенгуру" -#: internal/config/config.go:53 internal/emoji/catalog.go:401 +#: internal/config/config.go:58 internal/emoji/catalog.go:401 msgid "Keyboard" msgstr "Клавиатура" @@ -1457,7 +1469,7 @@ msgstr "Последнее сообщение" msgid "Laughing" msgstr "Смех" -#: internal/config/config.go:139 +#: internal/config/config.go:145 msgid "Layout" msgstr "Раскладка клавиатуры" @@ -1614,7 +1626,7 @@ msgstr "Микрофон" msgid "Minibus" msgstr "Микроавтобус" -#: internal/config/config.go:159 +#: internal/config/config.go:165 msgid "Misspelling sound" msgstr "Звук ошибки правописания" @@ -1769,7 +1781,7 @@ msgstr "Сообщений от Codex не получено" msgid "No chat message received" msgstr "Сообщения чата не получены" -#: internal/interaction/grid.go:43 internal/interaction/grid.go:79 +#: internal/interaction/grid.go:54 internal/interaction/grid.go:90 #: internal/interaction/list.go:46 msgid "No matches" msgstr "Совпадений нет" @@ -1970,7 +1982,7 @@ msgstr "Ананас" msgid "Pink Heart" msgstr "Розовое сердце" -#: internal/config/config.go:133 +#: internal/config/config.go:139 msgid "Pitch" msgstr "Высота голоса" @@ -2030,7 +2042,7 @@ msgstr "Зелье" msgid "Present the version of Fenrir currently in use." msgstr "Назвать используемую версию Fenrir." -#: internal/config/config.go:52 +#: internal/config/config.go:57 msgid "Presentation" msgstr "Представление" @@ -2060,11 +2072,11 @@ msgstr "Отслеживание хода выполнения включено" msgid "PulseAudio" msgstr "PulseAudio" -#: internal/config/config.go:149 +#: internal/config/config.go:155 msgid "Punctuation level" msgstr "Уровень пунктуации" -#: internal/config/config.go:148 +#: internal/config/config.go:154 msgid "Punctuation profile" msgstr "Профиль пунктуации" @@ -2096,7 +2108,7 @@ msgstr "Вагон" msgid "Rainbow" msgstr "Радуга" -#: internal/config/config.go:150 +#: internal/config/config.go:156 msgid "Raise pitch for capital letters" msgstr "Повышать тон для заглавных букв" @@ -2120,7 +2132,7 @@ msgstr "Баран" msgid "Rat" msgstr "Крыса" -#: internal/config/config.go:126 +#: internal/config/config.go:132 msgid "Rate" msgstr "Скорость" @@ -2168,11 +2180,11 @@ msgstr "Прочитать динамическую область 8" msgid "Read live region 9" msgstr "Прочитать динамическую область 9" -#: internal/config/config.go:157 +#: internal/config/config.go:163 msgid "Read misspelled word" msgstr "Читать слово с ошибкой" -#: internal/config/config.go:54 +#: internal/config/config.go:59 msgid "Reading" msgstr "Чтение" @@ -2208,11 +2220,11 @@ msgstr "Удалить метки из выбранного текста." msgid "Rename channel" msgstr "Переименовать канал" -#: internal/config/config.go:161 +#: internal/config/config.go:167 msgid "Repeated symbols" msgstr "Повторяющиеся символы" -#: internal/config/config.go:162 +#: internal/config/config.go:168 msgid "Repeated symbols minimum length" msgstr "Минимальное число повторяющихся символов" @@ -2312,7 +2324,7 @@ msgstr "Отдающее честь лицо" msgid "Santa" msgstr "Дед Мороз" -#: internal/app/runtime_settings.go:155 internal/app/runtime_settings.go:172 +#: internal/app/runtime_settings.go:156 internal/app/runtime_settings.go:173 msgid "Save unavailable." msgstr "Сохранение недоступно." @@ -2328,11 +2340,11 @@ msgstr "Наслаждение едой" msgid "Saxophone" msgstr "Саксофон" -#: internal/config/config.go:152 +#: internal/config/config.go:158 msgid "Say “cap” before capital letters" msgstr "Говорить «большая» перед заглавными буквами" -#: internal/config/config.go:158 +#: internal/config/config.go:164 msgid "Say “misspelled”" msgstr "Говорить «ошибка»" @@ -2368,11 +2380,11 @@ msgstr "Исходник скрипта неправильный файл" msgid "Scroll" msgstr "Свиток" -#: internal/interaction/grid.go:71 +#: internal/interaction/grid.go:82 msgid "Search cleared" msgstr "Поиск очищен" -#: internal/interaction/grid.go:73 +#: internal/interaction/grid.go:84 msgid "Search {0}" msgstr "Поиск {0}" @@ -2384,7 +2396,7 @@ msgstr "Росток" msgid "Select a temporary application override" msgstr "Выбрать временные настройки приложения" -#: internal/config/config.go:121 +#: internal/config/config.go:127 msgid "Select sound theme" msgstr "Выбрать звуковую тему" @@ -2392,7 +2404,7 @@ msgstr "Выбрать звуковую тему" msgid "Selected channel or control" msgstr "Выбранный канал или элемент управления" -#: internal/config/config.go:128 +#: internal/config/config.go:134 msgid "Serial port" msgstr "Последовательный порт" @@ -2537,11 +2549,11 @@ msgstr "Футбольный мяч" msgid "Socks" msgstr "Носки" -#: internal/config/config.go:95 +#: internal/config/config.go:101 msgid "Sound" msgstr "Звук" -#: internal/config/config.go:118 +#: internal/config/config.go:124 msgid "Sound enabled" msgstr "Звук включён" @@ -2565,7 +2577,7 @@ msgstr "Испания" msgid "Sparkles" msgstr "Искры" -#: internal/config/config.go:94 +#: internal/config/config.go:100 msgid "Speech" msgstr "Речь" @@ -2573,15 +2585,15 @@ msgstr "Речь" msgid "Speech Dispatcher" msgstr "Speech Dispatcher" -#: internal/config/config.go:130 +#: internal/config/config.go:136 msgid "Speech Dispatcher module" msgstr "Модуль Speech Dispatcher" -#: internal/config/config.go:125 +#: internal/config/config.go:131 msgid "Speech enabled" msgstr "Речь включена" -#: internal/config/config.go:131 +#: internal/config/config.go:137 msgid "Speech language" msgstr "Язык речи" @@ -2589,7 +2601,7 @@ msgstr "Язык речи" msgid "Speech restored" msgstr "Речь восстановлена" -#: internal/config/config.go:132 +#: internal/config/config.go:138 msgid "Speech voice" msgstr "Голос синтезатора" @@ -2597,11 +2609,11 @@ msgstr "Голос синтезатора" msgid "Speedboat" msgstr "Катер" -#: internal/app/spellcheck_menu.go:81 +#: internal/app/spellcheck_menu.go:82 msgid "Spell checking is unavailable" msgstr "Проверка правописания недоступна" -#: internal/app/spellcheck_menu.go:180 +#: internal/app/spellcheck_menu.go:181 msgid "Spell checking is unavailable: {0}" msgstr "Проверка правописания недоступна: {0}" @@ -2777,11 +2789,11 @@ msgstr "Большой палец вверх" msgid "Tiger Face" msgstr "Морда тигра" -#: internal/config/config.go:97 +#: internal/config/config.go:103 msgid "Time and date" msgstr "Время и дата" -#: internal/config/config.go:101 +#: internal/config/config.go:107 msgid "Time format" msgstr "Формат времени" @@ -2805,7 +2817,7 @@ msgstr "Начало" msgid "Tornado" msgstr "Торнадо" -#: internal/config/config.go:147 +#: internal/config/config.go:153 msgid "Tracking mode" msgstr "Режим отслеживания" @@ -2951,7 +2963,7 @@ msgstr "" msgid "Volleyball" msgstr "Волейбол" -#: internal/config/config.go:119 internal/config/config.go:134 +#: internal/config/config.go:125 internal/config/config.go:140 msgid "Volume" msgstr "Громкость" @@ -3071,7 +3083,7 @@ msgstr "Волк" msgid "Word" msgstr "Слово" -#: internal/config/config.go:141 +#: internal/config/config.go:147 msgid "Word echo" msgstr "Эхо слов" @@ -3910,15 +3922,15 @@ msgstr "речь и звуковые сигналы" msgid "speech enabled" msgstr "Речь включена" -#: internal/config/config.go:131 +#: internal/config/config.go:137 msgid "speech language" msgstr "язык речи" -#: internal/config/config.go:133 +#: internal/config/config.go:139 msgid "speech pitch" msgstr "высота голоса" -#: internal/config/config.go:126 +#: internal/config/config.go:132 msgid "speech rate" msgstr "скорость речи" @@ -3926,11 +3938,11 @@ msgstr "скорость речи" msgid "speech temporary disabled" msgstr "Речь временно отключена" -#: internal/config/config.go:132 +#: internal/config/config.go:138 msgid "speech voice" msgstr "голос синтезатора" -#: internal/config/config.go:134 +#: internal/config/config.go:140 msgid "speech volume" msgstr "громкость речи" @@ -4037,7 +4049,7 @@ msgstr "Настройки приложения {0} сохранены." msgid "{0} button" msgstr "{0}, кнопка" -#: internal/app/internal_ui.go:122 +#: internal/app/internal_ui.go:123 msgid "{0} closed" msgstr "{0} закрыто" @@ -4053,7 +4065,7 @@ msgstr "{0}, поле ввода {1}" msgid "{0} grid. {1}" msgstr "{0}, сетка. {1}" -#: internal/app/spellcheck_menu.go:134 +#: internal/app/spellcheck_menu.go:135 msgid "{0} is already in dictionary" msgstr "{0} уже находится в словаре" @@ -4085,10 +4097,18 @@ msgstr "{0} {1}" msgid "{0}, {1}" msgstr "{0}, {1}" -#: internal/interaction/grid.go:39 +#: internal/interaction/grid.go:46 +msgid "{0}. row {1}, column {2}" +msgstr "{0}. строка {1}, столбец {2}" + +#: internal/interaction/grid.go:44 msgid "{0}. row {1}, column {2}. {3} of {4}" msgstr "{0}. строка {1}, столбец {2}. {3} из {4}" +#: internal/interaction/grid.go:48 +msgid "{0}. {1} of {2}" +msgstr "{0}. {1} из {2}" + #: internal/applicationoverrides/override.go:30 msgid "{0}: {1}" msgstr "{0}: {1}" diff --git a/internal/interaction/grid.go b/internal/interaction/grid.go index 8a1aebde..d6b394e0 100644 --- a/internal/interaction/grid.go +++ b/internal/interaction/grid.go @@ -32,12 +32,23 @@ func (c *Control) filter_grid() { } } -func describe_grid(c Control) string { +func (s *Session) describe_grid(c Control) string { matches := c.grid_matches() for position, index := range matches { if index == c.Selected { - return i18n.Format("{0}. row {1}, column {2}. {3} of {4}", - choice_label(c.Choices[index]), strconv.Itoa(position/c.Columns+1), strconv.Itoa(position%c.Columns+1), strconv.Itoa(position+1), strconv.Itoa(len(matches))) + label := choice_label(c.Choices[index]) + row, column := strconv.Itoa(position/c.Columns+1), strconv.Itoa(position%c.Columns+1) + item, total := strconv.Itoa(position+1), strconv.Itoa(len(matches)) + switch { + case s.announceGridCoordinates && s.announceItemPosition: + return i18n.Format("{0}. row {1}, column {2}. {3} of {4}", label, row, column, item, total) + case s.announceGridCoordinates: + return i18n.Format("{0}. row {1}, column {2}", label, row, column) + case s.announceItemPosition: + return i18n.Format("{0}. {1} of {2}", label, item, total) + default: + return label + } } } return i18n.T("No matches") @@ -72,7 +83,7 @@ func (s *Session) grid(c *Control, key Key) Result { if c.Text != "" { query = i18n.Format("Search {0}", c.Text) } - return Result{Speech: query + ". " + describe_grid(*c)} + return Result{Speech: query + ". " + s.describe_grid(*c)} } matches := c.grid_matches() if len(matches) == 0 { @@ -113,5 +124,5 @@ func (s *Session) grid(c *Control, key Key) Result { return Result{} } c.Selected = matches[position] - return Result{Speech: describe_grid(*c)} + return Result{Speech: s.describe_grid(*c)} } diff --git a/internal/interaction/grid_test.go b/internal/interaction/grid_test.go index 12dbd3e7..6750ed24 100644 --- a/internal/interaction/grid_test.go +++ b/internal/interaction/grid_test.go @@ -91,3 +91,38 @@ func TestGridValidation(t *testing.T) { t.Fatal("duplicate values accepted") } } + +func TestGridSpeechDetailOptions(t *testing.T) { + for _, trial := range []struct { + coordinates, position bool + want, filtered string + }{ + {true, true, "Bat. row 1, column 2. 2 of 7", "Japan. row 1, column 2. 2 of 2"}, + {true, false, "Bat. row 1, column 2", "Japan. row 1, column 2"}, + {false, true, "Bat. 2 of 7", "Japan. 2 of 2"}, + {false, false, "Bat", "Japan"}, + } { + session, err := New_session(grid_form()) + if err != nil { + t.Fatal(err) + } + session.Configure_grid(trial.coordinates, trial.position) + session.Handle(Key{Name: "tab"}) + if got := session.Handle(Key{Name: "right"}).Speech; got != trial.want { + t.Fatalf("%+v: %q", trial, got) + } + if got := session.Describe(); got != "Items grid. "+trial.want { + t.Fatal(got) + } + session.Handle(Key{Text: "j"}) + if got := session.Handle(Key{Name: "right"}).Speech; got != trial.filtered { + t.Fatal(got) + } + if got := session.Handle(Key{Name: "enter"}).Action; got != "choose" { + t.Fatal(got) + } + if got := session.Handle(Key{Text: "zzz"}).Speech; got != "Search jzzz. No matches" { + t.Fatal(got) + } + } +} diff --git a/internal/interaction/presentation.go b/internal/interaction/presentation.go index 482a75d0..a35d8b87 100644 --- a/internal/interaction/presentation.go +++ b/internal/interaction/presentation.go @@ -46,7 +46,7 @@ func (s *Session) Describe() string { case List: return label + " " + control.Items[control.Selected] case Grid: - return i18n.Format("{0} grid. {1}", label, describe_grid(control)) + return i18n.Format("{0} grid. {1}", label, s.describe_grid(control)) case ComboBox: return i18n.Format("{0} combo box {1}", label, describe_choice(control)) case Button: diff --git a/internal/interaction/session.go b/internal/interaction/session.go index 1b5e62f2..ab38becf 100644 --- a/internal/interaction/session.go +++ b/internal/interaction/session.go @@ -25,9 +25,10 @@ import ( ) type Session struct { - form Form - tab, focus, cursor int // focus -1 is the tab strip. - selectAll bool + form Form + tab, focus, cursor int // focus -1 is the tab strip. + announceGridCoordinates, announceItemPosition bool + selectAll bool } func New_session(form Form) (*Session, error) { @@ -90,7 +91,12 @@ func New_session(form Form) (*Session, error) { } } } - return &Session{form: form, focus: -1}, nil + return &Session{form: form, focus: -1, announceGridCoordinates: true, announceItemPosition: true}, nil +} + +// Configure_grid controls spoken detail without changing grid navigation or filtering. +func (s *Session) Configure_grid(coordinates, position bool) { + s.announceGridCoordinates, s.announceItemPosition = coordinates, position } // Values returns a copy suitable for validation or submission by the host. diff --git a/internal/preferences/settings_test.go b/internal/preferences/settings_test.go index e4f1062c..6d107a0f 100644 --- a/internal/preferences/settings_test.go +++ b/internal/preferences/settings_test.go @@ -38,7 +38,7 @@ func TestSettingsFormCoversSchemaAndReturnsIsolatedDraft(t *testing.T) { t.Fatal(got) } values := session.Values() - if len(values) != 51 { + if len(values) != 55 { t.Fatal("missing settings or buttons", len(values)) } unchanged, err := Settings(session, base) @@ -288,3 +288,36 @@ func TestSoundChoicesPreserveUnavailableThemeAndFileOnlyDevice(t *testing.T) { t.Fatal(draft.Presentation.Sound, err) } } + +func TestInternalUIOptionsAndApplicationIsolation(t *testing.T) { + base := config.Defaults() + session, err := New_session(base, []string{"internal_ui"}) + if err != nil { + t.Fatal(err) + } + if session.Describe() != "Internal UI tab" { + t.Fatal(session.Describe()) + } + for _, label := range []string{"Announce grid row and column", "Announce item position"} { + if got := session.Handle(interaction.Key{Name: "tab"}).Speech; got != label+" checked" { + t.Fatal(got) + } + session.Handle(interaction.Key{Name: "space"}) + draft, err := Settings(session, base) + if err != nil { + t.Fatal(err) + } + if draft.InternalUI.AnnounceGridCoordinates || draft.InternalUI.AnnounceItemPosition != (label == "Announce grid row and column") { + t.Fatal("options did not save independently", draft.InternalUI) + } + } + application, err := New_application_session(base, nil, "Application settings") + if err != nil { + t.Fatal(err) + } + for path := range application.Values() { + if strings.HasPrefix(path, "internal_ui.") { + t.Fatal("global preference in application form", path) + } + } +}