Compare commits

..

3 Commits

Author SHA1 Message Date
Michael Telatynski
4bc6f4dafa Make sonar happier 2023-05-24 12:36:20 +01:00
Michael Telatynski
84ffc7e2e6 Iterate 2023-05-24 12:01:56 +01:00
Michael Telatynski
344d473e9b Don't double up app badge on Windows 2023-05-24 11:35:09 +01:00
81 changed files with 4230 additions and 4847 deletions

View File

@@ -23,7 +23,7 @@ jobs:
)
)
steps:
- uses: tibdex/backport@9565281eda0731b1d20c4025c43339fb0a23812e # v2
- uses: tibdex/backport@2e217641d82d02ba0603f46b1aeedefb258890ac
with:
labels_template: "<%= JSON.stringify([...labels, 'X-Release-Blocker']) %>"
# We can't use GITHUB_TOKEN here or CI won't run on the new PR

View File

@@ -3,9 +3,6 @@ on:
# Nightly build
schedule:
- cron: "0 9 * * *"
# Release build
release:
types: [published]
# Manual nightly & release
workflow_dispatch:
inputs:
@@ -22,8 +19,13 @@ on:
required: true
type: boolean
default: true
windows:
description: Build Windows
windows_32bit:
description: Build Windows 32-bit
required: true
type: boolean
default: true
windows_64bit:
description: Build Windows 64-bit
required: true
type: boolean
default: true
@@ -37,7 +39,7 @@ on:
required: true
type: boolean
default: true
run-name: Element ${{ inputs.mode != 'release' && github.event_name != 'release' && 'Nightly' || 'Desktop' }}
run-name: Element ${{ inputs.mode == 'release' && 'Desktop' || 'Nightly' }}
concurrency: ${{ github.workflow }}
env:
R2_BUCKET: ${{ vars.R2_BUCKET }}
@@ -45,27 +47,36 @@ jobs:
prepare:
uses: ./.github/workflows/build_prepare.yaml
with:
config: element.io/${{ inputs.mode || (github.event_name == 'release' && 'release') || 'nightly' }}
version: ${{ (inputs.mode != 'release' && github.event_name != 'release') && 'develop' || '' }}
nightly: ${{ inputs.mode != 'release' && github.event_name != 'release' }}
config: element.io/${{ inputs.mode || 'nightly' }}
version: ${{ inputs.mode != 'release' && 'develop' || '' }}
nightly: ${{ inputs.mode != 'release' }}
secrets:
CF_R2_ACCESS_KEY_ID: ${{ secrets.CF_R2_ACCESS_KEY_ID }}
CF_R2_TOKEN: ${{ secrets.CF_R2_TOKEN }}
windows:
if: github.event_name != 'workflow_dispatch' || inputs.windows
windows_32bit:
if: github.event_name != 'workflow_dispatch' || inputs.windows_32bit
needs: prepare
name: Windows ${{ matrix.arch }}
strategy:
matrix:
arch: [x86, x64]
name: Windows 32-bit
uses: ./.github/workflows/build_windows.yaml
secrets: inherit
with:
sign: true
deploy-mode: true
arch: ${{ matrix.arch }}
version: ${{ needs.prepare.outputs.nightly-version }}
arch: x86
version: ${{ needs.prepare.outputs.win32-x86-version }}
windows_64bit:
if: github.event_name != 'workflow_dispatch' || inputs.windows_64bit
needs: prepare
name: Windows 64-bit
uses: ./.github/workflows/build_windows.yaml
secrets: inherit
with:
sign: true
deploy-mode: true
arch: x64
version: ${{ needs.prepare.outputs.win32-x64-version }}
macos:
if: github.event_name != 'workflow_dispatch' || inputs.macos
@@ -76,8 +87,8 @@ jobs:
with:
sign: true
deploy-mode: true
base-url: https://packages.element.io/${{ needs.prepare.outputs.packages-dir }}
version: ${{ needs.prepare.outputs.nightly-version }}
base-url: https://packages.element.io/${{ inputs.mode == 'release' && 'desktop' || 'nightly' }}
version: ${{ needs.prepare.outputs.macos-version }}
# We do not put these calls into deploy-mode as we do not want it to add to the packages.element.io artifact
# We ship this build via reprepro only
@@ -91,9 +102,9 @@ jobs:
uses: ./.github/workflows/build_linux.yaml
with:
arch: ${{ matrix.arch }}
config: ${{ needs.prepare.outputs.config }}
config: element.io/${{ inputs.mode || 'nightly' }}
sqlcipher: system
version: ${{ needs.prepare.outputs.nightly-version }}
version: ${{ needs.prepare.outputs.linux-version }}
# We ship the static build via static tarball only
linux_static:
@@ -104,29 +115,22 @@ jobs:
with:
arch: amd64
deploy-mode: true
config: ${{ needs.prepare.outputs.config }}
config: element.io/${{ inputs.mode || 'nightly' }}
sqlcipher: static
version: ${{ needs.prepare.outputs.nightly-version }}
version: ${{ needs.prepare.outputs.linux-version }}
# This deploy job only handles Windows, macOS & linux_static as those are stateless and static.
# Linux will be deployed via reprepro after it, but we list it as a dependency to abort if it fails.
deploy:
needs:
- prepare
- macos
- linux
- linux_static
- windows
- windows_32bit
- windows_64bit
runs-on: ubuntu-latest
name: Deploy
if: |
(
github.event_name != 'workflow_dispatch' &&
github.event.release.prerelease != true
) || (
always() && !failure() && !cancelled() && inputs.deploy &&
(inputs.macos || inputs.windows || inputs.linux)
)
if: github.event_name != 'workflow_dispatch' || (inputs.deploy && (inputs.macos || inputs.windows_32bit || inputs.windows_64bit))
environment: packages.element.io
steps:
- name: Download artifacts
@@ -142,10 +146,10 @@ jobs:
AWS_ACCESS_KEY_ID: ${{ secrets.CF_R2_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.CF_R2_TOKEN }}
R2_URL: ${{ vars.CF_R2_S3_API }}
DEPLOYMENT_DIR: ${{ needs.prepare.outputs.packages-dir }}
DEPLOYMENT_DIR: ${{ inputs.mode == 'release' && 'desktop' || 'nightly' }}
- name: Notify packages.element.io of new files
uses: peter-evans/repository-dispatch@bf47d102fdb849e755b0b0023ea3e81a44b6f570 # v2
uses: peter-evans/repository-dispatch@26b39ed245ab8f31526069329e112ab2fb224588 # v2
with:
token: ${{ secrets.ELEMENT_BOT_TOKEN }}
repository: vector-im/packages.element.io
@@ -160,13 +164,7 @@ jobs:
strategy:
matrix:
arch: [amd64, arm64]
if: |
(
github.event_name != 'workflow_dispatch' &&
github.event.release.prerelease != true
) || (
always() && !failure() && !cancelled() && inputs.deploy && inputs.linux
)
if: github.event_name != 'workflow_dispatch' || (inputs.deploy && inputs.linux)
uses: ./.github/workflows/reprepro.yaml
secrets: inherit
with:

View File

