mirror of
https://gitcode.com/GitHub_Trending/ji/jitsi-meet.git
synced 2026-01-05 14:22:28 +00:00
Compare commits
151 Commits
android-sd
...
8014
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d5dd5e4560 | ||
|
|
46ea1f577c | ||
|
|
be06547cc4 | ||
|
|
bd631f5968 | ||
|
|
bc69a35cd6 | ||
|
|
75e7f64311 | ||
|
|
cdcb4cdbfb | ||
|
|
c31ef2ebc7 | ||
|
|
d49a419284 | ||
|
|
0913554af9 | ||
|
|
9af0003c63 | ||
|
|
3ecc16dc87 | ||
|
|
ef387c939a | ||
|
|
76e3608baf | ||
|
|
68384121cd | ||
|
|
2ed0418bd9 | ||
|
|
5eb4064390 | ||
|
|
3f943feb4a | ||
|
|
861b32367e | ||
|
|
cfca0aea4a | ||
|
|
43ae5915a6 | ||
|
|
7c22bcf827 | ||
|
|
1bb9b261dc | ||
|
|
a95adcdf41 | ||
|
|
6758d13335 | ||
|
|
10ab4df287 | ||
|
|
f3e4a7a9c8 | ||
|
|
854503aec2 | ||
|
|
353c3cdd34 | ||
|
|
8f7ab33508 | ||
|
|
383b534753 | ||
|
|
6691f56d0e | ||
|
|
50d4b6250c | ||
|
|
daa840564c | ||
|
|
2cdf77272c | ||
|
|
53299a19c2 | ||
|
|
e90b270b32 | ||
|
|
24ce8c5831 | ||
|
|
57bd074d00 | ||
|
|
843cdf05f5 | ||
|
|
ede8f7ece9 | ||
|
|
e5b736243d | ||
|
|
1d8a9c11c8 | ||
|
|
72d05bb969 | ||
|
|
2a5fc8cc4a | ||
|
|
aa9bd8c814 | ||
|
|
f279e634e4 | ||
|
|
3f7c8c204b | ||
|
|
375314cbbd | ||
|
|
62d0d25395 | ||
|
|
3047af4df6 | ||
|
|
6682b52a19 | ||
|
|
fee4151f83 | ||
|
|
25f2eb012e | ||
|
|
6976b45789 | ||
|
|
c69962675b | ||
|
|
2bb1d6dee3 | ||
|
|
43c1032b46 | ||
|
|
980153e299 | ||
|
|
d2b4043c7f | ||
|
|
ce727d87a8 | ||
|
|
b540452583 | ||
|
|
f995eb2698 | ||
|
|
393c78aad3 | ||
|
|
6452c998a2 | ||
|
|
038292305e | ||
|
|
aa04692e9b | ||
|
|
219e6ce1ca | ||
|
|
6b2d586aee | ||
|
|
28a9850111 | ||
|
|
d9ef9dc6a0 | ||
|
|
88b6cdf39b | ||
|
|
e3ab6c9f33 | ||
|
|
9bb27b83d9 | ||
|
|
d8b0710a19 | ||
|
|
b02b7ac769 | ||
|
|
b90e187a73 | ||
|
|
582bbf890b | ||
|
|
ce840cc7b6 | ||
|
|
cc03949b90 | ||
|
|
158e1a56e5 | ||
|
|
16597a2535 | ||
|
|
2f3cf9f530 | ||
|
|
347cc32ecc | ||
|
|
c0602abbca | ||
|
|
55e9136b91 | ||
|
|
da01ca23db | ||
|
|
b470c201b2 | ||
|
|
e3ee99754c | ||
|
|
b3e1865fd8 | ||
|
|
a4e3716632 | ||
|
|
5ed4b470e7 | ||
|
|
68f030bb7f | ||
|
|
1c25a370be | ||
|
|
36671d7c4f | ||
|
|
b54cec8d77 | ||
|
|
097d51ce10 | ||
|
|
9b16296581 | ||
|
|
a76f9d548b | ||
|
|
9fc89ba04e | ||
|
|
37024b4f1f | ||
|
|
b3312b5650 | ||
|
|
721bb4e4ba | ||
|
|
263bb7bcd0 | ||
|
|
03b3cd4778 | ||
|
|
7a1ad18bc5 | ||
|
|
38be09fc54 | ||
|
|
4e50546773 | ||
|
|
79891419af | ||
|
|
5282274856 | ||
|
|
11c445f993 | ||
|
|
3b546ea387 | ||
|
|
82fa1eb870 | ||
|
|
d1590db82b | ||
|
|
5247fbdc0f | ||
|
|
47598222ce | ||
|
|
79d216d91a | ||
|
|
ec423012b9 | ||
|
|
ffa704e7df | ||
|
|
2c6f4e27fc | ||
|
|
56eecaba2a | ||
|
|
bb49c92cc4 | ||
|
|
9b798b4514 | ||
|
|
9727951a77 | ||
|
|
643fc7e2a2 | ||
|
|
33db2bed34 | ||
|
|
fad58ae362 | ||
|
|
2f6d9d4b52 | ||
|
|
c7d5de2c77 | ||
|
|
f525fb1999 | ||
|
|
ffbaee065d | ||
|
|
c0f9024874 | ||
|
|
f5ab10cfba | ||
|
|
6db0f89707 | ||
|
|
6649c15232 | ||
|
|
5d84a4cc90 | ||
|
|
b79907f7a5 | ||
|
|
ffc6ae333f | ||
|
|
371b9a3e95 | ||
|
|
7fb66c906a | ||
|
|
b43379a0bc | ||
|
|
07a15f0121 | ||
|
|
c7e80b6780 | ||
|
|
ec5f2ca1c1 | ||
|
|
fdba9969b4 | ||
|
|
2734da0c66 | ||
|
|
cff14048cd | ||
|
|
a775dd178a | ||
|
|
d0f3104ed8 | ||
|
|
bb17337440 | ||
|
|
26e09acb8a |
@@ -1,6 +0,0 @@
|
||||
|
||||
[android]
|
||||
target = Google Inc.:Google APIs:23
|
||||
|
||||
[maven_repositories]
|
||||
central = https://repo1.maven.org/maven2
|
||||
@@ -3,7 +3,7 @@
|
||||
"image": "mcr.microsoft.com/devcontainers/universal:2",
|
||||
"features": {
|
||||
"ghcr.io/devcontainers/features/node:1": {
|
||||
"version": "16"
|
||||
"version": "20"
|
||||
}
|
||||
},
|
||||
"hostRequirements": {
|
||||
|
||||
@@ -6,7 +6,7 @@ charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_size = 4
|
||||
indent_style = space
|
||||
max_line_length = 80
|
||||
max_line_length = 120
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.md]
|
||||
|
||||
48
.github/ISSUE_TEMPLATE/1-bug-report.md
vendored
48
.github/ISSUE_TEMPLATE/1-bug-report.md
vendored
@@ -1,48 +0,0 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
|
||||
---
|
||||
|
||||
<!--
|
||||
|
||||
This issue tracker is only for reporting bugs and tracking issues related to the source code.
|
||||
|
||||
Before posting, please make sure to check if the same or similar bugs have already been discussed: https://github.com/jitsi/jitsi-meet/issues
|
||||
|
||||
General questions regarding usage, installation, etc. should be posted at https://community.jitsi.org. They will be closed if posted here.
|
||||
|
||||
-->
|
||||
|
||||
### Description:
|
||||
|
||||
<!-- Please describe the bug clearly and concisely. -->
|
||||
|
||||
### Steps to reproduce:
|
||||
|
||||
1. <!-- Open '...' -->
|
||||
2. <!-- Click on '...' -->
|
||||
3. <!-- and so on... -->
|
||||
|
||||
### Expected behavior:
|
||||
|
||||
<!-- Please describe what should happen. -->
|
||||
|
||||
### Actual behavior:
|
||||
|
||||
<!-- Please describe what actually happens. -->
|
||||
<!-- Please attach screenshot if possible. -->
|
||||
|
||||
### Server information:
|
||||
|
||||
- Jitsi Meet version:
|
||||
- Operating System:
|
||||
|
||||
### Client information:
|
||||
|
||||
- Browser / app version:
|
||||
- Operating System:
|
||||
|
||||
### Additional information:
|
||||
|
||||
<!-- Please provide additional information about the bug, if any. -->
|
||||
55
.github/ISSUE_TEMPLATE/1-bug.yml
vendored
Normal file
55
.github/ISSUE_TEMPLATE/1-bug.yml
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
name: Bug report
|
||||
description: File a bug report and help us improve
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
This issue tracker is only for reporting bugs and tracking issues related to the source code.
|
||||
|
||||
**Before posting, please make sure to check if the same or similar bugs have already been reported.**
|
||||
|
||||
⚠️ General questions regarding usage, installation, etc. should be posted in our [community forum](https://community.jitsi.org).
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: What happened?
|
||||
description: Please describe the problem. Be as detailed as possible.
|
||||
validations:
|
||||
required: true
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Platform
|
||||
description: On what platforms can you reproduce the problem?
|
||||
options:
|
||||
- label: Chrome (or Chromium based)
|
||||
- label: Firefox
|
||||
- label: Safari
|
||||
- label: Other desktop browser
|
||||
- label: Android browser
|
||||
- label: iOS browser
|
||||
- label: Electron app
|
||||
- label: Android mobile app
|
||||
- label: iOS mobile app
|
||||
- label: Custom app using a mobile SDK
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
attributes:
|
||||
label: Browser / app / sdk version
|
||||
description: Please provice the version of the browser / app / sdk where the problem manifests.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Relevant log output
|
||||
description: Please copy and paste any relevant log output. The browser console JS logs (if applicable) is a good start. This will be automatically formatted into code, so no need for backticks.
|
||||
render: shell
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Reproducibility
|
||||
description: Does the problem reproduce on meet.jit.si using Chrome, Firefox or the official mobile apps?
|
||||
options:
|
||||
- label: The problem is reproducible on meet.jit.si
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: More details?
|
||||
description: Please provide more details in case they apply (such as the Jitsi Meet version you are running, if you are hosting your own server).
|
||||
25
.github/ISSUE_TEMPLATE/2-feature-request.md
vendored
25
.github/ISSUE_TEMPLATE/2-feature-request.md
vendored
@@ -1,25 +0,0 @@
|
||||
---
|
||||
name: "Feature request"
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: 'feature-request'
|
||||
assignees: ''
|
||||
---
|
||||
|
||||
<!--
|
||||
Thank you for suggesting an idea to make Jitsi Meet better.
|
||||
|
||||
Please fill in as much of the template below as you're able.
|
||||
|
||||
Note that the ultimate decision for implementing features lies on the Jitsi team, not all feature requests shall be accepted.
|
||||
-->
|
||||
|
||||
**Is your feature request related to a problem you are facing?**
|
||||
Please describe the problem you are trying to solve.
|
||||
|
||||
**Describe the solution you'd like**
|
||||
Please describe the desired behavior.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
Please describe alternative solutions or features you have considered.
|
||||
|
||||
22
.github/ISSUE_TEMPLATE/2-feature.yml
vendored
Normal file
22
.github/ISSUE_TEMPLATE/2-feature.yml
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
name: Feature request
|
||||
description: Suggest an idea for Jitsi Meet
|
||||
labels: ["feature-request"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thank you for suggesting an idea to make Jitsi Meet better.
|
||||
|
||||
**Note**: the ultimate decision for implementing features lies on the Jitsi team, not all feature requests shall be accepted.
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: What problem are you trying to solve?
|
||||
description: Tell us what problem your feature request would solve.
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: What solution would you like to see?
|
||||
description: Please describe the desired behavior or feature.
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Is there an alternative?
|
||||
description: Please describe alternative solutions or features you have considered.
|
||||
4
.github/ISSUE_TEMPLATE/config.yml
vendored
4
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -1,5 +1,5 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Need help with Jitsi Meet?
|
||||
- name: Need help with your Jitsi Meet installation?
|
||||
url: https://community.jitsi.org
|
||||
about: Please ask it in our community.
|
||||
about: Please ask it in our community forum.
|
||||
|
||||
2
.github/workflows/ci-lua.yml
vendored
2
.github/workflows/ci-lua.yml
vendored
@@ -7,7 +7,7 @@ jobs:
|
||||
name: Luacheck
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install luarocks
|
||||
run: sudo apt-get --install-recommends -y install luarocks
|
||||
|
||||
68
.github/workflows/ci.yml
vendored
68
.github/workflows/ci.yml
vendored
@@ -7,11 +7,15 @@ jobs:
|
||||
name: Lint
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 16
|
||||
node-version-file: '.nvmrc'
|
||||
cache: 'npm'
|
||||
- name: Check Node / npm versions
|
||||
run: |
|
||||
node -v
|
||||
npm -v
|
||||
- name: Get changed files
|
||||
id: changed-files
|
||||
uses: tj-actions/changed-files@v41
|
||||
@@ -34,21 +38,25 @@ jobs:
|
||||
name: Build Frontend (Linux)
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 16
|
||||
node-version-file: '.nvmrc'
|
||||
cache: 'npm'
|
||||
- name: Check Node / npm versions
|
||||
run: |
|
||||
node -v
|
||||
npm -v
|
||||
- run: npm install
|
||||
- run: make
|
||||
macos-ci:
|
||||
name: Build Frontend (macOS)
|
||||
runs-on: macOS-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 16
|
||||
node-version: 20
|
||||
cache: 'npm'
|
||||
- run: npm install
|
||||
- run: make
|
||||
@@ -56,23 +64,41 @@ jobs:
|
||||
name: Build mobile bundle (Android)
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 16
|
||||
node-version-file: '.nvmrc'
|
||||
cache: 'npm'
|
||||
- name: Check Node / npm versions
|
||||
run: |
|
||||
node -v
|
||||
npm -v
|
||||
- run: npm install
|
||||
- run: npx react-native bundle --entry-file react/index.native.js --platform android --bundle-output /tmp/android.bundle --reset-cache
|
||||
ios-build:
|
||||
name: Build mobile bundle (iOS)
|
||||
runs-on: macOS-latest
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [macos-13, macos-14]
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 16
|
||||
node-version-file: '.nvmrc'
|
||||
cache: 'npm'
|
||||
- name: Check Node / npm versions
|
||||
run: |
|
||||
node -v
|
||||
npm -v
|
||||
- run: npm install
|
||||
- name: setup Xcode
|
||||
run: |
|
||||
uname -a
|
||||
xcode-select -p
|
||||
sudo xcode-select -s /Applications/Xcode_15.2.app/Contents/Developer
|
||||
xcodebuild -version
|
||||
- name: setup-cocoapods
|
||||
uses: maxim-lobanov/setup-cocoapods@v1
|
||||
with:
|
||||
@@ -89,11 +115,15 @@ jobs:
|
||||
name: Test Debian packages build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 16
|
||||
node-version-file: '.nvmrc'
|
||||
cache: 'npm'
|
||||
- name: Check Node / npm versions
|
||||
run: |
|
||||
node -v
|
||||
npm -v
|
||||
- run: npm install
|
||||
- run: make
|
||||
- run: sudo apt-get install -y debhelper
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
osx_image: xcode11.1
|
||||
language: objective-c
|
||||
script:
|
||||
- "./ios/travis-ci/build-ipa.sh"
|
||||
after_script:
|
||||
- sleep 10
|
||||
1
Makefile
1
Makefile
@@ -48,7 +48,6 @@ deploy-appbundle:
|
||||
$(BUILD_DIR)/external_api.min.js.map \
|
||||
$(BUILD_DIR)/alwaysontop.min.js \
|
||||
$(BUILD_DIR)/alwaysontop.min.js.map \
|
||||
$(OUTPUT_DIR)/analytics-ga.js \
|
||||
$(BUILD_DIR)/analytics-ga.min.js \
|
||||
$(BUILD_DIR)/analytics-ga.min.js.map \
|
||||
$(BUILD_DIR)/face-landmarks-worker.min.js \
|
||||
|
||||
163
analytics-ga.js
163
analytics-ga.js
@@ -1,163 +0,0 @@
|
||||
/* global ga */
|
||||
|
||||
(function(ctx) {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
function Analytics(options) {
|
||||
/* eslint-disable */
|
||||
|
||||
if (!options.googleAnalyticsTrackingId) {
|
||||
console.log(
|
||||
'Failed to initialize Google Analytics handler, no tracking ID');
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Google Analytics
|
||||
* TODO: Keep this local, there's no need to add it to window.
|
||||
*/
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
||||
ga('create', options.googleAnalyticsTrackingId, 'auto');
|
||||
ga('send', 'pageview');
|
||||
|
||||
/* eslint-enable */
|
||||
}
|
||||
|
||||
/**
|
||||
* Extracts the integer to use for a Google Analytics event's value field
|
||||
* from a lib-jitsi-meet analytics event.
|
||||
* @param {Object} event - The lib-jitsi-meet analytics event.
|
||||
* @returns {Object} - The integer to use for the 'value' of a Google
|
||||
* Analytics event.
|
||||
* @private
|
||||
*/
|
||||
Analytics.prototype._extractAction = function(event) {
|
||||
// Page events have a single 'name' field.
|
||||
if (event.type === 'page') {
|
||||
return event.name;
|
||||
}
|
||||
|
||||
// All other events have action, actionSubject, and source fields. All
|
||||
// three fields are required, and the often jitsi-meet and
|
||||
// lib-jitsi-meet use the same value when separate values are not
|
||||
// necessary (i.e. event.action == event.actionSubject).
|
||||
// Here we concatenate these three fields, but avoid adding the same
|
||||
// value twice, because it would only make the GA event's action harder
|
||||
// to read.
|
||||
let action = event.action;
|
||||
|
||||
if (event.actionSubject && event.actionSubject !== event.action) {
|
||||
// Intentionally use string concatenation as analytics needs to
|
||||
// work on IE but this file does not go through babel. For some
|
||||
// reason disabling this globally for the file does not have an
|
||||
// effect.
|
||||
// eslint-disable-next-line prefer-template
|
||||
action = event.actionSubject + '.' + action;
|
||||
}
|
||||
if (event.source && event.source !== event.action
|
||||
&& event.source !== event.action) {
|
||||
// eslint-disable-next-line prefer-template
|
||||
action = event.source + '.' + action;
|
||||
}
|
||||
|
||||
return action;
|
||||
};
|
||||
|
||||
/**
|
||||
* Extracts the integer to use for a Google Analytics event's value field
|
||||
* from a lib-jitsi-meet analytics event.
|
||||
* @param {Object} event - The lib-jitsi-meet analytics event.
|
||||
* @returns {Object} - The integer to use for the 'value' of a Google
|
||||
* Analytics event, or NaN if the lib-jitsi-meet event doesn't contain a
|
||||
* suitable value.
|
||||
* @private
|
||||
*/
|
||||
Analytics.prototype._extractValue = function(event) {
|
||||
let value = event && event.attributes && event.attributes.value;
|
||||
|
||||
// Try to extract an integer from the "value" attribute.
|
||||
value = Math.round(parseFloat(value));
|
||||
|
||||
return value;
|
||||
};
|
||||
|
||||
/**
|
||||
* Extracts the string to use for a Google Analytics event's label field
|
||||
* from a lib-jitsi-meet analytics event.
|
||||
* @param {Object} event - The lib-jitsi-meet analytics event.
|
||||
* @returns {string} - The string to use for the 'label' of a Google
|
||||
* Analytics event.
|
||||
* @private
|
||||
*/
|
||||
Analytics.prototype._extractLabel = function(event) {
|
||||
let label = '';
|
||||
|
||||
// The label field is limited to 500B. We will concatenate all
|
||||
// attributes of the event, except the user agent because it may be
|
||||
// lengthy and is probably included from elsewhere.
|
||||
for (const property in event.attributes) {
|
||||
if (property !== 'permanent_user_agent'
|
||||
&& property !== 'permanent_callstats_name'
|
||||
&& event.attributes.hasOwnProperty(property)) {
|
||||
// eslint-disable-next-line prefer-template
|
||||
label += property + '=' + event.attributes[property] + '&';
|
||||
}
|
||||
}
|
||||
|
||||
if (label.length > 0) {
|
||||
label = label.slice(0, -1);
|
||||
}
|
||||
|
||||
return label;
|
||||
};
|
||||
|
||||
/**
|
||||
* This is the entry point of the API. The function sends an event to
|
||||
* google analytics. The format of the event is described in
|
||||
* AnalyticsAdapter in lib-jitsi-meet.
|
||||
* @param {Object} event - the event in the format specified by
|
||||
* lib-jitsi-meet.
|
||||
*/
|
||||
Analytics.prototype.sendEvent = function(event) {
|
||||
if (!event || !ga) {
|
||||
return;
|
||||
}
|
||||
|
||||
const ignoredEvents
|
||||
= [ 'e2e_rtt', 'rtp.stats', 'rtt.by.region', 'available.device',
|
||||
'stream.switch.delay', 'ice.state.changed', 'ice.duration' ];
|
||||
|
||||
// Temporary removing some of the events that are too noisy.
|
||||
if (ignoredEvents.indexOf(event.action) !== -1) {
|
||||
return;
|
||||
}
|
||||
|
||||
const gaEvent = {
|
||||
'eventCategory': 'jitsi-meet',
|
||||
'eventAction': this._extractAction(event),
|
||||
'eventLabel': this._extractLabel(event)
|
||||
};
|
||||
const value = this._extractValue(event);
|
||||
|
||||
if (!isNaN(value)) {
|
||||
gaEvent.eventValue = value;
|
||||
}
|
||||
|
||||
ga('send', 'event', gaEvent);
|
||||
};
|
||||
|
||||
if (typeof ctx.JitsiMeetJS === 'undefined') {
|
||||
ctx.JitsiMeetJS = {};
|
||||
}
|
||||
if (typeof ctx.JitsiMeetJS.app === 'undefined') {
|
||||
ctx.JitsiMeetJS.app = {};
|
||||
}
|
||||
if (typeof ctx.JitsiMeetJS.app.analyticsHandlers === 'undefined') {
|
||||
ctx.JitsiMeetJS.app.analyticsHandlers = [];
|
||||
}
|
||||
ctx.JitsiMeetJS.app.analyticsHandlers.push(Analytics);
|
||||
})(window);
|
||||
/* eslint-enable prefer-template */
|
||||
@@ -35,7 +35,6 @@ import org.jitsi.meet.sdk.JitsiMeetActivity;
|
||||
import org.jitsi.meet.sdk.JitsiMeetConferenceOptions;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
@@ -227,7 +226,7 @@ public class MainActivity extends JitsiMeetActivity {
|
||||
private @Nullable URL buildURL(String urlStr) {
|
||||
try {
|
||||
return new URL(urlStr);
|
||||
} catch (MalformedURLException e) {
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,10 @@
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" />
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION" />
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||
|
||||
<uses-feature
|
||||
android:glEsVersion="0x00020000"
|
||||
@@ -48,7 +51,7 @@
|
||||
|
||||
<service
|
||||
android:name="org.jitsi.meet.sdk.JitsiMeetOngoingConferenceService"
|
||||
android:foregroundServiceType="mediaPlayback" />
|
||||
android:foregroundServiceType="mediaPlayback|microphone" />
|
||||
|
||||
<provider
|
||||
android:name="com.reactnativecommunity.webview.RNCWebViewFileProvider"
|
||||
|
||||
@@ -89,7 +89,9 @@ public class BroadcastEvent {
|
||||
CHAT_MESSAGE_RECEIVED("org.jitsi.meet.CHAT_MESSAGE_RECEIVED"),
|
||||
CHAT_TOGGLED("org.jitsi.meet.CHAT_TOGGLED"),
|
||||
VIDEO_MUTED_CHANGED("org.jitsi.meet.VIDEO_MUTED_CHANGED"),
|
||||
READY_TO_CLOSE("org.jitsi.meet.READY_TO_CLOSE");
|
||||
READY_TO_CLOSE("org.jitsi.meet.READY_TO_CLOSE"),
|
||||
TRANSCRIPTION_CHUNK_RECEIVED("org.jitsi.meet.TRANSCRIPTION_CHUNK_RECEIVED"),
|
||||
CUSTOM_OVERFLOW_MENU_BUTTON_PRESSED("org.jitsi.meet.CUSTOM_OVERFLOW_MENU_BUTTON_PRESSED");
|
||||
|
||||
private static final String CONFERENCE_BLURRED_NAME = "CONFERENCE_BLURRED";
|
||||
private static final String CONFERENCE_FOCUSED_NAME = "CONFERENCE_FOCUSED";
|
||||
@@ -106,6 +108,8 @@ public class BroadcastEvent {
|
||||
private static final String CHAT_TOGGLED_NAME = "CHAT_TOGGLED";
|
||||
private static final String VIDEO_MUTED_CHANGED_NAME = "VIDEO_MUTED_CHANGED";
|
||||
private static final String READY_TO_CLOSE_NAME = "READY_TO_CLOSE";
|
||||
private static final String TRANSCRIPTION_CHUNK_RECEIVED_NAME = "TRANSCRIPTION_CHUNK_RECEIVED";
|
||||
private static final String CUSTOM_OVERFLOW_MENU_BUTTON_PRESSED_NAME = "CUSTOM_OVERFLOW_MENU_BUTTON_PRESSED";
|
||||
|
||||
private final String action;
|
||||
|
||||
@@ -158,6 +162,10 @@ public class BroadcastEvent {
|
||||
return VIDEO_MUTED_CHANGED;
|
||||
case READY_TO_CLOSE_NAME:
|
||||
return READY_TO_CLOSE;
|
||||
case TRANSCRIPTION_CHUNK_RECEIVED_NAME:
|
||||
return TRANSCRIPTION_CHUNK_RECEIVED;
|
||||
case CUSTOM_OVERFLOW_MENU_BUTTON_PRESSED_NAME:
|
||||
return CUSTOM_OVERFLOW_MENU_BUTTON_PRESSED;
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
@@ -255,6 +255,14 @@ public class JitsiMeetActivity extends AppCompatActivity
|
||||
finish();
|
||||
}
|
||||
|
||||
// protected void onTranscriptionChunkReceived(HashMap<String, Object> extraData) {
|
||||
// JitsiMeetLogger.i("Transcription chunk received: " + extraData);
|
||||
// }
|
||||
|
||||
// protected void onCustomOverflowMenuButtonPressed(HashMap<String, Object> extraData) {
|
||||
// JitsiMeetLogger.i("Custom overflow menu button pressed: " + extraData);
|
||||
// }
|
||||
|
||||
// Activity lifecycle methods
|
||||
//
|
||||
|
||||
@@ -338,6 +346,12 @@ public class JitsiMeetActivity extends AppCompatActivity
|
||||
case READY_TO_CLOSE:
|
||||
onReadyToClose();
|
||||
break;
|
||||
// case TRANSCRIPTION_CHUNK_RECEIVED:
|
||||
// onTranscriptionChunkReceived(event.getData());
|
||||
// break;
|
||||
// case CUSTOM_OVERFLOW_MENU_BUTTON_PRESSED:
|
||||
// onCustomOverflowMenuButtonPressed(event.getData());
|
||||
// break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package org.jitsi.meet.sdk;
|
||||
|
||||
import static android.Manifest.permission.POST_NOTIFICATIONS;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.Notification;
|
||||
import android.app.NotificationManager;
|
||||
@@ -24,6 +26,7 @@ import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ServiceInfo;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
@@ -31,6 +34,8 @@ import android.os.IBinder;
|
||||
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
|
||||
import com.facebook.react.modules.core.PermissionListener;
|
||||
|
||||
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
|
||||
|
||||
import java.util.HashMap;
|
||||
@@ -52,12 +57,13 @@ public class JitsiMeetOngoingConferenceService extends Service
|
||||
|
||||
private final BroadcastReceiver broadcastReceiver = new BroadcastReceiver();
|
||||
|
||||
private static final int POST_NOTIFICATIONS_PERMISSION_REQUEST_CODE = (int) (Math.random() * Short.MAX_VALUE);
|
||||
|
||||
private boolean isAudioMuted;
|
||||
|
||||
static final int NOTIFICATION_ID = new Random().nextInt(99999) + 10000;
|
||||
|
||||
|
||||
public static void launch(Context context, HashMap<String, Object> extraData) {
|
||||
private static void doLaunch(Context context, HashMap<String, Object> extraData) {
|
||||
|
||||
OngoingNotification.createNotificationChannel((Activity) context);
|
||||
|
||||
@@ -87,6 +93,31 @@ public class JitsiMeetOngoingConferenceService extends Service
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void launch(Context context, HashMap<String, Object> extraData) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
PermissionListener listener = new PermissionListener() {
|
||||
@Override
|
||||
public boolean onRequestPermissionsResult(int i, String[] strings, int[] results) {
|
||||
if (results.length > 0 && results[0] == PackageManager.PERMISSION_GRANTED) {
|
||||
doLaunch(context, extraData);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
JitsiMeetActivityDelegate.requestPermissions(
|
||||
(Activity) context,
|
||||
new String[]{POST_NOTIFICATIONS},
|
||||
POST_NOTIFICATIONS_PERMISSION_REQUEST_CODE,
|
||||
listener
|
||||
);
|
||||
} else {
|
||||
doLaunch(context, extraData);
|
||||
}
|
||||
}
|
||||
|
||||
public static void abort(Context context) {
|
||||
Intent intent = new Intent(context, JitsiMeetOngoingConferenceService.class);
|
||||
context.stopService(intent);
|
||||
@@ -102,7 +133,7 @@ public class JitsiMeetOngoingConferenceService extends Service
|
||||
JitsiMeetLogger.w(TAG + " Couldn't start service, notification is null");
|
||||
} else {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||
startForeground(NOTIFICATION_ID, notification, ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK);
|
||||
startForeground(NOTIFICATION_ID, notification, ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK | ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE);
|
||||
} else {
|
||||
startForeground(NOTIFICATION_ID, notification);
|
||||
}
|
||||
|
||||
462
conference.js
462
conference.js
@@ -2,10 +2,8 @@
|
||||
|
||||
import { jitsiLocalStorage } from '@jitsi/js-utils';
|
||||
import Logger from '@jitsi/logger';
|
||||
import EventEmitter from 'events';
|
||||
|
||||
import { ENDPOINT_TEXT_MESSAGE_NAME } from './modules/API/constants';
|
||||
import { AUDIO_ONLY_SCREEN_SHARE_NO_TRACK } from './modules/UI/UIErrors';
|
||||
import mediaDeviceHelper from './modules/devices/mediaDeviceHelper';
|
||||
import Recorder from './modules/recorder/Recorder';
|
||||
import { createTaskQueue } from './modules/util/helpers';
|
||||
@@ -18,7 +16,6 @@ import {
|
||||
import { sendAnalytics } from './react/features/analytics/functions';
|
||||
import {
|
||||
maybeRedirectToWelcomePage,
|
||||
redirectToStaticPage,
|
||||
reloadWithStoredParams
|
||||
} from './react/features/app/actions';
|
||||
import { showModeratedNotification } from './react/features/av-moderation/actions';
|
||||
@@ -56,7 +53,7 @@ import {
|
||||
getConferenceOptions,
|
||||
sendLocalParticipant
|
||||
} from './react/features/base/conference/functions';
|
||||
import { getReplaceParticipant } from './react/features/base/config/functions';
|
||||
import { getReplaceParticipant, getSsrcRewritingFeatureFlag } from './react/features/base/config/functions';
|
||||
import { connect } from './react/features/base/connection/actions.web';
|
||||
import {
|
||||
checkAndNotifyForNewDevice,
|
||||
@@ -78,7 +75,6 @@ import {
|
||||
JitsiConferenceEvents,
|
||||
JitsiE2ePingEvents,
|
||||
JitsiMediaDevicesEvents,
|
||||
JitsiTrackErrors,
|
||||
JitsiTrackEvents,
|
||||
browser
|
||||
} from './react/features/base/lib-jitsi-meet';
|
||||
@@ -119,8 +115,11 @@ import {
|
||||
import { updateSettings } from './react/features/base/settings/actions';
|
||||
import {
|
||||
addLocalTrack,
|
||||
createInitialAVTracks,
|
||||
destroyLocalTracks,
|
||||
displayErrorsForCreateInitialLocalTracks,
|
||||
replaceLocalTrack,
|
||||
setGUMPendingStateOnFailedTracks,
|
||||
toggleScreensharing as toggleScreensharingA,
|
||||
trackAdded,
|
||||
trackRemoved
|
||||
@@ -165,12 +164,8 @@ import { AudioMixerEffect } from './react/features/stream-effects/audio-mixer/Au
|
||||
import { createRnnoiseProcessor } from './react/features/stream-effects/rnnoise';
|
||||
import { handleToggleVideoMuted } from './react/features/toolbox/actions.any';
|
||||
import { muteLocal } from './react/features/video-menu/actions.any';
|
||||
import UIEvents from './service/UI/UIEvents';
|
||||
|
||||
const logger = Logger.getLogger(__filename);
|
||||
|
||||
const eventEmitter = new EventEmitter();
|
||||
|
||||
let room;
|
||||
|
||||
/*
|
||||
@@ -280,12 +275,6 @@ class ConferenceConnector {
|
||||
|
||||
switch (err) {
|
||||
|
||||
case JitsiConferenceErrors.NOT_ALLOWED_ERROR: {
|
||||
// let's show some auth not allowed page
|
||||
APP.store.dispatch(redirectToStaticPage('static/authError.html'));
|
||||
break;
|
||||
}
|
||||
|
||||
case JitsiConferenceErrors.RESERVATION_ERROR: {
|
||||
const [ code, msg ] = params;
|
||||
|
||||
@@ -395,27 +384,6 @@ function disconnect() {
|
||||
return APP.connection.disconnect().then(onDisconnected, onDisconnected);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the GUM pending state for the tracks that have failed.
|
||||
*
|
||||
* NOTE: Some of the track that we will be setting to GUM pending state NONE may not have failed but they may have
|
||||
* been requested. This won't be a problem because their current GUM pending state will be NONE anyway.
|
||||
* @param {JitsiLocalTrack} tracks - The tracks that have been created.
|
||||
* @returns {void}
|
||||
*/
|
||||
function setGUMPendingStateOnFailedTracks(tracks) {
|
||||
const tracksTypes = tracks.map(track => {
|
||||
if (track.getVideoType() === VIDEO_TYPE.DESKTOP) {
|
||||
return MEDIA_TYPE.SCREENSHARE;
|
||||
}
|
||||
|
||||
return track.getType();
|
||||
});
|
||||
const nonPendingTracks = [ MEDIA_TYPE.AUDIO, MEDIA_TYPE.VIDEO ].filter(type => !tracksTypes.includes(type));
|
||||
|
||||
APP.store.dispatch(gumPending(nonPendingTracks, IGUMPendingState.NONE));
|
||||
}
|
||||
|
||||
export default {
|
||||
/**
|
||||
* Flag used to delay modification of the muted status of local media tracks
|
||||
@@ -514,57 +482,12 @@ export default {
|
||||
return [];
|
||||
});
|
||||
} else if (requestedAudio || requestedVideo) {
|
||||
APP.store.dispatch(gumPending(initialDevices, IGUMPendingState.PENDING_UNMUTE));
|
||||
tryCreateLocalTracks = createLocalTracksF({
|
||||
tryCreateLocalTracks = APP.store.dispatch(createInitialAVTracks({
|
||||
devices: initialDevices,
|
||||
timeout,
|
||||
firePermissionPromptIsShownEvent: true
|
||||
})
|
||||
.catch(async error => {
|
||||
if (error.name === JitsiTrackErrors.TIMEOUT && !browser.isElectron()) {
|
||||
errors.audioAndVideoError = error;
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
// Retry with separate gUM calls.
|
||||
const gUMPromises = [];
|
||||
const tracks = [];
|
||||
|
||||
if (requestedAudio) {
|
||||
gUMPromises.push(createLocalTracksF(audioOptions));
|
||||
}
|
||||
|
||||
if (requestedVideo) {
|
||||
gUMPromises.push(createLocalTracksF({
|
||||
devices: [ MEDIA_TYPE.VIDEO ],
|
||||
timeout,
|
||||
firePermissionPromptIsShownEvent: true
|
||||
}));
|
||||
}
|
||||
|
||||
const results = await Promise.allSettled(gUMPromises);
|
||||
let errorMsg;
|
||||
|
||||
results.forEach((result, idx) => {
|
||||
if (result.status === 'fulfilled') {
|
||||
tracks.push(result.value[0]);
|
||||
} else {
|
||||
errorMsg = result.reason;
|
||||
const isAudio = idx === 0;
|
||||
|
||||
logger.error(`${isAudio ? 'Audio' : 'Video'} track creation failed with error ${errorMsg}`);
|
||||
if (isAudio) {
|
||||
errors.audioOnlyError = errorMsg;
|
||||
} else {
|
||||
errors.videoOnlyError = errorMsg;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (errors.audioOnlyError && errors.videoOnlyError) {
|
||||
errors.audioAndVideoError = errorMsg;
|
||||
}
|
||||
})).then(({ tracks, errors: pErrors }) => {
|
||||
Object.assign(errors, pErrors);
|
||||
|
||||
return tracks;
|
||||
});
|
||||
@@ -585,42 +508,6 @@ export default {
|
||||
};
|
||||
},
|
||||
|
||||
/**
|
||||
* Displays error notifications according to the state carried by {@code errors} object returned
|
||||
* by {@link createInitialLocalTracks}.
|
||||
* @param {Object} errors - the errors (if any) returned by {@link createInitialLocalTracks}.
|
||||
*
|
||||
* @returns {void}
|
||||
* @private
|
||||
*/
|
||||
_displayErrorsForCreateInitialLocalTracks(errors) {
|
||||
const {
|
||||
audioAndVideoError,
|
||||
audioOnlyError,
|
||||
screenSharingError,
|
||||
videoOnlyError
|
||||
} = errors;
|
||||
|
||||
// FIXME If there will be microphone error it will cover any screensharing dialog, but it's still better than in
|
||||
// the reverse order where the screensharing dialog will sometimes be closing the microphone alert
|
||||
// ($.prompt.close(); is called). Need to figure out dialogs chaining to fix that.
|
||||
if (screenSharingError) {
|
||||
this._handleScreenSharingError(screenSharingError);
|
||||
}
|
||||
if (audioAndVideoError || audioOnlyError) {
|
||||
if (audioOnlyError || videoOnlyError) {
|
||||
// If both requests for 'audio' + 'video' and 'audio' only failed, we assume that there are some
|
||||
// problems with user's microphone and show corresponding dialog.
|
||||
APP.store.dispatch(notifyMicError(audioOnlyError));
|
||||
APP.store.dispatch(notifyCameraError(videoOnlyError));
|
||||
} else {
|
||||
// If request for 'audio' + 'video' failed, but request for 'audio' only was OK, we assume that we had
|
||||
// problems with camera and show corresponding dialog.
|
||||
APP.store.dispatch(notifyCameraError(audioAndVideoError));
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
startConference(tracks) {
|
||||
tracks.forEach(track => {
|
||||
if ((track.isAudioTrack() && this.isLocalAudioMuted())
|
||||
@@ -736,11 +623,11 @@ export default {
|
||||
|
||||
logger.debug('Prejoin screen no longer displayed at the time when tracks were created');
|
||||
|
||||
this._displayErrorsForCreateInitialLocalTracks(errors);
|
||||
APP.store.dispatch(displayErrorsForCreateInitialLocalTracks(errors));
|
||||
|
||||
const tracks = handleInitialTracks(initialOptions, localTracks);
|
||||
|
||||
setGUMPendingStateOnFailedTracks(tracks);
|
||||
setGUMPendingStateOnFailedTracks(tracks, APP.store.dispatch);
|
||||
|
||||
return this._setLocalAudioVideoStreams(tracks);
|
||||
}
|
||||
@@ -749,7 +636,7 @@ export default {
|
||||
|
||||
return Promise.all([
|
||||
tryCreateLocalTracks.then(tr => {
|
||||
this._displayErrorsForCreateInitialLocalTracks(errors);
|
||||
APP.store.dispatch(displayErrorsForCreateInitialLocalTracks(errors));
|
||||
|
||||
return tr;
|
||||
}).then(tr => {
|
||||
@@ -757,7 +644,7 @@ export default {
|
||||
|
||||
const filteredTracks = handleInitialTracks(initialOptions, tr);
|
||||
|
||||
setGUMPendingStateOnFailedTracks(filteredTracks);
|
||||
setGUMPendingStateOnFailedTracks(filteredTracks, APP.store.dispatch);
|
||||
|
||||
return filteredTracks;
|
||||
}),
|
||||
@@ -1238,7 +1125,7 @@ export default {
|
||||
const { tryCreateLocalTracks, errors } = this.createInitialLocalTracks(options);
|
||||
const localTracks = await tryCreateLocalTracks;
|
||||
|
||||
this._displayErrorsForCreateInitialLocalTracks(errors);
|
||||
APP.store.dispatch(displayErrorsForCreateInitialLocalTracks(errors));
|
||||
localTracks.forEach(track => {
|
||||
if ((track.isAudioTrack() && this.isLocalAudioMuted())
|
||||
|| (track.isVideoTrack() && this.isLocalVideoMuted())) {
|
||||
@@ -1337,12 +1224,11 @@ export default {
|
||||
* @returns {Promise}
|
||||
*/
|
||||
useVideoStream(newTrack) {
|
||||
const state = APP.store.getState();
|
||||
|
||||
logger.debug(`useVideoStream: ${newTrack}`);
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
_replaceLocalVideoTrackQueue.enqueue(onFinish => {
|
||||
const state = APP.store.getState();
|
||||
const oldTrack = getLocalJitsiVideoTrack(state);
|
||||
|
||||
logger.debug(`useVideoStream: Replacing ${oldTrack} with ${newTrack}`);
|
||||
@@ -1579,50 +1465,6 @@ export default {
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Handles {@link JitsiTrackError} returned by the lib-jitsi-meet when
|
||||
* trying to create screensharing track. It will either do nothing if
|
||||
* the dialog was canceled on user's request or display an error if
|
||||
* screensharing couldn't be started.
|
||||
* @param {JitsiTrackError} error - The error returned by
|
||||
* {@link _createDesktopTrack} Promise.
|
||||
* @private
|
||||
*/
|
||||
_handleScreenSharingError(error) {
|
||||
if (error.name === JitsiTrackErrors.SCREENSHARING_USER_CANCELED) {
|
||||
return;
|
||||
}
|
||||
|
||||
logger.error('failed to share local desktop', error);
|
||||
|
||||
// Handling:
|
||||
// JitsiTrackErrors.CONSTRAINT_FAILED
|
||||
// JitsiTrackErrors.PERMISSION_DENIED
|
||||
// JitsiTrackErrors.SCREENSHARING_GENERIC_ERROR
|
||||
// and any other
|
||||
let descriptionKey;
|
||||
let titleKey;
|
||||
|
||||
if (error.name === JitsiTrackErrors.PERMISSION_DENIED) {
|
||||
descriptionKey = 'dialog.screenSharingPermissionDeniedError';
|
||||
titleKey = 'dialog.screenSharingFailedTitle';
|
||||
} else if (error.name === JitsiTrackErrors.CONSTRAINT_FAILED) {
|
||||
descriptionKey = 'dialog.cameraConstraintFailedError';
|
||||
titleKey = 'deviceError.cameraError';
|
||||
} else if (error.name === JitsiTrackErrors.SCREENSHARING_GENERIC_ERROR) {
|
||||
descriptionKey = 'dialog.screenSharingFailed';
|
||||
titleKey = 'dialog.screenSharingFailedTitle';
|
||||
} else if (error === AUDIO_ONLY_SCREEN_SHARE_NO_TRACK) {
|
||||
descriptionKey = 'notify.screenShareNoAudio';
|
||||
titleKey = 'notify.screenShareNoAudioTitle';
|
||||
}
|
||||
|
||||
APP.store.dispatch(showErrorNotification({
|
||||
descriptionKey,
|
||||
titleKey
|
||||
}, NOTIFICATION_TIMEOUT_TYPE.LONG));
|
||||
},
|
||||
|
||||
/**
|
||||
* Setup interaction between conference and UI.
|
||||
*/
|
||||
@@ -1795,7 +1637,11 @@ export default {
|
||||
|
||||
room.on(
|
||||
JitsiConferenceEvents.CONFERENCE_CREATED_TIMESTAMP,
|
||||
conferenceTimestamp => APP.store.dispatch(conferenceTimestampChanged(conferenceTimestamp)));
|
||||
conferenceTimestamp => {
|
||||
APP.store.dispatch(conferenceTimestampChanged(conferenceTimestamp));
|
||||
APP.API.notifyConferenceCreatedTimestamp(conferenceTimestamp);
|
||||
}
|
||||
);
|
||||
|
||||
room.on(
|
||||
JitsiConferenceEvents.DISPLAY_NAME_CHANGED,
|
||||
@@ -1917,21 +1763,12 @@ export default {
|
||||
JitsiE2ePingEvents.E2E_RTT_CHANGED,
|
||||
(...args) => APP.store.dispatch(e2eRttChanged(...args)));
|
||||
|
||||
APP.UI.addListener(UIEvents.AUDIO_MUTED, muted => {
|
||||
this.muteAudio(muted);
|
||||
});
|
||||
APP.UI.addListener(UIEvents.VIDEO_MUTED, (muted, showUI = false) => {
|
||||
this.muteVideo(muted, showUI);
|
||||
});
|
||||
|
||||
room.addCommandListener(this.commands.defaults.ETHERPAD,
|
||||
({ value }) => {
|
||||
APP.UI.initEtherpad(value);
|
||||
}
|
||||
);
|
||||
|
||||
APP.UI.addListener(UIEvents.EMAIL_CHANGED,
|
||||
this.changeLocalEmail.bind(this));
|
||||
room.addCommandListener(this.commands.defaults.EMAIL, (data, from) => {
|
||||
APP.store.dispatch(participantUpdated({
|
||||
conference: room,
|
||||
@@ -1951,9 +1788,6 @@ export default {
|
||||
}));
|
||||
});
|
||||
|
||||
APP.UI.addListener(UIEvents.NICKNAME_CHANGED,
|
||||
this.changeLocalDisplayName.bind(this));
|
||||
|
||||
room.on(
|
||||
JitsiConferenceEvents.START_MUTED_POLICY_CHANGED,
|
||||
({ audio, video }) => {
|
||||
@@ -2000,123 +1834,146 @@ export default {
|
||||
|
||||
room.on(
|
||||
JitsiConferenceEvents.DATA_CHANNEL_CLOSED, ev => {
|
||||
APP.store.dispatch(dataChannelClosed(ev.code, ev.reason));
|
||||
APP.store.dispatch(showWarningNotification({
|
||||
descriptionKey: 'notify.dataChannelClosedDescription',
|
||||
titleKey: 'notify.dataChannelClosed',
|
||||
uid: DATA_CHANNEL_CLOSED_NOTIFICATION_ID
|
||||
}, NOTIFICATION_TIMEOUT_TYPE.STICKY));
|
||||
const state = APP.store.getState();
|
||||
const { dataChannelOpen } = state['features/base/conference'];
|
||||
const timeout = typeof dataChannelOpen === 'undefined' ? 15000 : 60000;
|
||||
|
||||
// Show the notification only when the data channel connection doesn't get re-established in 60 secs if
|
||||
// it was already established at the beginning of the call, show it sooner otherwise. This notification
|
||||
// can be confusing and alarming to users even when there is no significant impact to user experience
|
||||
// if the the reconnect happens immediately.
|
||||
setTimeout(() => {
|
||||
const { dataChannelOpen: open } = APP.store.getState()['features/base/conference'];
|
||||
|
||||
if (!open) {
|
||||
const descriptionKey = getSsrcRewritingFeatureFlag(state)
|
||||
? 'notify.dataChannelClosedDescriptionWithAudio' : 'notify.dataChannelClosedDescription';
|
||||
const titleKey = getSsrcRewritingFeatureFlag(state)
|
||||
? 'notify.dataChannelClosedWithAudio' : 'notify.dataChannelClosed';
|
||||
|
||||
APP.store.dispatch(dataChannelClosed(ev.code, ev.reason));
|
||||
APP.store.dispatch(showWarningNotification({
|
||||
descriptionKey,
|
||||
titleKey,
|
||||
uid: DATA_CHANNEL_CLOSED_NOTIFICATION_ID
|
||||
}, NOTIFICATION_TIMEOUT_TYPE.STICKY));
|
||||
}
|
||||
}, timeout);
|
||||
}
|
||||
);
|
||||
},
|
||||
|
||||
// call hangup
|
||||
APP.UI.addListener(UIEvents.HANGUP, () => {
|
||||
this.hangup(true);
|
||||
/**
|
||||
* Handles audio device changes.
|
||||
*
|
||||
* @param {string} cameraDeviceId - The new device id.
|
||||
* @returns {Promise}
|
||||
*/
|
||||
async onAudioDeviceChanged(micDeviceId) {
|
||||
const audioWasMuted = this.isLocalAudioMuted();
|
||||
|
||||
// Disable noise suppression if it was enabled on the previous track.
|
||||
await APP.store.dispatch(setNoiseSuppressionEnabled(false));
|
||||
|
||||
// When the 'default' mic needs to be selected, we need to pass the real device id to gUM instead of
|
||||
// 'default' in order to get the correct MediaStreamTrack from chrome because of the following bug.
|
||||
// https://bugs.chromium.org/p/chromium/issues/detail?id=997689.
|
||||
const isDefaultMicSelected = micDeviceId === 'default';
|
||||
const selectedDeviceId = isDefaultMicSelected
|
||||
? getDefaultDeviceId(APP.store.getState(), 'audioInput')
|
||||
: micDeviceId;
|
||||
|
||||
logger.info(`Switching audio input device to ${selectedDeviceId}`);
|
||||
sendAnalytics(createDeviceChangedEvent('audio', 'input'));
|
||||
createLocalTracksF({
|
||||
devices: [ 'audio' ],
|
||||
micDeviceId: selectedDeviceId
|
||||
})
|
||||
.then(([ stream ]) => {
|
||||
// if audio was muted before changing the device, mute
|
||||
// with the new device
|
||||
if (audioWasMuted) {
|
||||
return stream.mute()
|
||||
.then(() => stream);
|
||||
}
|
||||
|
||||
return stream;
|
||||
})
|
||||
.then(async stream => {
|
||||
await this._maybeApplyAudioMixerEffect(stream);
|
||||
|
||||
return this.useAudioStream(stream);
|
||||
})
|
||||
.then(() => {
|
||||
const localAudio = getLocalJitsiAudioTrack(APP.store.getState());
|
||||
|
||||
if (localAudio && isDefaultMicSelected) {
|
||||
// workaround for the default device to be shown as selected in the
|
||||
// settings even when the real device id was passed to gUM because of the
|
||||
// above mentioned chrome bug.
|
||||
localAudio._realDeviceId = localAudio.deviceId = 'default';
|
||||
}
|
||||
})
|
||||
.catch(err => {
|
||||
logger.error(`Failed to switch to selected audio input device ${selectedDeviceId}, error=${err}`);
|
||||
APP.store.dispatch(notifyMicError(err));
|
||||
});
|
||||
},
|
||||
|
||||
APP.UI.addListener(
|
||||
UIEvents.VIDEO_DEVICE_CHANGED,
|
||||
cameraDeviceId => {
|
||||
const videoWasMuted = this.isLocalVideoMuted();
|
||||
const localVideoTrack = getLocalJitsiVideoTrack(APP.store.getState());
|
||||
/**
|
||||
* Handles video device changes.
|
||||
*
|
||||
* @param {string} cameraDeviceId - The new device id.
|
||||
* @returns {void}
|
||||
*/
|
||||
onVideoDeviceChanged(cameraDeviceId) {
|
||||
const videoWasMuted = this.isLocalVideoMuted();
|
||||
const localVideoTrack = getLocalJitsiVideoTrack(APP.store.getState());
|
||||
|
||||
if (localVideoTrack?.getDeviceId() === cameraDeviceId) {
|
||||
return;
|
||||
}
|
||||
if (localVideoTrack?.getDeviceId() === cameraDeviceId) {
|
||||
return;
|
||||
}
|
||||
|
||||
sendAnalytics(createDeviceChangedEvent('video', 'input'));
|
||||
sendAnalytics(createDeviceChangedEvent('video', 'input'));
|
||||
|
||||
createLocalTracksF({
|
||||
devices: [ 'video' ],
|
||||
cameraDeviceId
|
||||
})
|
||||
.then(([ stream ]) => {
|
||||
// if we are in audio only mode or video was muted before
|
||||
// changing device, then mute
|
||||
if (this.isAudioOnly() || videoWasMuted) {
|
||||
return stream.mute()
|
||||
.then(() => stream);
|
||||
}
|
||||
|
||||
return stream;
|
||||
})
|
||||
.then(stream => {
|
||||
logger.info(`Switching the local video device to ${cameraDeviceId}.`);
|
||||
|
||||
return this.useVideoStream(stream);
|
||||
})
|
||||
.catch(error => {
|
||||
logger.error(`Failed to switch to selected camera:${cameraDeviceId}, error:${error}`);
|
||||
|
||||
return APP.store.dispatch(notifyCameraError(error));
|
||||
});
|
||||
createLocalTracksF({
|
||||
devices: [ 'video' ],
|
||||
cameraDeviceId
|
||||
})
|
||||
.then(([ stream ]) => {
|
||||
// if we are in audio only mode or video was muted before
|
||||
// changing device, then mute
|
||||
if (this.isAudioOnly() || videoWasMuted) {
|
||||
return stream.mute()
|
||||
.then(() => stream);
|
||||
}
|
||||
);
|
||||
|
||||
APP.UI.addListener(
|
||||
UIEvents.AUDIO_DEVICE_CHANGED,
|
||||
async micDeviceId => {
|
||||
const audioWasMuted = this.isLocalAudioMuted();
|
||||
return stream;
|
||||
})
|
||||
.then(stream => {
|
||||
logger.info(`Switching the local video device to ${cameraDeviceId}.`);
|
||||
|
||||
// Disable noise suppression if it was enabled on the previous track.
|
||||
await APP.store.dispatch(setNoiseSuppressionEnabled(false));
|
||||
return this.useVideoStream(stream);
|
||||
})
|
||||
.catch(error => {
|
||||
logger.error(`Failed to switch to selected camera:${cameraDeviceId}, error:${error}`);
|
||||
|
||||
// When the 'default' mic needs to be selected, we need to pass the real device id to gUM instead of
|
||||
// 'default' in order to get the correct MediaStreamTrack from chrome because of the following bug.
|
||||
// https://bugs.chromium.org/p/chromium/issues/detail?id=997689.
|
||||
const isDefaultMicSelected = micDeviceId === 'default';
|
||||
const selectedDeviceId = isDefaultMicSelected
|
||||
? getDefaultDeviceId(APP.store.getState(), 'audioInput')
|
||||
: micDeviceId;
|
||||
|
||||
logger.info(`Switching audio input device to ${selectedDeviceId}`);
|
||||
sendAnalytics(createDeviceChangedEvent('audio', 'input'));
|
||||
createLocalTracksF({
|
||||
devices: [ 'audio' ],
|
||||
micDeviceId: selectedDeviceId
|
||||
})
|
||||
.then(([ stream ]) => {
|
||||
// if audio was muted before changing the device, mute
|
||||
// with the new device
|
||||
if (audioWasMuted) {
|
||||
return stream.mute()
|
||||
.then(() => stream);
|
||||
}
|
||||
|
||||
return stream;
|
||||
})
|
||||
.then(async stream => {
|
||||
await this._maybeApplyAudioMixerEffect(stream);
|
||||
|
||||
return this.useAudioStream(stream);
|
||||
})
|
||||
.then(() => {
|
||||
const localAudio = getLocalJitsiAudioTrack(APP.store.getState());
|
||||
|
||||
if (localAudio && isDefaultMicSelected) {
|
||||
// workaround for the default device to be shown as selected in the
|
||||
// settings even when the real device id was passed to gUM because of the
|
||||
// above mentioned chrome bug.
|
||||
localAudio._realDeviceId = localAudio.deviceId = 'default';
|
||||
}
|
||||
})
|
||||
.catch(err => {
|
||||
logger.error(`Failed to switch to selected audio input device ${selectedDeviceId}, error=${err}`);
|
||||
APP.store.dispatch(notifyMicError(err));
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
APP.UI.addListener(UIEvents.TOGGLE_AUDIO_ONLY, () => {
|
||||
// Immediately update the UI by having remote videos and the large video update themselves.
|
||||
const displayedUserId = APP.UI.getLargeVideoID();
|
||||
|
||||
if (displayedUserId) {
|
||||
APP.UI.updateLargeVideo(displayedUserId, true);
|
||||
}
|
||||
return APP.store.dispatch(notifyCameraError(error));
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Handles audio only changes.
|
||||
*/
|
||||
onToggleAudioOnly() {
|
||||
// Immediately update the UI by having remote videos and the large video update themselves.
|
||||
const displayedUserId = APP.UI.getLargeVideoID();
|
||||
|
||||
if (displayedUserId) {
|
||||
APP.UI.updateLargeVideo(displayedUserId, true);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Cleanups local conference on suspend.
|
||||
*/
|
||||
@@ -2409,8 +2266,6 @@ export default {
|
||||
this.deviceChangeListener);
|
||||
}
|
||||
|
||||
APP.UI.removeAllListeners();
|
||||
|
||||
let feedbackResultPromise = Promise.resolve({});
|
||||
|
||||
if (requestFeedback) {
|
||||
@@ -2517,37 +2372,6 @@ export default {
|
||||
room.sendEndpointMessage(to, payload);
|
||||
},
|
||||
|
||||
/**
|
||||
* Adds new listener.
|
||||
* @param {String} eventName the name of the event
|
||||
* @param {Function} listener the listener.
|
||||
*/
|
||||
addListener(eventName, listener) {
|
||||
eventEmitter.addListener(eventName, listener);
|
||||
},
|
||||
|
||||
/**
|
||||
* Removes listener.
|
||||
* @param {String} eventName the name of the event that triggers the
|
||||
* listener
|
||||
* @param {Function} listener the listener.
|
||||
*/
|
||||
removeListener(eventName, listener) {
|
||||
eventEmitter.removeListener(eventName, listener);
|
||||
},
|
||||
|
||||
/**
|
||||
* Changes the display name for the local user
|
||||
* @param nickname {string} the new display name
|
||||
*/
|
||||
changeLocalDisplayName(nickname = '') {
|
||||
const formattedNickname = getNormalizedDisplayName(nickname);
|
||||
|
||||
APP.store.dispatch(updateSettings({
|
||||
displayName: formattedNickname
|
||||
}));
|
||||
},
|
||||
|
||||
/**
|
||||
* Callback invoked by the external api create or update a direct connection
|
||||
* from the local client to an external client.
|
||||
|
||||
31
config.js
31
config.js
@@ -59,6 +59,10 @@ var config = {
|
||||
// https://github.com/jitsi/jitsi-meet/issues/7376
|
||||
// focusUserJid: 'focus@auth.jitsi-meet.example.com',
|
||||
|
||||
// Option to send conference requests to jicofo over http (requires nginx rule for it)
|
||||
// conferenceRequestUrl:
|
||||
// 'https://<!--# echo var="http_host" default="jitsi-meet.example.com" -->/' + subdir + 'conference-request/v1',
|
||||
|
||||
// Options related to the bridge (colibri) data channel
|
||||
bridgeChannel: {
|
||||
// If the backend advertises multiple colibri websockets, this options allows
|
||||
@@ -463,6 +467,8 @@ var config = {
|
||||
// low: 100000,
|
||||
// standard: 300000,
|
||||
// high: 1000000,
|
||||
// fullHd: 2000000,
|
||||
// ultraHd: 4000000,
|
||||
// ssHigh: 2500000
|
||||
// },
|
||||
// scalabilityModeEnabled: true,
|
||||
@@ -474,6 +480,8 @@ var config = {
|
||||
// low: 200000,
|
||||
// standard: 500000,
|
||||
// high: 1500000,
|
||||
// fullHd: 3000000,
|
||||
// ultraHd: 6000000,
|
||||
// ssHigh: 2500000
|
||||
// },
|
||||
// scalabilityModeEnabled: true
|
||||
@@ -483,6 +491,8 @@ var config = {
|
||||
// low: 200000,
|
||||
// standard: 500000,
|
||||
// high: 1500000,
|
||||
// fullHd: 3000000,
|
||||
// ultraHd: 6000000,
|
||||
// ssHigh: 2500000
|
||||
// },
|
||||
// scalabilityModeEnabled: false
|
||||
@@ -492,6 +502,8 @@ var config = {
|
||||
// low: 100000,
|
||||
// standard: 300000,
|
||||
// high: 1200000,
|
||||
// fullHd: 2500000,
|
||||
// ultraHd: 5000000,
|
||||
// ssHigh: 2500000
|
||||
// },
|
||||
// scalabilityModeEnabled: true,
|
||||
@@ -836,6 +848,22 @@ var config = {
|
||||
// autoHideWhileChatIsOpen: false,
|
||||
// },
|
||||
|
||||
// Overrides the buttons displayed in the main toolbar. Depending on the screen size the number of displayed
|
||||
// buttons varies from 2 buttons to 8 buttons. Every array in the mainToolbarButtons array will replace the
|
||||
// corresponding default buttons configuration matched by the number of buttons specified in the array. Arrays with
|
||||
// more than 8 buttons or less then 2 buttons will be ignored. When there there isn't an override for a cerain
|
||||
// configuration (for example when 3 buttons are displayed) the default jitsi-meet configuration will be used.
|
||||
// The order of the buttons in the array is preserved.
|
||||
// mainToolbarButtons: [
|
||||
// [ 'microphone', 'camera', 'desktop', 'chat', 'raisehand', 'reactions', 'participants-pane', 'tileview' ],
|
||||
// [ 'microphone', 'camera', 'desktop', 'chat', 'raisehand', 'participants-pane', 'tileview' ],
|
||||
// [ 'microphone', 'camera', 'desktop', 'chat', 'raisehand', 'participants-pane' ],
|
||||
// [ 'microphone', 'camera', 'desktop', 'chat', 'participants-pane' ],
|
||||
// [ 'microphone', 'camera', 'chat', 'participants-pane' ],
|
||||
// [ 'microphone', 'camera', 'chat' ],
|
||||
// [ 'microphone', 'camera' ]
|
||||
// ],
|
||||
|
||||
// Toolbar buttons which have their click/tap event exposed through the API on
|
||||
// `toolbarButtonClicked`. Passing a string for the button key will
|
||||
// prevent execution of the click/tap routine; passing an object with `key` and
|
||||
@@ -1778,6 +1806,9 @@ var config = {
|
||||
// collectionInterval?: number;
|
||||
// logGetStats?: boolean;
|
||||
// },
|
||||
|
||||
// Hide login button on auth dialog, you may want to enable this if you are using JWT tokens to authenticate users
|
||||
// hideLoginButton: true,
|
||||
};
|
||||
|
||||
// Temporary backwards compatibility with old mobile clients.
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
}
|
||||
|
||||
.usermessage {
|
||||
color: red;
|
||||
color: #ffffff;
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
2
debian/control
vendored
2
debian/control
vendored
@@ -3,7 +3,7 @@ Section: net
|
||||
Priority: extra
|
||||
Maintainer: Jitsi Team <dev@jitsi.org>
|
||||
Uploaders: Emil Ivov <emcho@jitsi.org>, Damian Minkov <damencho@jitsi.org>
|
||||
Build-Depends: debhelper (>= 8.0.0), nodejs
|
||||
Build-Depends: debhelper (>= 8.0.0)
|
||||
Standards-Version: 3.9.6
|
||||
Homepage: https://jitsi.org/meet
|
||||
|
||||
|
||||
6
debian/jitsi-meet-prosody.postinst
vendored
6
debian/jitsi-meet-prosody.postinst
vendored
@@ -138,10 +138,8 @@ case "$1" in
|
||||
PROSODY_CONFIG_PRESENT="false"
|
||||
fi
|
||||
|
||||
USER_EXISTS_CHECK=`prosodyctl adduser jvb@$JICOFO_AUTH_DOMAIN < /dev/null || true`
|
||||
if [ ! "$USER_EXISTS_CHECK" = "That user already exists" ]; then
|
||||
prosodyctl register jvb $JICOFO_AUTH_DOMAIN $JVB_SECRET || true
|
||||
fi
|
||||
# creates the user if it does not exist
|
||||
echo -e "$JVB_SECRET\n$JVB_SECRET" | prosodyctl adduser jvb@$JICOFO_AUTH_DOMAIN > /dev/null || true
|
||||
|
||||
# Check whether prosody config has the internal muc, if not add it,
|
||||
# as we are migrating configs
|
||||
|
||||
@@ -150,6 +150,15 @@ server {
|
||||
# alias /usr/share/jitsi-meet/load-test/libs/$1;
|
||||
#}
|
||||
|
||||
location ~ ^/conference-request/v1(\/.*)?$ {
|
||||
proxy_pass http://127.0.0.1:8888/conference-request/v1$1;
|
||||
add_header "Cache-Control" "no-cache, no-store";
|
||||
add_header 'Access-Control-Allow-Origin' '*';
|
||||
}
|
||||
location ~ ^/([^/?&:'"]+)/conference-request/v1(\/.*)?$ {
|
||||
rewrite ^/([^/?&:'"]+)/conference-request/v1(\/.*)?$ /conference-request/v1$2;
|
||||
}
|
||||
|
||||
location ~ ^/([^/?&:'"]+)$ {
|
||||
set $roomname "$1";
|
||||
try_files $uri @root_path;
|
||||
|
||||
359
ios/Podfile.lock
359
ios/Podfile.lock
@@ -14,14 +14,14 @@ PODS:
|
||||
- CocoaLumberjack/Core (= 3.7.2)
|
||||
- CocoaLumberjack/Core (3.7.2)
|
||||
- DoubleConversion (1.1.6)
|
||||
- FBLazyVector (0.72.9)
|
||||
- FBReactNativeSpec (0.72.9):
|
||||
- FBLazyVector (0.72.14)
|
||||
- FBReactNativeSpec (0.72.14):
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- RCTRequired (= 0.72.9)
|
||||
- RCTTypeSafety (= 0.72.9)
|
||||
- React-Core (= 0.72.9)
|
||||
- React-jsi (= 0.72.9)
|
||||
- ReactCommon/turbomodule/core (= 0.72.9)
|
||||
- RCTRequired (= 0.72.14)
|
||||
- RCTTypeSafety (= 0.72.14)
|
||||
- React-Core (= 0.72.14)
|
||||
- React-jsi (= 0.72.14)
|
||||
- ReactCommon/turbomodule/core (= 0.72.14)
|
||||
- Firebase/Analytics (8.15.0):
|
||||
- Firebase/Core
|
||||
- Firebase/Core (8.15.0):
|
||||
@@ -167,26 +167,26 @@ PODS:
|
||||
- DoubleConversion
|
||||
- fmt (~> 6.2.1)
|
||||
- glog
|
||||
- RCTRequired (0.72.9)
|
||||
- RCTTypeSafety (0.72.9):
|
||||
- FBLazyVector (= 0.72.9)
|
||||
- RCTRequired (= 0.72.9)
|
||||
- React-Core (= 0.72.9)
|
||||
- React (0.72.9):
|
||||
- React-Core (= 0.72.9)
|
||||
- React-Core/DevSupport (= 0.72.9)
|
||||
- React-Core/RCTWebSocket (= 0.72.9)
|
||||
- React-RCTActionSheet (= 0.72.9)
|
||||
- React-RCTAnimation (= 0.72.9)
|
||||
- React-RCTBlob (= 0.72.9)
|
||||
- React-RCTImage (= 0.72.9)
|
||||
- React-RCTLinking (= 0.72.9)
|
||||
- React-RCTNetwork (= 0.72.9)
|
||||
- React-RCTSettings (= 0.72.9)
|
||||
- React-RCTText (= 0.72.9)
|
||||
- React-RCTVibration (= 0.72.9)
|
||||
- React-callinvoker (0.72.9)
|
||||
- React-Codegen (0.72.9):
|
||||
- RCTRequired (0.72.14)
|
||||
- RCTTypeSafety (0.72.14):
|
||||
- FBLazyVector (= 0.72.14)
|
||||
- RCTRequired (= 0.72.14)
|
||||
- React-Core (= 0.72.14)
|
||||
- React (0.72.14):
|
||||
- React-Core (= 0.72.14)
|
||||
- React-Core/DevSupport (= 0.72.14)
|
||||
- React-Core/RCTWebSocket (= 0.72.14)
|
||||
- React-RCTActionSheet (= 0.72.14)
|
||||
- React-RCTAnimation (= 0.72.14)
|
||||
- React-RCTBlob (= 0.72.14)
|
||||
- React-RCTImage (= 0.72.14)
|
||||
- React-RCTLinking (= 0.72.14)
|
||||
- React-RCTNetwork (= 0.72.14)
|
||||
- React-RCTSettings (= 0.72.14)
|
||||
- React-RCTText (= 0.72.14)
|
||||
- React-RCTVibration (= 0.72.14)
|
||||
- React-callinvoker (0.72.14)
|
||||
- React-Codegen (0.72.14):
|
||||
- DoubleConversion
|
||||
- FBReactNativeSpec
|
||||
- glog
|
||||
@@ -201,10 +201,10 @@ PODS:
|
||||
- React-rncore
|
||||
- ReactCommon/turbomodule/bridging
|
||||
- ReactCommon/turbomodule/core
|
||||
- React-Core (0.72.9):
|
||||
- React-Core (0.72.14):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default (= 0.72.9)
|
||||
- React-Core/Default (= 0.72.14)
|
||||
- React-cxxreact
|
||||
- React-jsc
|
||||
- React-jsi
|
||||
@@ -214,7 +214,7 @@ PODS:
|
||||
- React-utils
|
||||
- SocketRocket (= 0.6.1)
|
||||
- Yoga
|
||||
- React-Core/CoreModulesHeaders (0.72.9):
|
||||
- React-Core/CoreModulesHeaders (0.72.14):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default
|
||||
@@ -227,7 +227,7 @@ PODS:
|
||||
- React-utils
|
||||
- SocketRocket (= 0.6.1)
|
||||
- Yoga
|
||||
- React-Core/Default (0.72.9):
|
||||
- React-Core/Default (0.72.14):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-cxxreact
|
||||
@@ -239,22 +239,22 @@ PODS:
|
||||
- React-utils
|
||||
- SocketRocket (= 0.6.1)
|
||||
- Yoga
|
||||
- React-Core/DevSupport (0.72.9):
|
||||
- React-Core/DevSupport (0.72.14):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default (= 0.72.9)
|
||||
- React-Core/RCTWebSocket (= 0.72.9)
|
||||
- React-Core/Default (= 0.72.14)
|
||||
- React-Core/RCTWebSocket (= 0.72.14)
|
||||
- React-cxxreact
|
||||
- React-jsc
|
||||
- React-jsi
|
||||
- React-jsiexecutor
|
||||
- React-jsinspector (= 0.72.9)
|
||||
- React-jsinspector (= 0.72.14)
|
||||
- React-perflogger
|
||||
- React-runtimeexecutor
|
||||
- React-utils
|
||||
- SocketRocket (= 0.6.1)
|
||||
- Yoga
|
||||
- React-Core/RCTActionSheetHeaders (0.72.9):
|
||||
- React-Core/RCTActionSheetHeaders (0.72.14):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default
|
||||
@@ -267,7 +267,7 @@ PODS:
|
||||
- React-utils
|
||||
- SocketRocket (= 0.6.1)
|
||||
- Yoga
|
||||
- React-Core/RCTAnimationHeaders (0.72.9):
|
||||
- React-Core/RCTAnimationHeaders (0.72.14):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default
|
||||
@@ -280,7 +280,7 @@ PODS:
|
||||
- React-utils
|
||||
- SocketRocket (= 0.6.1)
|
||||
- Yoga
|
||||
- React-Core/RCTBlobHeaders (0.72.9):
|
||||
- React-Core/RCTBlobHeaders (0.72.14):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default
|
||||
@@ -293,7 +293,7 @@ PODS:
|
||||
- React-utils
|
||||
- SocketRocket (= 0.6.1)
|
||||
- Yoga
|
||||
- React-Core/RCTImageHeaders (0.72.9):
|
||||
- React-Core/RCTImageHeaders (0.72.14):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default
|
||||
@@ -306,7 +306,7 @@ PODS:
|
||||
- React-utils
|
||||
- SocketRocket (= 0.6.1)
|
||||
- Yoga
|
||||
- React-Core/RCTLinkingHeaders (0.72.9):
|
||||
- React-Core/RCTLinkingHeaders (0.72.14):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default
|
||||
@@ -319,7 +319,7 @@ PODS:
|
||||
- React-utils
|
||||
- SocketRocket (= 0.6.1)
|
||||
- Yoga
|
||||
- React-Core/RCTNetworkHeaders (0.72.9):
|
||||
- React-Core/RCTNetworkHeaders (0.72.14):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default
|
||||
@@ -332,7 +332,7 @@ PODS:
|
||||
- React-utils
|
||||
- SocketRocket (= 0.6.1)
|
||||
- Yoga
|
||||
- React-Core/RCTSettingsHeaders (0.72.9):
|
||||
- React-Core/RCTSettingsHeaders (0.72.14):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default
|
||||
@@ -345,7 +345,7 @@ PODS:
|
||||
- React-utils
|
||||
- SocketRocket (= 0.6.1)
|
||||
- Yoga
|
||||
- React-Core/RCTTextHeaders (0.72.9):
|
||||
- React-Core/RCTTextHeaders (0.72.14):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default
|
||||
@@ -358,7 +358,7 @@ PODS:
|
||||
- React-utils
|
||||
- SocketRocket (= 0.6.1)
|
||||
- Yoga
|
||||
- React-Core/RCTVibrationHeaders (0.72.9):
|
||||
- React-Core/RCTVibrationHeaders (0.72.14):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default
|
||||
@@ -371,10 +371,10 @@ PODS:
|
||||
- React-utils
|
||||
- SocketRocket (= 0.6.1)
|
||||
- Yoga
|
||||
- React-Core/RCTWebSocket (0.72.9):
|
||||
- React-Core/RCTWebSocket (0.72.14):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default (= 0.72.9)
|
||||
- React-Core/Default (= 0.72.14)
|
||||
- React-cxxreact
|
||||
- React-jsc
|
||||
- React-jsi
|
||||
@@ -384,48 +384,48 @@ PODS:
|
||||
- React-utils
|
||||
- SocketRocket (= 0.6.1)
|
||||
- Yoga
|
||||
- React-CoreModules (0.72.9):
|
||||
- React-CoreModules (0.72.14):
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- RCTTypeSafety (= 0.72.9)
|
||||
- React-Codegen (= 0.72.9)
|
||||
- React-Core/CoreModulesHeaders (= 0.72.9)
|
||||
- React-jsi (= 0.72.9)
|
||||
- RCTTypeSafety (= 0.72.14)
|
||||
- React-Codegen (= 0.72.14)
|
||||
- React-Core/CoreModulesHeaders (= 0.72.14)
|
||||
- React-jsi (= 0.72.14)
|
||||
- React-RCTBlob
|
||||
- React-RCTImage (= 0.72.9)
|
||||
- ReactCommon/turbomodule/core (= 0.72.9)
|
||||
- React-RCTImage (= 0.72.14)
|
||||
- ReactCommon/turbomodule/core (= 0.72.14)
|
||||
- SocketRocket (= 0.6.1)
|
||||
- React-cxxreact (0.72.9):
|
||||
- React-cxxreact (0.72.14):
|
||||
- boost (= 1.76.0)
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-callinvoker (= 0.72.9)
|
||||
- React-debug (= 0.72.9)
|
||||
- React-jsi (= 0.72.9)
|
||||
- React-jsinspector (= 0.72.9)
|
||||
- React-logger (= 0.72.9)
|
||||
- React-perflogger (= 0.72.9)
|
||||
- React-runtimeexecutor (= 0.72.9)
|
||||
- React-debug (0.72.9)
|
||||
- React-jsc (0.72.9):
|
||||
- React-jsc/Fabric (= 0.72.9)
|
||||
- React-jsi (= 0.72.9)
|
||||
- React-jsc/Fabric (0.72.9):
|
||||
- React-jsi (= 0.72.9)
|
||||
- React-jsi (0.72.9):
|
||||
- React-callinvoker (= 0.72.14)
|
||||
- React-debug (= 0.72.14)
|
||||
- React-jsi (= 0.72.14)
|
||||
- React-jsinspector (= 0.72.14)
|
||||
- React-logger (= 0.72.14)
|
||||
- React-perflogger (= 0.72.14)
|
||||
- React-runtimeexecutor (= 0.72.14)
|
||||
- React-debug (0.72.14)
|
||||
- React-jsc (0.72.14):
|
||||
- React-jsc/Fabric (= 0.72.14)
|
||||
- React-jsi (= 0.72.14)
|
||||
- React-jsc/Fabric (0.72.14):
|
||||
- React-jsi (= 0.72.14)
|
||||
- React-jsi (0.72.14):
|
||||
- boost (= 1.76.0)
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-jsiexecutor (0.72.9):
|
||||
- React-jsiexecutor (0.72.14):
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-cxxreact (= 0.72.9)
|
||||
- React-jsi (= 0.72.9)
|
||||
- React-perflogger (= 0.72.9)
|
||||
- React-jsinspector (0.72.9)
|
||||
- React-logger (0.72.9):
|
||||
- React-cxxreact (= 0.72.14)
|
||||
- React-jsi (= 0.72.14)
|
||||
- React-perflogger (= 0.72.14)
|
||||
- React-jsinspector (0.72.14)
|
||||
- React-logger (0.72.14):
|
||||
- glog
|
||||
- react-native-background-timer (2.4.1):
|
||||
- React-Core
|
||||
@@ -453,12 +453,13 @@ PODS:
|
||||
- react-native-video/Video (6.0.0-alpha.11):
|
||||
- PromisesSwift
|
||||
- React-Core
|
||||
- react-native-webrtc (118.0.3):
|
||||
- react-native-webrtc (118.0.7):
|
||||
- JitsiWebRTC (~> 118.0.0)
|
||||
- React-Core
|
||||
- react-native-webview (13.5.1):
|
||||
- react-native-webview (13.8.7):
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core
|
||||
- React-NativeModulesApple (0.72.9):
|
||||
- React-NativeModulesApple (0.72.14):
|
||||
- React-callinvoker
|
||||
- React-Core
|
||||
- React-cxxreact
|
||||
@@ -466,17 +467,17 @@ PODS:
|
||||
- React-runtimeexecutor
|
||||
- ReactCommon/turbomodule/bridging
|
||||
- ReactCommon/turbomodule/core
|
||||
- React-perflogger (0.72.9)
|
||||
- React-RCTActionSheet (0.72.9):
|
||||
- React-Core/RCTActionSheetHeaders (= 0.72.9)
|
||||
- React-RCTAnimation (0.72.9):
|
||||
- React-perflogger (0.72.14)
|
||||
- React-RCTActionSheet (0.72.14):
|
||||
- React-Core/RCTActionSheetHeaders (= 0.72.14)
|
||||
- React-RCTAnimation (0.72.14):
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- RCTTypeSafety (= 0.72.9)
|
||||
- React-Codegen (= 0.72.9)
|
||||
- React-Core/RCTAnimationHeaders (= 0.72.9)
|
||||
- React-jsi (= 0.72.9)
|
||||
- ReactCommon/turbomodule/core (= 0.72.9)
|
||||
- React-RCTAppDelegate (0.72.9):
|
||||
- RCTTypeSafety (= 0.72.14)
|
||||
- React-Codegen (= 0.72.14)
|
||||
- React-Core/RCTAnimationHeaders (= 0.72.14)
|
||||
- React-jsi (= 0.72.14)
|
||||
- ReactCommon/turbomodule/core (= 0.72.14)
|
||||
- React-RCTAppDelegate (0.72.14):
|
||||
- RCT-Folly
|
||||
- RCTRequired
|
||||
- RCTTypeSafety
|
||||
@@ -488,81 +489,81 @@ PODS:
|
||||
- React-RCTNetwork
|
||||
- React-runtimescheduler
|
||||
- ReactCommon/turbomodule/core
|
||||
- React-RCTBlob (0.72.9):
|
||||
- React-RCTBlob (0.72.14):
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Codegen (= 0.72.9)
|
||||
- React-Core/RCTBlobHeaders (= 0.72.9)
|
||||
- React-Core/RCTWebSocket (= 0.72.9)
|
||||
- React-jsi (= 0.72.9)
|
||||
- React-RCTNetwork (= 0.72.9)
|
||||
- ReactCommon/turbomodule/core (= 0.72.9)
|
||||
- React-RCTImage (0.72.9):
|
||||
- React-Codegen (= 0.72.14)
|
||||
- React-Core/RCTBlobHeaders (= 0.72.14)
|
||||
- React-Core/RCTWebSocket (= 0.72.14)
|
||||
- React-jsi (= 0.72.14)
|
||||
- React-RCTNetwork (= 0.72.14)
|
||||
- ReactCommon/turbomodule/core (= 0.72.14)
|
||||
- React-RCTImage (0.72.14):
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- RCTTypeSafety (= 0.72.9)
|
||||
- React-Codegen (= 0.72.9)
|
||||
- React-Core/RCTImageHeaders (= 0.72.9)
|
||||
- React-jsi (= 0.72.9)
|
||||
- React-RCTNetwork (= 0.72.9)
|
||||
- ReactCommon/turbomodule/core (= 0.72.9)
|
||||
- React-RCTLinking (0.72.9):
|
||||
- React-Codegen (= 0.72.9)
|
||||
- React-Core/RCTLinkingHeaders (= 0.72.9)
|
||||
- React-jsi (= 0.72.9)
|
||||
- ReactCommon/turbomodule/core (= 0.72.9)
|
||||
- React-RCTNetwork (0.72.9):
|
||||
- RCTTypeSafety (= 0.72.14)
|
||||
- React-Codegen (= 0.72.14)
|
||||
- React-Core/RCTImageHeaders (= 0.72.14)
|
||||
- React-jsi (= 0.72.14)
|
||||
- React-RCTNetwork (= 0.72.14)
|
||||
- ReactCommon/turbomodule/core (= 0.72.14)
|
||||
- React-RCTLinking (0.72.14):
|
||||
- React-Codegen (= 0.72.14)
|
||||
- React-Core/RCTLinkingHeaders (= 0.72.14)
|
||||
- React-jsi (= 0.72.14)
|
||||
- ReactCommon/turbomodule/core (= 0.72.14)
|
||||
- React-RCTNetwork (0.72.14):
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- RCTTypeSafety (= 0.72.9)
|
||||
- React-Codegen (= 0.72.9)
|
||||
- React-Core/RCTNetworkHeaders (= 0.72.9)
|
||||
- React-jsi (= 0.72.9)
|
||||
- ReactCommon/turbomodule/core (= 0.72.9)
|
||||
- React-RCTSettings (0.72.9):
|
||||
- RCTTypeSafety (= 0.72.14)
|
||||
- React-Codegen (= 0.72.14)
|
||||
- React-Core/RCTNetworkHeaders (= 0.72.14)
|
||||
- React-jsi (= 0.72.14)
|
||||
- ReactCommon/turbomodule/core (= 0.72.14)
|
||||
- React-RCTSettings (0.72.14):
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- RCTTypeSafety (= 0.72.9)
|
||||
- React-Codegen (= 0.72.9)
|
||||
- React-Core/RCTSettingsHeaders (= 0.72.9)
|
||||
- React-jsi (= 0.72.9)
|
||||
- ReactCommon/turbomodule/core (= 0.72.9)
|
||||
- React-RCTText (0.72.9):
|
||||
- React-Core/RCTTextHeaders (= 0.72.9)
|
||||
- React-RCTVibration (0.72.9):
|
||||
- RCTTypeSafety (= 0.72.14)
|
||||
- React-Codegen (= 0.72.14)
|
||||
- React-Core/RCTSettingsHeaders (= 0.72.14)
|
||||
- React-jsi (= 0.72.14)
|
||||
- ReactCommon/turbomodule/core (= 0.72.14)
|
||||
- React-RCTText (0.72.14):
|
||||
- React-Core/RCTTextHeaders (= 0.72.14)
|
||||
- React-RCTVibration (0.72.14):
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Codegen (= 0.72.9)
|
||||
- React-Core/RCTVibrationHeaders (= 0.72.9)
|
||||
- React-jsi (= 0.72.9)
|
||||
- ReactCommon/turbomodule/core (= 0.72.9)
|
||||
- React-rncore (0.72.9)
|
||||
- React-runtimeexecutor (0.72.9):
|
||||
- React-jsi (= 0.72.9)
|
||||
- React-runtimescheduler (0.72.9):
|
||||
- React-Codegen (= 0.72.14)
|
||||
- React-Core/RCTVibrationHeaders (= 0.72.14)
|
||||
- React-jsi (= 0.72.14)
|
||||
- ReactCommon/turbomodule/core (= 0.72.14)
|
||||
- React-rncore (0.72.14)
|
||||
- React-runtimeexecutor (0.72.14):
|
||||
- React-jsi (= 0.72.14)
|
||||
- React-runtimescheduler (0.72.14):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-callinvoker
|
||||
- React-debug
|
||||
- React-jsi
|
||||
- React-runtimeexecutor
|
||||
- React-utils (0.72.9):
|
||||
- React-utils (0.72.14):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-debug
|
||||
- ReactCommon/turbomodule/bridging (0.72.9):
|
||||
- ReactCommon/turbomodule/bridging (0.72.14):
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-callinvoker (= 0.72.9)
|
||||
- React-cxxreact (= 0.72.9)
|
||||
- React-jsi (= 0.72.9)
|
||||
- React-logger (= 0.72.9)
|
||||
- React-perflogger (= 0.72.9)
|
||||
- ReactCommon/turbomodule/core (0.72.9):
|
||||
- React-callinvoker (= 0.72.14)
|
||||
- React-cxxreact (= 0.72.14)
|
||||
- React-jsi (= 0.72.14)
|
||||
- React-logger (= 0.72.14)
|
||||
- React-perflogger (= 0.72.14)
|
||||
- ReactCommon/turbomodule/core (0.72.14):
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-callinvoker (= 0.72.9)
|
||||
- React-cxxreact (= 0.72.9)
|
||||
- React-jsi (= 0.72.9)
|
||||
- React-logger (= 0.72.9)
|
||||
- React-perflogger (= 0.72.9)
|
||||
- React-callinvoker (= 0.72.14)
|
||||
- React-cxxreact (= 0.72.14)
|
||||
- React-jsi (= 0.72.14)
|
||||
- React-logger (= 0.72.14)
|
||||
- React-perflogger (= 0.72.14)
|
||||
- RNCalendarEvents (2.2.0):
|
||||
- React
|
||||
- RNCAsyncStorage (1.19.4):
|
||||
@@ -830,8 +831,8 @@ SPEC CHECKSUMS:
|
||||
boost: 7dcd2de282d72e344012f7d6564d024930a6a440
|
||||
CocoaLumberjack: b7e05132ff94f6ae4dfa9d5bce9141893a21d9da
|
||||
DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54
|
||||
FBLazyVector: dc178b8748748c036ef9493a5d59d6d1f91a36ce
|
||||
FBReactNativeSpec: d0aaae78e93c89dc2d691d8052a4d2aeb1b461ee
|
||||
FBLazyVector: d98eefb42c5a64cb28ef966bd9096c76770d8f24
|
||||
FBReactNativeSpec: 53d4eb00e8e1b6e987a3dd5906d2afe131cc54c8
|
||||
Firebase: 5f8193dff4b5b7c5d5ef72ae54bb76c08e2b841d
|
||||
FirebaseAnalytics: 7761cbadb00a717d8d0939363eb46041526474fa
|
||||
FirebaseCore: 5743c5785c074a794d35f2fff7ecc254a91e08b1
|
||||
@@ -856,20 +857,20 @@ SPEC CHECKSUMS:
|
||||
PromisesObjC: c50d2056b5253dadbd6c2bea79b0674bd5a52fa4
|
||||
PromisesSwift: 28dca69a9c40779916ac2d6985a0192a5cb4a265
|
||||
RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1
|
||||
RCTRequired: f30c3213569b1dc43659ecc549a6536e1e11139e
|
||||
RCTTypeSafety: e1ed3137728804fa98bce30b70e3da0b8e23054e
|
||||
React: 54070abee263d5773486987f1cf3a3616710ed52
|
||||
React-callinvoker: 794ea19cc4d8ce25921893141e131b9d6b7d02eb
|
||||
React-Codegen: d5dc2cae27c93b0fab4241816343c586c58965c1
|
||||
React-Core: f82477baba3526cf8a4f70055a22a8e878e3ef9c
|
||||
React-CoreModules: 87cc386c2200862672b76bb02c4574b4b1d11b3c
|
||||
React-cxxreact: c7163706a8391f373cd513348a8ebbd5a4444626
|
||||
React-debug: 4dca41301a67ab2916b2c99bef60344a7b653ac5
|
||||
React-jsc: 44ec1ce4171f4b6776810618da8e3da45899ea77
|
||||
React-jsi: 799e7004db36b0b6da2d0969ce07bf3a96df8d19
|
||||
React-jsiexecutor: bb34b280cfad63aedb266571a305b6365affb875
|
||||
React-jsinspector: 54205b269da20c51417e0fc02c4cde9f29a4bf1a
|
||||
React-logger: f42d2f2bc4cbb5d19d7c0ce84b8741b1e54e88c8
|
||||
RCTRequired: 264adaca1d8b1a9c078761891898d4142df05313
|
||||
RCTTypeSafety: 279a89da7058a69899778a127be73fab38b84499
|
||||
React: 725b4e11f6ffb43d6f9b14e82879073623db4071
|
||||
React-callinvoker: c2ba5e7e1187d0f37705b9dcaaf9bbf24d3fe9dc
|
||||
React-Codegen: ca5bc760044f8472bf2a78053937307fd2021820
|
||||
React-Core: d0796eb91058542db9e67fa9b1b11c66092de1ac
|
||||
React-CoreModules: 57ea4ca8627be90b1a29916e0640d879e5684305
|
||||
React-cxxreact: bbd34bad63b639dbb2c162cce518e8dba33cef57
|
||||
React-debug: d360c17c84e514b9143e78217072183d4fcfb9c0
|
||||
React-jsc: 6e1aae704b76f5626c00c87439fe405f34a6446e
|
||||
React-jsi: 5fe75c2ff9eea1e90ed5437fcbafb64032383d52
|
||||
React-jsiexecutor: a05da2c08edb1314cc51671c795fd4ed8440c335
|
||||
React-jsinspector: 275d9f80210f15f0af9a4b7fd5683fab9738e28e
|
||||
React-logger: 8da4802de77a0eb62512396ad6bb1769904c2f0e
|
||||
react-native-background-timer: 17ea5e06803401a379ebf1f20505b793ac44d0fe
|
||||
react-native-get-random-values: dee677497c6a740b71e5612e8dbd83e7539ed5bb
|
||||
react-native-keep-awake: afad8a51dfef9fe9655a6344771be32c8596d774
|
||||
@@ -881,25 +882,25 @@ SPEC CHECKSUMS:
|
||||
react-native-slider: 1cdd6ba29675df21f30544253bf7351d3c2d68c4
|
||||
react-native-splash-screen: 4312f786b13a81b5169ef346d76d33bc0c6dc457
|
||||
react-native-video: 472b7c366eaaaa0207e546d9a50410df89790bcf
|
||||
react-native-webrtc: 6fc32f3d556aa60aa2334eeaf6cadcdab2432809
|
||||
react-native-webview: 8baa0f5c6d336d6ba488e942bcadea5bf51f050a
|
||||
React-NativeModulesApple: 4225ac31a26696c02c54b471052b3e85e74a9a0c
|
||||
React-perflogger: cb433f318c6667060fc1f62e26eb58d6eb30a627
|
||||
React-RCTActionSheet: 0af3f8ac067e8a1dde902810b7ad169d0a0ec31e
|
||||
React-RCTAnimation: 453a88e76ba6cb49819686acd8b21ce4d9ee4232
|
||||
React-RCTAppDelegate: 009ede96d00f79460a75ab5071eadb4aaa1e5012
|
||||
React-RCTBlob: a64134435f331c7cc716dcea6944a1443af49d32
|
||||
React-RCTImage: 8e059fbdfab18b86127424dc3742532aab960760
|
||||
React-RCTLinking: 05ae2aa525b21a7f1c5069c14330700f470efd97
|
||||
React-RCTNetwork: 7ed9d99d028c53e9a23e318f65937f499ba8a6fd
|
||||
React-RCTSettings: 8b12ebf04d4baa0e259017fcef6cf7abd7d8ac51
|
||||
React-RCTText: a062ade9ff1591c46bcb6c5055fd4f96c154b8aa
|
||||
React-RCTVibration: 87c490b6f01746ab8f9b4e555f514cc030c06731
|
||||
React-rncore: 140bc11b316da7003bf039844aef39e1c242d7ad
|
||||
React-runtimeexecutor: 226ebef5f625878d3028b196cbecbbdeb6f208e4
|
||||
React-runtimescheduler: 75f2210cd7a50c4565dfd218e320479013b82f70
|
||||
React-utils: a3ffbc321572ee91911d7bc30965abe9aa4e16af
|
||||
ReactCommon: d3522e54560e4d940554aa074a0206bf4d39ae5e
|
||||
react-native-webrtc: 8b024c7bb9a005d2b9efeba4c691172dbd00268d
|
||||
react-native-webview: 95464c1249cae28186d3b7c6f494c6a124b16160
|
||||
React-NativeModulesApple: 9b58b8f5c1d8ea68d0a63f569a9e786d01281ea6
|
||||
React-perflogger: daabc494c6328efc1784a4b49b8b74fca305d11c
|
||||
React-RCTActionSheet: 0e0e64a7cf6c07f1de73d1f0a92d26a70262b256
|
||||
React-RCTAnimation: faef65b19e73029c4828167985b0a7c01c62756d
|
||||
React-RCTAppDelegate: 1c4c94324d5dee57c79f4b68dc709b1c290068c1
|
||||
React-RCTBlob: df6a165ecd97eb5a92d659aa91866ee9ee50bd5e
|
||||
React-RCTImage: 15e211cbb629210ab9c1fa37e07e7100362b12ed
|
||||
React-RCTLinking: 50d5faf19b02541cefb78ee5d505029283c8ef95
|
||||
React-RCTNetwork: dfa9fb4ad2ae459b9193a14204b1d9da907d15a7
|
||||
React-RCTSettings: 37611fa97d44a9c5a7ea844cfb953d3513f7ace0
|
||||
React-RCTText: 39ed334f64484d07b85a8159cf117814ff069ff6
|
||||
React-RCTVibration: 62462803b5fe0842e0be6d9ef86dd74e0df4a614
|
||||
React-rncore: 25ad3a3c1e0f4edf77913b9af3af9f497b7f99a5
|
||||
React-runtimeexecutor: e5c2f0a1493d72c61b97465ccfedc339157b3179
|
||||
React-runtimescheduler: 5b3b73748021c7349f06fcd24181df17860b8fb6
|
||||
React-utils: 22a77b05da25ce49c744faa82e73856dcae1734e
|
||||
ReactCommon: 07937a01c967f2023d6f2d07114315f099b4b436
|
||||
RNCalendarEvents: 7e65eb4a94f53c1744d1e275f7fafcfaa619f7a3
|
||||
RNCAsyncStorage: 3a8f7145d17cdd9f88e7b77666c94a09e4f759c8
|
||||
RNCClipboard: 41d8d918092ae8e676f18adada19104fa3e68495
|
||||
@@ -912,8 +913,8 @@ SPEC CHECKSUMS:
|
||||
RNSVG: ed492aaf3af9ca01bc945f7a149d76d62e73ec82
|
||||
RNWatch: fd30ca40a5b5ef58dcbc195638e68219bc455236
|
||||
SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17
|
||||
Yoga: eddf2bbe4a896454c248a8f23b4355891eb720a6
|
||||
Yoga: c32e0be1a17f8f1f0e633a3122f7666441f52c82
|
||||
|
||||
PODFILE CHECKSUM: ec00682c7062a323dff24a3c3643ca0bbb420d01
|
||||
|
||||
COCOAPODS: 1.14.3
|
||||
COCOAPODS: 1.15.2
|
||||
|
||||
37
ios/PrivacyInfo.xcprivacy
Normal file
37
ios/PrivacyInfo.xcprivacy
Normal file
@@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>NSPrivacyAccessedAPITypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>NSPrivacyAccessedAPIType</key>
|
||||
<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
|
||||
<key>NSPrivacyAccessedAPITypeReasons</key>
|
||||
<array>
|
||||
<string>C617.1</string>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>NSPrivacyAccessedAPIType</key>
|
||||
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
|
||||
<key>NSPrivacyAccessedAPITypeReasons</key>
|
||||
<array>
|
||||
<string>CA92.1</string>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>NSPrivacyAccessedAPIType</key>
|
||||
<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
|
||||
<key>NSPrivacyAccessedAPITypeReasons</key>
|
||||
<array>
|
||||
<string>35F9.1</string>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
<key>NSPrivacyCollectedDataTypes</key>
|
||||
<array/>
|
||||
<key>NSPrivacyTracking</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -151,6 +151,7 @@
|
||||
4EB0603A260E09D000F524C5 /* DarwinNotificationCenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DarwinNotificationCenter.swift; sourceTree = "<group>"; };
|
||||
4EB0603B260E09D000F524C5 /* SampleUploader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SampleUploader.swift; sourceTree = "<group>"; };
|
||||
4EC49B8625BED71300E76218 /* ReplayKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ReplayKit.framework; path = System/Library/Frameworks/ReplayKit.framework; sourceTree = SDKROOT; };
|
||||
6132EF172BDFF13200BBE14D /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = ../PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
|
||||
756FCE06C08D9B947653C98A /* Pods-JitsiMeet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JitsiMeet.debug.xcconfig"; path = "Target Support Files/Pods-JitsiMeet/Pods-JitsiMeet.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
B3B083EB1D4955FF0069CEE7 /* app.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = app.entitlements; sourceTree = "<group>"; };
|
||||
D6152FF9E9F7B0E86F70A21D /* libPods-JitsiMeet.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-JitsiMeet.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
@@ -293,6 +294,7 @@
|
||||
0BEA5C351F7B8F73000D0AB4 /* WatchKit extension */,
|
||||
4EB06025260E026600F524C5 /* JitsiMeetBroadcast Extension */,
|
||||
CDD71F5E1157E9F283DF92A8 /* Pods */,
|
||||
6132EF172BDFF13200BBE14D /* PrivacyInfo.xcprivacy */,
|
||||
);
|
||||
indentWidth = 2;
|
||||
sourceTree = "<group>";
|
||||
@@ -367,13 +369,12 @@
|
||||
13B07F8C1A680F5B00A75B9A /* Frameworks */,
|
||||
13B07F8E1A680F5B00A75B9A /* Resources */,
|
||||
0B26BE701EC5BC3C00EEFB41 /* Embed Frameworks */,
|
||||
0BB7DA181EC9E695007AAE98 /* Adjust ATS */,
|
||||
DEF4813D224925A2002AD03A /* Copy Google Plist file */,
|
||||
DE11877A21EE09640078D059 /* Setup Google reverse URL handler */,
|
||||
DE4F6D6E22005C0400DE699E /* Setup Dropbox */,
|
||||
4E81688528A408E600F8FA9E /* Update App Entitlements */,
|
||||
0BEA5C491F7B8F73000D0AB4 /* Embed Watch Content */,
|
||||
4EC49B9025BED71300E76218 /* Embed App Extensions */,
|
||||
4E81688528A408E600F8FA9E /* Update App Entitlements */,
|
||||
DE11877A21EE09640078D059 /* Setup Google reverse URL handler */,
|
||||
0BB7DA181EC9E695007AAE98 /* Adjust ATS */,
|
||||
DE4F6D6E22005C0400DE699E /* Setup Dropbox */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -411,7 +412,7 @@
|
||||
attributes = {
|
||||
LastSwiftUpdateCheck = 1240;
|
||||
LastUpgradeCheck = 1020;
|
||||
ORGANIZATIONNAME = Facebook;
|
||||
ORGANIZATIONNAME = Jitsi;
|
||||
TargetAttributes = {
|
||||
0BEA5C241F7B8F73000D0AB4 = {
|
||||
CreatedOnToolsVersion = 9.0;
|
||||
@@ -499,10 +500,12 @@
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
0BB7DA181EC9E695007AAE98 /* Adjust ATS */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
alwaysOutOfDate = 1;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH",
|
||||
);
|
||||
name = "Adjust ATS";
|
||||
outputPaths = (
|
||||
@@ -513,6 +516,7 @@
|
||||
};
|
||||
0BBA83C41EC9F7600075A103 /* Run React packager */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
alwaysOutOfDate = 1;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
@@ -527,12 +531,14 @@
|
||||
};
|
||||
4E81688528A408E600F8FA9E /* Update App Entitlements */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
alwaysOutOfDate = 1;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"$PROJECT_DIR/app.entitlements",
|
||||
);
|
||||
name = "Update App Entitlements";
|
||||
outputFileListPaths = (
|
||||
@@ -567,12 +573,14 @@
|
||||
};
|
||||
DE11877A21EE09640078D059 /* Setup Google reverse URL handler */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
alwaysOutOfDate = 1;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH",
|
||||
);
|
||||
name = "Setup Google reverse URL handler";
|
||||
outputFileListPaths = (
|
||||
@@ -581,16 +589,18 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "INFO_PLIST=\"$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH\"\nGOOGLE_PLIST=\"$PROJECT_DIR/GoogleService-Info.plist\"\n\nif [[ -f $GOOGLE_PLIST ]]; then\n REVERSED_CLIENT_ID=$(/usr/libexec/PlistBuddy -c \"Print :REVERSED_CLIENT_ID:\" $GOOGLE_PLIST)\n /usr/libexec/PlistBuddy -c \"Set :CFBundleURLTypes:1:CFBundleURLSchemes:0 $REVERSED_CLIENT_ID\" $INFO_PLIST\nfi\n";
|
||||
shellScript = "GOOGLE_PLIST_NAME=\"GoogleService-Info.plist\"\nGOOGLE_PLIST=\"$PROJECT_DIR/$GOOGLE_PLIST_NAME\"\nBUILD_APP_DIR=\"$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app\"\nINFO_PLIST=\"$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH\"\n\nif [[ -f $GOOGLE_PLIST ]]; then\n cp $GOOGLE_PLIST \"$BUILD_APP_DIR/$GOOGLE_PLIST_NAME\"\n REVERSED_CLIENT_ID=$(/usr/libexec/PlistBuddy -c \"Print :REVERSED_CLIENT_ID:\" $GOOGLE_PLIST)\n /usr/libexec/PlistBuddy -c \"Set :CFBundleURLTypes:1:CFBundleURLSchemes:0 $REVERSED_CLIENT_ID\" $INFO_PLIST\nfi\n";
|
||||
};
|
||||
DE4F6D6E22005C0400DE699E /* Setup Dropbox */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
alwaysOutOfDate = 1;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH",
|
||||
);
|
||||
name = "Setup Dropbox";
|
||||
outputFileListPaths = (
|
||||
@@ -601,24 +611,6 @@
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "INFO_PLIST=\"$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH\"\nDROPBOX_KEY_FILE=\"$PROJECT_DIR/dropbox.key\"\n\nif [[ -f $DROPBOX_KEY_FILE ]]; then\n /usr/libexec/PlistBuddy -c \"Delete :LSApplicationQueriesSchemes\" $INFO_PLIST\n /usr/libexec/PlistBuddy -c \"Add :LSApplicationQueriesSchemes array\" $INFO_PLIST\n /usr/libexec/PlistBuddy -c \"Add :LSApplicationQueriesSchemes:0 string 'dbapi-2'\" $INFO_PLIST\n /usr/libexec/PlistBuddy -c \"Add :LSApplicationQueriesSchemes:1 string 'dbapi-8-emm'\" $INFO_PLIST\n\n DROPBOX_KEY=$(head -n 1 $DROPBOX_KEY_FILE)\n /usr/libexec/PlistBuddy -c \"Add :CFBundleURLTypes:2:CFBundleURLName string dropbox\" $INFO_PLIST\n /usr/libexec/PlistBuddy -c \"Add :CFBundleURLTypes:2:CFBundleURLSchemes array\" $INFO_PLIST\n /usr/libexec/PlistBuddy -c \"Add :CFBundleURLTypes:2:CFBundleURLSchemes:0 string $DROPBOX_KEY\" $INFO_PLIST\nfi\n";
|
||||
};
|
||||
DEF4813D224925A2002AD03A /* Copy Google Plist file */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Copy Google Plist file";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "GOOGLE_PLIST_NAME=\"GoogleService-Info.plist\"\nGOOGLE_PLIST=\"$PROJECT_DIR/$GOOGLE_PLIST_NAME\"\nBUILD_APP_DIR=\"$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app\"\n\nif [[ -f $GOOGLE_PLIST ]]; then\n cp $GOOGLE_PLIST \"$BUILD_APP_DIR/$GOOGLE_PLIST_NAME\"\nfi\n";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
@@ -1029,10 +1021,7 @@
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
OTHER_CFLAGS = "$(inherited)";
|
||||
OTHER_CPLUSPLUSFLAGS = "$(inherited)";
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
" ",
|
||||
);
|
||||
OTHER_LDFLAGS = "$(inherited)";
|
||||
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
@@ -1092,10 +1081,7 @@
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
OTHER_CFLAGS = "$(inherited)";
|
||||
OTHER_CPLUSPLUSFLAGS = "$(inherited)";
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
" ",
|
||||
);
|
||||
OTHER_LDFLAGS = "$(inherited)";
|
||||
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
|
||||
@@ -88,6 +88,10 @@
|
||||
[self _onJitsiMeetViewDelegateEvent:@"CONFERENCE_WILL_JOIN" withData:data];
|
||||
}
|
||||
|
||||
// - (void)customOverflowMenuButtonPressed:(NSDictionary *)data {
|
||||
// [self _onJitsiMeetViewDelegateEvent:@"CUSTOM_OVERFLOW_MENU_BUTTON_PRESSED" withData:data];
|
||||
// }
|
||||
|
||||
#if 0
|
||||
- (void)enterPictureInPicture:(NSDictionary *)data {
|
||||
[self _onJitsiMeetViewDelegateEvent:@"ENTER_PICTURE_IN_PICTURE" withData:data];
|
||||
@@ -98,6 +102,10 @@
|
||||
[self _onJitsiMeetViewDelegateEvent:@"READY_TO_CLOSE" withData:data];
|
||||
}
|
||||
|
||||
// - (void)transcriptionChunkReceived:(NSDictionary *)data {
|
||||
// [self _onJitsiMeetViewDelegateEvent:@"TRANSCRIPTION_CHUNK_RECEIVED" withData:data];
|
||||
// }
|
||||
|
||||
- (void)participantJoined:(NSDictionary *)data {
|
||||
NSLog(@"%@%@", @"Participant joined: ", data[@"participantId"]);
|
||||
}
|
||||
@@ -130,6 +138,7 @@
|
||||
NSLog(@"%@%@", @"Video muted changed: ", data[@"muted"]);
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - Helpers
|
||||
|
||||
- (void)terminate {
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>compileBitcode</key>
|
||||
<false/>
|
||||
<key>method</key>
|
||||
<string>development</string>
|
||||
<key>signingStyle</key>
|
||||
<string>automatic</string>
|
||||
<key>stripSwiftSymbols</key>
|
||||
<true/>
|
||||
<key>teamID</key>
|
||||
<string>YOUR_TEAM_ID</string>
|
||||
<key>thinning</key>
|
||||
<string><none></string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,103 +0,0 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Mandatory arguments with no default values provided:
|
||||
# PR_REPO_SLUG - the Github name of the repo to be merged into the origin/master
|
||||
# PR_BRANCH - the branch to be merged, if set to "master" no merge will happen
|
||||
# IPA_DEPLOY_LOCATION - the location understandable by the "scp" command
|
||||
# executed at the end of the script to deploy the output .ipa file
|
||||
# LIB_JITSI_MEET_PKG (optional) - the npm package for lib-jitsi-meet which will
|
||||
# be put in place of the current version in the package.json file.
|
||||
#
|
||||
# Other than that the script requires the following env variables to be set:
|
||||
#
|
||||
# DEPLOY_SSH_CERT_URL - the SSH private key used by the 'scp' command to deploy
|
||||
# the .ipa. It is expected to be encrypted with the $ENCRYPTION_PASSWORD.
|
||||
# ENCRYPTION_PASSWORD - the password used to decrypt certificate/key files used
|
||||
# in the script.
|
||||
# IOS_TEAM_ID - the team ID inserted into build-ipa-.plist.template file in
|
||||
# place of "YOUR_TEAM_ID".
|
||||
|
||||
function echoAndExit1() {
|
||||
echo $1
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ -z $PR_REPO_SLUG ]; then
|
||||
echoAndExit1 "No PR_REPO_SLUG defined"
|
||||
fi
|
||||
if [ -z $PR_BRANCH ]; then
|
||||
echoAndExit1 "No PR_BRANCH defined"
|
||||
fi
|
||||
if [ -z $IPA_DEPLOY_LOCATION ]; then
|
||||
echoAndExit1 "No IPA_DEPLOY_LOCATION defined"
|
||||
fi
|
||||
|
||||
echo "PR_REPO_SLUG=${PR_REPO_SLUG} PR_BRANCH=${PR_BRANCH}"
|
||||
|
||||
# do the merge and git log
|
||||
|
||||
if [ $PR_BRANCH != "master" ]; then
|
||||
echo "Will merge ${PR_REPO_SLUG}/${PR_BRANCH} into master"
|
||||
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
|
||||
git fetch origin master
|
||||
git checkout master
|
||||
git pull https://github.com/${PR_REPO_SLUG}.git $PR_BRANCH --no-edit
|
||||
fi
|
||||
|
||||
# Link this lib-jitsi-meet checkout in jitsi-meet through the package.json
|
||||
if [ ! -z ${LIB_JITSI_MEET_PKG} ];
|
||||
then
|
||||
echo "Adjusting lib-jitsi-meet package in package.json to ${LIB_JITSI_MEET_PKG}"
|
||||
# escape for the sed
|
||||
LIB_JITSI_MEET_PKG=$(echo $LIB_JITSI_MEET_PKG | sed -e 's/\\/\\\\/g; s/\//\\\//g; s/&/\\\&/g')
|
||||
sed -i.bak -e "s/\"lib-jitsi-meet.*/\"lib-jitsi-meet\"\: \"${LIB_JITSI_MEET_PKG}\",/g" package.json
|
||||
echo "Package.json lib-jitsi-meet line:"
|
||||
grep lib-jitsi-meet package.json
|
||||
else
|
||||
echo "LIB_JITSI_MEET_PKG var not set - will not modify the package.json"
|
||||
fi
|
||||
|
||||
git log -20 --graph --pretty=format':%C(yellow)%h%Cblue%d%Creset %s %C(white) %an, %ar%Creset'
|
||||
|
||||
# certificates
|
||||
|
||||
CERT_DIR="ios/ci/certs"
|
||||
|
||||
mkdir -p $CERT_DIR
|
||||
|
||||
curl -L -o ${CERT_DIR}/id_rsa.enc ${DEPLOY_SSH_CERT_URL}
|
||||
openssl aes-256-cbc -k "$ENCRYPTION_PASSWORD" -in ${CERT_DIR}/id_rsa.enc -d -a -out ${CERT_DIR}/id_rsa
|
||||
chmod 0600 ${CERT_DIR}/id_rsa
|
||||
ssh-add ${CERT_DIR}/id_rsa
|
||||
|
||||
npm install
|
||||
|
||||
# Ever since the Apple Watch app has been added the bitcode for WebRTC needs to be downloaded in order to build successfully
|
||||
./node_modules/react-native-webrtc/tools/downloadBitcode.sh
|
||||
|
||||
cd ios
|
||||
pod install --repo-update --no-ansi
|
||||
cd ..
|
||||
|
||||
mkdir -p /tmp/jitsi-meet/
|
||||
|
||||
xcodebuild archive -quiet -workspace ios/jitsi-meet.xcworkspace -scheme jitsi-meet -configuration Release -archivePath /tmp/jitsi-meet/jitsi-meet.xcarchive
|
||||
|
||||
sed -e "s/YOUR_TEAM_ID/${IOS_TEAM_ID}/g" ios/ci/build-ipa.plist.template > ios/ci/build-ipa.plist
|
||||
|
||||
IPA_EXPORT_DIR=/tmp/jitsi-meet/jitsi-meet-ipa
|
||||
|
||||
xcodebuild -quiet -exportArchive -archivePath /tmp/jitsi-meet/jitsi-meet.xcarchive -exportPath $IPA_EXPORT_DIR -exportOptionsPlist ios/ci/build-ipa.plist
|
||||
|
||||
echo "Will try deploy the .ipa to: ${IPA_DEPLOY_LOCATION}"
|
||||
|
||||
if [ ! -z ${SCP_PROXY_HOST} ];
|
||||
then
|
||||
scp -o ProxyCommand="ssh -t -A -l %r ${SCP_PROXY_HOST} -o \"StrictHostKeyChecking no\" -o \"BatchMode yes\" -W %h:%p" -o StrictHostKeyChecking=no -o LogLevel=DEBUG "${IPA_EXPORT_DIR}/jitsi-meet.ipa" "${IPA_DEPLOY_LOCATION}"
|
||||
else
|
||||
scp -o StrictHostKeyChecking=no -o LogLevel=DEBUG "${IPA_EXPORT_DIR}/jitsi-meet.ipa" "${IPA_DEPLOY_LOCATION}"
|
||||
fi
|
||||
|
||||
rm -r /tmp/jitsi-meet/
|
||||
rm -r $CERT_DIR
|
||||
@@ -1,100 +0,0 @@
|
||||
# The script is based on tutorial written by Antonis Tsakiridis published at:
|
||||
# https://medium.com/@atsakiridis/continuous-deployment-for-ios-using-travis-ci-55dcea342d9
|
||||
#
|
||||
# APPLE_CERT_URL - the URL pointing to Apple certificate (set to
|
||||
# http://developer.apple.com/certificationauthority/AppleWWDRCA.cer by default)
|
||||
# DEPLOY_SSH_CERT_URL - the SSH private key used by the 'scp' command to deploy
|
||||
# the .ipa. It is expected to be encrypted with the $ENCRYPTION_PASSWORD.
|
||||
# ENCRYPTION_PASSWORD - the password used to decrypt certificate/key files used
|
||||
# in the script.
|
||||
# IOS_DEV_CERT_KEY_URL - URL pointing to provisioning profile certificate key
|
||||
# file (development-key.p12.enc from the tutorial) encrypted with the
|
||||
# $ENCRYPTION_PASSWORD.
|
||||
# IOS_DEV_CERT_URL - URL pointing to provisioning profile certificate file
|
||||
# (development-cert.cer.enc from the tutorial) encrypted with the
|
||||
# $ENCRYPTION_PASSWORD.
|
||||
# IOS_DEV_PROV_PROFILE_URL - URL pointing to provisioning profile file
|
||||
# (profile-development-olympus.mobileprovision.enc from the tutorial) encrypted
|
||||
# IOS_DEV_WATCH_PROV_PROFILE_URL - URL pointing to watch app provisioning profile file(encrypted).
|
||||
# with the $ENCRYPTION_PASSWORD.
|
||||
# IOS_SIGNING_CERT_PASSWORD - the password to the provisioning profile
|
||||
# certificate key (used to open development-key.p12 from the tutorial).
|
||||
|
||||
function echoAndExit1() {
|
||||
echo $1
|
||||
exit 1
|
||||
}
|
||||
|
||||
CERT_DIR=$1
|
||||
|
||||
if [ -z $CERT_DIR ]; then
|
||||
echoAndExit1 "First argument must be certificates directory"
|
||||
fi
|
||||
|
||||
if [ -z $APPLE_CERT_URL ]; then
|
||||
APPLE_CERT_URL="http://developer.apple.com/certificationauthority/AppleWWDRCA.cer"
|
||||
fi
|
||||
|
||||
if [ -z $DEPLOY_SSH_CERT_URL ]; then
|
||||
echoAndExit1 "DEPLOY_SSH_CERT_URL env var is not defined"
|
||||
fi
|
||||
|
||||
if [ -z $ENCRYPTION_PASSWORD ]; then
|
||||
echoAndExit1 "ENCRYPTION_PASSWORD env var is not defined"
|
||||
fi
|
||||
|
||||
if [ -z $IOS_DEV_CERT_KEY_URL ]; then
|
||||
echoAndExit1 "IOS_DEV_CERT_KEY_URL env var is not defined"
|
||||
fi
|
||||
|
||||
if [ -z $IOS_DEV_CERT_URL ]; then
|
||||
echoAndExit1 "IOS_DEV_CERT_URL env var is not defined"
|
||||
fi
|
||||
|
||||
if [ -z $IOS_DEV_PROV_PROFILE_URL ]; then
|
||||
echoAndExit1 "IOS_DEV_PROV_PROFILE_URL env var is not defined"
|
||||
fi
|
||||
|
||||
if [ -z $IOS_DEV_WATCH_PROV_PROFILE_URL ]; then
|
||||
echoAndExit1 "IOS_DEV_WATCH_PROV_PROFILE_URL env var is not defined"
|
||||
fi
|
||||
|
||||
if [ -z $IOS_SIGNING_CERT_PASSWORD ]; then
|
||||
echoAndExit1 "IOS_SIGNING_CERT_PASSWORD env var is not defined"
|
||||
fi
|
||||
|
||||
# certificates
|
||||
|
||||
curl -L -o ${CERT_DIR}/AppleWWDRCA.cer 'http://developer.apple.com/certificationauthority/AppleWWDRCA.cer'
|
||||
curl -L -o ${CERT_DIR}/dev-cert.cer.enc ${IOS_DEV_CERT_URL}
|
||||
curl -L -o ${CERT_DIR}/dev-key.p12.enc ${IOS_DEV_CERT_KEY_URL}
|
||||
curl -L -o ${CERT_DIR}/dev-profile.mobileprovision.enc ${IOS_DEV_PROV_PROFILE_URL}
|
||||
curl -L -o ${CERT_DIR}/dev-watch-profile.mobileprovision.enc ${IOS_DEV_WATCH_PROV_PROFILE_URL}
|
||||
|
||||
|
||||
openssl aes-256-cbc -k "$ENCRYPTION_PASSWORD" -in ${CERT_DIR}/dev-cert.cer.enc -d -a -out ${CERT_DIR}/dev-cert.cer
|
||||
openssl aes-256-cbc -k "$ENCRYPTION_PASSWORD" -in ${CERT_DIR}/dev-key.p12.enc -d -a -out ${CERT_DIR}/dev-key.p12
|
||||
openssl aes-256-cbc -k "$ENCRYPTION_PASSWORD" -in ${CERT_DIR}/dev-profile.mobileprovision.enc -d -a -out ${CERT_DIR}/dev-profile.mobileprovision
|
||||
openssl aes-256-cbc -k "$ENCRYPTION_PASSWORD" -in ${CERT_DIR}/dev-watch-profile.mobileprovision.enc -d -a -out ${CERT_DIR}/dev-watch-profile.mobileprovision
|
||||
|
||||
security create-keychain -p $ENCRYPTION_PASSWORD ios-build.keychain
|
||||
security default-keychain -s ios-build.keychain
|
||||
security unlock-keychain -p $ENCRYPTION_PASSWORD ios-build.keychain
|
||||
security set-keychain-settings -t 3600 -l ~/Library/Keychains/ios-build.keychain
|
||||
|
||||
echo "importing Apple cert"
|
||||
security import ${CERT_DIR}/AppleWWDRCA.cer -k ios-build.keychain -A
|
||||
echo "importing dev-cert.cer"
|
||||
security import ${CERT_DIR}/dev-cert.cer -k ios-build.keychain -A
|
||||
echo "importing dev-key.p12"
|
||||
security import ${CERT_DIR}/dev-key.p12 -k ios-build.keychain -P $IOS_SIGNING_CERT_PASSWORD -A
|
||||
|
||||
echo "will set-key-partition-list"
|
||||
# Fix for OS X Sierra that hangs in the codesign step
|
||||
security set-key-partition-list -S apple-tool:,apple: -s -k $ENCRYPTION_PASSWORD ios-build.keychain > /dev/null
|
||||
echo "done set-key-partition-list"
|
||||
|
||||
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
|
||||
|
||||
cp "${CERT_DIR}/dev-profile.mobileprovision" ~/Library/MobileDevice/Provisioning\ Profiles/
|
||||
cp "${CERT_DIR}/dev-watch-profile.mobileprovision" ~/Library/MobileDevice/Provisioning\ Profiles/
|
||||
@@ -145,6 +145,7 @@
|
||||
4ED4FFF12721B9B90074E620 /* JitsiAudioSession.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JitsiAudioSession.h; sourceTree = "<group>"; };
|
||||
4ED4FFF22721B9B90074E620 /* JitsiAudioSession.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = JitsiAudioSession.m; sourceTree = "<group>"; };
|
||||
4ED4FFF52721BAE10074E620 /* JitsiAudioSession+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "JitsiAudioSession+Private.h"; sourceTree = "<group>"; };
|
||||
6132EF172BDFF13200BBE14D /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = ../PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
|
||||
86389F55993FAAF6AEB3FA3E /* Pods-JitsiMeetSDKLite.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JitsiMeetSDKLite.release.xcconfig"; path = "../Pods/Target Support Files/Pods-JitsiMeetSDKLite/Pods-JitsiMeetSDKLite.release.xcconfig"; sourceTree = "<group>"; };
|
||||
891FE43DAD30BC8976683100 /* Pods-JitsiMeetSDK.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JitsiMeetSDK.release.xcconfig"; path = "../Pods/Target Support Files/Pods-JitsiMeetSDK/Pods-JitsiMeetSDK.release.xcconfig"; sourceTree = "<group>"; };
|
||||
8F48C340DE0D91D1012976C5 /* Pods-JitsiMeetSDKLite.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JitsiMeetSDKLite.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-JitsiMeetSDKLite/Pods-JitsiMeetSDKLite.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
@@ -230,6 +231,7 @@
|
||||
0BD906E61EC0C00300C8C18E /* Products */,
|
||||
0BCA49681EC4BBE500B793EE /* Resources */,
|
||||
0BD906E71EC0C00300C8C18E /* src */,
|
||||
6132EF172BDFF13200BBE14D /* PrivacyInfo.xcprivacy */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
@@ -779,10 +781,7 @@
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
OTHER_CFLAGS = "$(inherited)";
|
||||
OTHER_CPLUSPLUSFLAGS = "$(inherited)";
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
" ",
|
||||
);
|
||||
OTHER_LDFLAGS = "$(inherited)";
|
||||
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
@@ -845,10 +844,7 @@
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
OTHER_CFLAGS = "$(inherited)";
|
||||
OTHER_CPLUSPLUSFLAGS = "$(inherited)";
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
" ",
|
||||
);
|
||||
OTHER_LDFLAGS = "$(inherited)";
|
||||
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
@property (nonatomic, nullable, weak) id<JitsiMeetViewDelegate> delegate;
|
||||
|
||||
/**
|
||||
* Joins the conference specified by the given options. The gievn options will
|
||||
* Joins the conference specified by the given options. The given options will
|
||||
* be merged with the defaultConferenceOptions (if set) in JitsiMeet. If there
|
||||
* is an already active conference it will be automatically left prior to
|
||||
* joining the new one.
|
||||
|
||||
@@ -116,4 +116,18 @@
|
||||
*/
|
||||
- (void)readyToClose:(NSDictionary *)data;
|
||||
|
||||
/**
|
||||
* Called when the transcription chunk was received.
|
||||
*
|
||||
* The `data` dictionary contains a `messageID`, `language`, `participant` key.
|
||||
*/
|
||||
- (void)transcriptionChunkReceived:(NSDictionary *)data;
|
||||
|
||||
/**
|
||||
* Called when the custom overflow menu button is pressed.
|
||||
*
|
||||
* The `data` dictionary contains a `id`, `text` key.
|
||||
*/
|
||||
- (void)customOverflowMenuButtonPressed:(NSDictionary *)data;
|
||||
|
||||
@end
|
||||
|
||||
@@ -432,6 +432,11 @@
|
||||
},
|
||||
"passwordDigitsOnly": "",
|
||||
"passwordSetRemotely": "",
|
||||
"polls": {
|
||||
"errors": {
|
||||
"notUniqueOption": "Opsies moet uniek wees"
|
||||
}
|
||||
},
|
||||
"poweredby": "aangedryf deur",
|
||||
"presenceStatus": {
|
||||
"busy": "Besig",
|
||||
|
||||
@@ -765,6 +765,9 @@
|
||||
"removeOption": "إزالة خيار",
|
||||
"send": "أرسل"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "يجب أن تكون الخيارات فريدة"
|
||||
},
|
||||
"notification": {
|
||||
"description": "افتح علامة تبويب الاقتراع للتصويت",
|
||||
"title": "تمت إضافة اقتراع جديد إلى هذا المُلتقى"
|
||||
|
||||
@@ -478,6 +478,11 @@
|
||||
},
|
||||
"passwordDigitsOnly": "Да {{number}} лічбаў",
|
||||
"passwordSetRemotely": "устаноўлены іншым удзельнікам",
|
||||
"polls": {
|
||||
"errors": {
|
||||
"notUniqueOption": "Варыянты павінны быць унікальнымі"
|
||||
}
|
||||
},
|
||||
"poweredby": "працуе на",
|
||||
"presenceStatus": {
|
||||
"busy": "Заняты",
|
||||
|
||||
@@ -527,6 +527,11 @@
|
||||
},
|
||||
"passwordDigitsOnly": "До {{number}} цифри",
|
||||
"passwordSetRemotely": "зададена от друг участник",
|
||||
"polls": {
|
||||
"errors": {
|
||||
"notUniqueOption": "Опциите трябва да са уникални"
|
||||
}
|
||||
},
|
||||
"poweredby": "с подкрепата на",
|
||||
"presenceStatus": {
|
||||
"busy": "Зает",
|
||||
|
||||
@@ -772,6 +772,9 @@
|
||||
"removeOption": "Elimina l'opció",
|
||||
"send": "Envia"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Les opcions han de ser úniques"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Obre la pestanya de les enquestes per a votar",
|
||||
"title": "S'ha afegit una nova enquesta en aquesta reunió"
|
||||
|
||||
@@ -747,6 +747,9 @@
|
||||
"removeOption": "",
|
||||
"send": ""
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Možnosti musí být jedinečné"
|
||||
},
|
||||
"notification": {
|
||||
"description": "",
|
||||
"title": ""
|
||||
|
||||
@@ -464,6 +464,11 @@
|
||||
},
|
||||
"passwordDigitsOnly": "Op til {{number}} tal",
|
||||
"passwordSetRemotely": "Sat af et andet medlem",
|
||||
"polls": {
|
||||
"errors": {
|
||||
"notUniqueOption": "Valgmulighederne skal være unikke"
|
||||
}
|
||||
},
|
||||
"poweredby": "Powered by",
|
||||
"presenceStatus": {
|
||||
"busy": "Optaget",
|
||||
|
||||
@@ -128,6 +128,7 @@
|
||||
"privateNotice": "Private Nachricht an {{recipient}}",
|
||||
"sendButton": "Senden",
|
||||
"smileysPanel": "Emoji-Auswahl",
|
||||
"systemDisplayName": "System",
|
||||
"tabs": {
|
||||
"chat": "Chatten",
|
||||
"polls": "Umfragen"
|
||||
@@ -263,6 +264,7 @@
|
||||
"Share": "Teilen",
|
||||
"Submit": "OK",
|
||||
"WaitForHostMsg": "Die Konferenz wurde noch nicht gestartet. Falls Sie die Konferenz leiten, authentifizieren Sie sich bitte. Warten Sie andernfalls, bis die Konferenz gestartet wird.",
|
||||
"WaitForHostNoAuthMsg": "Die Konferenz wurde noch nicht gestartet. Bitte warten Sie, bis die Konferenz gestartet wird.",
|
||||
"WaitingForHostButton": "Auf Moderation warten",
|
||||
"WaitingForHostTitle": "Warten auf den Beginn der Konferenz …",
|
||||
"Yes": "Ja",
|
||||
@@ -305,6 +307,8 @@
|
||||
"contactSupport": "Support kontaktieren",
|
||||
"copied": "Kopiert",
|
||||
"copy": "Kopieren",
|
||||
"demoteParticipantDialog": "Sind Sie sicher, dass Sie diese Person zu den Gästen verschieben möchten?",
|
||||
"demoteParticipantTitle": "Zu Gästen verschieben",
|
||||
"dismiss": "OK",
|
||||
"displayNameRequired": "Hallo! Wie ist Ihr Name?",
|
||||
"done": "Fertig",
|
||||
@@ -316,6 +320,7 @@
|
||||
"embedMeeting": "Besprechung einbetten",
|
||||
"enterDisplayName": "Bitte geben Sie hier Ihren Namen ein",
|
||||
"error": "Fehler",
|
||||
"errorRoomCreationRestriction": "Sie haben versucht, zu schnell beizutreten, bitte versuchen Sie es gleich noch einmal.",
|
||||
"gracefulShutdown": "Der Dienst steht momentan wegen Wartungsarbeiten nicht zur Verfügung. Bitte versuchen Sie es später noch einmal.",
|
||||
"grantModeratorDialog": "Möchten Sie wirklich Moderationsrechte an diese Person vergeben?",
|
||||
"grantModeratorTitle": "Moderationsrechte vergeben",
|
||||
@@ -560,6 +565,7 @@
|
||||
"noNumbers": "Keine Telefonnummern verfügbar.",
|
||||
"noPassword": "Kein Passwort benötigt",
|
||||
"noRoom": "Keine Konferenz für die Einwahlinformationen angegeben.",
|
||||
"noWhiteboard": "Whiteboard konnte nicht geladen werden.",
|
||||
"numbers": "Einwahlnummern",
|
||||
"password": "$t(lockRoomPasswordUppercase):",
|
||||
"reachedLimit": "Sie haben die Grenzen Ihres Tarifs erreicht.",
|
||||
@@ -567,7 +573,8 @@
|
||||
"sipAudioOnly": "SIP-Adresse (nur Ton)",
|
||||
"title": "Teilen",
|
||||
"tooltip": "Freigabe-Link und Einwahlinformationen für dieses Meeting",
|
||||
"upgradeOptions": "Bitte prüfen Sie Ihre Upgrade-Optionen auf"
|
||||
"upgradeOptions": "Bitte prüfen Sie Ihre Upgrade-Optionen auf",
|
||||
"whiteboardError": "Whiteboard konnte nicht geladen werden. Bitte versuchen Sie es später erneut."
|
||||
},
|
||||
"inlineDialogFailure": {
|
||||
"msg": "Es ist ein Fehler aufgetreten.",
|
||||
@@ -731,6 +738,8 @@
|
||||
"connectedTwoMembers": "{{first}} und {{second}} nehmen am Meeting teil",
|
||||
"dataChannelClosed": "Schlechte Videoqualität",
|
||||
"dataChannelClosedDescription": "Die Steuerungsverbindung (Bridge Channel) wurde unterbrochen, daher ist die Videoqulität auf die schlechteste Stufe limitiert.",
|
||||
"dataChannelClosedDescriptionWithAudio": "Die Steuerungsverbindung (Bridge Channel) wurde unterbrochen, daher können Video- und Tonprobleme auftreten.",
|
||||
"dataChannelClosedWithAudio": "Ton- und Videoqualität können beeinträchtigt sein",
|
||||
"disabledIframe": "Die Einbettung ist nur für Demo-Zwecke vorgesehen. Diese Konferenz wird in {{timeout}} Minuten beendet.",
|
||||
"disabledIframeSecondary": "Die Einbettung von {{domain}} ist nur für Demo-Zwecke vorgesehen. Diese Konferenz wird in {{timeout}} Minuten beendet. Bitte nutzen Sie <a href='{{jaasDomain}}' rel='noopener noreferrer' target='_blank'>Jitsi as a Service</a> für produktive Zwecke!",
|
||||
"disconnected": "getrennt",
|
||||
@@ -802,12 +811,16 @@
|
||||
"startSilentTitle": "Sie sind ohne Audioausgabe beigetreten!",
|
||||
"suboptimalBrowserWarning": "Tut uns leid, aber die Konferenz wird mit {{appName}} kein großartiges Erlebnis. Wir versuchen immer die Situation zu verbessern, bis dahin empfehlen wir aber die Verwendung einer der <a href=\"{{recommendedBrowserPageLink}}\" target=\"_blank\">vollständig unterstützen Browser</a>.",
|
||||
"suboptimalExperienceTitle": "Browserwarnung",
|
||||
"suggestRecordingAction": "Starten",
|
||||
"suggestRecordingDescription": "Möchten Sie eine Aufzeichnung starten?",
|
||||
"suggestRecordingTitle": "Konferenz aufzeichnen",
|
||||
"unmute": "Stummschaltung aufheben",
|
||||
"videoMutedRemotelyDescription": "Sie können sie jederzeit wieder einschalten.",
|
||||
"videoMutedRemotelyTitle": "Ihre Kamera wurde von {{participantDisplayName}} ausgeschaltet!",
|
||||
"videoUnmuteBlockedDescription": "Die Kamera und Bildschirmfreigabe kann aus Überlastungsschutzgründen temporär nicht eingeschaltet werden.",
|
||||
"videoUnmuteBlockedTitle": "Kamera und Bildschirmfreigabe kann nicht aktiviert werden!",
|
||||
"viewLobby": "Lobby ansehen",
|
||||
"viewVisitors": "Gäste anzeigen",
|
||||
"waitingParticipants": "{{waitingParticipants}} Personen",
|
||||
"whiteboardLimitDescription": "Bitte speichern Sie Ihre Inhalte, da das Nutzungslimit bald erreicht wird und dann Ihr Whiteboard geschlossen wird.",
|
||||
"whiteboardLimitTitle": "Whiteboard-Nutzung"
|
||||
@@ -867,6 +880,9 @@
|
||||
"removeOption": "Antwort entfernen",
|
||||
"send": "Erstellen"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Optionen müssen einzigartig sein"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Öffnen Sie das Umfragen-Tab um abzustimmen",
|
||||
"title": "Dieser Konferenz wurde eine Umfrage hinzugefügt"
|
||||
@@ -934,6 +950,7 @@
|
||||
"or": "oder",
|
||||
"premeeting": "Vorschau",
|
||||
"proceedAnyway": "Trotzdem fortsetzen",
|
||||
"recordingWarning": "Diese Konferenz wird möglicherweise von anderen Personen aufgezeichnet",
|
||||
"screenSharingError": "Fehler bei Bildschirmfreigabe:",
|
||||
"showScreen": "Konferenzvorschau aktivieren",
|
||||
"startWithPhone": "Mit Telefonaudio starten",
|
||||
@@ -1000,7 +1017,6 @@
|
||||
"limitNotificationDescriptionNative": "Wegen hoher Nachfrage ist Ihre Aufnahme auf {{limit}} Min. begrenzt. Für unlimitierte Aufnahmen nutzen Sie bitte <3>{{app}}</3>.",
|
||||
"limitNotificationDescriptionWeb": "Wegen hoher Nachfrage ist Ihre Aufnahme auf {{limit}} Min. begrenzt. Für unlimitierte Aufnahmen nutzen Sie bitte <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
||||
"linkGenerated": "Link zur Aufzeichnung wurde generiert.",
|
||||
"live": "LIVE",
|
||||
"localRecordingNoNotificationWarning": "Die Aufzeichnung wird anderen Anwesenden nicht mitgeteilt. Sie müssen diese selbst darauf hinweisen, dass die Konferenz aufgezeichnet wird.",
|
||||
"localRecordingNoVideo": "Videos werden nicht aufgenommen",
|
||||
"localRecordingStartWarning": "Bitte beenden Sie die Aufzeichnung vor dem Verlassen der Konferenz, um die Aufzeichnung zu speichern.",
|
||||
@@ -1017,7 +1033,6 @@
|
||||
"onBy": "{{name}} startete die Aufnahme",
|
||||
"onlyRecordSelf": "Nur eigenes Kamerabild und Ton aufzeichnen",
|
||||
"pending": "Aufzeichnung des Meetings wird vorbereitet…",
|
||||
"rec": "AUFZ",
|
||||
"recordAudioAndVideo": "Kamera und Ton aufzeichnen",
|
||||
"recordTranscription": "Transkription aufzeichnen",
|
||||
"saveLocalRecording": "Aufzeichnung lokal abspeichern",
|
||||
@@ -1174,7 +1189,7 @@
|
||||
"audioOnly": "„Nur Audio“ ein-/ausschalten",
|
||||
"audioRoute": "Audiogerät auswählen",
|
||||
"boo": "Buhen",
|
||||
"breakoutRoom": "Breakout-Räume betreten/verlassen",
|
||||
"breakoutRooms": "Breakout-Räume",
|
||||
"callQuality": "Qualitätseinstellungen",
|
||||
"carmode": "Automodus",
|
||||
"cc": "Untertitel ein-/ausschalten",
|
||||
@@ -1357,13 +1372,9 @@
|
||||
},
|
||||
"transcribing": {
|
||||
"ccButtonTooltip": "Untertitel ein-/ausschalten",
|
||||
"error": "Die Aufzeichnung ist fehlgeschlagen. Bitte versuchen Sie es erneut.",
|
||||
"expandedLabel": "Transkribieren ist derzeit eingeschaltet",
|
||||
"failedToStart": "Transkribieren konnte nicht gestartet werden",
|
||||
"labelToolTip": "Das Meeting wird transkribiert",
|
||||
"off": "Transkribieren gestoppt",
|
||||
"on": "Transkribieren gestartet",
|
||||
"pending": "Transkribieren des Meetings wird vorbereitet…",
|
||||
"sourceLanguageDesc": "Aktuell ist die Sprache der Konferenz auf <b>{{sourceLanguage}}</b> eingestellt. <br/> Sie könne dies hier ",
|
||||
"sourceLanguageHere": "ändern",
|
||||
"start": "Anzeige der Untertitel starten",
|
||||
@@ -1419,6 +1430,7 @@
|
||||
},
|
||||
"videothumbnail": {
|
||||
"connectionInfo": "Verbindungsinformationen",
|
||||
"demote": "Zu Gästen verschieben",
|
||||
"domute": "Stummschalten",
|
||||
"domuteOthers": "Alle anderen stummschalten",
|
||||
"domuteVideo": "Kamera ausschalten",
|
||||
@@ -1473,7 +1485,12 @@
|
||||
"chatIndicator": "(Gast)",
|
||||
"labelTooltip": "Anzahl Gäste: {{count}}",
|
||||
"notification": {
|
||||
"demoteDescription": "Hierhin verschoben von {{actor}}, bitte melden Sie sich um teilzunehmen",
|
||||
"description": "Bitte melden Sie sich um teilzunehmen",
|
||||
"noMainParticipantsDescription": "Eine Person muss die Konferenz starten. Bitte versuchen Sie es gleich noch einmal.",
|
||||
"noMainParticipantsTitle": "Diese Konferenz wurde noch nicht gestartet.",
|
||||
"noVisitorLobby": "Sie können nicht teilnehmen, solange die Lobby für diese Konferenz aktiviert ist.",
|
||||
"notAllowedPromotion": "Eine Person muss Ihre Anfrage erst erlauben.",
|
||||
"title": "Sie sind Gast in der Konferenz"
|
||||
}
|
||||
},
|
||||
@@ -1533,6 +1550,7 @@
|
||||
"whiteboard": {
|
||||
"accessibilityLabel": {
|
||||
"heading": "Whiteboard"
|
||||
}
|
||||
},
|
||||
"screenTitle": "Whiteboard"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -775,6 +775,9 @@
|
||||
"removeOption": "wótegrono wulašowaś",
|
||||
"send": "wótpósłaś"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Opcije musy byś jedynsće"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Wótcyńśo kórtu wopšašowanjow, aby zgłosowali",
|
||||
"title": "Za tu konferencu jo nowe wopšašowanje pśigótowane"
|
||||
|
||||
@@ -792,6 +792,9 @@
|
||||
"removeOption": "Αφαιρέστε την επιλογή",
|
||||
"send": "Αποστολή"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Οι επιλογές πρέπει να είναι μοναδικές"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Ανοίξτε τη σελίδα ψηφοφοριών για να ψηφίσετε",
|
||||
"title": "Μια νέα ψηφοφορία προστέθηκε στη σύσκεψη"
|
||||
|
||||
@@ -864,6 +864,9 @@
|
||||
"removeOption": "Forigi opcion",
|
||||
"send": "Sendu"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Ebloj devas esti unikaj"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Malfermu la enketan langeton por voĉdoni",
|
||||
"title": "Oni aldonis novan enketon en la kunveno"
|
||||
|
||||
@@ -815,6 +815,9 @@
|
||||
"removeOption": "Eliminar la opción",
|
||||
"send": "Enviar"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Las opciones deben ser únicas"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Abre la pestaña de encuestas para votar",
|
||||
"title": "Se ha añadido una nueva encuesta a esta reunión"
|
||||
|
||||
@@ -691,6 +691,9 @@
|
||||
"removeOption": "Eliminar la opción",
|
||||
"send": "Enviar"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Las opciones deben ser únicas"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Abre la pestaña de encuestas para votar",
|
||||
"title": "Se ha añadido una nueva encuesta a esta reunión"
|
||||
|
||||
@@ -467,6 +467,11 @@
|
||||
},
|
||||
"passwordDigitsOnly": "Kuni {{number}} tähemärki",
|
||||
"passwordSetRemotely": "määratud teise kasutaja poolt",
|
||||
"polls": {
|
||||
"errors": {
|
||||
"notUniqueOption": "Valikud peavad olema ainulaadsed"
|
||||
}
|
||||
},
|
||||
"poweredby": "teieni toodud",
|
||||
"presenceStatus": {
|
||||
"busy": "Hõivatud",
|
||||
|
||||
@@ -588,6 +588,11 @@
|
||||
},
|
||||
"passwordDigitsOnly": "{{number}} digitu arte",
|
||||
"passwordSetRemotely": "beste parte-hartzaile batek ezarrita",
|
||||
"polls": {
|
||||
"errors": {
|
||||
"notUniqueOption": "Aukerak bakarrak izan behar dira"
|
||||
}
|
||||
},
|
||||
"poweredby": "garatzailea:",
|
||||
"prejoin": {
|
||||
"audioAndVideoError": "Errorea audio eta bideoan:",
|
||||
|
||||
@@ -823,6 +823,9 @@
|
||||
"removeOption": "حذف گزینه",
|
||||
"send": "ارسال"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "گزینه ها باید منحصر به فرد باشند"
|
||||
},
|
||||
"notification": {
|
||||
"description": "برای رأیدادن، زبانهٔ نظرسنجیها را باز کنید",
|
||||
"title": "نظرسنجی جدیدی به این جلسه اضافه شد"
|
||||
|
||||
@@ -438,6 +438,11 @@
|
||||
},
|
||||
"passwordDigitsOnly": "",
|
||||
"passwordSetRemotely": "",
|
||||
"polls": {
|
||||
"errors": {
|
||||
"notUniqueOption": "Vaihtoehtojen on oltava ainutlaatuisia"
|
||||
}
|
||||
},
|
||||
"poweredby": "tukija:",
|
||||
"presenceStatus": {
|
||||
"busy": "Varattu",
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
"mainRoom": "Salle principale",
|
||||
"notifications": {
|
||||
"joined": "Entrée en salle annexe \"{{name}}\"",
|
||||
"joinedMainRoom": "Retour à la salle principalem",
|
||||
"joinedMainRoom": "Retour à la salle principale",
|
||||
"joinedTitle": "Salles annexes"
|
||||
},
|
||||
"showParticipantList": "Afficher la liste des participants",
|
||||
@@ -82,7 +82,7 @@
|
||||
},
|
||||
"calendarSync": {
|
||||
"addMeetingURL": "Ajouter un lien de conférence",
|
||||
"confirmAddLink": "Voulez-vous ajouter un lien Jitsi à cet événement ?",
|
||||
"confirmAddLink": "Voulez-vous ajouter un lien Jitsi à cet événement?",
|
||||
"error": {
|
||||
"appConfiguration": "L'intégration du calendrier n'est pas correctement configurée.",
|
||||
"generic": "Une erreur s'est produite. Veuillez vérifier les paramètres de votre calendrier ou tenter de l'actualiser.",
|
||||
@@ -138,7 +138,7 @@
|
||||
},
|
||||
"chromeExtensionBanner": {
|
||||
"buttonText": "Installer l'extension Chrome",
|
||||
"buttonTextEdge": "Installer l’extension Edge",
|
||||
"buttonTextEdge": "Installer l'extension Edge",
|
||||
"close": "Fermer",
|
||||
"dontShowAgain": "Ne plus m'afficher ceci",
|
||||
"installExtensionText": "Installer l'extension pour l'intégration de Google Calendar et Office 365"
|
||||
@@ -424,7 +424,7 @@
|
||||
"shareAudioAltText": "Pour partager le contenu voulu, naviguer vers \"Onglet du Navigateur\", sélectionner le contenu, activer le bouton \"partager l’audio\" et enfin cliquer sur le bouton \"partager\"",
|
||||
"shareAudioTitle": "Comment partager le son",
|
||||
"shareAudioWarningD1": "vous devez cesser le partage d'écran avant de partager votre son.",
|
||||
"shareAudioWarningD2": "viys devez partager votre écran à nouveau et cocher l'ootion \"Partager l'audio\".",
|
||||
"shareAudioWarningD2": "vous devez partager votre écran à nouveau et cocher l'option \"Partager l'audio\".",
|
||||
"shareAudioWarningH1": "Si vous voulez partager uniquement de l'audio:",
|
||||
"shareAudioWarningTitle": "Vous devez cesser de partager l'écran avant de partager l'audio",
|
||||
"shareMediaWarningGenericH2": "Si vous voulez partager votre écran et l'audio",
|
||||
@@ -865,6 +865,9 @@
|
||||
"removeOption": "Supprimer l'option",
|
||||
"send": "Envoyer"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Les options doivent être uniques"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Ouvrez l'onglet des sondages pour voter",
|
||||
"title": "Un nouveau sondage a été ajouté à la réunion"
|
||||
@@ -1166,7 +1169,7 @@
|
||||
"toolbar": {
|
||||
"Settings": "Paramètres",
|
||||
"accessibilityLabel": {
|
||||
"Settings": "Afficher / Masquer le menu des paramètres",
|
||||
"Settings": "Ouvrir le menu des paramètres",
|
||||
"audioOnly": "Activer / Désactiver le mode voix uniquement",
|
||||
"audioRoute": "Sélectionner la source audio",
|
||||
"boo": "Hou",
|
||||
@@ -1212,7 +1215,7 @@
|
||||
"moreActions": "Activer / Désactiver le menu d'actions supplémentaires",
|
||||
"moreActionsMenu": "Menu d'actions supplémentaires",
|
||||
"moreOptions": "Voir plus d'options",
|
||||
"mute": "Activer / Désactiver l'audio",
|
||||
"mute": "Couper votre micro",
|
||||
"muteEveryone": "Couper le micro de tout le monde",
|
||||
"muteEveryoneElse": "Couper le micro de tous les autres",
|
||||
"muteEveryoneElsesVideoStream": "Couper la caméra de tous les autres",
|
||||
@@ -1248,11 +1251,11 @@
|
||||
"tileView": "Activer / Désactiver la vue mosaïque",
|
||||
"toggleCamera": "Changer de caméra",
|
||||
"toggleFilmstrip": "Afficher ou masquer les vignettes vidéo",
|
||||
"unmute": "Rétablir le son",
|
||||
"unmute": "Activer votre micro",
|
||||
"videoblur": "Activer / désactiver le floutage",
|
||||
"videomute": "Activer / Couper la vidéo",
|
||||
"videomute": "Couper votre vidéo",
|
||||
"videomuteGUMPending": "Connexion de votre caméra",
|
||||
"videounmute": "Démarrer la vidéo"
|
||||
"videounmute": "Activer votre vidéo"
|
||||
},
|
||||
"addPeople": "Ajouter des personnes à votre appel",
|
||||
"audioOnlyOff": "Désactiver le mode bande passante réduite",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -454,6 +454,11 @@
|
||||
},
|
||||
"passwordDigitsOnly": "Ata {{number}} díxitos",
|
||||
"passwordSetRemotely": "estabelecida por outro participante",
|
||||
"polls": {
|
||||
"errors": {
|
||||
"notUniqueOption": "As opcións deben ser únicas"
|
||||
}
|
||||
},
|
||||
"poweredby": "fornecido por",
|
||||
"presenceStatus": {
|
||||
"busy": "Ocupado",
|
||||
|
||||
@@ -477,6 +477,11 @@
|
||||
},
|
||||
"passwordDigitsOnly": "עד {{number}} ספרות",
|
||||
"passwordSetRemotely": "נקבע על ידי חבר אחר",
|
||||
"polls": {
|
||||
"errors": {
|
||||
"notUniqueOption": "האפשרויות חייבות להיות ייחודיות"
|
||||
}
|
||||
},
|
||||
"poweredby": "מופעל על ידי",
|
||||
"presenceStatus": {
|
||||
"busy": "עסוק",
|
||||
|
||||
@@ -298,7 +298,7 @@
|
||||
"screenSharingFailed": "उफ़! कुछ गड़बड़ हो गई, हम स्क्रीन शेयरिंग शुरू करने में सक्षम नहीं थे!",
|
||||
"screenSharingFailedTitle": "Screen sharing failed!",
|
||||
"screenSharingPermissionDeniedError": "उफ़! आपकी स्क्रीन शेयरिंग अनुमतियों में कुछ गड़बड़ हो गई है। कृपया पुनः लोड करें और पुनः प्रयास करें।",
|
||||
"sendPrivateMessage": "You recently received a private message. Did you intend to reply to that privately, or you want to send your message to the group?",
|
||||
"sendPrivateMessage": "आपने हाल ही में एक निजी संदेश प्राप्त किया है। क्या आप उसका निजी रूप से जवाब देने का इरादा रखते हैं? या आप अपना संदेश समूह को भेजना चाहते हैं?",
|
||||
"sendPrivateMessageCancel": "समूह को भेजें",
|
||||
"sendPrivateMessageOk": "निजी तौर पर भेजें",
|
||||
"sendPrivateMessageTitle": "निजी तौर पर भेजें?",
|
||||
@@ -552,10 +552,10 @@
|
||||
"somebody": "Somebody",
|
||||
"startSilentDescription": "ऑडियो सक्षम करने के लिए मीटिंग को फिर से करें",
|
||||
"startSilentTitle": "आप बिना ऑडियो आउटपुट के साथ शामिल हुए!",
|
||||
"suboptimalBrowserWarning": "We are afraid your meeting experience isn't going to be that great here. We are looking for ways to improve this, but until then please try using one of the <a href='{{recommendedBrowserPageLink}}' target='_blank'>fully supported browsers</a>.",
|
||||
"suboptimalBrowserWarning": "हमें डर है कि आपकी मीटिंग अनुभव यहाँ बहुत अच्छा नहीं होने वाला है। हम इसे सुधारने के तरीके ढूंढ़ रहे हैं, लेकिन उस समय तक कृपया <a href='{{recommendedBrowserPageLink}}' target='_blank'>पूरी तरह से समर्थित ब्राउज़र</a> में से एक का प्रयास करें",
|
||||
"suboptimalExperienceTitle": "ब्राउज़र चेतावनी",
|
||||
"unmute": "अनम्यूट",
|
||||
"videoMutedRemotelyDescription": "You can always turn it on again.",
|
||||
"videoMutedRemotelyDescription": "आप इसे हमेशा फिर से चालू कर सकते हैं।",
|
||||
"videoMutedRemotelyTitle": "आपका कैमरा {{participantDisplayName}}द्वारा अक्षम कर दिया गया है!"
|
||||
},
|
||||
"participantsPane": {
|
||||
@@ -565,6 +565,11 @@
|
||||
},
|
||||
"passwordDigitsOnly": "Up to {{number}} digits",
|
||||
"passwordSetRemotely": "दूसरे प्रतिभागी द्वारा निर्धारित",
|
||||
"polls": {
|
||||
"errors": {
|
||||
"notUniqueOption": "विकल्प अद्वितीय होना चाहिए"
|
||||
}
|
||||
},
|
||||
"poweredby": "powered by",
|
||||
"prejoin": {
|
||||
"audioAndVideoError": "ऑडियो और वीडियो त्रुटि:",
|
||||
@@ -649,12 +654,12 @@
|
||||
"availableSpace": "Available space: {{spaceLeft}} MB (approximately {{duration}} minutes of recording)",
|
||||
"beta": "BETA",
|
||||
"busy": "We're working on freeing recording resources. Please try again in a few minutes.",
|
||||
"busyTitle": "All recorders are currently busy",
|
||||
"error": "Recording failed. Please try again.",
|
||||
"expandedOff": "Recording has stopped",
|
||||
"busyTitle": "सभी रिकॉर्डर अभी व्यस्त हैं",
|
||||
"error": "रिकॉर्डिंग विफल हुई। कृपया पुन: प्रयास करें।",
|
||||
"expandedOff": "रिकॉर्डिंग बंद हो गई है",
|
||||
"expandedOn": "The meeting is currently being recorded.",
|
||||
"expandedPending": "Recording is being started...",
|
||||
"failedToStart": "Recording failed to start",
|
||||
"expandedPending": "रिकॉर्डिंग शुरू की जा रही है...",
|
||||
"failedToStart": "रिकॉर्डिंग शुरू करने में विफलता हुई।",
|
||||
"fileSharingdescription": "Share recording with meeting participants",
|
||||
"limitNotificationDescriptionNative": "Due to high demand your recording will be limited to {{limit}} min. For unlimited recordings try <3>{{app}}</3>.",
|
||||
"limitNotificationDescriptionWeb": "Due to high demand your recording will be limited to {{limit}} min. For unlimited recordings try <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
||||
@@ -672,16 +677,16 @@
|
||||
"signIn": "Sign in",
|
||||
"signOut": "Sign out",
|
||||
"title": "रिकॉर्डिंग",
|
||||
"unavailable": "Oops! The {{serviceName}} is currently unavailable. We're working on resolving the issue. Please try again later.",
|
||||
"unavailableTitle": "Recording unavailable"
|
||||
"unavailable": "ओह! {{serviceName}} वर्तमान में अनुपलब्ध है। हम समस्या को हल करने पर काम कर रहे हैं। कृपया बाद में पुनः प्रयास करें।",
|
||||
"unavailableTitle": "रिकॉर्डिंग उपलब्ध नहीं है"
|
||||
},
|
||||
"sectionList": {
|
||||
"pullToRefresh": "Pull to refresh"
|
||||
},
|
||||
"security": {
|
||||
"about": "You can add a $t(lockRoomPassword) to your meeting. Participants will need to provide the $t(lockRoomPassword) before they are allowed to join the meeting.",
|
||||
"about": "आप अपनी मीटिंग में $t(lockRoomPassword) जोड़ सकते हैं। सहभागियों को मीटिंग में शामिल होने से पहले $t(lockRoomPassword) प्रदान करना होगा।",
|
||||
"aboutReadOnly": "Moderator participants can add a $t(lockRoomPassword) to the meeting. Participants will need to provide the $t(lockRoomPassword) before they are allowed to join the meeting.",
|
||||
"insecureRoomNameWarning": "The room name is unsafe. Unwanted participants may join your conference. Consider securing your meeting using the security button.",
|
||||
"insecureRoomNameWarning": "कमरे का नाम असुरक्षित है। अनचाहे सहभागियों की कॉन्फ्रेंस में शामिल हो सकते हैं। सुरक्षा बटन का उपयोग करके अपनी मीटिंग को सुरक्षित बनाने का विचार करें। ",
|
||||
"securityOptions": "Security options"
|
||||
},
|
||||
"settings": {
|
||||
@@ -881,26 +886,26 @@
|
||||
"tr": "TR"
|
||||
},
|
||||
"userMedia": {
|
||||
"androidGrantPermissions": "Select <b><i>Allow</i></b> when your browser asks for permissions.",
|
||||
"chromeGrantPermissions": "Select <b><i>Allow</i></b> when your browser asks for permissions.",
|
||||
"edgeGrantPermissions": "Select <b><i>Yes</i></b> when your browser asks for permissions.",
|
||||
"electronGrantPermissions": "Trying to access your camera and microphone",
|
||||
"firefoxGrantPermissions": "Select <b><i>Share Selected Device</i></b> when your browser asks for permissions.",
|
||||
"iexplorerGrantPermissions": "Select <b><i>OK</i></b> when your browser asks for permissions.",
|
||||
"nwjsGrantPermissions": "Please grant permissions to use your camera and microphone",
|
||||
"operaGrantPermissions": "Select <b><i>Allow</i></b> when your browser asks for permissions.",
|
||||
"react-nativeGrantPermissions": "Select <b><i>Allow</i></b> when your browser asks for permissions.",
|
||||
"safariGrantPermissions": "Select <b><i>OK</i></b> when your browser asks for permissions."
|
||||
"androidGrantPermissions": "जब आपका ब्राउज़र स्वीकृति मांगता है, तो <b><i>अनुमति दें</i></b> चुनें।",
|
||||
"chromeGrantPermissions": "जब आपका ब्राउज़र स्वीकृति मांगता है, तो <b><i>अनुमति दें</i></b> चुनें।",
|
||||
"edgeGrantPermissions": "जब आपका ब्राउज़र स्वीकृति मांगता है, तो <b><i>हां</i></b> चुनें।",
|
||||
"electronGrantPermissions": "आपका कैमरा और माइक्रोफोन तक पहुंच करने की कोशिश की जा रही है",
|
||||
"firefoxGrantPermissions": "जब आपका ब्राउज़र स्वीकृति मांगता है, तो <b><i>चयनित उपकरण साझा करें</i></b> चुनें।",
|
||||
"iexplorerGrantPermissions": "जब आपका ब्राउज़र स्वीकृति मांगता है, तो <b><i>ठीक है</i></b> चुनें।",
|
||||
"nwjsGrantPermissions": "कृपया अपने कैमरा और माइक्रोफोन का उपयोग करने के लिए अनुमतियाँ प्रदान करें",
|
||||
"operaGrantPermissions": "जब आपका ब्राउज़र स्वीकृति मांगता है, तो <b><i>अनुमति दें</i></b> चुनें।",
|
||||
"react-nativeGrantPermissions": "जब आपका ब्राउज़र स्वीकृति मांगता है, तो <b><i>अनुमति दें</i></b> चुनें।",
|
||||
"safariGrantPermissions": "जब आपका ब्राउज़र स्वीकृति मांगता है, तो <b><i>ठीक है</i></b> चुनें।"
|
||||
},
|
||||
"videoSIPGW": {
|
||||
"busy": "We're working on freeing resources. Please try again in a few minutes.",
|
||||
"busyTitle": "The Room service is currently busy",
|
||||
"errorAlreadyInvited": "{{displayName}} already invited",
|
||||
"errorInvite": "Conference not established yet. Please try again later.",
|
||||
"errorInviteFailed": "We're working on resolving the issue. Please try again later.",
|
||||
"errorInviteFailedTitle": "Inviting {{displayName}} failed",
|
||||
"errorInviteTitle": "Error inviting room",
|
||||
"pending": "{{displayName}} has been invited"
|
||||
"busy": "हम संसाधनों को मुक्त करने पर काम कर रहे हैं। कृपया कुछ मिनटों बाद पुन: प्रयास करें।",
|
||||
"busyTitle": "रूम सेवा वर्तमान में व्यस्त है",
|
||||
"errorAlreadyInvited": "{{displayName}} पहले से ही आमंत्रित हैं",
|
||||
"errorInvite": "कॉन्फ़्रेंस अब तक स्थापित नहीं हुई है। कृपया बाद में पुनः प्रयास करें।",
|
||||
"errorInviteFailed": "हम समस्या को हल करने पर काम कर रहे हैं। कृपया बाद में पुनः प्रयास करें।",
|
||||
"errorInviteFailedTitle": "{{displayName}} को आमंत्रित करने में विफलता",
|
||||
"errorInviteTitle": "रूम आमंत्रण में त्रुटि",
|
||||
"pending": "{{displayName}} को आमंत्रित किया गया है"
|
||||
},
|
||||
"videoStatus": {
|
||||
"audioOnly": "AUD",
|
||||
@@ -923,10 +928,10 @@
|
||||
"domute": "म्यूट",
|
||||
"domuteOthers": "सभी को म्यूट करें",
|
||||
"domuteVideo": "कैमरा अक्षम करें",
|
||||
"domuteVideoOfOthers": "Disable camera of everyone else",
|
||||
"domuteVideoOfOthers": "अन्य सभी के लिए कैमरा बंद करें",
|
||||
"flip": "Flip",
|
||||
"grantModerator": "Grant Moderator",
|
||||
"kick": "Kick out",
|
||||
"kick": "निकालें",
|
||||
"moderator": "Moderator",
|
||||
"mute": "प्रतिभागी मौन है",
|
||||
"muted": "म्यूटेड",
|
||||
@@ -945,8 +950,8 @@
|
||||
},
|
||||
"welcomepage": {
|
||||
"accessibilityLabel": {
|
||||
"join": "Tap to join",
|
||||
"roomname": "Enter room name"
|
||||
"join": "शामिल होने के लिए टैप करें",
|
||||
"roomname": "कमरे का नाम लिखे"
|
||||
},
|
||||
"appDescription": "आगे बढ़ो, पूरी टीम के साथ वीडियो चैट करें। वास्तव में, हर किसी को जिसे आप जानते हैं, आमंत्रित करें। { {{app}} एक पूरी तरह से एन्क्रिप्टेड, 100% ओपन सोर्स वीडियो कॉन्फ्रेंसिंग समाधान है जिसका आप मुफ्त में - बिना किसी खाते की आवश्यकता के पूरे दिन, हर दिन, उपयोग कर सकते हैं।",
|
||||
"audioVideoSwitch": {
|
||||
|
||||
@@ -770,6 +770,9 @@
|
||||
"removeOption": "Ukloni opciju",
|
||||
"send": "Pošalji"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Opcije moraju biti jedinstvene"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Za glasanje otvori karticu ankete",
|
||||
"title": "Ovom sastanku je dodana nova anketa"
|
||||
|
||||
@@ -755,6 +755,9 @@
|
||||
"removeOption": "wotmołwu wotstronić",
|
||||
"send": "zestajić"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "opcije dyrbja jasne być"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Za wobdźělenje wočińće tab za naprašowanje.",
|
||||
"title": "Tutej konferency bu naprašowanje přidate."
|
||||
|
||||
@@ -184,6 +184,7 @@
|
||||
"Share": "Megosztás",
|
||||
"Submit": "Elküldés",
|
||||
"WaitForHostMsg": "A konferencia még nem kezdődött meg. Ha Ön a házigazda, akkor hitelesítse magát. Ellenkező esetben, kérjük várjon a házigazda érkezésére.",
|
||||
"WaitForHostNoAuthMsg": "A konferencia még nem kezdődött el, mert nincs elérhető moderátor. Kérlek várj.",
|
||||
"WaitingForHost": "Várakozás a házigazdára…",
|
||||
"Yes": "Igen",
|
||||
"accessibilityLabel": {
|
||||
@@ -623,6 +624,9 @@
|
||||
"removeOption": "Opció eltávolítása",
|
||||
"send": "Küldés"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Az opcióknak egyedinek kell lenniük"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Szavazás megnyitása",
|
||||
"title": "Új szavazás létrehozva"
|
||||
|
||||
@@ -427,6 +427,11 @@
|
||||
},
|
||||
"passwordDigitsOnly": "",
|
||||
"passwordSetRemotely": "Սահմանվել է մեկ այլ մասնակցի կողմից",
|
||||
"polls": {
|
||||
"errors": {
|
||||
"notUniqueOption": "Ընտրանքները պետք է լինեն եզակի"
|
||||
}
|
||||
},
|
||||
"poweredby": "Հիմնված է",
|
||||
"presenceStatus": {
|
||||
"busy": "",
|
||||
|
||||
@@ -865,6 +865,9 @@
|
||||
"removeOption": "Fjarlægja valkost",
|
||||
"send": "Senda"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Valkostir hljóta að vera einstök"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Opnaðu könnunarflipann til að greiða atkvæði",
|
||||
"title": "Nýrri könnun var bætt á þennan fund"
|
||||
|
||||
@@ -770,6 +770,9 @@
|
||||
"removeOption": "Elimina risposta",
|
||||
"send": "Invia"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Le opzioni devono essere uniche"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Apri la scheda sondaggi per votare",
|
||||
"title": "Un nuovo sondaggio è stato aggiunto alla riunione"
|
||||
|
||||
@@ -715,6 +715,9 @@
|
||||
"removeOption": "選択肢の削除",
|
||||
"send": "送信"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "オプションは一意でなければなりません"
|
||||
},
|
||||
"notification": {
|
||||
"description": "投票するには投票タブを開いてください",
|
||||
"title": "新しい投票がこのミーティングに追加されました"
|
||||
|
||||
@@ -667,6 +667,9 @@
|
||||
"removeOption": "Kkes aɣewwaṛ",
|
||||
"send": "Azen"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "tifranin ilaq ad ilin d imaynuten"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Ldi iccer n yisenqad i ufran",
|
||||
"title": "Asenqed amaynut yettwarna ɣer temlilt-a"
|
||||
|
||||
@@ -497,6 +497,11 @@
|
||||
},
|
||||
"passwordDigitsOnly": "최대 {{number}} 자리",
|
||||
"passwordSetRemotely": "다른 참가자가 설정",
|
||||
"polls": {
|
||||
"errors": {
|
||||
"notUniqueOption": "옵션은 고유해야합니다"
|
||||
}
|
||||
},
|
||||
"poweredby": "powered by",
|
||||
"presenceStatus": {
|
||||
"busy": "바쁨",
|
||||
|
||||
@@ -467,6 +467,11 @@
|
||||
},
|
||||
"passwordDigitsOnly": "Daugiausia {{number}} skaičių",
|
||||
"passwordSetRemotely": "nustatytas kito naudotojo",
|
||||
"polls": {
|
||||
"errors": {
|
||||
"notUniqueOption": "Parinktys turi būti unikalios"
|
||||
}
|
||||
},
|
||||
"poweredby": "pateikiamas",
|
||||
"presenceStatus": {
|
||||
"busy": "Užimtas",
|
||||
|
||||
@@ -128,6 +128,7 @@
|
||||
"privateNotice": "Privāta ziņa adresātam {{recipient}}",
|
||||
"sendButton": "Nosūtīt",
|
||||
"smileysPanel": "Emociju panelis",
|
||||
"systemDisplayName": "Sistēma",
|
||||
"tabs": {
|
||||
"chat": "Tērzēšana",
|
||||
"polls": "Aptaujas"
|
||||
@@ -305,6 +306,8 @@
|
||||
"contactSupport": "Sazinieties ar atbalsta dienestu",
|
||||
"copied": "Nokopēts",
|
||||
"copy": "Kopēt",
|
||||
"demoteParticipantDialog": "Vai tiešām vēlaties pārveidot šo dalībnieku par apmeklētāju?",
|
||||
"demoteParticipantTitle": "Pārveidot par apmeklētāju",
|
||||
"dismiss": "Noraidīt",
|
||||
"displayNameRequired": "Sveiki! Kā jūs sauc?",
|
||||
"done": "Darīts",
|
||||
@@ -316,6 +319,7 @@
|
||||
"embedMeeting": "Iegult sapulci",
|
||||
"enterDisplayName": "Ievadiet savu vārdu",
|
||||
"error": "Kļūda",
|
||||
"errorRoomCreationRestriction": "Jūs mēģinājāt pievienoties pārāk ātri. Lūdzu, atgriezieties vēlāk.",
|
||||
"gracefulShutdown": "Mūsu serviss pašlaik nedarbojas apkopes dēļ. Lūdzu, pamēģiniet vēlreiz vēlāk.",
|
||||
"grantModeratorDialog": "Vai tiešām vēlaties piešķirt moderatora tiesības dalībniekam {{participantName}}?",
|
||||
"grantModeratorTitle": "Piešķirt moderatora tiesības",
|
||||
@@ -351,28 +355,28 @@
|
||||
"micPermissionDeniedError": "Nav piekļuves mikrofonam. Jūs varat piedalīties sapulcē, bet citi jūs nedzirdēs. Lai to novērstu, izmantojiet kameras ikonu pārlūkprogrammas adrešu joslā.",
|
||||
"micTimeoutError": "Nevarēja palaist audio avotu. Iestājās noildze!",
|
||||
"micUnknownError": "Nevar izmantot mikrofonu nezināma iemesla dēļ.",
|
||||
"moderationAudioLabel": "Ļaujiet dalībniekiem ieslēgt savu mikrofonu",
|
||||
"moderationVideoLabel": "Ļaujiet dalībniekiem ieslēgt savu kameru",
|
||||
"muteEveryoneDialog": "Dalībnieki jebkurā laikā var ieslēgt savu mikrofonu.",
|
||||
"muteEveryoneDialogModerationOn": "Dalībnieki jebkurā laikā var nosūtīt pieprasījumu runāt.",
|
||||
"muteEveryoneElseDialog": "Kad skaņa būs izslēgta, jūs nevarēsit to ieslēgt atpakaļ, taču dalībnieki jebkurā laikā to varēs izdarīt paši.",
|
||||
"moderationAudioLabel": "Atļaut dalībniekiem ieslēgt savu mikrofonu",
|
||||
"moderationVideoLabel": "Atļaut dalībniekiem ieslēgt savu kameru",
|
||||
"muteEveryoneDialog": "Dalībnieki paši var ieslēgt savu mikrofonu.",
|
||||
"muteEveryoneDialogModerationOn": "Dalībnieki var nosūtīt pieprasījumu ieslēgt savu mikrofonu.",
|
||||
"muteEveryoneElseDialog": "Kad skaņa būs izslēgta, jūs nevarēsiet to ieslēgt atpakaļ, taču dalībnieki to varēs izdarīt paši.",
|
||||
"muteEveryoneElseTitle": "Vai izslēgt skaņu visiem, izņemot {{whom}}?",
|
||||
"muteEveryoneElsesVideoDialog": "Kad video būs izslēgts, jūs nevarēsit to ieslēgt atpakaļ, taču dalībnieki jebkurā laikā to varēs izdarīt paši.",
|
||||
"muteEveryoneElsesVideoDialog": "Kad video būs izslēgts, jūs nevarēsiet to ieslēgt atpakaļ, taču dalībnieki to varēs izdarīt paši.",
|
||||
"muteEveryoneElsesVideoTitle": "Vai izslēgt video visiem, izņemot {{whom}}?",
|
||||
"muteEveryoneSelf": "jūs",
|
||||
"muteEveryoneStartMuted": "No šī brīža visi jauni dalībnieki pieslēdzas ar izslēgt skaņu",
|
||||
"muteEveryoneTitle": "Vai izslēgt skaņu visiem?",
|
||||
"muteEveryonesVideoDialog": "Dalībnieki var jebkurā laikā ieslēgt savu video.",
|
||||
"muteEveryonesVideoDialogModerationOn": "Dalībnieki jebkurā laikā var nosūtīt pieprasījumu ieslēgt viņu video.",
|
||||
"muteEveryonesVideoDialog": "Dalībnieki var ieslēgt savu video.",
|
||||
"muteEveryonesVideoDialogModerationOn": "Dalībnieki var nosūtīt pieprasījumu ieslēgt viņu video.",
|
||||
"muteEveryonesVideoDialogOk": "Atspējot",
|
||||
"muteEveryonesVideoTitle": "Vai apturēt ikviena video?",
|
||||
"muteParticipantBody": "Jūs nevarat viņiem ieslēgt skaņu, bet viņi paši to var izdarīt jebkurā laikā.",
|
||||
"muteParticipantBody": "Jūs nevariet viņiem ieslēgt skaņu, bet viņi paši to var izdarīt jebkurā laikā.",
|
||||
"muteParticipantButton": "Izslēgt skaņu",
|
||||
"muteParticipantsVideoBody": "Jūs nevarēsiet atkal ieslēgt kameru, taču viņi var to jebkurā laikā atkal ieslēgt.",
|
||||
"muteParticipantsVideoBodyModerationOn": "Jūs nevarēsiet atkal ieslēgt kameru, un viņi arī nevarēs.",
|
||||
"muteParticipantsVideoBody": "Jūs nevarēsiet kameru ieslēgt atpakaļ, taču viņi paši to varēs izdarīt jebkurā laikā.",
|
||||
"muteParticipantsVideoBodyModerationOn": "Ne Jūs, ne dalībnieki nevarēsiet ieslēgt kameru atpakaļ.",
|
||||
"muteParticipantsVideoButton": "Pārtraukt video",
|
||||
"muteParticipantsVideoDialog": "Vai tiešām vēlaties izslēgt šī dalībnieka kameru? Jūs nevarēsiet atkal ieslēgt kameru, taču viņi var to jebkurā laikā atkal ieslēgt.",
|
||||
"muteParticipantsVideoDialogModerationOn": "Vai tiešām vēlaties izslēgt šī dalībnieka kameru? Jūs nevarēsiet atkal ieslēgt kameru, un viņi arī nevarēs.",
|
||||
"muteParticipantsVideoDialog": "Vai tiešām vēlaties izslēgt šī dalībnieka kameru? Jūs nevarēsiet to ieslēgt atpakaļ, taču dalībnieks pats to varēs izdarīt jebkurā laikā.",
|
||||
"muteParticipantsVideoDialogModerationOn": "Vai tiešām vēlaties izslēgt šī dalībnieka kameru? Ne Jūs, ne dalībnieks nevarēsiet to ieslēgt atpakaļ.",
|
||||
"muteParticipantsVideoTitle": "Vai izslēgt šī dalībnieka video?",
|
||||
"noDropboxToken": "Nav derīga Dropbox tokena",
|
||||
"password": "Parole",
|
||||
@@ -450,7 +454,7 @@
|
||||
"stopRecordingWarning": "Tiešām vēlaties beigt ierakstu?",
|
||||
"stopStreamingWarning": "Tiešām vēlaties beigt tiešraidi?",
|
||||
"streamKey": "Tiešraides atslēga",
|
||||
"thankYou": "Paldies, ka izmantojat {{appName}}!",
|
||||
"thankYou": "Paldies, ka izmantojāt {{appName}}!",
|
||||
"token": "tokens",
|
||||
"tokenAuthFailed": "Atvainojiet, jums nav atļauts pievienoties šim zvanam.",
|
||||
"tokenAuthFailedReason": {
|
||||
@@ -560,6 +564,7 @@
|
||||
"noNumbers": "Nav iezvana #.",
|
||||
"noPassword": "bez paroles",
|
||||
"noRoom": "Iezvana numuram nav piesaistīta neviena sapulces telpa.",
|
||||
"noWhiteboard": "Nevarēja ielādēt tāfeli.",
|
||||
"numbers": "Iezvana numuri",
|
||||
"password": "$t(lockRoomPasswordUppercase):",
|
||||
"reachedLimit": "Jūs esat sasniedzis sava plāna limitu.",
|
||||
@@ -567,7 +572,8 @@
|
||||
"sipAudioOnly": "Tikai SIP audio adrese",
|
||||
"title": "Kopīgot",
|
||||
"tooltip": "Kopīgot šīs sapulces saiti un iezvana # informāciju",
|
||||
"upgradeOptions": "Lūdzu, pārbaudiet jaunināšanas opcijas"
|
||||
"upgradeOptions": "Lūdzu, ieslēdziet jaunināšanas iespējas",
|
||||
"whiteboardError": "Kļūda ielādējot tāfeli. Lūdzu, mēģiniet vēlreiz."
|
||||
},
|
||||
"inlineDialogFailure": {
|
||||
"msg": "Neliels misēklis.",
|
||||
@@ -729,8 +735,10 @@
|
||||
"connectedOneMember": "{{name}} ir pievienojies sapulcei",
|
||||
"connectedThreePlusMembers": "{{name}} un {{count}} citi ir pievienojušies sapulcei",
|
||||
"connectedTwoMembers": "{{first}} un {{second}} ir pievienojušies sapulcei",
|
||||
"dataChannelClosed": "Video kvalitāte ir traucēta",
|
||||
"dataChannelClosedDescription": "Savienojuma kanāls ir atvienots, un tādējādi video kvalitāte ir ierobežota līdz zemākajam iestatījumam.",
|
||||
"dataChannelClosed": "Video kvalitāte var būt traucēta",
|
||||
"dataChannelClosedDescription": "Savienojuma kanāls nedarbojas, tāpēc video kvalitāte var būt ierobežota līdz zemākajam iestatījumam.",
|
||||
"dataChannelClosedDescriptionWithAudio": "Savienojuma kanāls nedarbojas, tāpēc var rasties audio un video traucējumi.",
|
||||
"dataChannelClosedWithAudio": "Audio un video kvalitāte var būt traucēta",
|
||||
"disabledIframe": "Iegulšana ir paredzēta tikai demonstrācijas nolūkiem, tāpēc šis zvans tiks atvienots pēc {{timeout}} minūtēm.",
|
||||
"disabledIframeSecondary": "{{domain}} iegulšana ir paredzēta tikai demonstrācijas nolūkiem, tāpēc šis zvans tiks atvienots pēc {{timeout}} minūtēm. Lūdzu, izmantojiet <a href='{{jaasDomain}}' rel='noopener noreferrer' target='_blank'>Jitsi kā Pakalpojums</a> produkcijas iegulšanai!",
|
||||
"disconnected": "savienojums pārtraukts",
|
||||
@@ -802,12 +810,16 @@
|
||||
"startSilentTitle": "Jūs esiet nedzirdams!",
|
||||
"suboptimalBrowserWarning": "Diemžēl jūsu pārlūks pilnībā neatbalsta šo virtuālo sapulču sistēmu. Pie tā tiek strādāts, bet šobrīd tiek ieteikts izmantot <a href='{{recommendedBrowserPageLink}}' target='_blank'> šos pārlūkus</a>.",
|
||||
"suboptimalExperienceTitle": "Diemžēl jūsu pārlūks, iespējams, var pienācīgi nestrādāt ar {{appName}}. Pie tā tiek strādāts, bet šobrīd tiek ieteikts izmantot kādu no <a href='{{recommendedBrowserPageLink}} 'target='_blank'>pilnībā atbalstītajiem pārlūkiem</a>.",
|
||||
"suggestRecordingAction": "Sākt",
|
||||
"suggestRecordingDescription": "Vai vēlaties sākt ierakstīšanu?",
|
||||
"suggestRecordingTitle": "Ierakstīt sanāksmi",
|
||||
"unmute": "Ieslēgt mikrofonu",
|
||||
"videoMutedRemotelyDescription": "Jūs vienmēr varat to atkal ieslēgt.",
|
||||
"videoMutedRemotelyTitle": "{{participantDisplayName}} izslēdza jūsu video",
|
||||
"videoUnmuteBlockedDescription": "Kameras ieslēgšanas un darbvirsmas koplietošanas darbība ir īslaicīgi bloķēta sistēmas ierobežojumu dēļ.",
|
||||
"videoUnmuteBlockedTitle": "Kameras ieslēgšana un darbvirsmas koplietošana ir bloķēta!",
|
||||
"viewLobby": "Skatīt vestibilu",
|
||||
"viewVisitors": "Skatīt apmeklētājus",
|
||||
"waitingParticipants": "{{waitingParticipants}} personas",
|
||||
"whiteboardLimitDescription": "Lūdzu, saglabājiet savu progresu, jo drīz tiks sasniegts lietotāju limits un tāfele tiks aizvērta.",
|
||||
"whiteboardLimitTitle": "Tāfeles lietošana"
|
||||
@@ -824,7 +836,7 @@
|
||||
"breakoutRooms": "Grupu istabas",
|
||||
"invite": "Uzaicināt",
|
||||
"moreModerationActions": "Vairāk moderēšanas iespēju",
|
||||
"moreModerationControls": "Vairāk moderēšanas kontroļu",
|
||||
"moreModerationControls": "Vairāk moderēšanas iespēju",
|
||||
"moreParticipantOptions": "Vairāk dalībnieku iespēju",
|
||||
"mute": "Apklusināt",
|
||||
"muteAll": "Apklusināt visus",
|
||||
@@ -867,6 +879,9 @@
|
||||
"removeOption": "Noņemt opciju",
|
||||
"send": "Nosūtīt"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Iespējām jābūt unikālām"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Lai balsotu, atveriet aptauju cilni",
|
||||
"title": "Šai sapulcei tika pievienota jauna aptauja"
|
||||
@@ -934,6 +949,7 @@
|
||||
"or": "vai",
|
||||
"premeeting": "Pirms sapulces",
|
||||
"proceedAnyway": "Tik un tā turpināt",
|
||||
"recordingWarning": "Citi dalībnieki var ierakstīt šo zvanu",
|
||||
"screenSharingError": "Ekrāna koplietošanas kļūda:",
|
||||
"showScreen": "Iespējot ekrānu pirms sapulces",
|
||||
"startWithPhone": "Sākt ar tālruņa audio",
|
||||
@@ -1391,7 +1407,7 @@
|
||||
},
|
||||
"videoStatus": {
|
||||
"adjustFor": "Pielāgot:",
|
||||
"audioOnly": "Tikai skaņu",
|
||||
"audioOnly": "Tikai skaņa",
|
||||
"audioOnlyExpanded": "Kanāla/trafika taupīšanas režīms. Šajā režīmā pieejami tikai audio un ekrāna kopīgošana",
|
||||
"bestPerformance": "Labākais sniegums",
|
||||
"callQuality": "Video kvalitāte",
|
||||
@@ -1413,6 +1429,7 @@
|
||||
},
|
||||
"videothumbnail": {
|
||||
"connectionInfo": "Informācija par savienojumu",
|
||||
"demote": "Pārveidot par apmeklētāju",
|
||||
"domute": "Izlsēgt skaņu",
|
||||
"domuteOthers": "Izslēgt skaņu visiem pārējiem",
|
||||
"domuteVideo": "Izslēgt kameru",
|
||||
@@ -1467,7 +1484,12 @@
|
||||
"chatIndicator": "(apmeklētājs)",
|
||||
"labelTooltip": "Apmeklētāju skaits: {{count}}",
|
||||
"notification": {
|
||||
"description": "Lai piedalītos, pacel roku",
|
||||
"demoteDescription": "{{actor}} pārveidoja par apmeklētāju, paceliet roku, lai piedalītos",
|
||||
"description": "Paceliet roku, lai piedalītos",
|
||||
"noMainParticipantsDescription": "Dalībniekam ir jāsāk sapulce. Lūdzu, pēc brīža mēģiniet vēlreiz.",
|
||||
"noMainParticipantsTitle": "Šī sapulce vēl nav sākusies.",
|
||||
"noVisitorLobby": "Jūs nevarat pievienoties, kamēr sapulcei ir iespējots vestibils.",
|
||||
"notAllowedPromotion": "Dalībniekam vispirms ir jāatļauj jūsu pieprasījums.",
|
||||
"title": "Jūs esat sapulces apmeklētājs"
|
||||
}
|
||||
},
|
||||
@@ -1527,6 +1549,7 @@
|
||||
"whiteboard": {
|
||||
"accessibilityLabel": {
|
||||
"heading": "Tāfele"
|
||||
}
|
||||
},
|
||||
"screenTitle": "Tāfele"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -545,6 +545,11 @@
|
||||
},
|
||||
"passwordDigitsOnly": "{{number}} അക്കങ്ങൾ വരെ",
|
||||
"passwordSetRemotely": "മറ്റൊരു പങ്കാളി സജ്ജമാക്കിയത്",
|
||||
"polls": {
|
||||
"errors": {
|
||||
"notUniqueOption": "ഓപ്ഷനുകൾ അദ്വിതീയമായിരിക്കണം"
|
||||
}
|
||||
},
|
||||
"poweredby": "powered by",
|
||||
"prejoin": {
|
||||
"audioAndVideoError": "ഓഡിയോ, വീഡിയോ പിശക്:",
|
||||
|
||||
@@ -802,6 +802,9 @@
|
||||
"removeOption": "Сонголт хасах",
|
||||
"send": "Илгээх"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Сонголтууд өвөрмөц байх ёстой"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Саналаа өгөхийн тулд санал асуулгын хавтсыг нээнэ үү",
|
||||
"title": "Уулзалтанд шинэ санал асуулга нэмэгдлээ"
|
||||
|
||||
@@ -482,6 +482,11 @@
|
||||
},
|
||||
"passwordDigitsOnly": " पर्यंत {{number}} अंक",
|
||||
"passwordSetRemotely": "दुसर्या सहभागीने सेट केलेले",
|
||||
"polls": {
|
||||
"errors": {
|
||||
"notUniqueOption": "पर्याय अद्वितीय असणे आवश्यक आहे"
|
||||
}
|
||||
},
|
||||
"poweredby": "द्वारा समर्थित",
|
||||
"prejoin": {
|
||||
"audioAndVideoError": "ऑडिओ आणि व्हिडिओ त्रुटी:",
|
||||
|
||||
@@ -668,6 +668,9 @@
|
||||
"removeOption": "Verwijder optie",
|
||||
"send": "Verstuur"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Opties moeten uniek zijn"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Open het peilingen tabblad om te stemmen",
|
||||
"title": "Een nieuwe peiling is aangemaakt in deze vergadering"
|
||||
|
||||
@@ -714,6 +714,9 @@
|
||||
"removeOption": "Suprimir l'opcion",
|
||||
"send": "Enviar"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Las opcions devon èsser unicas"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Dobrissètz l’onglet dels sondatge per votar",
|
||||
"title": "Un sondatge novèl es estat apondut a la conferéncia"
|
||||
|
||||
@@ -803,6 +803,9 @@
|
||||
"removeOption": "Usuń opcję",
|
||||
"send": "Wyślij"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Opcje muszą być wyjątkowe"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Otwórz kartę ankiet, aby zagłosować",
|
||||
"title": "Utworzono nową ankietę do tego spotkania"
|
||||
|
||||
@@ -219,7 +219,9 @@
|
||||
"joinInBrowser": "Entrar pelo navegador de Internet",
|
||||
"launchMeetingLabel": "Como deseja entrar nesta reunião?",
|
||||
"launchWebButton": "Iniciar pelo navegador de Internet",
|
||||
"noDesktopApp": "Não tem a aplicação?",
|
||||
"noMobileApp": "Não tem a aplicação?",
|
||||
"or": "OU",
|
||||
"termsAndConditions": "Ao continuar, concorda com os nossos <a href='{{termsAndConditionsLink}}' rel='noopener noreferrer' target='_blank'>termos & condições.</a>",
|
||||
"title": "Iniciando a sua reunião na {{app}}...",
|
||||
"titleNew": "Iniciando a sua reunião ...",
|
||||
@@ -303,6 +305,8 @@
|
||||
"contactSupport": "Contacte o suporte",
|
||||
"copied": "Copiado",
|
||||
"copy": "Cópia",
|
||||
"demoteParticipantDialog": "Tem a certeza de que pretende passar este participante para visitante?",
|
||||
"demoteParticipantTitle": "Passar a visitante",
|
||||
"dismiss": "Dispensar",
|
||||
"displayNameRequired": "Olá! Qual é o seu nome?",
|
||||
"done": "Feito",
|
||||
@@ -558,6 +562,7 @@
|
||||
"noNumbers": "Sem números de telefone.",
|
||||
"noPassword": "Nenhum",
|
||||
"noRoom": "Não foi especificado nenhuma sala para ligar.",
|
||||
"noWhiteboard": "Não foi possível carregar o quadro branco.",
|
||||
"numbers": "Números para entrar por chamada telefónica",
|
||||
"password": "$t(lockRoomPasswordUppercase): ",
|
||||
"reachedLimit": "atingiu o limite do seu plano.",
|
||||
@@ -565,7 +570,8 @@
|
||||
"sipAudioOnly": "Endereço SIP só de áudio",
|
||||
"title": "Partilhar",
|
||||
"tooltip": "Partilhar link e acesso telefónico para esta reunião",
|
||||
"upgradeOptions": "Por favor, verifique as opções de atualização em"
|
||||
"upgradeOptions": "Por favor, verifique as opções de atualização em",
|
||||
"whiteboardError": "Erro ao carregar o quadro branco. Por favor, tente novamente mais tarde."
|
||||
},
|
||||
"inlineDialogFailure": {
|
||||
"msg": "Tivemos um pequeno problema.",
|
||||
@@ -615,7 +621,7 @@
|
||||
"errorAPI": "Ocorreu um erro ao acessar suas transmissões do YouTube. Por favor tente logar novamente.",
|
||||
"errorLiveStreamNotEnabled": "Transmissão em direto não está ativada em {{email}}. Ative a transmissão em direto ou registre numa conta com transmissão direto ativada.",
|
||||
"expandedOff": "A transmissão em direto foi encerrada",
|
||||
"expandedOn": "A reunião está sendo transmitida pelo YouTube.",
|
||||
"expandedOn": "A reunião está sendo transmitida em direto.",
|
||||
"expandedPending": "Iniciando a transmissão em direto...",
|
||||
"failedToStart": "Falha ao iniciar a transmissão em direto",
|
||||
"getStreamKeyManually": "Não conseguimos buscar nenhuma transmissão em direto. Tente obter sua chave de transmissão em direto no YouTube.",
|
||||
@@ -800,12 +806,16 @@
|
||||
"startSilentTitle": "Entrou sem áudio!",
|
||||
"suboptimalBrowserWarning": "Tememos que sua experiência de reunião não seja tão boa aqui. Estamos procurando maneiras de melhorar isso, mas até então, tente usar um dos <a href='{{recommendedBrowserPageLink}}' target='_blank'>navegadores completamente suportados</a>.",
|
||||
"suboptimalExperienceTitle": "Alerta do navegador",
|
||||
"suggestRecordingAction": "Iniciar",
|
||||
"suggestRecordingDescription": "Gostaria de iniciar uma gravação?",
|
||||
"suggestRecordingTitle": "Gravar esta reunião",
|
||||
"unmute": "Ligar microfone",
|
||||
"videoMutedRemotelyDescription": "Pode sempre ligá-la novamente.",
|
||||
"videoMutedRemotelyTitle": "A sua câmara foi desligada pelo {{participantDisplayName}}.",
|
||||
"videoUnmuteBlockedDescription": "A operação de ligar a câmara e partilhar o ambiente de trabalho foi temporariamente bloqueada devido aos limites do sistema.",
|
||||
"videoUnmuteBlockedTitle": "Está bloqueado ligar a câmara e partilhar o ambiente de trabalho!",
|
||||
"viewLobby": "Ver sala de espera",
|
||||
"viewVisitors": "Ver visitantes",
|
||||
"waitingParticipants": "{{waitingParticipants}} pessoas",
|
||||
"whiteboardLimitDescription": "Guarde o seu progresso, pois o limite de utilizadores será atingido em breve e o quadro branco será encerrado.",
|
||||
"whiteboardLimitTitle": "Utilização do quadro branco"
|
||||
@@ -865,6 +875,9 @@
|
||||
"removeOption": "Remover opção",
|
||||
"send": "Enviar"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "As opções devem ser únicas"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Abrir o separador das sondagens para votar",
|
||||
"title": "Uma nova sondagem foi adicionada a esta reunião"
|
||||
@@ -932,6 +945,7 @@
|
||||
"or": "ou",
|
||||
"premeeting": "Pré-reunião",
|
||||
"proceedAnyway": "Continuar na mesma",
|
||||
"recordingWarning": "Outros participantes podem estar a gravar esta chamada",
|
||||
"screenSharingError": "Erro de partilha de ecrã:",
|
||||
"showScreen": "Ativar o ecrã de pré-reunião",
|
||||
"startWithPhone": "Iniciar com o áudio do telefone",
|
||||
@@ -985,7 +999,7 @@
|
||||
"error": "A gravação falhou. Tente novamente.",
|
||||
"errorFetchingLink": "Erro ao procurar link da gravação.",
|
||||
"expandedOff": "Gravação finalizada",
|
||||
"expandedOn": "A reunião está sendo gravada.",
|
||||
"expandedOn": "A reunião está sendo gravada",
|
||||
"expandedPending": "Iniciando gravação...",
|
||||
"failedToStart": "Falha ao iniciar a gravação",
|
||||
"fileSharingdescription": "Partilhar o link da gravação com os participantes da reunião",
|
||||
@@ -998,7 +1012,6 @@
|
||||
"limitNotificationDescriptionNative": "Due to high demand your recording will be limited to {{limit}} min. Para gravações ilimitadas tente <3>{{app}}</3>.",
|
||||
"limitNotificationDescriptionWeb": "Devido à grande procura, a sua gravação será limitada a {{limit}} min. For unlimited recordings try <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
||||
"linkGenerated": "Gerámos um link para a sua gravação.",
|
||||
"live": "DIRETO",
|
||||
"localRecordingNoNotificationWarning": "A gravação não será anunciada aos outros participantes. Será necessário avisá-los de que a reunião está gravada.",
|
||||
"localRecordingNoVideo": "O vídeo não está a ser gravado",
|
||||
"localRecordingStartWarning": "Por favor, certifique-se de que pára a gravação antes de sair da reunião a fim de a guardar.",
|
||||
@@ -1015,7 +1028,6 @@
|
||||
"onBy": "{{name}} iniciou a gravação",
|
||||
"onlyRecordSelf": "Gravar apenas as minhas transmissões áudio e vídeo",
|
||||
"pending": "Preparando para gravar a reunião...",
|
||||
"rec": "REC",
|
||||
"recordAudioAndVideo": "Gravar áudio e vídeo",
|
||||
"recordTranscription": "Gravar transcrições",
|
||||
"saveLocalRecording": "Guardar ficheiro de gravação localmente (Beta)",
|
||||
@@ -1355,12 +1367,9 @@
|
||||
},
|
||||
"transcribing": {
|
||||
"ccButtonTooltip": "Iniciar/parar legendas",
|
||||
"error": "Transcrição falhou. Tente novamente.",
|
||||
"expandedLabel": "Transcrição ativada",
|
||||
"failedToStart": "Transcrição falhou ao iniciar",
|
||||
"labelToolTip": "A reunião esta sendo transcrita",
|
||||
"off": "Transcrição parada",
|
||||
"pending": "Preparando a transcrição da reunião...",
|
||||
"sourceLanguageDesc": "Atualmente a língua da reunião está definida para <b>{{sourceLanguage}}</b>. <br/> Pode alterá-la a partir ",
|
||||
"sourceLanguageHere": "daqui",
|
||||
"start": "Exibir legendas",
|
||||
@@ -1416,6 +1425,7 @@
|
||||
},
|
||||
"videothumbnail": {
|
||||
"connectionInfo": "Informações sobre a ligação",
|
||||
"demote": "Passar a visitante",
|
||||
"domute": "Sem som",
|
||||
"domuteOthers": "Silenciar todos os outros",
|
||||
"domuteVideo": "Desativar a câmara",
|
||||
@@ -1470,6 +1480,7 @@
|
||||
"chatIndicator": "(visitante)",
|
||||
"labelTooltip": "Número de visitantes: {{count}}",
|
||||
"notification": {
|
||||
"demoteDescription": "Enviado aqui pelo {{actor}}, levante a mão para participar",
|
||||
"description": "Para participar levante a sua mão",
|
||||
"title": "É um visitante na reunião"
|
||||
}
|
||||
@@ -1530,6 +1541,7 @@
|
||||
"whiteboard": {
|
||||
"accessibilityLabel": {
|
||||
"heading": "Quadro branco"
|
||||
}
|
||||
},
|
||||
"screenTitle": "Quadro branco"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -864,6 +864,9 @@
|
||||
"removeOption": "Remover opção",
|
||||
"send": "Enviar"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "As opções devem ser exclusivas"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Abra a aba das votações para votar",
|
||||
"title": "Uma nova votação foi iniciada nesta conferência"
|
||||
|
||||
@@ -471,6 +471,11 @@
|
||||
},
|
||||
"passwordDigitsOnly": "Până la {{number}} cifre",
|
||||
"passwordSetRemotely": "Setată de un alt membru",
|
||||
"polls": {
|
||||
"errors": {
|
||||
"notUniqueOption": "Opțiunile trebuie să fie unice"
|
||||
}
|
||||
},
|
||||
"poweredby": "cu sprijinul",
|
||||
"presenceStatus": {
|
||||
"busy": "Ocupat",
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
{
|
||||
"addPeople": {
|
||||
"accessibilityLabel": {
|
||||
"meetingLink": "Ссылка на встречу: {{url}}"
|
||||
},
|
||||
"add": "Пригласить",
|
||||
"addContacts": "Пригласите других людей",
|
||||
"contacts": "контакты",
|
||||
@@ -30,6 +33,7 @@
|
||||
},
|
||||
"audioDevices": {
|
||||
"bluetooth": "Bluetooth",
|
||||
"car": "Автомобильная аудиосистема",
|
||||
"headphones": "Наушники",
|
||||
"none": "Не обнаружены звуковые устройства",
|
||||
"phone": "Телефон",
|
||||
@@ -38,6 +42,18 @@
|
||||
"audioOnly": {
|
||||
"audioOnly": "Только звук"
|
||||
},
|
||||
"bandwidthSettings": {
|
||||
"assumedBandwidthBps": "например, 10000000 для 10 Мбит/с",
|
||||
"assumedBandwidthBpsWarning": "Более высокие значения могут вызвать проблемы сети.",
|
||||
"customValue": "пользовательское значение",
|
||||
"customValueEffect": "для установки фактического значения в битах в секунду",
|
||||
"leaveEmpty": "оставить пустым",
|
||||
"leaveEmptyEffect": "для разрешения проведения оценок",
|
||||
"possibleValues": "Возможные значения",
|
||||
"setAssumedBandwidthBps": "Предполагаемая пропускная способность (бит/с)",
|
||||
"title": "Настройки пропускной способности",
|
||||
"zeroEffect": "для отключения видео"
|
||||
},
|
||||
"breakoutRooms": {
|
||||
"actions": {
|
||||
"add": "Добавить сессионный зал",
|
||||
@@ -47,6 +63,8 @@
|
||||
"leaveBreakoutRoom": "Покинуть сессионный зал",
|
||||
"more": "Больше",
|
||||
"remove": "Удалить",
|
||||
"rename": "Переименовать",
|
||||
"renameBreakoutRoom": "Переименовать сессионный зал",
|
||||
"sendToBreakoutRoom": "Отправить участника к:"
|
||||
},
|
||||
"breakoutList": "Сессионные залы",
|
||||
@@ -55,7 +73,7 @@
|
||||
"hideParticipantList": "Скрыть список участников",
|
||||
"mainRoom": "Главная комната",
|
||||
"notifications": {
|
||||
"joined": "Вход в сессионный зал \"{{name}}\"",
|
||||
"joined": "Вход в сессионный зал «{{name}}»",
|
||||
"joinedMainRoom": "Вход в главную комнату",
|
||||
"joinedTitle": "Сессионные залы"
|
||||
},
|
||||
@@ -151,6 +169,7 @@
|
||||
"bridgeCount": "Количество серверов: ",
|
||||
"codecs": "Кодеки (A/V): ",
|
||||
"connectedTo": "Подключен к:",
|
||||
"e2eeVerified": "E2EE подтверждено:",
|
||||
"framerate": "Частота кадров:",
|
||||
"less": "Краткая информация",
|
||||
"localaddress": "Локальный адрес:",
|
||||
@@ -159,6 +178,7 @@
|
||||
"localport_plural": "Локальные порты:",
|
||||
"maxEnabledResolution": "Максимальное разрешение",
|
||||
"more": "Подробная информация",
|
||||
"no": "нет",
|
||||
"packetloss": "Потери пакетов:",
|
||||
"participant_id": "id участника:",
|
||||
"quality": {
|
||||
@@ -177,7 +197,8 @@
|
||||
"status": "Связь:",
|
||||
"transport": "Транспорт:",
|
||||
"transport_plural": "Транспорты:",
|
||||
"video_ssrc": "Видео SSRC:"
|
||||
"video_ssrc": "Видео SSRC:",
|
||||
"yes": "да"
|
||||
},
|
||||
"dateUtils": {
|
||||
"earlier": "Ранее",
|
||||
@@ -187,6 +208,7 @@
|
||||
"deepLinking": {
|
||||
"appNotInstalled": "Чтобы присоединиться к этой встрече на телефоне, нужно мобильное приложение {{app}}.",
|
||||
"description": "Ничего не случилось? Мы попытались запустить вашу встречу в настольном приложении {{app}}. Повторите попытку или запустите ее в веб-приложении {{app}}.",
|
||||
"descriptionNew": "Ничего не случилось? Мы попытались запустить вашу встречу в настольном приложении {{app}}. <br /><br /> Вы можете повторить попытку или запустить ее в веб-приложении.",
|
||||
"descriptionWithoutWeb": "Ничего не произошло? Мы попытались запустить вашу конференцию в настольном приложении {{app}}",
|
||||
"downloadApp": "Скачать приложение",
|
||||
"downloadMobileApp": "Скачать из App Store",
|
||||
@@ -197,8 +219,12 @@
|
||||
"joinInBrowser": "Присоединиться в браузере",
|
||||
"launchMeetingLabel": "Как вы хотите присоединиться к этой встрече?",
|
||||
"launchWebButton": "Запустить в браузере",
|
||||
"noDesktopApp": "У вас нет приложения?",
|
||||
"noMobileApp": "У вас нет приложения?",
|
||||
"or": "ИЛИ",
|
||||
"termsAndConditions": "Продолжая, вы соглашаетесь с нашими <a href='{{termsAndConditionsLink}}' rel='noopener noreferrer' target='_blank'>правилами и условиями.</a>",
|
||||
"title": "Запуск вашей встречи в {{app}}...",
|
||||
"titleNew": "Запуск вашей встречи ...",
|
||||
"tryAgainButton": "Повторите в настольном приложении",
|
||||
"unsupportedBrowser": "Вы используете браузер, который мы не поддерживаем."
|
||||
},
|
||||
@@ -211,11 +237,20 @@
|
||||
"microphonePermission": "Нет разрешения на доступ к микрофону"
|
||||
},
|
||||
"deviceSelection": {
|
||||
"hid": {
|
||||
"callControl": "Управление вызовами",
|
||||
"connectedDevices": "Подключенные устройства:",
|
||||
"deleteDevice": "Удалить устройство",
|
||||
"pairDevice": "Сопряжение устройства"
|
||||
},
|
||||
"noPermission": "Нет доступа",
|
||||
"previewUnavailable": "Предпросмотр недоступен",
|
||||
"selectADevice": "Выбор устройства",
|
||||
"testAudio": "Протестировать звук"
|
||||
},
|
||||
"dialIn": {
|
||||
"screenTitle": "Сводка о входящем вызове"
|
||||
},
|
||||
"dialOut": {
|
||||
"statusMessage": "сейчас {{status}}"
|
||||
},
|
||||
@@ -228,15 +263,22 @@
|
||||
"Share": "Поделиться",
|
||||
"Submit": "ОК",
|
||||
"WaitForHostMsg": "Конференция еще не началась. Если вы организатор, пожалуйста, авторизируйтесь. В противном случае дождитесь организатора.",
|
||||
"WaitingForHostButton": "Ждать организатора",
|
||||
"WaitingForHostTitle": "Ждем организатора...",
|
||||
"Yes": "Да",
|
||||
"accessibilityLabel": {
|
||||
"liveStreaming": "Трансляция"
|
||||
"Cancel": "Отмена (закрыть диалоговое окно)",
|
||||
"Ok": "OK (сохранить и закрыть диалоговое окно)",
|
||||
"close": "Закрыть диалоговое окно",
|
||||
"liveStreaming": "Трансляция",
|
||||
"sharingTabs": "Опции обмена"
|
||||
},
|
||||
"add": "Добавить",
|
||||
"addMeetingNote": "Добавить записку об этом митиге",
|
||||
"addOptionalNote": "Добавить записку (необязательно):",
|
||||
"allow": "Разрешить",
|
||||
"allowToggleCameraDialog": "Разрешить {{initiatorName}} переключить режим камеры?",
|
||||
"allowToggleCameraTitle": "Разрешить переключение камеры?",
|
||||
"alreadySharedVideoMsg": "Другой участник уже поделился ссылкой на видео. Данная конференция позволяет одновременно делиться только одним видео.",
|
||||
"alreadySharedVideoTitle": "Допускается показ только одного видео",
|
||||
"applicationWindow": "Окно приложения",
|
||||
@@ -263,6 +305,8 @@
|
||||
"contactSupport": "Связь с поддержкой",
|
||||
"copied": "Скопировано",
|
||||
"copy": "Копировать",
|
||||
"demoteParticipantDialog": "Вы уверены, что хотите сделать этого участника гостем?",
|
||||
"demoteParticipantTitle": "Сделать гостем",
|
||||
"dismiss": "Отклонить",
|
||||
"displayNameRequired": "Привет! Как тебя зовут?",
|
||||
"done": "Готово",
|
||||
@@ -297,6 +341,7 @@
|
||||
"lockRoom": "Добавить конференцию $t(lockRoomPasswordUppercase)",
|
||||
"lockTitle": "Блокировка не удалась",
|
||||
"login": "Войти",
|
||||
"loginQuestion": "Уверены, что хотите присоединиться и остановить встречу?",
|
||||
"logoutQuestion": "Уверены, что хотите выйти и остановить встречу?",
|
||||
"logoutTitle": "Завершить сеанс",
|
||||
"maxUsersLimitReached": "Достигнут лимит на максимальное количество участников. Конференция переполнена. Пожалуйста, свяжитесь с организатором конференции или повторите попытку позже!",
|
||||
@@ -340,8 +385,6 @@
|
||||
"permissionCameraRequiredError": "Для участия в конференциях с видео требуется разрешение камеры. Пожалуйста, предоставьте его в настройках",
|
||||
"permissionErrorTitle": "Требуется разрешение",
|
||||
"permissionMicRequiredError": "Для участия в конференциях со звуком требуется разрешение на использование микрофона. Пожалуйста, предоставьте его в настройках",
|
||||
"popupError": "Ваш браузер блокирует всплывающие окна этого сайта. Пожалуйста, разрешите всплывающие окна в настройках безопасности браузера и попробуйте снова.",
|
||||
"popupErrorTitle": "Заблокировано всплывающее окно",
|
||||
"readMore": "больше",
|
||||
"recentlyUsedObjects": "Ваши недавно использованные объекты",
|
||||
"recording": "Запись",
|
||||
@@ -358,6 +401,8 @@
|
||||
"removePassword": "Убрать $t(lockRoomPassword)",
|
||||
"removeSharedVideoMsg": "Уверены, что хотите убрать видео, которым поделились?",
|
||||
"removeSharedVideoTitle": "Убрать видео",
|
||||
"renameBreakoutRoomLabel": "Название сессионного зала",
|
||||
"renameBreakoutRoomTitle": "Переименовать сессионный зал",
|
||||
"reservationError": "Ошибка системы резервирования",
|
||||
"reservationErrorMsg": "Код ошибки: {{code}}, сообщение: {{msg}}",
|
||||
"retry": "Повторить",
|
||||
@@ -380,6 +425,7 @@
|
||||
"sessTerminatedReason": "Встреча прервана",
|
||||
"sessionRestarted": "Вызов перезапущен из-за проблемы с подключением.",
|
||||
"shareAudio": "Продолжить",
|
||||
"shareAudioAltText": "чтобы поделиться желаемым контентом, перейдите в раздел «Вкладка браузера», выберите нужный контент, установите флажок «поделиться аудио» и нажмите на кнопку «поделиться»",
|
||||
"shareAudioTitle": "Как поделиться аудио",
|
||||
"shareAudioWarningD1": "вам нужно остановить совместное использование экрана, прежде чем делиться своим аудио.",
|
||||
"shareAudioWarningD2": "вам нужно перезапустить совместное использование экрана и установить флажок «поделиться аудио».",
|
||||
@@ -409,16 +455,42 @@
|
||||
"thankYou": "Спасибо, что используете {{appName}}!",
|
||||
"token": "токен",
|
||||
"tokenAuthFailed": "Извините, вам не разрешено присоединиться к этому сеансу связи.",
|
||||
"tokenAuthFailedReason": {
|
||||
"audInvalid": "Недопустимое значение `aud`. Должно быть `jitsi`.",
|
||||
"contextNotFound": "Объект `context` отсутствует в объекте `payload`.",
|
||||
"expInvalid": "Недопустимое значение `exp`.",
|
||||
"featureInvalid": "Недопустимая функция: {{feature}}, скорее всего, еще не реализована.",
|
||||
"featureValueInvalid": "Недопустимое значение для функции: {{feature}}.",
|
||||
"featuresNotFound": "Объект `features` отсутствует в объекте `payload`.",
|
||||
"headerNotFound": "Отсутствует заголовок.",
|
||||
"issInvalid": "Недопустимое значение `iss`. Должно быть `chat`.",
|
||||
"kidMismatch": "Идентификатор ключа (kid) не совпадает с `sub`.",
|
||||
"kidNotFound": "Отсутствует идентификатор ключа (kid).",
|
||||
"nbfFuture": "Значение `nbf` указывает на будущее.",
|
||||
"nbfInvalid": "Недопустимое значение `nbf`.",
|
||||
"payloadNotFound": "Отсутствует `payload`.",
|
||||
"tokenExpired": "Срок действия токена истек."
|
||||
},
|
||||
"tokenAuthFailedTitle": "Ошибка аутентификации",
|
||||
"tokenAuthFailedWithReasons": "Извините, вы не можете присоединиться к этому звонку. Возможные причины: {{reason}}",
|
||||
"tokenAuthUnsupported": "URL-адрес токена не поддерживается.",
|
||||
"transcribing": "Расшифровка",
|
||||
"unlockRoom": "Убрать $t(lockRoomPassword)",
|
||||
"user": "Пользователь",
|
||||
"userIdentifier": "Идентификатор пользователя",
|
||||
"userPassword": "пароль пользователя",
|
||||
"userPassword": "Пароль пользователя",
|
||||
"verifyParticipantConfirm": "Они совпадают",
|
||||
"verifyParticipantDismiss": "Они не совпадают",
|
||||
"verifyParticipantQuestion": "ЭКСПЕРИМЕНТАЛЬНО: Спросите участника {{participantName}}, видит ли он то же самое содержание, в том же порядке.",
|
||||
"verifyParticipantTitle": "Проверка пользователя",
|
||||
"videoLink": "Ссылка на видео",
|
||||
"viewUpgradeOptions": "Посмотреть варианты обновления",
|
||||
"viewUpgradeOptionsContent": "Чтобы получить неограниченный доступ к премиум-функциям, таким как запись, транскрипция, RTMP Streaming и т. д., вам необходимо обновить свой план.",
|
||||
"viewUpgradeOptionsTitle": "Вы обнаружили премиальную функцию!",
|
||||
"whiteboardLimitContent": "Извините, достигнут лимит одновременных пользователей интерактивной доски.",
|
||||
"whiteboardLimitReference": "Для получения дополнительной информации, пожалуйста, посетите",
|
||||
"whiteboardLimitReferenceUrl": "наш сайт",
|
||||
"whiteboardLimitTitle": "Использование интерактивной доски ограничено",
|
||||
"yourEntireScreen": "Весь экран"
|
||||
},
|
||||
"documentSharing": {
|
||||
@@ -431,6 +503,9 @@
|
||||
"title": "Встроить эту встречу"
|
||||
},
|
||||
"feedback": {
|
||||
"accessibilityLabel": {
|
||||
"yourChoice": "Ваш выбор: {{rating}}"
|
||||
},
|
||||
"average": "Средне",
|
||||
"bad": "Плохо",
|
||||
"detailsLabel": "Расскажите подробнее.",
|
||||
@@ -440,6 +515,11 @@
|
||||
"veryBad": "Очень плохо",
|
||||
"veryGood": "Очень хорошо"
|
||||
},
|
||||
"filmstrip": {
|
||||
"accessibilityLabel": {
|
||||
"heading": "Миниатюры видео"
|
||||
}
|
||||
},
|
||||
"giphy": {
|
||||
"noResults": "Результатов поиска не найдено :(",
|
||||
"search": "Поиск GIPHY"
|
||||
@@ -482,11 +562,16 @@
|
||||
"noNumbers": "Нет номеров для набора.",
|
||||
"noPassword": "нет",
|
||||
"noRoom": "Для набора номера не было указано ни одной комнаты.",
|
||||
"noWhiteboard": "Не удалось загрузить интерактивную доску.",
|
||||
"numbers": "Номера для набора",
|
||||
"password": "$t(lockRoomPasswordUppercase):",
|
||||
"reachedLimit": "Вы достигли лимита вашего плана.",
|
||||
"sip": "SIP адрес",
|
||||
"sipAudioOnly": "Адрес только для аудио SIP",
|
||||
"title": "Поделиться",
|
||||
"tooltip": "Поделитесь ссылкой и номером для подключения к этой конференции"
|
||||
"tooltip": "Поделитесь ссылкой и номером для подключения к этой конференции",
|
||||
"upgradeOptions": "Пожалуйста, проверьте варианты обновления на",
|
||||
"whiteboardError": "Ошибка загрузки интерактивной доски. Пожалуйста, попробуйте позже."
|
||||
},
|
||||
"inlineDialogFailure": {
|
||||
"msg": "Небольшая заминка.",
|
||||
@@ -588,13 +673,13 @@
|
||||
"knockingParticipantList": "Список ожидающих участников",
|
||||
"lobbyChatStartedNotification": "{{moderator}} начал лобби чат с {{attendee}}",
|
||||
"lobbyChatStartedTitle": "{{moderator}} начал лобби чат с вами.",
|
||||
"lobbyClosed": "Зал ожидания закрыт.",
|
||||
"nameField": "Введите ваше имя",
|
||||
"notificationLobbyAccessDenied": "{{originParticipantName}} запретил присоединиться {{targetParticipantName}}",
|
||||
"notificationLobbyAccessGranted": "{{originParticipantName}} разрешил присоединиться {{targetParticipantName}} ",
|
||||
"notificationLobbyDisabled": "Лобби отключено пользователем {{originParticipantName}}",
|
||||
"notificationLobbyEnabled": "Лобби включено пользователем {{originParticipantName}}",
|
||||
"notificationTitle": "Лобби",
|
||||
"passwordField": "Введите пароль встречи",
|
||||
"passwordJoinButton": "Присоединиться",
|
||||
"title": "Лобби",
|
||||
"toggleLabel": "Включить лобби"
|
||||
@@ -623,9 +708,12 @@
|
||||
"no": "Нет",
|
||||
"participant": "Участник",
|
||||
"participantStats": "Статистика участников",
|
||||
"selectTabTitle": "🎥 Пожалуйста, выберите эту вкладку для записи",
|
||||
"sessionToken": "Токен сессии",
|
||||
"start": "Начать запись",
|
||||
"stop": "Остановить запись",
|
||||
"stopping": "Остановка записи",
|
||||
"wait": "Пожалуйста, подождите, пока мы сохраняем вашу запись",
|
||||
"yes": "Да"
|
||||
},
|
||||
"lockRoomPassword": "пароль",
|
||||
@@ -645,8 +733,13 @@
|
||||
"connectedOneMember": "{{name}} присоединился к конференции",
|
||||
"connectedThreePlusMembers": "{{name}} и {{count}} других пользователей присоединились к конференции",
|
||||
"connectedTwoMembers": "{{first}} и {{second}} присоединились к конференции",
|
||||
"dataChannelClosed": "Качество видео ухудшилось",
|
||||
"dataChannelClosedDescription": "Канал связи был отключен, поэтому качество видео ограничено минимально возможным.",
|
||||
"disabledIframe": "Встраивание предназначено только для демонстрационных целей, поэтому этот вызов будет отключен через {{timeout}} минут.",
|
||||
"disabledIframeSecondary": "Встраивание {{domain}} предназначено только для демонстрационных целей, поэтому этот вызов будет отключен через {{timeout}} минут. Пожалуйста, используйте <a href='{{jaasDomain}}' rel='noopener noreferrer' target='_blank'>Jitsi как сервис</a> для встраивания в продакшн!",
|
||||
"disconnected": "соединение разорвано",
|
||||
"displayNotifications": "Отображение уведомлений для",
|
||||
"dontRemindMe": "Не напоминать мне",
|
||||
"focus": "Фокус встречи",
|
||||
"focusFail": "{{component}} недоступен, повторите через {{ms}} с",
|
||||
"gifsMenu": "GIPHY",
|
||||
@@ -690,7 +783,6 @@
|
||||
"newDeviceCameraTitle": "Обнаружена новая камера",
|
||||
"noiseSuppressionDesktopAudioDescription": "Шумоподавление не может быть включено при совместном использовании звука рабочего стола, пожалуйста, отключите его и повторите попытку.",
|
||||
"noiseSuppressionFailedTitle": "Не удалось запустить шумоподавление",
|
||||
"noiseSuppressionNoTrackDescription": "Пожалуйста, сначала включите звук микрофона.",
|
||||
"noiseSuppressionStereoDescription": "Шумоподавление стереозвука в настоящее время не поддерживается.",
|
||||
"oldElectronClientDescription1": "Похоже, вы используете старую версию клиента {{app}}, которая имеет известные уязвимости в системе безопасности. Убедитесь, что вы обновили до нашей ",
|
||||
"oldElectronClientDescription2": "последней версии",
|
||||
@@ -706,29 +798,38 @@
|
||||
"reactionSoundsForAll": "Отключить звуки для всех",
|
||||
"screenShareNoAudio": "Флажок «Поделиться аудио» не был отмечен на экране выбора окна.",
|
||||
"screenShareNoAudioTitle": "Не удалось поделиться системным звуком!",
|
||||
"screenSharingAudioOnlyDescription": "Пожалуйста, обратите внимание, что при демонстрации экрана вы влияете на режим «Наилучшая производительность» и увеличиваете пропускную способность.",
|
||||
"screenSharingAudioOnlyTitle": "Режим «Наилучшая производительность»",
|
||||
"selfViewTitle": "Вы всегда можете скрыть собственное изображение в настройках.",
|
||||
"somebody": "Кто-то",
|
||||
"startSilentDescription": "Перезайдите в конференцию, чтобы включить звук",
|
||||
"startSilentTitle": "У вас отсутствует звук!",
|
||||
"suboptimalBrowserWarning": "К сожалению, ваш браузер не полностью поддерживает данную систему вэбконференций. Мы работаем над проблемой, однако, пока рекомендуем вам воспользоваться <a href='{{recommendedBrowserPageLink}}' target='_blank'> следующими браузерами</a>.",
|
||||
"suboptimalExperienceTitle": "Предупреждение браузера",
|
||||
"suggestRecordingAction": "Начать",
|
||||
"suggestRecordingDescription": "Хотите начать запись?",
|
||||
"suggestRecordingTitle": "Записать эту встречу",
|
||||
"unmute": "Включить микрофон",
|
||||
"videoMutedRemotelyDescription": "Вы всегда можете включить его снова.",
|
||||
"videoMutedRemotelyTitle": "Ваше видео было отключено {{participantDisplayName}}",
|
||||
"videoUnmuteBlockedDescription": "Включение звука камеры и совместное использование рабочего стола временно заблокированы из-за системных ограничений.",
|
||||
"videoUnmuteBlockedTitle": "Включение камеры и общий доступ к рабочему столу заблокированы!",
|
||||
"viewLobby": "Смотреть лобби",
|
||||
"waitingParticipants": "{{waitingParticipants}} люди"
|
||||
"viewVisitors": "Просмотр посетителей",
|
||||
"waitingParticipants": "{{waitingParticipants}} люди",
|
||||
"whiteboardLimitDescription": "Пожалуйста, сохраните свои изменения, так как скоро будет достигнут лимит пользователей, и интерактивная доска будет закрыта.",
|
||||
"whiteboardLimitTitle": "Использование интерактивной доски"
|
||||
},
|
||||
"participantsPane": {
|
||||
"actions": {
|
||||
"admit": "Признать",
|
||||
"admitAll": "Признать все",
|
||||
"admit": "Разрешить",
|
||||
"admitAll": "Разрешить всем",
|
||||
"allow": "Разрешить",
|
||||
"allowVideo": "Разрешить видео",
|
||||
"askUnmute": "Попросить разрешение включить микрофон",
|
||||
"audioModeration": "Разрешить выключить микрофон",
|
||||
"blockEveryoneMicCamera": "Заблокировать у всех микрофон и камеру",
|
||||
"breakoutRooms": "Сессионные залы",
|
||||
"invite": "Пригласить",
|
||||
"moreModerationActions": "Дополнительные параметры модерации",
|
||||
"moreModerationControls": "Дополнительные элементы управления модерацией",
|
||||
@@ -736,7 +837,7 @@
|
||||
"mute": "Выключить звук",
|
||||
"muteAll": "Выключить звук у всех",
|
||||
"muteEveryoneElse": "Выключить микрофон у остальных",
|
||||
"reject": "Отказать",
|
||||
"reject": "Отклонить",
|
||||
"stopEveryonesVideo": "Выключить у всех камеру",
|
||||
"stopVideo": "Остановить видео",
|
||||
"unblockEveryoneMicCamera": "Разблокировать у всех микрофон и камеру",
|
||||
@@ -746,14 +847,17 @@
|
||||
"headings": {
|
||||
"lobby": "Лобби ({{count}})",
|
||||
"participantsList": "Список участников ({{count}})",
|
||||
"visitorRequests": " (запросы {{count}})",
|
||||
"visitors": "Посетители {{count}}",
|
||||
"waitingLobby": "Ожидают в лобби ({{count}})"
|
||||
},
|
||||
"search": "Поиск участников",
|
||||
"title": "Участники"
|
||||
},
|
||||
"passwordDigitsOnly": "До {{number}} цифр",
|
||||
"passwordSetRemotely": "установлен другим участником",
|
||||
"pinnedParticipant": "Участник запинен",
|
||||
"passwordSetRemotely": "Установлен другим участником",
|
||||
"pinParticipant": "{{participantName}} - Закрепить",
|
||||
"pinnedParticipant": "Участник закреплен",
|
||||
"polls": {
|
||||
"answer": {
|
||||
"skip": "Пропустить",
|
||||
@@ -771,6 +875,9 @@
|
||||
"removeOption": "Удалить вариант",
|
||||
"send": "Отправлять"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Варианты должны быть уникальными"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Откройте вкладку опросов, чтобы проголосовать",
|
||||
"title": "К этой встрече добавлен новый опрос"
|
||||
@@ -837,9 +944,12 @@
|
||||
"lookGood": "Кажется ваш микрофон работает правильно",
|
||||
"or": "или",
|
||||
"premeeting": "Перед подключением",
|
||||
"proceedAnyway": "Продолжить в любом случае",
|
||||
"recordingWarning": "Другие участники могут записывать этот звонок",
|
||||
"screenSharingError": "Ошибка показа экрана:",
|
||||
"showScreen": "Включить экран перед подключением",
|
||||
"startWithPhone": "Начать с телефонной связью",
|
||||
"unsafeRoomConsent": "Я понимаю риски и хочу присоединиться к встрече",
|
||||
"videoOnlyError": "Ошибка видео:",
|
||||
"videoTrackError": "Не удалось создать видео дорожку.",
|
||||
"viewAllNumbers": "посмотреть всех участников"
|
||||
@@ -902,21 +1012,31 @@
|
||||
"limitNotificationDescriptionNative": "Из-за высокой нагрузки ваша запись будет ограничена {{limit}} мин. Для неограниченного количества записей попробуйте <3> {{app}} </3>.",
|
||||
"limitNotificationDescriptionWeb": "Из-за высокой нагрузки ваша запись будет ограничена {{limit}} мин. Для неограниченного количества записей попробуйте <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
||||
"linkGenerated": "Мы создали ссылку на вашу запись.",
|
||||
"live": "В ЭФИРЕ",
|
||||
"localRecordingNoNotificationWarning": "Запись не будет объявлена другим участникам. Вам необходимо самостоятельно уведомить их о том, что встреча записывается.",
|
||||
"localRecordingNoVideo": "Видео не записывается",
|
||||
"localRecordingStartWarning": "Пожалуйста, убедитесь, что вы остановили запись перед выходом из встречи, чтобы сохранить её.",
|
||||
"localRecordingStartWarningTitle": "Остановите запись для сохранения",
|
||||
"localRecordingVideoStop": "Остановка вашего видео также остановит локальную запись. Вы уверены, что хотите продолжить?",
|
||||
"localRecordingVideoWarning": "Чтобы записать ваше видео, оно должно быть включено при начале записи",
|
||||
"localRecordingWarning": "Убедитесь, что вы выбрали текущую вкладку для использования правильного видео и аудио. Запись в настоящее время ограничена 1ГБ, что составляет около 100 минут.",
|
||||
"loggedIn": "Вошел как {{userName}}",
|
||||
"noMicPermission": "Не удалось создать аудиодорожку микрофона. Пожалуйста, предоставьте разрешение на использование микрофона.",
|
||||
"noStreams": "Аудио или видеопоток не обнаружен.",
|
||||
"off": "Запись остановлена",
|
||||
"offBy": "{{name}} остановил запись",
|
||||
"on": "Запись началась",
|
||||
"onBy": "{{name}} включил запись",
|
||||
"onlyRecordSelf": "Записать только мои аудио и видео потоки",
|
||||
"pending": "Подготовка записи конференции. . .",
|
||||
"rec": "ИДЕТ ЗАПИСЬ",
|
||||
"recordAudioAndVideo": "Запись аудио и видео",
|
||||
"recordTranscription": "Запись транскрипции",
|
||||
"saveLocalRecording": "Сохранить файл записи локально (Beta)",
|
||||
"serviceDescription": "Ваша запись будет сохранена соответствующей службой",
|
||||
"serviceDescriptionCloud": "Облачная запись",
|
||||
"serviceDescriptionCloudInfo": "Сохранённые записи автоматически удаляются спуся 24 часа со старта.",
|
||||
"serviceName": "Служба записи",
|
||||
"sessionAlreadyActive": "Этот сеанс уже записывается или транслируется в прямом эфире.",
|
||||
"showAdvancedOptions": "Расширенные настройки",
|
||||
"signIn": "Вход",
|
||||
"signOut": "Выход",
|
||||
"surfaceError": "Пожалуйста, выберите текущую вкладку.",
|
||||
@@ -925,14 +1045,21 @@
|
||||
"unavailableTitle": "Запись невозможна",
|
||||
"uploadToCloud": "Загрузить в облако"
|
||||
},
|
||||
"screenshareDisplayName": "Экран {{name}}",
|
||||
"sectionList": {
|
||||
"pullToRefresh": "Потяните для обновления"
|
||||
},
|
||||
"security": {
|
||||
"about": "Вы можете добавить к собранию $t(lockRoomPassword). Участникам необходимо будет предоставить $t(lockRoomPassword), прежде чем им будет разрешено присоединиться к собранию.",
|
||||
"aboutReadOnly": "Участники-модераторы могут добавить к собранию $t(lockRoomPassword). Участникам необходимо будет предоставить $t(lockRoomPassword), прежде чем им будет разрешено присоединиться к собранию.",
|
||||
"insecureRoomNameWarning": "Имя комнаты небезопасно. Нежелательные участники могут присоединиться к вашей конференции. Подумайте о том, чтобы защитить вашу встречу используя настройки безопасности.",
|
||||
"title": "Настройки безопасности"
|
||||
"insecureRoomNameWarningNative": "Название комнаты небезопасно. Нежелательные участники могут присоединиться к вашей встрече. {{recommendAction}} Узнайте больше о защите вашей встречи ",
|
||||
"insecureRoomNameWarningWeb": "Название комнаты небезопасно. Нежелательные участники могут присоединиться к вашей встрече. {{recommendAction}} Узнайте больше о защите вашей встречи <a href=\"{{securityUrl}}\" rel=\"security\" target=\"_blank\">здесь</a>.",
|
||||
"title": "Настройки безопасности",
|
||||
"unsafeRoomActions": {
|
||||
"meeting": "Рассмотрите возможность защиты вашей встречи с использованием кнопки безопасности.",
|
||||
"prejoin": "Рассмотрите возможность использования более уникального имени встречи.",
|
||||
"welcome": "Рассмотрите возможность использования более уникального имени встречи или выберите одно из предложений."
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"audio": "Звук",
|
||||
@@ -953,6 +1080,7 @@
|
||||
"incomingMessage": "Входящее сообщение",
|
||||
"language": "Язык",
|
||||
"loggedIn": "Вошел как {{name}}",
|
||||
"maxStageParticipants": "Максимальное количество участников, которых можно закрепить на главной сцене (ЭКСПЕРИМЕНТАЛЬНО)",
|
||||
"microphones": "Микрофоны",
|
||||
"moderator": "Модератор",
|
||||
"moderatorOptions": "Настройки модератора",
|
||||
@@ -985,6 +1113,7 @@
|
||||
"alertOk": "OK",
|
||||
"alertTitle": "Внимание",
|
||||
"alertURLText": "Ошибка адреса сервера",
|
||||
"apply": "Применить",
|
||||
"buildInfoSection": "Информация о сборке",
|
||||
"conferenceSection": "Номера для набора",
|
||||
"disableCallIntegration": "Отключить встроенную интеграцию вызовов",
|
||||
@@ -992,12 +1121,17 @@
|
||||
"disableCrashReportingWarning": "Вы действительно хотите отключить отчеты о сбоях? Настройка будет применена после перезапуска приложения.",
|
||||
"disableP2P": "Отключить режим Peer-To-Peer",
|
||||
"displayName": "Отображаемое имя",
|
||||
"displayNamePlaceholderText": "Например: Иван Иванов",
|
||||
"email": "Email",
|
||||
"emailPlaceholderText": "email@example.com",
|
||||
"gavatarMessage": "Если ваш email связан с аккаунтом Gravatar, мы будем использовать его в качестве изображения вашего профиля.",
|
||||
"goTo": "Перейти к",
|
||||
"header": "Настройки",
|
||||
"help": "Помощь",
|
||||
"links": "Ссылки",
|
||||
"privacy": "Конфиденциальность",
|
||||
"profileSection": "Профиль",
|
||||
"sdkVersion": "Версия SDK",
|
||||
"serverURL": "Адрес сервера",
|
||||
"showAdvanced": "Показать дополнительные настройки",
|
||||
"startCarModeInLowBandwidthMode": "Включать упрощенный режим на ограниченном канале",
|
||||
@@ -1042,6 +1176,7 @@
|
||||
"termsView": {
|
||||
"title": "Условия"
|
||||
},
|
||||
"toggleTopPanelLabel": "Переключить верхнюю панель",
|
||||
"toolbar": {
|
||||
"Settings": "Настройки",
|
||||
"accessibilityLabel": {
|
||||
@@ -1049,24 +1184,35 @@
|
||||
"audioOnly": "Вкл/Выкл только звук",
|
||||
"audioRoute": "Выбрать аудиоустройство",
|
||||
"boo": "Бу",
|
||||
"breakoutRoom": "Войти/выйти из сессионного зала",
|
||||
"breakoutRooms": "Сессионные залы",
|
||||
"callQuality": "Качество связи",
|
||||
"carmode": "Упрощенный режим",
|
||||
"cc": "Вкл/Выкл субтитры",
|
||||
"chat": "Показать/скрыть окно чата",
|
||||
"clap": "Хлопок",
|
||||
"closeChat": "Закрыть чат",
|
||||
"closeMoreActions": "Закрыть меню дополнительных действий",
|
||||
"closeParticipantsPane": "Закрыть панель участников",
|
||||
"collapse": "Крах",
|
||||
"document": "Закрыть общий документ",
|
||||
"documentClose": "Закрыть общий документ",
|
||||
"documentOpen": "Открыть общий документ",
|
||||
"download": "Скачать приложение",
|
||||
"embedMeeting": "Встроить встречу",
|
||||
"endConference": "Завершить встречу для всех",
|
||||
"enterFullScreen": "Перейти в полноэкранный режим",
|
||||
"enterTileView": "Включить режим плитки",
|
||||
"exitFullScreen": "Выйти из полноэкранного режима",
|
||||
"exitTileView": "Выйти из режима плитки",
|
||||
"expand": "Расширять",
|
||||
"feedback": "Оставить отзыв",
|
||||
"fullScreen": "Полноэкранный/оконный режим",
|
||||
"giphy": "Показать GIPHY меню",
|
||||
"grantModerator": "Сделать модератором",
|
||||
"hangup": "Завершить звонок",
|
||||
"heading": "Панель инструментов",
|
||||
"help": "Справка",
|
||||
"hideWhiteboard": "Скрыть интерактивную доску",
|
||||
"invite": "Пригласить",
|
||||
"kick": "Отключить участника",
|
||||
"laugh": "Смех",
|
||||
@@ -1076,6 +1222,7 @@
|
||||
"lobbyButton": "Вкл/Выкл режим лобби",
|
||||
"localRecording": "Вкл/Выкл кнопки записи",
|
||||
"lockRoom": "Установить пароль",
|
||||
"lowerHand": "Опустить руку",
|
||||
"moreActions": "Показать/скрыть меню доп. настроек",
|
||||
"moreActionsMenu": "Меню доп. настроек",
|
||||
"moreOptions": "Меню доп. настроек",
|
||||
@@ -1084,12 +1231,15 @@
|
||||
"muteEveryoneElse": "Заглушить всех остальных",
|
||||
"muteEveryoneElsesVideoStream": "Остановить чужое видео",
|
||||
"muteEveryonesVideoStream": "Остановить видео для всех",
|
||||
"muteGUMPending": "Подключение вашего микрофона",
|
||||
"noiseSuppression": "Шумоподавление",
|
||||
"openChat": "Открыть чат",
|
||||
"participants": "Участники",
|
||||
"pip": "Вкл/Выкл режим Картинка-в-картинке",
|
||||
"privateMessage": "Отправить личное сообщение",
|
||||
"profile": "Редактировать профиль",
|
||||
"raiseHand": "Поднять руку",
|
||||
"reactions": "Реакции",
|
||||
"reactionsMenu": "Открыть/закрыть меню реакций",
|
||||
"recording": "Вкл/Выкл запись",
|
||||
"remoteMute": "Отключить участнику микрофон",
|
||||
@@ -1103,15 +1253,20 @@
|
||||
"sharedvideo": "Вкл/Выкл Youtube - трансляцию",
|
||||
"shortcuts": "Вкл/Выкл значки",
|
||||
"show": "Показать крупным планом",
|
||||
"showWhiteboard": "Показать интерактивную доску",
|
||||
"silence": "Тишина",
|
||||
"speakerStats": "Вкл/Выкл статистику",
|
||||
"stopScreenSharing": "Прекратить демонстрацию экрана",
|
||||
"stopSharedVideo": "Остановить видео",
|
||||
"surprised": "Удивлен",
|
||||
"tileView": "Вкл/Выкл плитку",
|
||||
"toggleCamera": "Переключить камеру",
|
||||
"toggleFilmstrip": "Включить диафильм",
|
||||
"unmute": "Включить микрофон",
|
||||
"videoblur": "Вкл/Выкл размытие фона",
|
||||
"videomute": "Вкл/Выкл видео",
|
||||
"whiteboard": "Показать / Скрыть интерактивную доску"
|
||||
"videomuteGUMPending": "Подключение вашей камеры",
|
||||
"videounmute": "Включить камеру"
|
||||
},
|
||||
"addPeople": "Добавить людей к вашему сеансу связи",
|
||||
"audioOnlyOff": "Включить видео (стандартный режим)",
|
||||
@@ -1124,6 +1279,7 @@
|
||||
"chat": "Чат",
|
||||
"clap": "Аплодисменты",
|
||||
"closeChat": "Закрыть чат",
|
||||
"closeParticipantsPane": "Закрыть панель участников",
|
||||
"closeReactionsMenu": "Закрыть меню реакций",
|
||||
"disableNoiseSuppression": "Выключить шумоподавление",
|
||||
"disableReactionSounds": "Выключить звуки реакций",
|
||||
@@ -1160,6 +1316,7 @@
|
||||
"mute": "Микрофон (вкл./выкл.)",
|
||||
"muteEveryone": "Выкл. микрофон у всех",
|
||||
"muteEveryonesVideo": "Выкл. камеру у всех",
|
||||
"muteGUMPending": "Подключение вашего микрофона",
|
||||
"noAudioSignalDesc": "Если вы специально не отключали микрофон в системных настройках, подумайте о том, чтобы поменять его.",
|
||||
"noAudioSignalDescSuggestion": "Если вы специально не отключали микрофон в системных настройках, вы можете попробовать использовать следующее устройство:",
|
||||
"noAudioSignalDialInDesc": "Вы можете также дозвониться используя:",
|
||||
@@ -1179,9 +1336,10 @@
|
||||
"reactionBoo": "Отправить бу реакцию",
|
||||
"reactionClap": "Отправить реакцию аплодисментов",
|
||||
"reactionLaugh": "Отправить реакцию смеха",
|
||||
"reactionLike": "Отправить реакцию \"палец вверх\"",
|
||||
"reactionLike": "Отправить реакцию «палец вверх»",
|
||||
"reactionSilence": "Отправить реакцию тишины",
|
||||
"reactionSurprised": "Отправить удивленную реакцию",
|
||||
"reactions": "Реакции",
|
||||
"security": "Настройки безопасности",
|
||||
"selectBackground": "Выбрать фоновое изображение",
|
||||
"shareRoom": "Отправить приглашение",
|
||||
@@ -1201,21 +1359,26 @@
|
||||
"talkWhileMutedPopup": "Пытаетесь говорить? У вас отключен звук.",
|
||||
"tileViewToggle": "Вкл/выкл плитку",
|
||||
"toggleCamera": "Переключить камеру",
|
||||
"unmute": "Включить микрофон",
|
||||
"videoSettings": "Настройка видео",
|
||||
"videomute": "Камера"
|
||||
"videomute": "Камера",
|
||||
"videomuteGUMPending": "Подключение вашей камеры",
|
||||
"videounmute": "Включить камеру"
|
||||
},
|
||||
"transcribing": {
|
||||
"ccButtonTooltip": "Вкл. / Выкл. субтитры",
|
||||
"error": "Ошибка записи. Пожалуйста, попробуйте позже.",
|
||||
"expandedLabel": "Транскрипция включена",
|
||||
"failedToStart": "Неудалось начать расшифровку",
|
||||
"labelToolTip": "Создается транскрипция конференции.",
|
||||
"off": "Расшифровка остановлена",
|
||||
"pending": "Подготовка расшифровки конференции...",
|
||||
"sourceLanguageDesc": "В настоящее время язык встречи установлен на <b>{{sourceLanguage}}</b>. <br/> Вы можете изменить его ",
|
||||
"sourceLanguageHere": "здесь",
|
||||
"start": "Вкл/Выкл показ субтитров",
|
||||
"stop": "Вкл/Выкл показ субтитров",
|
||||
"subtitles": "Субтитры",
|
||||
"subtitlesOff": "Выкл",
|
||||
"tr": "TR"
|
||||
},
|
||||
"unpinParticipant": "{{participantName}} - Открепить",
|
||||
"userMedia": {
|
||||
"androidGrantPermissions": "Выберите <b><i>Разрешить</i></b>, когда браузер спросит о разрешениях.",
|
||||
"chromeGrantPermissions": "Выберите <b><i>Разрешить</i></b>, когда браузер спросит о разрешениях.",
|
||||
@@ -1262,6 +1425,7 @@
|
||||
},
|
||||
"videothumbnail": {
|
||||
"connectionInfo": "Информация о соединении",
|
||||
"demote": "Переместить к посетителям",
|
||||
"domute": "Выключить звук",
|
||||
"domuteOthers": "Выключить звук остальным",
|
||||
"domuteVideo": "Выключить видео",
|
||||
@@ -1285,6 +1449,10 @@
|
||||
"videomute": "Участник выключил камеру"
|
||||
},
|
||||
"virtualBackground": {
|
||||
"accessibilityLabel": {
|
||||
"currentBackground": "Текущий фон: {{background}}",
|
||||
"selectBackground": "Выбрать фон"
|
||||
},
|
||||
"addBackground": "Добавить фон",
|
||||
"apply": "Применять",
|
||||
"backgroundEffectError": "Не удалось применить фоновый эффект.",
|
||||
@@ -1308,6 +1476,15 @@
|
||||
"webAssemblyWarning": "WebAssembly не поддерживается",
|
||||
"webAssemblyWarningDescription": "WebAssembly отключен или не поддерживается этим браузером"
|
||||
},
|
||||
"visitors": {
|
||||
"chatIndicator": "(посетитель)",
|
||||
"labelTooltip": "Количество посетителей: {{count}}",
|
||||
"notification": {
|
||||
"demoteDescription": "Перемещён сюда пользователем {{actor}}, поднимите руку, чтобы участвовать",
|
||||
"description": "Чтобы участвовать, поднимите руку",
|
||||
"title": "Вы посетитель на встрече"
|
||||
}
|
||||
},
|
||||
"volumeSlider": "Ползунок громкости",
|
||||
"welcomepage": {
|
||||
"accessibilityLabel": {
|
||||
@@ -1364,6 +1541,7 @@
|
||||
"whiteboard": {
|
||||
"accessibilityLabel": {
|
||||
"heading": "Интерактивная доска"
|
||||
}
|
||||
},
|
||||
"screenTitle": "Интерактивная доска"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -772,6 +772,9 @@
|
||||
"removeOption": "Boga s'optzione",
|
||||
"send": "Imbia"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Sas optziones depent èssere ùnicas"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Aberi ischeda de sondàgiu pro votare",
|
||||
"title": "Sondàgiu nou agiuntu a sa riunione"
|
||||
|
||||
@@ -547,6 +547,11 @@
|
||||
},
|
||||
"passwordDigitsOnly": "až {{number}} číslic",
|
||||
"passwordSetRemotely": "nastavené iným účastníkom",
|
||||
"polls": {
|
||||
"errors": {
|
||||
"notUniqueOption": "Možnosti musia byť jedinečné"
|
||||
}
|
||||
},
|
||||
"poweredby": "založené na",
|
||||
"prejoin": {
|
||||
"audioAndVideoError": "Chyba zvuku a videa:",
|
||||
|
||||
@@ -668,6 +668,9 @@
|
||||
"removeOption": "Odstrani možnost",
|
||||
"send": "Pošlji"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Možnosti morajo biti edinstvene"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Odpri zavihek z anketami za glasovanje",
|
||||
"title": "V sestanek je bila dodana nova anketa"
|
||||
|
||||
@@ -872,6 +872,9 @@
|
||||
"removeOption": "Hiqe mundësinë",
|
||||
"send": "Dërgoje"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Opsionet duhet të jenë unike"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Që të votoni, hapni skedën e pyetësorëve",
|
||||
"title": "Te ky takim u shtua një pyetësor i ri"
|
||||
|
||||
@@ -447,6 +447,11 @@
|
||||
},
|
||||
"passwordDigitsOnly": "",
|
||||
"passwordSetRemotely": "",
|
||||
"polls": {
|
||||
"errors": {
|
||||
"notUniqueOption": "Опције морају бити јединствене"
|
||||
}
|
||||
},
|
||||
"poweredby": "",
|
||||
"prejoin": {
|
||||
"audioAndVideoError": "Грешка звука и видеа:",
|
||||
|
||||
@@ -804,6 +804,9 @@
|
||||
"removeOption": "Ta bort alternativ",
|
||||
"send": "Skicka"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Alternativ måste vara unika"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Öppna fliken omröstningar för att rösta",
|
||||
"title": "En ny omröstning har blivit tillagd till detta möte"
|
||||
|
||||
@@ -577,6 +577,11 @@
|
||||
},
|
||||
"passwordDigitsOnly": "{{number}} అంకెల వరకు",
|
||||
"passwordSetRemotely": "మరో సదస్యులు అమర్చారు",
|
||||
"polls": {
|
||||
"errors": {
|
||||
"notUniqueOption": "ఎంపికలు ప్రత్యేకంగా ఉండాలి"
|
||||
}
|
||||
},
|
||||
"poweredby": "శక్తిమంతం",
|
||||
"prejoin": {
|
||||
"audioAndVideoError": "Audio and video error:",
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
{
|
||||
"addPeople": {
|
||||
"accessibilityLabel": {
|
||||
"meetingLink": "Toplantı linki: {{url}}"
|
||||
},
|
||||
"add": "Davet et",
|
||||
"addContacts": "Kişilerinizi davet edin",
|
||||
"contacts": "kişiler",
|
||||
@@ -39,6 +42,18 @@
|
||||
"audioOnly": {
|
||||
"audioOnly": "Düşük bant genişliği"
|
||||
},
|
||||
"bandwidthSettings": {
|
||||
"assumedBandwidthBps": "örneğin 10 Mbps için 10000000",
|
||||
"assumedBandwidthBpsWarning": "Daha yüksek değerler ağ sorunlarına neden olabilir.",
|
||||
"customValue": "özel değer",
|
||||
"customValueEffect": "gerçek bps değerini ayarlamak için",
|
||||
"leaveEmpty": "boş bırak",
|
||||
"leaveEmptyEffect": "tahminlerin gerçekleşmesine izin vermek için",
|
||||
"possibleValues": "Olası değerler",
|
||||
"setAssumedBandwidthBps": "Varsayılan bant genişliği (bps)",
|
||||
"title": "Bant genişliği ayarları",
|
||||
"zeroEffect": "videoyu devre dışı bırakmak için"
|
||||
},
|
||||
"breakoutRooms": {
|
||||
"actions": {
|
||||
"add": "Alt oda ekle",
|
||||
@@ -48,15 +63,22 @@
|
||||
"leaveBreakoutRoom": "Alt odadan çık",
|
||||
"more": "Daha",
|
||||
"remove": "Sil",
|
||||
"rename": "Yeniden adlandır",
|
||||
"renameBreakoutRoom": "Alt odasını yeniden adlandırın",
|
||||
"sendToBreakoutRoom": "Katılımcıya gönder:"
|
||||
},
|
||||
"breakoutList": "Alt listesi",
|
||||
"buttonLabel": "Alt odalar",
|
||||
"defaultName": "Alt oda #{{index}}",
|
||||
"hideParticipantList": "Katılımcı listesini gizle",
|
||||
"mainRoom": "Ana oda",
|
||||
"notifications": {
|
||||
"joined": "\"{{name}}\" alt odasına giriliyor",
|
||||
"joinedMainRoom": "Ana odaya giriliyor",
|
||||
"joinedTitle": "Alt Odalar"
|
||||
}
|
||||
},
|
||||
"showParticipantList": "Katılımcı listesini göster",
|
||||
"title": "Alt Odalar"
|
||||
},
|
||||
"calendarSync": {
|
||||
"addMeetingURL": "Bir toplantı bağlantısı ekle",
|
||||
@@ -106,6 +128,7 @@
|
||||
"privateNotice": "{{recipient}} için özel mesaj",
|
||||
"sendButton": "Gönder",
|
||||
"smileysPanel": "Emoji paneli",
|
||||
"systemDisplayName": "Sistem",
|
||||
"tabs": {
|
||||
"chat": "Sohbet",
|
||||
"polls": "Anket"
|
||||
@@ -147,6 +170,7 @@
|
||||
"bridgeCount": "Sunucu sayısı: ",
|
||||
"codecs": "Kodekler (A/V): ",
|
||||
"connectedTo": "Bağlandı şuna:",
|
||||
"e2eeVerified": "E2EE doğrulandı",
|
||||
"framerate": "Çerçeve hızı:",
|
||||
"less": "Daha az göster",
|
||||
"localaddress": "Yerel adres:",
|
||||
@@ -155,6 +179,7 @@
|
||||
"localport_plural": "Yerel portlar:",
|
||||
"maxEnabledResolution": "maksimumu gönder",
|
||||
"more": "Daha fazla göster",
|
||||
"no": "hayır",
|
||||
"packetloss": "Paket kaybı:",
|
||||
"participant_id": "Katılımcı id:",
|
||||
"quality": {
|
||||
@@ -173,7 +198,8 @@
|
||||
"status": "Bağlantı:",
|
||||
"transport": "Transport:",
|
||||
"transport_plural": "Transportlar:",
|
||||
"video_ssrc": "Video SSRC:"
|
||||
"video_ssrc": "Video SSRC:",
|
||||
"yes": "evet"
|
||||
},
|
||||
"dateUtils": {
|
||||
"earlier": "Daha eski",
|
||||
@@ -183,13 +209,23 @@
|
||||
"deepLinking": {
|
||||
"appNotInstalled": "Bu toplantıya katılmak için {{app}} uygulamasına ihtiyacınız var.",
|
||||
"description": "Hiçbir şey olmadı mı? Toplantınızı {{app}} masaüstü uygulamasında başlatmaya çalıştık. Tekrar deneyin veya {{app}} web uygulamasını açın.",
|
||||
"descriptionNew": "Hiçbir şey olmadı? Toplantınızı {{app}} masaüstü uygulamasında başlatmayı denedik. <br /><br /> Tekrar deneyebilir veya web üzerinde başlatabilirsiniz.",
|
||||
"descriptionWithoutWeb": "Hiçbir şey olmadı? Toplantınızı {{app}} masaüstü uygulamasında başlatmayı denedik.",
|
||||
"downloadApp": "Uygulamayı indir",
|
||||
"downloadMobileApp": "App Store'dan indirin",
|
||||
"ifDoNotHaveApp": "Henüz uygulamanız yoksa:",
|
||||
"ifHaveApp": "Uygulamanız zaten varsa: ",
|
||||
"joinInApp": "Uygulamayı kullanarak bu toplantıya katıl",
|
||||
"joinInAppNew": "Uygulamaya katıl",
|
||||
"joinInBrowser": "Tarayıcıya katıl",
|
||||
"launchMeetingLabel": "Bu toplantıya nasıl katılmak istersiniz?",
|
||||
"launchWebButton": "Web'de aç",
|
||||
"noDesktopApp": "Uygulamanız yok mu?",
|
||||
"noMobileApp": "Uygulamanız yok mu?",
|
||||
"or": "VEYA",
|
||||
"termsAndConditions": "Devam ederek <a href='{{termsAndConditionsLink}}' rel='noopener noreferrer' target='_blank'>şartlar ve koşullarımızı</a> kabul etmiş olursunuz.",
|
||||
"title": "Toplantınız {{app}} uygulamasında açılıyor...",
|
||||
"titleNew": "Toplantınız başlatılıyor...",
|
||||
"tryAgainButton": "Masaüstünde tekrar deneyin",
|
||||
"unsupportedBrowser": "Şu an kullandığınız tarayıcıyı desteklemiyoruz."
|
||||
},
|
||||
@@ -202,6 +238,12 @@
|
||||
"microphonePermission": "Mikrofon erişim izni alınamadı"
|
||||
},
|
||||
"deviceSelection": {
|
||||
"hid": {
|
||||
"callControl": "Çağrı kontrolü",
|
||||
"connectedDevices": "Bağlı cihazlar:",
|
||||
"deleteDevice": "Cihazı sil",
|
||||
"pairDevice": "Cihazı eşleştir"
|
||||
},
|
||||
"noPermission": "İzin alınamadı",
|
||||
"previewUnavailable": "Önizleme mevcut değil",
|
||||
"selectADevice": "Bir cihaz seç",
|
||||
@@ -226,12 +268,18 @@
|
||||
"WaitingForHostTitle": "Toplantı sahibi bekleniyor ...",
|
||||
"Yes": "Evet",
|
||||
"accessibilityLabel": {
|
||||
"liveStreaming": "Canlı akış"
|
||||
"Cancel": "İptal et (iletişim kutusundan ayrıl)",
|
||||
"Ok": "Tamam (kaydet ve diyalogdan ayrıl)",
|
||||
"close": "İletişim kutusunu kapat",
|
||||
"liveStreaming": "Canlı akış",
|
||||
"sharingTabs": "Paylaşım seçenekleri"
|
||||
},
|
||||
"add": "Ekle",
|
||||
"addMeetingNote": "",
|
||||
"addOptionalNote": "",
|
||||
"allow": "İzin ver",
|
||||
"allowToggleCameraDialog": "{{initiatorName}}'ın kameraya bakma modunu değiştirmesine izin veriyor musunuz?",
|
||||
"allowToggleCameraTitle": "Kamerayı değiştirmeye izin verilsin mi?",
|
||||
"alreadySharedVideoMsg": "Başka bir katılımcı zaten bir video paylaşıyor. Bu konferans aynı anda yalnızca bir paylaşılan videoya izin verir.",
|
||||
"alreadySharedVideoTitle": "Aynı anda yalnızca bir paylaşılan videoya izin verilir.",
|
||||
"applicationWindow": "Uygulama penceresi",
|
||||
@@ -258,6 +306,8 @@
|
||||
"contactSupport": "Destek ekibine erişin",
|
||||
"copied": "Kopyalandı",
|
||||
"copy": "Kopyala",
|
||||
"demoteParticipantDialog": "Bu katılımcıyı ziyaretçiye taşımak istediğinizden emin misiniz?",
|
||||
"demoteParticipantTitle": "Ziyaretçiye taşı",
|
||||
"dismiss": "Son ver",
|
||||
"displayNameRequired": "Merhaba, görünmesini istediğin ismin nedir?",
|
||||
"done": "Bitti",
|
||||
@@ -292,6 +342,7 @@
|
||||
"lockRoom": "Toplantı parolası ekle",
|
||||
"lockTitle": "Kilitlenemedi",
|
||||
"login": "Giriş",
|
||||
"loginQuestion": "Oturum açıp konferanstan ayrılmak istediğinizden emin misiniz?",
|
||||
"logoutQuestion": "Oturumu kapatmak ve toplantıyı durdurmak istediğinizden emin misiniz?",
|
||||
"logoutTitle": "Oturumu kapat",
|
||||
"maxUsersLimitReached": "Maksimum katılımcı sayısı sınırına ulaşıldı. Toplantı dolu. Lütfen toplantı sahibiyle iletişime geçin veya daha sonra tekrar deneyin!",
|
||||
@@ -335,8 +386,6 @@
|
||||
"permissionCameraRequiredError": "Videolu konferanslara katılmak için kamera izni gereklidir. Lütfen ayarlardan izin verin",
|
||||
"permissionErrorTitle": "İzin gerekli",
|
||||
"permissionMicRequiredError": "Konferanslara sesli olarak katılmak için lütfen mikrofon izni gereklidir. Lütfen ayarlardan izin verin",
|
||||
"popupError": "Tarayıcınız bu siteden açılan pencereleri engelliyor. Lütfen tarayıcınızın güvenlik ayarlarından açılır pencereleri etkinleştirin ve tekrar deneyin.",
|
||||
"popupErrorTitle": "Açılır pencere engellendi",
|
||||
"readMore": "daha fazla",
|
||||
"recentlyUsedObjects": "Son zamanlarda kullandığınız objeler",
|
||||
"recording": "Kaydediliyor",
|
||||
@@ -353,6 +402,8 @@
|
||||
"removePassword": "Parolayı kaldır",
|
||||
"removeSharedVideoMsg": "Paylaşılan videonuzu kaldırmak istediğinizden emin misiniz?",
|
||||
"removeSharedVideoTitle": "Paylaşılan videoyu kaldır",
|
||||
"renameBreakoutRoomLabel": "Oda adı",
|
||||
"renameBreakoutRoomTitle": "Alt odasını yeniden adlandırın",
|
||||
"reservationError": "Rezervasyon sistemi hatası",
|
||||
"reservationErrorMsg": "Hata kodu: {{code}}, mesaj: {{msg}}",
|
||||
"retry": "Yeniden Dene",
|
||||
@@ -372,8 +423,10 @@
|
||||
"sendPrivateMessageTitle": "Özel olarak gönderilsin mi?",
|
||||
"serviceUnavailable": "Hizmet kullanılamıyor",
|
||||
"sessTerminated": "Arama sonlandırıldı",
|
||||
"sessTerminatedReason": "Toplantı sonlandırıldı",
|
||||
"sessionRestarted": "Çağrı köprü tarafından yeniden başlatıldı",
|
||||
"shareAudio": "Devam",
|
||||
"shareAudioAltText": "istediğiniz içeriği paylaşmak için \"Tarayıcı Sekmesi\"ne gidin, içeriği seçin, \"sesi paylaş\" onay işaretini etkinleştirin ve ardından \"paylaş\" düğmesini tıklayın",
|
||||
"shareAudioTitle": "Ses nasıl paylaşılır",
|
||||
"shareAudioWarningD1": "sesinizi paylaşmadan önce ekran paylaşımını durdurmanız gerekiyor.",
|
||||
"shareAudioWarningD2": "ekran paylaşımınızı yeniden başlatmanız ve \"sesi paylaş\" seçeneğini işaretlemeniz gerekiyor.",
|
||||
@@ -403,16 +456,42 @@
|
||||
"thankYou": "{{appName}} kullandığınız için teşekkürler!",
|
||||
"token": "token",
|
||||
"tokenAuthFailed": "Üzgünüz, bu görüşmeye katılmanıza izin verilmiyor.",
|
||||
"tokenAuthFailedReason": {
|
||||
"audInvalid": "Geçersiz `aud` değeri. 'jitsi' olmalı.",
|
||||
"contextNotFound": "Yükte `context` nesnesi eksik.",
|
||||
"expInvalid": "Geçersiz `exp` değeri.",
|
||||
"featureInvalid": "Geçersiz özellik: {{feature}}, büyük olasılıkla henüz uygulanmadı.",
|
||||
"featureValueInvalid": "Özellik için geçersiz değer: {{feature}}.",
|
||||
"featuresNotFound": "`features` nesnesi yükte eksik.",
|
||||
"headerNotFound": "Başlık eksik.",
|
||||
"issInvalid": "Geçersiz `iss` değeri. `chat` olmalıdır.",
|
||||
"kidMismatch": "Anahtar Kimliği (kid) alt öğeyle eşleşmiyor.",
|
||||
"kidNotFound": "Eksik Anahtar Kimliği (kid).",
|
||||
"nbfFuture": "`nbf` değeri gelecektedir.",
|
||||
"nbfInvalid": "Geçersiz `nbf` değeri.",
|
||||
"payloadNotFound": "Yük eksik.",
|
||||
"tokenExpired": "Token'ın süresi doldu."
|
||||
},
|
||||
"tokenAuthFailedTitle": "Kimlik doğrulama başarısız",
|
||||
"tokenAuthFailedWithReasons": "Üzgünüz, bu görüşmeye katılmanıza izin verilmiyor. Olası nedenler: {{reason}}",
|
||||
"tokenAuthUnsupported": "Token URL'si desteklenmiyor.",
|
||||
"transcribing": "Deşifre ediliyor",
|
||||
"unlockRoom": "Toplantı parolasını kaldır",
|
||||
"user": "Kullanıcı",
|
||||
"userIdentifier": "Kullanıcı tanımlayıcı",
|
||||
"userPassword": "Kullancı parolası",
|
||||
"verifyParticipantConfirm": "Eşleşiyorlar",
|
||||
"verifyParticipantDismiss": "Eşleşmiyorlar",
|
||||
"verifyParticipantQuestion": "DENEYSEL: {{participantName}} adlı katılımcıya aynı içeriği aynı sırayla görüp görmediklerini sorun.",
|
||||
"verifyParticipantTitle": "Kullanıcı doğrulama",
|
||||
"videoLink": "Video bağlantısı",
|
||||
"viewUpgradeOptions": "Yükseltme seçeneklerini görüntüle",
|
||||
"viewUpgradeOptionsContent": "Kayıt, çeviri yazılar, RTMP Akışı ve daha fazlası gibi premium özelliklere sınırsız erişim elde etmek için planınızı yükseltmeniz gerekir.",
|
||||
"viewUpgradeOptionsTitle": "Premium bir özellik keşfettiniz!",
|
||||
"whiteboardLimitContent": "Üzgünüz, eşzamanlı beyaz tahta kullanıcılarının sınırına ulaşıldı.",
|
||||
"whiteboardLimitReference": "Daha fazla bilgi için lütfen şu adresi ziyaret edin",
|
||||
"whiteboardLimitReferenceUrl": "web sitemiz",
|
||||
"whiteboardLimitTitle": "Beyaz tahta kullanımı kısıtlandı",
|
||||
"yourEntireScreen": "Tüm ekranınız"
|
||||
},
|
||||
"documentSharing": {
|
||||
@@ -425,6 +504,9 @@
|
||||
"title": "Bu toplantıyı yerleştir"
|
||||
},
|
||||
"feedback": {
|
||||
"accessibilityLabel": {
|
||||
"yourChoice": "Seçiminiz: {{rating}}"
|
||||
},
|
||||
"average": "Orta",
|
||||
"bad": "Kötü",
|
||||
"detailsLabel": "Bize daha fazla bilgi verin.",
|
||||
@@ -434,13 +516,15 @@
|
||||
"veryBad": "Çok kötü",
|
||||
"veryGood": "Çok iyi"
|
||||
},
|
||||
"filmstrip": {
|
||||
"accessibilityLabel": {
|
||||
"heading": "Video küçük resimleri"
|
||||
}
|
||||
},
|
||||
"giphy": {
|
||||
"noResults": "Sonuç yok :(",
|
||||
"search": "GIPHY ara"
|
||||
},
|
||||
"helpView": {
|
||||
"title": "Yardım merkezi"
|
||||
},
|
||||
"incomingCall": {
|
||||
"answer": "Cevapla",
|
||||
"audioCallTitle": "Gelen sesli arama",
|
||||
@@ -479,13 +563,16 @@
|
||||
"noNumbers": "Arama numarası yok",
|
||||
"noPassword": "Yok",
|
||||
"noRoom": "Aranacak oda belirtilmedi.",
|
||||
"noWhiteboard": "Beyaz tahta yüklenemedi.",
|
||||
"numbers": "Arama Numaraları",
|
||||
"password": "Parola:",
|
||||
"reachedLimit": "Plan limitlerine ulaştınız.",
|
||||
"sip": "SIP adresi",
|
||||
"sipAudioOnly": "Yalnızca SIP ses adresi",
|
||||
"title": "Paylaş",
|
||||
"tooltip": "Bu toplantı için bağlantıyı ve arama bilgilerini paylaşın",
|
||||
"upgradeOptions": "Lütfen yükseltme seçeneklerini kontrol ediniz."
|
||||
"upgradeOptions": "Lütfen yükseltme seçeneklerini kontrol ediniz.",
|
||||
"whiteboardError": "Beyaz tahta yüklenirken hata oluştu. Lütfen daha sonra tekrar deneyin."
|
||||
},
|
||||
"inlineDialogFailure": {
|
||||
"msg": "Biraz tökezledik.",
|
||||
@@ -562,7 +649,6 @@
|
||||
"youtubeTerms": "YouTube hizmet şartları"
|
||||
},
|
||||
"lobby": {
|
||||
"allow": "İzin ver",
|
||||
"backToKnockModeButton": "Parola yok, bunun yerine katılmayı isteyin",
|
||||
"chat": "Sohbet et",
|
||||
"dialogTitle": "Lobi modu",
|
||||
@@ -588,13 +674,13 @@
|
||||
"knockingParticipantList": "Kapıyı çalan katılımcı listesi",
|
||||
"lobbyChatStartedNotification": "{{moderator}} {{attendee}} adlı kişiyle lobi mesajlaşması başlattı",
|
||||
"lobbyChatStartedTitle": "{{moderator}} sizinle lobi mesajlaşması başlattı",
|
||||
"lobbyClosed": "Lobi odası kapatıldı.",
|
||||
"nameField": "Adınızı giriniz",
|
||||
"notificationLobbyAccessDenied": "{{targetParticipantName}} adlı katılımcı {{originParticipantName}} tarafından reddedildi",
|
||||
"notificationLobbyAccessGranted": "{{targetParticipantName}} adlı katılımcı {{originParticipantName}} tarafından kabul edildi",
|
||||
"notificationLobbyDisabled": "Lobi {{originParticipantName}} tarafından devre dışı bırakıldı",
|
||||
"notificationLobbyEnabled": "Lobi {{originParticipantName}} tarafından etkinleştirildi",
|
||||
"notificationTitle": "Lobi",
|
||||
"passwordField": "Toplantı parolasını giriniz",
|
||||
"passwordJoinButton": "Katıl",
|
||||
"title": "Lobi",
|
||||
"toggleLabel": "Lobiyi etkinleştir"
|
||||
@@ -627,6 +713,8 @@
|
||||
"sessionToken": "Oturum Tokeni",
|
||||
"start": "Kaydı başlat",
|
||||
"stop": "Kaydı durdur",
|
||||
"stopping": "Kayıt Durduruluyor",
|
||||
"wait": "Kaydınız kaydedilirken lütfen bekleyin",
|
||||
"yes": "Evet"
|
||||
},
|
||||
"lockRoomPassword": "parola",
|
||||
@@ -646,8 +734,15 @@
|
||||
"connectedOneMember": "{{name}} toplantıya katıldı",
|
||||
"connectedThreePlusMembers": "{{name}} ve {{count}} kişi daha toplantıya katıldı",
|
||||
"connectedTwoMembers": "{{first}} ve {{second}} toplantıya katıldı",
|
||||
"dataChannelClosed": "Video kalitesi bozuldu",
|
||||
"dataChannelClosedDescription": "Köprü kanalının bağlantısı kesildi ve bu nedenle video kalitesi en düşük ayarla sınırlandı.",
|
||||
"dataChannelClosedDescriptionWithAudio": "Köprü kanalı kapalı olduğu için ses ve video kesintileri yaşanabilir.",
|
||||
"dataChannelClosedWithAudio": "Ses ve video kalitesi etkilenebilir.",
|
||||
"disabledIframe": "Yerleştirme yalnızca demo amaçlı olduğundan bu çağrının bağlantısı {{timeout}} dakika içinde kesilecek.",
|
||||
"disabledIframeSecondary": "{{domain}} alanının yerleştirilmesi yalnızca demo amaçlı olduğundan bu çağrının bağlantısı {{timeout}} dakika içinde kesilecektir. Üretim yerleştirme için lütfen <a href='{{jaasDomain}}' rel='noopener noreferrer' target='_blank'>Hizmet olarak Jitsi</a>'yi kullanın!",
|
||||
"disconnected": "bağlantı kesildi",
|
||||
"displayNotifications": "Bildirimleri görüntüle",
|
||||
"dontRemindMe": "Bana hatırlatma",
|
||||
"focus": "Toplantı odağı",
|
||||
"focusFail": "{{component}} uygun değil - {{ms}} saniye içinde tekrar deneyin",
|
||||
"gifsMenu": "GIPHY",
|
||||
@@ -656,6 +751,7 @@
|
||||
"invitedOneMember": "{{name}} davet edildi",
|
||||
"invitedThreePlusMembers": "{{name}} ve {{count}} kişi daha davet edildi",
|
||||
"invitedTwoMembers": "{{first}} ve {{second}} davet edildi",
|
||||
"joinMeeting": "Katıl",
|
||||
"kickParticipant": "{{kicked}} kişisi {{kicker}} tarafından çıkarıldı",
|
||||
"leftOneMember": "{{name}} toplantıdan ayrıldı",
|
||||
"leftThreePlusMembers": "{{name}} ve diğerleri toplantıdan ayrıldı",
|
||||
@@ -690,7 +786,6 @@
|
||||
"newDeviceCameraTitle": "Yeni kamera algılandı",
|
||||
"noiseSuppressionDesktopAudioDescription": "Masaüstü sesi paylaşılırken gürültü bastırma etkinleştirilemez, lütfen devre dışı bırakın ve tekrar deneyin.",
|
||||
"noiseSuppressionFailedTitle": "Gürültü bastırma başlatılamadı",
|
||||
"noiseSuppressionNoTrackDescription": "Lütfen önce mikrofonunuzun sesini açın.",
|
||||
"noiseSuppressionStereoDescription": "Stereo ses gürültü bastırma şu anda desteklenmemektedir.",
|
||||
"oldElectronClientDescription1": "Güvenlik açıkları bilinen Jitsi Meet istemcisinin eski bir sürümünü kullanıyor görünüyorsunuz. Lütfen güncellediğinizden emin olun.",
|
||||
"oldElectronClientDescription2": "son yapı",
|
||||
@@ -706,19 +801,27 @@
|
||||
"reactionSoundsForAll": "Herkes için sesleri devre dışı bırak",
|
||||
"screenShareNoAudio": " Pencere seçim ekranında sesi paylaş kutusu işaretlenmedi.",
|
||||
"screenShareNoAudioTitle": "Sistem sesi paylaşılamadı!",
|
||||
"screenSharingAudioOnlyDescription": "Ekranınızı paylaşarak \"En iyi performans\" modunu etkilediğinizi ve daha fazla bant genişliği kullanacağınızı lütfen unutmayın.",
|
||||
"screenSharingAudioOnlyTitle": "\"En iyi performans\" modu",
|
||||
"selfViewTitle": "Kendi kendine görünümü her zaman ayarlardan gizleyebilirsiniz",
|
||||
"somebody": "Birisi",
|
||||
"startSilentDescription": "Ses çıkışını açtıktan sonra tekrar bağlanın",
|
||||
"startSilentTitle": "Ses çıkışı olmadan bağlandınız",
|
||||
"suboptimalBrowserWarning": "Toplantı deneyiminizin burada çok iyi olmayacağından korkuyoruz. Bunu iyileştirmenin yollarını arıyoruz, ancak o zamana kadar lütfen şunlardan birini deneyin: <a href='{{recommendedBrowserPageLink}}' target='_blank'>desteklenen tarayıcılar</a>.",
|
||||
"suboptimalExperienceTitle": "Tarayıcı Uyarısı",
|
||||
"suggestRecordingAction": "Başla",
|
||||
"suggestRecordingDescription": "Kaydı başlatmak ister misiniz?",
|
||||
"suggestRecordingTitle": "Bu toplantıyı kaydet",
|
||||
"unmute": "Sessizden çıkar",
|
||||
"videoMutedRemotelyDescription": "Her zaman yeniden açabilirsiniz.",
|
||||
"videoMutedRemotelyTitle": "{{moderator}} tarafından videonuz kapatıldı",
|
||||
"videoUnmuteBlockedDescription": "Sistem sınırları nedeniyle kamera sesini açma ve masaüstü paylaşım işlemi geçici olarak engellendi.",
|
||||
"videoUnmuteBlockedTitle": "Kameranın sesini açma ve masaüstü paylaşımı engellendi!",
|
||||
"viewLobby": "Lobiyi göster",
|
||||
"waitingParticipants": "{{waitingParticipants}} kişi"
|
||||
"viewVisitors": "Ziyaretçileri görüntüle",
|
||||
"waitingParticipants": "{{waitingParticipants}} kişi",
|
||||
"whiteboardLimitDescription": "Kullanıcı sınırına yakında ulaşılacağından ve beyaz tahta kapanacağından lütfen ilerlemenizi kaydedin.",
|
||||
"whiteboardLimitTitle": "Beyaz tahta kullanımı"
|
||||
},
|
||||
"participantsPane": {
|
||||
"actions": {
|
||||
@@ -729,6 +832,7 @@
|
||||
"askUnmute": "Sesi açmayı iste",
|
||||
"audioModeration": "Seslerini aç",
|
||||
"blockEveryoneMicCamera": "Herkesin mikrofonunu ve kamerasını blokla",
|
||||
"breakoutRooms": "Alt odalar",
|
||||
"invite": "Birini davet et",
|
||||
"moreModerationActions": "Daha fazla denetleme seçeneği",
|
||||
"moreModerationControls": "Daha fazla denetleme kontrolü",
|
||||
@@ -746,6 +850,8 @@
|
||||
"headings": {
|
||||
"lobby": "Lobi ({{count}})",
|
||||
"participantsList": "Toplantı Katılımcıları ({{count}})",
|
||||
"visitorRequests": "(requests {{count}})",
|
||||
"visitors": "Ziyaretçiler {{count}}",
|
||||
"waitingLobby": "Lobide bekleyen ({{count}})"
|
||||
},
|
||||
"search": "Katılımcıları ara",
|
||||
@@ -753,6 +859,7 @@
|
||||
},
|
||||
"passwordDigitsOnly": "{{number}} rakama kadar",
|
||||
"passwordSetRemotely": "başka katılımcı tarafından ayarlandı",
|
||||
"pinParticipant": "{{participantName}} - Sabitle",
|
||||
"pinnedParticipant": "Katılımcı sabitlendi",
|
||||
"polls": {
|
||||
"answer": {
|
||||
@@ -771,6 +878,9 @@
|
||||
"removeOption": "Seçeneği sil",
|
||||
"send": "Gönder"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Seçenekler benzersiz olmalı"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Oy vermek için anketler sekmesini açın",
|
||||
"title": "Anket toplantıya eklendi"
|
||||
@@ -837,9 +947,12 @@
|
||||
"lookGood": "Mikrofonunuz düzgün çalışıyor gibi görünüyor",
|
||||
"or": "veya",
|
||||
"premeeting": "Toplantı öncesi",
|
||||
"proceedAnyway": "Yine de devam et",
|
||||
"recordingWarning": "Diğer katılımcılar bu çağrıyı kaydediyor olabilir",
|
||||
"screenSharingError": "Ekran paylaşma hatası:",
|
||||
"showScreen": "Toplantı öncesi ekranını etkinleştir",
|
||||
"startWithPhone": "Telefon sesiyle başlayın",
|
||||
"unsafeRoomConsent": "Riskleri anlıyorum, toplantıya katılmak istiyorum",
|
||||
"videoOnlyError": "Video hatası:",
|
||||
"videoTrackError": "Video izleme oluşturulamadı.",
|
||||
"viewAllNumbers": "tüm numaraları görüntüle"
|
||||
@@ -858,9 +971,6 @@
|
||||
"rejected": "Reddedildi",
|
||||
"ringing": "Çalıyor..."
|
||||
},
|
||||
"privacyView": {
|
||||
"title": "Gizlilik"
|
||||
},
|
||||
"profile": {
|
||||
"avatar": "avatar",
|
||||
"setDisplayNameLabel": "Görünür adınızı ayarlayın",
|
||||
@@ -905,7 +1015,6 @@
|
||||
"limitNotificationDescriptionNative": "Yüksek talep nedeniyle kaydınız {{limit}} dakika ile sınırlı olacaktır. Sınırsız kayıt için deneyin <3>{{app}}</3>.",
|
||||
"limitNotificationDescriptionWeb": "Yüksek talep nedeniyle kaydınız {{limit}} dakika ile sınırlı olacaktır. Sınırsız kayıt için deneyin <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
||||
"linkGenerated": "Kaydınızla ilgili link oluşturduk.",
|
||||
"live": "CANLI",
|
||||
"localRecordingNoNotificationWarning": "Kayıt diğer katılımcılara duyurulmayacaktır. Onlara toplantının kaydedildiğini bildirmeniz gerekecek.",
|
||||
"localRecordingNoVideo": "Video kaydedilmiyor",
|
||||
"localRecordingStartWarning": "Lütfen kaydetmek için toplantıdan çıkmadan önce kaydı durdurduğunuzdan emin olun.",
|
||||
@@ -914,6 +1023,7 @@
|
||||
"localRecordingVideoWarning": "Videonuzu kaydetmek için kayda başlarken açmış olmanız gerekir",
|
||||
"localRecordingWarning": "Doğru video ve sesi kullanmak için geçerli sekmeyi seçtiğinizden emin olun. Kayıt şu anda yaklaşık 100 dakika olan 1GB ile sınırlıdır.",
|
||||
"loggedIn": "{{userName}} olarak giriş yapıldı",
|
||||
"noMicPermission": "Mikrofon parçası oluşturulamadı. Lütfen mikrofonu kullanma izni verin.",
|
||||
"noStreams": "Ses veya video akışı algılanmadı",
|
||||
"off": "Kayıt durdu",
|
||||
"offBy": "{{name}} isimli kayıt durduruldu",
|
||||
@@ -921,13 +1031,15 @@
|
||||
"onBy": "{{name}} isimli kayıt başlatıldı",
|
||||
"onlyRecordSelf": "Yalnızca ses ve video akışlarımı kaydet",
|
||||
"pending": "Toplantıyı kaydetmeye hazırlanıyor ...",
|
||||
"rec": "KAYIT",
|
||||
"recordAudioAndVideo": "Ses ve video kaydedin",
|
||||
"recordTranscription": "Transkripsiyonu kaydet",
|
||||
"saveLocalRecording": "Kayıt dosyasını yerel olarak kaydet (Beta)",
|
||||
"serviceDescription": "Kaydınız kayıt hizmeti tarafından kaydedilecektir",
|
||||
"serviceDescriptionCloud": "Bulut kaydı",
|
||||
"serviceDescriptionCloudInfo": "Kaydedilen toplantılar, kayıt süresinden 24 saat sonra otomatik olarak temizlenir.",
|
||||
"serviceName": "Kayıt hizmeti",
|
||||
"sessionAlreadyActive": "Bu oturum zaten kaydediliyor veya canlı yayınlanıyor.",
|
||||
"showAdvancedOptions": "Gelişmiş seçenekler",
|
||||
"signIn": "Giriş yap",
|
||||
"signOut": "Çıkış yap",
|
||||
"surfaceError": "Lütfen geçerli sekmeyi seçin",
|
||||
@@ -943,10 +1055,17 @@
|
||||
"security": {
|
||||
"about": "Toplantınıza bir parola ekleyebilirsiniz. Katılımcıların toplantıya katılmasına izin verilmeden önce parolayı girmeleri gerekecektir.",
|
||||
"aboutReadOnly": "Moderatörler toplantıya toplantıya bir $t(lockRoomPassword) eklenebilir. Katılımcıların toplantıya katılmalarına izin verilmeden önce $t(lockRoomPassword) bilgilerini sağlamaları gerekir..",
|
||||
"insecureRoomNameWarning": "Toplantı odası güvenli değil. Konferansınıza istenmeyen katılımcılar katılabilir.",
|
||||
"title": "Güvenlik Seçenekleri"
|
||||
"insecureRoomNameWarningNative": "Oda adı güvenli değil. İstenmeyen katılımcılar toplantınıza katılabilir. {{recommendAction}} Toplantınızın güvenliğini sağlama hakkında daha fazla bilgi edinin",
|
||||
"insecureRoomNameWarningWeb": "Oda adı güvenli değil. İstenmeyen katılımcılar toplantınıza katılabilir. {{recommendAction}} Toplantınızın güvenliğini sağlama hakkında daha fazla bilgi edinin <a href = \"{{securityUrl}}\" rel = \"security\" target = \"_blank\">buraya</a>.",
|
||||
"title": "Güvenlik Seçenekleri",
|
||||
"unsafeRoomActions": {
|
||||
"meeting": "Güvenlik düğmesini kullanarak toplantınızın güvenliğini sağlamayı düşünün.",
|
||||
"prejoin": "Daha benzersiz bir toplantı adı kullanmayı düşünün",
|
||||
"welcome": "Daha benzersiz bir toplantı adı kullanmayı düşünün veya önerilerden birini seçin."
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"audio": "Ses",
|
||||
"buttonLabel": "Ayarlar",
|
||||
"calendar": {
|
||||
"about": "{{appName}} takvim entegrasyonu, yaklaşan etkinlikleri okuyabilmesi için takviminize güvenli bir şekilde erişmek için kullanılır.",
|
||||
@@ -967,9 +1086,11 @@
|
||||
"maxStageParticipants": "Ana ekrana sabitlenecek maksimum katılımcı sayısı",
|
||||
"microphones": "Mikrofonlar",
|
||||
"moderator": "Yönetici",
|
||||
"moderatorOptions": "Moderatör seçenekleri",
|
||||
"more": "Daha fazla",
|
||||
"name": "Ad",
|
||||
"noDevice": "Yok",
|
||||
"notifications": "Bildirimler",
|
||||
"participantJoined": "Katılımcı katıldı",
|
||||
"participantKnocking": "",
|
||||
"participantLeft": "Katılımcı ayrıldı",
|
||||
@@ -980,13 +1101,14 @@
|
||||
"selectCamera": "Kamera",
|
||||
"selectMic": "Mikrofon",
|
||||
"selfView": "Kendi görünümüm",
|
||||
"sounds": "Sesler",
|
||||
"shortcuts": "Kısayollar",
|
||||
"speakers": "Hoparlörler",
|
||||
"startAudioMuted": "Herkes ses kapalı başlasın",
|
||||
"startReactionsMuted": "Reaksiyon seslerini herkes için kapat",
|
||||
"startVideoMuted": "Herkes görüntü kapalı başlasın",
|
||||
"talkWhileMuted": "Sesi kapalıyken konuş",
|
||||
"title": "Ayarlar"
|
||||
"title": "Ayarlar",
|
||||
"video": "Video"
|
||||
},
|
||||
"settingsView": {
|
||||
"advanced": "Gelişmiş",
|
||||
@@ -994,6 +1116,7 @@
|
||||
"alertOk": "Tamam",
|
||||
"alertTitle": "Uyarı",
|
||||
"alertURLText": "Girilen sunucu bağlantısı geçersiz",
|
||||
"apply": "Uygula",
|
||||
"buildInfoSection": "Yapı Bilgisi",
|
||||
"conferenceSection": "Toplantı",
|
||||
"disableCallIntegration": "Yerel arama entegrasyonunu devre dışı bırak",
|
||||
@@ -1003,12 +1126,15 @@
|
||||
"displayName": "Görünür ad",
|
||||
"displayNamePlaceholderText": "Ör: John Doe",
|
||||
"email": "E-posta",
|
||||
"emailPlaceholderText": "email@example.com",
|
||||
"gavatarMessage": "E-postanız bir Gravatar hesabıyla ilişkiliyse, bunu profil resminizi görüntülemek için kullanacağız.",
|
||||
"goTo": "Git",
|
||||
"header": "Ayarlar",
|
||||
"help": "Yardım",
|
||||
"links": "Linkler",
|
||||
"privacy": "Gizlilik",
|
||||
"profileSection": "Profil",
|
||||
"sdkVersion": "SDK sürümü",
|
||||
"serverURL": "Sunucu Bağlantısı",
|
||||
"showAdvanced": "Gelişmiş ayarları göster",
|
||||
"startCarModeInLowBandwidthMode": "Düşük bağlantı modunda araba modunu başlat",
|
||||
@@ -1061,24 +1187,35 @@
|
||||
"audioOnly": "Yalnızca sesi aç/kapat",
|
||||
"audioRoute": "Ses aygıtını seçin",
|
||||
"boo": "Boo",
|
||||
"breakoutRoom": "Alt oda",
|
||||
"breakoutRooms": "Alt odalar",
|
||||
"callQuality": "Armama kalitesini yönetin",
|
||||
"carmode": "Araba odu",
|
||||
"cc": "Altyazıları aç/kapat",
|
||||
"chat": "Mesajlaşma penceresini aç/kapat",
|
||||
"clap": "Alkış",
|
||||
"closeChat": "Sohbeti kapat",
|
||||
"closeMoreActions": "Diğer işlemler menüsünü kapat",
|
||||
"closeParticipantsPane": "Katılımcılar bölmesini kapat",
|
||||
"collapse": "Daralt",
|
||||
"document": "Paylaşılan dokümanı aç/kapat",
|
||||
"documentClose": "Paylaşılan belgeyi kapat",
|
||||
"documentOpen": "Paylaşılan belgeyi aç",
|
||||
"download": "Uygulamalarımızı indirin",
|
||||
"embedMeeting": "Toplantıyı yerleştir",
|
||||
"endConference": "Herkes için toplantıyı sonlandır",
|
||||
"enterFullScreen": "Tam ekranı görüntüle",
|
||||
"enterTileView": "Döşeme görünümüne girin",
|
||||
"exitFullScreen": "Tam ekrandan çık",
|
||||
"exitTileView": "Döşeme görünümünden çık",
|
||||
"expand": "Genişlet",
|
||||
"feedback": "Geri bildirim bırakın",
|
||||
"fullScreen": "Tam ekranı aç/kapat",
|
||||
"giphy": "GIPHY menüsünü aç/kapat",
|
||||
"grantModerator": "Moderatör Hakları Ver",
|
||||
"hangup": "Aramadan ayrıl",
|
||||
"heading": "Araç Çubuğu",
|
||||
"help": "Yardım",
|
||||
"hideWhiteboard": "Beyaz tahtayı gizle",
|
||||
"invite": "İnsanları davet et",
|
||||
"kick": "Katılımcı çıkar",
|
||||
"laugh": "Gül",
|
||||
@@ -1088,6 +1225,7 @@
|
||||
"lobbyButton": "Lobi modunu etkinleştir / devre dışı bırak",
|
||||
"localRecording": "Kayıt denetimlerini aç/kapat",
|
||||
"lockRoom": "Toplantı parolasını aç/kapat",
|
||||
"lowerHand": "Elini indir",
|
||||
"moreActions": "Diğer işlemler menüsünü aç/kapat",
|
||||
"moreActionsMenu": "Diğer işlemler menüsü",
|
||||
"moreOptions": "Daha fazla seçenek göster",
|
||||
@@ -1096,12 +1234,15 @@
|
||||
"muteEveryoneElse": "Diğer herkesi sessize al",
|
||||
"muteEveryoneElsesVideoStream": "Diğer herkesin videosunu durdur",
|
||||
"muteEveryonesVideoStream": "Herkesin videosunu durdur",
|
||||
"muteGUMPending": "Mikrofonunuz bağlanıyor",
|
||||
"noiseSuppression": "Gürültü azaltma",
|
||||
"openChat": "Sohbeti aç",
|
||||
"participants": "Katılımcılar",
|
||||
"pip": "Resim içinde Resim modunu aç/kapat",
|
||||
"privateMessage": "Özel mesaj gönder",
|
||||
"profile": "Profilinizi düzenleyin",
|
||||
"raiseHand": "El kaldırmayı aç/kapat",
|
||||
"reactions": "Tepkiler",
|
||||
"reactionsMenu": "Reaksiyon menüsünü Aç / Kapa",
|
||||
"recording": "Kaydetmeyi aç/kapat",
|
||||
"remoteMute": "Katılımcının sesini kapat",
|
||||
@@ -1115,15 +1256,20 @@
|
||||
"sharedvideo": "Video paylaşmayı aç/kapat",
|
||||
"shortcuts": "Kısayolları aç/kapat",
|
||||
"show": "Sahnede göster",
|
||||
"showWhiteboard": "Beyaz tahtayı göster",
|
||||
"silence": "Sessiz",
|
||||
"speakerStats": "Konuşmacı istatistiklerini aç/kapat",
|
||||
"stopScreenSharing": "Ekranınızı paylaşmayı durdur",
|
||||
"stopSharedVideo": "Videoyu durdur",
|
||||
"surprised": "Sürpriz",
|
||||
"tileView": "Döşeme görünümünü aç/kapat",
|
||||
"toggleCamera": "Kamerayı değiştir",
|
||||
"toggleFilmstrip": "Film şeridini aç/kapat",
|
||||
"unmute": "Mikrofonun sesini aç",
|
||||
"videoblur": "Video bulanıklaştırma aç/kapat",
|
||||
"videomute": "Sessiz videoyu aç/kapat",
|
||||
"whiteboard": "Beyaztahtayı Göster / Gizle"
|
||||
"videomuteGUMPending": "Kameranız bağlanıyor",
|
||||
"videounmute": "Kamerayı başlat"
|
||||
},
|
||||
"addPeople": "Aramanıza kişi ekleyin",
|
||||
"audioOnlyOff": "Yalnızca ses modunu devre dışı bırak",
|
||||
@@ -1136,14 +1282,16 @@
|
||||
"chat": "Mesajlaşmayı aç/kapat",
|
||||
"clap": "Alkış",
|
||||
"closeChat": "Mesajlaşmayı kapat",
|
||||
"closeParticipantsPane": "Katılımcılar bölmesini kapat",
|
||||
"closeReactionsMenu": "Reaksiyon menüsünü kapat",
|
||||
"disableNoiseSuppression": "",
|
||||
"disableNoiseSuppression": "Gürültü azaltmayı devre dışı bırak",
|
||||
"disableReactionSounds": "Toplantı için reaksiyon seslerini devre dışı bırak",
|
||||
"documentClose": "Paylaşılan dokümanı kapat",
|
||||
"documentOpen": "Paylaşılan dokümanı aç",
|
||||
"download": "Uygulamalarımızı indirin",
|
||||
"e2ee": "Uçtan uca şifreleme",
|
||||
"embedMeeting": "Toplantıyı yerleştir",
|
||||
"enableNoiseSuppression": "Gürültü azaltmayı etkinleştir",
|
||||
"endConference": "Herkes için toplantıyı sonlandır",
|
||||
"enterFullScreen": "Tam ekran görüntüle",
|
||||
"enterTileView": "Döşeme görünümüne geç",
|
||||
@@ -1171,6 +1319,7 @@
|
||||
"mute": "Sessiz / Sesli",
|
||||
"muteEveryone": "Herkesi sessize al",
|
||||
"muteEveryonesVideo": "Herkesin kamerasını devre dışı bırak",
|
||||
"muteGUMPending": "Mikrofonunuz bağlanıyor",
|
||||
"noAudioSignalDesc": "Sistem ayarlarından veya donanımdan sesi kapatmadıysanız, cihazınızı değiştirin.",
|
||||
"noAudioSignalDescSuggestion": "Sistem ayarlarından veya donanımdan kasıtlı olarak kapatmadıysanız, önerilen aygıta geçmeyi düşünün.",
|
||||
"noAudioSignalDialInDesc": "",
|
||||
@@ -1193,6 +1342,7 @@
|
||||
"reactionLike": "Çok iyi! gönder",
|
||||
"reactionSilence": "Sessizlik gönder",
|
||||
"reactionSurprised": "Sürpriz gönder",
|
||||
"reactions": "Tepkiler",
|
||||
"security": "Güvenlik seçenekleri",
|
||||
"selectBackground": "Arkaplan seç",
|
||||
"shareRoom": "Birini davet et",
|
||||
@@ -1212,23 +1362,26 @@
|
||||
"talkWhileMutedPopup": "Bir şey mi dediniz? Mikrofonunuz kapalı.",
|
||||
"tileViewToggle": "Döşeme görünümünü aç/kapat",
|
||||
"toggleCamera": "Kamerayı değiştir",
|
||||
"unmute": "Mikrofonun sesini aç",
|
||||
"videoSettings": "Video ayarları",
|
||||
"videomute": "Kamera başlat / durdur"
|
||||
"videomute": "Kamerayı durdur",
|
||||
"videomuteGUMPending": "Kameranıza bağlanıyor",
|
||||
"videounmute": "Kamerayı başlat"
|
||||
},
|
||||
"transcribing": {
|
||||
"ccButtonTooltip": "Altyazılıar başlat / durdur",
|
||||
"error": "Deşifre etme başarısız oldu. Lütfen tekrar deneyin.",
|
||||
"expandedLabel": "Deşifre etme açık",
|
||||
"failedToStart": "Deşifre etme başlatılamadı",
|
||||
"labelToolTip": "Toplantı deşifre ediliyor",
|
||||
"off": "Deşifre etme durdu",
|
||||
"pending": "Toplantıyı deşifre etmeye hazırlanıyor...",
|
||||
"sourceLanguageDesc": "Şu anda toplantı dili <b>{{sourceLanguage}</b> olarak ayarlıdır. <br/> Bunu şuradan değiştirebilirsiniz",
|
||||
"sourceLanguageHere": "burada",
|
||||
"start": "Altyazıları göstermeye başla",
|
||||
"stop": "Altyazıları göstermeyi durdur",
|
||||
"subtitles": "Altyazılar",
|
||||
"subtitlesOff": "Kapat",
|
||||
"tr": "TR"
|
||||
},
|
||||
"unpinParticipant": "{{participantName}} - Sabitlemeyi kaldır",
|
||||
"userMedia": {
|
||||
"androidGrantPermissions": "Tarayıcınız izin istediğinde <b><i>İzin Ver</i></b> seçeneğini seçin.",
|
||||
"chromeGrantPermissions": "Tarayıcınız izin istediğinde <b><i>İzin Ver</i></b> seçeneğini seçin.",
|
||||
@@ -1267,12 +1420,15 @@
|
||||
"ldTooltip": "Düşük çözünürlüklü video görüntüleme",
|
||||
"lowDefinition": "Düşük çözünürlük",
|
||||
"performanceSettings": "Performans ayarları",
|
||||
"recording": "Kayıt devam ediyor",
|
||||
"sd": "SD",
|
||||
"sdTooltip": "Standart çözünürlüklü video görüntüleme",
|
||||
"standardDefinition": "Standart çözünürlük"
|
||||
"standardDefinition": "Standart çözünürlük",
|
||||
"streaming": "Akış devam ediyor"
|
||||
},
|
||||
"videothumbnail": {
|
||||
"connectionInfo": "Bağlantı Bilgisi",
|
||||
"demote": "Ziyaretçiye taşı",
|
||||
"domute": "Sessize al",
|
||||
"domuteOthers": "Diğer herkesi sessize al",
|
||||
"domuteVideo": "Kamerayı devre dışı bırak",
|
||||
@@ -1281,6 +1437,7 @@
|
||||
"grantModerator": "Moderatör Hakları Ver",
|
||||
"hideSelfView": "Kendi görüntümü gizle",
|
||||
"kick": "Çıkar",
|
||||
"mirrorVideo": "Videomu yansıt",
|
||||
"moderator": "Yönetici",
|
||||
"mute": "Katılımcı sessiz",
|
||||
"muted": "Sessiz",
|
||||
@@ -1290,10 +1447,15 @@
|
||||
"show": "Sahnede göster",
|
||||
"showSelfView": "Kendi görüntümü göster",
|
||||
"unpinFromStage": "Sabitlemeyi kaldır",
|
||||
"verify": "Katılımcıyı doğrula",
|
||||
"videoMuted": "Kamerayı devre dışı bırakıldı",
|
||||
"videomute": "Katılımcı kamerayı durdurdu"
|
||||
},
|
||||
"virtualBackground": {
|
||||
"accessibilityLabel": {
|
||||
"currentBackground": "Geçerli arka plan: {{background}}",
|
||||
"selectBackground": "Bir arka plan seçin"
|
||||
},
|
||||
"addBackground": "Arkaplan Ekle",
|
||||
"apply": "Uygula",
|
||||
"backgroundEffectError": "Arkaplan efekt uygulaması başarısız.",
|
||||
@@ -1317,6 +1479,15 @@
|
||||
"webAssemblyWarning": "WebAssembly desteklenmiyor",
|
||||
"webAssemblyWarningDescription": "WebAssembly devre dışı bırakıldı veya bu tarayıcı tarafından desteklenmiyor"
|
||||
},
|
||||
"visitors": {
|
||||
"chatIndicator": "(ziyaretçi)",
|
||||
"labelTooltip": "Ziyaretçi sayısı: {{count}}",
|
||||
"notification": {
|
||||
"demoteDescription": "Buraya {{actor}} tarafından gönderildi, katılmak için elinizi kaldırın",
|
||||
"description": "Katılmak için elinizi kaldırın",
|
||||
"title": "Toplantıda ziyaretçisiniz"
|
||||
}
|
||||
},
|
||||
"volumeSlider": "Ses kaydırıcısı",
|
||||
"welcomepage": {
|
||||
"accessibilityLabel": {
|
||||
@@ -1349,6 +1520,7 @@
|
||||
"microsoftLogo": "Microsoft logo",
|
||||
"policyLogo": "Politika logo"
|
||||
},
|
||||
"meetingsAccessibilityLabel": "Toplantılar",
|
||||
"mobileDownLoadLinkAndroid": "Android için mobil uygulamayı indirin",
|
||||
"mobileDownLoadLinkFDroid": "F-Droid için mobil uygulamayı indirin",
|
||||
"mobileDownLoadLinkIos": "iOS için mobil uygulamayı indirin",
|
||||
@@ -1357,6 +1529,7 @@
|
||||
"recentList": "En son",
|
||||
"recentListDelete": "Sil",
|
||||
"recentListEmpty": "En son görüşülenler listeniz şu anda boş. Sohbet edin ve son toplantılarınızı burada görüntüleyin.",
|
||||
"recentMeetings": "Son toplantılarınız",
|
||||
"reducedUIText": "Hoşgeldiniz - {{app}}!",
|
||||
"roomNameAllowedChars": "Toplantı adı şu karakterlerden hiçbirini içermemelidir: ?, &, :, ', \", %, #.",
|
||||
"roomname": "Oda adı girin",
|
||||
@@ -1365,6 +1538,13 @@
|
||||
"settings": "Ayarlar",
|
||||
"startMeeting": "Toplantı başlat",
|
||||
"terms": "Kurallar",
|
||||
"title": "Güvenli, tüm özelliklere erişimli ve tamamen ücretsiz görüntülü arama"
|
||||
"title": "Güvenli, tüm özelliklere erişimli ve tamamen ücretsiz görüntülü arama",
|
||||
"upcomingMeetings": "Yaklaşan toplantılarınız"
|
||||
},
|
||||
"whiteboard": {
|
||||
"accessibilityLabel": {
|
||||
"heading": "Beyaz tahta"
|
||||
},
|
||||
"screenTitle": "Beyaz tahta"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -800,6 +800,9 @@
|
||||
"removeOption": "Вилучити",
|
||||
"send": "Надіслати"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Параметри повинні бути унікальними"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Щоб проголосувати, відкрийте вкладку опитувань",
|
||||
"title": "Додано нове опитування"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -845,6 +845,9 @@
|
||||
"removeOption": "移除选项",
|
||||
"send": "发送"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "选项必须是唯一的"
|
||||
},
|
||||
"notification": {
|
||||
"description": "打开投票页面进行投票",
|
||||
"title": "本次会议有一项新的投票"
|
||||
|
||||
@@ -863,6 +863,9 @@
|
||||
"removeOption": "移除選項",
|
||||
"send": "傳送"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "選項必須是唯一的"
|
||||
},
|
||||
"notification": {
|
||||
"description": "開啟投票分頁以參與投票",
|
||||
"title": "此會議有一項新投票"
|
||||
|
||||
@@ -128,6 +128,7 @@
|
||||
"privateNotice": "Private message to {{recipient}}",
|
||||
"sendButton": "Send",
|
||||
"smileysPanel": "Emoji panel",
|
||||
"systemDisplayName": "System",
|
||||
"tabs": {
|
||||
"chat": "Chat",
|
||||
"polls": "Polls"
|
||||
@@ -263,6 +264,7 @@
|
||||
"Share": "Share",
|
||||
"Submit": "Submit",
|
||||
"WaitForHostMsg": "The conference has not yet started because no moderators have yet arrived. If you'd like to become a moderator please log-in. Otherwise, please wait.",
|
||||
"WaitForHostNoAuthMsg": "The conference has not yet started because no moderators have yet arrived. Please wait.",
|
||||
"WaitingForHostButton": "Wait for moderator",
|
||||
"WaitingForHostTitle": "Waiting for a moderator...",
|
||||
"Yes": "Yes",
|
||||
@@ -318,6 +320,7 @@
|
||||
"embedMeeting": "Embed meeting",
|
||||
"enterDisplayName": "Enter your name",
|
||||
"error": "Error",
|
||||
"errorRoomCreationRestriction": "You tried to join too quickly, please come back in a bit.",
|
||||
"gracefulShutdown": "Our service is currently down for maintenance. Please try again later.",
|
||||
"grantModeratorDialog": "Are you sure you want to grant moderator rights to {{participantName}}?",
|
||||
"grantModeratorTitle": "Grant moderator rights",
|
||||
@@ -733,8 +736,10 @@
|
||||
"connectedOneMember": "{{name}} joined the meeting",
|
||||
"connectedThreePlusMembers": "{{name}} and many others joined the meeting",
|
||||
"connectedTwoMembers": "{{first}} and {{second}} joined the meeting",
|
||||
"dataChannelClosed": "Video quality impaired",
|
||||
"dataChannelClosedDescription": "The bridge channel has been disconnected and thus video quality is limited to its lowest setting.",
|
||||
"dataChannelClosed": "Video quality may be impaired",
|
||||
"dataChannelClosedDescription": "The bridge channel is down and thus video quality may be limited to its lowest setting.",
|
||||
"dataChannelClosedDescriptionWithAudio": "The bridge channel is down and thus disruptions to audio and video may occur.",
|
||||
"dataChannelClosedWithAudio": "Audio and video quality may be impaired",
|
||||
"disabledIframe": "Embedding is only meant for demo purposes, so this call will disconnect in {{timeout}} minutes.",
|
||||
"disabledIframeSecondary": "Embedding {{domain}} is only meant for demo purposes, so this call will disconnect in {{timeout}} minutes. Please use <a href='{{jaasDomain}}' rel='noopener noreferrer' target='_blank'>Jitsi as a Service</a> for production embedding!",
|
||||
"disconnected": "disconnected",
|
||||
@@ -860,6 +865,8 @@
|
||||
"pinnedParticipant": "The participant is pinned",
|
||||
"polls": {
|
||||
"answer": {
|
||||
"edit": "Edit",
|
||||
"send": "Send",
|
||||
"skip": "Skip",
|
||||
"submit": "Submit"
|
||||
},
|
||||
@@ -873,8 +880,12 @@
|
||||
"pollQuestion": "Poll Question",
|
||||
"questionPlaceholder": "Ask a question",
|
||||
"removeOption": "Remove option",
|
||||
"save": "Save",
|
||||
"send": "Send"
|
||||
},
|
||||
"errors": {
|
||||
"notUniqueOption": "Options must be unique"
|
||||
},
|
||||
"notification": {
|
||||
"description": "Open polls tab to vote",
|
||||
"title": "A new poll was added to this meeting"
|
||||
@@ -1479,6 +1490,10 @@
|
||||
"notification": {
|
||||
"demoteDescription": "Sent here by {{actor}}, raise your hand to participate",
|
||||
"description": "To participate raise your hand",
|
||||
"noMainParticipantsDescription": "A participant needs to start the meeting. Please try again in a bit.",
|
||||
"noMainParticipantsTitle": "This meeting hasn’t started yet.",
|
||||
"noVisitorLobby": "You cannot join while there is a lobby enabled for the meeting.",
|
||||
"notAllowedPromotion": "A participant needs to allow your request first.",
|
||||
"title": "You are a visitor in the meeting"
|
||||
}
|
||||
},
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
"hi": "Hindi",
|
||||
"hmn": "Hmong",
|
||||
"hr": "Croatian",
|
||||
"hsb": "Upper Sorbian",
|
||||
"ht": "Haitian Creole",
|
||||
"hu": "Hungarian",
|
||||
"hy": "Armenian",
|
||||
|
||||
10
metadata/ru/full_description.txt
Normal file
10
metadata/ru/full_description.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Jitsi Meet позволяет вам оставаться на связи со всеми вашими командами, будь то семья, друзья или коллеги. Мгновенные видеоконференции, эффективно адаптируемые к вашим нуждам.
|
||||
|
||||
* Неограниченные пользователи: нет искусственных ограничений на количество пользователей или участников конференции. Мощность сервера и пропускная способность являются единственными ограничивающими факторами.
|
||||
* Учетная запись не требуется.
|
||||
* Закрытые комнаты: управляйте доступом к вашим конференциям с помощью пароля.
|
||||
* Зашифровано по умолчанию.
|
||||
* Высокое качество: аудио и видео доставляются с чёткостью и возможностями кодеков Opus и VP8.
|
||||
* Работает в веб браузере: вашим друзьям не требуются загрузка чтобы присоединиться к разговору. Jitsi Meet работает непосредственно в их браузерах. Чтобы начать просто поделитесь своей ссылкой на конференцию с другими.
|
||||
* 100% открытый исходный код: поддерживается удивительными сообществами со всего мира. И вашими друзьями из 8x8.
|
||||
* Приглашение по красивому адресу ссылки: вы можете встретиться с легко запоминаемым https://MySite.com/OurConf по своему выбору вместо случайных цифр.
|
||||
1
metadata/ru/short_description.txt
Normal file
1
metadata/ru/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Защищённые, простые и масштабируемые видеоконференции с качественным видео
|
||||
@@ -41,6 +41,7 @@ import {
|
||||
import { LOCAL_PARTICIPANT_DEFAULT_ID } from '../../react/features/base/participants/constants';
|
||||
import {
|
||||
getLocalParticipant,
|
||||
getNormalizedDisplayName,
|
||||
getParticipantById,
|
||||
getScreenshareParticipantIds,
|
||||
getVirtualScreenshareParticipantByOwnerId,
|
||||
@@ -76,6 +77,7 @@ import { setMediaEncryptionKey, toggleE2EE } from '../../react/features/e2ee/act
|
||||
import {
|
||||
addStageParticipant,
|
||||
resizeFilmStrip,
|
||||
setFilmstripVisible,
|
||||
setVolume,
|
||||
togglePinStageParticipant
|
||||
} from '../../react/features/filmstrip/actions.web';
|
||||
@@ -199,7 +201,7 @@ function initCommands() {
|
||||
},
|
||||
'display-name': displayName => {
|
||||
sendAnalytics(createApiEvent('display.name.changed'));
|
||||
APP.conference.changeLocalDisplayName(displayName);
|
||||
APP.store.dispatch(updateSettings({ displayName: getNormalizedDisplayName(displayName) }));
|
||||
},
|
||||
'local-subject': localSubject => {
|
||||
sendAnalytics(createApiEvent('local.subject.changed'));
|
||||
@@ -376,7 +378,9 @@ function initCommands() {
|
||||
},
|
||||
'toggle-film-strip': () => {
|
||||
sendAnalytics(createApiEvent('film.strip.toggled'));
|
||||
APP.UI.toggleFilmstrip();
|
||||
const { visible } = APP.store.getState()['features/filmstrip'];
|
||||
|
||||
APP.store.dispatch(setFilmstripVisible(!visible));
|
||||
},
|
||||
|
||||
/*
|
||||
@@ -981,6 +985,12 @@ function initCommands() {
|
||||
callback(isP2pActive(APP.store.getState()));
|
||||
break;
|
||||
}
|
||||
case 'session-id': {
|
||||
const { conference } = APP.store.getState()['features/base/conference'];
|
||||
|
||||
callback(conference?.getMeetingUniqueId() || '');
|
||||
break;
|
||||
}
|
||||
case '_new_electron_screensharing_supported': {
|
||||
callback(true);
|
||||
break;
|
||||
@@ -2128,6 +2138,21 @@ class API {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Notify external application (if API is enabled) the conference
|
||||
* start time.
|
||||
*
|
||||
* @param {number} timestamp - Timestamp conference was created.
|
||||
* @returns {void}
|
||||
*/
|
||||
notifyConferenceCreatedTimestamp(timestamp) {
|
||||
this._sendEvent({
|
||||
name: 'conference-created-timestamp',
|
||||
timestamp
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Notify the external application (if API is enabled) if the connection type changed.
|
||||
*
|
||||
|
||||
12
modules/API/external/external_api.js
vendored
12
modules/API/external/external_api.js
vendored
@@ -108,6 +108,7 @@ const events = {
|
||||
'camera-error': 'cameraError',
|
||||
'chat-updated': 'chatUpdated',
|
||||
'compute-pressure-changed': 'computePressureChanged',
|
||||
'conference-created-timestamp': 'conferenceCreatedTimestamp',
|
||||
'content-sharing-participants-changed': 'contentSharingParticipantsChanged',
|
||||
'data-channel-closed': 'dataChannelClosed',
|
||||
'data-channel-opened': 'dataChannelOpened',
|
||||
@@ -1229,6 +1230,17 @@ export default class JitsiMeetExternalAPI extends EventEmitter {
|
||||
return this._numberOfParticipants;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the conference`s sessionId.
|
||||
*
|
||||
* @returns {Promise} - Resolves with the conference`s sessionId.
|
||||
*/
|
||||
getSessionId() {
|
||||
return this._transport.sendRequest({
|
||||
name: 'session-id'
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns array of commands supported by executeCommand().
|
||||
*
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
const UI = {};
|
||||
|
||||
import Logger from '@jitsi/logger';
|
||||
import EventEmitter from 'events';
|
||||
|
||||
import {
|
||||
conferenceWillInit
|
||||
@@ -13,7 +12,6 @@ import { isMobileBrowser } from '../../react/features/base/environment/utils';
|
||||
import { setColorAlpha } from '../../react/features/base/util/helpers';
|
||||
import { sanitizeUrl } from '../../react/features/base/util/uri';
|
||||
import { setDocumentUrl } from '../../react/features/etherpad/actions';
|
||||
import { setFilmstripVisible } from '../../react/features/filmstrip/actions.any';
|
||||
import {
|
||||
setNotificationsEnabled,
|
||||
showNotification
|
||||
@@ -25,7 +23,6 @@ import {
|
||||
setToolboxEnabled,
|
||||
showToolbox
|
||||
} from '../../react/features/toolbox/actions.web';
|
||||
import UIEvents from '../../service/UI/UIEvents';
|
||||
|
||||
import EtherpadManager from './etherpad/Etherpad';
|
||||
import UIUtil from './util/UIUtil';
|
||||
@@ -33,22 +30,8 @@ import VideoLayout from './videolayout/VideoLayout';
|
||||
|
||||
const logger = Logger.getLogger(__filename);
|
||||
|
||||
const eventEmitter = new EventEmitter();
|
||||
|
||||
UI.eventEmitter = eventEmitter;
|
||||
|
||||
let etherpadManager;
|
||||
|
||||
const UIListeners = new Map([
|
||||
[
|
||||
UIEvents.ETHERPAD_CLICKED,
|
||||
() => etherpadManager && etherpadManager.toggleEtherpad()
|
||||
], [
|
||||
UIEvents.TOGGLE_FILMSTRIP,
|
||||
() => UI.toggleFilmstrip()
|
||||
]
|
||||
]);
|
||||
|
||||
/**
|
||||
* Indicates if we're currently in full screen mode.
|
||||
*
|
||||
@@ -96,10 +79,11 @@ UI.start = function() {
|
||||
};
|
||||
|
||||
/**
|
||||
* Setup some UI event listeners.
|
||||
* Handles etherpad click.
|
||||
*/
|
||||
UI.registerListeners
|
||||
= () => UIListeners.forEach((value, key) => UI.addListener(key, value));
|
||||
UI.onEtherpadClicked = function() {
|
||||
etherpadManager && etherpadManager.toggleEtherpad();
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -143,7 +127,7 @@ UI.initEtherpad = name => {
|
||||
}
|
||||
logger.log('Etherpad is enabled');
|
||||
|
||||
etherpadManager = new EtherpadManager(eventEmitter);
|
||||
etherpadManager = new EtherpadManager();
|
||||
|
||||
const url = new URL(name, etherpadBaseUrl);
|
||||
|
||||
@@ -197,15 +181,6 @@ UI.updateUserStatus = (user, status) => {
|
||||
}, NOTIFICATION_TIMEOUT_TYPE.SHORT));
|
||||
};
|
||||
|
||||
/**
|
||||
* Toggles filmstrip.
|
||||
*/
|
||||
UI.toggleFilmstrip = function() {
|
||||
const { visible } = APP.store.getState()['features/filmstrip'];
|
||||
|
||||
APP.store.dispatch(setFilmstripVisible(!visible));
|
||||
};
|
||||
|
||||
/**
|
||||
* Sets muted video state for participant
|
||||
*/
|
||||
@@ -219,33 +194,6 @@ UI.setVideoMuted = function(id) {
|
||||
|
||||
UI.updateLargeVideo = (id, forceUpdate) => VideoLayout.updateLargeVideo(id, forceUpdate);
|
||||
|
||||
/**
|
||||
* Adds a listener that would be notified on the given type of event.
|
||||
*
|
||||
* @param type the type of the event we're listening for
|
||||
* @param listener a function that would be called when notified
|
||||
*/
|
||||
UI.addListener = function(type, listener) {
|
||||
eventEmitter.on(type, listener);
|
||||
};
|
||||
|
||||
/**
|
||||
* Removes the all listeners for all events.
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
UI.removeAllListeners = function() {
|
||||
eventEmitter.removeAllListeners();
|
||||
};
|
||||
|
||||
/**
|
||||
* Emits the event of given type by specifying the parameters in options.
|
||||
*
|
||||
* @param type the type of the event we're emitting
|
||||
* @param options the parameters for the event
|
||||
*/
|
||||
UI.emitEvent = (type, ...options) => eventEmitter.emit(type, ...options);
|
||||
|
||||
// Used by torture.
|
||||
UI.showToolbar = timeout => APP.store.dispatch(showToolbox(timeout));
|
||||
|
||||
|
||||
@@ -138,8 +138,7 @@ export default class EtherpadManager {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
constructor(eventEmitter) {
|
||||
this.eventEmitter = eventEmitter;
|
||||
constructor() {
|
||||
this.etherpad = null;
|
||||
}
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ import { createScreenSharingIssueEvent } from '../../../react/features/analytics
|
||||
import { sendAnalytics } from '../../../react/features/analytics/functions';
|
||||
import Avatar from '../../../react/features/base/avatar/components/Avatar';
|
||||
import theme from '../../../react/features/base/components/themes/participantsPaneTheme.json';
|
||||
import { getSsrcRewritingFeatureFlag } from '../../../react/features/base/config/functions.any';
|
||||
import i18next from '../../../react/features/base/i18n/i18next';
|
||||
import { JitsiTrackEvents } from '../../../react/features/base/lib-jitsi-meet';
|
||||
import { VIDEO_TYPE } from '../../../react/features/base/media/constants';
|
||||
@@ -221,10 +222,10 @@ export default class LargeVideoManager {
|
||||
|
||||
this.updateInProcess = true;
|
||||
|
||||
// Include hide()/fadeOut only if we're switching between users
|
||||
// eslint-disable-next-line eqeqeq
|
||||
// Include hide()/fadeOut if we're switching between users or between different sources of the same user.
|
||||
const container = this.getCurrentContainer();
|
||||
const isUserSwitch = this.newStreamData.id !== container.id;
|
||||
const isUserSwitch = container.id !== this.newStreamData.id
|
||||
|| container.stream?.getSourceName() !== this.newStreamData.stream?.getSourceName();
|
||||
const preUpdate = isUserSwitch ? container.hide() : Promise.resolve();
|
||||
|
||||
preUpdate.then(() => {
|
||||
@@ -264,7 +265,15 @@ export default class LargeVideoManager {
|
||||
// in order to stop updating track streaming status for the old track and start it for the new track.
|
||||
// TODO: when this class is converted to a function react component,
|
||||
// use a custom hook to update a local track streaming status.
|
||||
if (this.videoTrack?.jitsiTrack?.getSourceName() !== videoTrack?.jitsiTrack?.getSourceName()) {
|
||||
if (this.videoTrack?.jitsiTrack?.getSourceName() !== videoTrack?.jitsiTrack?.getSourceName()
|
||||
|| this.videoTrack?.jitsiTrack?.isP2P !== videoTrack?.jitsiTrack?.isP2P) {
|
||||
// In the case where we switch from jvb to p2p when we need to switch the p2p and jvb track, they will be
|
||||
// with the same source name. In order to add the streaming status listener we need to check if the isP2P
|
||||
// flag is different. Without this check we won't have the correct stream status listener for the track.
|
||||
// Normally the Thumbnail and ConnectionIndicator components will update the streaming status the same way
|
||||
// and this may mask the problem. But if for some reason the update from the Thumbnail and
|
||||
// ConnectionIndicator components don't happen this may lead to showing the avatar instead of
|
||||
// the video because of the old track inactive streaming status.
|
||||
if (this.videoTrack && !this.videoTrack.local) {
|
||||
this.videoTrack.jitsiTrack.off(JitsiTrackEvents.TRACK_STREAMING_STATUS_CHANGED,
|
||||
this.handleTrackStreamingStatusChanged);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user