Skip to content

Merge master to beta#16422

Merged
seanbudd merged 153 commits into
betafrom
master
Apr 18, 2024
Merged

Merge master to beta#16422
seanbudd merged 153 commits into
betafrom
master

Conversation

@seanbudd

Copy link
Copy Markdown
Member

No description provided.

seanbudd and others added 30 commits December 13, 2023 11:21
Fixes #15822.

Summary of the issue:
With "Handle keys from other applications" enabled, NVDA interferes with certain software which intercepts and re-transmits keyboard commands such as Nudi6.1. For example, this makes it impossible to use backspace while this software is running.

Description of user facing changes
Backspace now works correctly when using Nudi6.1 with NVDA's "Handle keys from other applications" setting enabled.

Description of development approach
Before #14708, we delayed slightly when sending keys, which would mean that any keys sent by an app which captured a key sent by NVDA would be ignored during that period. After #14708, we only ignore any keys received while NVDA is sending keys, but that doesn't include any keys captured and sent afterward by, for example, Nudi6.1. This could result in a loop where NVDA kept receiving the key it sent (re-transmitted by the other app) and sending it again.

To fix this, we now explicitly wait for the key sent by NVDA (e.g. backspace) to be received by the keyboard hook before we stop ignoring keys and thus return from KeyboardInputGesture.send(). This means that if another application intercepts this key and re-transmits it, we will wait for that re-transmission and ignore it. We use a kernel event so that the notification from the keyboard hook can be handled as quickly as possible without being dependent on the system timer resolution.

There is a chance that a key will be intercepted and never re-sent. To deal with this, we wait for a maximum timeout of 10 ms. This means that in the best case scenario, nothing intercepts a key sent by NVDA and we return almost immediately. In the worst case scenario, we wait between 10 and 30 ms (depending on the system timer resolution), which is no worse than the situation before #14708.
Fixes #8059

Summary of the issue:
This issue seems to be because in the core pump, mouse movement events are being handled, but when executing the mouse movement event, there is no check for whether it is in sleep mode. And the function to play audio coordinates is executed accordingly.

Description of user facing changes
The audio coordinates are no longer played when the mouse moves over an application in sleep mode.