@@ -41,13 +41,13 @@ jobs:
- name: "Get modified files"
id: changed_files
uses: tj-actions/changed-files@6ee9cdc5816333acda68e01cf12eedc619e28316 # v39
uses: tj-actions/changed-files@b2d17f51244a144849c6b37a3a6791b98a51d86f # v35
with:
files: |
dockerbuild/*
- name: Log in to the Container registry
if: steps.changed_files.outputs.any_modified == 'true'
uses: docker/login-action@a5609cb39f57be157c39b77359abfaa43aeaeb8f
uses: docker/login-action@40891eba8c2bcd1309b07ba8b11232f313e86779
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
@@ -63,7 +63,7 @@ jobs:
- name: Build and push Docker image
if: steps.changed_files.outputs.any_modified == 'true'
uses: docker/build-push-action@4e4ee680f69700760d5620a94c020aef883043aa
uses: docker/build-push-action@91df6b874e498451163feb47610c87c4a218c1ee
with:
context: dockerbuild
push: true

View File

@@ -52,10 +52,11 @@ jobs:
- name: Install Rust
if: steps.cache.outputs.cache-hit != 'true'
run: |
rustup toolchain install stable --profile minimal --no-self-update
rustup default stable
rustup target add aarch64-apple-darwin
uses: actions-rs/toolchain@88dc2356392166efad76775c878094f4e83ff746
with:
default: true
toolchain: stable
target: aarch64-apple-darwin
- uses: actions/setup-node@v3
with:

View File

@@ -23,23 +23,28 @@ on:
CF_R2_TOKEN:
required: false
outputs:
nightly-version:
description: "The version string the next Nightly should use, only output for nightly"
value: ${{ jobs.prepare.outputs.nightly-version }}
packages-dir:
description: "The directory non-deb packages for this run should live in within packages.element.io"
value: ${{ inputs.nightly && 'nightly' || 'desktop' }}
# This is just a simple pass-through of the input to simplify reuse of complex inline conditions
config:
description: "The relative path to the config file for this run"
value: ${{ inputs.config }}
macos-version:
description: "The version string the next macOS Nightly should use, only output for nightly"
value: ${{ jobs.prepare.outputs.macos-version }}
linux-version:
description: "The version string the next Linux Nightly should use, only output for nightly"
value: ${{ jobs.prepare.outputs.linux-version }}
win32-x64-version:
description: "The version string the next Windows x64 Nightly should use, only output for nightly"
value: ${{ jobs.prepare.outputs.win32-x64-version }}
win32-x86-version:
description: "The version string the next Windows x86 Nightly should use, only output for nightly"
value: ${{ jobs.prepare.outputs.win32-x86-version }}
jobs:
prepare:
name: Prepare
environment: ${{ inputs.nightly && 'packages.element.io' || '' }}
runs-on: ubuntu-latest
outputs:
nightly-version: ${{ steps.versions.outputs.nightly }}
macos-version: ${{ steps.versions.outputs.macos }}
linux-version: ${{ steps.versions.outputs.linux }}
win32-x64-version: ${{ steps.versions.outputs.win_x64 }}
win32-x86-version: ${{ steps.versions.outputs.win_x86 }}
steps:
- uses: actions/checkout@v3
@@ -61,21 +66,20 @@ jobs:
find hak -type f -print0 | xargs -0 sha1sum >> hakHash
find scripts/hak -type f -print0 | xargs -0 sha1sum >> hakHash
- name: "[Nightly] Calculate version"
- name: "[Nightly] Calculate versions"
id: versions
if: inputs.nightly
run: |
# Find all latest Nightly versions
aws s3 cp s3://$R2_BUCKET/nightly/update/macos/releases.json - --endpoint-url $R2_URL --region auto | jq -r .currentRelease >> VERSIONS
aws s3 cp s3://$R2_BUCKET/debian/dists/default/main/binary-amd64/Packages - --endpoint-url $R2_URL --region auto | grep "Package: element-nightly" -A 50 | grep Version -m1 | sed -n 's/Version: //p' >> VERSIONS
aws s3 cp s3://$R2_BUCKET/debian/dists/default/main/binary-arm64/Packages - --endpoint-url $R2_URL --region auto | grep "Package: element-nightly" -A 50 | grep Version -m1 | sed -n 's/Version: //p' >> VERSIONS
aws s3 cp s3://$R2_BUCKET/nightly/update/win32/x64/RELEASES - --endpoint-url $R2_URL --region auto | awk '{print $2}' | cut -d "-" -f 5 | cut -c 8- >> VERSIONS
aws s3 cp s3://$R2_BUCKET/nightly/update/win32/ia32/RELEASES - --endpoint-url $R2_URL --region auto | awk '{print $2}' | cut -d "-" -f 5 | cut -c 8- >> VERSIONS
MACOS=$(aws s3 cp s3://$R2_BUCKET/nightly/update/macos/releases.json - --endpoint-url $R2_URL --region auto | jq -r .currentRelease)
echo "macos=$(scripts/generate-nightly-version.ts --latest $MACOS)" >> $GITHUB_OUTPUT
# Pick the greatest one
VERSION=$(cat VERSIONS | sort -uf | tail -n1)
# Increment it
echo "nightly=$(scripts/generate-nightly-version.ts --latest $VERSION)" >> $GITHUB_OUTPUT
LINUX=$(aws s3 cp s3://$R2_BUCKET/debian/dists/default/main/binary-amd64/Packages - --endpoint-url $R2_URL --region auto | grep "Package: element-nightly" -A 50 | grep Version -m1 | sed -n 's/Version: //p')
echo "linux=$(scripts/generate-nightly-version.ts --latest $LINUX)" >> $GITHUB_OUTPUT
WINx64=$(aws s3 cp s3://$R2_BUCKET/nightly/update/win32/x64/RELEASES - --endpoint-url $R2_URL --region auto | awk '{print $2}' | cut -d "-" -f 5 | cut -c 8-)
echo "win_x64=$(scripts/generate-nightly-version.ts --latest $WINx64)" >> $GITHUB_OUTPUT
WINx86=$(aws s3 cp s3://$R2_BUCKET/nightly/update/win32/ia32/RELEASES - --endpoint-url $R2_URL --region auto | awk '{print $2}' | cut -d "-" -f 5 | cut -c 8-)
echo "win_x86=$(scripts/generate-nightly-version.ts --latest $WINx86)" >> $GITHUB_OUTPUT
env:
AWS_ACCESS_KEY_ID: ${{ secrets.CF_R2_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.CF_R2_TOKEN }}
@@ -119,10 +123,14 @@ jobs:
REACT_VERSION=${WEBAPP_VERSION:19:12}
JS_VERSION=${WEBAPP_VERSION:35:12}
echo "### Nightly build ${{ steps.versions.outputs.nightly }}" >> $GITHUB_STEP_SUMMARY
echo "### Nightly build" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Component | Version |" >> $GITHUB_STEP_SUMMARY
echo "| ----------- | ------- |" >> $GITHUB_STEP_SUMMARY
echo "| macOS | ${{ steps.versions.outputs.macos }} |" >> $GITHUB_STEP_SUMMARY
echo "| Linux | ${{ steps.versions.outputs.linux }} |" >> $GITHUB_STEP_SUMMARY
echo "| Windows x64 | ${{ steps.versions.outputs.win_x64 }} |" >> $GITHUB_STEP_SUMMARY
echo "| Windows x86 | ${{ steps.versions.outputs.win_x86 }} |" >> $GITHUB_STEP_SUMMARY
echo "| Bundle Hash | $BUNDLE_HASH |" >> $GITHUB_STEP_SUMMARY
echo "| Element Web | [$WEB_VERSION](https://github.com/vector-im/element-web/commit/$WEB_VERSION) |" >> $GITHUB_STEP_SUMMARY
echo "| React SDK | [$REACT_VERSION](https://github.com/matrix-org/matrix-react-sdk/commit/$REACT_VERSION) |" >> $GITHUB_STEP_SUMMARY

View File

@@ -95,10 +95,11 @@ jobs:
- name: Install Rust
if: steps.cache.outputs.cache-hit != 'true'
run: |
rustup toolchain install stable --profile minimal --no-self-update
rustup default stable
rustup target add ${{ steps.config.outputs.target }}
uses: actions-rs/toolchain@88dc2356392166efad76775c878094f4e83ff746
with:
default: true
toolchain: stable
target: ${{ steps.config.outputs.target }}
- uses: actions/setup-node@v3
with:

View File

@@ -20,7 +20,7 @@ jobs:
- uses: actions/checkout@v3
- name: Log in to the Container registry
uses: docker/login-action@a5609cb39f57be157c39b77359abfaa43aeaeb8f
uses: docker/login-action@40891eba8c2bcd1309b07ba8b11232f313e86779
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
@@ -28,14 +28,14 @@ jobs:
- name: Extract metadata for Docker
id: meta
uses: docker/metadata-action@b67fef219a3c5542bf1d0948862a08152653b4d4
uses: docker/metadata-action@c4ee3adeed93b1fa6a762f209fb01608c1a22f1e
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=ref,event=branch
- name: Build and push Docker image
uses: docker/build-push-action@4e4ee680f69700760d5620a94c020aef883043aa
uses: docker/build-push-action@91df6b874e498451163feb47610c87c4a218c1ee
with:
context: dockerbuild
push: true

View File

@@ -1,8 +0,0 @@
name: Localazy Download
on:
workflow_dispatch: {}
jobs:
download:
uses: matrix-org/matrix-web-i18n/.github/workflows/localazy_download.yaml@main
secrets:
ELEMENT_BOT_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}

View File

@@ -1,11 +0,0 @@
name: Localazy Upload
on:
push:
branches: [develop]
paths:
- "src/strings/i18n/en_EN.json"
jobs:
upload:
uses: matrix-org/matrix-web-i18n/.github/workflows/localazy_upload.yaml@main
secrets:
LOCALAZY_WRITE_KEY: ${{ secrets.LOCALAZY_WRITE_KEY }}

View File

@@ -41,7 +41,7 @@ jobs:
AWS_SECRET_ACCESS_KEY: ${{ secrets.CF_R2_TOKEN }}
- name: Notify packages.element.io of incoming deb
uses: peter-evans/repository-dispatch@bf47d102fdb849e755b0b0023ea3e81a44b6f570 # v2
uses: peter-evans/repository-dispatch@26b39ed245ab8f31526069329e112ab2fb224588 # v2
with:
token: ${{ secrets.ELEMENT_BOT_TOKEN }}
repository: vector-im/packages.element.io

View File

@@ -23,7 +23,7 @@ jobs:
i18n_lint:
name: "i18n Check"
uses: matrix-org/matrix-web-i18n/.github/workflows/i18n_check.yml@main
uses: matrix-org/matrix-react-sdk/.github/workflows/i18n_check.yml@develop
js_lint:
name: "ESLint"

View File

@@ -1,421 +1,3 @@
Changes in [1.11.44-rc.1](https://github.com/vector-im/element-desktop/releases/tag/v1.11.44-rc.1) (2023-09-19)
===============================================================================================================
## ✨ Features
* Make video & voice call buttons pin conference widget if unpinned ([\#11576](https://github.com/matrix-org/matrix-react-sdk/pull/11576)). Fixes vector-im/customer-retainer#72.
* OIDC: persist refresh token ([\#11249](https://github.com/matrix-org/matrix-react-sdk/pull/11249)). Contributed by @kerryarchibald.
* ElementR: Cross user verification ([\#11364](https://github.com/matrix-org/matrix-react-sdk/pull/11364)). Fixes vector-im/element-web#25752. Contributed by @florianduros.
* Default intentional mentions ([\#11602](https://github.com/matrix-org/matrix-react-sdk/pull/11602)).
* Notify users about denied access on ask-to-join rooms ([\#11480](https://github.com/matrix-org/matrix-react-sdk/pull/11480)). Contributed by @nurjinjafar.
* Allow setting knock room directory visibility ([\#11529](https://github.com/matrix-org/matrix-react-sdk/pull/11529)). Contributed by @charlynguyen.
## 🐛 Bug Fixes
* upgrade electron to 26.2.1 to fix CVE-2023-4863 ([\#1226](https://github.com/vector-im/element-desktop/pull/1226)). Contributed by @selfisekai.
* Improve edge cases around macOS drag handles ([\#1219](https://github.com/vector-im/element-desktop/pull/1219)). Fixes #1199 and #1188.
* Escape placeholder before injecting it into the style ([\#11607](https://github.com/matrix-org/matrix-react-sdk/pull/11607)).
* Move ViewUser action callback to RoomView ([\#11495](https://github.com/matrix-org/matrix-react-sdk/pull/11495)). Fixes vector-im/element-web#26040.
* Fix room timeline search toggling behaviour edge case ([\#11605](https://github.com/matrix-org/matrix-react-sdk/pull/11605)). Fixes vector-im/element-web#26105.
* Avoid rendering view-message link in RoomKnocksBar unnecessarily ([\#11598](https://github.com/matrix-org/matrix-react-sdk/pull/11598)). Contributed by @charlynguyen.
* Use knock rooms sync to reflect the knock state ([\#11596](https://github.com/matrix-org/matrix-react-sdk/pull/11596)). Fixes vector-im/element-web#26043 and vector-im/element-web#26044. Contributed by @charlynguyen.
* Fix avatar in right panel not using the correct font ([\#11593](https://github.com/matrix-org/matrix-react-sdk/pull/11593)). Fixes vector-im/element-web#26061. Contributed by @MidhunSureshR.
* Add waits in Spotlight Cypress tests, hoping this unflakes them ([\#11590](https://github.com/matrix-org/matrix-react-sdk/pull/11590)). Fixes vector-im/element-web#26053, vector-im/element-web#26140 vector-im/element-web#26139 and vector-im/element-web#26138. Contributed by @andybalaam.
* Fix vertical alignment of default avatar font ([\#11582](https://github.com/matrix-org/matrix-react-sdk/pull/11582)). Fixes vector-im/element-web#26081.
* Fix avatars in public room & space search being flex shrunk ([\#11580](https://github.com/matrix-org/matrix-react-sdk/pull/11580)). Fixes vector-im/element-web#26133.
* Fix EventTile avatars being rendered with a size of 0 instead of hidden ([\#11558](https://github.com/matrix-org/matrix-react-sdk/pull/11558)). Fixes vector-im/element-web#26075.
Changes in [1.11.43](https://github.com/vector-im/element-desktop/releases/tag/v1.11.43) (2023-09-15)
=====================================================================================================
## 🔒 Security
* upgrade electron to 26.2.1 to fix CVE-2023-4863 ([\#1226](https://github.com/vector-im/element-desktop/pull/1226)). Contributed by @selfisekai.
Changes in [1.11.42](https://github.com/vector-im/element-desktop/releases/tag/v1.11.42) (2023-09-13)
=====================================================================================================
## 🐛 Bug Fixes
* Update Compound to fix Firefox-specific avatar regression ([\#11604](https://github.com/matrix-org/matrix-react-sdk/pull/11604)). Fixes vector-im/element-web#26155.
Changes in [1.11.41](https://github.com/vector-im/element-desktop/releases/tag/v1.11.41) (2023-09-12)
=====================================================================================================
## ✨ Features
* Make SVGR icons use forward ref ([\#26082](https://github.com/vector-im/element-web/pull/26082)).
* Add support for rendering a custom wrapper around Element ([\#25537](https://github.com/vector-im/element-web/pull/25537)). Contributed by @maheichyk.
* Allow creating public knock rooms ([\#11481](https://github.com/matrix-org/matrix-react-sdk/pull/11481)). Contributed by @charlynguyen.
* Render custom images in reactions according to MSC4027 ([\#11087](https://github.com/matrix-org/matrix-react-sdk/pull/11087)). Contributed by @sumnerevans.
* Introduce room knocks bar ([\#11475](https://github.com/matrix-org/matrix-react-sdk/pull/11475)). Contributed by @charlynguyen.
* Room header UI updates ([\#11507](https://github.com/matrix-org/matrix-react-sdk/pull/11507)). Fixes vector-im/element-web#25892.
* Remove green "verified" bar for encrypted events ([\#11496](https://github.com/matrix-org/matrix-react-sdk/pull/11496)).
* Update member count on room summary update ([\#11488](https://github.com/matrix-org/matrix-react-sdk/pull/11488)).
* Support for E2EE in Element Call ([\#11492](https://github.com/matrix-org/matrix-react-sdk/pull/11492)).
* Allow requesting to join knock rooms via spotlight ([\#11482](https://github.com/matrix-org/matrix-react-sdk/pull/11482)). Contributed by @charlynguyen.
* Lock out the first tab if Element is opened in a second tab. ([\#11425](https://github.com/matrix-org/matrix-react-sdk/pull/11425)). Fixes vector-im/element-web#25157.
* Change avatar to use Compound implementation ([\#11448](https://github.com/matrix-org/matrix-react-sdk/pull/11448)).
## 🐛 Bug Fixes
* Fix vertical alignment of default avatar font ([\#11582](https://github.com/matrix-org/matrix-react-sdk/pull/11582)). Fixes vector-im/element-web#26081.
* Fix avatars in public room & space search being flex shrunk ([\#11580](https://github.com/matrix-org/matrix-react-sdk/pull/11580)). Fixes vector-im/element-web#26133.
* Fix EventTile avatars being rendered with a size of 0 instead of hidden ([\#11558](https://github.com/matrix-org/matrix-react-sdk/pull/11558)). Fixes vector-im/element-web#26075.
* Updated no drag zones ([\#1193](https://github.com/vector-im/element-desktop/pull/1193)).
* Fix compound external assets path in bundle ([\#26069](https://github.com/vector-im/element-web/pull/26069)).
* Use RoomStateEvent.Update for knocks ([\#11516](https://github.com/matrix-org/matrix-react-sdk/pull/11516)). Contributed by @charlynguyen.
* Prevent event propagation when clicking icon buttons ([\#11515](https://github.com/matrix-org/matrix-react-sdk/pull/11515)).
* Only display RoomKnocksBar when feature flag is enabled ([\#11513](https://github.com/matrix-org/matrix-react-sdk/pull/11513)). Contributed by @andybalaam.
* Fix avatars of knock members for people tab of room settings ([\#11506](https://github.com/matrix-org/matrix-react-sdk/pull/11506)). Fixes vector-im/element-web#26083. Contributed by @charlynguyen.
* Fixes read receipt avatar offset ([\#11483](https://github.com/matrix-org/matrix-react-sdk/pull/11483)). Fixes vector-im/element-web#26067, vector-im/element-web#26064 vector-im/element-web#26059 and vector-im/element-web#26061.
* Fix avatar defects ([\#11473](https://github.com/matrix-org/matrix-react-sdk/pull/11473)). Fixes vector-im/element-web#26051 and vector-im/element-web#26046.
* Fix consistent avatar output for Percy ([\#11472](https://github.com/matrix-org/matrix-react-sdk/pull/11472)). Fixes vector-im/element-web#26049 and vector-im/element-web#26052.
* Fix colour of avatar and colour matching with username ([\#11470](https://github.com/matrix-org/matrix-react-sdk/pull/11470)). Fixes vector-im/element-web#26042.
* Fix incompatibility of Soft Logout with Element-R ([\#11468](https://github.com/matrix-org/matrix-react-sdk/pull/11468)).
* Fix instances of double translation and guard translation calls using typescript ([\#11443](https://github.com/matrix-org/matrix-react-sdk/pull/11443)).
Changes in [1.11.40](https://github.com/vector-im/element-desktop/releases/tag/v1.11.40) (2023-08-29)
=====================================================================================================
## ✨ Features
* Add FreeBSD support ([\#1163](https://github.com/vector-im/element-desktop/pull/1163)). Contributed by @lwhsu.
* Hide account deactivation for externally managed accounts ([\#11445](https://github.com/matrix-org/matrix-react-sdk/pull/11445)). Fixes vector-im/element-web#26022. Contributed by @kerryarchibald.
* OIDC: Redirect to delegated auth provider when signing out ([\#11432](https://github.com/matrix-org/matrix-react-sdk/pull/11432)). Fixes vector-im/element-web#26000. Contributed by @kerryarchibald.
* Disable 3pid fields in settings when `m.3pid_changes` capability is disabled ([\#11430](https://github.com/matrix-org/matrix-react-sdk/pull/11430)). Fixes vector-im/element-web#25995. Contributed by @kerryarchibald.
* OIDC: disable multi session signout for OIDC-aware servers in session manager ([\#11431](https://github.com/matrix-org/matrix-react-sdk/pull/11431)). Contributed by @kerryarchibald.
* Implement updated open dialog method of the Module API ([\#11395](https://github.com/matrix-org/matrix-react-sdk/pull/11395)). Contributed by @dhenneke.
* Polish & delabs `Exploring public spaces` feature ([\#11423](https://github.com/matrix-org/matrix-react-sdk/pull/11423)).
* Treat lists with a single empty item as plain text, not Markdown. ([\#6833](https://github.com/matrix-org/matrix-react-sdk/pull/6833)). Fixes vector-im/element-meta#1265.
* Allow managing room knocks ([\#11404](https://github.com/matrix-org/matrix-react-sdk/pull/11404)). Contributed by @charlynguyen.
* Pin the action buttons to the bottom of the scrollable dialogs ([\#11407](https://github.com/matrix-org/matrix-react-sdk/pull/11407)). Contributed by @dhenneke.
* Support Matrix 1.1 (drop legacy r0 versions) ([\#9819](https://github.com/matrix-org/matrix-react-sdk/pull/9819)).
## 🐛 Bug Fixes
* Don't intercept Ctrl + Cmd + Q on macOS ([\#1174](https://github.com/vector-im/element-desktop/pull/1174)). Contributed by @zhaofengli.
* Improve selectors for macos app draggable regions ([\#1170](https://github.com/vector-im/element-desktop/pull/1170)). Fixes #1169.
* Fix path separator for Windows based systems ([\#25997](https://github.com/vector-im/element-web/pull/25997)).
* Fix instances of double translation and guard translation calls using typescript ([\#11443](https://github.com/matrix-org/matrix-react-sdk/pull/11443)).
* Fix export type "Current timeline" to match its behaviour to its name ([\#11426](https://github.com/matrix-org/matrix-react-sdk/pull/11426)). Fixes vector-im/element-web#25988.
* Fix Room Settings > Notifications file upload input being shown superfluously ([\#11415](https://github.com/matrix-org/matrix-react-sdk/pull/11415)). Fixes vector-im/element-web#18392.
* Simplify registration with email validation ([\#11398](https://github.com/matrix-org/matrix-react-sdk/pull/11398)). Fixes vector-im/element-web#25832 vector-im/element-web#23601 and vector-im/element-web#22297.
* correct home server URL ([\#11391](https://github.com/matrix-org/matrix-react-sdk/pull/11391)). Fixes vector-im/element-web#25931. Contributed by @NSV1991.
* Include non-matching DMs in Spotlight recent conversations when the DM's userId is part of the search API results ([\#11374](https://github.com/matrix-org/matrix-react-sdk/pull/11374)). Contributed by @mgcm.
* Fix useRoomMembers missing updates causing incorrect membership counts ([\#11392](https://github.com/matrix-org/matrix-react-sdk/pull/11392)). Fixes vector-im/element-web#17096.
* Show error when searching public rooms fails ([\#11378](https://github.com/matrix-org/matrix-react-sdk/pull/11378)).
Changes in [1.11.39](https://github.com/vector-im/element-desktop/releases/tag/v1.11.39) (2023-08-15)
=====================================================================================================
## 🦖 Deprecations
* Deprecate camelCase config options ([\#25800](https://github.com/vector-im/element-web/pull/25800)).
* Deprecate customisations in favour of Module API ([\#25736](https://github.com/vector-im/element-web/pull/25736)). Fixes vector-im/element-web#25733.
## ✨ Features
* Switch to hidden titleBar on macOS to integrate the app better ([\#1101](https://github.com/vector-im/element-desktop/pull/1101)).
* Update labs.md for knock rooms ([\#25923](https://github.com/vector-im/element-web/pull/25923)). Contributed by @charlynguyen.
* Package release builds of element-web in package.element.io debs ([\#25198](https://github.com/vector-im/element-web/pull/25198)).
* Allow knocking rooms ([\#11353](https://github.com/matrix-org/matrix-react-sdk/pull/11353)). Contributed by @charlynguyen.
* Support adding space-restricted joins on rooms not members of those spaces ([\#9017](https://github.com/matrix-org/matrix-react-sdk/pull/9017)). Fixes vector-im/element-web#19213.
* Clear requiresClient and show pop-out if widget-api fails to ready ([\#11321](https://github.com/matrix-org/matrix-react-sdk/pull/11321)). Fixes vector-im/customer-retainer#73.
* Bump pagination sizes due to hidden events ([\#11342](https://github.com/matrix-org/matrix-react-sdk/pull/11342)).
* Remove display of key backup signatures from backup settings ([\#11333](https://github.com/matrix-org/matrix-react-sdk/pull/11333)).
* Use PassphraseFields in ExportE2eKeysDialog to enforce minimum passphrase complexity ([\#11222](https://github.com/matrix-org/matrix-react-sdk/pull/11222)). Fixes vector-im/element-web#9478.
## 🐛 Bug Fixes
* Prevent the media lightbox sender info clipping with traffic light on macos ([\#1141](https://github.com/vector-im/element-desktop/pull/1141)). Fixes #1140.
* Restore macOs room header dragability ([\#1136](https://github.com/vector-im/element-desktop/pull/1136)). Fixes #1135.
* Fix ability to interact with room topic in header ([\#1126](https://github.com/vector-im/element-desktop/pull/1126)). Fixes undefined/element-desktop#1125.
* Fix "Export chat" not respecting configured time format in plain text mode ([\#10696](https://github.com/matrix-org/matrix-react-sdk/pull/10696)). Fixes vector-im/element-web#23838. Contributed by @rashmitpankhania.
* Fix some missing 1-count pluralisations around event list summaries ([\#11371](https://github.com/matrix-org/matrix-react-sdk/pull/11371)). Fixes vector-im/element-web#25925.
* Fix create subspace dialog not working for public space creation ([\#11367](https://github.com/matrix-org/matrix-react-sdk/pull/11367)). Fixes vector-im/element-web#25916.
* Search for users on paste ([\#11304](https://github.com/matrix-org/matrix-react-sdk/pull/11304)). Fixes vector-im/element-web#17523. Contributed by @peterscheu-aceart.
* Fix AppTile context menu not always showing up when it has options ([\#11358](https://github.com/matrix-org/matrix-react-sdk/pull/11358)). Fixes vector-im/element-web#25914.
* Fix clicking on home all rooms space notification not working ([\#11337](https://github.com/matrix-org/matrix-react-sdk/pull/11337)). Fixes vector-im/element-web#22844.
* Fix joining a suggested room switching space away ([\#11347](https://github.com/matrix-org/matrix-react-sdk/pull/11347)). Fixes vector-im/element-web#25838.
* Fix home/all rooms context menu in space panel ([\#11350](https://github.com/matrix-org/matrix-react-sdk/pull/11350)). Fixes vector-im/element-web#25896.
* Make keyboard handling in and out of autocomplete completions consistent ([\#11344](https://github.com/matrix-org/matrix-react-sdk/pull/11344)). Fixes vector-im/element-web#25878.
* De-duplicate reactions by sender to account for faulty/malicious servers ([\#11340](https://github.com/matrix-org/matrix-react-sdk/pull/11340)). Fixes vector-im/element-web#25872.
* Fix disable_3pid_login being ignored for the email field ([\#11335](https://github.com/matrix-org/matrix-react-sdk/pull/11335)). Fixes vector-im/element-web#25863.
* Upgrade wysiwyg editor for ctrl+backspace windows fix ([\#11324](https://github.com/matrix-org/matrix-react-sdk/pull/11324)). Fixes vector-im/verticals-internal#102.
* Unhide the view source event toggle - it works well enough ([\#11336](https://github.com/matrix-org/matrix-react-sdk/pull/11336)). Fixes vector-im/element-web#25861.
Changes in [1.11.38](https://github.com/vector-im/element-desktop/releases/tag/v1.11.38) (2023-08-04)
=====================================================================================================
## ✨ Features
* Package release builds of element-web in package.element.io debs ([\#25921](https://github.com/vector-im/element-web/pull/25921)). Contributed by @RiotRobot.
## 🐛 Bug Fixes
* Revert to using the /presence API for presence ([\#11366](https://github.com/matrix-org/matrix-react-sdk/pull/11366))
Changes in [1.11.37](https://github.com/vector-im/element-desktop/releases/tag/v1.11.37) (2023-08-01)
=====================================================================================================
## 🦖 Deprecations
* Deprecate camelCase config options ([\#25800](https://github.com/vector-im/element-web/pull/25800)).
* Deprecate customisations in favour of Module API ([\#25736](https://github.com/vector-im/element-web/pull/25736)). Fixes vector-im/element-web#25733.
## ✨ Features
* Fix Tray icon in Windows forgetting your settings ([\#1059](https://github.com/vector-im/element-desktop/pull/1059)). Fixes #786.
* Do not show "Forget room" button in Room View header for guest users ([\#10898](https://github.com/matrix-org/matrix-react-sdk/pull/10898)). Contributed by @spantaleev.
* Switch to updating presence via /sync calls instead of PUT /presence ([\#11223](https://github.com/matrix-org/matrix-react-sdk/pull/11223)). Fixes vector-im/element-web#20809 vector-im/element-web#13877 and vector-im/element-web#4813.
* Fix blockquote colour contrast ([\#11299](https://github.com/matrix-org/matrix-react-sdk/pull/11299)). Fixes matrix-org/element-web-rageshakes#21800.
* Don't hide room header buttons in video rooms and rooms with a call ([\#9712](https://github.com/matrix-org/matrix-react-sdk/pull/9712)). Fixes vector-im/element-web#23900.
* OIDC: Persist details in session storage, create store ([\#11302](https://github.com/matrix-org/matrix-react-sdk/pull/11302)). Fixes vector-im/element-web#25710. Contributed by @kerryarchibald.
* Allow setting room join rule to knock ([\#11248](https://github.com/matrix-org/matrix-react-sdk/pull/11248)). Contributed by @charlynguyen.
* Retry joins on 524 (Cloudflare timeout) also ([\#11296](https://github.com/matrix-org/matrix-react-sdk/pull/11296)). Fixes vector-im/element-web#8776.
* Make sure users returned by the homeserver search API are displayed. Don't silently drop any. ([\#9556](https://github.com/matrix-org/matrix-react-sdk/pull/9556)). Fixes vector-im/element-web#24422. Contributed by @maxmalek.
* Offer to unban user during invite if inviter has sufficient permissions ([\#11256](https://github.com/matrix-org/matrix-react-sdk/pull/11256)). Fixes vector-im/element-web#3222.
* Split join and goto slash commands, the latter shouldn't auto_join ([\#11259](https://github.com/matrix-org/matrix-react-sdk/pull/11259)). Fixes vector-im/element-web#10128.
* Integration work for rich text editor 2.3.1 ([\#11172](https://github.com/matrix-org/matrix-react-sdk/pull/11172)). Contributed by @alunturner.
* Compound color pass ([\#11079](https://github.com/matrix-org/matrix-react-sdk/pull/11079)). Fixes vector-im/internal-planning#450 and vector-im/element-web#25547.
* Warn when demoting self via /op and /deop slash commands ([\#11214](https://github.com/matrix-org/matrix-react-sdk/pull/11214)). Fixes vector-im/element-web#13726.
## 🐛 Bug Fixes
* Correct Jitsi preferred_domain property ([\#25813](https://github.com/vector-im/element-web/pull/25813)). Contributed by @benbz.
* Fix edge case with sent indicator being drawn when it shouldn't be ([\#11320](https://github.com/matrix-org/matrix-react-sdk/pull/11320)).
* Use correct translation function for WYSIWYG buttons ([\#11315](https://github.com/matrix-org/matrix-react-sdk/pull/11315)). Fixes vector-im/verticals-internal#109.
* Handle empty own profile ([\#11319](https://github.com/matrix-org/matrix-react-sdk/pull/11319)). Fixes vector-im/element-web#25510.
* Fix peeked rooms showing up in historical ([\#11316](https://github.com/matrix-org/matrix-react-sdk/pull/11316)). Fixes vector-im/element-web#22473.
* Ensure consistency when rendering the sent event indicator ([\#11314](https://github.com/matrix-org/matrix-react-sdk/pull/11314)). Fixes vector-im/element-web#17937.
* Prevent re-filtering user directory results in spotlight ([\#11290](https://github.com/matrix-org/matrix-react-sdk/pull/11290)). Fixes vector-im/element-web#24422.
* Fix GIF label on dark theme ([\#11312](https://github.com/matrix-org/matrix-react-sdk/pull/11312)). Fixes vector-im/element-web#25836.
* Fix issues around room notification settings flaking out ([\#11306](https://github.com/matrix-org/matrix-react-sdk/pull/11306)). Fixes vector-im/element-web#16472 vector-im/element-web#21309 and vector-im/element-web#6828.
* Fix invite dialog showing the same user multiple times ([\#11308](https://github.com/matrix-org/matrix-react-sdk/pull/11308)). Fixes vector-im/element-web#25578.
* Don't show composer send button if user cannot send ([\#11298](https://github.com/matrix-org/matrix-react-sdk/pull/11298)). Fixes vector-im/element-web#25825.
* Restore color for sender in imageview ([\#11289](https://github.com/matrix-org/matrix-react-sdk/pull/11289)). Fixes vector-im/element-web#25822.
* Fix changelog dialog heading size ([\#11286](https://github.com/matrix-org/matrix-react-sdk/pull/11286)). Fixes vector-im/element-web#25789.
* Restore offline presence badge color ([\#11287](https://github.com/matrix-org/matrix-react-sdk/pull/11287)). Fixes vector-im/element-web#25792.
* Fix bubble message layout avatar overlap ([\#11284](https://github.com/matrix-org/matrix-react-sdk/pull/11284)). Fixes vector-im/element-web#25818.
* Fix voice call tile size ([\#11285](https://github.com/matrix-org/matrix-react-sdk/pull/11285)). Fixes vector-im/element-web#25684.
* Fix layout of sessions tab buttons ([\#11279](https://github.com/matrix-org/matrix-react-sdk/pull/11279)). Fixes vector-im/element-web#25545.
* Don't bother showing redundant tooltip on space menu ([\#11276](https://github.com/matrix-org/matrix-react-sdk/pull/11276)). Fixes vector-im/element-web#20380.
* Remove reply fallback from notifications ([\#11278](https://github.com/matrix-org/matrix-react-sdk/pull/11278)). Fixes vector-im/element-web#17859.
* Populate info.duration for audio & video file uploads ([\#11225](https://github.com/matrix-org/matrix-react-sdk/pull/11225)). Fixes vector-im/element-web#17720.
* Hide widget menu button if it there are no options available ([\#11257](https://github.com/matrix-org/matrix-react-sdk/pull/11257)). Fixes vector-im/element-web#24826.
* Fix colour regressions ([\#11273](https://github.com/matrix-org/matrix-react-sdk/pull/11273)). Fixes vector-im/element-web#25788, vector-im/element-web#25808 vector-im/element-web#25811 and vector-im/element-web#25812.
* Fix room view not properly maintaining scroll position ([\#11274](https://github.com/matrix-org/matrix-react-sdk/pull/11274)). Fixes vector-im/element-web#25810.
* Prevent user from accidentally double clicking user info admin actions ([\#11254](https://github.com/matrix-org/matrix-react-sdk/pull/11254)). Fixes vector-im/element-web#10944.
* Fix missing metaspace notification badges ([\#11269](https://github.com/matrix-org/matrix-react-sdk/pull/11269)). Fixes vector-im/element-web#25679.
* Fix clicking MXID in timeline going to matrix.to ([\#11263](https://github.com/matrix-org/matrix-react-sdk/pull/11263)). Fixes vector-im/element-web#23342.
* Restoring optional ligatures by resetting letter-spacing ([\#11202](https://github.com/matrix-org/matrix-react-sdk/pull/11202)). Fixes vector-im/element-web#25727.
* Allow emoji presentation selector to not break BigEmoji styling ([\#11253](https://github.com/matrix-org/matrix-react-sdk/pull/11253)). Fixes vector-im/element-web#17848.
* Make event highliht use primary content token ([\#11255](https://github.com/matrix-org/matrix-react-sdk/pull/11255)).
* Fix event info events size and color ([\#11252](https://github.com/matrix-org/matrix-react-sdk/pull/11252)). Fixes vector-im/element-web#25778.
* Fix color mapping for blockquote border ([\#11251](https://github.com/matrix-org/matrix-react-sdk/pull/11251)). Fixes vector-im/element-web#25782.
* Strip emoji variation when searching emoji by emoji ([\#11221](https://github.com/matrix-org/matrix-react-sdk/pull/11221)). Fixes vector-im/element-web#18703.
Changes in [1.11.36](https://github.com/vector-im/element-desktop/releases/tag/v1.11.36) (2023-07-18)
=====================================================================================================
## 🔒 Security
* Fixes for [CVE-2023-37259](https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=CVE-2023-37259) / [GHSA-c9vx-2g7w-rp65](https://github.com/matrix-org/matrix-react-sdk/security/advisories/GHSA-c9vx-2g7w-rp65)
## 🦖 Deprecations
* Deprecate customisations in favour of Module API ([\#25736](https://github.com/vector-im/element-web/pull/25736)). Fixes vector-im/element-web#25733.
## ✨ Features
* OIDC: store initial screen in session storage ([\#25688](https://github.com/vector-im/element-web/pull/25688)). Fixes vector-im/element-web#25656. Contributed by @kerryarchibald.
* Allow default_server_config as a fallback config ([\#25682](https://github.com/vector-im/element-web/pull/25682)). Contributed by @ShadowRZ.
* OIDC: remove auth params from url after login attempt ([\#25664](https://github.com/vector-im/element-web/pull/25664)). Contributed by @kerryarchibald.
* feat(faq): remove keyboard shortcuts button ([\#9342](https://github.com/matrix-org/matrix-react-sdk/pull/9342)). Fixes vector-im/element-web#22625. Contributed by @gefgu.
* GYU: Update banner ([\#11211](https://github.com/matrix-org/matrix-react-sdk/pull/11211)). Fixes vector-im/element-web#25530. Contributed by @justjanne.
* Linkify mxc:// URLs as links to your media repo ([\#11213](https://github.com/matrix-org/matrix-react-sdk/pull/11213)). Fixes vector-im/element-web#6942.
* OIDC: Log in ([\#11199](https://github.com/matrix-org/matrix-react-sdk/pull/11199)). Fixes vector-im/element-web#25657. Contributed by @kerryarchibald.
* Handle all permitted url schemes in linkify ([\#11215](https://github.com/matrix-org/matrix-react-sdk/pull/11215)). Fixes vector-im/element-web#4457 and vector-im/element-web#8720.
* Autoapprove Element Call oidc requests ([\#11209](https://github.com/matrix-org/matrix-react-sdk/pull/11209)). Contributed by @toger5.
* Allow creating knock rooms ([\#11182](https://github.com/matrix-org/matrix-react-sdk/pull/11182)). Contributed by @charlynguyen.
* Expose and pre-populate thread ID in devtools dialog ([\#10953](https://github.com/matrix-org/matrix-react-sdk/pull/10953)).
* Hide URL preview if it will be empty ([\#9029](https://github.com/matrix-org/matrix-react-sdk/pull/9029)).
* Change wording from avatar to profile picture ([\#7015](https://github.com/matrix-org/matrix-react-sdk/pull/7015)). Fixes vector-im/element-meta#1331. Contributed by @aaronraimist.
* Quick and dirty devtool to explore state history ([\#11197](https://github.com/matrix-org/matrix-react-sdk/pull/11197)).
* Consider more user inputs when calculating zxcvbn score ([\#11180](https://github.com/matrix-org/matrix-react-sdk/pull/11180)).
* GYU: Account Notification Settings ([\#11008](https://github.com/matrix-org/matrix-react-sdk/pull/11008)). Fixes vector-im/element-web#24567. Contributed by @justjanne.
* Compound Typography pass ([\#11103](https://github.com/matrix-org/matrix-react-sdk/pull/11103)). Fixes vector-im/element-web#25548.
* OIDC: navigate to authorization endpoint ([\#11096](https://github.com/matrix-org/matrix-react-sdk/pull/11096)). Fixes vector-im/element-web#25574. Contributed by @kerryarchibald.
## 🐛 Bug Fixes
* Fix read receipt sending behaviour around thread roots ([\#3600](https://github.com/matrix-org/matrix-js-sdk/pull/3600)).
* Fix missing metaspace notification badges ([\#11269](https://github.com/matrix-org/matrix-react-sdk/pull/11269)). Fixes vector-im/element-web#25679.
* Make checkboxes less rounded ([\#11224](https://github.com/matrix-org/matrix-react-sdk/pull/11224)). Contributed by @andybalaam.
* GYU: Fix issues with audible keywords without activated mentions ([\#11218](https://github.com/matrix-org/matrix-react-sdk/pull/11218)). Contributed by @justjanne.
* PosthogAnalytics unwatch settings on logout ([\#11207](https://github.com/matrix-org/matrix-react-sdk/pull/11207)). Fixes vector-im/element-web#25703.
* Avoid trying to set room account data for pinned events as guest ([\#11216](https://github.com/matrix-org/matrix-react-sdk/pull/11216)). Fixes vector-im/element-web#6300.
* GYU: Disable sound for DMs checkbox when DM notifications are disabled ([\#11210](https://github.com/matrix-org/matrix-react-sdk/pull/11210)). Contributed by @justjanne.
* force to allow calls without video and audio in embedded mode ([\#11131](https://github.com/matrix-org/matrix-react-sdk/pull/11131)). Contributed by @EnricoSchw.
* Fix room tile text clipping ([\#11196](https://github.com/matrix-org/matrix-react-sdk/pull/11196)). Fixes vector-im/element-web#25718.
* Handle newlines in user pills ([\#11166](https://github.com/matrix-org/matrix-react-sdk/pull/11166)). Fixes vector-im/element-web#10994.
* Limit width of user menu in space panel ([\#11192](https://github.com/matrix-org/matrix-react-sdk/pull/11192)). Fixes vector-im/element-web#22627.
* Add isLocation to ComposerEvent analytics events ([\#11187](https://github.com/matrix-org/matrix-react-sdk/pull/11187)). Contributed by @andybalaam.
* Fix: hide unsupported login elements ([\#11185](https://github.com/matrix-org/matrix-react-sdk/pull/11185)). Fixes vector-im/element-web#25711. Contributed by @kerryarchibald.
* Scope smaller font size to user info panel ([\#11178](https://github.com/matrix-org/matrix-react-sdk/pull/11178)). Fixes vector-im/element-web#25683.
* Apply i18n to strings in the html export ([\#11176](https://github.com/matrix-org/matrix-react-sdk/pull/11176)).
* Inhibit url previews on MXIDs containing slashes same as those without ([\#11160](https://github.com/matrix-org/matrix-react-sdk/pull/11160)).
* Make event info size consistent with state events ([\#11181](https://github.com/matrix-org/matrix-react-sdk/pull/11181)).
* Fix markdown content spacing ([\#11177](https://github.com/matrix-org/matrix-react-sdk/pull/11177)). Fixes vector-im/element-web#25685.
* Fix font-family definition for emojis ([\#11170](https://github.com/matrix-org/matrix-react-sdk/pull/11170)). Fixes vector-im/element-web#25686.
* Fix spurious error sending receipt in thread errors ([\#11157](https://github.com/matrix-org/matrix-react-sdk/pull/11157)).
* Consider the empty push rule actions array equiv to deprecated dont_notify ([\#11155](https://github.com/matrix-org/matrix-react-sdk/pull/11155)). Fixes vector-im/element-web#25674.
* Only trap escape key for cancel reply if there is a reply ([\#11140](https://github.com/matrix-org/matrix-react-sdk/pull/11140)). Fixes vector-im/element-web#25640.
* Update linkify to 4.1.1 ([\#11132](https://github.com/matrix-org/matrix-react-sdk/pull/11132)). Fixes vector-im/element-web#23806.
Changes in [1.11.35](https://github.com/vector-im/element-desktop/releases/tag/v1.11.35) (2023-07-04)
=====================================================================================================
## 🦖 Deprecations
* Remove `feature_favourite_messages` as it is has been abandoned for now ([\#11097](https://github.com/matrix-org/matrix-react-sdk/pull/11097)). Fixes vector-im/element-web#25555.
## ✨ Features
* Use brand and help url from config ([\#1008](https://github.com/vector-im/element-desktop/pull/1008)).
* Don't setup keys on login when encryption is force disabled ([\#11125](https://github.com/matrix-org/matrix-react-sdk/pull/11125)). Contributed by @kerryarchibald.
* OIDC: attempt dynamic client registration ([\#11074](https://github.com/matrix-org/matrix-react-sdk/pull/11074)). Fixes vector-im/element-web#25468 and vector-im/element-web#25467. Contributed by @kerryarchibald.
* OIDC: Check static client registration and add login flow ([\#11088](https://github.com/matrix-org/matrix-react-sdk/pull/11088)). Fixes vector-im/element-web#25467. Contributed by @kerryarchibald.
* Improve message body output from plain text editor ([\#11124](https://github.com/matrix-org/matrix-react-sdk/pull/11124)). Contributed by @alunturner.
* Disable encryption toggle in room settings when force disabled ([\#11122](https://github.com/matrix-org/matrix-react-sdk/pull/11122)). Contributed by @kerryarchibald.
* Add .well-known config option to force disable encryption on room creation ([\#11120](https://github.com/matrix-org/matrix-react-sdk/pull/11120)). Contributed by @kerryarchibald.
* Handle permalinks in room topic ([\#11115](https://github.com/matrix-org/matrix-react-sdk/pull/11115)). Fixes vector-im/element-web#23395.
* Add at room avatar for RTE ([\#11106](https://github.com/matrix-org/matrix-react-sdk/pull/11106)). Contributed by @alunturner.
* Remove new room breadcrumbs ([\#11104](https://github.com/matrix-org/matrix-react-sdk/pull/11104)).
* Update rich text editor dependency and associated changes ([\#11098](https://github.com/matrix-org/matrix-react-sdk/pull/11098)). Contributed by @alunturner.
* Implement new model, hooks and reconcilation code for new GYU notification settings ([\#11089](https://github.com/matrix-org/matrix-react-sdk/pull/11089)). Contributed by @justjanne.
* Allow maintaining a different right panel width for thread panels ([\#11064](https://github.com/matrix-org/matrix-react-sdk/pull/11064)). Fixes vector-im/element-web#25487.
* Make AppPermission pane scrollable ([\#10954](https://github.com/matrix-org/matrix-react-sdk/pull/10954)). Fixes vector-im/element-web#25438 and vector-im/element-web#25511. Contributed by @luixxiul.
* Integrate compound design tokens ([\#11091](https://github.com/matrix-org/matrix-react-sdk/pull/11091)). Fixes vector-im/internal-planning#450.
* Don't warn about the effects of redacting state events when redacting non-state-events ([\#11071](https://github.com/matrix-org/matrix-react-sdk/pull/11071)). Fixes vector-im/element-web#8478.
* Allow specifying help URLs in config.json ([\#11070](https://github.com/matrix-org/matrix-react-sdk/pull/11070)). Fixes vector-im/element-web#15268.
## 🐛 Bug Fixes
* Fix error when generating error for polling for updates ([\#25609](https://github.com/vector-im/element-web/pull/25609)).
* Fix spurious notifications on non-live events ([\#11133](https://github.com/matrix-org/matrix-react-sdk/pull/11133)). Fixes vector-im/element-web#24336.
* Prevent auto-translation within composer ([\#11114](https://github.com/matrix-org/matrix-react-sdk/pull/11114)). Fixes vector-im/element-web#25624.
* Fix caret jump when backspacing into empty line at beginning of editor ([\#11128](https://github.com/matrix-org/matrix-react-sdk/pull/11128)). Fixes vector-im/element-web#22335.
* Fix server picker not allowing you to switch from custom to default ([\#11127](https://github.com/matrix-org/matrix-react-sdk/pull/11127)). Fixes vector-im/element-web#25650.
* Consider the unthreaded read receipt for Unread dot state ([\#11117](https://github.com/matrix-org/matrix-react-sdk/pull/11117)). Fixes vector-im/element-web#24229.
* Increase RTE resilience ([\#11111](https://github.com/matrix-org/matrix-react-sdk/pull/11111)). Fixes vector-im/element-web#25277. Contributed by @alunturner.
* Fix RoomView ignoring alias lookup errors due to them not knowing the roomId ([\#11099](https://github.com/matrix-org/matrix-react-sdk/pull/11099)). Fixes vector-im/element-web#24783 and vector-im/element-web#25562.
* Fix style inconsistencies on SecureBackupPanel ([\#11102](https://github.com/matrix-org/matrix-react-sdk/pull/11102)). Fixes vector-im/element-web#25615. Contributed by @luixxiul.
* Remove unknown MXIDs from invite suggestions ([\#11055](https://github.com/matrix-org/matrix-react-sdk/pull/11055)). Fixes vector-im/element-web#25446.
* Reduce volume of ring sounds to normalised levels ([\#9143](https://github.com/matrix-org/matrix-react-sdk/pull/9143)). Contributed by @JMoVS.
* Fix slash commands not being enabled in certain cases ([\#11090](https://github.com/matrix-org/matrix-react-sdk/pull/11090)). Fixes vector-im/element-web#25572.
* Prevent escape in threads from sending focus to main timeline composer ([\#11061](https://github.com/matrix-org/matrix-react-sdk/pull/11061)). Fixes vector-im/element-web#23397.
Changes in [1.11.34](https://github.com/vector-im/element-desktop/releases/tag/v1.11.34) (2023-06-20)
=====================================================================================================
## ✨ Features
* OIDC: add delegatedauthentication to validated server config ([\#11053](https://github.com/matrix-org/matrix-react-sdk/pull/11053)). Contributed by @kerryarchibald.
* Allow image pasting in plain mode in RTE ([\#11056](https://github.com/matrix-org/matrix-react-sdk/pull/11056)). Contributed by @alunturner.
* Show room options menu if "UIComponent.roomOptionsMenu" is enabled ([\#10365](https://github.com/matrix-org/matrix-react-sdk/pull/10365)). Contributed by @maheichyk.
* Allow image pasting in rich text mode in RTE ([\#11049](https://github.com/matrix-org/matrix-react-sdk/pull/11049)). Contributed by @alunturner.
* Update voice broadcast redaction to use MSC3912 `with_rel_type` instead of `with_relations` ([\#11014](https://github.com/matrix-org/matrix-react-sdk/pull/11014)). Fixes vector-im/element-web#25471.
* Add config to skip widget_build_url for DM rooms ([\#11044](https://github.com/matrix-org/matrix-react-sdk/pull/11044)). Fixes vector-im/customer-retainer#74.
* Inhibit interactions on forward dialog message previews ([\#11025](https://github.com/matrix-org/matrix-react-sdk/pull/11025)). Fixes vector-im/element-web#23459.
* Removed `DecryptionFailureBar.tsx` ([\#11027](https://github.com/matrix-org/matrix-react-sdk/pull/11027)). Fixes vector-im/element-meta#1358. Contributed by @florianduros.
## 🐛 Bug Fixes
* Fix translucent `TextualEvent` on search results panel ([\#10810](https://github.com/matrix-org/matrix-react-sdk/pull/10810)). Fixes vector-im/element-web#25292. Contributed by @luixxiul.
* Matrix matrix scheme permalink constructor not stripping query params ([\#11060](https://github.com/matrix-org/matrix-react-sdk/pull/11060)). Fixes vector-im/element-web#25535.
* Fix: "manually verify by text" does nothing ([\#11059](https://github.com/matrix-org/matrix-react-sdk/pull/11059)). Fixes vector-im/element-web#25375. Contributed by @kerryarchibald.
* Make group calls respect the ICE fallback setting ([\#11047](https://github.com/matrix-org/matrix-react-sdk/pull/11047)). Fixes vector-im/voip-internal#65.
* Align list items on the tooltip to the start ([\#11041](https://github.com/matrix-org/matrix-react-sdk/pull/11041)). Fixes vector-im/element-web#25355. Contributed by @luixxiul.
* Clear thread panel event permalink when changing rooms ([\#11024](https://github.com/matrix-org/matrix-react-sdk/pull/11024)). Fixes vector-im/element-web#25484.
* Fix spinner placement on pinned widgets being reloaded ([\#10970](https://github.com/matrix-org/matrix-react-sdk/pull/10970)). Fixes vector-im/element-web#25431. Contributed by @luixxiul.
Changes in [1.11.33](https://github.com/vector-im/element-desktop/releases/tag/v1.11.33) (2023-06-09)
=====================================================================================================
## 🐛 Bug Fixes
* Bump matrix-react-sdk to v3.73.1 for matrix-js-sdk v26.0.1 Fixes vector-im/element-web#25526.
Changes in [1.11.32](https://github.com/vector-im/element-desktop/releases/tag/v1.11.32) (2023-06-06)
=====================================================================================================
## ✨ Features
* Redirect to the SSO page if `sso_redirect_options.on_welcome_page` is enabled and the URL hash is empty ([\#25495](https://github.com/vector-im/element-web/pull/25495)). Contributed by @dhenneke.
* vector/index.html: Allow fetching blob urls ([\#25336](https://github.com/vector-im/element-web/pull/25336)). Contributed by @SuperKenVery.
* When joining room in sub-space join the parents too ([\#11011](https://github.com/matrix-org/matrix-react-sdk/pull/11011)).
* Include thread replies in message previews ([\#10631](https://github.com/matrix-org/matrix-react-sdk/pull/10631)). Fixes vector-im/element-web#23920.
* Use semantic headings in space preferences ([\#11021](https://github.com/matrix-org/matrix-react-sdk/pull/11021)). Contributed by @kerryarchibald.
* Use semantic headings in user settings - Ignored users ([\#11006](https://github.com/matrix-org/matrix-react-sdk/pull/11006)). Contributed by @kerryarchibald.
* Use semantic headings in user settings - profile ([\#10973](https://github.com/matrix-org/matrix-react-sdk/pull/10973)). Fixes vector-im/element-web#25461. Contributed by @kerryarchibald.
* Use semantic headings in user settings - account ([\#10972](https://github.com/matrix-org/matrix-react-sdk/pull/10972)). Contributed by @kerryarchibald.
* Support `Insert from iPhone or iPad` in Safari ([\#10851](https://github.com/matrix-org/matrix-react-sdk/pull/10851)). Fixes vector-im/element-web#25327. Contributed by @SuperKenVery.
* Specify supportedStages for User Interactive Auth ([\#10975](https://github.com/matrix-org/matrix-react-sdk/pull/10975)). Fixes vector-im/element-web#19605.
* Pass device id to widgets ([\#10209](https://github.com/matrix-org/matrix-react-sdk/pull/10209)). Contributed by @Fox32.
* Use semantic headings in user settings - discovery ([\#10838](https://github.com/matrix-org/matrix-react-sdk/pull/10838)). Contributed by @kerryarchibald.
* Use semantic headings in user settings - Notifications ([\#10948](https://github.com/matrix-org/matrix-react-sdk/pull/10948)). Contributed by @kerryarchibald.
* Use semantic headings in user settings - spellcheck and language ([\#10959](https://github.com/matrix-org/matrix-react-sdk/pull/10959)). Contributed by @kerryarchibald.
* Use semantic headings in user settings Appearance ([\#10827](https://github.com/matrix-org/matrix-react-sdk/pull/10827)). Contributed by @kerryarchibald.
* Use semantic heading in user settings Sidebar & Voip ([\#10782](https://github.com/matrix-org/matrix-react-sdk/pull/10782)). Contributed by @kerryarchibald.
* Use semantic headings in user settings Security ([\#10774](https://github.com/matrix-org/matrix-react-sdk/pull/10774)). Contributed by @kerryarchibald.
* Use semantic headings in user settings - integrations and account deletion ([\#10837](https://github.com/matrix-org/matrix-react-sdk/pull/10837)). Fixes vector-im/element-web#25378. Contributed by @kerryarchibald.
* Use semantic headings in user settings Preferences ([\#10794](https://github.com/matrix-org/matrix-react-sdk/pull/10794)). Contributed by @kerryarchibald.
* Use semantic headings in user settings Keyboard ([\#10793](https://github.com/matrix-org/matrix-react-sdk/pull/10793)). Contributed by @kerryarchibald.
* RTE plain text mentions as pills ([\#10852](https://github.com/matrix-org/matrix-react-sdk/pull/10852)). Contributed by @alunturner.
* Allow welcome.html logo to be replaced by config ([\#25339](https://github.com/vector-im/element-web/pull/25339)). Fixes vector-im/element-web#8636.
* Use semantic headings in user settings Labs ([\#10773](https://github.com/matrix-org/matrix-react-sdk/pull/10773)). Contributed by @kerryarchibald.
* Use semantic list elements for menu lists and tab lists ([\#10902](https://github.com/matrix-org/matrix-react-sdk/pull/10902)). Fixes vector-im/element-web#24928.
* Fix aria-required-children axe violation ([\#10900](https://github.com/matrix-org/matrix-react-sdk/pull/10900)). Fixes vector-im/element-web#25342.
* Enable pagination for overlay timelines ([\#10757](https://github.com/matrix-org/matrix-react-sdk/pull/10757)). Fixes vector-im/voip-internal#107.
* Add tooltip to disabled invite button due to lack of permissions ([\#10869](https://github.com/matrix-org/matrix-react-sdk/pull/10869)). Fixes vector-im/element-web#9824.
* Respect configured auth_header_logo_url for default Welcome page ([\#10870](https://github.com/matrix-org/matrix-react-sdk/pull/10870)).
* Specify lazy loading for avatars ([\#10866](https://github.com/matrix-org/matrix-react-sdk/pull/10866)). Fixes vector-im/element-web#1983.
* Room and user mentions for plain text editor ([\#10665](https://github.com/matrix-org/matrix-react-sdk/pull/10665)). Contributed by @alunturner.
* Add audible notifcation on broadcast error ([\#10654](https://github.com/matrix-org/matrix-react-sdk/pull/10654)). Fixes vector-im/element-web#25132.
* Fall back from server generated thumbnail to original image ([\#10853](https://github.com/matrix-org/matrix-react-sdk/pull/10853)).
* Use semantically correct elements for room sublist context menu ([\#10831](https://github.com/matrix-org/matrix-react-sdk/pull/10831)). Fixes vector-im/customer-retainer#46.
* Avoid calling prepareToEncrypt onKeyDown ([\#10828](https://github.com/matrix-org/matrix-react-sdk/pull/10828)).
* Allows search to recognize full room links ([\#8275](https://github.com/matrix-org/matrix-react-sdk/pull/8275)). Contributed by @bolu-tife.
* "Show rooms with unread messages first" should not be on by default for new users ([\#10820](https://github.com/matrix-org/matrix-react-sdk/pull/10820)). Fixes vector-im/element-web#25304. Contributed by @kerryarchibald.
* Fix emitter handler leak in ThreadView ([\#10803](https://github.com/matrix-org/matrix-react-sdk/pull/10803)).
* Add better error for email invites without identity server ([\#10739](https://github.com/matrix-org/matrix-react-sdk/pull/10739)). Fixes vector-im/element-web#16893.
* Move reaction message previews out of labs ([\#10601](https://github.com/matrix-org/matrix-react-sdk/pull/10601)). Fixes vector-im/element-web#25083.
* Sort muted rooms to the bottom of their section of the room list ([\#10592](https://github.com/matrix-org/matrix-react-sdk/pull/10592)). Fixes vector-im/element-web#25131. Contributed by @kerryarchibald.
* Use semantic headings in user settings Help & About ([\#10752](https://github.com/matrix-org/matrix-react-sdk/pull/10752)). Contributed by @kerryarchibald.
* use ExternalLink components for external links ([\#10758](https://github.com/matrix-org/matrix-react-sdk/pull/10758)). Contributed by @kerryarchibald.
* Use semantic headings in space settings ([\#10751](https://github.com/matrix-org/matrix-react-sdk/pull/10751)). Contributed by @kerryarchibald.
* Use semantic headings for room settings content ([\#10734](https://github.com/matrix-org/matrix-react-sdk/pull/10734)). Contributed by @kerryarchibald.
## 🐛 Bug Fixes
* Use consistent fonts for Japanese text ([\#10980](https://github.com/matrix-org/matrix-react-sdk/pull/10980)). Fixes vector-im/element-web#22333 and vector-im/element-web#23899.
* Fix: server picker validates unselected option ([\#11020](https://github.com/matrix-org/matrix-react-sdk/pull/11020)). Fixes vector-im/element-web#25488. Contributed by @kerryarchibald.
* Fix room list notification badges going missing in compact layout ([\#11022](https://github.com/matrix-org/matrix-react-sdk/pull/11022)). Fixes vector-im/element-web#25372.
* Fix call to `startSingleSignOn` passing enum in place of idpId ([\#10998](https://github.com/matrix-org/matrix-react-sdk/pull/10998)). Fixes vector-im/element-web#24953.
* Remove hover effect from user name on a DM creation UI ([\#10887](https://github.com/matrix-org/matrix-react-sdk/pull/10887)). Fixes vector-im/element-web#25305. Contributed by @luixxiul.
* Fix layout regression in public space invite dialog ([\#11009](https://github.com/matrix-org/matrix-react-sdk/pull/11009)). Fixes vector-im/element-web#25458.
* Fix layout regression in session dropdown ([\#10999](https://github.com/matrix-org/matrix-react-sdk/pull/10999)). Fixes vector-im/element-web#25448.
* Fix spacing regression in user settings - roles & permissions ([\#10993](https://github.com/matrix-org/matrix-react-sdk/pull/10993)). Fixes vector-im/element-web#25447 and vector-im/element-web#25451. Contributed by @kerryarchibald.
* Fall back to receipt timestamp if we have no event (react-sdk part) ([\#10974](https://github.com/matrix-org/matrix-react-sdk/pull/10974)). Fixes vector-im/element-web#10954. Contributed by @andybalaam.
* Fix: Room header 'view your device list' does not link to new session manager ([\#10979](https://github.com/matrix-org/matrix-react-sdk/pull/10979)). Fixes vector-im/element-web#25440. Contributed by @kerryarchibald.
* Fix display of devices without encryption support in Settings dialog ([\#10977](https://github.com/matrix-org/matrix-react-sdk/pull/10977)). Fixes vector-im/element-web#25413.
* Use aria descriptions instead of labels for TextWithTooltip ([\#10952](https://github.com/matrix-org/matrix-react-sdk/pull/10952)). Fixes vector-im/element-web#25398.
* Use grapheme-splitter instead of lodash for saving emoji from being ripped apart ([\#10976](https://github.com/matrix-org/matrix-react-sdk/pull/10976)). Fixes vector-im/element-web#22196.
* Fix: content overflow in settings subsection ([\#10960](https://github.com/matrix-org/matrix-react-sdk/pull/10960)). Fixes vector-im/element-web#25416. Contributed by @kerryarchibald.
* Make `Privacy Notice` external link on integration manager ToS clickable ([\#10914](https://github.com/matrix-org/matrix-react-sdk/pull/10914)). Fixes vector-im/element-web#25384. Contributed by @luixxiul.
* Ensure that open message context menus are updated when the event is sent ([\#10950](https://github.com/matrix-org/matrix-react-sdk/pull/10950)).
* Ensure that open sticker picker dialogs are updated when the widget configuration is updated. ([\#10945](https://github.com/matrix-org/matrix-react-sdk/pull/10945)).
* Fix big emoji in replies ([\#10932](https://github.com/matrix-org/matrix-react-sdk/pull/10932)). Fixes vector-im/element-web#24798.
* Hide empty `MessageActionBar` on message edit history dialog ([\#10447](https://github.com/matrix-org/matrix-react-sdk/pull/10447)). Fixes vector-im/element-web#24903. Contributed by @luixxiul.
* Fix roving tab index getting confused after dragging space order ([\#10901](https://github.com/matrix-org/matrix-react-sdk/pull/10901)).
* Attempt a potential workaround for stuck notifs ([\#3384](https://github.com/matrix-org/matrix-js-sdk/pull/3384)). Fixes vector-im/element-web#25406. Contributed by @andybalaam.
* Update to seshat 3.0.1 ([\#960](https://github.com/vector-im/element-desktop/pull/960)). Fixes #959.
* Fix macos update check exploding ([\#944](https://github.com/vector-im/element-desktop/pull/944)). Fixes #668.
* Handle trailing dot FQDNs for domain-specific config.json files ([\#25351](https://github.com/vector-im/element-web/pull/25351)). Fixes vector-im/element-web#8858.
* Ignore edits in message previews when they concern messages other than latest ([\#10868](https://github.com/matrix-org/matrix-react-sdk/pull/10868)). Fixes vector-im/element-web#14872.
* Send correct receipts when viewing a room ([\#10864](https://github.com/matrix-org/matrix-react-sdk/pull/10864)). Fixes vector-im/element-web#25196.
* Fix timeline search bar being overlapped by the right panel ([\#10809](https://github.com/matrix-org/matrix-react-sdk/pull/10809)). Fixes vector-im/element-web#25291. Contributed by @luixxiul.
* Fix the state shown for call in rooms ([\#10833](https://github.com/matrix-org/matrix-react-sdk/pull/10833)).
* Add string for membership event where both displayname & avatar change ([\#10880](https://github.com/matrix-org/matrix-react-sdk/pull/10880)). Fixes vector-im/element-web#18026.
* Fix people space notification badge not updating for new DM invites ([\#10849](https://github.com/matrix-org/matrix-react-sdk/pull/10849)). Fixes vector-im/element-web#23248.
* Fix regression in emoji picker order mangling after clearing filter ([\#10854](https://github.com/matrix-org/matrix-react-sdk/pull/10854)). Fixes vector-im/element-web#25323.
* Fix: Edit history modal crash ([\#10834](https://github.com/matrix-org/matrix-react-sdk/pull/10834)). Fixes vector-im/element-web#25309. Contributed by @kerryarchibald.
* Fix long room address and name not being clipped on room info card and update `_RoomSummaryCard.pcss` ([\#10811](https://github.com/matrix-org/matrix-react-sdk/pull/10811)). Fixes vector-im/element-web#25293. Contributed by @luixxiul.
* Treat thumbnail upload failures as complete upload failures ([\#10829](https://github.com/matrix-org/matrix-react-sdk/pull/10829)). Fixes vector-im/element-web#7069.
* Update finite automata to match user identifiers as per spec ([\#10798](https://github.com/matrix-org/matrix-react-sdk/pull/10798)). Fixes vector-im/element-web#25246.
* Fix icon on empty notification panel ([\#10817](https://github.com/matrix-org/matrix-react-sdk/pull/10817)). Fixes vector-im/element-web#25298 and vector-im/element-web#25302. Contributed by @luixxiul.
* Fix: Threads button is highlighted when I create a new room ([\#10819](https://github.com/matrix-org/matrix-react-sdk/pull/10819)). Fixes vector-im/element-web#25284. Contributed by @kerryarchibald.
* Fix the top heading of notification panel ([\#10818](https://github.com/matrix-org/matrix-react-sdk/pull/10818)). Fixes vector-im/element-web#25303. Contributed by @luixxiul.
* Fix the color of the verified E2EE icon on `RoomSummaryCard` ([\#10812](https://github.com/matrix-org/matrix-react-sdk/pull/10812)). Fixes vector-im/element-web#25295. Contributed by @luixxiul.
* Fix: No feedback when waiting for the server on a /delete_devices request with SSO ([\#10795](https://github.com/matrix-org/matrix-react-sdk/pull/10795)). Fixes vector-im/element-web#23096. Contributed by @kerryarchibald.
* Fix: reveal images when image previews are disabled ([\#10781](https://github.com/matrix-org/matrix-react-sdk/pull/10781)). Fixes vector-im/element-web#25271. Contributed by @kerryarchibald.
* Fix accessibility issues around the room list and space panel ([\#10717](https://github.com/matrix-org/matrix-react-sdk/pull/10717)). Fixes vector-im/element-web#13345.
* Ensure tooltip contents is linked via aria to the target element ([\#10729](https://github.com/matrix-org/matrix-react-sdk/pull/10729)). Fixes vector-im/customer-retainer#43.
Changes in [1.11.31](https://github.com/vector-im/element-desktop/releases/tag/v1.11.31) (2023-05-10)
=====================================================================================================

View File

@@ -1,6 +1,6 @@
![Build](https://github.com/vector-im/element-desktop/actions/workflows/build.yaml/badge.svg)
![Static Analysis](https://github.com/vector-im/element-desktop/actions/workflows/static_analysis.yaml/badge.svg)
[![Localazy](https://img.shields.io/endpoint?url=https%3A%2F%2Fconnect.localazy.com%2Fstatus%2Felement-web%2Fdata%3Fcontent%3Dall%26title%3Dlocalazy%26logo%3Dtrue)](https://localazy.com/p/element-web)
[![Weblate](https://translate.element.io/widgets/element-desktop/-/element-desktop/svg-badge.svg)](https://translate.element.io/engage/element-desktop/)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=element-desktop&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=element-desktop)
[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=element-desktop&metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=element-desktop)
[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=element-desktop&metric=bugs)](https://sonarcloud.io/summary/new_code?id=element-desktop)
@@ -149,6 +149,8 @@ To add a new translation, head to the [translating doc](https://github.com/vecto
For a developer guide, see the [translating dev doc](https://github.com/vector-im/element-web/blob/develop/docs/translating-dev.md).
[<img src="https://translate.element.io/widgets/element-desktop/-/multi-auto.svg" alt="translationsstatus" width="340">](https://translate.element.io/engage/element-desktop/?utm_source=widget)
# Report bugs & give feedback
If you run into any bugs or have feedback you'd like to share, please let us know on GitHub.

View File

@@ -1,14 +1,6 @@
{
"update_base_url": "https://packages.element.io/nightly/update/",
"default_server_name": "matrix.org",
"default_server_config": {
"m.homeserver": {
"base_url": "https://matrix-client.matrix.org"
},
"m.identity_server": {
"base_url": "https://vector.im"
}
},
"brand": "Element Nightly",
"integrations_ui_url": "https://scalar.vector.im/",
"integrations_rest_url": "https://scalar.vector.im/api",
@@ -21,8 +13,8 @@
],
"bug_report_endpoint_url": "https://element.io/bugreports/submit",
"uisi_autorageshake_app": "element-auto-uisi",
"show_labs_settings": true,
"room_directory": {
"showLabsSettings": true,
"roomDirectory": {
"servers": ["matrix.org", "gitter.im", "libera.chat"]
},
"enable_presence_by_hs_url": {
@@ -44,8 +36,8 @@
"environment": "nightly"
},
"posthog": {
"project_api_key": "phc_Jzsm6DTm6V2705zeU5dcNvQDlonOR68XvX2sh1sEOHO",
"api_host": "https://posthog.element.io"
"projectApiKey": "phc_Jzsm6DTm6V2705zeU5dcNvQDlonOR68XvX2sh1sEOHO",
"apiHost": "https://posthog.element.io"
},
"privacy_policy_url": "https://element.io/cookie-policy",
"features": {
@@ -53,7 +45,7 @@
"feature_video_rooms": true
},
"element_call": {
"url": "https://element-call-livekit.netlify.app"
"url": "https://element-call.netlify.app"
},
"map_style_url": "https://api.maptiler.com/maps/streets/style.json?key=fU3vlMsMn4Jb6dnEIFsx"
}

View File

@@ -1,14 +1,6 @@
{
"update_base_url": "https://packages.element.io/desktop/update/",
"default_server_name": "matrix.org",
"default_server_config": {
"m.homeserver": {
"base_url": "https://matrix-client.matrix.org"
},
"m.identity_server": {
"base_url": "https://vector.im"
}
},
"brand": "Element",
"integrations_ui_url": "https://scalar.vector.im/",
"integrations_rest_url": "https://scalar.vector.im/api",
@@ -21,10 +13,10 @@
],
"bug_report_endpoint_url": "https://element.io/bugreports/submit",
"uisi_autorageshake_app": "element-auto-uisi",
"room_directory": {
"roomDirectory": {
"servers": ["matrix.org", "gitter.im", "libera.chat"]
},
"show_labs_settings": false,
"showLabsSettings": false,
"enable_presence_by_hs_url": {
"https://matrix.org": false,
"https://matrix-client.matrix.org": false
@@ -40,8 +32,8 @@
}
],
"posthog": {
"project_api_key": "phc_Jzsm6DTm6V2705zeU5dcNvQDlonOR68XvX2sh1sEOHO",
"api_host": "https://posthog.element.io"
"projectApiKey": "phc_Jzsm6DTm6V2705zeU5dcNvQDlonOR68XvX2sh1sEOHO",
"apiHost": "https://posthog.element.io"
},
"privacy_policy_url": "https://element.io/cookie-policy",
"map_style_url": "https://api.maptiler.com/maps/streets/style.json?key=fU3vlMsMn4Jb6dnEIFsx"

View File

@@ -1,37 +0,0 @@
{
"readKey": "a7688614897667993891-866e2615b0a22e6ccef56aea9b10e815efa3e1296752a7a30bd9925f1a8f33e7",
"upload": {
"type": "json",
"keySeparator": "|",
"deprecate": "file",
"features": ["plural_object", "filter_untranslated"],
"files": [
{
"pattern": "src/i18n/strings/en_EN.json",
"file": "element-desktop.json",
"lang": "inherited"
},
{
"group": "existing",
"pattern": "src/i18n/strings/*.json",
"file": "element-desktop.json",
"excludes": ["src/i18n/strings/en_EN.json"],
"lang": "${autodetectLang}"
}
]
},
"download": {
"files": [
{
"conditions": "equals: ${file}, element-desktop.json",
"output": "src/i18n/strings/${langLsrUnderscore}.json"
}
],
"includeSourceLang": "${includeSourceLang|false}",
"langAliases": {
"en": "en-EN"
}
}
}

View File

@@ -2,7 +2,7 @@
"name": "element-desktop",
"productName": "Element",
"main": "lib/electron-main.js",
"version": "1.11.44-rc.1",
"version": "1.11.31",
"description": "A feature-rich client for Matrix.org",
"author": "Element",
"homepage": "https://element.io",
@@ -16,10 +16,9 @@
"node": ">=16.0.0"
},
"scripts": {
"i18n": "matrix-gen-i18n && yarn i18n:sort && yarn i18n:lint",
"i18n:sort": "jq --sort-keys '.' src/i18n/strings/en_EN.json > src/i18n/strings/en_EN.json.tmp && mv src/i18n/strings/en_EN.json.tmp src/i18n/strings/en_EN.json",
"i18n:lint": "prettier --write src/i18n/strings/ --ignore-path /dev/null",
"i18n:diff": "cp src/i18n/strings/en_EN.json src/i18n/strings/en_EN_orig.json && yarn i18n && matrix-compare-i18n-files src/i18n/strings/en_EN_orig.json src/i18n/strings/en_EN.json",
"i18n": "matrix-gen-i18n",
"prunei18n": "matrix-prune-i18n",
"diff-i18n": "cp src/i18n/strings/en_EN.json src/i18n/strings/en_EN_orig.json && matrix-gen-i18n && matrix-compare-i18n-files src/i18n/strings/en_EN_orig.json src/i18n/strings/en_EN.json",
"mkdirs": "mkdirp packages deploys",
"fetch": "yarn run mkdirs && ts-node scripts/fetch-package.ts",
"asar-webapp": "asar p webapp webapp.asar",
@@ -65,65 +64,63 @@
"electron-window-state": "^5.0.3",
"minimist": "^1.2.6",
"node-fetch": "^2",
"png-to-ico": "^2.1.1",
"uuid": "^9.0.0"
"png-to-ico": "^2.1.1"
},
"devDependencies": {
"@babel/core": "^7.18.10",
"@babel/preset-env": "^7.18.10",
"@babel/preset-typescript": "^7.18.6",
"@electron/asar": "^3.2.3",
"@electron/notarize": "^2.0.0",
"@electron/notarize": "^1.2.3",
"@types/auto-launch": "^5.0.1",
"@types/counterpart": "^0.18.1",
"@types/detect-libc": "^1.0.0",
"@types/jest": "^29.0.0",
"@types/minimist": "^1.2.1",
"@types/mkdirp": "^1.0.2",
"@types/node": "16.18.48",
"@types/node": "16.18.30",
"@types/pacote": "^11.1.1",
"@types/tar": "^6.1.3",
"@types/uuid": "^9.0.2",
"@typescript-eslint/eslint-plugin": "^5.42.0",
"@typescript-eslint/parser": "^5.42.0",
"allchange": "^1.0.6",
"app-builder-lib": "24.6.4",
"app-builder-lib": "24.4.0",
"babel-jest": "^29.0.0",
"chokidar": "^3.5.2",
"detect-libc": "^1.0.3",
"electron": "^26.2.1",
"electron-builder": "24.6.4",
"electron-builder-squirrel-windows": "24.6.4",
"electron": "^24.0.0",
"electron-builder": "24.4.0",
"electron-builder-squirrel-windows": "24.4.0",
"electron-devtools-installer": "^3.2.0",
"eslint": "^8.26.0",
"eslint-config-google": "^0.14.0",
"eslint-config-prettier": "^9.0.0",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-import": "^2.25.4",
"eslint-plugin-matrix-org": "^1.0.0",
"eslint-plugin-unicorn": "^48.0.0",
"eslint-plugin-unicorn": "^47.0.0",
"expect-playwright": "^0.8.0",
"find-npm-prefix": "^1.0.2",
"fs-extra": "^11.0.0",
"glob": "^10.0.0",
"jest": "^29.0.0",
"matrix-web-i18n": "^3.1.1",
"matrix-web-i18n": "^1.3.0",
"mkdirp": "^3.0.0",
"node-pre-gyp": "^0.17.0",
"pacote": "^17.0.0",
"pacote": "^15.0.0",
"playwright": "^1.25.0",
"prettier": "^2.8.1",
"rimraf": "^5.0.0",
"tar": "^6.1.2",
"ts-jest": "^29.0.0",
"ts-node": "^10.9.1",
"typescript": "5.1.6"
"typescript": "5.0.4"
},
"hakDependencies": {
"matrix-seshat": "^3.0.1",
"keytar": "^7.9.0"
},
"resolutions": {
"@types/node": "16.18.48"
"@types/node": "16.18.30"
},
"build": {
"appId": "im.riot.app",

View File

@@ -28,11 +28,11 @@ fs.mkdirSync("lib/i18n/strings", { recursive: true });
type Translations = Record<string, Record<string, string> | string>;
function genLangFile(file: string, dest: string): void {
const translations: Translations = {};
const inTrs: Record<string, string> = {};
[file].forEach(function (f) {
if (fs.existsSync(f)) {
try {
Object.assign(translations, JSON.parse(fs.readFileSync(f).toString()));
Object.assign(inTrs, JSON.parse(fs.readFileSync(f).toString()));
} catch (e) {
console.error("Failed: " + f, e);
throw e;
@@ -40,6 +40,7 @@ function genLangFile(file: string, dest: string): void {
}
});
const translations = weblateToCounterpart(inTrs);
const json = JSON.stringify(translations, null, 4);
const filename = path.basename(file);
@@ -49,6 +50,46 @@ function genLangFile(file: string, dest: string): void {
}
}
/*
* Convert translation key from weblate format
* (which only supports a single level) to counterpart
* which requires object values for 'count' translations.
*
* eg.
* "there are %(count)s badgers|one": "a badger",
* "there are %(count)s badgers|other": "%(count)s badgers"
* becomes
* "there are %(count)s badgers": {
* "one": "a badger",
* "other": "%(count)s badgers"
* }
*/
function weblateToCounterpart(inTrs: Record<string, string>): Translations {
const outTrs: Translations = {};
for (const key of Object.keys(inTrs)) {
const keyParts = key.split("|", 2);
if (keyParts.length === 2) {
let obj = outTrs[keyParts[0]];
if (obj === undefined) {
obj = outTrs[keyParts[0]] = {};
} else if (typeof obj === "string") {
// This is a transitional edge case if a string went from singular to pluralised and both still remain
// in the translation json file. Use the singular translation as `other` and merge pluralisation atop.
obj = outTrs[keyParts[0]] = {
other: inTrs[key],
};
console.warn("Found entry in i18n file in both singular and pluralised form", keyParts[0]);
}
obj[keyParts[1]] = inTrs[key];
} else {
outTrs[key] = inTrs[key];
}
}
return outTrs;
}
/*
watch the input files for a given language,
regenerate the file, and regenerating languages.json with the new filename

View File

@@ -81,10 +81,6 @@ export default class HakEnv {
return this.target.platform === "linux";
}
public isFreeBSD(): boolean {
return this.target.platform === "freebsd";
}
public getTargetArch(): Arch {
return this.target.arch;
}
@@ -106,6 +102,6 @@ export default class HakEnv {
}
public wantsStaticSqlCipher(): boolean {
return !(this.isLinux() || this.isFreeBSD()) || process.env.SQLCIPHER_BUNDLED == "1";
return !this.isLinux() || process.env.SQLCIPHER_BUNDLED == "1";
}
}

View File

@@ -26,9 +26,6 @@ export type TargetId =
| "i686-pc-windows-msvc"
| "x86_64-pc-windows-msvc"
| "aarch64-pc-windows-msvc"
| "i686-unknown-freebsd"
| "x86_64-unknown-freebsd"
| "aarch64-unknown-freebsd"
| "i686-unknown-linux-musl"
| "i686-unknown-linux-gnu"
| "x86_64-unknown-linux-musl"
@@ -39,7 +36,7 @@ export type TargetId =
| "powerpc64le-unknown-linux-gnu";
// Values are expected to match those used in `process.platform`.
export type Platform = "darwin" | "freebsd" | "linux" | "win32";
export type Platform = "darwin" | "linux" | "win32";
// Values are expected to match those used in `process.arch`.
export type Arch = "arm64" | "ia32" | "x64" | "ppc64" | "universal";
@@ -109,24 +106,6 @@ const aarch64WindowsMsvc: WindowsTarget = {
vcVarsArch: "arm64",
};
const i686UnknownFreebsd: Target = {
id: "i686-unknown-freebsd",
platform: "freebsd",
arch: "ia32",
};
const x8664UnknownFreebsd: Target = {
id: "x86_64-unknown-freebsd",
platform: "freebsd",
arch: "x64",
};
const aarch64UnknownFreebsd: Target = {
id: "aarch64-unknown-freebsd",
platform: "freebsd",
arch: "arm64",
};
const x8664UnknownLinuxGnu: LinuxTarget = {
id: "x86_64-unknown-linux-gnu",
platform: "linux",
@@ -192,10 +171,6 @@ export const TARGETS: Record<TargetId, Target> = {
"i686-pc-windows-msvc": i686PcWindowsMsvc,
"x86_64-pc-windows-msvc": x8664PcWindowsMsvc,
"aarch64-pc-windows-msvc": aarch64WindowsMsvc,
// FreeBSD
"i686-unknown-freebsd": i686UnknownFreebsd,
"x86_64-unknown-freebsd": x8664UnknownFreebsd,
"aarch64-unknown-freebsd": aarch64UnknownFreebsd,
// Linux
"i686-unknown-linux-musl": i686UnknownLinuxMusl,
"i686-unknown-linux-gnu": i686UnknownLinuxGnu,

View File

@@ -1,29 +0,0 @@
/*
Copyright 2023 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
import { Streams } from "electron";
type DisplayMediaCallback = (streams: Streams) => void;
let displayMediaCallback: DisplayMediaCallback | null;
export const getDisplayMediaCallback = (): DisplayMediaCallback | null => {
return displayMediaCallback;
};
export const setDisplayMediaCallback = (callback: DisplayMediaCallback | null): void => {
displayMediaCallback = callback;
};

View File

@@ -19,7 +19,7 @@ limitations under the License.
// Squirrel on windows starts the app with various flags as hooks to tell us when we've been installed/uninstalled etc.
import "./squirrelhooks";
import { app, BrowserWindow, Menu, autoUpdater, protocol, dialog, Input, Event, session } from "electron";
import { app, BrowserWindow, Menu, autoUpdater, protocol, dialog, Input } from "electron";
import * as Sentry from "@sentry/electron/main";
import AutoLaunch from "auto-launch";
import path from "path";
@@ -39,8 +39,6 @@ import webContentsHandler from "./webcontents-handler";
import * as updater from "./updater";
import { getProfileFromDeeplink, protocolInit } from "./protocol";
import { _t, AppLocalization } from "./language-helper";
import { setDisplayMediaCallback } from "./displayMediaCallback";
import { setupMacosTitleBar } from "./macos-titlebar";
const argv = minimist(process.argv, {
alias: { help: "h" },
@@ -260,8 +258,7 @@ global.appQuitting = false;
const exitShortcuts: Array<(input: Input, platform: string) => boolean> = [
(input, platform): boolean => platform !== "darwin" && input.alt && input.key.toUpperCase() === "F4",
(input, platform): boolean => platform !== "darwin" && input.control && input.key.toUpperCase() === "Q",
(input, platform): boolean =>
platform === "darwin" && input.meta && !input.control && input.key.toUpperCase() === "Q",
(input, platform): boolean => platform === "darwin" && input.meta && input.key.toUpperCase() === "Q",
];
const warnBeforeExit = (event: Event, input: Input): void => {
@@ -274,12 +271,12 @@ const warnBeforeExit = (event: Event, input: Input): void => {
dialog.showMessageBoxSync(global.mainWindow, {
type: "question",
buttons: [
_t("action|cancel"),
_t("action|close_brand", {
_t("Cancel"),
_t("Close %(brand)s", {
brand: global.vectorConfig.brand || "Element",
}),
],
message: _t("confirm_quit"),
message: _t("Are you sure you want to quit?"),
defaultId: 1,
cancelId: 0,
}) === 0;
@@ -456,9 +453,6 @@ app.on("ready", async () => {
// https://www.electronjs.org/docs/faq#the-font-looks-blurry-what-is-this-and-what-can-i-do
backgroundColor: "#fff",
titleBarStyle: process.platform === "darwin" ? "hidden" : "default",
trafficLightPosition: { x: 9, y: 8 },
icon: global.trayConfig.icon_path,
show: false,
autoHideMenuBar: global.store.get("autoHideMenuBar", true),
@@ -477,10 +471,6 @@ app.on("ready", async () => {
});
global.mainWindow.loadURL("vector://vector/webapp/");
if (process.platform === "darwin") {
setupMacosTitleBar(global.mainWindow);
}
// Handle spellchecker
// For some reason spellCheckerEnabled isn't persisted, so we have to use the store here
global.mainWindow.webContents.session.setSpellCheckerEnabled(global.store.get("spellCheckerEnabled", true));
@@ -542,11 +532,6 @@ app.on("ready", async () => {
store: global.store,
components: [(): void => tray.initApplicationMenu(), (): void => Menu.setApplicationMenu(buildMenuTemplate())],
});
session.defaultSession.setDisplayMediaRequestHandler((_, callback) => {
global.mainWindow?.webContents.send("openDesktopCapturerSourcePicker");
setDisplayMediaCallback(callback);
});
});
app.on("window-all-closed", () => {

47
src/i18n/strings/ar.json Normal file
View File

@@ -0,0 +1,47 @@
{
"File": "ملف",
"Close": "أغلِق",
"Actual Size": "المقاس الفعلي",
"View": "منظور",
"Select All": "حدّد الكل",
"Delete": "احذف",
"Copy": "انسخ",
"Edit": "تحرير",
"Cancel": "ألغِ",
"Bring All to Front": "ضَع الكل في المقدّمة",
"Speech": "نطق",
"Add to dictionary": "أضِف إلى القاموس",
"The image failed to save": "فشل حفظ الصورة",
"Failed to save image": "فشل حفظ الصورة",
"Save image as...": "احفظ الصورة كَ‍...",
"Copy link address": "انسخ عنوان الرابط",
"Copy email address": "انسخ عنوان البريد الإلكتروني",
"Copy image": "انسخ الصورة",
"Zoom": "تقريب",
"Stop Speaking": "أوقِف النطق",
"Start Speaking": "ابدأ النطق",
"Unhide": "اعرض",
"Hide Others": "أخفِ البقية",
"Hide": "أخفِ",
"Services": "الخدمات",
"About": "عن",
"Element Help": "مساعدة Element",
"Help": "مساعدة",
"Minimize": "صغّر",
"Window": "نافذة",
"Toggle Developer Tools": "فعّل/عطّل أدوات المطوّرين",
"Toggle Full Screen": "فعّل/عطّل ملء الشاشة",
"Preferences": "التفضيلات",
"Zoom In": "قرّب",
"Zoom Out": "بعّد",
"Paste and Match Style": "ألصِق وطابِق النمط",
"Paste": "ألصِق",
"Cut": "قصّ",
"Redo": "أعِد",
"Undo": "تراجَع",
"Quit": "غادِر",
"Show/Hide": "اعرض/أخفِ",
"Are you sure you want to quit?": "أمتأكّد من الإغلاق؟",
"Copy image address": "انسخ عنوان (رابط) الصورة",
"Close %(brand)s": "اغلاق %(brand)s"
}

View File

@@ -0,0 +1 @@
{}

45
src/i18n/strings/be.json Normal file
View File

@@ -0,0 +1,45 @@
{
"Add to dictionary": "Дадаць у слоўнік",
"The image failed to save": "Не атрымалася захаваць малюнак",
"Failed to save image": "Не атрымалася захаваць малюнак",
"Save image as...": "Захаваць малюнак як...",
"Copy link address": "Скапіраваць спасылку",
"Copy email address": "Скапіраваць адрас пошты",
"Copy image": "Скапіраваць малюнак",
"File": "Файл",
"Bring All to Front": "Вынесці ўсё наперад",
"Zoom": "Маштаб",
"Stop Speaking": "Перастаць гаварыць",
"Start Speaking": "Гаварыць",
"Speech": "Голас",
"Unhide": "Паказаць",
"Hide Others": "Схаваць іншыя",
"Hide": "Схаваць",
"Services": "Сервісы",
"About": "Аб праграме",
"Element Help": "Даведка Element",
"Help": "Даведка",
"Close": "Зачыніць",
"Minimize": "Згарнуць",
"Window": "Акно",
"Toggle Developer Tools": "Пераключэнне інструментаў распрацоўніка",
"Toggle Full Screen": "Пераключэнне на ўвесь экран",
"Preferences": "Параметры",
"Zoom Out": "Паменшыць",
"Zoom In": "Павялічыць",
"Actual Size": "Фактычны Памер",
"View": "Прагляд",
"Select All": "Выбраць усё",
"Delete": "Выдаліць",
"Paste and Match Style": "Уставіць і супаставіць стыль",
"Paste": "Уставіць",
"Copy": "Капіяваць",
"Cut": "Выразаць",
"Redo": "Паўтарыць",
"Undo": "Адмяніць",
"Edit": "Змяніць",
"Quit": "Выйсці",
"Show/Hide": "Паказаць / схаваць",
"Are you sure you want to quit?": "Вы ўпэўненыя, што хочаце выйсці?",
"Cancel": "Адмена"
}

View File

@@ -1,61 +1,46 @@
{
"action": {
"cancel": "Отказ",
"close": "Затвори",
"copy": "Копирай",
"cut": "Изрежи",
"delete": "Изтрий",
"edit": "Редактирай",
"minimise": "Минимизирай",
"paste": "Постави",
"paste_match_style": "Постави и Използвай текущия стил",
"quit": "Напусни",
"redo": "Върни",
"select_all": "Избери Всичко",
"show_hide": "Покажи/Скрий",
"undo": "Отмени",
"zoom_in": "Увеличи",
"zoom_out": "Намали"
},
"common": {
"about": "Относно",
"help": "Помощ",
"preferences": "Предпочитания"
},
"confirm_quit": "Сигурен ли си че искаш да напуснеш?",
"edit_menu": {
"speech": "Говор",
"speech_start_speaking": "Започни да говориш",
"speech_stop_speaking": "Спри да говориш"
},
"file_menu": {
"label": "Файл"
},
"menu": {
"hide": "Скрий",
"hide_others": "Скрий Останалите",
"services": "Услуги",
"unhide": "Покажи"
},
"right_click_menu": {
"add_to_dictionary": "Добави към речника",
"copy_email": "Копирай имейл адрес",
"copy_image": "Копирай изображение",
"copy_image_url": "Копирай адреса на изображението",
"copy_link_url": "Копирай линка",
"save_image_as": "Запази изображението като...",
"save_image_as_error_description": "Изображението не успя да се запази",
"save_image_as_error_title": "Неуспешно запазване на изображението"
},
"view_menu": {
"actual_size": "Действителен Размер",
"toggle_developer_tools": "Превключи инструментите за разработчици",
"toggle_full_screen": "Превключи на Цял екран",
"view": "Преглед"
},
"window_menu": {
"bring_all_to_front": "Покажи всички най-отгоре",
"label": "Прозорец",
"zoom": "Мащабирай"
}
"Add to dictionary": "Добави към речника",
"The image failed to save": "Изображението не успя да се запази",
"Failed to save image": "Неуспешно запазване на изображението",
"Save image as...": "Запази изображението като...",
"Copy link address": "Копирай линка",
"Copy image address": "Копирай адреса на изображението",
"Copy email address": "Копирай имейл адрес",
"Copy image": "Копирай изображение",
"File": "Файл",
"Bring All to Front": "Покажи всички най-отгоре",
"Zoom": "Мащабирай",
"Stop Speaking": "Спри да говориш",
"Start Speaking": "Започни да говориш",
"Speech": "Говор",
"Unhide": "Покажи",
"Hide Others": "Скрий Останалите",
"Hide": "Скрий",
"Services": "Услуги",
"About": "Относно",
"Element Help": "Помощ за Елемент",
"Help": "Помощ",
"Close": "Затвори",
"Minimize": "Минимизирай",
"Window": "Прозорец",
"Toggle Developer Tools": "Превключи инструментите за разработчици",
"Toggle Full Screen": "Превключи на Цял екран",
"Preferences": "Предпочитания",
"Zoom Out": "Намали",
"Zoom In": "Увеличи",
"Actual Size": "Действителен Размер",
"View": "Преглед",
"Select All": "Избери Всичко",
"Delete": "Изтрий",
"Paste and Match Style": "Постави и Използвай текущия стил",
"Paste": "Постави",
"Copy": "Копирай",
"Cut": "Изрежи",
"Redo": "Върни",
"Undo": "Отмени",
"Edit": "Редактирай",
"Quit": "Напусни",
"Show/Hide": "Покажи/Скрий",
"Are you sure you want to quit?": "Сигурен ли си че искаш да напуснеш?",
"Cancel": "Отказ"
}

46
src/i18n/strings/bn.json Normal file
View File

@@ -0,0 +1,46 @@
{
"Are you sure you want to quit?": "তুমি কি আসলেই বের হতে চাও?",
"Cancel": "বাতিল",
"Save image as...": "ছবি সংরক্ষণের ধরন...",
"Failed to save image": "ছবি সংরক্ষণ ব্যর্থ",
"The image failed to save": "ছবি সংরক্ষণ ব্যর্থ",
"Add to dictionary": "অভিধানে যোগ করি",
"Copy link address": "সংযোগের ঠিকানা অনুলিপি করো",
"Copy image address": "ছবির ঠিকানা অনুলিপি করো",
"Copy email address": "ইমেইল ঠিকানা অনুলিপি করো",
"Copy image": "ছবি অনুলিপি করো",
"File": "নথি",
"Bring All to Front": "সবকিছু সামনে আনো",
"Zoom": "বড় করা",
"Stop Speaking": "কথা বন্ধ করো",
"Start Speaking": "কথা শুরু করো",
"Speech": "বাচন",
"Unhide": "দেখাও",
"Hide Others": "অন্যগুলো লুকাও",
"Hide": "লুকাও",
"Services": "সেবা",
"About": "আমাদের সম্পর্কে",
"Element Help": "এলিমেন্ট সাহায্য",
"Help": "সাহায্য",
"Close": "বন্ধ",
"Minimize": "সংকোচন",
"Window": "জানালা",
"Toggle Developer Tools": "ডেভেলপার সরঞ্জামাদি",
"Toggle Full Screen": "পূর্ণ পর্দা করো/বের হও",
"Preferences": "পছন্দসমূহ",
"Zoom Out": "ছোট করো",
"Zoom In": "বড়ো করো",
"Actual Size": "আসল আকার",
"View": "দেখো",
"Select All": "সব নির্বাচন",
"Delete": "অপসারণ",
"Paste and Match Style": "লেপন ও একই ধরনে",
"Paste": "লেপন",
"Copy": "অনুলিপি",
"Cut": "কাটো",
"Redo": "পুন",
"Undo": "ফিরত",
"Edit": "সম্পাদনা",
"Quit": "প্রস্থান",
"Show/Hide": "দেখাও/লুকাও"
}

45
src/i18n/strings/ca.json Normal file
View File

@@ -0,0 +1,45 @@
{
"Add to dictionary": "Afegeix al diccionari",
"The image failed to save": "S'ha fallat en desar la imatge",
"Failed to save image": "S'ha fallat en desar la imatge",
"Save image as...": "Anomena i desa la imatge...",
"Copy link address": "Copia l'adreça de l'enllaç",
"Copy email address": "Copia l'adreça de correu electrònic",
"Copy image": "Copia la imatge",
"File": "Fitxer",
"Bring All to Front": "Porta-ho tot al davant",
"Zoom": "Escala",
"Stop Speaking": "Para la veu",
"Start Speaking": "Comença la veu",
"Speech": "Veu",
"Unhide": "Deixa d'amagar",
"Hide Others": "Amaga les altres",
"Hide": "Amaga",
"Services": "Serveis",
"About": "Quant a",
"Element Help": "Ajuda sobre l'Element",
"Help": "Ajuda",
"Close": "Tanca",
"Minimize": "Minimitza",
"Window": "Finestra",
"Toggle Developer Tools": "Commuta les eines per a desenvolupadors",
"Toggle Full Screen": "Commuta la pantalla completa",
"Preferences": "Preferències",
"Zoom Out": "Allunya",
"Zoom In": "Apropia",
"Actual Size": "Mida real",
"View": "Visualitza",
"Select All": "Selecciona-ho tot",
"Delete": "Suprimeix",
"Paste and Match Style": "Enganxa i fes coincidir l'estil",
"Paste": "Enganxa",
"Copy": "Copia",
"Cut": "Retalla",
"Redo": "Refés",
"Undo": "Desfés",
"Edit": "Edita",
"Quit": "Surt",
"Show/Hide": "Mostra/Amaga",
"Are you sure you want to quit?": "Esteu segur que voleu sortir?",
"Cancel": "Cancel·la"
}

View File

@@ -1,63 +1,47 @@
{
"action": {
"cancel": "Zrušit",
"close": "Zavřít",
"close_brand": "Zavřít %(brand)s",
"copy": "Kopírovat",
"cut": "Vyjmout",
"delete": "Smazat",
"edit": "Úpravy",
"minimise": "Minimalizovat",
"paste": "Vložit",
"paste_match_style": "Vložit a přizpůsobit styl",
"quit": "Ukončit",
"redo": "Znovu",
"select_all": "Vybrat vše",
"show_hide": "Zobrazit/Skrýt",
"undo": "Zpět",
"zoom_in": "Přiblížit",
"zoom_out": "Oddálit"
},
"common": {
"about": "O aplikaci",
"brand_help": "%(brand)s nápověda",
"help": "Nápověda",
"preferences": "Předvolby"
},
"confirm_quit": "Opravdu chcete ukončit aplikaci?",
"edit_menu": {
"speech": "Řeč",
"speech_start_speaking": "Spustit nahrávání hlasu",
"speech_stop_speaking": "Zastavit nahrávání hlasu"
},
"file_menu": {
"label": "Soubor"
},
"menu": {
"hide": "Skrýt",
"hide_others": "Skrýt ostatní",
"services": "Služby",
"unhide": "Zrušit skrytí"
},
"right_click_menu": {
"add_to_dictionary": "Přidat do slovníku",
"copy_email": "Kopírovat e-mailovou adresu",
"copy_image": "Kopírovat obrázek",
"copy_image_url": "Kopírovat adresu obrázku",
"copy_link_url": "Kopírovat adresu odkazu",
"save_image_as": "Uložit obrázek jako...",
"save_image_as_error_description": "Obrázek se nepodařilo uložit",
"save_image_as_error_title": "Chyba při ukládání obrázku"
},
"view_menu": {
"actual_size": "Aktuální velikost",
"toggle_developer_tools": "Přepnout zobrazení nástrojů pro vývojáře",
"toggle_full_screen": "Přepnout zobrazení celé obrazovky",
"view": "Zobrazit"
},
"window_menu": {
"bring_all_to_front": "Přenést vše do popředí",
"label": "Okno",
"zoom": "Lupa"
}
"Add to dictionary": "Přidat do slovníku",
"Failed to save image": "Chyba při ukládání obrázku",
"The image failed to save": "Obrázek se nepodařilo uložit",
"Save image as...": "Uložit obrázek jako...",
"Copy link address": "Kopírovat adresu odkazu",
"Copy image address": "Kopírovat adresu obrázku",
"Copy email address": "Kopírovat e-mailovou adresu",
"Copy image": "Kopírovat obrázek",
"File": "Soubor",
"Bring All to Front": "Přenést vše do popředí",
"Zoom": "Lupa",
"Stop Speaking": "Zastavit nahrávání hlasu",
"Start Speaking": "Spustit nahrávání hlasu",
"Speech": "Řeč",
"Unhide": "Zrušit skrytí",
"Hide Others": "Skrýt ostatní",
"Hide": "Skrýt",
"Services": "Služby",
"About": "O aplikaci",
"Element Help": "Nápověda aplikace Element",
"Help": "Nápověda",
"Close": "Zavřít",
"Minimize": "Minimalizovat",
"Window": "Okno",
"Toggle Developer Tools": "Přepnout zobrazení nástrojů pro vývojáře",
"Toggle Full Screen": "Přepnout zobrazení celé obrazovky",
"Preferences": "Předvolby",
"Zoom Out": "Oddálit",
"Zoom In": "Přiblížit",
"Actual Size": "Aktuální velikost",
"View": "Zobrazit",
"Select All": "Vybrat vše",
"Delete": "Smazat",
"Paste and Match Style": "Vložit a přizpůsobit styl",
"Paste": "Vložit",
"Copy": "Kopírovat",
"Cut": "Vyjmout",
"Redo": "Znovu",
"Undo": "Zpět",
"Edit": "Úpravy",
"Quit": "Ukončit",
"Show/Hide": "Zobrazit/Skrýt",
"Are you sure you want to quit?": "Opravdu chcete ukončit aplikaci?",
"Close %(brand)s": "Zavřít %(brand)s",
"Cancel": "Zrušit"
}

47
src/i18n/strings/de.json Normal file
View File

@@ -0,0 +1,47 @@
{
"Speech": "Sprache",
"Paste and Match Style": "Einfügen und Formatierung beibehalten",
"Stop Speaking": "Aufnahme beenden",
"Start Speaking": "Aufnahme starten",
"Services": "Dienste",
"Are you sure you want to quit?": "Wirklich beenden?",
"Add to dictionary": "Wörterbuch hinzufügen",
"The image failed to save": "Das Bild konnte nicht gespeichert werden",
"Failed to save image": "Bild kann nicht gespeichert werden",
"Save image as...": "Bild speichern unter...",
"Copy link address": "Link-Adresse kopieren",
"Copy email address": "Email-Adresse kopieren",
"Copy image": "Bild kopieren",
"File": "Datei",
"Bring All to Front": "Alles in den Vordergrund",
"Zoom": "Zoom",
"Unhide": "Wieder anzeigen",
"Hide Others": "Andere verstecken",
"Hide": "Verstecken",
"About": "Über",
"Element Help": "Hilfe zu Element",
"Help": "Hilfe",
"Close": "Schließen",
"Minimize": "Minimieren",
"Window": "Fenster",
"Toggle Developer Tools": "Developer-Tools an/aus",
"Toggle Full Screen": "Vollbildschirm an/aus",
"Preferences": "Einstellungen",
"Zoom Out": "Verkleinern",
"Zoom In": "Vergrößern",
"Actual Size": "Tatsächliche Größe",
"View": "Ansicht",
"Select All": "Alles auswählen",
"Delete": "Löschen",
"Paste": "Einfügen",
"Copy": "Kopieren",
"Cut": "Ausschneiden",
"Redo": "Wiederherstellen",
"Undo": "Rückgängig",
"Edit": "Bearbeiten",
"Quit": "Beenden",
"Show/Hide": "Anzeigen/Ausblenden",
"Cancel": "Abbrechen",
"Copy image address": "Bild-Adresse kopieren",
"Close %(brand)s": "%(brand)s schließen"
}

View File

@@ -1,62 +0,0 @@
{
"action": {
"cancel": "Abbrechen",
"close": "Schließen",
"close_brand": "%(brand)s schließen",
"copy": "Kopieren",
"cut": "Ausschneiden",
"delete": "Löschen",
"edit": "Bearbeiten",
"minimise": "Minimieren",
"paste": "Einfügen",
"paste_match_style": "Einfügen und Formatierung beibehalten",
"quit": "Beenden",
"redo": "Wiederherstellen",
"select_all": "Alles auswählen",
"show_hide": "Anzeigen/Ausblenden",
"undo": "Rückgängig",
"zoom_in": "Vergrößern",
"zoom_out": "Verkleinern"
},
"common": {
"about": "Über",
"brand_help": "%(brand)s Hilfe",
"help": "Hilfe",
"preferences": "Einstellungen"
},
"confirm_quit": "Wirklich beenden?",
"edit_menu": {
"speech": "Sprache",
"speech_start_speaking": "Aufnahme starten",
"speech_stop_speaking": "Aufnahme beenden"
},
"file_menu": {
"label": "Datei"
},
"menu": {
"hide": "Verstecken",
"hide_others": "Andere verstecken",
"services": "Dienste",
"unhide": "Wieder anzeigen"
},
"right_click_menu": {
"add_to_dictionary": "Wörterbuch hinzufügen",
"copy_email": "Email-Adresse kopieren",
"copy_image": "Bild kopieren",
"copy_image_url": "Bild-Adresse kopieren",
"copy_link_url": "Link-Adresse kopieren",
"save_image_as": "Bild speichern unter...",
"save_image_as_error_description": "Das Bild konnte nicht gespeichert werden",
"save_image_as_error_title": "Bild kann nicht gespeichert werden"
},
"view_menu": {
"actual_size": "Tatsächliche Größe",
"toggle_developer_tools": "Developer-Tools an/aus",
"toggle_full_screen": "Vollbildschirm an/aus",
"view": "Ansicht"
},
"window_menu": {
"bring_all_to_front": "Alles in den Vordergrund",
"label": "Fenster"
}
}

View File

@@ -1,63 +1,47 @@
{
"action": {
"cancel": "Ακύρωση",
"close": "Κλείσιμο",
"close_brand": "Κλείσιμο %(brand)s",
"copy": "Αντιγραφή",
"cut": "Αποκοπή",
"delete": "Διαγραφή",
"edit": "Επεξεργασία",
"minimise": "Ελαχιστοποίηση",
"paste": "Επικόλληση",
"paste_match_style": "Επικόλληση και Ταίριασμα Στυλ",
"quit": "Κλείσιμο",
"redo": "Επανάληψη",
"select_all": "Επιλογή Όλων",
"show_hide": "Eμφάνιση/Απόκρυψη",
"undo": "Αναίρεση",
"zoom_in": "Μεγέθυνση",
"zoom_out": "Σμίκρυνση"
},
"common": {
"about": "Σχετικά με",
"brand_help": "%(brand)s Υποστήριξη",
"help": "Βοήθεια",
"preferences": "Προτιμήσεις"
},
"confirm_quit": "Είστε βέβαιος ότι θέλετε να εγκαταλείψετε;",
"edit_menu": {
"speech": "Ομιλία",
"speech_start_speaking": "Ξεκινήστε να μιλάτε",
"speech_stop_speaking": "Τερματίστε να μιλάτε"
},
"file_menu": {
"label": "Αρχείο"
},
"menu": {
"hide": "Απόκρυψη",
"hide_others": "Απόκρυψη Άλλων",
"services": "Υπηρεσίες",
"unhide": "Εμφάνιση"
},
"right_click_menu": {
"add_to_dictionary": "Προσθήκη στο λεξικό",
"copy_email": "Αντιγραφή διεύθυνσης email",
"copy_image": "Αντιγραφή εικόνας",
"copy_image_url": "Αντιγραφή διεύθυνσης εικόνας",
"copy_link_url": "Αντιγραφή διεύθυνσης συνδέσμου",
"save_image_as": "Αποθήκευση εικόνας ως...",
"save_image_as_error_description": "Η αποθήκευση της εικόνας απέτυχε",
"save_image_as_error_title": "Αποτυχία αποθήκευσης εικόνας"
},
"view_menu": {
"actual_size": "Πραγματικό Μέγεθος",
"toggle_developer_tools": "Άνοιγμα Εργαλείων Προγραμματιστή",
"toggle_full_screen": "Εναλλαγή σε Πλήρη Οθόνη",
"view": "Προβολή"
},
"window_menu": {
"bring_all_to_front": "Μεταφορά Όλων στο Προσκήνιο",
"label": "Παράθυρο",
"zoom": "Ζουμ"
}
"Are you sure you want to quit?": "Είστε βέβαιος ότι θέλετε να εγκαταλείψετε;",
"Zoom": "Ζουμ",
"Unhide": "Εμφάνιση",
"Window": "Παράθυρο",
"Toggle Developer Tools": "Άνοιγμα Εργαλείων Προγραμματιστή",
"Toggle Full Screen": "Εναλλαγή σε Πλήρη Οθόνη",
"Copy email address": "Αντιγραφή διεύθυνσης email",
"File": "Αρχείο",
"Bring All to Front": "Μεταφορά Όλων στο Προσκήνιο",
"Stop Speaking": "Τερματίστε να μιλάτε",
"Start Speaking": "Ξεκινήστε να μιλάτε",
"Speech": "Ομιλία",
"Hide Others": "Απόκρυψη Άλλων",
"Hide": "Απόκρυψη",
"Services": "Υπηρεσίες",
"About": "Σχετικά με",
"Element Help": "Βοήθεια για το Element",
"Help": "Βοήθεια",
"Close": "Κλείσιμο",
"Minimize": "Ελαχιστοποίηση",
"Preferences": "Προτιμήσεις",
"Zoom Out": "Σμίκρυνση",
"Zoom In": "Μεγέθυνση",
"Actual Size": "Πραγματικό Μέγεθος",
"View": "Προβολή",
"Select All": "Επιλογή Όλων",
"Delete": "Διαγραφή",
"Paste and Match Style": "Επικόλληση και Ταίριασμα Στυλ",
"Paste": "Επικόλληση",
"Copy": "Αντιγραφή",
"Cut": "Αποκοπή",
"Redo": "Επανάληψη",
"Undo": "Αναίρεση",
"Edit": "Επεξεργασία",
"Quit": "Κλείσιμο",
"Show/Hide": "Eμφάνιση/Απόκρυψη",
"Cancel": "Ακύρωση",
"Add to dictionary": "Προσθήκη στο λεξικό",
"The image failed to save": "Η αποθήκευση της εικόνας απέτυχε",
"Failed to save image": "Αποτυχία αποθήκευσης εικόνας",
"Save image as...": "Αποθήκευση εικόνας ως...",
"Copy link address": "Αντιγραφή διεύθυνσης συνδέσμου",
"Copy image address": "Αντιγραφή διεύθυνσης εικόνας",
"Copy image": "Αντιγραφή εικόνας",
"Close %(brand)s": "Κλείσιμο %(brand)s"
}

View File

@@ -1,63 +1,47 @@
{
"action": {
"cancel": "Cancel",
"close": "Close",
"close_brand": "Close %(brand)s",
"copy": "Copy",
"cut": "Cut",
"delete": "Delete",
"edit": "Edit",
"minimise": "Minimize",
"paste": "Paste",
"paste_match_style": "Paste and Match Style",
"quit": "Quit",
"redo": "Redo",
"select_all": "Select All",
"show_hide": "Show/Hide",
"undo": "Undo",
"zoom_in": "Zoom In",
"zoom_out": "Zoom Out"
},
"common": {
"about": "About",
"brand_help": "%(brand)s Help",
"help": "Help",
"preferences": "Preferences"
},
"confirm_quit": "Are you sure you want to quit?",
"edit_menu": {
"speech": "Speech",
"speech_start_speaking": "Start Speaking",
"speech_stop_speaking": "Stop Speaking"
},
"file_menu": {
"label": "File"
},
"menu": {
"hide": "Hide",
"hide_others": "Hide Others",
"services": "Services",
"unhide": "Unhide"
},
"right_click_menu": {
"add_to_dictionary": "Add to dictionary",
"copy_email": "Copy email address",
"copy_image": "Copy image",
"copy_image_url": "Copy image address",
"copy_link_url": "Copy link address",
"save_image_as": "Save image as...",
"save_image_as_error_description": "The image failed to save",
"save_image_as_error_title": "Failed to save image"
},
"view_menu": {
"actual_size": "Actual Size",
"toggle_developer_tools": "Toggle Developer Tools",
"toggle_full_screen": "Toggle Full Screen",
"view": "View"
},
"window_menu": {
"bring_all_to_front": "Bring All to Front",
"label": "Window",
"zoom": "Zoom"
}
"Cancel": "Cancel",
"Close %(brand)s": "Close %(brand)s",
"Are you sure you want to quit?": "Are you sure you want to quit?",
"Show/Hide": "Show/Hide",
"Quit": "Quit",
"Edit": "Edit",
"Undo": "Undo",
"Redo": "Redo",
"Cut": "Cut",
"Copy": "Copy",
"Paste": "Paste",
"Paste and Match Style": "Paste and Match Style",
"Delete": "Delete",
"Select All": "Select All",
"View": "View",
"Actual Size": "Actual Size",
"Zoom In": "Zoom In",
"Zoom Out": "Zoom Out",
"Preferences": "Preferences",
"Toggle Full Screen": "Toggle Full Screen",
"Toggle Developer Tools": "Toggle Developer Tools",
"Window": "Window",
"Minimize": "Minimize",
"Close": "Close",
"Help": "Help",
"Element Help": "Element Help",
"About": "About",
"Services": "Services",
"Hide": "Hide",
"Hide Others": "Hide Others",
"Unhide": "Unhide",
"Speech": "Speech",
"Start Speaking": "Start Speaking",
"Stop Speaking": "Stop Speaking",
"Zoom": "Zoom",
"Bring All to Front": "Bring All to Front",
"File": "File",
"Copy image": "Copy image",
"Copy email address": "Copy email address",
"Copy image address": "Copy image address",
"Copy link address": "Copy link address",
"Save image as...": "Save image as...",
"Failed to save image": "Failed to save image",
"The image failed to save": "The image failed to save",
"Add to dictionary": "Add to dictionary"
}

View File

@@ -0,0 +1,45 @@
{
"Close": "Close",
"Add to dictionary": "Add to dictionary",
"The image failed to save": "The image failed to save",
"Failed to save image": "Failed to save image",
"Save image as...": "Save image as...",
"Copy link address": "Copy link address",
"Copy email address": "Copy email address",
"Copy image": "Copy image",
"File": "File",
"Bring All to Front": "Bring All to Front",
"Zoom": "Zoom",
"Stop Speaking": "Stop Speaking",
"Start Speaking": "Start Speaking",
"Speech": "Speech",
"Unhide": "Unhide",
"Hide Others": "Hide Others",
"Hide": "Hide",
"Services": "Services",
"About": "About",
"Element Help": "Element Help",
"Help": "Help",
"Minimize": "Minimize",
"Window": "Window",
"Toggle Developer Tools": "Toggle Developer Tools",
"Toggle Full Screen": "Toggle Full Screen",
"Preferences": "Preferences",
"Zoom Out": "Zoom Out",
"Zoom In": "Zoom In",
"Actual Size": "Actual Size",
"View": "View",
"Select All": "Select All",
"Delete": "Delete",
"Paste and Match Style": "Paste and Match Style",
"Paste": "Paste",
"Copy": "Copy",
"Cut": "Cut",
"Redo": "Redo",
"Undo": "Undo",
"Edit": "Edit",
"Quit": "Quit",
"Show/Hide": "Show/Hide",
"Are you sure you want to quit?": "Are you sure you want to quit?",
"Cancel": "Cancel"
}

View File

@@ -1,50 +1,34 @@
{
"action": {
"cancel": "Nuligi",
"close": "Fermi",
"close_brand": "Fermu %(brand)s",
"copy": "Kopiu",
"cut": "Tranĉi",
"delete": "Forigi",
"edit": "Redakti",
"minimise": "Minimumigi",
"paste": "Enmeti",
"redo": "Refari",
"select_all": "Elekti Ĉiujn",
"show_hide": "Montri/Kaŝi",
"undo": "Malfari"
},
"common": {
"about": "Informilo",
"help": "Helpo",
"preferences": "Preferoj"
},
"confirm_quit": "Ĉu vi certas, ke vi volas ĉesi?",
"edit_menu": {
"speech_start_speaking": "Ekparoli",
"speech_stop_speaking": "Ĉesi Paroli"
},
"file_menu": {
"label": "Dosiero"
},
"menu": {
"hide": "Kaŝi",
"hide_others": "Kaŝi Aliajn",
"unhide": "Malkaŝi"
},
"right_click_menu": {
"copy_email": "Kopiu retadreson",
"copy_image": "Kopiu bildon",
"copy_image_url": "Kopiu adreson de la bildo",
"copy_link_url": "Kopiu ligilon de la bildo",
"save_image_as_error_description": "La bildo malsukcesis elŝutiĝi",
"save_image_as_error_title": "Malsukcesis elŝuti bildon"
},
"view_menu": {
"toggle_developer_tools": "Baskuligi Programistajn Ilojn",
"view": "Vidi"
},
"window_menu": {
"label": "Fenestro"
}
"The image failed to save": "La bildo malsukcesis elŝutiĝi",
"Failed to save image": "Malsukcesis elŝuti bildon",
"Stop Speaking": "Ĉesi Paroli",
"Start Speaking": "Ekparoli",
"Unhide": "Malkaŝi",
"Hide Others": "Kaŝi Aliajn",
"Hide": "Kaŝi",
"About": "Informilo",
"Element Help": "Element-a Helpo",
"Help": "Helpo",
"Toggle Developer Tools": "Baskuligi Programistajn Ilojn",
"Preferences": "Preferoj",
"View": "Vidi",
"Delete": "Forigi",
"Redo": "Refari",
"Undo": "Malfari",
"Edit": "Redakti",
"Show/Hide": "Montri/Kaŝi",
"Cancel": "Nuligi",
"Copy link address": "Kopiu ligilon de la bildo",
"Copy image address": "Kopiu adreson de la bildo",
"Copy email address": "Kopiu retadreson",
"Copy image": "Kopiu bildon",
"File": "Dosiero",
"Minimize": "Minimumigi",
"Window": "Fenestro",
"Select All": "Elekti Ĉiujn",
"Paste": "Enmeti",
"Copy": "Kopiu",
"Cut": "Tranĉi",
"Are you sure you want to quit?": "Ĉu vi certas, ke vi volas ĉesi?",
"Close %(brand)s": "Fermu %(brand)s"
}

View File

@@ -1,62 +1,47 @@
{
"action": {
"cancel": "Cancelar",
"close": "Cerrar",
"close_brand": "Cerrar %(brand)s",
"copy": "Copiar",
"cut": "Cortar",
"delete": "Eliminar",
"edit": "Editar",
"minimise": "Minimizar",
"paste": "Pegar",
"paste_match_style": "Pegar manteniendo estilo",
"quit": "Salir",
"redo": "Rehacer",
"select_all": "Seleccionar todo",
"show_hide": "Ver/Ocultar",
"undo": "Deshacer",
"zoom_in": "Acercar",
"zoom_out": "Alejar"
},
"common": {
"about": "Acerca de",
"brand_help": "Ayuda sobre %(brand)s",
"help": "Ayuda",
"preferences": "Preferencias"
},
"confirm_quit": "¿Quieres salir?",
"edit_menu": {
"speech": "Dictado",
"speech_start_speaking": "Empezar a hablar",
"speech_stop_speaking": "Parar de hablar"
},
"file_menu": {
"label": "Archivo"
},
"menu": {
"hide": "Ocultar",
"hide_others": "Ocultar otros",
"services": "Servicios",
"unhide": "Mostrar"
},
"right_click_menu": {
"add_to_dictionary": "Añadir al diccionario",
"copy_email": "Copiar dirección de correo",
"copy_image": "Copiar imagen",
"copy_image_url": "Copiar dirección de la imagen",
"copy_link_url": "Copiar dirección de enlace",
"save_image_as": "Guardar imagen como...",
"save_image_as_error_description": "La imagen no se ha podido guardar",
"save_image_as_error_title": "No se ha podido guardar la imagen"
},
"view_menu": {
"actual_size": "Tamaño real",
"toggle_developer_tools": "Abrir/cerrar herramientas de desarrollo",
"toggle_full_screen": "Entrar/salir de pantalla completa",
"view": "Ver"
},
"window_menu": {
"bring_all_to_front": "Traer todas al primer plano",
"label": "Ventana"
}
"Add to dictionary": "Añadir al diccionario",
"The image failed to save": "La imagen no se ha podido guardar",
"Failed to save image": "No se ha podido guardar la imagen",
"Save image as...": "Guardar imagen como...",
"Copy link address": "Copiar dirección de enlace",
"Copy email address": "Copiar dirección de correo",
"Copy image": "Copiar imagen",
"File": "Archivo",
"Bring All to Front": "Traer todas al primer plano",
"Zoom": "Zoom",
"Start Speaking": "Empezar a hablar",
"Stop Speaking": "Parar de hablar",
"Speech": "Dictado",
"Unhide": "Mostrar",
"Hide Others": "Ocultar otros",
"Hide": "Ocultar",
"Services": "Servicios",
"About": "Acerca de",
"Element Help": "Ayuda de Element",
"Help": "Ayuda",
"Close": "Cerrar",
"Minimize": "Minimizar",
"Window": "Ventana",
"Toggle Developer Tools": "Abrir/cerrar herramientas de desarrollo",
"Toggle Full Screen": "Entrar/salir de pantalla completa",
"Preferences": "Preferencias",
"Zoom Out": "Alejar",
"Zoom In": "Acercar",
"Actual Size": "Tamaño real",
"View": "Ver",
"Select All": "Seleccionar todo",
"Delete": "Eliminar",
"Paste and Match Style": "Pegar manteniendo estilo",
"Paste": "Pegar",
"Copy": "Copiar",
"Cut": "Cortar",
"Redo": "Rehacer",
"Undo": "Deshacer",
"Edit": "Editar",
"Quit": "Salir",
"Show/Hide": "Ver/Ocultar",
"Are you sure you want to quit?": "¿Quieres salir?",
"Cancel": "Cancelar",
"Copy image address": "Copiar dirección de la imagen",
"Close %(brand)s": "Cerrar %(brand)s"
}

View File

@@ -1,63 +1,47 @@
{
"action": {
"cancel": "Tühista",
"close": "Sulge",
"close_brand": "Sulge %(brand)s",
"copy": "Kopeeri",
"cut": "Lõika",
"delete": "Kustuta",
"edit": "Muuda",
"minimise": "Vähenda",
"paste": "Aseta",
"paste_match_style": "Aseta kasutades sama stiili",
"quit": "Välju",
"redo": "Tee uuesti",
"select_all": "Vali kõik",
"show_hide": "Näita/peida",
"undo": "Võta tagasi",
"zoom_in": "Suurenda",
"zoom_out": "Vähenda"
},
"common": {
"about": "Rakenduse teave",
"brand_help": "%(brand)s abiteave",
"help": "Abiteave",
"preferences": "Seadistused"
},
"confirm_quit": "Kas sa kindlasti soovid rakendusest väljuda?",
"edit_menu": {
"speech": "Kõne",
"speech_start_speaking": "Alusta rääkimist",
"speech_stop_speaking": "Lõpeta rääkimine"
},
"file_menu": {
"label": "Fail"
},
"menu": {
"hide": "Peida",
"hide_others": "Peida muud",
"services": "Teenused",
"unhide": "Näita uuesti"
},
"right_click_menu": {
"add_to_dictionary": "Lisa sõnastikku",
"copy_email": "Kopeeri e-posti aadress",
"copy_image": "Kopeeri pilt",
"copy_image_url": "Kopeeri pildi aadress",
"copy_link_url": "Kopeeri lingi aadress",
"save_image_as": "Salvesta pilt kui...",
"save_image_as_error_description": "Seda pilti ei õnnestunud salvestada",
"save_image_as_error_title": "Pildi salvestamine ei õnnestunud"
},
"view_menu": {
"actual_size": "Näita tavasuuruses",
"toggle_developer_tools": "Arendaja töövahendid sisse/välja",
"toggle_full_screen": "Täisekraanivaade sisse/välja",
"view": "Vaata"
},
"window_menu": {
"bring_all_to_front": "Too kõik esiplaanile",
"label": "Aken",
"zoom": "Suumi"
}
"Element Help": "Rakenduse Element abiteave",
"About": "Rakenduse teave",
"The image failed to save": "Seda pilti ei õnnestunud salvestada",
"Add to dictionary": "Lisa sõnastikku",
"Failed to save image": "Pildi salvestamine ei õnnestunud",
"Save image as...": "Salvesta pilt kui...",
"Copy link address": "Kopeeri lingi aadress",
"Copy email address": "Kopeeri e-posti aadress",
"Copy image": "Kopeeri pilt",
"File": "Fail",
"Bring All to Front": "Too kõik esiplaanile",
"Zoom": "Suumi",
"Stop Speaking": "Lõpeta rääkimine",
"Start Speaking": "Alusta rääkimist",
"Speech": "Kõne",
"Unhide": "Näita uuesti",
"Hide Others": "Peida muud",
"Hide": "Peida",
"Services": "Teenused",
"Help": "Abiteave",
"Close": "Sulge",
"Minimize": "Vähenda",
"Window": "Aken",
"Toggle Developer Tools": "Arendaja töövahendid sisse/välja",
"Toggle Full Screen": "Täisekraanivaade sisse/välja",
"Preferences": "Seadistused",
"Zoom Out": "Vähenda",
"Zoom In": "Suurenda",
"Actual Size": "Näita tavasuuruses",
"View": "Vaata",
"Select All": "Vali kõik",
"Delete": "Kustuta",
"Paste and Match Style": "Aseta kasutades sama stiili",
"Paste": "Aseta",
"Copy": "Kopeeri",
"Cut": "Lõika",
"Redo": "Tee uuesti",
"Undo": "Võta tagasi",
"Edit": "Muuda",
"Quit": "Välju",
"Show/Hide": "Näita/peida",
"Are you sure you want to quit?": "Kas sa kindlasti soovid rakendusest väljuda?",
"Cancel": "Tühista",
"Copy image address": "Kopeeri pildi aadress",
"Close %(brand)s": "Sulge %(brand)s"
}

View File

@@ -1,62 +1,47 @@
{
"action": {
"cancel": "لغو",
"close": "بستن",
"close_brand": "بستن %(brand)s",
"copy": "رونوشت",
"cut": "برش",
"delete": "حذف",
"edit": "ویرایش",
"minimise": "کمینه",
"paste": "جای‌گذاری",
"paste_match_style": "جای‌گذاری و تطبیق سَبک",
"quit": "خروج",
"redo": "انجام دوباره",
"select_all": "گزینش همه",
"show_hide": "نمایش/پنهان",
"undo": "بازگردانی",
"zoom_in": "بزرگنمایی به داخل",
"zoom_out": "بزرگنمایی به خارج"
},
"common": {
"about": "درباره",
"help": "راهنما",
"preferences": "ترجیحات"
},
"confirm_quit": "آیا مطمئنید که می‌خواهید خارج شوید؟",
"edit_menu": {
"speech": "صحبت کردن",
"speech_start_speaking": "صحبت کردن را شروع کنید",
"speech_stop_speaking": "صحبت کردن را تمام کنید"
},
"file_menu": {
"label": "پرونده"
},
"menu": {
"hide": "پنهان",
"hide_others": "پنهان کردن دیگران",
"services": "خدمات",
"unhide": "آشکار"
},
"right_click_menu": {
"add_to_dictionary": "افزودن به لغت‌نامه",
"copy_email": "رونوشت نشانی رایانامه",
"copy_image": "رونوشت تصویر",
"copy_image_url": "رونوشت نشانی تصویر",
"copy_link_url": "رونوشت نشانی پیوند",
"save_image_as": "ذخیرهٔ تصویر به عنوان...",
"save_image_as_error_description": "تصویر ذخیره نشد",
"save_image_as_error_title": "ذخیرهٔ تصویر شکست خورد"
},
"view_menu": {
"actual_size": "اندازهٔ واقعی",
"toggle_developer_tools": "تغییر وضعیت ابزارهای توسعه‌دهنده",
"toggle_full_screen": "تغییر وضعیت تمام‌صفحه",
"view": "دیدن"
},
"window_menu": {
"bring_all_to_front": "همه را به جلو بیاورید",
"label": "پنجره",
"zoom": "بزرگنمایی"
}
"Paste and Match Style": "جای‌گذاری و تطبیق سَبک",
"Add to dictionary": "افزودن به لغت‌نامه",
"The image failed to save": "تصویر ذخیره نشد",
"Failed to save image": "ذخیرهٔ تصویر شکست خورد",
"Save image as...": "ذخیرهٔ تصویر به عنوان...",
"Copy link address": "رونوشت نشانی پیوند",
"Copy image address": "رونوشت نشانی تصویر",
"Copy email address": "رونوشت نشانی رایانامه",
"Copy image": "رونوشت تصویر",
"File": "پرونده",
"Bring All to Front": "همه را به جلو بیاورید",
"Zoom": "بزرگنمایی",
"Speech": "صحبت کردن",
"Stop Speaking": "صحبت کردن را تمام کنید",
"Start Speaking": "صحبت کردن را شروع کنید",
"Unhide": "آشکار",
"Hide Others": "پنهان کردن دیگران",
"Hide": "پنهان",
"Services": "خدمات",
"About": "درباره",
"Element Help": "راهنمای المنت",
"Help": "راهنما",
"Close": "بستن",
"Minimize": "کمینه",
"Window": "پنجره",
"Toggle Developer Tools": "تغییر وضعیت ابزارهای توسعه‌دهنده",
"Toggle Full Screen": "تغییر وضعیت تمام‌صفحه",
"Preferences": "ترجیحات",
"Zoom Out": "بزرگنمایی به خارج",
"Zoom In": "بزرگنمایی به داخل",
"Actual Size": "اندازهٔ واقعی",
"View": "دیدن",
"Select All": "گزینش همه",
"Delete": "حذف",
"Paste": "جای‌گذاری",
"Copy": "رونوشت",
"Cut": "برش",
"Redo": "انجام دوباره",
"Undo": "بازگردانی",
"Edit": "ویرایش",
"Quit": "خروج",
"Show/Hide": "نمایش/پنهان",
"Are you sure you want to quit?": "آیا مطمئنید که می‌خواهید خارج شوید؟",
"Cancel": "لغو",
"Close %(brand)s": "بستن %(brand)s"
}

View File

@@ -1,62 +1,47 @@
{
"action": {
"cancel": "Peruuta",
"close": "Sulje",
"close_brand": "Sulje %(brand)s",
"copy": "Kopioi",
"cut": "Leikkaa",
"delete": "Poista",
"edit": "Muokkaa",
"minimise": "Pienennä",
"paste": "Liitä",
"paste_match_style": "Liitä ja sovita tyyli",
"quit": "Lopeta",
"redo": "Tee uudestaan",
"select_all": "Valitse kaikki",
"show_hide": "Näytä/piilota",
"undo": "Peru",
"zoom_in": "Suurenna",
"zoom_out": "Pienennä"
},
"common": {
"about": "Tietoja",
"help": "Apua",
"preferences": "Asetukset"
},
"confirm_quit": "Haluatko varmasti poistua?",
"edit_menu": {
"speech": "Puhe",
"speech_start_speaking": "Aloita puhe",
"speech_stop_speaking": "Lopeta puhe"
},
"file_menu": {
"label": "Tiedosto"
},
"menu": {
"hide": "Piilota",
"hide_others": "Piilota muut",
"services": "Palvelut",
"unhide": "Palauta näkyviin"
},
"right_click_menu": {
"add_to_dictionary": "Lisää sanakirjaan",
"copy_email": "Kopioi sähköpostiosoite",
"copy_image": "Kopioi kuva",
"copy_image_url": "Kopioi kuvan osoite",
"copy_link_url": "Kopioi linkin osoite",
"save_image_as": "Tallenna kuva nimellä...",
"save_image_as_error_description": "Kuvan tallennus epäonnistui",
"save_image_as_error_title": "Kuvan tallennus epäonnistui"
},
"view_menu": {
"actual_size": "Alkuperäinen koko",
"toggle_developer_tools": "Näytä tai piilota kehittäjätyökalut",
"toggle_full_screen": "Vaihda koko näytön tilaa",
"view": "Näytä"
},
"window_menu": {
"bring_all_to_front": "Tuo kaikki eteen",
"label": "Ikkuna",
"zoom": "Suurennus"
}
"Paste": "Liitä",
"Paste and Match Style": "Liitä ja sovita tyyli",
"Add to dictionary": "Lisää sanakirjaan",
"The image failed to save": "Kuvan tallennus epäonnistui",
"Failed to save image": "Kuvan tallennus epäonnistui",
"Save image as...": "Tallenna kuva nimellä...",
"Copy link address": "Kopioi linkin osoite",
"Copy email address": "Kopioi sähköpostiosoite",
"Copy image": "Kopioi kuva",
"File": "Tiedosto",
"Bring All to Front": "Tuo kaikki eteen",
"Zoom": "Suurennus",
"Stop Speaking": "Lopeta puhe",
"Start Speaking": "Aloita puhe",
"Speech": "Puhe",
"Unhide": "Palauta näkyviin",
"Hide Others": "Piilota muut",
"Hide": "Piilota",
"Services": "Palvelut",
"About": "Tietoja",
"Element Help": "Elementin ohjeet",
"Help": "Apua",
"Close": "Sulje",
"Minimize": "Pienennä",
"Window": "Ikkuna",
"Toggle Developer Tools": "Näytä tai piilota kehittäjätyökalut",
"Toggle Full Screen": "Vaihda koko näytön tilaa",
"Preferences": "Asetukset",
"Zoom Out": "Pienennä",
"Zoom In": "Suurenna",
"Actual Size": "Alkuperäinen koko",
"View": "Näytä",
"Select All": "Valitse kaikki",
"Delete": "Poista",
"Copy": "Kopioi",
"Cut": "Leikkaa",
"Redo": "Tee uudestaan",
"Undo": "Peru",
"Edit": "Muokkaa",
"Quit": "Lopeta",
"Show/Hide": "Näytä/piilota",
"Are you sure you want to quit?": "Haluatko varmasti poistua?",
"Cancel": "Peruuta",
"Copy image address": "Kopioi kuvan osoite",
"Close %(brand)s": "Sulje %(brand)s"
}

View File

@@ -1,61 +1,47 @@
{
"action": {
"cancel": "Annuler",
"close": "Fermer",
"close_brand": "Fermer %(brand)s",
"copy": "Copier",
"cut": "Couper",
"delete": "Supprimer",
"edit": "Modifier",
"minimise": "Minimiser",
"paste": "Coller",
"paste_match_style": "Copier avec le style de destination",
"quit": "Quitter",
"redo": "Refaire",
"select_all": "Tout sélectionner",
"show_hide": "Afficher/Masquer",
"undo": "Annuler",
"zoom_in": "Zoomer",
"zoom_out": "Dé-zoomer"
},
"common": {
"about": "À propos",
"brand_help": "Aide de %(brand)s",
"help": "Aide",
"preferences": "Préférences"
},
"confirm_quit": "Êtes-vous sûr de vouloir quitter ?",
"edit_menu": {
"speech": "Dictée",
"speech_start_speaking": "Commencer la dictée",
"speech_stop_speaking": "Arrêter la dictée"
},
"file_menu": {
"label": "Fichier"
},
"menu": {
"hide": "Masquer",
"hide_others": "Masquer les autres",
"unhide": "Dé-masquer"
},
"right_click_menu": {
"add_to_dictionary": "Ajouter au dictionnaire",
"copy_email": "Copier ladresse e-mail",
"copy_image": "Copier limage",
"copy_image_url": "Copier l'adresse de l'image",
"copy_link_url": "Copier ladresse du lien",
"save_image_as": "Enregistrer limage sous…",
"save_image_as_error_description": "Limage na pas pu être sauvegardée",
"save_image_as_error_title": "Échec de la sauvegarde de limage"
},
"view_menu": {
"actual_size": "Taille réelle",
"toggle_developer_tools": "Basculer les outils de développement",
"toggle_full_screen": "Basculer le plein écran",
"view": "Afficher"
},
"window_menu": {
"bring_all_to_front": "Tout amener au premier plan",
"label": "Fenêtre"
}
"Undo": "Annuler",
"Edit": "Modifier",
"Quit": "Quitter",
"Show/Hide": "Afficher/Masquer",
"Are you sure you want to quit?": "Êtes-vous sûr de vouloir quitter ?",
"Cancel": "Annuler",
"Unhide": "Dé-masquer",
"Hide Others": "Masquer les autres",
"Hide": "Masquer",
"Services": "Services",
"About": "À propos",
"Element Help": "Aide dElement",
"Help": "Aide",
"Close": "Fermer",
"Minimize": "Minimiser",
"Window": "Fenêtre",
"Toggle Developer Tools": "Basculer les outils de développement",
"Toggle Full Screen": "Basculer le plein écran",
"Preferences": "Préférences",
"Zoom Out": "Dé-zoomer",
"Zoom In": "Zoomer",
"Actual Size": "Taille réelle",
"View": "Afficher",
"Select All": "Tout sélectionner",
"Delete": "Supprimer",
"Paste and Match Style": "Copier avec le style de destination",
"Paste": "Coller",
"Copy": "Copier",
"Cut": "Couper",
"Speech": "Dictée",
"Add to dictionary": "Ajouter au dictionnaire",
"The image failed to save": "Limage na pas pu être sauvegardée",
"Failed to save image": "Échec de la sauvegarde de limage",
"Save image as...": "Enregistrer limage sous…",
"Copy link address": "Copier ladresse du lien",
"Copy email address": "Copier ladresse e-mail",
"Copy image": "Copier limage",
"File": "Fichier",
"Bring All to Front": "Tout amener au premier plan",
"Zoom": "Zoom",
"Stop Speaking": "Arrêter la dictée",
"Start Speaking": "Commencer la dictée",
"Copy image address": "Copier l'adresse de l'image",
"Redo": "Refaire",
"Close %(brand)s": "Fermer %(brand)s"
}

45
src/i18n/strings/fy.json Normal file
View File

@@ -0,0 +1,45 @@
{
"Copy image": "Ofbylding kopiearje",
"Speech": "Spraak",
"View": "Byld",
"Paste and Match Style": "Plakke en lit stilen oerienkomme",
"Add to dictionary": "Oan wurdlist tafoegje",
"The image failed to save": "It is net slagge de ôfbylding te bewarjen",
"Failed to save image": "Ofbylding bewarjen mislearre",
"Save image as...": "Ofbylding bewarje as…",
"Copy link address": "Keppeling kopiearje",
"Copy email address": "E-mailadres kopiearje",
"File": "Bestân",
"Bring All to Front": "Alles nei foaren bringe",
"Zoom": "Zoom",
"Stop Speaking": "Stopje mei praten",
"Start Speaking": "Begjin mei praten",
"Unhide": "Wer toane",
"Hide Others": "Oare ferbergje",
"Hide": "Ferbergje",
"Services": "Tsjinsten",
"About": "Oer",
"Element Help": "Element help",
"Help": "Help",
"Close": "Slute",
"Minimize": "Minimalisearje",
"Window": "Finster",
"Toggle Developer Tools": "Untwikkelersark yn-/útskeakelje",
"Toggle Full Screen": "Folslein skerm yn-/útskeakelje",
"Preferences": "Foarkarren",
"Zoom Out": "Utzoome",
"Zoom In": "Ynzoome",
"Actual Size": "Werklike grutte",
"Select All": "Alles selektearje",
"Delete": "Fuortsmite",
"Paste": "Plakke",
"Copy": "Kopiearje",
"Cut": "Knippe",
"Redo": "Opnij útfiere",
"Undo": "Ungedien meitsje",
"Edit": "Bewurkje",
"Quit": "Ofslute",
"Show/Hide": "Toane/Ferbergje",
"Are you sure you want to quit?": "Binne jo der wis fan dat jo ôfslute wolle?",
"Cancel": "Annulearje"
}

View File

@@ -1,60 +1,45 @@
{
"action": {
"cancel": "Cancelar",
"close": "Pechar",
"copy": "Copiar",
"cut": "Cortar",
"delete": "Eliminar",
"edit": "Editar",
"minimise": "Minimizar",
"paste": "Pegar",
"paste_match_style": "Pegar e imitar estilo",
"quit": "Saír",
"redo": "Refacer",
"select_all": "Elexir todo",
"show_hide": "Mostrar/Agochar",
"undo": "Desfacer",
"zoom_in": "Aumentar",
"zoom_out": "Diminuir"
},
"common": {
"about": "Acerca de",
"help": "Axuda",
"preferences": "Preferencias"
},
"confirm_quit": "Tes a certeza de que queres saír?",
"edit_menu": {
"speech": "Falar",
"speech_start_speaking": "Comeza a falar",
"speech_stop_speaking": "Deixa de falar"
},
"file_menu": {
"label": "Ficheiro"
},
"menu": {
"hide": "Agochar",
"hide_others": "Agochar outras",
"services": "Servizos",
"unhide": "Desagochar"
},
"right_click_menu": {
"add_to_dictionary": "Engadir ao dicionario",
"copy_email": "Copiar enderezo de email",
"copy_image": "Copiar imaxe",
"copy_link_url": "Copiar enderezo da ligazón",
"save_image_as": "Gardar imaxe como...",
"save_image_as_error_description": "Non se gardou a imaxe",
"save_image_as_error_title": "Fallou o gardado da imaxe"
},
"view_menu": {
"actual_size": "Tamaño real",
"toggle_developer_tools": "Activar ferramentas de desenvolvemento",
"toggle_full_screen": "Activar pantalla completa",
"view": "Ver"
},
"window_menu": {
"bring_all_to_front": "Traer todo á fronte",
"label": "Ventá",
"zoom": "Aumento"
}
"Add to dictionary": "Engadir ao dicionario",
"The image failed to save": "Non se gardou a imaxe",
"Failed to save image": "Fallou o gardado da imaxe",
"Save image as...": "Gardar imaxe como...",
"Copy link address": "Copiar enderezo da ligazón",
"Copy email address": "Copiar enderezo de email",
"Copy image": "Copiar imaxe",
"File": "Ficheiro",
"Bring All to Front": "Traer todo á fronte",
"Zoom": "Aumento",
"Stop Speaking": "Deixa de falar",
"Start Speaking": "Comeza a falar",
"Speech": "Falar",
"Unhide": "Desagochar",
"Hide Others": "Agochar outras",
"Hide": "Agochar",
"Services": "Servizos",
"About": "Acerca de",
"Element Help": "Axuda de Element",
"Help": "Axuda",
"Close": "Pechar",
"Minimize": "Minimizar",
"Window": "Ventá",
"Toggle Developer Tools": "Activar ferramentas de desenvolvemento",
"Toggle Full Screen": "Activar pantalla completa",
"Preferences": "Preferencias",
"Zoom Out": "Diminuir",
"Zoom In": "Aumentar",
"Actual Size": "Tamaño real",
"View": "Ver",
"Select All": "Elexir todo",
"Delete": "Eliminar",
"Paste and Match Style": "Pegar e imitar estilo",
"Paste": "Pegar",
"Copy": "Copiar",
"Cut": "Cortar",
"Redo": "Refacer",
"Undo": "Desfacer",
"Edit": "Editar",
"Quit": "Saír",
"Show/Hide": "Mostrar/Agochar",
"Are you sure you want to quit?": "Tes a certeza de que queres saír?",
"Cancel": "Cancelar"
}

View File

@@ -1,61 +1,46 @@
{
"action": {
"cancel": "ביטול",
"close": "סגור",
"copy": "העתק",
"cut": "גזור",
"delete": "מחק",
"edit": "עריכה",
"minimise": "מזער",
"paste": "הדבק",
"paste_match_style": "הדבק והתאם סגנון",
"quit": "יציאה",
"redo": "בצע שוב",
"select_all": "בחר הכל",
"show_hide": "הצג\\הסתר",
"undo": "בטל ביצוע",
"zoom_in": "התקרב",
"zoom_out": "התרחק"
},
"common": {
"about": "אודות",
"help": "עזרה",
"preferences": "העדפות"
},
"confirm_quit": "האם אתה בטוח שברצונך לצאת?",
"edit_menu": {
"speech": "דיבור",
"speech_start_speaking": תחל לדבר",
"speech_stop_speaking": "הפסק לדבר"
},
"file_menu": {
"label": "קובץ"
},
"menu": {
"hide": סתר",
"hide_others": "הסתר אחרים",
"services": "שרותים",
"unhide": טל הסתרה"
},
"right_click_menu": {
"add_to_dictionary": "הוסף למילון",
"copy_email": "העתק כתובת אימייל",
"copy_image": "העתק תמונה",
"copy_image_url": "העתקת כתובת התמונה",
"copy_link_url": "העתק קישור",
"save_image_as": "שמור תמונה בשם...",
"save_image_as_error_description": "שמירת התמונה נכשלה",
"save_image_as_error_title": "נכשל בשמירת התמונה"
},
"view_menu": {
"actual_size": "גודל ממשי",
"toggle_developer_tools": "הפעל כלי מפתחים",
"toggle_full_screen": "הפעל מצב מסך מלא",
"view": "צפה"
},
"window_menu": {
"bring_all_to_front": "הבא הכל לחזית",
"label": "חלון",
"zoom": "גודל תצוגה"
}
"Actual Size": "גודל ממשי",
"Add to dictionary": "הוסף למילון",
"The image failed to save": "שמירת התמונה נכשלה",
"Failed to save image": "נכשל בשמירת התמונה",
"Save image as...": "שמור תמונה בשם...",
"Copy link address": "העתק קישור",
"Copy email address": "העתק כתובת אימייל",
"Copy image": "העתק תמונה",
"File": ובץ",
"Bring All to Front": "הבא הכל לחזית",
"Zoom": "גודל תצוגה",
"Stop Speaking": "הפסק לדבר",
"Start Speaking": "התחל לדבר",
"Speech": "דיבור",
"Unhide": "בטל הסתרה",
"Hide Others": "הסתר אחרים",
"Hide": סתר",
"Services": "שרותים",
"About": "אודות",
"Element Help": "עזרה של אלמנט",
"Help": "עזרה",
"Close": "סגור",
"Minimize": "מזער",
"Window": "חלון",
"Toggle Developer Tools": "הפעל כלי מפתחים",
"Toggle Full Screen": "הפעל מצב מסך מלא",
"Preferences": עדפות",
"Zoom Out": "התרחק",
"Zoom In": "התקרב",
"View": "צפה",
"Select All": "בחר הכל",
"Delete": "מחק",
"Paste": "הדבק",
"Copy": עתק",
"Cut": "גזור",
"Undo": "בטל ביצוע",
"Redo": צע שוב",
"Edit": "עריכה",
"Quit": "יציאה",
"Show/Hide": "הצג\\הסתר",
"Are you sure you want to quit?": "האם אתה בטוח שברצונך לצאת?",
"Cancel": "ביטול",
"Paste and Match Style": "הדבק והתאם סגנון",
"Copy image address": "העתקת כתובת התמונה"
}

12
src/i18n/strings/hr.json Normal file
View File

@@ -0,0 +1,12 @@
{
"Paste": "Zalijepiti",
"Copy": "Kopirati",
"Cut": "Izrezati",
"Redo": "Preurediti",
"Undo": "Poništi",
"Edit": "Uredi",
"Quit": "Prestati",
"Show/Hide": "Pokaži/sakrij",
"Are you sure you want to quit?": "Jesi li siguran da želiš odustati?",
"Cancel": "Otkazati"
}

View File

@@ -1,62 +1,47 @@
{
"action": {
"cancel": "Mégsem",
"close": "Bezár",
"close_brand": "%(brand)s bezárása",
"copy": "Másol",
"cut": "Kivág",
"delete": "Töröl",
"edit": "Szerkeszt",
"minimise": "Lecsukás",
"paste": "Beillesztés",
"paste_match_style": "Beillesztés formázással",
"quit": "Kilép",
"redo": "Újra",
"select_all": "Összes kijelölése",
"show_hide": "Megmutat/Elrejt",
"undo": "Visszavon",
"zoom_in": "Nagyít",
"zoom_out": "Kicsinyít"
},
"common": {
"about": "Névjegy",
"help": "Segítség",
"preferences": "Beállítások"
},
"confirm_quit": "Biztos, hogy kilép?",
"edit_menu": {
"speech": "Beszéd",
"speech_start_speaking": "Kezdjen beszélni",
"speech_stop_speaking": "Fejezze be a beszédet"
},
"file_menu": {
"label": "Fájl"
},
"menu": {
"hide": "Eltakar",
"hide_others": "Minden mást eltakar",
"services": "Szolgáltatás",
"unhide": "Felfed"
},
"right_click_menu": {
"add_to_dictionary": "Hozzáadás a szótárhoz",
"copy_email": "E-mail cím másolása",
"copy_image": "Kép másolása",
"copy_image_url": "Kép címének másolása",
"copy_link_url": "Hivatkozás másolása",
"save_image_as": "Kép mentése másként...",
"save_image_as_error_description": "A kép mentése sikertelen",
"save_image_as_error_title": "Kép mentése sikertelen"
},
"view_menu": {
"actual_size": "Jelenlegi méret",
"toggle_developer_tools": "Fejlesztői eszközök",
"toggle_full_screen": "Teljes képernyő",
"view": "Nézet"
},
"window_menu": {
"bring_all_to_front": "Mindent előtérbe hoz",
"label": "Ablak",
"zoom": "Nagyítás"
}
"Add to dictionary": "Hozzáadás a szótárhoz",
"The image failed to save": "A kép mentése sikertelen",
"Failed to save image": "Kép mentése sikertelen",
"Save image as...": "Kép mentése másként...",
"Copy link address": "Hivatkozás másolása",
"Copy email address": "E-mail cím másolása",
"Copy image": "Kép másolása",
"File": "Fájl",
"Bring All to Front": "Mindent előtérbe hoz",
"Zoom": "Nagyítás",
"Stop Speaking": "Fejezze be a beszédet",
"Start Speaking": "Kezdjen beszélni",
"Speech": "Beszéd",
"Unhide": "Felfed",
"Hide Others": "Minden mást eltakar",
"Hide": "Eltakar",
"Services": "Szolgáltatás",
"About": "Névjegy",
"Element Help": "Element segítség",
"Help": "Segítség",
"Close": "Bezár",
"Minimize": "Lecsukás",
"Window": "Ablak",
"Toggle Developer Tools": "Fejlesztői eszközök",
"Toggle Full Screen": "Teljes képernyő",
"Preferences": "Beállítások",
"Zoom Out": "Kicsinyít",
"Zoom In": "Nagyít",
"Actual Size": "Jelenlegi méret",
"View": "Nézet",
"Select All": "Összes kijelölése",
"Delete": "Töröl",
"Paste and Match Style": "Beillesztés formázással",
"Paste": "Beillesztés",
"Copy": "Másol",
"Cut": "Kivág",
"Redo": "Újra",
"Undo": "Visszavon",
"Edit": "Szerkeszt",
"Quit": "Kilép",
"Show/Hide": "Megmutat/Elrejt",
"Are you sure you want to quit?": "Biztos, hogy kilép?",
"Cancel": "Mégsem",
"Copy image address": "Kép címének másolása",
"Close %(brand)s": "%(brand)s bezárása"
}

View File

@@ -1,59 +1,47 @@
{
"action": {
"cancel": "Batal",
"close": "Tutup",
"close_brand": "Tutuo %(brand)s",
"copy": "Salin",
"cut": "Potong",
"delete": "Hapus",
"minimise": "Minimalkan",
"paste": "Tempel",
"paste_match_style": "Tempel dan Cocokkan Gaya",
"quit": "Keluar",
"redo": "Ulangi",
"select_all": "Pilih Semua",
"show_hide": "Tampilkan/Sembunyikan",
"undo": "Urungkan",
"zoom_in": "Perbesar",
"zoom_out": "Perkecil"
},
"common": {
"about": "Tentang",
"brand_help": "Bantuan %(brand)s",
"help": "Bantuan",
"preferences": "Pengaturan"
},
"confirm_quit": "Apakah Anda yakin ingin keluar?",
"edit_menu": {
"speech": "Dikte",
"speech_start_speaking": "Mulai Berbicara",
"speech_stop_speaking": "Berhenti Berbicara"
},
"menu": {
"hide": "Sembunyikan",
"hide_others": "Sembunyikan yang Lain",
"services": "Layanan",
"unhide": "Tampilkan"
},
"right_click_menu": {
"add_to_dictionary": "Tambah ke kamus",
"copy_email": "Salin surel",
"copy_image": "Salin gambar",
"copy_image_url": "Salin alamat gambar",
"copy_link_url": "Salin alamat tautan",
"save_image_as": "Simpan gambar sebagai...",
"save_image_as_error_description": "Gambar gagal disimpan",
"save_image_as_error_title": "Gagal menyimpan gambar"
},
"view_menu": {
"actual_size": "Ukuran Sebenarnya",
"toggle_developer_tools": "Beralih Alat Pengembang",
"toggle_full_screen": "Beralih Layar Penuh",
"view": "Tampilan"
},
"window_menu": {
"bring_all_to_front": "Bawa Semua ke Depan",
"label": "Jendela",
"zoom": "Perbesar"
}
"Add to dictionary": "Tambah ke kamus",
"The image failed to save": "Gambar gagal disimpan",
"Failed to save image": "Gagal menyimpan gambar",
"Save image as...": "Simpan gambar sebagai...",
"Copy link address": "Salin alamat tautan",
"Copy email address": "Salin surel",
"Copy image": "Salin gambar",
"File": "File",
"Hide Others": "Sembunyikan yang Lain",
"Bring All to Front": "Bawa Semua ke Depan",
"Zoom": "Perbesar",
"Stop Speaking": "Berhenti Berbicara",
"Start Speaking": "Mulai Berbicara",
"Speech": "Dikte",
"Unhide": "Tampilkan",
"Hide": "Sembunyikan",
"Services": "Layanan",
"About": "Tentang",
"Element Help": "Bantuan Element",
"Help": "Bantuan",
"Close": "Tutup",
"Minimize": "Minimalkan",
"Window": "Jendela",
"Toggle Developer Tools": "Beralih Alat Pengembang",
"Toggle Full Screen": "Beralih Layar Penuh",
"Preferences": "Pengaturan",
"Zoom Out": "Perkecil",
"Zoom In": "Perbesar",
"Cut": "Potong",
"Redo": "Ulangi",
"Undo": "Urungkan",
"Actual Size": "Ukuran Sebenarnya",
"View": "Tampilan",
"Select All": "Pilih Semua",
"Delete": "Hapus",
"Paste and Match Style": "Tempel dan Cocokkan Gaya",
"Paste": "Tempel",
"Copy": "Salin",
"Edit": "Edit",
"Quit": "Keluar",
"Show/Hide": "Tampilkan/Sembunyikan",
"Are you sure you want to quit?": "Apakah Anda yakin ingin keluar?",
"Cancel": "Batal",
"Copy image address": "Salin alamat gambar",
"Close %(brand)s": "Tutuo %(brand)s"
}

View File

@@ -1,62 +1,47 @@
{
"action": {
"cancel": "Hætta við",
"close": "Loka",
"close_brand": "Loka %(brand)s",
"copy": "Afrita",
"cut": "Klippa",
"delete": "Eyða",
"edit": "Breyta",
"minimise": "Lágmarka",
"paste": "Líma",
"paste_match_style": "Líma og samsvara stíl",
"quit": "Hætta",
"redo": "Endurgera",
"select_all": "Velja allt",
"show_hide": "Sýna/Fela",
"undo": "Afturkalla",
"zoom_in": "Stækka",
"zoom_out": "Minnka"
},
"common": {
"about": "Um hugbúnaðinn",
"help": "Hjálp",
"preferences": "Stillingar"
},
"confirm_quit": "Ertu viss um að þú viljir hætta?",
"edit_menu": {
"speech": "Tal",
"speech_start_speaking": "Byrja tal",
"speech_stop_speaking": "Hætta tali"
},
"file_menu": {
"label": "Skrá"
},
"menu": {
"hide": "Fela",
"hide_others": "Fela aðra",
"services": "Þjónustur",
"unhide": "Birta"
},
"right_click_menu": {
"add_to_dictionary": "Bæta við orðasafn",
"copy_email": "Afrita tölvupóstfang",
"copy_image": "Afrita mynd",
"copy_image_url": "Afrita slóð myndar",
"copy_link_url": "Afrita vistfang tengils",
"save_image_as": "Vista mynd sem...",
"save_image_as_error_description": "Myndina var ekki hægt að vista",
"save_image_as_error_title": "Mistókst að vista mynd"
},
"view_menu": {
"actual_size": "Raunstærð",
"toggle_developer_tools": "Víxla forritunarverkfærum af/á",
"toggle_full_screen": "Víxla fullum skjá af/á",
"view": "Skoða"
},
"window_menu": {
"bring_all_to_front": "Setja allt fremst",
"label": "Gluggi",
"zoom": "Stærð"
}
"Add to dictionary": "Bæta við orðasafn",
"The image failed to save": "Myndina var ekki hægt að vista",
"Failed to save image": "Mistókst að vista mynd",
"Save image as...": "Vista mynd sem...",
"Copy link address": "Afrita vistfang tengils",
"Copy email address": "Afrita tölvupóstfang",
"Copy image": "Afrita mynd",
"File": "Skrá",
"Bring All to Front": "Setja allt fremst",
"Zoom": "Stærð",
"Stop Speaking": "Hætta tali",
"Start Speaking": "Byrja tal",
"Speech": "Tal",
"Unhide": "Birta",
"Hide Others": "Fela aðra",
"Hide": "Fela",
"Services": "Þjónustur",
"About": "Um hugbúnaðinn",
"Element Help": "Hjálp við Element",
"Help": "Hjálp",
"Close": "Loka",
"Minimize": "Lágmarka",
"Window": "Gluggi",
"Toggle Developer Tools": "Víxla forritunarverkfærum af/á",
"Toggle Full Screen": "Víxla fullum skjá af/á",
"Preferences": "Stillingar",
"Zoom Out": "Minnka",
"Zoom In": "Stækka",
"Actual Size": "Raunstærð",
"View": "Skoða",
"Select All": "Velja allt",
"Delete": "Eyða",
"Paste and Match Style": "Líma og samsvara stíl",
"Paste": "Líma",
"Copy": "Afrita",
"Cut": "Klippa",
"Redo": "Endurgera",
"Undo": "Afturkalla",
"Edit": "Breyta",
"Quit": "Hætta",
"Show/Hide": "Sýna/Fela",
"Are you sure you want to quit?": "Ertu viss um að þú viljir hætta?",
"Cancel": "Hætta við",
"Copy image address": "Afrita slóð myndar",
"Close %(brand)s": "Loka %(brand)s"
}

View File

@@ -1,59 +1,47 @@
{
"action": {
"cancel": "Annulla",
"close": "Chiudi",
"close_brand": "Chiudi %(brand)s",
"copy": "Copia",
"cut": "Taglia",
"delete": "Elimina",
"edit": "Modifica",
"minimise": "Riduci",
"paste": "Incolla",
"paste_match_style": "Incolla e adegua lo stile",
"quit": "Esci",
"redo": "Ripeti",
"select_all": "Seleziona tutto",
"show_hide": "Mostra/Nascondi",
"undo": "Annulla",
"zoom_in": "Ingrandisci",
"zoom_out": "Rimpicciolisci"
},
"common": {
"about": "Informazioni su",
"brand_help": "Aiuto per %(brand)s",
"help": "Aiuto",
"preferences": "Preferenze"
},
"confirm_quit": "Vuoi veramente uscire?",
"edit_menu": {
"speech": "Dettatura",
"speech_start_speaking": "Inizia a parlare",
"speech_stop_speaking": "Smetti di parlare"
},
"menu": {
"hide": "Nascondi",
"hide_others": "Nascondi gli altri",
"services": "Servizi",
"unhide": "Mostra"
},
"right_click_menu": {
"add_to_dictionary": "Aggiungi al dizionario",
"copy_email": "Copia indirizzo email",
"copy_image": "Copia immagine",
"copy_image_url": "Copia indirizzo immagine",
"copy_link_url": "Copia indirizzo collegamento",
"save_image_as": "Salva immagine come...",
"save_image_as_error_description": "Non è stato possibile salvare l'immagine",
"save_image_as_error_title": "Salvataggio immagine fallito"
},
"view_menu": {
"actual_size": "Dimensione effettiva",
"toggle_developer_tools": "Attiva strumenti per sviluppatori",
"toggle_full_screen": "Passa a schermo intero",
"view": "Vedi"
},
"window_menu": {
"bring_all_to_front": "Porta tutto in primo piano",
"label": "Finestra"
}
"Add to dictionary": "Aggiungi al dizionario",
"The image failed to save": "Non è stato possibile salvare l'immagine",
"Failed to save image": "Salvataggio immagine fallito",
"Save image as...": "Salva immagine come...",
"Copy link address": "Copia indirizzo collegamento",
"Copy email address": "Copia indirizzo email",
"Copy image": "Copia immagine",
"File": "File",
"Bring All to Front": "Porta tutto in primo piano",
"Zoom": "Zoom",
"Start Speaking": "Inizia a parlare",
"Unhide": "Mostra",
"Hide Others": "Nascondi gli altri",
"Hide": "Nascondi",
"Services": "Servizi",
"About": "Informazioni su",
"Element Help": "Aiuto di Element",
"Help": "Aiuto",
"Close": "Chiudi",
"Minimize": "Riduci",
"Window": "Finestra",
"Toggle Developer Tools": "Attiva strumenti per sviluppatori",
"Toggle Full Screen": "Passa a schermo intero",
"Preferences": "Preferenze",
"Zoom Out": "Rimpicciolisci",
"Zoom In": "Ingrandisci",
"Actual Size": "Dimensione effettiva",
"View": "Vedi",
"Select All": "Seleziona tutto",
"Delete": "Elimina",
"Paste and Match Style": "Incolla e adegua lo stile",
"Paste": "Incolla",
"Copy": "Copia",
"Cut": "Taglia",
"Redo": "Ripeti",
"Undo": "Annulla",
"Edit": "Modifica",
"Quit": "Esci",
"Show/Hide": "Mostra/Nascondi",
"Are you sure you want to quit?": "Vuoi veramente uscire?",
"Cancel": "Annulla",
"Stop Speaking": "Smetti di parlare",
"Speech": "Dettatura",
"Copy image address": "Copia indirizzo immagine",
"Close %(brand)s": "Chiudi %(brand)s"
}

View File

@@ -1,62 +1,47 @@
{
"action": {
"cancel": "キャンセル",
"close": "閉じる",
"close_brand": "%(brand)sを閉じる",
"copy": "コピー",
"cut": "切り取り",
"delete": "削除",
"edit": "編集",
"minimise": "最小化",
"paste": "貼り付け",
"paste_match_style": "スタイルを保持して貼り付け",
"quit": "終了",
"redo": "やり直す",
"select_all": "全て選択",
"show_hide": "表示/非表示",
"undo": "取り消す",
"zoom_in": "拡大",
"zoom_out": "縮小"
},
"common": {
"about": "概要",
"help": "ヘルプ",
"preferences": "環境設定"
},
"confirm_quit": "終了してよろしいですか?",
"edit_menu": {
"speech": "スピーチ",
"speech_start_speaking": "録音を開始",
"speech_stop_speaking": "録音を停止"
},
"file_menu": {
"label": "ファイル"
},
"menu": {
"hide": "表示",
"hide_others": "他を非表示",
"services": "サービス",
"unhide": "再表示"
},
"right_click_menu": {
"add_to_dictionary": "辞書に追加",
"copy_email": "メールアドレスをコピー",
"copy_image": "画像をコピー",
"copy_image_url": "画像のアドレスをコピー",
"copy_link_url": "リンクのアドレスをコピー",
"save_image_as": "画像を保存",
"save_image_as_error_description": "画像の保存に失敗しました",
"save_image_as_error_title": "画像の保存に失敗"
},
"view_menu": {
"actual_size": "等倍",
"toggle_developer_tools": "開発者ツールを切り替える",
"toggle_full_screen": "全画面表示を切り替える",
"view": "表示"
},
"window_menu": {
"bring_all_to_front": "全てを前面に表示",
"label": "ウィンドウ",
"zoom": "ズーム"
}
"Close %(brand)s": "%(brand)sを閉じる",
"Bring All to Front": "全てを前面に表示",
"The image failed to save": "画像の保存に失敗しました",
"Unhide": "再表示",
"Actual Size": "等倍",
"Paste and Match Style": "スタイルを保持して貼り付け",
"Add to dictionary": "辞書に追加",
"Failed to save image": "画像の保存に失敗",
"Save image as...": "画像を保存",
"Speech": "スピーチ",
"Stop Speaking": "録音を停止",
"Start Speaking": "録音を開始",
"Toggle Developer Tools": "開発者ツールを切り替える",
"Toggle Full Screen": "全画面表示を切り替える",
"Redo": "やり直す",
"Undo": "取り消す",
"Minimize": "最小化",
"Window": "ウィンドウ",
"Preferences": "環境設定",
"Zoom Out": "縮小",
"Zoom In": "拡大",
"Copy link address": "リンクのアドレスをコピー",
"Copy image address": "画像のアドレスをコピー",
"Copy email address": "メールアドレスをコピー",
"Copy image": "画像をコピー",
"File": "ファイル",
"Zoom": "ズーム",
"Hide Others": "他を非表示",
"Hide": "非表示",
"Services": "サービス",
"About": "概要",
"Element Help": "Element ヘルプ",
"Help": "ヘルプ",
"Close": "閉じる",
"View": "表示",
"Select All": "全て選択",
"Delete": "削除",
"Paste": "貼り付け",
"Copy": "コピー",
"Cut": "切り取り",
"Edit": "編集",
"Quit": "終了",
"Are you sure you want to quit?": "終了してよろしいですか?",
"Show/Hide": "表示/非表示",
"Cancel": "キャンセル"
}

12
src/i18n/strings/ko.json Normal file
View File

@@ -0,0 +1,12 @@
{
"File": "파일",
"Copy email address": "이메일 주소 복사",
"Paste": "붙여넣기",
"Hide": "숨기기",
"Preferences": "환경설정",
"Undo": "실행 취소",
"Edit": "수정",
"Quit": "종료",
"Delete": "삭제",
"Cancel": "취소"
}

View File

@@ -1,61 +1,46 @@
{
"action": {
"cancel": "ຍົກເລີກ",
"close": "ປິດ",
"copy": "ສຳເນົາ",
"cut": "ຕັດ",
"delete": "ລຶບ",
"edit": "ແກ້ໄຂ",
"minimise": "ຫຍໍ້ນ້ອຍ",
"paste": "ກັອບມາໃສ່",
"paste_match_style": "ກັອບມາໃສ່ ແລະໃຫ້ສະຕາຍຕົງກັນ",
"quit": "ຍົກເລີກ",
"redo": "ລຶ້ມຄືນ",
"select_all": "ເລືອກທັງໝົດ",
"show_hide": "ສະແດງ/ເຊື່ອງ",
"undo": "ຮື້ຄືນ",
"zoom_in": "ຊູມເຂົ້າ",
"zoom_out": "ຊູມອອກ"
},
"common": {
"about": "ກ່ຽວກັບ",
"help": "ຊ່ວຍເຫຼືອ",
"preferences": "ການຕັ້ງຄ່າ"
},
"confirm_quit": "ທ່ານຕ້ອງການປິດແທ້ບໍ່?",
"edit_menu": {
"speech": "ຄຳກ່າວ",
"speech_start_speaking": "ເລີ່ມສົນທະນາ",
"speech_stop_speaking": "ເຊົາສົນທະນາ"
},
"file_menu": {
"label": "ຟາຍ"
},
"menu": {
"hide": "ເຊື່ອງ",
"hide_others": "ເຊື່ອງອັນອື່ນ",
"services": "ບໍລິການ",
"unhide": "ໂຊຄືນ"
},
"right_click_menu": {
"add_to_dictionary": "ເພີ່ມເຂົ້າໄປວັດຈະນານຸກົມ",
"copy_email": "ສຳເນົາທີ່ຢູ່ເມວ",
"copy_image": "ສຳເນົາຮູບ",
"copy_image_url": "ສຳເນົາທີ່ຢູ່ຮູບພາບ",
"copy_link_url": "ສຳເນົາທີ່ຢູ່ລິ້ງ",
"save_image_as": "ບັນທຶກຮູບພາບເປັນ...",
"save_image_as_error_description": "ຮູບພາບບໍ່ສາມາດບັດທຶກໄດ້",
"save_image_as_error_title": "ການບັນທຶກຮູບພາບບໍ່ສຳເລັດ"
},
"view_menu": {
"actual_size": "ຂະໜາດຕົວຈິງ",
"toggle_developer_tools": "ສະຫຼັບໄປໜ້າເຄື່ອງມືພັດທະນາ",
"toggle_full_screen": "ສະຫຼັບເຕັມຈໍ",
"view": "ເບິ່ງ"
},
"window_menu": {
"bring_all_to_front": "ເອົາທັງໝົດມາທາງໜ້າ",
"label": "ປ່ອງຢ້ຽມ",
"zoom": "ຊູມ"
}
"Toggle Developer Tools": "ສະຫຼັບໄປໜ້າເຄື່ອງມືພັດທະນາ",
"Add to dictionary": "ເພີ່ມເຂົ້າໄປວັດຈະນານຸກົມ",
"The image failed to save": "ຮູບພາບບໍ່ສາມາດບັດທຶກໄດ້",
"Failed to save image": "ການບັນທຶກຮູບພາບບໍ່ສຳເລັດ",
"Save image as...": "ບັນທຶກຮູບພາບເປັນ...",
"Copy link address": "ສຳເນົາທີ່ຢູ່ລິ້ງ",
"Copy image address": "ສຳເນົາທີ່ຢູ່ຮູບພາບ",
"Copy email address": "ສຳເນົາທີ່ຢູ່ເມວ",
"Copy image": "ສຳເນົາຮູບ",
"File": "ຟາຍ",
"Bring All to Front": "ເອົາທັງໝົດມາທາງໜ້າ",
"Zoom": "ຊູມ",
"Stop Speaking": "ເຊົາສົນທະນາ",
"Start Speaking": "ເລີ່ມສົນທະນາ",
"Speech": "ຄຳກ່າວ",
"Unhide": "ໂຊຄືນ",
"Hide Others": "ເຊື່ອງອັນອື່ນ",
"Hide": "ເຊື່ອງ",
"Services": "ບໍລິການ",
"About": "ກ່ຽວກັບ",
"Element Help": "ລະບົບຊ່ວຍເຫຼືອ",
"Help": "ຊ່ວຍເຫຼືອ",
"Close": "ປິດ",
"Minimize": "ຫຍໍ້ນ້ອຍ",
"Window": "ປ່ອງຢ້ຽມ",
"Toggle Full Screen": "ສະຫຼັບເຕັມຈໍ",
"Preferences": "ການຕັ້ງຄ່າ",
"Zoom Out": "ຊູມອອກ",
"Zoom In": "ຊູມເຂົ້າ",
"Actual Size": "ຂະໜາດຕົວຈິງ",
"View": "ເບິ່ງ",
"Select All": "ເລືອກທັງໝົດ",
"Delete": "ລຶບ",
"Paste and Match Style": "ກັອບມາໃສ່ ແລະໃຫ້ສະຕາຍຕົງກັນ",
"Paste": "ກັອບມາໃສ່",
"Copy": "ສຳເນົາ",
"Cut": "ຕັດ",
"Redo": "ລຶ້ມຄືນ",
"Undo": "ຮື້ຄືນ",
"Edit": "ແກ້ໄຂ",
"Quit": "ຍົກເລີກ",
"Show/Hide": "ສະແດງ/ເຊື່ອງ",
"Are you sure you want to quit?": "ທ່ານຕ້ອງການປິດແທ້ບໍ່?",
"Cancel": "ຍົກເລີກ"
}

View File

@@ -1,62 +1,47 @@
{
"action": {
"cancel": "Atšaukti",
"close": "Uždaryti",
"close_brand": "Uždaryti %(brand)s",
"copy": "Kopijuoti",
"cut": "Iškirpti",
"delete": "Ištrinti",
"edit": "Redaguoti",
"minimise": "Sumažinti",
"paste": "Įklijuoti",
"paste_match_style": "Įklijuoti ir suderinti stilių",
"quit": "Išeiti",
"redo": "Sugrąžinti veiksmą",
"select_all": "Pasirinkti visus",
"show_hide": "Rodyti/Slėpti",
"undo": "Atšaukti veiksmą",
"zoom_in": "Priartinti",
"zoom_out": "Atitolinti"
},
"common": {
"about": "Apie",
"help": "Pagalba",
"preferences": "Nuostatos"
},
"confirm_quit": "Ar tikrai norite išeiti?",
"edit_menu": {
"speech": "Kalba",
"speech_start_speaking": "Pradėti kalbėti",
"speech_stop_speaking": "Nustoti kalbėti"
},
"file_menu": {
"label": "Failas"
},
"menu": {
"hide": "Slėpti",
"hide_others": "Slėpti kitus",
"services": "Paslaugos",
"unhide": "Nebeslėpti"
},
"right_click_menu": {
"add_to_dictionary": "Pridėti prie žodyno",
"copy_email": "Kopijuoti el. pašto adresą",
"copy_image": "Kopijuoti paveikslėlį",
"copy_image_url": "Kopijuoti paveikslėlio adresą",
"copy_link_url": "Kopijuoti nuorodos adresą",
"save_image_as": "Įrašyti paveikslėlį kaip...",
"save_image_as_error_description": "Paveikslėlio nepavyko išsaugoti",
"save_image_as_error_title": "Nepavyko įrašyti paveikslėlio"
},
"view_menu": {
"actual_size": "Tikrasis dydis",
"toggle_developer_tools": "Perjungti kūrėjo įrankius",
"toggle_full_screen": "Perjungti viso ekrano režimą",
"view": "Peržiūrėti"
},
"window_menu": {
"bring_all_to_front": "Viską iškelti į priekį",
"label": "Langas",
"zoom": "Priartinti"
}
"Failed to save image": "Nepavyko įrašyti paveikslėlio",
"Save image as...": "Įrašyti paveikslėlį kaip...",
"Copy image address": "Kopijuoti paveikslėlio adresą",
"Copy image": "Kopijuoti paveikslėlį",
"The image failed to save": "Paveikslėlio nepavyko išsaugoti",
"Bring All to Front": "Viską iškelti į priekį",
"Speech": "Kalba",
"Actual Size": "Tikrasis dydis",
"Toggle Developer Tools": "Perjungti kūrėjo įrankius",
"Toggle Full Screen": "Perjungti viso ekrano režimą",
"Paste and Match Style": "Įklijuoti ir suderinti stilių",
"Redo": "Sugrąžinti veiksmą",
"Undo": "Atšaukti veiksmą",
"Select All": "Pasirinkti visus",
"Delete": "Ištrinti",
"Paste": "Įklijuoti",
"Copy": "Kopijuoti",
"Cut": "Iškirpti",
"Add to dictionary": "Pridėti prie žodyno",
"Copy link address": "Kopijuoti nuorodos adresą",
"Copy email address": "Kopijuoti el. pašto adresą",
"File": "Failas",
"Zoom": "Priartinti",
"Stop Speaking": "Nustoti kalbėti",
"Start Speaking": "Pradėti kalbėti",
"Unhide": "Nebeslėpti",
"Hide Others": "Slėpti kitus",
"Hide": "Slėpti",
"Services": "Paslaugos",
"About": "Apie",
"Element Help": "Element Pagalba",
"Help": "Pagalba",
"Close": "Uždaryti",
"Minimize": "Sumažinti",
"Window": "Langas",
"Preferences": "Nuostatos",
"Zoom Out": "Atitolinti",
"Zoom In": "Priartinti",
"View": "Peržiūrėti",
"Edit": "Redaguoti",
"Quit": "Išeiti",
"Show/Hide": "Rodyti/Slėpti",
"Are you sure you want to quit?": "Ar tikrai norite išeiti?",
"Cancel": "Atšaukti",
"Close %(brand)s": "Uždaryti %(brand)s"
}

47
src/i18n/strings/lv.json Normal file
View File

@@ -0,0 +1,47 @@
{
"Start Speaking": "Runājiet...",
"Add to dictionary": "Pievienot vārdnīcai",
"The image failed to save": "Attēlu neizdevās saglabāt",
"Failed to save image": "Neizdevās saglabāt attēlu",
"Save image as...": "Saglabāt attēlu kā...",
"Copy link address": "Kopēt saiti",
"Copy email address": "Kopēt e-pasta adresi",
"Copy image": "Kopēt attēlu",
"File": "Fails",
"Bring All to Front": "Iznest visu priekšplānā",
"Zoom": "Mērogošana",
"Stop Speaking": "Beidziet runāt",
"Speech": "Runa",
"Unhide": "Rādīt",
"Hide Others": "Slēpt citus",
"Hide": "Slēpt",
"Services": "Pakalpojumi",
"About": "Par programmu",
"Element Help": "Element palīdzība",
"Help": "Palīdzība",
"Close": "Aizvērt",
"Minimize": "Minimizēt",
"Window": "Logs",
"Toggle Developer Tools": "Pārslēgt uz Izstrādātāja rīkiem",
"Toggle Full Screen": "Pārslēgt uz pilnekrānu",
"Preferences": "Iestatījumi",
"Zoom Out": "Samazināt",
"Zoom In": "Palielināt",
"Actual Size": "Faktiskais izmērs",
"View": "Skats",
"Select All": "Atzīmēt visus",
"Delete": "Dzēst",
"Paste and Match Style": "Ievietot, saglabājot stilu",
"Paste": "Ievietot",
"Copy": "Kopēt",
"Cut": "Izgriezt",
"Redo": "Atatgriezt/atatsaukt/atatdarīt",
"Undo": "Atgriezt/atsaukt/atdarīt",
"Edit": "Rediģēt",
"Quit": "Iziet",
"Show/Hide": "Rādīt/nerādīt",
"Are you sure you want to quit?": "Tiešām vēlaties iziet?",
"Cancel": "Atcelt",
"Copy image address": "Kopēt attēla adresi",
"Close %(brand)s": "Aizvērt %(brand)s"
}

View File

@@ -0,0 +1,38 @@
{
"Toggle Developer Tools": "Veksle Utvikleralternativer",
"Add to dictionary": "Legg til i ordbok",
"The image failed to save": "Bildet kunne ikke lagres",
"Failed to save image": "Kunne ikke lagre bildet",
"Save image as...": "Lagre bildet som...",
"Copy email address": "Kopier e-postadressen",
"Copy image": "Kopier bildet",
"File": "Fil",
"Stop Speaking": "Slutt å snakke",
"Start Speaking": "Begynn å snakke",
"Speech": "Tale",
"Hide": "Skjul",
"About": "Om",
"Element Help": "Element Hjelp",
"Help": "Hjelp",
"Close": "Lukk",
"Minimize": "Minimere",
"Window": "Vindu",
"Zoom Out": "Zoom ut",
"Zoom In": "Zoom inn",
"Actual Size": "Faktisk størrelse",
"View": "Se",
"Select All": "Velg alle",
"Delete": "Slett",
"Paste": "Lim inn",
"Copy": "Kopier",
"Undo": "Angre",
"Edit": "Rediger",
"Quit": "Avslutt",
"Show/Hide": "Vis/Skjul",
"Are you sure you want to quit?": "Er du sikker på at du vil slutte?",
"Cancel": "Avbryt",
"Services": "Tjenester",
"Hide Others": "Skjul Andre",
"Bring All to Front": "Flytt Alt Frem",
"Toggle Full Screen": "Veksle Fullskjerm"
}

View File

@@ -1,60 +1,47 @@
{
"action": {
"cancel": "Annuleren",
"close": "Sluiten",
"close_brand": "Sluit %(brand)s",
"copy": "Kopiëren",
"cut": "Knippen",
"delete": "Verwijderen",
"edit": "Bewerken",
"minimise": "Minimaliseren",
"paste": "Plakken",
"paste_match_style": "Plakken zonder stijl",
"quit": "Sluiten",
"redo": "Opnieuw doen",
"select_all": "Alles selecteren",
"show_hide": "Tonen/Verbergen",
"undo": "Ongedaan maken",
"zoom_in": "Inzoomen",
"zoom_out": "Uitzoomen"
},
"common": {
"about": "Over",
"preferences": "Voorkeuren"
},
"confirm_quit": "Weet u zeker dat u wilt stoppen?",
"edit_menu": {
"speech": "Spraak",
"speech_start_speaking": "Begin met praten",
"speech_stop_speaking": "Stop met praten"
},
"file_menu": {
"label": "Bestand"
},
"menu": {
"hide": "Verbergen",
"hide_others": "Anderen verbergen",
"services": "Diensten",
"unhide": "Weer laten zien"
},
"right_click_menu": {
"add_to_dictionary": "Aan woordenboek toevoegen",
"copy_email": "E-mailadres kopiëren",
"copy_image": "Afbeelding kopiëren",
"copy_image_url": "Kopieer afbeeldingsadres",
"copy_link_url": "Link kopiëren",
"save_image_as": "Afbeelding opslaan als...",
"save_image_as_error_description": "De afbeelding opslaan is mislukt",
"save_image_as_error_title": "Afbeelding opslaan is mislukt"
},
"view_menu": {
"actual_size": "Werkelijke grootte",
"toggle_developer_tools": "Developer Tools wisselen",
"toggle_full_screen": "Volledig scherm wisselen",
"view": "Bekijken"
},
"window_menu": {
"bring_all_to_front": "Alles naar voren brengen",
"label": "Venster"
}
"Add to dictionary": "Aan woordenboek toevoegen",
"The image failed to save": "De afbeelding opslaan is mislukt",
"Failed to save image": "Afbeelding opslaan is mislukt",
"Save image as...": "Afbeelding opslaan als...",
"Copy link address": "Link kopiëren",
"Copy email address": "E-mailadres kopiëren",
"Copy image": "Afbeelding kopiëren",
"File": "Bestand",
"Bring All to Front": "Alles naar voren brengen",
"Zoom": "Zoom",
"Stop Speaking": "Stop met praten",
"Start Speaking": "Begin met praten",
"Speech": "Spraak",
"Unhide": "Weer laten zien",
"Hide Others": "Anderen verbergen",
"Hide": "Verbergen",
"Services": "Diensten",
"About": "Over",
"Element Help": "Element-hulp",
"Help": "Help",
"Close": "Sluiten",
"Minimize": "Minimaliseren",
"Window": "Venster",
"Toggle Developer Tools": "Developer Tools wisselen",
"Toggle Full Screen": "Volledig scherm wisselen",
"Preferences": "Voorkeuren",
"Zoom Out": "Uitzoomen",
"Zoom In": "Inzoomen",
"Actual Size": "Werkelijke grootte",
"View": "Bekijken",
"Select All": "Alles selecteren",
"Delete": "Verwijderen",
"Paste and Match Style": "Plakken zonder stijl",
"Paste": "Plakken",
"Copy": "Kopiëren",
"Cut": "Knippen",
"Redo": "Opnieuw doen",
"Undo": "Ongedaan maken",
"Edit": "Bewerken",
"Quit": "Sluiten",
"Show/Hide": "Tonen/Verbergen",
"Are you sure you want to quit?": "Weet u zeker dat u wilt stoppen?",
"Cancel": "Annuleren",
"Copy image address": "Kopieer afbeeldingsadres",
"Close %(brand)s": "Sluit %(brand)s"
}

45
src/i18n/strings/nn.json Normal file
View File

@@ -0,0 +1,45 @@
{
"The image failed to save": "Biletet vart ikkje lagra",
"Paste and Match Style": "Lim inn og tilpass stil",
"Redo": "Gjer om",
"Undo": "Angre",
"Are you sure you want to quit?": "Er du sikker på at du vil avslutta?",
"Add to dictionary": "Legg til i ordlista",
"Failed to save image": "Klarte ikkje å lagra biletet",
"Save image as...": "Lagre bilete som…",
"Copy link address": "Kopier lenkjeadresse",
"Copy email address": "Kopier e-postadresse",
"Copy image": "Kopier bilete",
"File": "Fil",
"Bring All to Front": "Plasser lengst fram",
"Zoom": "Zoom",
"Stop Speaking": "Stopp snakka",
"Start Speaking": "Byrja snakka",
"Speech": "Tale",
"Unhide": "Ikkje gøym",
"Hide Others": "Gøym andre",
"Hide": "Gøym",
"Services": "Tenester",
"About": "Om",
"Element Help": "Hjelp med Element",
"Help": "Hjelp",
"Close": "Lat att",
"Minimize": "Minimer",
"Window": "Vindauga",
"Toggle Developer Tools": "Developer Tools av/på",
"Toggle Full Screen": "Fullskjerm av/på",
"Preferences": "Innstillingar",
"Zoom Out": "Zoom ut",
"Zoom In": "Zoom inn",
"Actual Size": "Faktisk storleik",
"View": "Vis",
"Select All": "Marker alt",
"Delete": "Slett",
"Paste": "Lim inn",
"Copy": "Lim inn",
"Cut": "Klipp ut",
"Edit": "Rediger",
"Quit": "Avslutt",
"Show/Hide": "Vis/Gøym",
"Cancel": "Avbryt"
}

View File

@@ -1,63 +1,47 @@
{
"action": {
"cancel": "Anuluj",
"close": "Zamknij",
"close_brand": "Zamknij %(brand)s",
"copy": "Kopiuj",
"cut": "Wytnij",
"delete": "Usuń",
"edit": "Edytuj",
"minimise": "Minimalizuj",
"paste": "Wklej",
"paste_match_style": "Wklej i dopasuj styl",
"quit": "Zamknij",
"redo": "Ponów",
"select_all": "Zaznacz wszystko",
"show_hide": "Pokaż/Ukryj",
"undo": "Cofnij",
"zoom_in": "Powiększ",
"zoom_out": "Pomniejsz"
},
"common": {
"about": "O nas",
"brand_help": "Pomoc %(brand)s",
"help": "Pomoc",
"preferences": "Preferencje"
},
"confirm_quit": "Czy na pewno chcesz zamknąć?",
"edit_menu": {
"speech": "Mowa",
"speech_start_speaking": "Zacznij mówić",
"speech_stop_speaking": "Przestań mówić"
},
"file_menu": {
"label": "Plik"
},
"menu": {
"hide": "Ukryj",
"hide_others": "Ukryj inne",
"services": "Usługi",
"unhide": "Odkryj"
},
"right_click_menu": {
"add_to_dictionary": "Dodaj do słownika",
"copy_email": "Kopiuj adres e-mail",
"copy_image": "Kopiuj obraz",
"copy_image_url": "Kopiuj adres obrazu",
"copy_link_url": "Kopiuj adres odnośnika",
"save_image_as": "Zapisz obraz jako...",
"save_image_as_error_description": "Obraz nie został zapisany",
"save_image_as_error_title": "Nie udało się zapisać obrazu"
},
"view_menu": {
"actual_size": "Rozmiar rzeczywisty",
"toggle_developer_tools": "Przełącz na narzędzia deweloperskie",
"toggle_full_screen": "Przełącz na pełny ekran",
"view": "Pokaż"
},
"window_menu": {
"bring_all_to_front": "Wyciągnij wszystko do przodu",
"label": "Okno",
"zoom": "Powiększenie"
}
"Bring All to Front": "Wyciągnij wszystko do przodu",
"Add to dictionary": "Dodaj do słownika",
"The image failed to save": "Obraz nie został zapisany",
"Failed to save image": "Nie udało się zapisać obrazu",
"Save image as...": "Zapisz obraz jako...",
"Copy link address": "Kopiuj adres odnośnika",
"Copy email address": "Kopiuj adres e-mail",
"Copy image": "Kopiuj obraz",
"File": "Plik",
"Zoom": "Powiększenie",
"Stop Speaking": "Przestań mówić",
"Start Speaking": "Zacznij mówić",
"Speech": "Mowa",
"Unhide": "Odkryj",
"Hide Others": "Ukryj inne",
"Hide": "Ukryj",
"Services": "Usługi",
"About": "O nas",
"Element Help": "Pomoc Element",
"Help": "Pomoc",
"Close": "Zamknij",
"Minimize": "Minimalizuj",
"Window": "Okno",
"Toggle Developer Tools": "Przełącz na narzędzia deweloperskie",
"Toggle Full Screen": "Przełącz na pełny ekran",
"Preferences": "Preferencje",
"Zoom Out": "Pomniejsz",
"Zoom In": "Powiększ",
"Actual Size": "Rozmiar rzeczywisty",
"View": "Pokaż",
"Select All": "Zaznacz wszystko",
"Delete": "Usuń",
"Paste and Match Style": "Wklej i dopasuj styl",
"Paste": "Wklej",
"Copy": "Kopiuj",
"Cut": "Wytnij",
"Redo": "Ponów",
"Undo": "Cofnij",
"Edit": "Edytuj",
"Quit": "Zamknij",
"Show/Hide": "Pokaż/Ukryj",
"Are you sure you want to quit?": "Czy na pewno chcesz zamknąć?",
"Cancel": "Anuluj",
"Copy image address": "Kopiuj adres obrazu",
"Close %(brand)s": "Zamknij %(brand)s"
}

View File

@@ -1,61 +1,47 @@
{
"action": {
"cancel": "Cancelar",
"close": "Fechar",
"close_brand": "Fechar %(brand)s",
"copy": "Copiar",
"cut": "Cortar",
"delete": "Deletar",
"edit": "Editar",
"minimise": "Minimizar",
"paste": "Colar",
"paste_match_style": "Colar e Adequar Estilo",
"quit": "Sair",
"redo": "Refazer",
"select_all": "Selecionar Todas",
"show_hide": "Mostrar/Esconder",
"undo": "Desfazer",
"zoom_in": "Dar Zoom In",
"zoom_out": "Dar Zoom Out"
},
"common": {
"about": "Sobre",
"help": "Ajuda",
"preferences": "Preferências"
},
"confirm_quit": "Você tem certeza que você quer sair?",
"edit_menu": {
"speech": "Fala",
"speech_start_speaking": "Começar a Falar",
"speech_stop_speaking": "Parar de Falar"
},
"file_menu": {
"label": "Arquivo"
},
"menu": {
"hide": "Esconder",
"hide_others": "Esconder Outras(os)",
"services": "Serviços",
"unhide": "Desesconder"
},
"right_click_menu": {
"add_to_dictionary": "Adicionar a dicionário",
"copy_email": "Copiar endereço de email",
"copy_image": "Copiar imagem",
"copy_image_url": "Copiar endereço de imagem",
"copy_link_url": "Copiar endereço de link",
"save_image_as": "Salvar imagem como...",
"save_image_as_error_description": "A imagem falhou para salvar",
"save_image_as_error_title": "Falha para salvar imagem"
},
"view_menu": {
"actual_size": "Tamanho de Verdade",
"toggle_developer_tools": "Ativar/Desativar Ferramentas de Desenvolvimento",
"toggle_full_screen": "Pôr em/Tirar de Tela Cheia",
"view": "Visualizar"
},
"window_menu": {
"bring_all_to_front": "Trazer Todas Para Frente",
"label": "Janela"
}
"Add to dictionary": "Adicionar a dicionário",
"The image failed to save": "A imagem falhou para salvar",
"Failed to save image": "Falha para salvar imagem",
"Save image as...": "Salvar imagem como...",
"Copy link address": "Copiar endereço de link",
"Copy email address": "Copiar endereço de email",
"Copy image": "Copiar imagem",
"File": "Arquivo",
"Zoom": "Zoom",
"Stop Speaking": "Parar de Falar",
"Start Speaking": "Começar a Falar",
"Speech": "Fala",
"Unhide": "Desesconder",
"Hide": "Esconder",
"Services": "Serviços",
"About": "Sobre",
"Element Help": "Ajuda de Element",
"Help": "Ajuda",
"Close": "Fechar",
"Minimize": "Minimizar",
"Window": "Janela",
"Toggle Developer Tools": "Ativar/Desativar Ferramentas de Desenvolvimento",
"Toggle Full Screen": "Pôr em/Tirar de Tela Cheia",
"Preferences": "Preferências",
"Zoom Out": "Dar Zoom Out",
"Zoom In": "Dar Zoom In",
"Actual Size": "Tamanho de Verdade",
"View": "Visualizar",
"Select All": "Selecionar Todas",
"Delete": "Deletar",
"Paste and Match Style": "Colar e Adequar Estilo",
"Paste": "Colar",
"Copy": "Copiar",
"Cut": "Cortar",
"Redo": "Refazer",
"Undo": "Desfazer",
"Edit": "Editar",
"Quit": "Sair",
"Show/Hide": "Mostrar/Esconder",
"Are you sure you want to quit?": "Você tem certeza que você quer sair?",
"Cancel": "Cancelar",
"Bring All to Front": "Trazer Todas Para Frente",
"Hide Others": "Esconder Outras(os)",
"Copy image address": "Copiar endereço de imagem",
"Close %(brand)s": "Fechar %(brand)s"
}

44
src/i18n/strings/ro.json Normal file
View File

@@ -0,0 +1,44 @@
{
"Add to dictionary": "Adăugați la dicționar",
"Failed to save image": "Eroare în salvarea imaginii",
"Save image as...": "Salvează imagine ca ...",
"Copy link address": "Copiază link",
"Copy email address": "Copiază adresă de email",
"Copy image": "Copiază imagine",
"File": "Fișier",
"Bring All to Front": "Aduce-ți totul in față",
"Zoom": "Zoom",
"Stop Speaking": "Oprire Voce",
"Start Speaking": "Pornire Voce",
"Speech": "Voce",
"Hide Others": "Ascunde restul",
"Hide": "Ascunde",
"Services": "Servicii",
"About": "Despre",
"Element Help": "Ajutor Element",
"Help": "Ajutor",
"Close": "Inchide",
"Minimize": "Minimizare",
"Window": "Fereastră",
"Toggle Developer Tools": "Comutare unelte dezvoltator",
"Toggle Full Screen": "Comutare pe tot ecranul",
"Preferences": "Preferințe",
"Zoom Out": "Micșorează",
"Zoom In": "Mărește",
"Actual Size": "Mărime reală",
"View": "Vizualizează",
"Select All": "Selectează tot",
"Delete": "Șterge",
"Paste and Match Style": "Lipește si potrivește stilul",
"Paste": "Lipește",
"Copy": "Copiază",
"Redo": "Refă",
"Undo": "Anulare",
"Edit": "Editare",
"Quit": "Închid",
"Show/Hide": "Arată/Ascunde",
"Are you sure you want to quit?": "Sigur vrei să ieși din cont?",
"Cancel": "Anulare",
"Close %(brand)s": "Închide %(brand)s",
"Cut": "Taie"
}

View File

@@ -1,63 +1,47 @@
{
"action": {
"cancel": "Отмена",
"close": "Закрыть",
"close_brand": "Закрыть %(brand)s",
"copy": "Копировать",
"cut": "Вырезать",
"delete": "Удалить",
"edit": "Изменить",
"minimise": "Свернуть",
"paste": "Вставить",
"paste_match_style": "Вставить с тем же стилем",
"quit": "Выйти",
"redo": "Повторить",
"select_all": "Выбрать все",
"show_hide": "Показать/скрыть",
"undo": "Отменить",
"zoom_in": "Увеличить",
"zoom_out": "Уменьшить"
},
"common": {
"about": "О программе",
"brand_help": "Помощь %(brand)s",
"help": "Помощь",
"preferences": "Предпочтения"
},
"confirm_quit": "Вы уверены, что хотите выйти?",
"edit_menu": {
"speech": "Речь",
"speech_start_speaking": "Говорите",
"speech_stop_speaking": "Перестаньте говорить"
},
"file_menu": {
"label": "Файл"
},
"menu": {
"hide": "Скрыть",
"hide_others": "Скрыть прочие",
"services": "Службы",
"unhide": "Показать"
},
"right_click_menu": {
"add_to_dictionary": "Добавить в словарь",
"copy_email": "Копировать адрес почты",
"copy_image": "Копировать изображение",
"copy_image_url": "Копировать адрес изображения",
"copy_link_url": "Копировать ссылку",
"save_image_as": "Сохранить изображение как...",
"save_image_as_error_description": "Не удалось сохранить изображение",
"save_image_as_error_title": "Не удалось сохранить изображение"
},
"view_menu": {
"actual_size": "Фактический размер",
"toggle_developer_tools": "Переключить инструменты разработчика",
"toggle_full_screen": "Переключить полноэкранный режим",
"view": "Просмотр"
},
"window_menu": {
"bring_all_to_front": "Вынести всё вперёд",
"label": "Окно",
"zoom": "Масштаб"
}
"Edit": "Изменить",
"Quit": "Выйти",
"Cancel": "Отмена",
"Show/Hide": "Показать/скрыть",
"Are you sure you want to quit?": "Вы уверены, что хотите выйти?",
"Copy email address": "Копировать адрес почты",
"Copy image": "Копировать изображение",
"File": "Файл",
"Zoom": "Масштаб",
"Unhide": "Показать",
"Hide": "Скрыть",
"Services": "Сервисы",
"About": "О программе",
"Element Help": "Справка Element",
"Help": "Справка",
"Close": "Закрыть",
"Minimize": "Свернуть",
"Window": "Окно",
"Toggle Developer Tools": "Переключить инструменты разработчика",
"Toggle Full Screen": "Переключить полноэкранный режим",
"Preferences": "Параметры",
"Zoom Out": "Уменьшить",
"Zoom In": "Увеличить",
"Actual Size": "Фактический размер",
"View": "Просмотр",
"Select All": "Выбрать все",
"Delete": "Удалить",
"Paste": "Вставить",
"Copy": "Копировать",
"Cut": "Вырезать",
"Redo": "Повторить",
"Undo": "Отменить",
"Save image as...": "Сохранить изображение как...",
"Copy link address": "Копировать ссылку",
"Add to dictionary": "Добавить в словарь",
"The image failed to save": "Не удалось сохранить изображение",
"Failed to save image": "Не удалось сохранить изображение",
"Bring All to Front": "Вынести всё вперёд",
"Stop Speaking": "Перестаньте говорить",
"Start Speaking": "Говорите",
"Speech": "Голос",
"Hide Others": "Скрыть прочие",
"Paste and Match Style": "Вставить с тем же стилем",
"Copy image address": "Копировать адрес изображения",
"Close %(brand)s": "Закрыть %(brand)s"
}

46
src/i18n/strings/si.json Normal file
View File

@@ -0,0 +1,46 @@
{
"Show/Hide": "පෙන්වන්න/සඟවන්න",
"Are you sure you want to quit?": "ඔබට ඉවත් වීමට අවශ්‍ය බව විශ්වාස ද?",
"Cancel": "අවලංගු කරන්න",
"Add to dictionary": "ශබ්ද කෝෂයට එකතු කරන්න",
"Copy link address": "සබැඳියේ ලිපිනය පිටපත් කරන්න",
"Copy email address": "වි-තැපෑල පිටපත් කරන්න",
"File": "ගොනුව",
"Zoom": "විශාල කරන්න",
"Hide Others": "වෙනත් දෑ සඟවන්න",
"Hide": "සඟවන්න",
"Services": "සේවා",
"About": "පිළිබඳව",
"Element Help": "ඉලමෙන්ට් උපකාර",
"Help": "උපකාර",
"Close": "වසන්න",
"Minimize": "හකුලන්න",
"Window": "කවුළුව",
"Zoom Out": "කුඩාලනය කරන්න",
"Zoom In": "විශාලනය කරන්න",
"Actual Size": "සැබෑ ප්‍රමාණය",
"Select All": "සියල්ල තෝරන්න",
"Paste": "අලවන්න",
"Copy": "පිටපත්",
"Cut": "කපන්න",
"Redo": "පසුසේ",
"Undo": "පෙරසේ",
"Edit": "සංස්කරණය",
"Quit": "ඉවත් වන්න",
"Paste and Match Style": "අලවා ශෛලිය ගැළපුම",
"Delete": "මකන්න",
"The image failed to save": "රූපය සුරැකීමට අසමත්",
"Failed to save image": "රූපය සුරැකීමට අසමත්",
"Save image as...": "...ලෙස රූපය සුරකින්න",
"Copy image address": "රූපයේ ලිපිනයේ පිටපතක්",
"Copy image": "රූපයෙහි පිටපතක්",
"Bring All to Front": "සියල්ල ඉදිරිපසට",
"Stop Speaking": "කථාව නිමාව",
"Start Speaking": "කථාව ආරම්භය",
"Speech": "කථාව",
"Unhide": "නොසඟවන්න",
"Toggle Developer Tools": "සංවර්ධක මෙවලම්",
"Toggle Full Screen": "පූර්ණ තිරයට",
"Preferences": "පෙනුම",
"View": "දකින්න"
}

View File

@@ -1,63 +1,47 @@
{
"action": {
"cancel": "Zrušiť",
"close": "Zavrieť",
"close_brand": "Zatvoriť %(brand)s",
"copy": "Kopírovať",
"cut": "Vystrihnúť",
"delete": "Odstrániť",
"edit": "Úpravy",
"minimise": "Minimalizovať",
"paste": "Vložiť",
"paste_match_style": "Vložiť a prispôsobiť štýl",
"quit": "Ukončiť",
"redo": "Opakovať",
"select_all": "Vybrať všetko",
"show_hide": "Zobraziť/Skryť",
"undo": "Späť",
"zoom_in": "Priblížiť",
"zoom_out": "Oddialiť"
},
"common": {
"about": "O aplikácii",
"brand_help": "%(brand)s Pomoc",
"help": "Pomocník",
"preferences": "Vlastnosti"
},
"confirm_quit": "Naozaj chcete zavrieť aplikáciu?",
"edit_menu": {
"speech": "Reč",
"speech_start_speaking": "Spustiť nahrávanie hlasu",
"speech_stop_speaking": "Zastaviť nahrávanie hlasu"
},
"file_menu": {
"label": "Súbor"
},
"menu": {
"hide": "Skryť",
"hide_others": "Skryť ostatné",
"services": "Služby",
"unhide": "Odkryť"
},
"right_click_menu": {
"add_to_dictionary": "Pridať do slovníka",
"copy_email": "Kopírovať e-mailovú adresu",
"copy_image": "Kopírovať obrázok",
"copy_image_url": "Kopírovať adresu obrázka",
"copy_link_url": "Kopírovať adresu odkazu",
"save_image_as": "Uložiť obrázok ako...",
"save_image_as_error_description": "Obrázok sa nepodarilo uložiť",
"save_image_as_error_title": "Chyba pri ukladaní obrázka"
},
"view_menu": {
"actual_size": "Aktuálna veľkosť",
"toggle_developer_tools": "Nástroje pre vývojárov",
"toggle_full_screen": "Celá obrazovka",
"view": "Zobraziť"
},
"window_menu": {
"bring_all_to_front": "Preniesť všetky do popredia",
"label": "Okno",
"zoom": "Lupa"
}
"Unhide": "Odkryť",
"Stop Speaking": "Zastaviť nahrávanie hlasu",
"Start Speaking": "Spustiť nahrávanie hlasu",
"Speech": "Reč",
"Element Help": "Pomocník pre aplikáciu Element",
"Paste and Match Style": "Vložiť a prispôsobiť štýl",
"Add to dictionary": "Pridať do slovníka",
"The image failed to save": "Obrázok sa nepodarilo uložiť",
"Failed to save image": "Chyba pri ukladaní obrázka",
"Save image as...": "Uložiť obrázok ako...",
"Copy link address": "Kopírovať adresu odkazu",
"Copy email address": "Kopírovať e-mailovú adresu",
"Copy image": "Kopírovať obrázok",
"File": "Súbor",
"Bring All to Front": "Preniesť všetky do popredia",
"Zoom": "Lupa",
"Hide Others": "Skryť ostatné",
"Hide": "Skryť",
"Services": "Služby",
"About": "O aplikácii",
"Help": "Pomocník",
"Close": "Zavrieť",
"Minimize": "Minimalizovať",
"Window": "Okno",
"Toggle Developer Tools": "Nástroje pre vývojárov",
"Toggle Full Screen": "Celá obrazovka",
"Preferences": "Vlastnosti",
"Zoom Out": "Oddialiť",
"Zoom In": "Priblížiť",
"Actual Size": "Aktuálna veľkosť",
"View": "Zobraziť",
"Select All": "Vybrať všetko",
"Delete": "Odstrániť",
"Paste": "Vložiť",
"Copy": "Kopírovať",
"Cut": "Vystrihnúť",
"Redo": "Opakovať",
"Undo": "Späť",
"Edit": "Úpravy",
"Quit": "Ukončiť",
"Show/Hide": "Zobraziť/Skryť",
"Are you sure you want to quit?": "Naozaj chcete zavrieť aplikáciu?",
"Cancel": "Zrušiť",
"Copy image address": "Kopírovať adresu obrázka",
"Close %(brand)s": "Zatvoriť %(brand)s"
}

View File

@@ -1,17 +0,0 @@
{
"action": {
"cancel": "Anuloje",
"close": "Mbylle",
"copy": "Kopjoje",
"delete": "Fshije",
"edit": "Përpuno"
},
"common": {
"about": "Mbi",
"help": "Ndihmë",
"preferences": "Parapëlqime"
},
"view_menu": {
"view": "Shihni"
}
}

View File

@@ -1,63 +1,47 @@
{
"action": {
"cancel": "Avbryt",
"close": "Stäng",
"close_brand": "Stäng %(brand)s",
"copy": "Kopiera",
"cut": "Klipp ut",
"delete": "Radera",
"edit": "Redigera",
"minimise": "Minimera",
"paste": "Klistra in",
"paste_match_style": "Klistra in och matcha stilen",
"quit": "Avsluta",
"redo": "Gör om",
"select_all": "Markera allt",
"show_hide": "Visa/dölj",
"undo": "Ångra",
"zoom_in": "Zooma in",
"zoom_out": "Zooma ut"
},
"common": {
"about": "Om",
"brand_help": "%(brand)s-hjälp",
"help": "Hjälp",
"preferences": "Inställningar"
},
"confirm_quit": "Är du säker att du vill avsluta?",
"edit_menu": {
"speech": "Tal",
"speech_start_speaking": "Börja tala",
"speech_stop_speaking": "Sluta tala"
},
"file_menu": {
"label": "Arkiv"
},
"menu": {
"hide": "Göm",
"hide_others": "Göm övriga",
"services": "Tjänster",
"unhide": "Sluta gömma"
},
"right_click_menu": {
"add_to_dictionary": "Lägg till i ordlistan",
"copy_email": "Kopiera e-postadress",
"copy_image": "Kopiera bild",
"copy_image_url": "Kopiera bildadress",
"copy_link_url": "Kopiera länkadress",
"save_image_as": "Spara bild som…",
"save_image_as_error_description": "Bilden sparades inte",
"save_image_as_error_title": "Misslyckades med att spara bilden"
},
"view_menu": {
"actual_size": "Verklig storlek",
"toggle_developer_tools": "Växla utvecklarverktyg",
"toggle_full_screen": "Växla helskärm",
"view": "Visa"
},
"window_menu": {
"bring_all_to_front": "Lägg alla överst",
"label": "Fönster",
"zoom": "Zooma"
}
"Save image as...": "Spara bild som…",
"Copy link address": "Kopiera länkadress",
"Copy email address": "Kopiera e-postadress",
"Copy image": "Kopiera bild",
"File": "Arkiv",
"Bring All to Front": "Lägg alla överst",
"Stop Speaking": "Sluta tala",
"Start Speaking": "Börja tala",
"Speech": "Tal",
"Hide Others": "Göm övriga",
"Hide": "Göm",
"Services": "Tjänster",
"About": "Om",
"Element Help": "Element-Hjälp",
"Help": "Hjälp",
"Close": "Stäng",
"Minimize": "Minimera",
"Window": "Fönster",
"Preferences": "Inställningar",
"Actual Size": "Verklig storlek",
"View": "Visa",
"Select All": "Markera allt",
"Delete": "Radera",
"Paste and Match Style": "Klistra in och matcha stilen",
"Paste": "Klistra in",
"Copy": "Kopiera",
"Cut": "Klipp ut",
"Redo": "Gör om",
"Undo": "Ångra",
"Edit": "Redigera",
"Quit": "Avsluta",
"Cancel": "Avbryt",
"Zoom": "Zooma",
"Toggle Developer Tools": "Växla utvecklarverktyg",
"Toggle Full Screen": "Växla helskärm",
"Unhide": "Sluta gömma",
"Zoom Out": "Zooma ut",
"Zoom In": "Zooma in",
"Show/Hide": "Visa/dölj",
"Add to dictionary": "Lägg till i ordlistan",
"The image failed to save": "Bilden sparades inte",
"Failed to save image": "Misslyckades med att spara bilden",
"Are you sure you want to quit?": "Är du säker att du vill avsluta?",
"Copy image address": "Kopiera bildadress",
"Close %(brand)s": "Stäng %(brand)s"
}

47
src/i18n/strings/ta.json Normal file
View File

@@ -0,0 +1,47 @@
{
"Zoom": "பெரிதாக்குதல்",
"Minimize": "சிறிதாக்கு",
"Toggle Developer Tools": "உருவாக்குநர் கருவிகளை நிலைமாற்று",
"Toggle Full Screen": "முழு திரையை நிலைமாற்று",
"Paste and Match Style": "ஒட்டு மற்றும் நடையை பொருத்து",
"Add to dictionary": "அகராதியில் சேர்",
"The image failed to save": "படம் சேமிக்கத் தவறிவிட்டது",
"Failed to save image": "படத்தைச் சேமிப்பதில் தோல்வி",
"Save image as...": "படத்தை இவ்வாறு சேமி...",
"Copy link address": "இணைப்பு முகவரியை நகலெடு",
"Copy email address": "மின்னஞ்சல் முகவரியை நகலெடு",
"Copy image": "படத்தை நகலெடு",
"File": "கோப்பு",
"Bring All to Front": "அனைத்தையும் முன்னால் கொண்டுவா",
"Stop Speaking": "பேசுவதை நிறுத்து",
"Start Speaking": "பேசத் துவங்கு",
"Speech": "பேச்சு",
"Unhide": "மறைநீக்கு",
"Hide Others": "மற்றவற்றை மறை",
"Hide": "மறை",
"Services": "சேவைகள்",
"About": "இதனைப் பற்றி",
"Element Help": "எலிமெண்ட் உதவி",
"Help": "உதவி",
"Close": "மூடு",
"Window": "சாளரம்",
"Preferences": "விருப்பத்தேர்வுகள்",
"Zoom Out": "சிறிதாக்கு",
"Zoom In": "பெரிதாக்கு",
"Actual Size": "உண்மையான அளவு",
"View": "காட்டு",
"Select All": "அனைத்தையும் தேர்ந்தெடு",
"Delete": "அழி",
"Paste": "ஒட்டு",
"Copy": "நகலெடு",
"Cut": "வெட்டு",
"Redo": "மீண்டும் செய்",
"Undo": "செயல்தவிர்",
"Edit": "திருத்து",
"Quit": "வெளியேறு",
"Show/Hide": "காட்டு/மறை",
"Are you sure you want to quit?": "நீங்கள் நிச்சயம் வெளியேற விரும்புகிறீர்களா?",
"Cancel": "விலக்கிக்கொள்",
"Copy image address": "பட முகவரியை நகலெடு",
"Close %(brand)s": "%(brand)s ஐ மூடு"
}

9
src/i18n/strings/te.json Normal file
View File

@@ -0,0 +1,9 @@
{
"About": "గ్రెంచ్",
"Paste and Match Style": "మునుపటి వంటి అతికించండి",
"Paste": "పేస్ట్",
"Cut": "కట్",
"Copy": "కాపీ",
"Are you sure you want to quit?": "మీరు వెళ్ళిపోవాలని అనుకుంటున్నారా?",
"Cancel": "ఆపు"
}

16
src/i18n/strings/tl.json Normal file
View File

@@ -0,0 +1,16 @@
{
"Hide": "Itago",
"Delete": "Alisin",
"Paste and Match Style": "I-paste at Tumugma ng Style",
"Paste": "I-paste",
"Copy": "I-copy",
"Cut": "I-cut",
"Redo": "Redo",
"Undo": "Undo",
"Edit": "I-edit",
"Quit": "Magsara",
"Show/Hide": "Ipakita/itago",
"Are you sure you want to quit?": "Sigurado ka ba na gusto mong magsara?",
"Close %(brand)s": "Isara ang %(brand)s",
"Cancel": "Kanselahin"
}

View File

@@ -1,61 +1,46 @@
{
"action": {
"cancel": "İptal",
"close": "Kapat",
"copy": "Kopyala",
"cut": "Kes",
"delete": "Sil",
"edit": "Düzenle",
"minimise": "Küçült",
"paste": "Yapıştır",
"paste_match_style": "Biçimiyle bir yapıştır",
"quit": ık",
"redo": "Yinele",
"select_all": "Tümünü seç",
"show_hide": "Göster/Gizle",
"undo": "Geri al",
"zoom_in": "Yaklaştır",
"zoom_out": "Uzaklaştır"
},
"common": {
"about": "Hakkında",
"help": "Yardım",
"preferences": "Tercihler"
},
"confirm_quit": ıkmak istediğinize emin misiniz?",
"edit_menu": {
"speech": "Konuşma",
"speech_start_speaking": "Konuşmaya başla",
"speech_stop_speaking": "Konuşmayı durdur"
},
"file_menu": {
"label": "Dosya"
},
"menu": {
"hide": "Gizle",
"hide_others": "Diğerlerini gizle",
"services": "Hizmetler",
"unhide": "Gizlemeyi bırak"
},
"right_click_menu": {
"add_to_dictionary": "Sözlüğe ekle",
"copy_email": "E-posta adresini kopyala",
"copy_image": "Resmi kopyala",
"copy_image_url": "Görsel adresini kopyala",
"copy_link_url": "Bağlantılı adresi kopyala",
"save_image_as": "Resmi ... olarak farklı kaydet",
"save_image_as_error_description": "Bu resim kaydedilemedi",
"save_image_as_error_title": "Resim kaydedilemedi"
},
"view_menu": {
"actual_size": "Gerçek boyut",
"toggle_developer_tools": "Geliştirici araçları",
"toggle_full_screen": "Tam ekran",
"view": "Görünüm"
},
"window_menu": {
"bring_all_to_front": "Hepsini öne getir",
"label": "Pencere",
"zoom": "Yaklaştır"
}
"Add to dictionary": "Sözlüğe ekle",
"The image failed to save": "Bu resim kaydedilemedi",
"Failed to save image": "Resim kaydedilemedi",
"Save image as...": "Resmi ... olarak farklı kaydet",
"Copy link address": "Bağlantılı adresi kopyala",
"Copy email address": "E-posta adresini kopyala",
"Copy image": "Resmi kopyala",
"File": "Dosya",
"Bring All to Front": "Hepsini öne getir",
"Zoom": "Yaklaştır",
"Stop Speaking": "Konuşmayı durdur",
"Start Speaking": "Konuşmaya başla",
"Speech": "Konuşma",
"Unhide": "Gizlemeyi bırak",
"Hide Others": "Diğerlerini gizle",
"Hide": "Gizle",
"Services": "Hizmetler",
"About": "Hakkında",
"Element Help": "Element yardımı",
"Help": "Yardım",
"Close": "Kapat",
"Minimize": "Küçült",
"Window": "Pencere",
"Toggle Developer Tools": "Geliştirici araçları",
"Toggle Full Screen": "Tam ekran",
"Preferences": "Tercihler",
"Zoom Out": "Uzaklaştır",
"Zoom In": "Yaklaştır",
"Actual Size": "Gerçek boyut",
"View": "Görünüm",
"Select All": "Tümünü seç",
"Delete": "Sil",
"Paste and Match Style": "Biçimiyle bir yapıştır",
"Paste": "Yapıştır",
"Copy": "Kopyala",
"Cut": "Kes",
"Redo": "Yinele",
"Undo": "Geri al",
"Edit": "Düzenle",
"Quit": ık",
"Show/Hide": "Göster/Gizle",
"Are you sure you want to quit?": ıkmak istediğinize emin misiniz?",
"Cancel": "İptal",
"Copy image address": "Görsel adresini kopyala"
}

View File

@@ -1,63 +1,47 @@
{
"action": {
"cancel": "Скасувати",
"close": "Закрити",
"close_brand": "Закрити %(brand)s",
"copy": "Копіювати",
"cut": "Вирізати",
"delete": "Видалити",
"edit": "Змінити",
"minimise": "Згорнути",
"paste": "Вставити",
"paste_match_style": "Вставити з таким же стилем",
"quit": "Вийти",
"redo": "Повторити дію",
"select_all": "Вибрати все",
"show_hide": "Показати/Сховати",
"undo": "Скасувати дію",
"zoom_in": "Збільшити",
"zoom_out": "Зменшити"
},
"common": {
"about": "Про застосунок",
"brand_help": "Довідка %(brand)s",
"help": "Довідка",
"preferences": "Параметри"
},
"confirm_quit": "Ви впевнені, що хочете вийти?",
"edit_menu": {
"speech": "Мовлення",
"speech_start_speaking": "Почати говорити",
"speech_stop_speaking": "Припинити говорити"
},
"file_menu": {
"label": "Файл"
},
"menu": {
"hide": "Сховати",
"hide_others": "Сховати інші",
"services": "Служби",
"unhide": "Показати"
},
"right_click_menu": {
"add_to_dictionary": "Додати до словника",
"copy_email": "Копіювати адресу е-пошти",
"copy_image": "Копіювати зображення",
"copy_image_url": "Копіювати адресу зображення",
"copy_link_url": "Копіювати адресу посилання",
"save_image_as": "Зберегти зображення як...",
"save_image_as_error_description": "Не вдалося зберегти зображення",
"save_image_as_error_title": "Не вдалося зберегти зображення"
},
"view_menu": {
"actual_size": "Фактичний розмір",
"toggle_developer_tools": "Перемкнути інструменти розробника",
"toggle_full_screen": "Перемкнути повноекранний режим",
"view": "Перегляд"
},
"window_menu": {
"bring_all_to_front": "Винести все вперед",
"label": "Вікно",
"zoom": "Масштаб"
}
"Add to dictionary": "Додати до словника",
"The image failed to save": "Не вдалося зберегти зображення",
"Failed to save image": "Не вдалося зберегти зображення",
"Save image as...": "Зберегти зображення як...",
"Copy link address": "Копіювати адресу посилання",
"Copy image address": "Копіювати адресу зображення",
"Copy email address": "Копіювати адресу е-пошти",
"Copy image": "Копіювати зображення",
"File": "Файл",
"Bring All to Front": "Винести все вперед",
"Zoom": "Масштаб",
"Stop Speaking": "Припинити говорити",
"Start Speaking": "Почати говорити",
"Speech": "Мовлення",
"Unhide": "Показати",
"Hide Others": "Сховати інші",
"Hide": "Сховати",
"Services": "Служби",
"About": "Про застосунок",
"Element Help": "Довідка Element",
"Help": "Довідка",
"Close": "Закрити",
"Minimize": "Згорнути",
"Window": "Вікно",
"Toggle Developer Tools": "Перемкнути інструменти розробника",
"Toggle Full Screen": "Перемкнути повноекранний режим",
"Preferences": "Параметри",
"Zoom Out": "Зменшити",
"Zoom In": "Збільшити",
"Actual Size": "Фактичний розмір",
"View": "Перегляд",
"Select All": "Вибрати все",
"Delete": "Видалити",
"Paste and Match Style": "Вставити з таким же стилем",
"Paste": "Вставити",
"Copy": "Копіювати",
"Cut": "Вирізати",
"Redo": "Повторити дію",
"Undo": "Скасувати дію",
"Edit": "Змінити",
"Quit": "Вийти",
"Show/Hide": "Показати/Сховати",
"Are you sure you want to quit?": "Ви впевнені, що хочете вийти?",
"Close %(brand)s": "Закрити %(brand)s",
"Cancel": "Скасувати"
}

21
src/i18n/strings/ur.json Normal file
View File

@@ -0,0 +1,21 @@
{
"Paste": "پیسٹ",
"Redo": "دوبارہ کریں",
"Preferences": "ترجیحات",
"Hide Others": "",
"Show/Hide": "دکھائیں/چھپائیں",
"Quit": "چھوڑو",
"Hide": "چھپائیں",
"Unhide": "دکھائیں",
"Zoom": "زوم",
"Close": "بند",
"Window": "کھڑکی",
"Cut": "کٹ",
"Delete": "مٹاؤ",
"File": "فائل",
"Help": "مدد",
"Copy": "کاپی",
"Add to dictionary": "لغت میں شامل کریں",
"Copy image": "تصویر کاپی کریں",
"Start Speaking": "بولنا شروع کریں"
}

View File

@@ -1,63 +1,47 @@
{
"action": {
"cancel": "Hủy bỏ",
"close": "Đóng",
"close_brand": "Đóng %(brand)s",
"copy": "Sao chép",
"cut": "Cắt",
"delete": "Xóa",
"edit": "Chỉnh sửa",
"minimise": "Thu nhỏ",
"paste": "Dán",
"paste_match_style": "Dán và khớp kiểu",
"quit": "Thoát",
"redo": "Làm lại",
"select_all": "Chọn tất cả",
"show_hide": "Hiện/Ẩn",
"undo": "Hoàn tác",
"zoom_in": "Phóng to",
"zoom_out": "Thu nhỏ"
},
"common": {
"about": "Giới thiệu",
"brand_help": "Hỗ trợ %(brand)s",
"help": "Hỗ trợ",
"preferences": "Tùy chọn"
},
"confirm_quit": "Bạn có chắc chắn muốn thoát?",
"edit_menu": {
"speech": "Đọc màn hình",
"speech_start_speaking": "Bắt đầu nói",
"speech_stop_speaking": "Dừng nói"
},
"file_menu": {
"label": "Tệp"
},
"menu": {
"hide": "Ẩn",
"hide_others": "Ẩn cái khác",
"services": "Dịch vụ",
"unhide": "Bỏ ẩn"
},
"right_click_menu": {
"add_to_dictionary": "Thêm vào từ điển",
"copy_email": "Sao chép địa chỉ email",
"copy_image": "Sao chép ảnh",
"copy_image_url": "Sao chép địa chỉ ảnh",
"copy_link_url": "Sao chép địa chỉ liên kết",
"save_image_as": "Lưu ảnh…",
"save_image_as_error_description": "Ảnh không lưu được",
"save_image_as_error_title": "Không lưu được ảnh"
},
"view_menu": {
"actual_size": "Kích thước thực",
"toggle_developer_tools": "Công cụ phát triển",
"toggle_full_screen": "Toàn màn hình",
"view": "Xem"
},
"window_menu": {
"bring_all_to_front": "Đưa tất cả lên trước",
"label": "Cửa sổ",
"zoom": "Thu phóng"
}
"Add to dictionary": "Thêm vào từ điển",
"The image failed to save": "Ảnh không lưu được",
"Failed to save image": "Không lưu được ảnh",
"Save image as...": "Lưu ảnh…",
"Copy link address": "Sao chép địa chỉ liên kết",
"Copy email address": "Sao chép địa chỉ email",
"Copy image": "Sao chép ảnh",
"File": "Tệp",
"Bring All to Front": "Đưa tất cả lên trước",
"Zoom": "Thu phóng",
"Stop Speaking": "Dừng nói",
"Start Speaking": "Bắt đầu nói",
"Speech": "Đọc màn hình",
"Unhide": "Bỏ ẩn",
"Hide Others": "Ẩn cái khác",
"Hide": "Ẩn",
"Services": "Dịch vụ",
"About": "Giới thiệu",
"Element Help": "Trợ giúp",
"Help": "Hỗ trợ",
"Close": "Đóng",
"Minimize": "Thu nhỏ",
"Window": "Cửa sổ",
"Toggle Developer Tools": "Công cụ phát triển",
"Toggle Full Screen": "Toàn màn hình",
"Preferences": "Tùy chọn",
"Zoom Out": "Thu nhỏ",
"Zoom In": "Phóng to",
"Actual Size": "Kích thước thực",
"View": "Xem",
"Select All": "Chọn tất cả",
"Delete": "Xóa",
"Paste and Match Style": "Dán và khớp kiểu",
"Paste": "Dán",
"Copy": "Sao chép",
"Cut": "Cắt",
"Redo": "Làm lại",
"Undo": "Hoàn tác",
"Edit": "Chỉnh sửa",
"Quit": "Thoát",
"Show/Hide": "Hiện/Ẩn",
"Are you sure you want to quit?": "Bạn có chắc chắn muốn thoát?",
"Cancel": "Hủy bỏ",
"Copy image address": "Sao chép địa chỉ ảnh",
"Close %(brand)s": "Đóng %(brand)s"
}

View File

@@ -1,63 +1,47 @@
{
"action": {
"cancel": "取消",
"close": "关闭",
"close_brand": "关闭 %(brand)s",
"copy": "复制",
"cut": "剪切",
"delete": "删除",
"edit": "编辑",
"minimise": "最小化",
"paste": "粘贴",
"paste_match_style": "粘贴并匹配样式",
"quit": "退出",
"redo": "重做",
"select_all": "选中全部",
"show_hide": "显示/隐藏",
"undo": "撤销",
"zoom_in": "放大",
"zoom_out": "缩小"
},
"common": {
"about": "关",
"brand_help": "%(brand)s帮助",
"help": "帮助",
"preferences": "偏好"
},
"confirm_quit": "你确定要退出吗?",
"edit_menu": {
"speech": "讲话",
"speech_start_speaking": "开始讲话",
"speech_stop_speaking": "停止讲话"
},
"file_menu": {
"label": "文件"
},
"menu": {
"hide": "隐藏",
"hide_others": "隐藏其他",
"services": "服务",
"unhide": "显示"
},
"right_click_menu": {
"add_to_dictionary": "添加到字典",
"copy_email": "复制邮箱地址",
"copy_image": "复制图片",
"copy_image_url": "复制图片地址",
"copy_link_url": "复制链接地址",
"save_image_as": "保存图片为……",
"save_image_as_error_description": "图片保存失败",
"save_image_as_error_title": "图片保存失败"
},
"view_menu": {
"actual_size": "实际大小",
"toggle_developer_tools": "切换开发者工具",
"toggle_full_screen": "切换全屏",
"view": "查看"
},
"window_menu": {
"bring_all_to_front": "全部置前",
"label": "窗口",
"zoom": "放大"
}
"Add to dictionary": "添加到字典",
"The image failed to save": "图片保存失败",
"Failed to save image": "图片保存失败",
"Save image as...": "保存图片为……",
"Copy link address": "复制链接地址",
"Copy email address": "复制邮箱地址",
"Copy image": "复制图片",
"File": "文件",
"Bring All to Front": "全部置前",
"Zoom": "放大",
"Stop Speaking": "停止讲话",
"Start Speaking": "开始讲话",
"Speech": "讲话",
"Unhide": "显示",
"Hide Others": "隐藏其他",
"Hide": "隐藏",
"Services": "服务",
"About": "关于",
"Element Help": "Element 帮助",
"Help": "帮助",
"Close": "关",
"Minimize": "最小化",
"Window": "窗口",
"Toggle Developer Tools": "切换开发者工具",
"Toggle Full Screen": "切换全屏",
"Preferences": "偏好",
"Zoom Out": "缩小",
"Zoom In": "放大",
"Actual Size": "实际大小",
"View": "查看",
"Select All": "选中全部",
"Delete": "删除",
"Paste and Match Style": "粘贴并匹配样式",
"Paste": "粘贴",
"Copy": "复制",
"Cut": "剪切",
"Redo": "重做",
"Undo": "撤销",
"Edit": "编辑",
"Quit": "退出",
"Show/Hide": "显示/隐藏",
"Are you sure you want to quit?": "你确定要退出吗?",
"Cancel": "取消",
"Copy image address": "复制图片地址",
"Close %(brand)s": "关闭 %(brand)s"
}

View File

@@ -1,63 +1,47 @@
{
"action": {
"cancel": "取消",
"close": "關閉",
"close_brand": "關閉 %(brand)s",
"copy": "複製",
"cut": "剪下",
"delete": "刪除",
"edit": "編輯",
"minimise": "最小化",
"paste": "貼上",
"paste_match_style": "貼上並保留格式",
"quit": "開",
"redo": "取消復原",
"select_all": "全選",
"show_hide": "顯示/隱藏",
"undo": "復原",
"zoom_in": "放大",
"zoom_out": "縮小"
},
"common": {
"about": "關",
"brand_help": "%(brand)s 說明",
"help": "說明",
"preferences": "偏好設定"
},
"confirm_quit": "您確定要離開嗎?",
"edit_menu": {
"speech": "語音",
"speech_start_speaking": "開始說話",
"speech_stop_speaking": "停止說話"
},
"file_menu": {
"label": "檔案"
},
"menu": {
"hide": "隱藏",
"hide_others": "隱藏其他",
"services": "服務",
"unhide": "取消隱藏"
},
"right_click_menu": {
"add_to_dictionary": "新增到字典",
"copy_email": "複製電子郵件地址",
"copy_image": "複製圖片",
"copy_image_url": "複製圖片地址",
"copy_link_url": "複製連結",
"save_image_as": "另存圖片為...",
"save_image_as_error_description": "儲存圖片失敗",
"save_image_as_error_title": "儲存圖片失敗"
},
"view_menu": {
"actual_size": "實際大小",
"toggle_developer_tools": "切換開發工具",
"toggle_full_screen": "切換全螢幕",
"view": "檢視"
},
"window_menu": {
"bring_all_to_front": "全部移至最前",
"label": "視窗",
"zoom": "縮放"
}
"Bring All to Front": "全部移至最前",
"Add to dictionary": "新增到字典",
"The image failed to save": "儲存圖片失敗",
"Failed to save image": "儲存圖片失敗",
"Save image as...": "另存圖片為...",
"Copy link address": "複製連結",
"Copy email address": "複製電子郵件地址",
"Copy image": "複製圖片",
"File": "檔案",
"Zoom": "縮放",
"Stop Speaking": "停止說話",
"Start Speaking": "開始說話",
"Speech": "語音",
"Unhide": "取消隱藏",
"Hide Others": "隱藏其他",
"Hide": "隱藏",
"Services": "服務",
"About": "關於",
"Element Help": "Element 說明",
"Help": "說明",
"Close": "關",
"Minimize": "最小化",
"Window": "視窗",
"Toggle Developer Tools": "切換開發工具",
"Toggle Full Screen": "切換全螢幕",
"Preferences": "偏好設定",
"Zoom Out": "縮小",
"Zoom In": "放大",
"Actual Size": "實際大小",
"View": "檢視",
"Select All": "全選",
"Delete": "刪除",
"Paste and Match Style": "貼上並保留格式",
"Paste": "貼上",
"Copy": "複製",
"Cut": "剪下",
"Redo": "取消復原",
"Undo": "復原",
"Edit": "編輯",
"Quit": "離開",
"Show/Hide": "顯示/隱藏",
"Are you sure you want to quit?": "您確定要離開嗎?",
"Cancel": "取消",
"Copy image address": "複製圖片地址",
"Close %(brand)s": "關閉 %(brand)s"
}

View File

@@ -22,7 +22,6 @@ import { recordSSOSession } from "./protocol";
import { randomArray } from "./utils";
import { Settings } from "./settings";
import { keytar } from "./keytar";
import { getDisplayMediaCallback, setDisplayMediaCallback } from "./displayMediaCallback";
ipcMain.on("setBadgeCount", function (_ev: IpcMainEvent, count: number): void {
if (process.platform !== "win32") {
@@ -187,11 +186,6 @@ ipcMain.on("ipcCall", async function (_ev: IpcMainEvent, payload) {
thumbnailURL: source.thumbnail.toDataURL(),
}));
break;
case "callDisplayMediaCallback":
await getDisplayMediaCallback()?.({ video: args[0] });
setDisplayMediaCallback(null);
ret = null;
break;
case "clearStorage":
global.store.clear();

View File

@@ -15,27 +15,23 @@ limitations under the License.
*/
import counterpart from "counterpart";
import { TranslationKey as TKey } from "matrix-web-i18n";
import type Store from "electron-store";
import type EN from "./i18n/strings/en_EN.json";
const FALLBACK_LOCALE = "en";
type TranslationKey = TKey<typeof EN>;
export function _td(text: TranslationKey): TranslationKey {
export function _td(text: string): string {
return text;
}
type SubstitutionValue = number | string;
interface Variables {
interface IVariables {
[key: string]: SubstitutionValue | undefined;
count?: number;
}
export function _t(text: TranslationKey, variables: Variables = {}): string {
export function _t(text: string, variables: IVariables = {}): string {
const { count } = variables;
// Horrible hack to avoid https://github.com/vector-im/element-web/issues/4191

View File

@@ -1,149 +0,0 @@
/*
Copyright 2023 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
import { BrowserWindow } from "electron";
export function setupMacosTitleBar(window: BrowserWindow): void {
if (process.platform !== "darwin") return;
let cssKey: string | undefined;
async function applyStyling(): Promise<void> {
cssKey = await window.webContents.insertCSS(`
/* Create margin of space for the traffic light buttons */
.mx_UserMenu {
/* We zero the margin and use padding as we want to use it as a drag handle */
margin-top: 0 !important;
margin-left: 0 !important;
padding-top: 32px !important;
padding-left: 20px !important;
-webkit-app-region: drag;
-webkit-user-select: none;
}
/* Exclude the button from being a drag handle and not working */
.mx_UserMenu > * {
-webkit-app-region: no-drag;
}
/* Maintain alignment of the toggle space panel button */
.mx_SpacePanel_toggleCollapse {
/* 19px original top value, 32px margin-top above, 12px original margin-top value */
top: calc(19px + 32px - 12px) !important;
}
/* Prevent the media lightbox sender info from clipping into the traffic light buttons */
.mx_ImageView_info_wrapper {
margin-top: 32px;
}
/* Mark the splash screen as a drag handle */
.mx_MatrixChat_splash {
-webkit-app-region: drag;
}
/* Exclude the splash buttons from being drag handles */
.mx_MatrixChat_splashButtons {
-webkit-app-region: no-drag;
}
/* Mark the background as a drag handle */
.mx_AuthPage {
-webkit-app-region: drag;
}
/* Exclude the main content elements from being drag handles */
.mx_AuthPage .mx_AuthPage_modalBlur,
.mx_AuthPage .mx_AuthFooter > * {
-webkit-app-region: no-drag;
}
/* Mark the header as a drag handle */
.mx_LeftPanel .mx_LeftPanel_filterContainer {
-webkit-app-region: drag;
}
/* Exclude header interactive elements from being drag handles */
.mx_LeftPanel .mx_LeftPanel_filterContainer .mx_AccessibleButton {
-webkit-app-region: no-drag;
}
/* Mark the home page background as a drag handle */
.mx_HomePage {
-webkit-app-region: drag;
}
/* Exclude interactive elements from being drag handles */
.mx_HomePage .mx_HomePage_body,
.mx_HomePage .mx_HomePage_default_wrapper > * {
-webkit-app-region: no-drag;
}
/* Mark the header as a drag handle */
.mx_LegacyRoomHeader,
.mx_RoomHeader {
-webkit-app-region: drag;
-webkit-user-select: none;
}
.mx_ImageView_panel {
-webkit-app-region: drag;
}
/* Exclude header interactive elements from being drag handles */
.mx_RoomHeader .mx_BaseAvatar,
.mx_RoomHeader_heading,
.mx_RoomHeader button,
.mx_RoomHeader .mx_FacePile,
.mx_LegacyRoomHeader .mx_LegacyRoomHeader_avatar,
.mx_LegacyRoomHeader .mx_E2EIcon,
.mx_LegacyRoomHeader .mx_RoomTopic,
.mx_LegacyRoomHeader .mx_AccessibleButton,
.mx_ImageView_panel > .mx_ImageView_info_wrapper,
.mx_ImageView_panel > .mx_ImageView_title,
.mx_ImageView_panel > .mx_ImageView_toolbar > * {
-webkit-app-region: no-drag;
}
/* Mark the background as a drag handle only if no modal is open */
.mx_MatrixChat_wrapper[aria-hidden="false"] .mx_RoomView_wrapper {
-webkit-app-region: drag;
}
/* Exclude content elements from being drag handles */
.mx_SpaceRoomView_landing > *,
.mx_RoomPreviewBar,
.mx_RoomView_body,
.mx_AutoHideScrollbar,
.mx_RightPanel_ResizeWrapper,
.mx_RoomPreviewCard {
-webkit-app-region: no-drag;
}
/* Exclude context menus and their backgrounds */
.mx_ContextualMenu, .mx_ContextualMenu_background {
-webkit-app-region: no-drag;
}
/* Exclude iframes, such as recaptcha */
iframe {
-webkit-app-region: no-drag;
}
`);
}
window.on("enter-full-screen", () => {
if (cssKey !== undefined) {
window.webContents.removeInsertedCSS(cssKey);
}
});
window.on("leave-full-screen", () => {
applyStyling();
});
window.webContents.on("did-finish-load", () => {
if (!window.isFullScreen()) {
applyStyling();
}
});
}

View File

@@ -34,7 +34,6 @@ const CHANNELS = [
"update-downloaded",
"userDownloadCompleted",
"userDownloadAction",
"openDesktopCapturerSourcePicker",
];
contextBridge.exposeInMainWorld("electron", {

View File

@@ -15,11 +15,10 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
import { app, Tray, Menu, nativeImage } from "electron";
import { app, Tray, Menu, nativeImage, NativeImage } from "electron";
import pngToIco from "png-to-ico";
import path from "path";
import fs from "fs";
import { v5 as uuidv5 } from "uuid";
import { _t } from "./language-helper";
@@ -51,10 +50,10 @@ interface IConfig {
brand: string;
}
function getUuid(): string {
// The uuid field is optional and only needed on unsigned Windows packages where the executable path changes
// The hardcoded uuid is an arbitrary v4 uuid generated on https://www.uuidgenerator.net/version4
return global.vectorConfig["uuid"] || "eba84003-e499-4563-8e9d-166e34b5cc25";
async function convertToIco(img: NativeImage): Promise<NativeImage> {
const icoPath = path.join(app.getPath("temp"), "win32_element_icon.ico");
fs.writeFileSync(icoPath, await pngToIco(img.toPNG()));
return nativeImage.createFromPath(icoPath);
}
export function create(config: IConfig): void {
@@ -62,24 +61,14 @@ export function create(config: IConfig): void {
if (process.platform === "darwin" || trayIcon) return;
const defaultIcon = nativeImage.createFromPath(config.icon_path);
let guid: string | undefined;
if (process.platform === "win32" && app.isPackaged) {
// Providing a GUID lets Windows be smarter about maintaining user's tray preferences
// https://github.com/electron/electron/pull/21891
// Ideally we would only specify it for signed packages but determining whether the app is signed sufficiently
// is non-trivial. So instead we have an escape hatch that unsigned packages can iterate the `uuid` in
// config.json to prevent Windows refusing GUID-reuse if their executable path changes.
guid = uuidv5(`${app.getName()}-${app.getPath("userData")}`, getUuid());
}
trayIcon = new Tray(defaultIcon, guid);
trayIcon = new Tray(defaultIcon);
trayIcon.setToolTip(config.brand);
initApplicationMenu();
trayIcon.on("click", toggleWin);
let lastFavicon: string | null = null;
global.mainWindow?.webContents.on("page-favicon-updated", async function (ev, favicons) {
if (!favicons || favicons.length <= 0 || !favicons[0].startsWith("data:")) {
if (!favicons?.[0]?.startsWith("data:")) {
if (lastFavicon !== null) {
global.mainWindow?.setIcon(defaultIcon);
trayIcon?.setImage(defaultIcon);
@@ -97,16 +86,18 @@ export function create(config: IConfig): void {
// Windows likes ico's too much.
if (process.platform === "win32") {
try {
const icoPath = path.join(app.getPath("temp"), "win32_element_icon.ico");
fs.writeFileSync(icoPath, await pngToIco(newFavicon.toPNG()));
newFavicon = nativeImage.createFromPath(icoPath);
newFavicon = await convertToIco(newFavicon);
} catch (e) {
console.error("Failed to make win32 ico", e);
}
}
trayIcon?.setImage(newFavicon);
global.mainWindow?.setIcon(newFavicon);
// Don't set the main window icon on Windows as we call Navigator::setAppBadge to do it for us
if (process.platform !== "win32") {
global.mainWindow?.setIcon(newFavicon);
}
});
global.mainWindow?.webContents.on("page-title-updated", function (ev, title) {
@@ -121,12 +112,12 @@ export function initApplicationMenu(): void {
const contextMenu = Menu.buildFromTemplate([
{
label: _t("action|show_hide"),
label: _t("Show/Hide"),
click: toggleWin,
},
{ type: "separator" },
{
label: _t("action|quit"),
label: _t("Quit"),
click: function (): void {
app.quit();
},

View File

@@ -24,46 +24,46 @@ export function buildMenuTemplate(): Menu {
// Menu template from http://electron.atom.io/docs/api/menu/, edited
const template: Array<MenuItemConstructorOptions | MenuItem> = [
{
label: _t("action|edit"),
label: _t("Edit"),
accelerator: "e",
submenu: [
{
role: "undo",
label: _t("action|undo"),
label: _t("Undo"),
},
{
role: "redo",
label: _t("action|redo"),
label: _t("Redo"),
},
{ type: "separator" },
{
role: "cut",
label: _t("action|cut"),
label: _t("Cut"),
},
{
role: "copy",
label: _t("action|copy"),
label: _t("Copy"),
},
{
role: "paste",
label: _t("action|paste"),
label: _t("Paste"),
},
{
role: "pasteAndMatchStyle",
label: _t("action|paste_match_style"),
label: _t("Paste and Match Style"),
},
{
role: "delete",
label: _t("action|delete"),
label: _t("Delete"),
},
{
role: "selectAll",
label: _t("action|select_all"),
label: _t("Select All"),
},
],
},
{
label: _t("view_menu|view"),
label: _t("View"),
accelerator: "V",
submenu: [
{ type: "separator" },
@@ -84,22 +84,22 @@ export function buildMenuTemplate(): Menu {
},
{
role: "resetZoom",
label: _t("view_menu|actual_size"),
label: _t("Actual Size"),
},
{
role: "zoomIn",
label: _t("action|zoom_in"),
label: _t("Zoom In"),
},
{
role: "zoomOut",
label: _t("action|zoom_out"),
label: _t("Zoom Out"),
},
{ type: "separator" },
// in macOS the Preferences menu item goes in the first menu
...(!isMac
? [
{
label: _t("common|preferences"),
label: _t("Preferences"),
click(): void {
global.mainWindow?.webContents.send("preferences");
},
@@ -108,39 +108,38 @@ export function buildMenuTemplate(): Menu {
: []),
{
role: "togglefullscreen",
label: _t("view_menu|toggle_full_screen"),
label: _t("Toggle Full Screen"),
},
{
role: "toggleDevTools",
label: _t("view_menu|toggle_developer_tools"),
label: _t("Toggle Developer Tools"),
},
],
},
{
label: _t("window_menu|label"),
label: _t("Window"),
accelerator: "w",
role: "window",
submenu: [
{
role: "minimize",
label: _t("action|minimise"),
label: _t("Minimize"),
},
{
role: "close",
label: _t("action|close"),
label: _t("Close"),
},
],
},
{
label: _t("common|help"),
label: _t("Help"),
accelerator: "h",
role: "help",
submenu: [
{
// XXX: vectorConfig won't have defaults applied to it so we need to duplicate them here
label: _t("common|brand_help", { brand: global.vectorConfig?.brand || "Element" }),
label: _t("Element Help"),
click(): void {
shell.openExternal(global.vectorConfig?.help_url || "https://element.io/help");
shell.openExternal("https://element.io/help");
},
},
],
@@ -156,11 +155,11 @@ export function buildMenuTemplate(): Menu {
submenu: [
{
role: "about",
label: _t("common|about") + " " + app.name,
label: _t("About") + " " + app.name,
},
{ type: "separator" },
{
label: _t("common|preferences") + "…",
label: _t("Preferences") + "…",
accelerator: "Command+,", // Mac-only accelerator
click(): void {
global.mainWindow?.webContents.send("preferences");
@@ -169,26 +168,26 @@ export function buildMenuTemplate(): Menu {
{ type: "separator" },
{
role: "services",
label: _t("menu|services"),
label: _t("Services"),
submenu: [],
},
{ type: "separator" },
{
role: "hide",
label: _t("menu|hide"),
label: _t("Hide"),
},
{
role: "hideOthers",
label: _t("menu|hide_others"),
label: _t("Hide Others"),
},
{
role: "unhide",
label: _t("menu|unhide"),
label: _t("Unhide"),
},
{ type: "separator" },
{
role: "quit",
label: _t("action|quit"),
label: _t("Quit"),
},
],
});
@@ -197,15 +196,15 @@ export function buildMenuTemplate(): Menu {
(template[1].submenu as MenuItemConstructorOptions[]).push(
{ type: "separator" },
{
label: _t("edit_menu|speech"),
label: _t("Speech"),
submenu: [
{
role: "startSpeaking",
label: _t("edit_menu|speech_start_speaking"),
label: _t("Start Speaking"),
},
{
role: "stopSpeaking",
label: _t("edit_menu|speech_stop_speaking"),
label: _t("Stop Speaking"),
},
],
},
@@ -215,30 +214,30 @@ export function buildMenuTemplate(): Menu {
// This also has specific functionality on macOS
template[3].submenu = [
{
label: _t("action|close"),
label: _t("Close"),
accelerator: "CmdOrCtrl+W",
role: "close",
},
{
label: _t("action|minimise"),
label: _t("Minimize"),
accelerator: "CmdOrCtrl+M",
role: "minimize",
},
{
label: _t("window_menu|zoom"),
label: _t("Zoom"),
role: "zoom",
},
{
type: "separator",
},
{
label: _t("window_menu|bring_all_to_front"),
label: _t("Bring All to Front"),
role: "front",
},
];
} else {
template.unshift({
label: _t("file_menu|label"),
label: _t("File"),
accelerator: "f",
submenu: [
// For some reason, 'about' does not seem to work on windows.
@@ -248,7 +247,7 @@ export function buildMenuTemplate(): Menu {
},*/
{
role: "quit",
label: _t("action|quit"),
label: _t("Quit"),
},
],
});

View File

@@ -28,7 +28,6 @@ import {
DownloadItem,
MenuItemConstructorOptions,
IpcMainEvent,
Event,
} from "electron";
import url from "url";
import fs from "fs";
@@ -105,7 +104,7 @@ function onLinkContextMenu(ev: Event, params: ContextMenuParams, webContents: We
if (params.hasImageContents) {
popupMenu.append(
new MenuItem({
label: _t("right_click_menu|copy_image"),
label: _t("Copy image"),
accelerator: "c",
click(): void {
webContents.copyImageAt(params.x, params.y);
@@ -120,7 +119,7 @@ function onLinkContextMenu(ev: Event, params: ContextMenuParams, webContents: We
if (url.startsWith(MAILTO_PREFIX)) {
popupMenu.append(
new MenuItem({
label: _t("right_click_menu|copy_email"),
label: _t("Copy email address"),
accelerator: "a",
click(): void {
clipboard.writeText(url.substr(MAILTO_PREFIX.length));
@@ -130,9 +129,7 @@ function onLinkContextMenu(ev: Event, params: ContextMenuParams, webContents: We
} else {
popupMenu.append(
new MenuItem({
label: params.hasImageContents
? _t("right_click_menu|copy_image_url")
: _t("right_click_menu|copy_link_url"),
label: params.hasImageContents ? _t("Copy image address") : _t("Copy link address"),
accelerator: "a",
click(): void {
clipboard.writeText(url);
@@ -147,7 +144,7 @@ function onLinkContextMenu(ev: Event, params: ContextMenuParams, webContents: We
if (params.hasImageContents && !url.startsWith("blob:")) {
popupMenu.append(
new MenuItem({
label: _t("right_click_menu|save_image_as"),
label: _t("Save image as..."),
accelerator: "s",
async click(): Promise<void> {
const targetFileName = params.suggestedFilename || params.altText || "image.png";
@@ -170,8 +167,8 @@ function onLinkContextMenu(ev: Event, params: ContextMenuParams, webContents: We
console.error(err);
dialog.showMessageBox({
type: "error",
title: _t("right_click_menu|save_image_as_error_title"),
message: _t("right_click_menu|save_image_as_error_description"),
title: _t("Failed to save image"),
message: _t("The image failed to save"),
});
}
},
@@ -201,7 +198,7 @@ function cutCopyPasteSelectContextMenus(params: ContextMenuParams): MenuItemCons
type: "separator",
},
{
label: _t("right_click_menu|add_to_dictionary"),
label: _t("Add to dictionary"),
click: (menuItem, browserWindow) => {
browserWindow?.webContents.session.addWordToSpellCheckerDictionary(params.misspelledWord);
},
@@ -215,19 +212,19 @@ function cutCopyPasteSelectContextMenus(params: ContextMenuParams): MenuItemCons
options.push(
{
role: "cut",
label: _t("action|cut"),
label: _t("Cut"),
accelerator: "t",
enabled: params.editFlags.canCut,
},
{
role: "copy",
label: _t("action|copy"),
label: _t("Copy"),
accelerator: "c",
enabled: params.editFlags.canCopy,
},
{
role: "paste",
label: _t("action|paste"),
label: _t("Paste"),
accelerator: "p",
enabled: params.editFlags.canPaste,
},
@@ -237,7 +234,7 @@ function cutCopyPasteSelectContextMenus(params: ContextMenuParams): MenuItemCons
},
{
role: "selectAll",
label: _t("action|select_all"),
label: _t("Select All"),
accelerator: "a",
enabled: params.editFlags.canSelectAll,
},

4065
yarn.lock
View File

File diff suppressed because it is too large Load Diff