Description of development approach
Simultaneously determine whether to report audio coordinates and whether to be in sleep mode.
…tween add-ons (#15967)

Fixes regression from PR #14481.
Discovered due to intermittent failures occurring when installing add-ons, when working on #15852 and #15937

Summary of the issue:
When installing and uninstalling add-ons bundling install tasks, installation either fails or behaves unexpectedly in the following scenarios:

1:
User installs an add-on
User removes it and restarts NVDA
User tries to install the same add-on
In this scenario when installing the install tasks included in the version of add-on which was just removed are used, which is unexpected. Note that this worked well before #14481, not sure why pkgutil.ImpImporter behaves better (I haven't investigated, as it is deprecated).

2:
User installs an add-on, which imports its sub module in install tasks using loadModule and also imports a sub module in the same way inside global plugin / app module during normal operation
User upgrades the add-on to a different version
In this scenario after upgrade the add-on module from the uninstalled version is used during normal operation of NVDA.

3:
User installs an add-on which imports one of its modules in install tasks by manipulating sys.path, for real life examples see Instant Translate and Mouse Wheel Scrolling
User uninstalls this add-on, restarts NVDA, and tries to install the new version
In this scenario installation fails since the imported module from the old version is used. A slight variation of this scenario is to try to install both Instant Translate and Mouse Wheel Scrolling the add-on installed last would fail to be installed, since they both bundle module named donate_dialog but with different functions

Description of user facing changes
Add-ons are successfully installed in all scenarios described above.

Description of development approach
All these problems exist because when importing modules in Python if module with the same name exists in sys.modules it is just used without importing it again. To ensure modules are always re-imported when needed, the following has been done:

When importing modules we no longer use add-on name to create a name space package in which the module would be imported, the last segment of the add-on path is used instead. This ensures that the package for add-on which is installed would just be its name, and for add-on which is pending install it would end with the pending install suffix. This fixes issue 1.
loadModule memorizes all modules it imported for a given add-on. After installation / removal is done they're removed from sys.modules. This fixes issue 2.
To remove cached modules imported with the standard import command, we store names of all modules imported before installation / removal, perform it, create list of newly imported modules and remove all newly added modules which belong to the add-on from the cache. This fixes issue 3.
By performing pip freeze in the NVDA virtual environment, it appears we no longer use or depend on the library pywin32 - #9639

Pywin32 also has changed licence to the Python Software Foundation licence which is also included in our license file.

Therefore, we should remove this custom license from our licence.
Co-authored-by: Łukasz Golonka <lukasz.golonka@mailbox.org>
Co-authored-by: Łukasz Golonka <lukasz.golonka@mailbox.org>
Co-authored-by: Sean Budd <sean@nvaccess.org>
…d above 10.0.22000 is seen when instantiating (#15993)

Closes #15992

Summary of the issue:
When an unknown build above 10.0.22000 is instantiated, winVersion.WinVersion says "Windows 10 unknown".

Description of user facing changes
None

Description of development approach
Using structural pattern matching, say "Windows 11 unknown" if major == 10, minor == 0, build >= 22000 and the build is not recorded in builds to release names private map. This PR also includes modernized type hints and a unit test for this issue.
Remove and ignore  English nvda.po as it is not needed, yet is provid…
See discussion in #14986

Summary of the issue:
Switching tabs in add-on store with ctrl+tab announces "tab control panel", and moves the focus in a strange position.

Description of user facing changes
Users will be positioned on tab list, over the new current tab, that will be read by NVDA.

Description of development approach
Simply SetFocus on addonListTabs (wx.Notebook) if it's not already here, at the end of page change event handler.
Co-authored-by: Sean Budd <sean@nvaccess.org>
ivnc and others added 23 commits April 8, 2024 10:11
)

The Liblouis braille transcriber was updated in #16259, but the newly added grc-international-es.utb table, as noted in the release notes at https://github.com/liblouis/liblouis/releases/tag/v3.29.0 (New features section), was not added to the NVDA's table list.

Description of user facing changes
New table in the table list called "Spanish for Greek text".
Changelog entry added in #16259 has been also extended to reflect this update.

Description of development approach
Call addTable() as for all other tables.
Closes #16287

Summary of the issue:
Disabling sound split still could touch channel volumes.

Description of development approach
1. If sound split mode is disabled at startup, we're not touching any volumes.
2. If user toggles to disabled mode, then first we set mode to NVDA_BOTH_APPS_BOTH to effectively restore the volumes, then set sound pslit state to off.
This function is needed for both #8518 and #16050.

Summary of the issue:
Suppose we have TextInfo that represents a paragraph of text:
```
> s = paragraphInfo.text
> s
'Hello, world!\r'
```

Suppose that we would like to put the cursor at the first letter of the word 'world'.
That means jumping to index 7:
```
> s[7:]
'world!\r'
```

The problem is that calling paragraphInfo.move(UNIT_CHARACTER, 7, "start") is not guaranteed to achieve desired effect. There are two main reasons for that:
1. In Wide character encoding, some 4-byte unicode characters are represented as two surrogate characters, whereas in pythonic string they would be represented by a single character.
2. In non-offset TextInfos (e.g. UIATextInfo) there is no guarantee on the fact that TextInfos.move(UNIT_CHARACTER, 1)would actually move by exactly 1 character. A good illustration of this is in Microsoft Word with UIA enabled always, the first character of a bullet list item would be represented by three pythonic characters: 
◦ Bullet character "•"
◦ Tab character \t
◦ And the first character of of list item per se.
3. The third problem of TextInfo.move(UNIT_CHARACTER) function is its performance in some implementations. In particular, moving by 10000 characters in Notepad++ takes over a second on a reasonably modern PC. I might not need 

to move by 10000 characters in my upcoming PRs, but I will need to move by a few thousands for sure since for sentence navigation I would need to move within a paragraph and some large paragraphs in typical texts can easily be few thousands characters. I need to find both beginning and end textInfos, and if each operation takes say 200ms, then we'd be wasting almost half a second on just moving by characters. Since there were previous concerns about sentence navigation being not fast enough, II would like to introduce this efficient implementation.
Here is how this can be done efficiently using this PR:

```
> info = paragraphInfo.moveToPythonicOffset(7)
> info.setEndPoint(paragraphInfo, "endToEnd")
> info.text
'world!\r'
```

Description of development approach
1. For general case, I implemented binary-search-like algorithm. I explained it in great detail in the code. Please see def moveToPythonicOffset function in textInfos\__init__.py.
2. I provided optimized implementations for OffsetsTextInfo and CompoundTextInfo.
3. I refactored textUtils.py making it conformant to OOP style. I implemented UTF8OffsetConverter and dummy IdentityOffsetConverter as well as their abstract base class and a function getOffsetConverter that selects correct converter based on encoding. I renamed a couple of methods of WideStringOffsetConverter in order to remove the word wide - as now I would like to use similar methods for UTF8 converter, and it has nothing to do with wide strings.
Closes #16292

Summary of the issue:
When sound split is enabled, if an application is closed while NVDA is still running, its channel volume would be preserved even after the app is restarted later without NVDA.

Description of user facing changes
N/A

Description of development approach
Catching on_state_changed notification and when new_state == "Expired" - this means that the application just exited - we restore both left and right channel to full volume.
Added some Kannada symbols
added Braille codes for each Kannada character discriptions
Summary of the issue:
Update security policy to clarify when security issues are submitted, for each severity level, what is our SLA, how many resources do we allocate, when do we release the patch & advisory?

Description of user facing changes
Documentation only: Security policy
Fix-up of PR from GHSA-xg6w-23rw-39r8.

Summary of the issue:
A masking issue was found in ui.browseableMessage where we try to call the module level function message but it is masked by the local variable message which is an argument of ui.browseableMessage.

Description of user facing changes
In case an installation cannot create a Scripting.Dictionary COM object, a message will now be reported.

Description of development approach
I access the module level message function through globals() dictionary and store it in a new local variable to use it.
It would have been cleaner to rename the argument of ui.browseableMessage but I have not done so because changing the signature of a function is API-breaking.

I have also caught one more exception type because I have realized while testing that calling comtypes.client.CreateObject with an unknown class string raises OSError.
Closes #16387
Closes #16386

Summary of the issue:
Exception when trying to use vertical quickNav in excel browse mode.
Exception when trying to use vertical quickNav on an empty word document.

Description of user facing changes
Fixed exception. Now message "not available" is spoken in excel. In empty word document "no next paratgraph" message is spoken.

Description of development approach
Moved _iterSimilarParagraph() method from BrowseModeTreeInterceptor to BrowseModeDocumentTreeInterceptor class.
Catching RuntimeError coming from MSWord textInfo when calling .collapse().
Closes #16382.

Summary of the issue:
Vertical navigation is too slow.

Description of user facing changes
N/A

Description of development approach
Retrieving x coordinate faster in Gecko textInfo by doing a direct IAccessible2 call - as opposed to creating an NVDAObject. According to my rough measurement, this speeds up vertical navigation about 10 times.
Closes #16052.

Summary of the issue:
Needd commands to adjust volume of all applications other than NVDA.

Description of user facing changes
Adding commands to adjust volume of all applications other than NVDA bound to nvda+alt+pageUp/pageDown.
Also adding a command to mute all applications other than NVDA bound to nvda+alt+delete.
Also adding corresponding settings to audio panel.

Description of development approach
Making use of sound split code - we already have code to set volume of all other apps, but it's only used to mute left or right channel. Reusing same code to adjust volume as well.
Closes #16000

Summary of the issue:
Adding jump to same style and jump to different style QuickNav commands.

Description of user facing changes
Adding jump to same style and jump to different style QuickNav commands. They are not assigned to any keyboard gestures by default.

Description of development approach
Scanning document by paragraph in the desired direction and analyzing styles within each paragraph.
fixes #15898

Summary of the issue:
Both in NVDA core, as well as some add-ons, have features that work with speech but don't work with braille

Description of user facing changes
Braille only users will be able to read NVDA speech in braille, thus get access to a lot more features then they would otherwise

Description of development approach
A new braille mode has been added, called "speech emulation". In this mode, NVDA will send all text that has been spoken since the last time speech was canceled, to the braille display. If the speech was canceled do to the user scrolling the braille display back or fourth, the speech output mode will treat it as if the speech was not canceled, so the user can read the text without erasing it accidentally. If braille.handler.rawText is grater then 100000 characters, it will not be sent, because in my experience, NVDA will freeze when that much text is sent to the braille display at once. The braille settings panel has been rearranged so that all settings not aplickable to speech emulation is grouped together. A new combo box has been added to the braille settings panel, and a new script with the gesture NVDA+alt+t have been added, that allows the user to change braille mode.
…ttings dialog (#16352)

Summary of the issue:
The settings dialog contains always more error message boxes appearing when the validation of a parameter fails: modes available in cycle speech mode command or in cycle sound split mode command and regex validation in advanced settings have been added recently.

These messages do not formally mention the panel, nor the option which they are associated with. This may be difficult for the user to know which option is causing the error when the user has been modifying various settings in various setting panels (categories) before validating with "OK" or "Apply".

Description of user facing changes
The validation error messages now indicate the category and the name of the option which is causing the error so that the user can go to this option and modify it.

Description of development approach
Create a common dedicated error validation message with appropriate placeholders to be filled.
fixes #16323

Summary of the issue:
When selecting columns to display in Thunderbird message list, column state (checked or not checked) is not automatically spoken or shown in braille when state changes.

Description of user facing changes
Column state is automatically spoken and shown in braille when it changes.

Description of development approach
Added nameChange event to thunderbird.AppModule.
…t supporting IAccessible2. (#16392)

Summary of the issue:
Users have to explicitly configure in NVDA advanced options to "use UIA
for Edge and other chromium based browsers", for NVDA to work with HP Secure Browser.

Description of user facing changes:
Users won't have to explicitly configure UIA for all chromium-based browsers when
they want to use HP Secure Browser

Description of development approach:
Detect browser with a process name of "brchrome" which represents HP Secure Browser
and flag it as not supporting IAccecssible2. In this scenario, UIA will be
used by default for HP SB.

Co-authored-by: Tomasz Wroblewski <tomasz.wroblewski@hp.com>
…tection to cope with VT_EMPTY runtimeID. (#16393)

Summary of the issue:
When enough websites are open in separate tabs, SB will suspend some
of the virtual machines hosting the websites to disk. This can cause
UIA documents representing these websites to become dead.

In this scenario querying UIA_RuntimeIdPropertyId of the dead document
returns VT_EMPTY variant, causing uncaught exception raised from
UIABrowseModeDocument.__contains__. This keeps repeating, preventing
NVDA from working correctly, if at all.

Description of user facing changes:
NVDA works correctly regardless of vm suspensions or other scenarios
where UIA documents can become dead.

Description of development approach:
UIABrowseModeDocument.__contains__ already has code to detect dead documents,
however it relies on COMError being reported from UIA_RuntimeIdPropertyId
property query.

In my testing, even when the server side reports an error HRESULT from
IRawElementProviderFragment::GetRuntimeID() uia method, UIA core appears
to translate it into a successful property query, yet with a VT_EMPTY variant
as the property value. It's possible this behaviour is different between
various UIA core versions, my testing is primarily on Windows 11 build 22631.

We amend the detection such that both COMError and VT_EMPTY variant
are detected and treated equally, causing the dead document codepath to execute.

Co-authored-by: Tomasz Wroblewski <tomasz.wroblewski@hp.com>
…ail sign-in fields when chromium (#16395)

is using UIA text ranges (rather than IA2)

Summary of the issue:
When using Secure Browser, Backspace key is not working in gmail's signin fields
(email address, password etc)

Description of user facing changes:
Backspace key works after the changes, but this is a partial fix only since the deleted character
is still not spoken.

Description of development approach:
UIA exceptions are preventing codepaths such as reinjection of backspace
event from working properly. Catch&log exceptions rather than letting
them escape.

Co-authored-by: Tomasz Wroblewski <tomasz.wroblewski@hp.com>
… iterUIARangeByUnit (#16394)

Summary of the issue:
We're experiencing NVDA locking up trying to infinitely split some text
ranges, for example on www.bat.org when it tries to split the range representing
"Submit" button into individual characters.

NVDA hangs completely in this scenario and has to be forcibly killed.

If the offending split is attempted, the hang always happens. Secure Browser seems to be provoking this split more,
but we've also seen that in normal chromium-based browsers when using UIA instead of IAccessible2.
This could be due to significant timing differences etc, as the virtualized
browser has higher overhead.

Typical repro scenario involves navigating to www.bat.org then duplicating the tab &
closing some of the dupes, until NVDA attempts the split and hangs.

Description of user facing changes:
Detect & prevent the infinite loop so that NVDA remains responsive

Description of development approach:
This is likely a deficiency in UIA text range implementation on the chromium
side, as I don't see anything obviously wrong with the algorithm in
iterRangeByUnit which is doing the split. Rewriting this UIA algorithm in C++
and running against offending website also hangs, always, in regular
Google Chrome, Edge, and Secure Browser.

At the cost of extra Compare COM call we can detect that chromium is yielding
same range infinitely, and therefore detect & shortcircuit the infinite loop
on the NVDA side.

Co-authored-by: Tomasz Wroblewski <tomasz.wroblewski@hp.com>
* Changelog entries for #16392 #16393 #16394 #16395

Summary of the issue:
Changelog entries are missing for #16392 #16393 #16394 #16395

Description of user facing changes:
Added Changelog entries

Description of development approach:
N/A

* Apply suggestions from code review

---------

Co-authored-by: Tomasz Wroblewski <tomasz.wroblewski@hp.com>
Co-authored-by: Sean Budd <seanbudd123@gmail.com>
* L10n updates for: ar
From translation svn revision: 78868

Authors:
Fatma Mehanna <fatma.mehanna@gmail.com>
Shaimaa Ibrahim <shamse1@gmail.com>
Abdelkrim Bensaid <abdelkrim.bensaid@free.fr>
Omar Alojaimi <amrahmad1995@gmail.com>

Stats:
6	3	user_docs/ar/changes.t2t
1222	565	user_docs/ar/userGuide.t2t
 2 files changed, 1228 insertions(+), 568 deletions(-)

* L10n updates for: da
From translation svn revision: 78868

Authors:
Daniel K. Gartmann <kontakt@nvda.dk>
Nicolai Svendsen <chojiro1990@gmail.com>
bue@vester-andersen.dk

Stats:
135	112	user_docs/da/userGuide.t2t
 1 file changed, 135 insertions(+), 112 deletions(-)

* L10n updates for: de
From translation svn revision: 78868

Authors:
Bernd Dorer <bdorer@mailbox.org>
David Parduhn <xkill85@gmx.net>
Rene Linke <rene.linke@hamburg.de>
Adriani Botez <adriani.botez@gmail.com>
Karl Eick <hozosch@web.de>
Robert Hänggi <aarjay.robert@gmail.com>
Astrid Waldschmetterling <a.r.waldschmetterling@gmx.de>

Stats:
73	56	user_docs/de/changes.t2t
8	7	user_docs/de/userGuide.t2t
 2 files changed, 81 insertions(+), 63 deletions(-)

* L10n updates for: es
From translation svn revision: 78868

Authors:
Juan C. buno <oprisniki@gmail.com>
Noelia Martinez <nrm1977@gmail.com>
Remy Ruiz <remyruiz@gmail.com>
Jose M. Delicado <jm.delicado@nvda.es>

Stats:
13	4	user_docs/es/changes.t2t
21	20	user_docs/es/userGuide.t2t
 2 files changed, 34 insertions(+), 24 deletions(-)

* L10n updates for: fi
From translation svn revision: 78868

Authors:
Jani Kinnunen <janikinnunen340@gmail.com>
Isak Sand <isak.sand@gmail.com>

Stats:
2	2	user_docs/fi/changes.t2t
6	6	user_docs/fi/userGuide.t2t
 2 files changed, 8 insertions(+), 8 deletions(-)

* L10n updates for: fr
From translation svn revision: 78868

Authors:
Michel such <michel.such@free.fr>
Remy Ruiz <remyruiz@gmail.com>
Abdelkrim Bensaid <abdelkrim.bensaid@free.fr>
Cyrille Bougot <cyrille.bougot2@laposte.net>
Corentin Bacqué-Cazenave <corentin@progaccess.net>
Sylvie Duchateau <sylvieduchateau@gmail.com>
Sof <hellosof@gmail.com>

Stats:
334	0	user_docs/fr/changes.t2t
5	4	user_docs/fr/userGuide.t2t
 2 files changed, 339 insertions(+), 4 deletions(-)

* L10n updates for: gl
From translation svn revision: 78868

Authors:
Juan C. buno <oprisniki@gmail.com>
Ivan Novegil <ivan.novegil@nvda.es>
Javier Curras <javier.curras@nvda.es>
Jose M. Delicado <jm.delicado@nvda.es>

Stats:
12	4	user_docs/gl/changes.t2t
21	20	user_docs/gl/userGuide.t2t
 2 files changed, 33 insertions(+), 24 deletions(-)

* L10n updates for: hr
From translation svn revision: 78868

Authors:
Hrvoje Katic <hrvojekatic@gmail.com>
Zvonimir Stanecic <zvonimirek222@yandex.com>
Milo Ivir <mail@milotype.de>
Dejana Rakic <dejana.rakic.2@gmail.com>

Stats:
13	4	user_docs/hr/changes.t2t
4	3	user_docs/hr/userGuide.t2t
 2 files changed, 17 insertions(+), 7 deletions(-)

* L10n updates for: it
From translation svn revision: 78868

Authors:
Simone Dal Maso <simone.dalmaso@gmail.com>
Alberto Buffolino <a.buffolino@gmail.com>

Stats:
334	0	user_docs/it/changes.t2t
 1 file changed, 334 insertions(+)

* L10n updates for: pl
From translation svn revision: 78868

Authors:
Grzegorz Zlotowicz <grzezlo@wp.pl>
Patryk Faliszewski <patric3031@wp.pl>
Zvonimir Stanecic <zvonimirek222@yandex.com>
Dorota Krac <dorkakrac@yandex.com>
Piotr Rakowski <kontakt@piotrrakowski.net>
Hubert Meyer <hubmeyer1989@gmail.com>
Arkadiusz Swietnicki <nuno69a@gmail.com>

Stats:
179	0	user_docs/pl/changes.t2t
4	3	user_docs/pl/userGuide.t2t
 2 files changed, 183 insertions(+), 3 deletions(-)

* L10n updates for: pt_PT
From translation svn revision: 78868

Authors:
Diogo Costa <diogojoca@gmail.com>
Rui Batista <ruiandrebatista@gmail.com>
Rui Fontes <rui.fontes@tiflotecnia.com>
Ângelo Abrantes <ampa4374@gmail.com>

Stats:
192	10	user_docs/pt_PT/changes.t2t
6	5	user_docs/pt_PT/userGuide.t2t
 2 files changed, 198 insertions(+), 15 deletions(-)

* L10n updates for: ta
From translation svn revision: 78868

Authors:
Dinakar T.D. <td.dinkar@gmail.com>

Stats:
6	5	user_docs/ta/userGuide.t2t
 1 file changed, 6 insertions(+), 5 deletions(-)

* L10n updates for: tr
From translation svn revision: 78868

Authors:
Cagri Dogan <cagrid@hotmail.com>

Stats:
333	3	user_docs/tr/changes.t2t
275	122	user_docs/tr/userGuide.t2t
 2 files changed, 608 insertions(+), 125 deletions(-)

* L10n updates for: vi
From translation svn revision: 78868

Authors:
Dang Hoai Phuc <danghoaiphuc@gmail.com>
Nguyen Van Dung <dungnv1984@gmail.com>

Stats:
193	11	user_docs/vi/changes.t2t
 1 file changed, 193 insertions(+), 11 deletions(-)

* L10n updates for: zh_CN
From translation svn revision: 78868

Authors:
vgjh2005@gmail.com
jiangtiandao901647@gmail.com
manchen_0528@outlook.com
dingpengyu06@gmail.com
singer.mike.zhao@gmail.com
1872265132@qq.com

Stats:
108	108	user_docs/zh_CN/changes.t2t
39	42	user_docs/zh_CN/userGuide.t2t
 2 files changed, 147 insertions(+), 150 deletions(-)

* L10n updates for: zh_TW
From translation svn revision: 78868

Authors:
wangjanli@gmail.com
maro.zhang@gmail.com
Aaron Wu <waaron2000@gmail.com>
Victor Cai <surfer0627@gmail.com>
haach111000@gmail.com

Stats:
267	249	source/locale/zh_TW/symbols.dic
286	144	user_docs/zh_TW/userGuide.t2t
 2 files changed, 553 insertions(+), 393 deletions(-)

* L10n updates for: ar
From translation svn revision: 79143

Authors:
Fatma Mehanna <fatma.mehanna@gmail.com>
Shaimaa Ibrahim <shamse1@gmail.com>
Abdelkrim Bensaid <abdelkrim.bensaid@free.fr>
Omar Alojaimi <amrahmad1995@gmail.com>

Stats:
25	20	user_docs/ar/userGuide.t2t
 1 file changed, 25 insertions(+), 20 deletions(-)

* L10n updates for: bg
From translation svn revision: 79143

Authors:
Zahari Yurukov <zahari.yurukov@gmail.com>
Kostadin Kolev <k.kolev1985@gmail.com>

Stats:
340	6	user_docs/bg/changes.t2t
261	117	user_docs/bg/userGuide.t2t
 2 files changed, 601 insertions(+), 123 deletions(-)

* L10n updates for: da
From translation svn revision: 79143

Authors:
Daniel K. Gartmann <kontakt@nvda.dk>
Nicolai Svendsen <chojiro1990@gmail.com>
bue@vester-andersen.dk

Stats:
118	71	user_docs/da/changes.t2t
 1 file changed, 118 insertions(+), 71 deletions(-)

* L10n updates for: fa
From translation svn revision: 79143

Authors:
Ali Aslani <aslani.ali@gmail.com>
Mohammadreza Rashad <mohammadreza5712@gmail.com>

Stats:
177	0	user_docs/fa/changes.t2t
 1 file changed, 177 insertions(+)

* L10n updates for: hu
From translation svn revision: 79143

Authors:
Aron OcsvAri <oaron@nvda.hu>

Stats:
220	0	user_docs/hu/changes.t2t
 1 file changed, 220 insertions(+)

* L10n updates for: it
From translation svn revision: 79143

Authors:
Simone Dal Maso <simone.dalmaso@gmail.com>
Alberto Buffolino <a.buffolino@gmail.com>

Stats:
1	1	source/locale/it/symbols.dic
25	25	user_docs/it/changes.t2t
4	3	user_docs/it/userGuide.t2t
 3 files changed, 30 insertions(+), 29 deletions(-)

* L10n updates for: nl
From translation svn revision: 79143

Authors:
Bram Duvigneau <bram@bramd.nl>
Bart Simons <bart@bartsimons.be>
A Campen <a.campen@wxs.nl>
Leonard de Ruijter <alderuijter@gmail.com>

Stats:
236	211	user_docs/nl/userGuide.t2t
 1 file changed, 236 insertions(+), 211 deletions(-)

* L10n updates for: pt_BR
From translation svn revision: 79143

Authors:
Cleverson Casarin Uliana <nvdasrt@clul.router5.com>
Marlin Rodrigues <marlincgrodrigues@yahoo.com.br>
Tiago Melo Casal <tcasal@intervox.nce.ufrj.br>
Lucas Antonio <lucasantoniocwb@gmail.com>

Stats:
240	232	user_docs/pt_BR/changes.t2t
180	181	user_docs/pt_BR/userGuide.t2t
 2 files changed, 420 insertions(+), 413 deletions(-)

* L10n updates for: sk
From translation svn revision: 79143

Authors:
Ondrej Rosik <ondrej.rosik@gmail.com>
Peter Vagner <peter.v@datagate.sk>
Jan Kulik <jan.kulik.szsle@outlook.sk>

Stats:
175	0	user_docs/sk/changes.t2t
269	123	user_docs/sk/userGuide.t2t
 2 files changed, 444 insertions(+), 123 deletions(-)

* L10n updates for: sr
From translation svn revision: 79143

Authors:
Nikola Jovic <wwenikola123@gmail.com>
Janko Valencik <janko.valencik@alfanum.co.rs>
Zvonimir <zvonimirek222@yandex.com>
Danijela Popovic <vlajna95@gmail.com>

Stats:
178	5	user_docs/sr/changes.t2t
301	149	user_docs/sr/userGuide.t2t
 2 files changed, 479 insertions(+), 154 deletions(-)

* L10n updates for: tr
From translation svn revision: 79143

Authors:
Cagri Dogan <cagrid@hotmail.com>

Stats:
119	111	user_docs/tr/userGuide.t2t
 1 file changed, 119 insertions(+), 111 deletions(-)

* L10n updates for: uk
From translation svn revision: 79143

Authors:
Volodymyr Pyrig <vp88.mobile@gmail.com>

Stats:
5	4	user_docs/uk/userGuide.t2t
 1 file changed, 5 insertions(+), 4 deletions(-)

* L10n updates for: vi
From translation svn revision: 79143

Authors:
Dang Hoai Phuc <danghoaiphuc@gmail.com>
Nguyen Van Dung <dungnv1984@gmail.com>

Stats:
1	1	user_docs/vi/changes.t2t
4	4	user_docs/vi/userGuide.t2t
 2 files changed, 5 insertions(+), 5 deletions(-)

* L10n updates for: zh_CN
From translation svn revision: 79143

Authors:
vgjh2005@gmail.com
jiangtiandao901647@gmail.com
manchen_0528@outlook.com
dingpengyu06@gmail.com
singer.mike.zhao@gmail.com
1872265132@qq.com

Stats:
26	27	source/locale/zh_CN/characterDescriptions.dic
127	127	user_docs/zh_CN/changes.t2t
96	97	user_docs/zh_CN/userGuide.t2t
 3 files changed, 249 insertions(+), 251 deletions(-)

* L10n updates for: zh_TW
From translation svn revision: 79143

Authors:
wangjanli@gmail.com
maro.zhang@gmail.com
Aaron Wu <waaron2000@gmail.com>
Victor Cai <surfer0627@gmail.com>
haach111000@gmail.com

Stats:
24	16	source/locale/zh_TW/characterDescriptions.dic
406	0	user_docs/zh_TW/changes.t2t
 2 files changed, 430 insertions(+), 16 deletions(-)

* Update translations (#16324)

* L10n updates for: fa
From translation svn revision: 79170

Authors:
Ali Aslani <aslani.ali@gmail.com>
Mohammadreza Rashad <mohammadreza5712@gmail.com>

Stats:
273	126	user_docs/fa/userGuide.t2t
 1 file changed, 273 insertions(+), 126 deletions(-)

* L10n updates for: fr
From translation svn revision: 79170

Authors:
Michel such <michel.such@free.fr>
Remy Ruiz <remyruiz@gmail.com>
Abdelkrim Bensaid <abdelkrim.bensaid@free.fr>
Cyrille Bougot <cyrille.bougot2@laposte.net>
Corentin Bacqué-Cazenave <corentin@progaccess.net>
Sylvie Duchateau <sylvieduchateau@gmail.com>
Sof <hellosof@gmail.com>

Stats:
2	2	user_docs/fr/userGuide.t2t
 1 file changed, 2 insertions(+), 2 deletions(-)

* L10n updates for: fr
From translation svn revision: 79348

Authors:
Michel such <michel.such@free.fr>
Remy Ruiz <remyruiz@gmail.com>
Abdelkrim Bensaid <abdelkrim.bensaid@free.fr>
Cyrille Bougot <cyrille.bougot2@laposte.net>
Corentin Bacqué-Cazenave <corentin@progaccess.net>
Sylvie Duchateau <sylvieduchateau@gmail.com>
Sof <hellosof@gmail.com>

Stats:
93	82	user_docs/fr/changes.t2t
13	13	user_docs/fr/userGuide.t2t
 2 files changed, 106 insertions(+), 95 deletions(-)

* L10n updates for: nl
From translation svn revision: 79348

Authors:
Bram Duvigneau <bram@bramd.nl>
Bart Simons <bart@bartsimons.be>
A Campen <a.campen@wxs.nl>
Leonard de Ruijter <alderuijter@gmail.com>

Stats:
1	1	user_docs/nl/userGuide.t2t
 1 file changed, 1 insertion(+), 1 deletion(-)

* L10n updates for: ta
From translation svn revision: 79348

Authors:
Dinakar T.D. <td.dinkar@gmail.com>

Stats:
2	2	user_docs/ta/userGuide.t2t
 1 file changed, 2 insertions(+), 2 deletions(-)

---------

Co-authored-by: NVDA translation automation <nvda-translations@groups.io>
Co-authored-by: Michael Curran <mick@nvaccess.org>
@seanbudd seanbudd requested review from a team as code owners April 18, 2024 03:07
@seanbudd seanbudd requested review from Qchristensen and SaschaCowley and removed request for a team April 18, 2024 03:07
@seanbudd seanbudd merged commit e69fe2c into beta Apr 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.