Merge branch 'RocketChat:develop' into develop
This commit is contained in:
commit
7a4699d6cd
|
@ -6,7 +6,7 @@ orbs:
|
|||
|
||||
macos: &macos
|
||||
macos:
|
||||
xcode: "14.2.0"
|
||||
xcode: "15.2.0"
|
||||
resource_class: macos.m1.medium.gen1
|
||||
|
||||
bash-env: &bash-env
|
||||
|
@ -19,7 +19,9 @@ android-env: &android-env
|
|||
|
||||
install-npm-modules: &install-npm-modules
|
||||
name: Install NPM modules
|
||||
command: yarn
|
||||
command: |
|
||||
yarn global add node-gyp
|
||||
yarn
|
||||
|
||||
restore-npm-cache-linux: &restore-npm-cache-linux
|
||||
name: Restore NPM cache
|
||||
|
@ -54,15 +56,13 @@ save-gems-cache: &save-gems-cache
|
|||
update-fastlane-ios: &update-fastlane-ios
|
||||
name: Update Fastlane
|
||||
command: |
|
||||
echo "ruby-2.7.7" > ~/.ruby-version
|
||||
bundle install
|
||||
working_directory: ios
|
||||
|
||||
update-fastlane-android: &update-fastlane-android
|
||||
name: Update Fastlane
|
||||
command: |
|
||||
echo "ruby-2.7.7" > ~/.ruby-version
|
||||
bundle install
|
||||
bundle install --path gems
|
||||
working_directory: android
|
||||
|
||||
save-gradle-cache: &save-gradle-cache
|
||||
|
@ -78,6 +78,27 @@ restore_cache: &restore-gradle-cache
|
|||
# COMMANDS
|
||||
commands:
|
||||
|
||||
manage-ruby:
|
||||
description: "Manage ruby version"
|
||||
steps:
|
||||
- restore_cache:
|
||||
name: Restore ruby
|
||||
key: ruby-v2-{{ checksum ".ruby-version" }}
|
||||
- run:
|
||||
name: Install ruby
|
||||
command: |
|
||||
echo "ruby-2.7.7" > ~/.ruby-version
|
||||
if [ -d ~/.rbenv/versions/2.7.7 ]; then
|
||||
echo "Ruby already installed"
|
||||
else
|
||||
rbenv install 2.7.7
|
||||
fi
|
||||
- save_cache:
|
||||
name: Save ruby cache
|
||||
key: ruby-v2-{{ checksum ".ruby-version" }}
|
||||
paths:
|
||||
- ~/.rbenv/versions/2.7.7
|
||||
|
||||
manage-pods:
|
||||
description: "Restore/Get/Save cache of pods libs"
|
||||
steps:
|
||||
|
@ -204,6 +225,7 @@ commands:
|
|||
- checkout
|
||||
- restore_cache: *restore-gems-cache
|
||||
- restore_cache: *restore-npm-cache-mac
|
||||
- manage-ruby
|
||||
- run: *install-npm-modules
|
||||
- run: *update-fastlane-ios
|
||||
- manage-pods
|
||||
|
@ -328,6 +350,7 @@ commands:
|
|||
at: ios
|
||||
- restore_cache: *restore-gems-cache
|
||||
- restore_cache: *restore-npm-cache-mac
|
||||
- manage-ruby
|
||||
- run: *install-npm-modules
|
||||
- run: *update-fastlane-ios
|
||||
- manage-pods
|
||||
|
@ -381,7 +404,7 @@ jobs:
|
|||
- run:
|
||||
name: Test
|
||||
command: |
|
||||
yarn test -w 8
|
||||
yarn test --runInBand
|
||||
|
||||
- run:
|
||||
name: Codecov
|
||||
|
@ -394,7 +417,7 @@ jobs:
|
|||
android-build-experimental:
|
||||
<<: *defaults
|
||||
docker:
|
||||
- image: cimg/android:2022.03.1-node
|
||||
- image: cimg/android:2023.11-node
|
||||
environment:
|
||||
<<: *android-env
|
||||
<<: *bash-env
|
||||
|
@ -406,7 +429,7 @@ jobs:
|
|||
android-automatic-build-experimental:
|
||||
<<: *defaults
|
||||
docker:
|
||||
- image: circleci/android:api-29-node
|
||||
- image: cimg/android:2023.11-node
|
||||
environment:
|
||||
<<: *android-env
|
||||
<<: *bash-env
|
||||
|
@ -417,7 +440,7 @@ jobs:
|
|||
android-build-official:
|
||||
<<: *defaults
|
||||
docker:
|
||||
- image: cimg/android:2022.03.1-node
|
||||
- image: cimg/android:2023.11-node
|
||||
environment:
|
||||
<<: *android-env
|
||||
<<: *bash-env
|
||||
|
@ -428,7 +451,7 @@ jobs:
|
|||
android-internal-app-sharing-experimental:
|
||||
<<: *defaults
|
||||
docker:
|
||||
- image: cimg/android:2022.03.1-node
|
||||
- image: cimg/android:2023.11-node
|
||||
|
||||
steps:
|
||||
- upload-to-internal-app-sharing
|
||||
|
@ -436,7 +459,7 @@ jobs:
|
|||
android-google-play-beta-experimental:
|
||||
<<: *defaults
|
||||
docker:
|
||||
- image: cimg/android:2022.03.1-node
|
||||
- image: cimg/android:2023.11-node
|
||||
|
||||
steps:
|
||||
- upload-to-google-play-beta:
|
||||
|
@ -445,14 +468,14 @@ jobs:
|
|||
android-google-play-production-experimental:
|
||||
<<: *defaults
|
||||
docker:
|
||||
- image: cimg/android:2022.03.1-node
|
||||
- image: cimg/android:2023.11-node
|
||||
steps:
|
||||
- upload-to-google-play-production
|
||||
|
||||
android-google-play-beta-official:
|
||||
<<: *defaults
|
||||
docker:
|
||||
- image: cimg/android:2022.03.1-node
|
||||
- image: cimg/android:2023.11-node
|
||||
|
||||
steps:
|
||||
- upload-to-google-play-beta:
|
||||
|
@ -575,6 +598,7 @@ jobs:
|
|||
- checkout
|
||||
- restore_cache: *restore-gems-cache
|
||||
- restore_cache: *restore-npm-cache-mac
|
||||
- manage-ruby
|
||||
- run: *install-npm-modules
|
||||
- run: *update-fastlane-ios
|
||||
- save_cache: *save-npm-cache-mac
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
name: organize translations
|
||||
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- 'app/i18n/locales/**.json'
|
||||
|
||||
jobs:
|
||||
organize-and-commit:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 18
|
||||
|
||||
- name: Run script to organize JSON keys
|
||||
run: node scripts/organize-translations.js
|
||||
|
||||
- name: Get changed files
|
||||
id: git-check
|
||||
uses: tj-actions/changed-files@v42
|
||||
with:
|
||||
files: |
|
||||
**.json
|
||||
|
||||
- name: List all changed files
|
||||
if: steps.git-check.outputs.any_changed == 'true'
|
||||
env:
|
||||
ALL_CHANGED_FILES: ${{ steps.git-check.outputs.all_changed_files }}
|
||||
run: |
|
||||
for file in ${ALL_CHANGED_FILES}; do
|
||||
echo "$file was changed"
|
||||
done
|
||||
|
||||
- name: Commit and push if changes
|
||||
if: steps.git-check.outputs.any_changed == 'true'
|
||||
uses: EndBug/add-and-commit@v9
|
||||
with:
|
||||
message: 'action: organized translations'
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,43 +1,45 @@
|
|||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
CFPropertyList (3.0.5)
|
||||
CFPropertyList (3.0.7)
|
||||
base64
|
||||
nkf
|
||||
rexml
|
||||
addressable (2.8.0)
|
||||
public_suffix (>= 2.0.2, < 5.0)
|
||||
addressable (2.8.6)
|
||||
public_suffix (>= 2.0.2, < 6.0)
|
||||
artifactory (3.0.15)
|
||||
atomos (0.1.3)
|
||||
aws-eventstream (1.2.0)
|
||||
aws-partitions (1.600.0)
|
||||
aws-sdk-core (3.131.2)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
aws-partitions (~> 1, >= 1.525.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-eventstream (1.3.0)
|
||||
aws-partitions (1.894.0)
|
||||
aws-sdk-core (3.191.3)
|
||||
aws-eventstream (~> 1, >= 1.3.0)
|
||||
aws-partitions (~> 1, >= 1.651.0)
|
||||
aws-sigv4 (~> 1.8)
|
||||
jmespath (~> 1, >= 1.6.1)
|
||||
aws-sdk-kms (1.57.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sdk-kms (1.77.0)
|
||||
aws-sdk-core (~> 3, >= 3.191.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-s3 (1.114.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sdk-s3 (1.143.0)
|
||||
aws-sdk-core (~> 3, >= 3.191.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.4)
|
||||
aws-sigv4 (1.5.0)
|
||||
aws-sigv4 (~> 1.8)
|
||||
aws-sigv4 (1.8.0)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
babosa (1.0.4)
|
||||
base64 (0.2.0)
|
||||
claide (1.1.0)
|
||||
colored (1.2)
|
||||
colored2 (3.1.2)
|
||||
commander (4.6.0)
|
||||
highline (~> 2.0.0)
|
||||
declarative (0.0.20)
|
||||
digest-crc (0.6.4)
|
||||
digest-crc (0.6.5)
|
||||
rake (>= 12.0.0, < 14.0.0)
|
||||
domain_name (0.5.20190701)
|
||||
unf (>= 0.0.5, < 1.0.0)
|
||||
dotenv (2.7.6)
|
||||
domain_name (0.6.20240107)
|
||||
dotenv (2.8.1)
|
||||
emoji_regex (3.2.3)
|
||||
excon (0.92.3)
|
||||
faraday (1.10.0)
|
||||
excon (0.109.0)
|
||||
faraday (1.10.3)
|
||||
faraday-em_http (~> 1.0)
|
||||
faraday-em_synchrony (~> 1.0)
|
||||
faraday-excon (~> 1.1)
|
||||
|
@ -65,8 +67,8 @@ GEM
|
|||
faraday-retry (1.0.3)
|
||||
faraday_middleware (1.2.0)
|
||||
faraday (~> 1.0)
|
||||
fastimage (2.2.6)
|
||||
fastlane (2.206.2)
|
||||
fastimage (2.3.0)
|
||||
fastlane (2.219.0)
|
||||
CFPropertyList (>= 2.3, < 4.0.0)
|
||||
addressable (>= 2.8, < 3.0.0)
|
||||
artifactory (~> 3.0)
|
||||
|
@ -85,20 +87,22 @@ GEM
|
|||
gh_inspector (>= 1.1.2, < 2.0.0)
|
||||
google-apis-androidpublisher_v3 (~> 0.3)
|
||||
google-apis-playcustomapp_v1 (~> 0.1)
|
||||
google-cloud-env (>= 1.6.0, < 2.0.0)
|
||||
google-cloud-storage (~> 1.31)
|
||||
highline (~> 2.0)
|
||||
http-cookie (~> 1.0.5)
|
||||
json (< 3.0.0)
|
||||
jwt (>= 2.1.0, < 3)
|
||||
mini_magick (>= 4.9.4, < 5.0.0)
|
||||
multipart-post (~> 2.0.0)
|
||||
multipart-post (>= 2.0.0, < 3.0.0)
|
||||
naturally (~> 2.2)
|
||||
optparse (~> 0.1.1)
|
||||
optparse (>= 0.1.1)
|
||||
plist (>= 3.1.0, < 4.0.0)
|
||||
rubyzip (>= 2.0.0, < 3.0.0)
|
||||
security (= 0.1.3)
|
||||
simctl (~> 1.6.3)
|
||||
terminal-notifier (>= 2.0.0, < 3.0.0)
|
||||
terminal-table (>= 1.4.5, < 2.0.0)
|
||||
terminal-table (~> 3)
|
||||
tty-screen (>= 0.6.3, < 1.0.0)
|
||||
tty-spinner (>= 0.8.0, < 1.0.0)
|
||||
word_wrap (~> 1.0.0)
|
||||
|
@ -106,9 +110,9 @@ GEM
|
|||
xcpretty (~> 0.3.0)
|
||||
xcpretty-travis-formatter (>= 0.0.3)
|
||||
gh_inspector (1.1.3)
|
||||
google-apis-androidpublisher_v3 (0.22.0)
|
||||
google-apis-core (>= 0.5, < 2.a)
|
||||
google-apis-core (0.6.0)
|
||||
google-apis-androidpublisher_v3 (0.54.0)
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
google-apis-core (0.11.3)
|
||||
addressable (~> 2.5, >= 2.5.1)
|
||||
googleauth (>= 0.16.2, < 2.a)
|
||||
httpclient (>= 2.8.1, < 3.a)
|
||||
|
@ -116,31 +120,29 @@ GEM
|
|||
representable (~> 3.0)
|
||||
retriable (>= 2.0, < 4.a)
|
||||
rexml
|
||||
webrick
|
||||
google-apis-iamcredentials_v1 (0.12.0)
|
||||
google-apis-core (>= 0.6, < 2.a)
|
||||
google-apis-playcustomapp_v1 (0.9.0)
|
||||
google-apis-core (>= 0.6, < 2.a)
|
||||
google-apis-storage_v1 (0.15.0)
|
||||
google-apis-core (>= 0.5, < 2.a)
|
||||
google-cloud-core (1.6.0)
|
||||
google-cloud-env (~> 1.0)
|
||||
google-apis-iamcredentials_v1 (0.17.0)
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
google-apis-playcustomapp_v1 (0.13.0)
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
google-apis-storage_v1 (0.31.0)
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
google-cloud-core (1.6.1)
|
||||
google-cloud-env (>= 1.0, < 3.a)
|
||||
google-cloud-errors (~> 1.0)
|
||||
google-cloud-env (1.6.0)
|
||||
faraday (>= 0.17.3, < 3.0)
|
||||
google-cloud-errors (1.2.0)
|
||||
google-cloud-storage (1.36.2)
|
||||
google-cloud-errors (1.3.1)
|
||||
google-cloud-storage (1.47.0)
|
||||
addressable (~> 2.8)
|
||||
digest-crc (~> 0.4)
|
||||
google-apis-iamcredentials_v1 (~> 0.1)
|
||||
google-apis-storage_v1 (~> 0.1)
|
||||
google-apis-storage_v1 (~> 0.31.0)
|
||||
google-cloud-core (~> 1.6)
|
||||
googleauth (>= 0.16.2, < 2.a)
|
||||
mini_mime (~> 1.0)
|
||||
googleauth (1.2.0)
|
||||
googleauth (1.8.1)
|
||||
faraday (>= 0.17.3, < 3.a)
|
||||
jwt (>= 1.4, < 3.0)
|
||||
memoist (~> 0.16)
|
||||
multi_json (~> 1.11)
|
||||
os (>= 0.9, < 2.0)
|
||||
signet (>= 0.16, < 2.a)
|
||||
|
@ -148,55 +150,52 @@ GEM
|
|||
http-cookie (1.0.5)
|
||||
domain_name (~> 0.5)
|
||||
httpclient (2.8.3)
|
||||
jmespath (1.6.1)
|
||||
json (2.6.2)
|
||||
jwt (2.4.1)
|
||||
memoist (0.16.2)
|
||||
mini_magick (4.11.0)
|
||||
mini_mime (1.1.2)
|
||||
jmespath (1.6.2)
|
||||
json (2.7.1)
|
||||
jwt (2.8.0)
|
||||
base64
|
||||
mini_magick (4.12.0)
|
||||
mini_mime (1.1.5)
|
||||
multi_json (1.15.0)
|
||||
multipart-post (2.0.0)
|
||||
multipart-post (2.4.0)
|
||||
nanaimo (0.3.0)
|
||||
naturally (2.2.1)
|
||||
optparse (0.1.1)
|
||||
nkf (0.2.0)
|
||||
optparse (0.4.0)
|
||||
os (1.1.4)
|
||||
plist (3.6.0)
|
||||
public_suffix (4.0.7)
|
||||
rake (13.0.6)
|
||||
plist (3.7.1)
|
||||
public_suffix (5.0.4)
|
||||
rake (13.1.0)
|
||||
representable (3.2.0)
|
||||
declarative (< 0.1.0)
|
||||
trailblazer-option (>= 0.1.1, < 0.2.0)
|
||||
uber (< 0.2.0)
|
||||
retriable (3.1.2)
|
||||
rexml (3.2.5)
|
||||
rexml (3.2.6)
|
||||
rouge (2.0.7)
|
||||
ruby2_keywords (0.0.5)
|
||||
rubyzip (2.3.2)
|
||||
security (0.1.3)
|
||||
signet (0.17.0)
|
||||
signet (0.19.0)
|
||||
addressable (~> 2.8)
|
||||
faraday (>= 0.17.5, < 3.a)
|
||||
jwt (>= 1.5, < 3.0)
|
||||
multi_json (~> 1.10)
|
||||
simctl (1.6.8)
|
||||
simctl (1.6.10)
|
||||
CFPropertyList
|
||||
naturally
|
||||
terminal-notifier (2.0.0)
|
||||
terminal-table (1.8.0)
|
||||
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||
terminal-table (3.0.2)
|
||||
unicode-display_width (>= 1.1.1, < 3)
|
||||
trailblazer-option (0.1.2)
|
||||
tty-cursor (0.7.1)
|
||||
tty-screen (0.8.1)
|
||||
tty-screen (0.8.2)
|
||||
tty-spinner (0.9.3)
|
||||
tty-cursor (~> 0.7)
|
||||
uber (0.1.0)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
unf_ext (0.0.8.2)
|
||||
unicode-display_width (1.8.0)
|
||||
webrick (1.7.0)
|
||||
unicode-display_width (2.5.0)
|
||||
word_wrap (1.0.0)
|
||||
xcodeproj (1.22.0)
|
||||
xcodeproj (1.24.0)
|
||||
CFPropertyList (>= 2.3.3, < 4.0)
|
||||
atomos (~> 0.1.3)
|
||||
claide (>= 1.0.2, < 2.0)
|
||||
|
@ -216,4 +215,4 @@ DEPENDENCIES
|
|||
fastlane
|
||||
|
||||
BUNDLED WITH
|
||||
2.3.11
|
||||
2.4.21
|
||||
|
|
|
@ -147,7 +147,7 @@ android {
|
|||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||
versionCode VERSIONCODE as Integer
|
||||
versionName "4.47.0"
|
||||
versionName "4.48.0"
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
if (!isFoss) {
|
||||
manifestPlaceholders = [BugsnagAPIKey: BugsnagAPIKey as String]
|
||||
|
|
|
@ -96,5 +96,6 @@ export const VIDEO_CONF = createRequestTypes('VIDEO_CONF', [
|
|||
'ACCEPT_CALL',
|
||||
'SET_CALLING'
|
||||
]);
|
||||
export const TROUBLESHOOTING_NOTIFICATION = createRequestTypes('TROUBLESHOOTING_NOTIFICATION', ['INIT', 'SET']);
|
||||
export const SUPPORTED_VERSIONS = createRequestTypes('SUPPORTED_VERSIONS', ['SET']);
|
||||
export const IN_APP_FEEDBACK = createRequestTypes('IN_APP_FEEDBACK', ['SET', 'REMOVE', 'CLEAR']);
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
import { Action } from 'redux';
|
||||
|
||||
import { TROUBLESHOOTING_NOTIFICATION } from './actionsTypes';
|
||||
import { ITroubleshootingNotification } from '../reducers/troubleshootingNotification';
|
||||
|
||||
type TSetTroubleshootingNotification = Action & { payload: Partial<ITroubleshootingNotification> };
|
||||
|
||||
export type TActionTroubleshootingNotification = Action & TSetTroubleshootingNotification;
|
||||
|
||||
export function initTroubleshootingNotification(): Action {
|
||||
return {
|
||||
type: TROUBLESHOOTING_NOTIFICATION.INIT
|
||||
};
|
||||
}
|
||||
|
||||
export function setTroubleshootingNotification(payload: Partial<ITroubleshootingNotification>): TSetTroubleshootingNotification {
|
||||
return {
|
||||
type: TROUBLESHOOTING_NOTIFICATION.SET,
|
||||
payload
|
||||
};
|
||||
}
|
|
@ -10,10 +10,10 @@ import styles from './styles';
|
|||
import Seek from './Seek';
|
||||
import PlaybackSpeed from './PlaybackSpeed';
|
||||
import PlayButton from './PlayButton';
|
||||
import EventEmitter from '../../lib/methods/helpers/events';
|
||||
import audioPlayer, { AUDIO_FOCUSED } from '../../lib/methods/audioPlayer';
|
||||
import AudioManager from '../../lib/methods/AudioManager';
|
||||
import { AUDIO_PLAYBACK_SPEED, AVAILABLE_SPEEDS } from './constants';
|
||||
import { TDownloadState } from '../../lib/methods/handleMediaDownload';
|
||||
import { emitter } from '../../lib/methods/helpers';
|
||||
import { TAudioState } from './types';
|
||||
import { useUserPreferences } from '../../lib/methods';
|
||||
|
||||
|
@ -86,15 +86,15 @@ const AudioPlayer = ({
|
|||
};
|
||||
|
||||
const setPosition = async (time: number) => {
|
||||
await audioPlayer.setPositionAsync(audioUri.current, time);
|
||||
await AudioManager.setPositionAsync(audioUri.current, time);
|
||||
};
|
||||
|
||||
const togglePlayPause = async () => {
|
||||
try {
|
||||
if (!paused) {
|
||||
await audioPlayer.pauseAudio(audioUri.current);
|
||||
await AudioManager.pauseAudio();
|
||||
} else {
|
||||
await audioPlayer.playAudio(audioUri.current);
|
||||
await AudioManager.playAudio(audioUri.current);
|
||||
}
|
||||
} catch {
|
||||
// Do nothing
|
||||
|
@ -102,7 +102,7 @@ const AudioPlayer = ({
|
|||
};
|
||||
|
||||
useEffect(() => {
|
||||
audioPlayer.setRateAsync(audioUri.current, playbackSpeed);
|
||||
AudioManager.setRateAsync(audioUri.current, playbackSpeed);
|
||||
}, [playbackSpeed]);
|
||||
|
||||
const onPress = () => {
|
||||
|
@ -116,11 +116,13 @@ const AudioPlayer = ({
|
|||
};
|
||||
|
||||
useEffect(() => {
|
||||
InteractionManager.runAfterInteractions(async () => {
|
||||
audioUri.current = await audioPlayer.loadAudio({ msgId, rid, uri: fileUri });
|
||||
audioPlayer.setOnPlaybackStatusUpdate(audioUri.current, onPlaybackStatusUpdate);
|
||||
audioPlayer.setRateAsync(audioUri.current, playbackSpeed);
|
||||
});
|
||||
if (fileUri) {
|
||||
InteractionManager.runAfterInteractions(async () => {
|
||||
audioUri.current = await AudioManager.loadAudio({ msgId, rid, uri: fileUri });
|
||||
AudioManager.setOnPlaybackStatusUpdate(audioUri.current, onPlaybackStatusUpdate);
|
||||
AudioManager.setRateAsync(audioUri.current, playbackSpeed);
|
||||
});
|
||||
}
|
||||
}, [fileUri]);
|
||||
|
||||
useEffect(() => {
|
||||
|
@ -133,20 +135,26 @@ const AudioPlayer = ({
|
|||
|
||||
useEffect(() => {
|
||||
const unsubscribeFocus = navigation.addListener('focus', () => {
|
||||
audioPlayer.setOnPlaybackStatusUpdate(audioUri.current, onPlaybackStatusUpdate);
|
||||
AudioManager.setOnPlaybackStatusUpdate(audioUri.current, onPlaybackStatusUpdate);
|
||||
AudioManager.addAudioRendered(audioUri.current);
|
||||
});
|
||||
const unsubscribeBlur = navigation.addListener('blur', () => {
|
||||
AudioManager.removeAudioRendered(audioUri.current);
|
||||
});
|
||||
|
||||
return () => {
|
||||
unsubscribeFocus();
|
||||
unsubscribeBlur();
|
||||
};
|
||||
}, [navigation]);
|
||||
|
||||
useEffect(() => {
|
||||
const listener = EventEmitter.addEventListener(AUDIO_FOCUSED, ({ audioFocused }: { audioFocused: string }) => {
|
||||
setFocused(audioFocused === audioUri.current);
|
||||
});
|
||||
const audioFocusedEventHandler = (audioFocused: string) => {
|
||||
setFocused(!!audioFocused && audioFocused === audioUri.current);
|
||||
};
|
||||
emitter.on('audioFocused', audioFocusedEventHandler);
|
||||
return () => {
|
||||
EventEmitter.removeListener(AUDIO_FOCUSED, listener);
|
||||
emitter.off('audioFocused', audioFocusedEventHandler);
|
||||
};
|
||||
}, []);
|
||||
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
import React from 'react';
|
||||
import { act, fireEvent, render, screen } from '@testing-library/react-native';
|
||||
import { act, fireEvent, render, screen, userEvent } from '@testing-library/react-native';
|
||||
import { Provider } from 'react-redux';
|
||||
import { NavigationContainer } from '@react-navigation/native';
|
||||
import { createStackNavigator } from '@react-navigation/stack';
|
||||
|
||||
import { MessageComposerContainer } from './MessageComposerContainer';
|
||||
import { setPermissions } from '../../actions/permissions';
|
||||
|
@ -27,7 +25,7 @@ const initialStoreState = () => {
|
|||
initialStoreState();
|
||||
|
||||
const initialContext = {
|
||||
rid: '',
|
||||
rid: 'rid',
|
||||
tmid: undefined,
|
||||
sharing: false,
|
||||
action: null,
|
||||
|
@ -38,33 +36,15 @@ const initialContext = {
|
|||
onRemoveQuoteMessage: jest.fn()
|
||||
};
|
||||
|
||||
const Stack = createStackNavigator();
|
||||
|
||||
// const Navigation = ({ children }: { children: any }) => (
|
||||
// <NavigationContainer>
|
||||
// <Stack.Navigator>
|
||||
// <Stack.Screen name='A' component={children} />
|
||||
// </Stack.Navigator>
|
||||
// </NavigationContainer>
|
||||
// );
|
||||
|
||||
// const Content = () => (
|
||||
// <MessageComposerContainer />
|
||||
// )
|
||||
|
||||
const Render = ({ context }: { context?: Partial<IRoomContext> }) => (
|
||||
<Provider store={mockedStore}>
|
||||
<RoomContext.Provider value={{ ...initialContext, ...context }}>
|
||||
<NavigationContainer>
|
||||
<Stack.Navigator>
|
||||
<Stack.Screen name='MessageComposer' component={MessageComposerContainer} />
|
||||
</Stack.Navigator>
|
||||
</NavigationContainer>
|
||||
<MessageComposerContainer />
|
||||
</RoomContext.Provider>
|
||||
</Provider>
|
||||
);
|
||||
|
||||
describe.skip('MessageComposer', () => {
|
||||
describe('MessageComposer', () => {
|
||||
test('renders correctly', () => {
|
||||
render(<Render />);
|
||||
expect(screen.getByTestId('message-composer-input')).toBeOnTheScreen();
|
||||
|
@ -76,14 +56,14 @@ describe.skip('MessageComposer', () => {
|
|||
test('renders correctly with audio recorder disabled', () => {
|
||||
mockedStore.dispatch(addSettings({ Message_AudioRecorderEnabled: false }));
|
||||
render(<Render />);
|
||||
expect(screen.queryByTestId('message-composer-send-audio')).toBeNull();
|
||||
expect(screen.queryByTestId('message-composer-send-audio')).not.toBeOnTheScreen();
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('renders correctly without audio upload permissions', () => {
|
||||
mockedStore.dispatch(setPermissions({}));
|
||||
render(<Render />);
|
||||
expect(screen.queryByTestId('message-composer-send-audio')).toBeNull();
|
||||
expect(screen.queryByTestId('message-composer-send-audio')).not.toBeOnTheScreen();
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
});
|
||||
|
||||
|
@ -91,7 +71,7 @@ describe.skip('MessageComposer', () => {
|
|||
mockedStore.dispatch(addSettings({ Message_AudioRecorderEnabled: false }));
|
||||
mockedStore.dispatch(setPermissions({}));
|
||||
render(<Render />);
|
||||
expect(screen.queryByTestId('message-composer-send-audio')).toBeNull();
|
||||
expect(screen.queryByTestId('message-composer-send-audio')).not.toBeOnTheScreen();
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
});
|
||||
|
||||
|
@ -100,9 +80,9 @@ describe.skip('MessageComposer', () => {
|
|||
render(<Render />);
|
||||
expect(screen.getByTestId('message-composer-actions')).toBeOnTheScreen();
|
||||
expect(screen.getByTestId('message-composer-send-audio')).toBeOnTheScreen();
|
||||
expect(screen.queryByTestId('message-composer-open-emoji')).toBeNull();
|
||||
expect(screen.queryByTestId('message-composer-open-markdown')).toBeNull();
|
||||
expect(screen.queryByTestId('message-composer-mention')).toBeNull();
|
||||
expect(screen.queryByTestId('message-composer-open-emoji')).not.toBeOnTheScreen();
|
||||
expect(screen.queryByTestId('message-composer-open-markdown')).not.toBeOnTheScreen();
|
||||
expect(screen.queryByTestId('message-composer-mention')).not.toBeOnTheScreen();
|
||||
|
||||
await act(async () => {
|
||||
await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
|
@ -116,238 +96,247 @@ describe.skip('MessageComposer', () => {
|
|||
});
|
||||
|
||||
test('send message', async () => {
|
||||
const user = userEvent.setup();
|
||||
const onSendMessage = jest.fn();
|
||||
render(<Render context={{ onSendMessage }} />);
|
||||
expect(screen.getByTestId('message-composer-send-audio')).toBeOnTheScreen();
|
||||
|
||||
await user.type(screen.getByTestId('message-composer-input'), 'test');
|
||||
expect(screen.queryByTestId('message-composer-send-audio')).not.toBeOnTheScreen();
|
||||
expect(screen.getByTestId('message-composer-send')).toBeOnTheScreen();
|
||||
|
||||
await act(async () => {
|
||||
await fireEvent.changeText(screen.getByTestId('message-composer-input'), 'test');
|
||||
expect(screen.queryByTestId('message-composer-send-audio')).toBeNull();
|
||||
expect(screen.getByTestId('message-composer-send')).toBeOnTheScreen();
|
||||
await fireEvent.press(screen.getByTestId('message-composer-send'));
|
||||
});
|
||||
|
||||
expect(onSendMessage).toHaveBeenCalledTimes(1);
|
||||
expect(onSendMessage).toHaveBeenCalledWith('test', undefined);
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('tap actions from toolbar', async () => {
|
||||
render(<Render />);
|
||||
describe('Toolbar', () => {
|
||||
test('tap actions', async () => {
|
||||
render(<Render />);
|
||||
|
||||
await act(async () => {
|
||||
await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
await fireEvent.press(screen.getByTestId('message-composer-actions'));
|
||||
await act(async () => {
|
||||
await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
await fireEvent.press(screen.getByTestId('message-composer-actions'));
|
||||
});
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
});
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('tap emoji', async () => {
|
||||
render(<Render />);
|
||||
test('tap emoji', async () => {
|
||||
render(<Render />);
|
||||
|
||||
await act(async () => {
|
||||
await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
await fireEvent.press(screen.getByTestId('message-composer-open-emoji'));
|
||||
await act(async () => {
|
||||
await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
await fireEvent.press(screen.getByTestId('message-composer-open-emoji'));
|
||||
});
|
||||
expect(screen.getByTestId('message-composer-close-emoji')).toBeOnTheScreen();
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
});
|
||||
expect(screen.getByTestId('message-composer-close-emoji')).toBeOnTheScreen();
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
});
|
||||
|
||||
// describe('Markdown', () => {
|
||||
// test('tap markdown', async () => {
|
||||
// render(<Render />);
|
||||
describe('Markdown', () => {
|
||||
test('tap markdown', async () => {
|
||||
render(<Render />);
|
||||
|
||||
// await act(async () => {
|
||||
// await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-open-markdown'));
|
||||
// });
|
||||
// expect(screen.getByTestId('message-composer-close-markdown')).toBeOnTheScreen();
|
||||
// expect(screen.getByTestId('message-composer-bold')).toBeOnTheScreen();
|
||||
// expect(screen.getByTestId('message-composer-italic')).toBeOnTheScreen();
|
||||
// expect(screen.getByTestId('message-composer-strike')).toBeOnTheScreen();
|
||||
// expect(screen.getByTestId('message-composer-code')).toBeOnTheScreen();
|
||||
// expect(screen.getByTestId('message-composer-code-block')).toBeOnTheScreen();
|
||||
// expect(screen.toJSON()).toMatchSnapshot();
|
||||
// });
|
||||
await act(async () => {
|
||||
await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
await fireEvent.press(screen.getByTestId('message-composer-open-markdown'));
|
||||
});
|
||||
expect(screen.getByTestId('message-composer-close-markdown')).toBeOnTheScreen();
|
||||
expect(screen.getByTestId('message-composer-bold')).toBeOnTheScreen();
|
||||
expect(screen.getByTestId('message-composer-italic')).toBeOnTheScreen();
|
||||
expect(screen.getByTestId('message-composer-strike')).toBeOnTheScreen();
|
||||
expect(screen.getByTestId('message-composer-code')).toBeOnTheScreen();
|
||||
expect(screen.getByTestId('message-composer-code-block')).toBeOnTheScreen();
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
});
|
||||
|
||||
// test('tap bold', async () => {
|
||||
// const onSendMessage = jest.fn();
|
||||
// render(<Render context={{ onSendMessage }} />);
|
||||
test('tap bold', async () => {
|
||||
const onSendMessage = jest.fn();
|
||||
render(<Render context={{ onSendMessage }} />);
|
||||
|
||||
// await act(async () => {
|
||||
// await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
// // await waitFor(() => fireEvent.press(screen.getByTestId('message-composer-open-markdown')), { timeout: 1000 });
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-open-markdown'));
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-bold'));
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-send'));
|
||||
// });
|
||||
// expect(onSendMessage).toHaveBeenCalledTimes(1);
|
||||
// expect(onSendMessage).toHaveBeenCalledWith('**', undefined);
|
||||
// expect(screen.toJSON()).toMatchSnapshot();
|
||||
// });
|
||||
await act(async () => {
|
||||
await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
await fireEvent.press(screen.getByTestId('message-composer-open-markdown'));
|
||||
await fireEvent.press(screen.getByTestId('message-composer-bold'));
|
||||
await fireEvent.press(screen.getByTestId('message-composer-send'));
|
||||
});
|
||||
expect(onSendMessage).toHaveBeenCalledTimes(1);
|
||||
expect(onSendMessage).toHaveBeenCalledWith('**', undefined);
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
});
|
||||
|
||||
// test('type test and tap bold', async () => {
|
||||
// const onSendMessage = jest.fn();
|
||||
// render(<Render context={{ onSendMessage }} />);
|
||||
test('type test and tap bold', async () => {
|
||||
const onSendMessage = jest.fn();
|
||||
render(<Render context={{ onSendMessage }} />);
|
||||
|
||||
// await act(async () => {
|
||||
// await fireEvent.changeText(screen.getByTestId('message-composer-input'), 'test');
|
||||
// await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
// await fireEvent(screen.getByTestId('message-composer-input'), 'selectionChange', {
|
||||
// nativeEvent: { selection: { start: 0, end: 4 } }
|
||||
// });
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-open-markdown'));
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-bold'));
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-send'));
|
||||
// });
|
||||
// expect(onSendMessage).toHaveBeenCalledTimes(1);
|
||||
// expect(onSendMessage).toHaveBeenCalledWith('*test*', undefined);
|
||||
// expect(screen.toJSON()).toMatchSnapshot();
|
||||
// });
|
||||
await act(async () => {
|
||||
await fireEvent.changeText(screen.getByTestId('message-composer-input'), 'test');
|
||||
await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
await fireEvent(screen.getByTestId('message-composer-input'), 'selectionChange', {
|
||||
nativeEvent: { selection: { start: 0, end: 4 } }
|
||||
});
|
||||
await fireEvent.press(screen.getByTestId('message-composer-open-markdown'));
|
||||
await fireEvent.press(screen.getByTestId('message-composer-bold'));
|
||||
await fireEvent.press(screen.getByTestId('message-composer-send'));
|
||||
});
|
||||
expect(onSendMessage).toHaveBeenCalledTimes(1);
|
||||
expect(onSendMessage).toHaveBeenCalledWith('*test*', undefined);
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
});
|
||||
|
||||
// test('tap italic', async () => {
|
||||
// const onSendMessage = jest.fn();
|
||||
// render(<Render context={{ onSendMessage }} />);
|
||||
test('tap italic', async () => {
|
||||
const onSendMessage = jest.fn();
|
||||
render(<Render context={{ onSendMessage }} />);
|
||||
|
||||
// await act(async () => {
|
||||
// await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-open-markdown'));
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-italic'));
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-send'));
|
||||
// });
|
||||
// expect(onSendMessage).toHaveBeenCalledTimes(1);
|
||||
// expect(onSendMessage).toHaveBeenCalledWith('__', undefined);
|
||||
// expect(screen.toJSON()).toMatchSnapshot();
|
||||
// });
|
||||
await act(async () => {
|
||||
await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
await fireEvent.press(screen.getByTestId('message-composer-open-markdown'));
|
||||
await fireEvent.press(screen.getByTestId('message-composer-italic'));
|
||||
await fireEvent.press(screen.getByTestId('message-composer-send'));
|
||||
});
|
||||
expect(onSendMessage).toHaveBeenCalledTimes(1);
|
||||
expect(onSendMessage).toHaveBeenCalledWith('__', undefined);
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
});
|
||||
|
||||
// test('type test and tap italic', async () => {
|
||||
// const onSendMessage = jest.fn();
|
||||
// render(<Render context={{ onSendMessage }} />);
|
||||
test('type test and tap italic', async () => {
|
||||
const onSendMessage = jest.fn();
|
||||
render(<Render context={{ onSendMessage }} />);
|
||||
|
||||
// await act(async () => {
|
||||
// await fireEvent.changeText(screen.getByTestId('message-composer-input'), 'test');
|
||||
// await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
// await fireEvent(screen.getByTestId('message-composer-input'), 'selectionChange', {
|
||||
// nativeEvent: { selection: { start: 0, end: 4 } }
|
||||
// });
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-open-markdown'));
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-italic'));
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-send'));
|
||||
// });
|
||||
// expect(onSendMessage).toHaveBeenCalledTimes(1);
|
||||
// expect(onSendMessage).toHaveBeenCalledWith('_test_', undefined);
|
||||
// expect(screen.toJSON()).toMatchSnapshot();
|
||||
// });
|
||||
await act(async () => {
|
||||
await fireEvent.changeText(screen.getByTestId('message-composer-input'), 'test');
|
||||
await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
await fireEvent(screen.getByTestId('message-composer-input'), 'selectionChange', {
|
||||
nativeEvent: { selection: { start: 0, end: 4 } }
|
||||
});
|
||||
await fireEvent.press(screen.getByTestId('message-composer-open-markdown'));
|
||||
await fireEvent.press(screen.getByTestId('message-composer-italic'));
|
||||
await fireEvent.press(screen.getByTestId('message-composer-send'));
|
||||
});
|
||||
expect(onSendMessage).toHaveBeenCalledTimes(1);
|
||||
expect(onSendMessage).toHaveBeenCalledWith('_test_', undefined);
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
});
|
||||
|
||||
// test('tap strike', async () => {
|
||||
// const onSendMessage = jest.fn();
|
||||
// render(<Render context={{ onSendMessage }} />);
|
||||
test('tap strike', async () => {
|
||||
const onSendMessage = jest.fn();
|
||||
render(<Render context={{ onSendMessage }} />);
|
||||
|
||||
// await act(async () => {
|
||||
// await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-open-markdown'));
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-strike'));
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-send'));
|
||||
// });
|
||||
// expect(onSendMessage).toHaveBeenCalledTimes(1);
|
||||
// expect(onSendMessage).toHaveBeenCalledWith('~~', undefined);
|
||||
// expect(screen.toJSON()).toMatchSnapshot();
|
||||
// });
|
||||
await act(async () => {
|
||||
await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
await fireEvent.press(screen.getByTestId('message-composer-open-markdown'));
|
||||
await fireEvent.press(screen.getByTestId('message-composer-strike'));
|
||||
await fireEvent.press(screen.getByTestId('message-composer-send'));
|
||||
});
|
||||
expect(onSendMessage).toHaveBeenCalledTimes(1);
|
||||
expect(onSendMessage).toHaveBeenCalledWith('~~', undefined);
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
});
|
||||
|
||||
// test('type test and tap strike', async () => {
|
||||
// const onSendMessage = jest.fn();
|
||||
// render(<Render context={{ onSendMessage }} />);
|
||||
test('type test and tap strike', async () => {
|
||||
const onSendMessage = jest.fn();
|
||||
render(<Render context={{ onSendMessage }} />);
|
||||
|
||||
// await act(async () => {
|
||||
// await fireEvent.changeText(screen.getByTestId('message-composer-input'), 'test');
|
||||
// await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
// await fireEvent(screen.getByTestId('message-composer-input'), 'selectionChange', {
|
||||
// nativeEvent: { selection: { start: 0, end: 4 } }
|
||||
// });
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-open-markdown'));
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-strike'));
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-send'));
|
||||
// });
|
||||
// expect(onSendMessage).toHaveBeenCalledTimes(1);
|
||||
// expect(onSendMessage).toHaveBeenCalledWith('~test~', undefined);
|
||||
// expect(screen.toJSON()).toMatchSnapshot();
|
||||
// });
|
||||
await act(async () => {
|
||||
await fireEvent.changeText(screen.getByTestId('message-composer-input'), 'test');
|
||||
await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
await fireEvent(screen.getByTestId('message-composer-input'), 'selectionChange', {
|
||||
nativeEvent: { selection: { start: 0, end: 4 } }
|
||||
});
|
||||
await fireEvent.press(screen.getByTestId('message-composer-open-markdown'));
|
||||
await fireEvent.press(screen.getByTestId('message-composer-strike'));
|
||||
await fireEvent.press(screen.getByTestId('message-composer-send'));
|
||||
});
|
||||
expect(onSendMessage).toHaveBeenCalledTimes(1);
|
||||
expect(onSendMessage).toHaveBeenCalledWith('~test~', undefined);
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
});
|
||||
|
||||
// test('tap code', async () => {
|
||||
// const onSendMessage = jest.fn();
|
||||
// render(<Render context={{ onSendMessage }} />);
|
||||
test('tap code', async () => {
|
||||
const onSendMessage = jest.fn();
|
||||
render(<Render context={{ onSendMessage }} />);
|
||||
|
||||
// await act(async () => {
|
||||
// await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-open-markdown'));
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-code'));
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-send'));
|
||||
// });
|
||||
// expect(onSendMessage).toHaveBeenCalledTimes(1);
|
||||
// expect(onSendMessage).toHaveBeenCalledWith('``', undefined);
|
||||
// expect(screen.toJSON()).toMatchSnapshot();
|
||||
// });
|
||||
await act(async () => {
|
||||
await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
await fireEvent.press(screen.getByTestId('message-composer-open-markdown'));
|
||||
await fireEvent.press(screen.getByTestId('message-composer-code'));
|
||||
await fireEvent.press(screen.getByTestId('message-composer-send'));
|
||||
});
|
||||
expect(onSendMessage).toHaveBeenCalledTimes(1);
|
||||
expect(onSendMessage).toHaveBeenCalledWith('``', undefined);
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
});
|
||||
|
||||
// test('type test and tap code', async () => {
|
||||
// const onSendMessage = jest.fn();
|
||||
// render(<Render context={{ onSendMessage }} />);
|
||||
test('type test and tap code', async () => {
|
||||
const onSendMessage = jest.fn();
|
||||
render(<Render context={{ onSendMessage }} />);
|
||||
|
||||
// await act(async () => {
|
||||
// await fireEvent.changeText(screen.getByTestId('message-composer-input'), 'test');
|
||||
// await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
// await fireEvent(screen.getByTestId('message-composer-input'), 'selectionChange', {
|
||||
// nativeEvent: { selection: { start: 0, end: 4 } }
|
||||
// });
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-open-markdown'));
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-code'));
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-send'));
|
||||
// });
|
||||
// expect(onSendMessage).toHaveBeenCalledTimes(1);
|
||||
// expect(onSendMessage).toHaveBeenCalledWith('`test`', undefined);
|
||||
// expect(screen.toJSON()).toMatchSnapshot();
|
||||
// });
|
||||
await act(async () => {
|
||||
await fireEvent.changeText(screen.getByTestId('message-composer-input'), 'test');
|
||||
await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
await fireEvent(screen.getByTestId('message-composer-input'), 'selectionChange', {
|
||||
nativeEvent: { selection: { start: 0, end: 4 } }
|
||||
});
|
||||
await fireEvent.press(screen.getByTestId('message-composer-open-markdown'));
|
||||
await fireEvent.press(screen.getByTestId('message-composer-code'));
|
||||
await fireEvent.press(screen.getByTestId('message-composer-send'));
|
||||
});
|
||||
expect(onSendMessage).toHaveBeenCalledTimes(1);
|
||||
expect(onSendMessage).toHaveBeenCalledWith('`test`', undefined);
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
});
|
||||
|
||||
// test('tap code-block', async () => {
|
||||
// const onSendMessage = jest.fn();
|
||||
// render(<Render context={{ onSendMessage }} />);
|
||||
test('tap code-block', async () => {
|
||||
const onSendMessage = jest.fn();
|
||||
render(<Render context={{ onSendMessage }} />);
|
||||
|
||||
// await act(async () => {
|
||||
// await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-open-markdown'));
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-code-block'));
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-send'));
|
||||
// });
|
||||
// expect(onSendMessage).toHaveBeenCalledTimes(1);
|
||||
// expect(onSendMessage).toHaveBeenCalledWith('``````', undefined);
|
||||
// expect(screen.toJSON()).toMatchSnapshot();
|
||||
// });
|
||||
await act(async () => {
|
||||
await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
await fireEvent.press(screen.getByTestId('message-composer-open-markdown'));
|
||||
await fireEvent.press(screen.getByTestId('message-composer-code-block'));
|
||||
await fireEvent.press(screen.getByTestId('message-composer-send'));
|
||||
});
|
||||
expect(onSendMessage).toHaveBeenCalledTimes(1);
|
||||
expect(onSendMessage).toHaveBeenCalledWith('``````', undefined);
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
});
|
||||
|
||||
// test('type test and tap code-block', async () => {
|
||||
// const onSendMessage = jest.fn();
|
||||
// render(<Render context={{ onSendMessage }} />);
|
||||
test('type test and tap code-block', async () => {
|
||||
const onSendMessage = jest.fn();
|
||||
render(<Render context={{ onSendMessage }} />);
|
||||
|
||||
// await act(async () => {
|
||||
// await fireEvent.changeText(screen.getByTestId('message-composer-input'), 'test');
|
||||
// await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
// await fireEvent(screen.getByTestId('message-composer-input'), 'selectionChange', {
|
||||
// nativeEvent: { selection: { start: 0, end: 4 } }
|
||||
// });
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-open-markdown'));
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-code-block'));
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-send'));
|
||||
// });
|
||||
// expect(onSendMessage).toHaveBeenCalledTimes(1);
|
||||
// expect(onSendMessage).toHaveBeenCalledWith('```test```', undefined);
|
||||
// expect(screen.toJSON()).toMatchSnapshot();
|
||||
// });
|
||||
// });
|
||||
|
||||
test('tap mention', async () => {
|
||||
render(<Render />);
|
||||
|
||||
await act(async () => {
|
||||
await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
// await fireEvent.press(screen.getByTestId('message-composer-mention'));
|
||||
await act(async () => {
|
||||
await fireEvent.changeText(screen.getByTestId('message-composer-input'), 'test');
|
||||
await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
await fireEvent(screen.getByTestId('message-composer-input'), 'selectionChange', {
|
||||
nativeEvent: { selection: { start: 0, end: 4 } }
|
||||
});
|
||||
await fireEvent.press(screen.getByTestId('message-composer-open-markdown'));
|
||||
await fireEvent.press(screen.getByTestId('message-composer-code-block'));
|
||||
await fireEvent.press(screen.getByTestId('message-composer-send'));
|
||||
});
|
||||
expect(onSendMessage).toHaveBeenCalledTimes(1);
|
||||
expect(onSendMessage).toHaveBeenCalledWith('```test```', undefined);
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
});
|
||||
});
|
||||
|
||||
test('tap mention', async () => {
|
||||
const onSendMessage = jest.fn();
|
||||
render(<Render context={{ onSendMessage }} />);
|
||||
|
||||
await act(async () => {
|
||||
await fireEvent(screen.getByTestId('message-composer-input'), 'focus');
|
||||
await fireEvent.press(screen.getByTestId('message-composer-mention'));
|
||||
await fireEvent.press(screen.getByTestId('message-composer-send'));
|
||||
});
|
||||
expect(onSendMessage).toHaveBeenCalledTimes(1);
|
||||
expect(onSendMessage).toHaveBeenCalledWith('@', undefined);
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
});
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
});
|
||||
|
||||
describe('edit message', () => {
|
||||
|
@ -362,19 +351,26 @@ describe.skip('MessageComposer', () => {
|
|||
await screen.findByTestId('message-composer');
|
||||
expect(screen.getByTestId('message-composer')).toHaveStyle({ backgroundColor: colors.light.statusBackgroundWarning2 });
|
||||
expect(screen.getByTestId('message-composer-actions')).toBeOnTheScreen();
|
||||
expect(screen.queryByTestId('message-composer-send-audio')).toBeNull();
|
||||
expect(screen.queryByTestId('message-composer-send-audio')).not.toBeOnTheScreen();
|
||||
expect(screen.getByTestId('message-composer-cancel-edit')).toBeOnTheScreen();
|
||||
});
|
||||
test('cancel', async () => {
|
||||
await screen.findByTestId('message-composer');
|
||||
expect(screen.getByTestId('message-composer')).toHaveStyle({ backgroundColor: colors.light.statusBackgroundWarning2 });
|
||||
fireEvent.press(screen.getByTestId('message-composer-cancel-edit'));
|
||||
await act(async () => {
|
||||
await fireEvent.press(screen.getByTestId('message-composer-cancel-edit'));
|
||||
});
|
||||
expect(editCancel).toHaveBeenCalledTimes(1);
|
||||
expect(screen.getByTestId('message-composer-actions')).toBeOnTheScreen();
|
||||
expect(screen.queryByTestId('message-composer-send-audio')).not.toBeOnTheScreen();
|
||||
expect(screen.getByTestId('message-composer-cancel-edit')).toBeOnTheScreen();
|
||||
});
|
||||
test('send', async () => {
|
||||
await screen.findByTestId('message-composer');
|
||||
expect(screen.getByTestId('message-composer')).toHaveStyle({ backgroundColor: colors.light.statusBackgroundWarning2 });
|
||||
fireEvent.press(screen.getByTestId('message-composer-send'));
|
||||
await act(async () => {
|
||||
await fireEvent.press(screen.getByTestId('message-composer-send'));
|
||||
});
|
||||
expect(editRequest).toHaveBeenCalledTimes(1);
|
||||
expect(editRequest).toHaveBeenCalledWith({ id, msg: `Message ${id}`, rid: 'rid' });
|
||||
});
|
||||
|
@ -404,34 +400,46 @@ describe.skip('MessageComposer', () => {
|
|||
}));
|
||||
|
||||
describe('Quote', () => {
|
||||
test('Adding/removing quotes', () => {
|
||||
const onRemoveQuoteMessage = jest.fn();
|
||||
|
||||
// Render without quotes
|
||||
const { rerender } = render(<Render context={{ selectedMessages: [], onRemoveQuoteMessage }} />);
|
||||
expect(screen.queryByTestId('composer-quote-abc')).toBeNull();
|
||||
expect(screen.queryByTestId('composer-quote-def')).toBeNull();
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
|
||||
// Add a quote
|
||||
rerender(<Render context={{ action: 'quote', selectedMessages: ['abc'], onRemoveQuoteMessage }} />);
|
||||
expect(screen.getByTestId('composer-quote-abc')).toBeOnTheScreen();
|
||||
expect(screen.queryByTestId('composer-quote-def')).toBeNull();
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
|
||||
// Add another quote
|
||||
rerender(<Render context={{ action: 'quote', selectedMessages: ['abc', 'def'], onRemoveQuoteMessage }} />);
|
||||
expect(screen.getByTestId('composer-quote-abc')).toBeOnTheScreen();
|
||||
expect(screen.getByTestId('composer-quote-def')).toBeOnTheScreen();
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
|
||||
// Remove a quote
|
||||
fireEvent.press(screen.getByTestId('composer-quote-remove-def'));
|
||||
expect(onRemoveQuoteMessage).toHaveBeenCalledTimes(1);
|
||||
expect(onRemoveQuoteMessage).toHaveBeenCalledWith('def');
|
||||
test('Add quote `abc`', async () => {
|
||||
render(<Render context={{ action: 'quote', selectedMessages: ['abc'] }} />);
|
||||
await act(async () => {
|
||||
await screen.findByTestId('composer-quote-abc');
|
||||
expect(screen.queryByTestId('composer-quote-abc')).toBeOnTheScreen();
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
});
|
||||
});
|
||||
|
||||
// TODO: need to create proper mocks for getMessageById and getPermalinkMessage
|
||||
// test('Send message with a quote', async () => {});
|
||||
test('Add quote `def`', async () => {
|
||||
render(<Render context={{ action: 'quote', selectedMessages: ['abc', 'def'] }} />);
|
||||
await act(async () => {
|
||||
await screen.findByTestId('composer-quote-abc');
|
||||
expect(screen.queryByTestId('composer-quote-abc')).toBeOnTheScreen();
|
||||
expect(screen.queryByTestId('composer-quote-def')).toBeOnTheScreen();
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
});
|
||||
});
|
||||
|
||||
test('Remove a quote', async () => {
|
||||
const onRemoveQuoteMessage = jest.fn();
|
||||
render(<Render context={{ action: 'quote', selectedMessages: ['abc', 'def'], onRemoveQuoteMessage }} />);
|
||||
await act(async () => {
|
||||
await screen.findByTestId('composer-quote-def');
|
||||
await fireEvent.press(screen.getByTestId('composer-quote-remove-def'));
|
||||
});
|
||||
expect(onRemoveQuoteMessage).toHaveBeenCalledTimes(1);
|
||||
expect(onRemoveQuoteMessage).toHaveBeenCalledWith('def');
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Audio', () => {
|
||||
test('tap record', async () => {
|
||||
render(<Render />);
|
||||
expect(screen.getByTestId('message-composer-send-audio')).toBeOnTheScreen();
|
||||
await act(async () => {
|
||||
await fireEvent.press(screen.getByTestId('message-composer-send-audio'));
|
||||
});
|
||||
expect(screen.toJSON()).toMatchSnapshot();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -30,6 +30,7 @@ import log from '../../lib/methods/helpers/log';
|
|||
import { prepareQuoteMessage } from './helpers';
|
||||
import { RecordAudio } from './components/RecordAudio';
|
||||
import { useKeyboardListener } from './hooks';
|
||||
import { emitter } from '../../lib/methods/helpers/emitter';
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
container: {
|
||||
|
@ -65,8 +66,13 @@ export const MessageComposer = ({
|
|||
const showEmojiKeyboard = useShowEmojiKeyboard();
|
||||
const showEmojiSearchbar = useShowEmojiSearchbar();
|
||||
const alsoSendThreadToChannel = useAlsoSendThreadToChannel();
|
||||
const { openSearchEmojiKeyboard, closeEmojiKeyboard, closeSearchEmojiKeyboard, setTrackingViewHeight } =
|
||||
useMessageComposerApi();
|
||||
const {
|
||||
openSearchEmojiKeyboard,
|
||||
closeEmojiKeyboard,
|
||||
closeSearchEmojiKeyboard,
|
||||
setTrackingViewHeight,
|
||||
setAlsoSendThreadToChannel
|
||||
} = useMessageComposerApi();
|
||||
const recordingAudio = useRecordingAudio();
|
||||
useKeyboardListener(trackingViewRef);
|
||||
|
||||
|
@ -100,6 +106,10 @@ export const MessageComposer = ({
|
|||
const handleSendMessage = async () => {
|
||||
if (!rid) return;
|
||||
|
||||
if (alsoSendThreadToChannel) {
|
||||
setAlsoSendThreadToChannel(false);
|
||||
}
|
||||
|
||||
if (sharing) {
|
||||
onSendMessage?.();
|
||||
return;
|
||||
|
@ -193,12 +203,12 @@ export const MessageComposer = ({
|
|||
|
||||
const onHeightChanged = (height: number) => {
|
||||
setTrackingViewHeight(height);
|
||||
emitter.emit(`setComposerHeight${tmid ? 'Thread' : ''}`, height);
|
||||
};
|
||||
|
||||
const backgroundColor = action === 'edit' ? colors.statusBackgroundWarning2 : colors.surfaceLight;
|
||||
|
||||
const renderContent = () => {
|
||||
console.count('[MessageComposer] renderContent');
|
||||
if (recordingAudio) {
|
||||
return <RecordAudio />;
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -7,16 +7,16 @@ import { RouteProp, useFocusEffect, useRoute } from '@react-navigation/native';
|
|||
import I18n from '../../../i18n';
|
||||
import { IAutocompleteItemProps, IComposerInput, IComposerInputProps, IInputSelection, TSetInput } from '../interfaces';
|
||||
import { useAutocompleteParams, useFocused, useMessageComposerApi } from '../context';
|
||||
import { loadDraftMessage, saveDraftMessage, fetchIsAllOrHere, getMentionRegexp } from '../helpers';
|
||||
import { useSubscription } from '../hooks';
|
||||
import { fetchIsAllOrHere, getMentionRegexp } from '../helpers';
|
||||
import { useSubscription, useAutoSaveDraft } from '../hooks';
|
||||
import sharedStyles from '../../../views/Styles';
|
||||
import { useTheme } from '../../../theme';
|
||||
import { userTyping } from '../../../actions/room';
|
||||
import { getRoomTitle } from '../../../lib/methods/helpers';
|
||||
import { getRoomTitle, parseJson } from '../../../lib/methods/helpers';
|
||||
import { MAX_HEIGHT, MIN_HEIGHT, NO_CANNED_RESPONSES, MARKDOWN_STYLES } from '../constants';
|
||||
import database from '../../../lib/database';
|
||||
import Navigation from '../../../lib/navigation/appNavigation';
|
||||
import { emitter } from '../emitter';
|
||||
import { emitter } from '../../../lib/methods/helpers/emitter';
|
||||
import { useRoomContext } from '../../../views/RoomView/context';
|
||||
import { getMessageById } from '../../../lib/database/services/Message';
|
||||
import { generateTriggerId } from '../../../lib/methods';
|
||||
|
@ -24,17 +24,19 @@ import { Services } from '../../../lib/services';
|
|||
import log from '../../../lib/methods/helpers/log';
|
||||
import { useAppSelector, usePrevious } from '../../../lib/hooks';
|
||||
import { ChatsStackParamList } from '../../../stacks/types';
|
||||
import { loadDraftMessage } from '../../../lib/methods/draftMessage';
|
||||
|
||||
const defaultSelection: IInputSelection = { start: 0, end: 0 };
|
||||
|
||||
export const ComposerInput = memo(
|
||||
forwardRef<IComposerInput, IComposerInputProps>(({ inputRef }, ref) => {
|
||||
const { colors, theme } = useTheme();
|
||||
const { rid, tmid, sharing, action, selectedMessages } = useRoomContext();
|
||||
const { rid, tmid, sharing, action, selectedMessages, setQuotesAndText } = useRoomContext();
|
||||
const focused = useFocused();
|
||||
const { setFocused, setMicOrSend, setAutocompleteParams } = useMessageComposerApi();
|
||||
const autocompleteType = useAutocompleteParams()?.type;
|
||||
const textRef = React.useRef('');
|
||||
const firstRender = React.useRef(false);
|
||||
const selectionRef = React.useRef<IInputSelection>(defaultSelection);
|
||||
const dispatch = useDispatch();
|
||||
const subscription = useSubscription(rid);
|
||||
|
@ -47,29 +49,29 @@ export const ComposerInput = memo(
|
|||
const usedCannedResponse = route.params?.usedCannedResponse;
|
||||
const prevAction = usePrevious(action);
|
||||
|
||||
useAutoSaveDraft(textRef.current);
|
||||
|
||||
// Draft/Canned Responses
|
||||
useEffect(() => {
|
||||
const setDraftMessage = async () => {
|
||||
const draftMessage = await loadDraftMessage({ rid, tmid });
|
||||
if (draftMessage) {
|
||||
setInput(draftMessage);
|
||||
const parsedDraft = parseJson(draftMessage);
|
||||
if (parsedDraft?.msg || parsedDraft?.quotes) {
|
||||
setQuotesAndText?.(parsedDraft.msg, parsedDraft.quotes);
|
||||
} else {
|
||||
setInput(draftMessage);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if (sharing) return;
|
||||
|
||||
if (usedCannedResponse) {
|
||||
setInput(usedCannedResponse);
|
||||
} else if (action !== 'edit') {
|
||||
if (usedCannedResponse) setInput(usedCannedResponse);
|
||||
if (action !== 'edit' && !firstRender.current) {
|
||||
firstRender.current = true;
|
||||
setDraftMessage();
|
||||
}
|
||||
|
||||
return () => {
|
||||
if (action !== 'edit') {
|
||||
saveDraftMessage({ rid, tmid, draftMessage: textRef.current });
|
||||
}
|
||||
};
|
||||
}, [action, rid, tmid, usedCannedResponse]);
|
||||
}, [action, rid, tmid, usedCannedResponse, firstRender.current]);
|
||||
|
||||
// Edit/quote
|
||||
useEffect(() => {
|
||||
|
@ -91,7 +93,7 @@ export const ComposerInput = memo(
|
|||
fetchMessageAndSetInput();
|
||||
return;
|
||||
}
|
||||
if (action === 'quote' && selectedMessages.length === 1) {
|
||||
if (action === 'quote' && selectedMessages.length) {
|
||||
focus();
|
||||
}
|
||||
}, [action, selectedMessages]);
|
||||
|
@ -339,7 +341,8 @@ export const ComposerInput = memo(
|
|||
defaultValue=''
|
||||
multiline
|
||||
keyboardAppearance={theme === 'light' ? 'light' : 'dark'}
|
||||
testID={`message-composer-input${tmid ? '-thread' : ''}`}
|
||||
// eslint-disable-next-line no-nested-ternary
|
||||
testID={`message-composer-input${tmid ? '-thread' : sharing ? '-share' : ''}`}
|
||||
/>
|
||||
);
|
||||
})
|
||||
|
|
|
@ -12,13 +12,13 @@ import sharedStyles from '../../../../views/Styles';
|
|||
import { ReviewButton } from './ReviewButton';
|
||||
import { useMessageComposerApi } from '../../context';
|
||||
import { sendFileMessage } from '../../../../lib/methods';
|
||||
import { IUpload } from '../../../../definitions';
|
||||
import log from '../../../../lib/methods/helpers/log';
|
||||
import { useRoomContext } from '../../../../views/RoomView/context';
|
||||
import { RECORDING_EXTENSION, RECORDING_MODE, RECORDING_SETTINGS } from '../../../../lib/constants';
|
||||
import { useAppSelector } from '../../../../lib/hooks';
|
||||
import log from '../../../../lib/methods/helpers/log';
|
||||
import { IUpload } from '../../../../definitions';
|
||||
import { useRoomContext } from '../../../../views/RoomView/context';
|
||||
import { useCanUploadFile } from '../../hooks';
|
||||
import { Duration, IDurationRef } from './Duration';
|
||||
import { RECORDING_EXTENSION, RECORDING_MODE, RECORDING_SETTINGS } from './constants';
|
||||
import AudioPlayer from '../../../AudioPlayer';
|
||||
import { CancelButton } from './CancelButton';
|
||||
import i18n from '../../../../i18n';
|
||||
|
|
|
@ -51,8 +51,7 @@ export const SendThreadToChannel = (): React.ReactElement | null => {
|
|||
* */
|
||||
if (alsoSendThreadToChannelUserPref === 'default') {
|
||||
const db = database.active;
|
||||
const observable = db.get('threads').query(Q.where('tmid', tmid)).observe();
|
||||
|
||||
const observable = db.get('threads').query(Q.where('id', tmid)).observe();
|
||||
subscription.current = observable.subscribe(result => {
|
||||
setAlsoSendThreadToChannel(!result.length);
|
||||
});
|
||||
|
|
|
@ -3,7 +3,7 @@ import React, { ReactElement } from 'react';
|
|||
import { ActionsButton, BaseButton } from '..';
|
||||
import { useMessageComposerApi } from '../../context';
|
||||
import { Gap } from '../Gap';
|
||||
import { emitter } from '../../emitter';
|
||||
import { emitter } from '../../../../lib/methods/helpers/emitter';
|
||||
import { useRoomContext } from '../../../../views/RoomView/context';
|
||||
|
||||
export const Default = (): ReactElement | null => {
|
||||
|
|
|
@ -4,7 +4,7 @@ import { BaseButton } from '..';
|
|||
import { useMessageComposerApi } from '../../context';
|
||||
import { Gap } from '../Gap';
|
||||
import { TMarkdownStyle } from '../../interfaces';
|
||||
import { emitter } from '../../emitter';
|
||||
import { emitter } from '../../../../lib/methods/helpers/emitter';
|
||||
|
||||
export const Markdown = (): ReactElement => {
|
||||
const { setMarkdownToolbar } = useMessageComposerApi();
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
import mitt from 'mitt';
|
||||
|
||||
import { TMarkdownStyle } from './interfaces';
|
||||
|
||||
type Events = {
|
||||
toolbarMention: undefined;
|
||||
addMarkdown: {
|
||||
style: TMarkdownStyle;
|
||||
};
|
||||
};
|
||||
|
||||
export const emitter = mitt<Events>();
|
||||
|
||||
emitter.on('*', (type, e) => console.log(type, e));
|
|
@ -1,4 +1,3 @@
|
|||
export * from './draftMessage';
|
||||
export * from './fetchIsAllOrHere';
|
||||
export * from './forceJpgExtension';
|
||||
export * from './getMentionRegexp';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
export * from './useAutocomplete';
|
||||
export * from './useAutoSaveDraft';
|
||||
export * from './useCanUploadFile';
|
||||
export * from './useChooseMedia';
|
||||
export * from './useKeyboardListener';
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
import { useCallback, useEffect, useRef } from 'react';
|
||||
|
||||
import { useRoomContext } from '../../../views/RoomView/context';
|
||||
import { useFocused } from '../context';
|
||||
import { saveDraftMessage } from '../../../lib/methods/draftMessage';
|
||||
|
||||
export const useAutoSaveDraft = (text = '') => {
|
||||
const { rid, tmid, action, selectedMessages } = useRoomContext();
|
||||
const focused = useFocused();
|
||||
const oldText = useRef('');
|
||||
const intervalRef = useRef();
|
||||
|
||||
const saveMessageDraft = useCallback(() => {
|
||||
if (action === 'edit') return;
|
||||
|
||||
const draftMessage = selectedMessages?.length ? JSON.stringify({ quotes: selectedMessages, msg: text }) : text;
|
||||
if (oldText.current !== draftMessage) {
|
||||
oldText.current = draftMessage;
|
||||
saveDraftMessage({ rid, tmid, draftMessage });
|
||||
}
|
||||
}, [action, rid, tmid, text, selectedMessages?.length]);
|
||||
|
||||
useEffect(() => {
|
||||
if (focused) {
|
||||
intervalRef.current = setInterval(saveMessageDraft, 3000) as any;
|
||||
} else {
|
||||
clearInterval(intervalRef.current);
|
||||
}
|
||||
|
||||
return () => {
|
||||
clearInterval(intervalRef.current);
|
||||
saveMessageDraft();
|
||||
};
|
||||
}, [focused, saveMessageDraft]);
|
||||
};
|
|
@ -1,6 +1,5 @@
|
|||
import { Alert } from 'react-native';
|
||||
import DocumentPicker from 'react-native-document-picker';
|
||||
import ImagePicker, { ImageOrVideo } from 'react-native-image-crop-picker';
|
||||
|
||||
import { IMAGE_PICKER_CONFIG, LIBRARY_PICKER_CONFIG, VIDEO_PICKER_CONFIG } from '../constants';
|
||||
import { forceJpgExtension } from '../helpers';
|
||||
|
@ -12,6 +11,7 @@ import { getThreadById } from '../../../lib/database/services/Thread';
|
|||
import Navigation from '../../../lib/navigation/appNavigation';
|
||||
import { useAppSelector } from '../../../lib/hooks';
|
||||
import { useRoomContext } from '../../../views/RoomView/context';
|
||||
import ImagePicker, { ImageOrVideo } from '../../../lib/methods/helpers/ImagePicker/ImagePicker';
|
||||
|
||||
export const useChooseMedia = ({
|
||||
rid,
|
||||
|
@ -23,7 +23,7 @@ export const useChooseMedia = ({
|
|||
permissionToUpload: boolean;
|
||||
}) => {
|
||||
const { FileUpload_MediaTypeWhiteList, FileUpload_MaxFileSize } = useAppSelector(state => state.settings);
|
||||
const { action, selectedMessages } = useRoomContext();
|
||||
const { action, setQuotesAndText, selectedMessages, getText } = useRoomContext();
|
||||
const allowList = FileUpload_MediaTypeWhiteList as string;
|
||||
const maxFileSize = FileUpload_MaxFileSize as number;
|
||||
const libPickerLabels = {
|
||||
|
@ -115,6 +115,16 @@ export const useChooseMedia = ({
|
|||
}
|
||||
};
|
||||
|
||||
const startShareView = () => {
|
||||
const text = getText?.() || '';
|
||||
return {
|
||||
selectedMessages,
|
||||
text
|
||||
};
|
||||
};
|
||||
|
||||
const finishShareView = (text = '', quotes = []) => setQuotesAndText?.(text, quotes);
|
||||
|
||||
const openShareView = async (attachments: any) => {
|
||||
if (!rid) return;
|
||||
const room = await getSubscriptionByRoomId(rid);
|
||||
|
@ -129,7 +139,8 @@ export const useChooseMedia = ({
|
|||
thread,
|
||||
attachments,
|
||||
action,
|
||||
selectedMessages
|
||||
finishShareView,
|
||||
startShareView
|
||||
});
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,26 +1,37 @@
|
|||
import { MutableRefObject, useEffect } from 'react';
|
||||
import { Keyboard } from 'react-native';
|
||||
import { useIsFocused } from '@react-navigation/native';
|
||||
|
||||
import { useMessageComposerApi } from '../context';
|
||||
import { ITrackingView } from '../interfaces';
|
||||
import { TKeyEmitterEvent, emitter } from '../../../lib/methods/helpers/emitter';
|
||||
import { useRoomContext } from '../../../views/RoomView/context';
|
||||
|
||||
export const useKeyboardListener = (ref: MutableRefObject<ITrackingView>) => {
|
||||
const { setKeyboardHeight } = useMessageComposerApi();
|
||||
const { tmid } = useRoomContext();
|
||||
const isFocused = useIsFocused();
|
||||
useEffect(() => {
|
||||
if (!isFocused) {
|
||||
return;
|
||||
}
|
||||
const keyboardEvent: TKeyEmitterEvent = `setKeyboardHeight${tmid ? 'Thread' : ''}`;
|
||||
const showListener = Keyboard.addListener('keyboardWillShow', async () => {
|
||||
if (ref?.current) {
|
||||
const props = await ref.current.getNativeProps();
|
||||
setKeyboardHeight(props.keyboardHeight);
|
||||
emitter.emit(keyboardEvent, props.keyboardHeight);
|
||||
}
|
||||
});
|
||||
|
||||
const hideListener = Keyboard.addListener('keyboardWillHide', () => {
|
||||
setKeyboardHeight(0);
|
||||
emitter.emit(keyboardEvent, 0);
|
||||
});
|
||||
|
||||
return () => {
|
||||
showListener.remove();
|
||||
hideListener.remove();
|
||||
};
|
||||
}, [ref, setKeyboardHeight]);
|
||||
}, [ref, setKeyboardHeight, tmid, isFocused]);
|
||||
};
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
import React from 'react';
|
||||
import { dequal } from 'dequal';
|
||||
import React from 'react';
|
||||
import { TextStyle } from 'react-native';
|
||||
|
||||
import I18n from '../../i18n';
|
||||
import styles from './styles';
|
||||
import { MarkdownPreview } from '../markdown';
|
||||
import { E2E_MESSAGE_TYPE, E2E_STATUS } from '../../lib/constants';
|
||||
import { ILastMessageProps } from './interfaces';
|
||||
import { isAndroid } from '../../lib/methods/helpers';
|
||||
import { useTheme } from '../../theme';
|
||||
import { MarkdownPreview } from '../markdown';
|
||||
import { ILastMessageProps } from './interfaces';
|
||||
import styles from './styles';
|
||||
|
||||
const formatMsg = ({ lastMessage, type, showLastMessage, username, useRealName }: Partial<ILastMessageProps>) => {
|
||||
if (!showLastMessage) {
|
||||
|
@ -62,6 +64,8 @@ const arePropsEqual = (oldProps: any, newProps: any) => dequal(oldProps, newProp
|
|||
|
||||
const LastMessage = React.memo(({ lastMessage, type, showLastMessage, username, alert, useRealName }: ILastMessageProps) => {
|
||||
const { colors } = useTheme();
|
||||
// Android has a bug with the text align on the markdown preview
|
||||
const alignSelf: TextStyle = isAndroid ? { alignSelf: 'stretch' } : {};
|
||||
return (
|
||||
<MarkdownPreview
|
||||
msg={formatMsg({
|
||||
|
@ -71,7 +75,7 @@ const LastMessage = React.memo(({ lastMessage, type, showLastMessage, username,
|
|||
username,
|
||||
useRealName
|
||||
})}
|
||||
style={[styles.markdownText, { color: alert ? colors.bodyText : colors.auxiliaryText }]}
|
||||
style={[styles.markdownText, { color: alert ? colors.bodyText : colors.auxiliaryText }, alignSelf]}
|
||||
numberOfLines={2}
|
||||
/>
|
||||
);
|
||||
|
|
|
@ -44,7 +44,7 @@ const methods: IMethods = {
|
|||
keyboardType: 'numeric'
|
||||
},
|
||||
email: {
|
||||
text: 'Verify_your_email_for_the_code_we_sent',
|
||||
text: 'Enter_the_code',
|
||||
keyboardType: 'numeric'
|
||||
},
|
||||
password: {
|
||||
|
@ -129,7 +129,7 @@ const TwoFactor = React.memo(({ isMasterDetail }: { isMasterDetail: boolean }) =
|
|||
/>
|
||||
{isEmail ? (
|
||||
<Text style={[styles.sendEmail, { color }]} onPress={sendEmail}>
|
||||
{I18n.t('Send_me_the_code_again')}
|
||||
{I18n.t('Resend_email')}
|
||||
</Text>
|
||||
) : null}
|
||||
<View style={styles.buttonContainer}>
|
||||
|
@ -140,7 +140,7 @@ const TwoFactor = React.memo(({ isMasterDetail }: { isMasterDetail: boolean }) =
|
|||
style={styles.button}
|
||||
onPress={onCancel}
|
||||
/>
|
||||
<Button title={I18n.t('Send')} type='primary' style={styles.button} onPress={onSubmit} testID='two-factor-send' />
|
||||
<Button title={I18n.t('Verify')} type='primary' style={styles.button} onPress={onSubmit} testID='two-factor-send' />
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
|
|
|
@ -36,7 +36,7 @@ export const VideoConferenceBaseContainer = ({ variant, children }: VideoConfMes
|
|||
},
|
||||
issue: {
|
||||
icon: 'phone-issue',
|
||||
color: colors.statusFontOnWarning,
|
||||
color: colors.statusFontWarning,
|
||||
backgroundColor: colors.statusBackgroundWarning,
|
||||
label: i18n.t('Call_issue')
|
||||
}
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
import React from 'react';
|
||||
import { KaTeX as KaTeXProps } from '@rocket.chat/message-parser';
|
||||
import React from 'react';
|
||||
import { StyleProp, ViewStyle } from 'react-native';
|
||||
import Katex from 'react-native-katex';
|
||||
// eslint-disable-next-line import/no-unresolved
|
||||
import MathView, { MathText } from 'react-native-math-view';
|
||||
import Katex from 'react-native-katex';
|
||||
|
||||
import { isAndroid } from '../../../lib/methods/helpers';
|
||||
import { useTheme } from '../../../theme';
|
||||
import { DEFAULT_MESSAGE_HEIGHT } from '../../message/utils';
|
||||
|
||||
|
@ -13,11 +15,14 @@ interface IKaTeXProps {
|
|||
|
||||
export const KaTeX = ({ value }: IKaTeXProps): React.ReactElement | null => {
|
||||
const { colors } = useTheme();
|
||||
const fixAndroidWebviewCrashStyle: StyleProp<ViewStyle> = isAndroid ? { opacity: 0.99, overflow: 'hidden' } : {};
|
||||
return (
|
||||
<MathView
|
||||
math={value}
|
||||
style={{ color: colors.bodyText }}
|
||||
renderError={() => <Katex expression={value} style={{ flex: 1, height: DEFAULT_MESSAGE_HEIGHT }} />}
|
||||
renderError={() => (
|
||||
<Katex expression={value} style={[{ flex: 1, height: DEFAULT_MESSAGE_HEIGHT }, fixAndroidWebviewCrashStyle]} />
|
||||
)}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
|
|
@ -5,6 +5,7 @@ import { Tasks as TasksProps } from '@rocket.chat/message-parser';
|
|||
import Inline from './Inline';
|
||||
import styles from '../styles';
|
||||
import { useTheme } from '../../../theme';
|
||||
import { CustomIcon } from '../../CustomIcon';
|
||||
|
||||
interface ITasksProps {
|
||||
value: TasksProps['value'];
|
||||
|
@ -16,7 +17,14 @@ const TaskList = ({ value = [] }: ITasksProps) => {
|
|||
<View>
|
||||
{value.map(item => (
|
||||
<View style={styles.row}>
|
||||
<Text style={[styles.text, { color: colors.bodyText }]}>{item.status ? '- [x] ' : '- [ ] '}</Text>
|
||||
<Text style={[styles.text, { color: colors.bodyText }]}>
|
||||
<CustomIcon
|
||||
testID={item.status ? 'task-list-checked' : 'task-list-unchecked'}
|
||||
name={item.status ? 'checkbox-checked' : 'checkbox-unchecked'}
|
||||
size={24}
|
||||
color={colors.taskBoxColor}
|
||||
/>
|
||||
</Text>
|
||||
<Text style={[styles.inline, { color: colors.bodyText }]}>
|
||||
<Inline value={item.value} />
|
||||
</Text>
|
||||
|
|
|
@ -17,8 +17,8 @@ const UnorderedList = ({ value }: IUnorderedListProps) => {
|
|||
<View>
|
||||
{value.map(item => (
|
||||
<View style={styles.row}>
|
||||
<Text style={[styles.text, styles.listPrefix, { color: themes[theme].bodyText }]}>- </Text>
|
||||
<Text style={[styles.text, styles.inline, { color: themes[theme].bodyText }]}>
|
||||
<Text style={[styles.text, { color: themes[theme].bodyText }]}>{'\u2022'}</Text>
|
||||
<Text style={[styles.inline, { color: themes[theme].bodyText }]}>
|
||||
<Inline value={item.value} />
|
||||
</Text>
|
||||
</View>
|
||||
|
|
|
@ -14,7 +14,8 @@ import {
|
|||
} from '../../lib/methods/handleMediaDownload';
|
||||
import { fetchAutoDownloadEnabled } from '../../lib/methods/autoDownloadPreference';
|
||||
import AudioPlayer from '../AudioPlayer';
|
||||
import { useAppSelector } from '../../lib/hooks';
|
||||
import { useAudioUrl } from './hooks/useAudioUrl';
|
||||
import { getAudioUrlToCache } from '../../lib/methods/getAudioUrl';
|
||||
|
||||
interface IMessageAudioProps {
|
||||
file: IAttachment;
|
||||
|
@ -30,17 +31,8 @@ const MessageAudio = ({ file, getCustomEmoji, author, isReply, style, msg }: IMe
|
|||
const [downloadState, setDownloadState] = useState<TDownloadState>('loading');
|
||||
const [fileUri, setFileUri] = useState('');
|
||||
const { baseUrl, user, id, rid } = useContext(MessageContext);
|
||||
const { cdnPrefix } = useAppSelector(state => ({
|
||||
cdnPrefix: state.settings.CDN_PREFIX as string
|
||||
}));
|
||||
|
||||
const getUrl = () => {
|
||||
let url = file.audio_url;
|
||||
if (url && !url.startsWith('http')) {
|
||||
url = `${cdnPrefix || baseUrl}${file.audio_url}`;
|
||||
}
|
||||
return url;
|
||||
};
|
||||
const audioUrl = useAudioUrl({ audioUrl: file.audio_url });
|
||||
|
||||
const onPlayButtonPress = async () => {
|
||||
if (downloadState === 'to-download') {
|
||||
|
@ -55,10 +47,9 @@ const MessageAudio = ({ file, getCustomEmoji, author, isReply, style, msg }: IMe
|
|||
const handleDownload = async () => {
|
||||
setDownloadState('loading');
|
||||
try {
|
||||
const url = getUrl();
|
||||
if (url) {
|
||||
if (audioUrl) {
|
||||
const audio = await downloadMediaFile({
|
||||
downloadUrl: `${url}?rc_uid=${user.id}&rc_token=${user.token}`,
|
||||
downloadUrl: getAudioUrlToCache({ token: user.token, userId: user.id, url: audioUrl }),
|
||||
type: 'audio',
|
||||
mimeType: file.audio_type
|
||||
});
|
||||
|
@ -71,9 +62,8 @@ const MessageAudio = ({ file, getCustomEmoji, author, isReply, style, msg }: IMe
|
|||
};
|
||||
|
||||
const handleAutoDownload = async () => {
|
||||
const url = getUrl();
|
||||
try {
|
||||
if (url) {
|
||||
if (audioUrl) {
|
||||
const isCurrentUserAuthor = author?._id === user.id;
|
||||
const isAutoDownloadEnabled = fetchAutoDownloadEnabled('audioPreferenceDownload');
|
||||
if (isAutoDownloadEnabled || isCurrentUserAuthor) {
|
||||
|
@ -91,7 +81,7 @@ const MessageAudio = ({ file, getCustomEmoji, author, isReply, style, msg }: IMe
|
|||
const cachedAudioResult = await getMediaCache({
|
||||
type: 'audio',
|
||||
mimeType: file.audio_type,
|
||||
urlToCache: getUrl()
|
||||
urlToCache: audioUrl
|
||||
});
|
||||
if (cachedAudioResult?.exists) {
|
||||
setFileUri(cachedAudioResult.uri);
|
||||
|
@ -103,10 +93,9 @@ const MessageAudio = ({ file, getCustomEmoji, author, isReply, style, msg }: IMe
|
|||
const handleResumeDownload = async () => {
|
||||
try {
|
||||
setDownloadState('loading');
|
||||
const url = getUrl();
|
||||
if (url) {
|
||||
if (audioUrl) {
|
||||
const videoUri = await resumeMediaFile({
|
||||
downloadUrl: url
|
||||
downloadUrl: audioUrl
|
||||
});
|
||||
setFileUri(videoUri);
|
||||
setDownloadState('downloaded');
|
||||
|
@ -122,19 +111,21 @@ const MessageAudio = ({ file, getCustomEmoji, author, isReply, style, msg }: IMe
|
|||
if (isAudioCached) {
|
||||
return;
|
||||
}
|
||||
const audioUrl = getUrl();
|
||||
if (audioUrl && isDownloadActive(audioUrl)) {
|
||||
handleResumeDownload();
|
||||
return;
|
||||
}
|
||||
await handleAutoDownload();
|
||||
};
|
||||
handleCache();
|
||||
}, []);
|
||||
if (audioUrl) {
|
||||
handleCache();
|
||||
}
|
||||
}, [audioUrl]);
|
||||
|
||||
if (!baseUrl) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<Markdown msg={msg} style={[isReply && style]} username={user.username} getCustomEmoji={getCustomEmoji} />
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
import React, { memo } from 'react';
|
||||
import { View } from 'react-native';
|
||||
|
||||
import { CustomIcon } from '../../../CustomIcon';
|
||||
import { useTheme } from '../../../../theme';
|
||||
import styles from '../../styles';
|
||||
|
||||
const Translated = memo(({ isTranslated }: { isTranslated: boolean }) => {
|
||||
const { colors } = useTheme();
|
||||
|
||||
if (!isTranslated) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<View style={styles.rightIcons}>
|
||||
<CustomIcon name='language' size={16} color={colors.auxiliaryText} />
|
||||
</View>
|
||||
);
|
||||
});
|
||||
|
||||
export default Translated;
|
|
@ -5,6 +5,7 @@ import Encrypted from './Encrypted';
|
|||
import Edited from './Edited';
|
||||
import MessageError from './MessageError';
|
||||
import ReadReceipt from './ReadReceipt';
|
||||
import Translated from './Translated';
|
||||
import { MessageType } from '../../../../definitions';
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
|
@ -20,13 +21,15 @@ interface IRightIcons {
|
|||
isReadReceiptEnabled?: boolean;
|
||||
unread?: boolean;
|
||||
hasError: boolean;
|
||||
isTranslated: boolean;
|
||||
}
|
||||
|
||||
const RightIcons = ({ type, msg, isEdited, hasError, isReadReceiptEnabled, unread }: IRightIcons) => (
|
||||
const RightIcons = ({ type, msg, isEdited, hasError, isReadReceiptEnabled, unread, isTranslated }: IRightIcons) => (
|
||||
<View style={styles.actionIcons}>
|
||||
<Encrypted type={type} />
|
||||
<Edited testID={`${msg}-edited`} isEdited={isEdited} />
|
||||
<MessageError hasError={hasError} />
|
||||
<Translated isTranslated={isTranslated} />
|
||||
<ReadReceipt isReadReceiptEnabled={isReadReceiptEnabled} unread={unread} />
|
||||
</View>
|
||||
);
|
||||
|
|
|
@ -127,6 +127,13 @@ export const Edited = () => (
|
|||
</>
|
||||
);
|
||||
|
||||
export const Translated = () => (
|
||||
<>
|
||||
<Message msg='Message header' isTranslated />
|
||||
<Message msg='Message without header' isTranslated isHeader={false} />
|
||||
</>
|
||||
);
|
||||
|
||||
export const Encrypted = () => (
|
||||
<>
|
||||
<Message msg='Message' type='e2e' />
|
||||
|
@ -939,6 +946,7 @@ export const LongNameUser = () => (
|
|||
<>
|
||||
<Message msg={'this is a normal message'} author={longNameAuthor} />
|
||||
<Message msg={'Edited message'} author={longNameAuthor} isEdited />
|
||||
<Message msg={'Translated message'} author={longNameAuthor} isTranslated />
|
||||
<Message msg={'Encrypted message'} author={longNameAuthor} type={E2E_MESSAGE_TYPE} />
|
||||
<Message msg={'Error message'} author={longNameAuthor} hasError />
|
||||
<Message msg={'Message with read receipt'} author={longNameAuthor} isReadReceiptEnabled read />
|
||||
|
@ -947,6 +955,7 @@ export const LongNameUser = () => (
|
|||
msg={'Show all icons '}
|
||||
author={longNameAuthor}
|
||||
isEdited
|
||||
isTranslated
|
||||
type={E2E_MESSAGE_TYPE}
|
||||
hasError
|
||||
isReadReceiptEnabled
|
||||
|
@ -958,6 +967,7 @@ export const LongNameUser = () => (
|
|||
author={longNameAuthor}
|
||||
isHeader={false}
|
||||
isEdited
|
||||
isTranslated
|
||||
type={E2E_MESSAGE_TYPE}
|
||||
hasError
|
||||
isReadReceiptEnabled
|
||||
|
@ -969,6 +979,7 @@ export const LongNameUser = () => (
|
|||
author={longNameAuthor}
|
||||
isHeader={false}
|
||||
isEdited
|
||||
isTranslated
|
||||
type={E2E_MESSAGE_TYPE}
|
||||
hasError
|
||||
isReadReceiptEnabled
|
||||
|
|
|
@ -117,6 +117,7 @@ const Message = React.memo((props: IMessage) => {
|
|||
hasError={props.hasError}
|
||||
isReadReceiptEnabled={props.isReadReceiptEnabled}
|
||||
unread={props.unread}
|
||||
isTranslated={props.isTranslated}
|
||||
/>
|
||||
) : null}
|
||||
</View>
|
||||
|
|
|
@ -60,10 +60,24 @@ interface IMessageUser {
|
|||
isEdited: boolean;
|
||||
isReadReceiptEnabled?: boolean;
|
||||
unread?: boolean;
|
||||
isTranslated: boolean;
|
||||
}
|
||||
|
||||
const User = React.memo(
|
||||
({ isHeader, useRealName, author, alias, ts, timeFormat, hasError, navToRoomInfo, type, isEdited, ...props }: IMessageUser) => {
|
||||
({
|
||||
isHeader,
|
||||
useRealName,
|
||||
author,
|
||||
alias,
|
||||
ts,
|
||||
timeFormat,
|
||||
hasError,
|
||||
navToRoomInfo,
|
||||
type,
|
||||
isEdited,
|
||||
isTranslated,
|
||||
...props
|
||||
}: IMessageUser) => {
|
||||
const { user } = useContext(MessageContext);
|
||||
const { colors } = useTheme();
|
||||
|
||||
|
@ -98,7 +112,7 @@ const User = React.memo(
|
|||
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
<TouchableOpacity style={styles.titleContainer} onPress={onUserPress}>
|
||||
<TouchableOpacity testID={`username-header-${username}`} style={styles.titleContainer} onPress={onUserPress}>
|
||||
<Text style={[styles.username, { color: colors.titleText }]} numberOfLines={1}>
|
||||
{textContent}
|
||||
</Text>
|
||||
|
@ -110,6 +124,7 @@ const User = React.memo(
|
|||
hasError={hasError}
|
||||
isReadReceiptEnabled={props.isReadReceiptEnabled}
|
||||
unread={props.unread}
|
||||
isTranslated={isTranslated}
|
||||
/>
|
||||
</View>
|
||||
);
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
import { useState, useEffect } from 'react';
|
||||
|
||||
import { useAppSelector } from '../../../lib/hooks';
|
||||
import { getAudioUrl } from '../../../lib/methods/getAudioUrl';
|
||||
|
||||
export const useAudioUrl = ({ audioUrl }: { audioUrl?: string }): string => {
|
||||
const [filePath, setFilePath] = useState<string>('');
|
||||
|
||||
const { cdnPrefix, baseUrl } = useAppSelector(state => ({
|
||||
cdnPrefix: state.settings.CDN_PREFIX as string,
|
||||
baseUrl: state.server.server
|
||||
}));
|
||||
|
||||
useEffect(() => {
|
||||
if (!audioUrl) {
|
||||
return;
|
||||
}
|
||||
const url = getAudioUrl({ baseUrl, cdnPrefix, audioUrl });
|
||||
if (url) {
|
||||
setFilePath(url);
|
||||
}
|
||||
}, [audioUrl, baseUrl, cdnPrefix]);
|
||||
|
||||
return filePath;
|
||||
};
|
|
@ -110,6 +110,7 @@ export interface ISubscription {
|
|||
threads: RelationModified<TThreadModel>;
|
||||
threadMessages: RelationModified<TThreadMessageModel>;
|
||||
uploads: RelationModified<TUploadModel>;
|
||||
disableNotifications?: boolean;
|
||||
}
|
||||
|
||||
export type TSubscriptionModel = ISubscription &
|
||||
|
|
|
@ -40,6 +40,8 @@ import { IEnterpriseModules } from '../../reducers/enterpriseModules';
|
|||
import { IVideoConf } from '../../reducers/videoConf';
|
||||
import { TActionUsersRoles } from '../../actions/usersRoles';
|
||||
import { TUsersRoles } from '../../reducers/usersRoles';
|
||||
import { ITroubleshootingNotification } from '../../reducers/troubleshootingNotification';
|
||||
import { TActionTroubleshootingNotification } from '../../actions/troubleshootingNotification';
|
||||
import { ISupportedVersionsState } from '../../reducers/supportedVersions';
|
||||
import { IInAppFeedbackState } from '../../reducers/inAppFeedback';
|
||||
|
||||
|
@ -67,6 +69,7 @@ export interface IApplicationState {
|
|||
roles: IRoles;
|
||||
videoConf: IVideoConf;
|
||||
usersRoles: TUsersRoles;
|
||||
troubleshootingNotification: ITroubleshootingNotification;
|
||||
supportedVersions: ISupportedVersionsState;
|
||||
inAppFeedback: IInAppFeedbackState;
|
||||
}
|
||||
|
@ -90,5 +93,6 @@ export type TApplicationActions = TActionActiveUsers &
|
|||
TActionEnterpriseModules &
|
||||
TActionVideoConf &
|
||||
TActionUsersRoles &
|
||||
TActionTroubleshootingNotification &
|
||||
TActionSupportedVersions &
|
||||
TInAppFeedbackAction;
|
||||
|
|
|
@ -17,7 +17,7 @@ import { E2eEndpoints } from './e2e';
|
|||
import { SubscriptionsEndpoints } from './subscriptions';
|
||||
import { VideoConferenceEndpoints } from './videoConference';
|
||||
import { CommandsEndpoints } from './commands';
|
||||
import { PushTokenEndpoints } from './pushToken';
|
||||
import { PushEndpoints } from './push';
|
||||
import { DirectoryEndpoint } from './directory';
|
||||
import { AutoTranslateEndpoints } from './autotranslate';
|
||||
import { ModerationEndpoints } from './moderation';
|
||||
|
@ -41,7 +41,7 @@ export type Endpoints = ChannelsEndpoints &
|
|||
SubscriptionsEndpoints &
|
||||
VideoConferenceEndpoints &
|
||||
CommandsEndpoints &
|
||||
PushTokenEndpoints &
|
||||
PushEndpoints &
|
||||
DirectoryEndpoint &
|
||||
AutoTranslateEndpoints &
|
||||
ModerationEndpoints;
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
type TPushInfo = {
|
||||
pushGatewayEnabled: boolean;
|
||||
defaultPushGateway: boolean;
|
||||
success: boolean;
|
||||
};
|
||||
|
||||
export type PushEndpoints = {
|
||||
'push.token': {
|
||||
POST: (params: { value: string; type: string; appName: string }) => {
|
||||
result: {
|
||||
id: string;
|
||||
token: string;
|
||||
appName: string;
|
||||
userId: string;
|
||||
};
|
||||
};
|
||||
};
|
||||
'push.info': {
|
||||
GET: () => TPushInfo;
|
||||
};
|
||||
'push.test': {
|
||||
POST: () => { tokensCount: number };
|
||||
};
|
||||
};
|
|
@ -1,12 +0,0 @@
|
|||
export type PushTokenEndpoints = {
|
||||
'push.token': {
|
||||
POST: (params: { value: string; type: string; appName: string }) => {
|
||||
result: {
|
||||
id: string;
|
||||
token: string;
|
||||
appName: string;
|
||||
userId: string;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1,74 +1,68 @@
|
|||
{
|
||||
"1_person_reacted": "تفاعل شخص واحد",
|
||||
"error-action-not-allowed": "غير مسموح بالإجراء {{action}}",
|
||||
"error-avatar-invalid-url": "عنوان الصورة الرمزية غير صحيح: {{url}}",
|
||||
"error-duplicate-channel-name": "القناة {{room_name}} موجودة مسبقاً",
|
||||
"error-email-send-failed": "خطأ في إرسال البريد اﻹلكتروني: {{message}}",
|
||||
"error-save-image": "خطأ عند حفظ الصورة",
|
||||
"error-save-video": "خطأ عند حفظ الفيديو",
|
||||
"error-file-too-large": "حجم الملف كبير جداً",
|
||||
"error-invalid-email": "عنوان البريد اﻹلكتروني غير صالح {{email}}",
|
||||
"error-invalid-file-type": "نوع الملف غير صالح",
|
||||
"error-invalid-password": "كلمة مرور خاطئة",
|
||||
"error-invalid-room-name": "{{room_name}} اسم الغرفة غير صالح",
|
||||
"error-not-allowed": "غير مسموح",
|
||||
"error-too-many-requests": "خطأ، تلقينا الكثير من الطلبات. من فضلك خفف السرعة، يجب الانتظار لمدة {{seconds}} ثانية قبل المحاولة مرة أخرى",
|
||||
"error-you-are-last-owner": "أنت المالك الأخير. يرجى تعيين مالك جديد قبل مغادرة الغرفة",
|
||||
"A_meaningful_name_for_the_discussion_room": "اسم معبر لغرفة النقاش",
|
||||
"Actions": "الإجراءات",
|
||||
"Activity": "النشاط",
|
||||
"Add_Server": "إضافة خادم",
|
||||
"Add_server": "إضافة خادم",
|
||||
"Add_users": "إضافة مستخدمين",
|
||||
"Admin_Panel": "لوحة الإدارة",
|
||||
"After_seconds_set_by_admin": "بعد {{seconds}} ثوان (حددها المدير)",
|
||||
"Agent": "المندوب",
|
||||
"Alert": "إنذار",
|
||||
"alert": "إنذار",
|
||||
"alerts": "الإنذارات",
|
||||
"All_users_in_the_channel_can_write_new_messages": "يمكن لجميع المستخدمين في القناة كتابة رسائل جديدة",
|
||||
"All_users_in_the_team_can_write_new_messages": "يمكن لجميع المستخدمين في الفريق كتابة رسائل جديدة",
|
||||
"A_meaningful_name_for_the_discussion_room": "اسم معبر لغرفة النقاش",
|
||||
"All": "الكل",
|
||||
"All_Messages": "كل الرسائل",
|
||||
"All_users_in_the_channel_can_write_new_messages": "يمكن لجميع المستخدمين في القناة كتابة رسائل جديدة",
|
||||
"All_users_in_the_team_can_write_new_messages": "يمكن لجميع المستخدمين في الفريق كتابة رسائل جديدة",
|
||||
"Allow_Reactions": "السماح للتفاعلات",
|
||||
"and": "و",
|
||||
"announcement": "إعلان",
|
||||
"and_N_more": "و{{count}} آخرين",
|
||||
"Announcement": "إعلان",
|
||||
"announcement": "إعلان",
|
||||
"Apply_Your_Certificate": "طبق شهادتك",
|
||||
"ARCHIVE": "أرشفة",
|
||||
"archive": "أرشفة",
|
||||
"are_typing": "يكتب",
|
||||
"Are_you_sure_question_mark": "هل أنت متأكد؟",
|
||||
"Are_you_sure_you_want_to_leave_the_room": "متأكد من مغادرة الغرفة {{room}}؟",
|
||||
"Automatic": "تلقائي",
|
||||
"Audio": "صوت",
|
||||
"Auto_Translate": "ترجمة تلقائية",
|
||||
"Automatic": "تلقائي",
|
||||
"Avatar_changed_successfully": "تم تغيير الصورة الرمزية بنجاح!",
|
||||
"Avatar_Url": "عنوان ويب الصورة الرمزية",
|
||||
"Away": "غير متواجد",
|
||||
"Black": "أسود",
|
||||
"Broadcast_hint": "يمكن فقط للمستخدمين المصرح لهم كتابة رسائل جديدة، ولكن سيتمكن المستخدمون الآخرون من الرد",
|
||||
"Browser": "المتصفح",
|
||||
"Busy": "مشغول",
|
||||
"Call_already_ended": "تم انهاء المكالمة بالفعل !",
|
||||
"Cancel": "إلغاء",
|
||||
"Cancel_editing": "إلغاء التعديل",
|
||||
"Cancel_recording": "إلغاء التسجيل الصوتي",
|
||||
"Cancel": "إلغاء",
|
||||
"Certificate_password": "الرقم السري للشهادة",
|
||||
"Change_Language": "تغيير اللغة",
|
||||
"Change_language_loading": "تغيير اللغة",
|
||||
"changing_avatar": "تغيير الصورة الرمزية",
|
||||
"creating_channel": "إنشاء قناة",
|
||||
"creating_invite": "إنشاء دعوة",
|
||||
"Channel_Name": "اسم القناة",
|
||||
"Channels": "قنوات",
|
||||
"Chat_closed_by_agent": "المندوب أغلق المحادثة",
|
||||
"Chats": "الرسائل",
|
||||
"Call_already_ended": "تم انهاء المكالمة بالفعل !",
|
||||
"Choose": "اختر",
|
||||
"Choose_file": "اختر ملف",
|
||||
"Choose_from_library": "اختر من المكتبة",
|
||||
"Choose_where_you_want_links_be_opened": "اختر المكان الذي تريد فتح الروابط فيه",
|
||||
"Clear": "مسح",
|
||||
"Clear_cache": "امسح ذاكرة التخزين المؤقتة للخادم",
|
||||
"Clear_cache_loading": "يتم مسح ذاكرة التخزين",
|
||||
"Clear_cookies_alert": "هل تريد حذف جميع ملفات تعريف الإرتباط؟",
|
||||
"Clear_cookies_desc": "هذا الإجراء سيحذف ملفات تعريف الإرتباط الخاصة بتسجيل الدخول مما يسمح بتسجيل الدخول لحسابات أخرى",
|
||||
"Clear_cookies_yes": "نعم، مسح ملفات الإرتباط",
|
||||
"Clear_cookies_no": "لا، احتفظ بملفات تعريف الإرتباط",
|
||||
"Clear_cookies_yes": "نعم، مسح ملفات الإرتباط",
|
||||
"Click_to_join": "انقر للانضمام!",
|
||||
"Close": "إغلاق",
|
||||
"Close_emoji_selector": "إغلاق محدد الرموز التعبيرية",
|
||||
"Change_language_loading": "تغيير اللغة",
|
||||
"Chat_closed_by_agent": "المندوب أغلق المحادثة",
|
||||
"Choose": "اختر",
|
||||
"Choose_from_library": "اختر من المكتبة",
|
||||
"Choose_file": "اختر ملف",
|
||||
"Choose_where_you_want_links_be_opened": "اختر المكان الذي تريد فتح الروابط فيه",
|
||||
"Code_or_password_invalid": "الرمز أو كلمة المرور خاطئة",
|
||||
"Collaborative": "تعاونية",
|
||||
"Confirm": "تأكيد",
|
||||
|
@ -77,185 +71,236 @@
|
|||
"Contact_us": "تواصل معنا",
|
||||
"Contact_your_server_admin": "اتصل بمسؤول الخادم",
|
||||
"Continue_with": "متابعة بـ",
|
||||
"Conversation": "محادثة",
|
||||
"Copied_to_clipboard": "تم النسخ للحافظة!",
|
||||
"Copy": "نسخ",
|
||||
"Conversation": "محادثة",
|
||||
"Certificate_password": "الرقم السري للشهادة",
|
||||
"Clear_cache": "امسح ذاكرة التخزين المؤقتة للخادم",
|
||||
"Clear_cache_loading": "يتم مسح ذاكرة التخزين",
|
||||
"Whats_the_password_for_your_certificate": "ماهي كلمة المرور للشهادة؟",
|
||||
"Crash_report_disclaimer": "نحن لا نتتبع محتوى محادثاتك أبداً. يحتوي تقرير الأعطال فقط على المعلومات ذات الصلة لنا من أجل تحديد المشاكل وإصلاحها",
|
||||
"Create": "إنشاء",
|
||||
"Create_A_New_Channel": "إنشاء Channel جديدة",
|
||||
"Create_a_new_workspace": "إنشاء مساحة عمل جديدة",
|
||||
"Create_account": "إنشاء حساب",
|
||||
"Create_Channel": "إنشاء قناة",
|
||||
"Create_Direct_Messages": "إنشاء رسالة مباشرة",
|
||||
"Create_Discussion": "إنشاء نقاش",
|
||||
"Created_snippet": "إنشاء مقتطف",
|
||||
"Create_a_new_workspace": "إنشاء مساحة عمل جديدة",
|
||||
"Create": "إنشاء",
|
||||
"creating_channel": "إنشاء قناة",
|
||||
"creating_invite": "إنشاء دعوة",
|
||||
"Dark": "داكن",
|
||||
"Dark_level": "مستوى السمة الداكنة",
|
||||
"Default": "افتراضي",
|
||||
"Default_browser": "المتصفح الأساسي",
|
||||
"Delete_Room_Warning": "سيؤدي حذف الغرفة إلى حذف جميع الرسائل المنشورة. لا يمكن التراجع بعد الحذف",
|
||||
"Department": "القسم",
|
||||
"delete": "حذف",
|
||||
"Delete": "حذف",
|
||||
"DELETE": "حذف",
|
||||
"move": "حرك",
|
||||
"Delete": "حذف",
|
||||
"delete": "حذف",
|
||||
"Delete_Room_Warning": "سيؤدي حذف الغرفة إلى حذف جميع الرسائل المنشورة. لا يمكن التراجع بعد الحذف",
|
||||
"deleting_room": "حذف الغرفة",
|
||||
"description": "وصف",
|
||||
"Department": "القسم",
|
||||
"Description": "وصف",
|
||||
"Desktop_Notifications": "إخطارات سطح المكتب",
|
||||
"description": "وصف",
|
||||
"Desktop_Alert_info": "هذه الإشعارات ترسل لسطح المكتب",
|
||||
"Directory": "مجلد",
|
||||
"Desktop_Notifications": "إخطارات سطح المكتب",
|
||||
"Direct_message_someone": "رسالة مباشرة لشخص ما",
|
||||
"Direct_Messages": "رسالة مباشرة",
|
||||
"Discussions": "مناقشات",
|
||||
"Directory": "مجلد",
|
||||
"Discussion_Desc": "ساهم بإعطاء نظرة عامة لما يجري. عند إنشاء مناقشة يتم إنشاء قناة فرعية وربطها بالقناة المحددة",
|
||||
"Discussion_name": "اسم النقاش",
|
||||
"Dont_Have_An_Account": "ليس لديك حساب؟",
|
||||
"Do_you_have_an_account": "هل لديك حساب؟",
|
||||
"Discussions": "مناقشات",
|
||||
"Displays_action_text": "يعرض نص الإجراء",
|
||||
"Do_you_have_a_certificate": "هل لديك شهادة؟",
|
||||
"Do_you_have_an_account": "هل لديك حساب؟",
|
||||
"Do_you_really_want_to_key_this_room_question_mark": "هل تريد حقاً {{key}} هذه الغرفة؟",
|
||||
"Dont_activate": "لا تقم بالتفعيل الآن",
|
||||
"Dont_Have_An_Account": "ليس لديك حساب؟",
|
||||
"E2E_How_It_Works_info1": "يمكنك الآن إنشاء مجموعات خاصة ورسائل مباشرة مشفرة. بإمكانك أيضاً تشفير المجموعات الخاصة والرسائل المباشرة الموجودة مسبقاً",
|
||||
"E2E_How_It_Works_info2": "التشفير يتم بين الطرفيات بمعنى أن المفتاح سيستخدم لتشفير وفك تشفير رسائلك ولن يتم حفظه في الخادم. لذلك يترتب عليك حفظ كلمة المرور هذه في مكان آمن",
|
||||
"E2E_How_It_Works_info3": "حين الاستمرار سيتم إنشاء كلمة المرور بين الطرفيات",
|
||||
"E2E_How_It_Works_info4": "بإمكانك أيضاً إنشاء كلمة مرور جديدة لمفتاح التشفير في أي وقت عند دخولك بكلمة المرور الحالية لمفتاح التشفير",
|
||||
"Edit": "تعديل",
|
||||
"Edit_Status": "تعديل الحالة",
|
||||
"Edit_Invite": "تعديل الدعوة",
|
||||
"End_to_end_encrypted_room": "غرفة مشفرة بين الطرفيات",
|
||||
"Edit_Status": "تعديل الحالة",
|
||||
"Email": "البريد الإلكتروني",
|
||||
"Email_Notification_Mode_All": "لكل إشارة أو رسالة مباشرة",
|
||||
"Email_Notification_Mode_Disabled": "معطل",
|
||||
"Email": "البريد الإلكتروني",
|
||||
"Enable_Auto_Translate": "تمكين الترجمة التلقائية",
|
||||
"Encrypted": "مشفر",
|
||||
"Encrypted_message": "رسالة مشفرة",
|
||||
"Encryption_error_desc": "تعذر قراءة مفتاح التشفير أثناء الاستيراد",
|
||||
"Encryption_error_title": "كلمة المرور المشفرة خاطئة",
|
||||
"End_to_end_encrypted_room": "غرفة مشفرة بين الطرفيات",
|
||||
"Enter_Your_E2E_Password": "أدخل كلمة المرور بين الطرفيات",
|
||||
"Enter_Your_Encryption_Password_desc1": "سيمكنك هذا من الوصول لرسائلك المباشرة والمجموعات الخاصة",
|
||||
"Enter_Your_Encryption_Password_desc2": "يجب إدخال كلمة المرور لتشفير وفك تشفير الرسائل المرسلة",
|
||||
"Encryption_error_title": "كلمة المرور المشفرة خاطئة",
|
||||
"Encryption_error_desc": "تعذر قراءة مفتاح التشفير أثناء الاستيراد",
|
||||
"Error_uploading": "خطأ في الرفع",
|
||||
"error-action-not-allowed": "غير مسموح بالإجراء {{action}}",
|
||||
"error-avatar-invalid-url": "عنوان الصورة الرمزية غير صحيح: {{url}}",
|
||||
"error-duplicate-channel-name": "القناة {{room_name}} موجودة مسبقاً",
|
||||
"error-email-send-failed": "خطأ في إرسال البريد اﻹلكتروني: {{message}}",
|
||||
"error-file-too-large": "حجم الملف كبير جداً",
|
||||
"error-invalid-email": "عنوان البريد اﻹلكتروني غير صالح {{email}}",
|
||||
"error-invalid-file-type": "نوع الملف غير صالح",
|
||||
"error-invalid-password": "كلمة مرور خاطئة",
|
||||
"error-invalid-room-name": "{{room_name}} اسم الغرفة غير صالح",
|
||||
"error-not-allowed": "غير مسموح",
|
||||
"error-save-image": "خطأ عند حفظ الصورة",
|
||||
"error-save-video": "خطأ عند حفظ الفيديو",
|
||||
"error-too-many-requests": "خطأ، تلقينا الكثير من الطلبات. من فضلك خفف السرعة، يجب الانتظار لمدة {{seconds}} ثانية قبل المحاولة مرة أخرى",
|
||||
"error-you-are-last-owner": "أنت المالك الأخير. يرجى تعيين مالك جديد قبل مغادرة الغرفة",
|
||||
"Everyone_can_access_this_channel": "يمكن للجميع الوصول إلى هذه القناة",
|
||||
"Everyone_can_access_this_team": "يمكن للجميع الوصول إلى هذا الفريق",
|
||||
"Error_uploading": "خطأ في الرفع",
|
||||
"Expiration_Days": "انتهاء (أيام)",
|
||||
"Favorites": "مفضلات",
|
||||
"Files": "ملفات",
|
||||
"File_description": "وصف الملف",
|
||||
"Files": "ملفات",
|
||||
"Finish_recording": "إنهاء التسجيل",
|
||||
"Following_thread": "متابعة الموضوع",
|
||||
"For_your_security_you_must_enter_your_current_password_to_continue": "من أجل حمايتك، يجب عليك إدخال كلمة المرور الحالية للمتابعة",
|
||||
"Forgot_password_If_this_email_is_registered": "إن كان البريد الإلكتروني مسجلاً، فسنرسل تعليمات إعادة تعيين كلمة المرور الخاصة بك. إذا لم تتلق بريداً إلكترونياً قريباً، فيرجى العودة والمحاولة مرة أخرى",
|
||||
"Forgot_password": "هل نسيت كلمة المرور؟",
|
||||
"Forgot_password_If_this_email_is_registered": "إن كان البريد الإلكتروني مسجلاً، فسنرسل تعليمات إعادة تعيين كلمة المرور الخاصة بك. إذا لم تتلق بريداً إلكترونياً قريباً، فيرجى العودة والمحاولة مرة أخرى",
|
||||
"Forward": "إعادة توجيه",
|
||||
"Forward_Chat": "إعادة توجيه المحادثة",
|
||||
"Forward_to_department": "إعادة توجيه للقسم",
|
||||
"Forward_to_user": "إعادة توجيه لمستخدم",
|
||||
"Full_table": "انقر لرؤية الجدول كاملاً",
|
||||
"Generate_New_Link": "إنشاء رابط جديد",
|
||||
"Hide_room": "إخفاء",
|
||||
"Hide_System_Messages": "إخفاء رسائل النظام",
|
||||
"Hide_type_messages": "إخفاء رسائل \"{{type}}\"",
|
||||
"How_It_Works": "طريقة العمل",
|
||||
"Message_HideType_uj": "مستخدم انضم",
|
||||
"Message_HideType_ul": "مستخدم غادر",
|
||||
"Message_HideType_ru": "مستخدم حُذف",
|
||||
"Message_HideType_au": "مستخدم أضيف",
|
||||
"Message_HideType_mute_unmute": "صوت المستخدم كتم / فتح",
|
||||
"Message_HideType_r": "اسم الغرفة تغير",
|
||||
"Message_HideType_ut": "مستخدم انضم للمحادثة",
|
||||
"Message_HideType_wm": "ترحيب",
|
||||
"Message_HideType_rm": "رسالة حُذفت",
|
||||
"Message_HideType_subscription_role_added": "تعيين دور جديد",
|
||||
"Message_HideType_subscription_role_removed": "دور أصبح غير معرف",
|
||||
"Message_HideType_room_archived": "غرفة أرشفت",
|
||||
"Message_HideType_room_unarchived": "غرفة ألغيت أرشفتها",
|
||||
"I_Saved_My_E2E_Password": "قمت بحفظ كلمة المرور الطرفية",
|
||||
"IP": " عنوان بروتوكول الإنترنت (الآيبي)",
|
||||
"In_app": "في التطبيق",
|
||||
"In_App_And_Desktop": "تطبيق داخلي وسطح المكتب",
|
||||
"In_App_and_Desktop_Alert_info": "يعرض شعاراً أعلى الشاشة عندما يكون التطبيق مفتوحًا، ويعرض إشعاراً على سطح المكتب",
|
||||
"Invisible": "غير مرئي",
|
||||
"is_typing": "يكتب",
|
||||
"Insert_Join_Code": "ضع رمز الانضمام",
|
||||
"Invalid_or_expired_invite_token": "رمز الدعوة غير صالح أو منتهي الصلاحية",
|
||||
"Invalid_server_version": "الخادم الذي تحاول الاتصال به يستخدم إصدارا لم يعد مدعوماً: {{currentVersion}}.\n\n النسخ المدعومة تبدأ من {{minVersion}}",
|
||||
"Invisible": "غير مرئي",
|
||||
"Invite_Link": "رابط الدعوة",
|
||||
"Invite_user_to_join_channel": "دعوة مستخدم واحد إلى الانضمام إلى هذه القناة",
|
||||
"Invite_user_to_join_channel_all_from": "دعوة جميع المستخدمين من [#channel] إلى الانضمام إلى هذه القناة",
|
||||
"Invite_user_to_join_channel_all_to": "دعوة جميع المستخدمين من هذه القناة إلى الانضمام إلى [#channel]",
|
||||
"Invite_users": "دعوة المستخدمين",
|
||||
"IP": " عنوان بروتوكول الإنترنت (الآيبي)",
|
||||
"is_typing": "يكتب",
|
||||
"Join": "انضم",
|
||||
"Join_Code": "رمز الانضمام",
|
||||
"Insert_Join_Code": "ضع رمز الانضمام",
|
||||
"Join_our_open_workspace": "انضم لمساحة عملنا المفتوحة",
|
||||
"Join_the_given_channel": "انضمام إلى القناة المحددة",
|
||||
"Just_invited_people_can_access_this_channel": "يمكن للأشخاص المدعوين فقط الوصول إلى هذه القناة",
|
||||
"Just_invited_people_can_access_this_team": "فقط الأشخاص المدعوين يمكنهم الوصول إلى هذا الفريق",
|
||||
"Language": "اللغة",
|
||||
"last_message": "الرسالة الأخيرة",
|
||||
"leaving_room": "مغادرة الغرفة",
|
||||
"Leave": "مغادرة الغرفة",
|
||||
"leave": "مغادرة",
|
||||
"Leave_the_current_channel": "مغادرة القناة الحالية",
|
||||
"leaving_room": "مغادرة الغرفة",
|
||||
"Legal": "قانوني",
|
||||
"Light": "ساطع",
|
||||
"License": "رخصة",
|
||||
"Light": "ساطع",
|
||||
"Local_authentication_auto_lock_1800": "بعد 30 دقيقة",
|
||||
"Local_authentication_auto_lock_300": "بعد 5 دقائق",
|
||||
"Local_authentication_auto_lock_3600": "بعد ساعة",
|
||||
"Local_authentication_auto_lock_60": "بعد دقيقة",
|
||||
"Local_authentication_auto_lock_900": "بعد 15 دقيقة",
|
||||
"Local_authentication_biometry_fallback": "استخدم كلمة المرور",
|
||||
"Local_authentication_biometry_title": "صادق",
|
||||
"Local_authentication_change_passcode": "تغيير كلمة المرور",
|
||||
"Local_authentication_facial_recognition": "التعرف على الوجه",
|
||||
"Local_authentication_fingerprint": "البصمة",
|
||||
"Local_authentication_info": "تنويه: يجب حذف التطبيق عند نسيان كلمة المرور",
|
||||
"Local_authentication_unlock_option": "افتح القفل بكلمة المرور",
|
||||
"Local_authentication_unlock_with_label": "فتح القفل بـ {{label}}",
|
||||
"Log_analytics_events": "تحليلات سجل الأحداث",
|
||||
"Logged_out_by_server": "لقد تم تسجيل خروجك من قبل الخادم. الرجاد الدخول من جديد",
|
||||
"Logged_out_of_other_clients_successfully": "تم تسجيل الخروج من الأماكن الأخرى بنجاح",
|
||||
"Logging_out": "تسجيل الخروج",
|
||||
"Login": "تسجيل الدخول",
|
||||
"Login_error": "تم رفض تسجيل الدخول الرجاء المحاولة مرة أخرى",
|
||||
"Logging_out": "تسجيل الخروج",
|
||||
"Logout": "تسجيل الخروج",
|
||||
"Max_number_of_uses": "أقصى عدد للاستخدام",
|
||||
"Logout_failed": "فشل تسجيل الخروج!",
|
||||
"Logout_from_other_logged_in_locations": "تسجيل الخروج من الأماكن الأخرى",
|
||||
"Mark_unread": "علامة غير مقروء",
|
||||
"Max_number_of_users_allowed_is_number": "أقصى عدد للمستخدمين {{maxUsers}}",
|
||||
"members": "أفراد",
|
||||
"Max_number_of_uses": "أقصى عدد للاستخدام",
|
||||
"Members": "أفراد",
|
||||
"members": "أفراد",
|
||||
"Mentions": "الإشارات",
|
||||
"Message": "الرسالة",
|
||||
"message": "رسالة",
|
||||
"Message_actions": "إجراءات الرسالة",
|
||||
"Message_HideType_au": "مستخدم أضيف",
|
||||
"Message_HideType_mute_unmute": "صوت المستخدم كتم / فتح",
|
||||
"Message_HideType_r": "اسم الغرفة تغير",
|
||||
"Message_HideType_rm": "رسالة حُذفت",
|
||||
"Message_HideType_room_archived": "غرفة أرشفت",
|
||||
"Message_HideType_room_unarchived": "غرفة ألغيت أرشفتها",
|
||||
"Message_HideType_ru": "مستخدم حُذف",
|
||||
"Message_HideType_subscription_role_added": "تعيين دور جديد",
|
||||
"Message_HideType_subscription_role_removed": "دور أصبح غير معرف",
|
||||
"Message_HideType_uj": "مستخدم انضم",
|
||||
"Message_HideType_ul": "مستخدم غادر",
|
||||
"Message_HideType_ut": "مستخدم انضم للمحادثة",
|
||||
"Message_HideType_wm": "ترحيب",
|
||||
"Message_removed": "الرسالة حذفت",
|
||||
"Message_Reported": "تم التبليغ على الرسالة",
|
||||
"Message_starred": "الرسالة مميزة",
|
||||
"Message_unstarred": "الرسالة غير مميزة",
|
||||
"message": "رسالة",
|
||||
"messages": "رسائل",
|
||||
"Message": "الرسالة",
|
||||
"Message_Reported": "تم التبليغ على الرسالة",
|
||||
"move": "حرك",
|
||||
"Mute": "كتم",
|
||||
"Mute_someone_in_room": "كتم صوت شخص ما في الغرفة",
|
||||
"muted": "مكتوم",
|
||||
"N_channels": "{{n}} القنوات",
|
||||
"N_people_reacted": "{{n}} تفاعل الناس",
|
||||
"N_users": "{{n}} مستخدمين",
|
||||
"N_channels": "{{n}} القنوات",
|
||||
"Name": "اسم",
|
||||
"Never": "أبداً",
|
||||
"New_Message": "رسالة جديدة",
|
||||
"New_Password": "كلمة مرور جديدة",
|
||||
"Next": "التالي",
|
||||
"No_available_agents_to_transfer": "المندوبين غير متوفرين حالياً",
|
||||
"No_files": "لا ملفات",
|
||||
"No_label_provided": "لا {{label}} معطى",
|
||||
"No_limit": "لا حدود",
|
||||
"No_mentioned_messages": "لا رسائل مشارة",
|
||||
"No_pinned_messages": "لا رسائل مثبتة",
|
||||
"No_results_found": "لا نتائج",
|
||||
"No_starred_messages": "لا رسائل مميزة",
|
||||
"No_label_provided": "لا {{label}} معطى",
|
||||
"No_Message": "لا رسائل",
|
||||
"No_messages_yet": "لا رسائل حتى اﻵن",
|
||||
"No_pinned_messages": "لا رسائل مثبتة",
|
||||
"No_Reactions": "لا تفاعل",
|
||||
"No_Read_Receipts": "لا إيصالات قراءة",
|
||||
"No_results_found": "لا نتائج",
|
||||
"No_starred_messages": "لا رسائل مميزة",
|
||||
"Not_RC_Server": "هذا ليس بخادم Rocket.Chat.\n{{contact}}",
|
||||
"Nothing": "لا شيء",
|
||||
"Nothing_to_save": "لا شيء للحفظ!",
|
||||
"Notification_Preferences": "تفضيلات الإشعار",
|
||||
"Notifications": "الإشعارات",
|
||||
"Notify_active_in_this_room": "أبلغ المستخدمين النشطين في هذه الغرفة",
|
||||
"Notify_all_in_this_room": "أبلغ الجميع في الغرفة",
|
||||
"Notifications": "الإشعارات",
|
||||
"Notification_Preferences": "تفضيلات الإشعار",
|
||||
"No_available_agents_to_transfer": "المندوبين غير متوفرين حالياً",
|
||||
"Oops": "عفوًا!",
|
||||
"Omnichannel": "القنوات الموحدة",
|
||||
"Omnichannel_enable_alert": "أنت غير متاح ",
|
||||
"Onboarding_subtitle": "ما بعد بيئة فريق تعاونية",
|
||||
"Onboarding_join_open_description": "انضم لمساحة عملنا للتواصل مع فريق Rocket.Chat ومع المجتمع",
|
||||
"Onboarding_agree_terms": "بالمواصلة أنت توافق على Rocket.Chat",
|
||||
"Onboarding_join_open_description": "انضم لمساحة عملنا للتواصل مع فريق Rocket.Chat ومع المجتمع",
|
||||
"Onboarding_less_options": "خيارات أقل",
|
||||
"Onboarding_more_options": "خيارات أكثر",
|
||||
"Onboarding_subtitle": "ما بعد بيئة فريق تعاونية",
|
||||
"Online": "متصل",
|
||||
"Only_authorized_users_can_write_new_messages": "يمكن للمستخدمين المصرح لهم فقط كتابة رسائل جديدة",
|
||||
"Oops": "عفوًا!",
|
||||
"Open_emoji_selector": "افتح محدد الرموز التعبيرية",
|
||||
"Open_Livechats": "محادثات مباشرة جارية",
|
||||
"Open_your_authentication_app_and_enter_the_code": "افتح تطبيق المصادقة الخاص بك وأدخل الرمز",
|
||||
"OR": "أو",
|
||||
"OS": "نظام التشغيل",
|
||||
"Overwrites_the_server_configuration_and_use_room_config": "يمكن للمستخدمين المصرح لهم فقط كتابة رسائل جديدة",
|
||||
"Password": "كلمة المرور",
|
||||
"Parent_channel_or_group": "القناة أو المجموعة الأب",
|
||||
"Passcode_app_locked_subtitle": "حاول مجدداً بعد {{timeLeft}} ثوان",
|
||||
"Passcode_app_locked_title": "التطبيق مقفل",
|
||||
"Passcode_choose_confirm_title": "تأكيد كلمة المرور الجديدة",
|
||||
"Passcode_choose_error": "كلمة المرور غير متطابقة. حاول مجدداً",
|
||||
"Passcode_choose_force_set": "كلمة المرور مطلوبة من المشرف",
|
||||
"Passcode_choose_title": "اختر كلمة المرور الجديدة",
|
||||
"Passcode_enter_title": "أدخل كلمة المرور",
|
||||
"Password": "كلمة المرور",
|
||||
"Permalink_copied_to_clipboard": "تم نسخ الرابط الثابت إلى الحافظة!",
|
||||
"Phone": "الهاتف",
|
||||
"Pin": "ثبت",
|
||||
|
@ -267,207 +312,89 @@
|
|||
"Privacy_Policy": "سياسة الخصوصية",
|
||||
"Private": "خاص",
|
||||
"Processing": "جار معالجة...",
|
||||
"Profile_saved_successfully": "تم حفظ الملف الشخصي بنجاح!",
|
||||
"Profile": "الملف الشخصي",
|
||||
"Profile_saved_successfully": "تم حفظ الملف الشخصي بنجاح!",
|
||||
"Public": "عام",
|
||||
"Push_Notifications_Alert_Info": "يتم إرسال هذه الإشعارات إليك عندما لا يكون التطبيق مفتوحاً",
|
||||
"Queued_chats": "محادثات في قائمى الانتظار",
|
||||
"Quote": "اقتباس",
|
||||
"Reactions_are_disabled": "التفاعل معطل",
|
||||
"Reactions_are_enabled": "التفاعل مفعل",
|
||||
"Read_External_Permission_Message": "يحتاج Rocket.chat للوصول إلى الصور والملفات الموجودة على الجهاز",
|
||||
"Read_External_Permission": "صلاحية قراءة الوسائط",
|
||||
"Read_External_Permission_Message": "يحتاج Rocket.chat للوصول إلى الصور والملفات الموجودة على الجهاز",
|
||||
"Read_Only": "قراءة فقط",
|
||||
"Read_Receipt": "قراءة المستلم",
|
||||
"Receive_Group_Mentions": "تلقي إشارات المجموعة",
|
||||
"Receive_Group_Mentions_Info": "تلقي @all و @here للإشعارات",
|
||||
"Register": "تسجيل",
|
||||
"replies": "ردود",
|
||||
"reply": "رد",
|
||||
"Reply": "رد",
|
||||
"Report": "بلاغ",
|
||||
"Receive_Notification": "استلام الإشعار",
|
||||
"Receive_notifications_from": "استلام الإشعارات من {{name}}",
|
||||
"Resend": "أعد الإرسال",
|
||||
"Reset_password": "إعادة تعيين كلمة المرور",
|
||||
"resetting_password": "إعادة تعيين كلمة المرور",
|
||||
"RESET": "إعادة",
|
||||
"Review_app_title": "هل أنت مستمتع بهذا التطبيق؟",
|
||||
"Review_app_desc": "قم بإعطائنا 5 نجوم {{store}}",
|
||||
"Review_app_yes": "أكيد!",
|
||||
"Review_app_no": "لا",
|
||||
"Review_app_later": "ربما لاحقاً",
|
||||
"Review_app_unable_store": "لم يتمكن من فتح {{store}}",
|
||||
"Review_this_app": "تقييم هذا التطبيق",
|
||||
"Register": "تسجيل",
|
||||
"Registration_Succeeded": "تم التسجيل بنجاح",
|
||||
"Remove": "حذف",
|
||||
"remove": "حذف",
|
||||
"Remove_someone_from_room": "إزالة شخص من الغرفة",
|
||||
"replies": "ردود",
|
||||
"Reply": "رد",
|
||||
"reply": "رد",
|
||||
"Reply_in_Thread": "الرد في موضوع",
|
||||
"Report": "بلاغ",
|
||||
"Resend": "أعد الإرسال",
|
||||
"RESET": "إعادة",
|
||||
"Reset_password": "إعادة تعيين كلمة المرور",
|
||||
"resetting_password": "إعادة تعيين كلمة المرور",
|
||||
"Review_app_desc": "قم بإعطائنا 5 نجوم {{store}}",
|
||||
"Review_app_later": "ربما لاحقاً",
|
||||
"Review_app_no": "لا",
|
||||
"Review_app_title": "هل أنت مستمتع بهذا التطبيق؟",
|
||||
"Review_app_unable_store": "لم يتمكن من فتح {{store}}",
|
||||
"Review_app_yes": "أكيد!",
|
||||
"Review_this_app": "تقييم هذا التطبيق",
|
||||
"Roles": "أدوار",
|
||||
"Room_Info_Edit": "تعديل معلومات الغرفة",
|
||||
"Room_Info": "معلومات الغرفة",
|
||||
"Room_Info_Edit": "تعديل معلومات الغرفة",
|
||||
"SAVE": "حفظ",
|
||||
"Save_Changes": "حفظ التغيرات",
|
||||
"Save": "حفظ",
|
||||
"Save_Changes": "حفظ التغيرات",
|
||||
"Save_Your_E2E_Password": "حفظ كلمة المرور بين الطرفين",
|
||||
"Save_Your_Encryption_Password": "حفظ كلمة المرور المشفرة",
|
||||
"Save_Your_Encryption_Password_info": "لا يمكن إستعادة كلمة المرور في حال فقدانها ولن تستطيع الوصول لرسائلك",
|
||||
"Save_Your_Encryption_Password_warning": "لا نقوم بتخزين كلمة المرور، الرجاء حفظها لديك في مكان آخر",
|
||||
"Saved": "تم الحفظ",
|
||||
"saved_to_gallery": "تم الحفظ في المعرض",
|
||||
"saving_preferences": "حفظ التفضيلات",
|
||||
"saving_profile": "حفظ الملف الشخصي",
|
||||
"saving_settings": "حفظ الإعدادات",
|
||||
"saved_to_gallery": "تم الحفظ في المعرض",
|
||||
"Save_Your_E2E_Password": "حفظ كلمة المرور بين الطرفين",
|
||||
"Save_Your_Encryption_Password": "حفظ كلمة المرور المشفرة",
|
||||
"Save_Your_Encryption_Password_warning": "لا نقوم بتخزين كلمة المرور، الرجاء حفظها لديك في مكان آخر",
|
||||
"Save_Your_Encryption_Password_info": "لا يمكن إستعادة كلمة المرور في حال فقدانها ولن تستطيع الوصول لرسائلك",
|
||||
"Search_Messages": "بحث الرسائل",
|
||||
"Screen_lock": "قفل الشاشة",
|
||||
"Search": "بحث",
|
||||
"Search_by": "بحث حسب",
|
||||
"Search_global_users": "بحث عام عن المستخدمين",
|
||||
"Search_global_users_description": "إذا قمت بالتفعيل، فسيمكنك البحث عن أي مستخدم في شركات أو خوادم أخرى",
|
||||
"Search_Messages": "بحث الرسائل",
|
||||
"Search_messages": "رسائل البحث",
|
||||
"Security_and_privacy": "الأمن والخصوصية",
|
||||
"Select_Server": "حدد خادم",
|
||||
"Select_Users": "حدد مستخدمين",
|
||||
"Select_a_Channel": "حدد قناة",
|
||||
"Select_a_Department": "حدد قسم",
|
||||
"Select_an_option": "حدد خيار",
|
||||
"Select_a_User": "حدد مستخدم",
|
||||
"Select_an_option": "حدد خيار",
|
||||
"Select_Server": "حدد خادم",
|
||||
"Select_Users": "حدد مستخدمين",
|
||||
"Send": "إرسال",
|
||||
"Send_audio_message": "إرسال رسالة صوتية",
|
||||
"Send_crash_report": "إرسال تقرير الأعطال",
|
||||
"Send_message": "إرسال الرسالة",
|
||||
"Send_me_the_code_again": "أرسل الرمز مرة أخرى",
|
||||
"Send_to": "إرسال إلى...",
|
||||
"Sending_to": "يتم الإرسال إلى",
|
||||
"Server": "سرفر",
|
||||
"Server_version": "نسخة الخادم: {{version}}",
|
||||
"Set_username_subtitle": "يتم استخدام اسم المستخدم للسماح للآخرين بذكرك في الرسائل",
|
||||
"Status_saved_successfully": "تم حفظ الحالة بنجاح!",
|
||||
"Settings": "الإعدادات",
|
||||
"Settings_succesfully_changed": "تم تعديل الإعدادات بنجاح!",
|
||||
"Share": "مشاركة",
|
||||
"Share_Link": "مشاركة رابط",
|
||||
"Share_this_app": "مشاركة هذا البرنامج",
|
||||
"Show_more": "إظهار أكثر",
|
||||
"Show_the_keyboard_shortcut_list": "عرض قائمة اختصارات لوحة المفاتيح",
|
||||
"Sign_Up": "تسجيل جديد",
|
||||
"Sound": "الصوت",
|
||||
"Star": "تمييز",
|
||||
"Starred": "مميزة",
|
||||
"Start_a_Discussion": "ابدأ نقاش",
|
||||
"Started_discussion": "بدأ النقاش",
|
||||
"Started_call": "أجرى الاتصال {{userBy}}",
|
||||
"Table": "جدول",
|
||||
"Tags": "العلامات",
|
||||
"Take_a_photo": "التقاط صورة",
|
||||
"Take_a_video": "التقاط فيديو",
|
||||
"Take_it": "التقط!",
|
||||
"Terms_of_Service": " شروط الخدمة ",
|
||||
"Theme": "سمة",
|
||||
"There_was_an_error_while_action": "حدث خطأ أثناء {{action}}!",
|
||||
"This_room_is_blocked": "هذه الغرفة محظورة",
|
||||
"This_room_is_read_only": "هذه الغرفة للقراءة فقط",
|
||||
"Threads": "مواضيع",
|
||||
"Thread": "موضوع",
|
||||
"Timezone": "المنطقة الزمنية",
|
||||
"topic": "عنوان",
|
||||
"Topic": "عنوان",
|
||||
"Translate": "ترجمة",
|
||||
"Try_again": "حاول مجدداً",
|
||||
"Two_Factor_Authentication": "المصادقة الثنائية",
|
||||
"unarchive": "إلغاء الأرشفة",
|
||||
"UNARCHIVE": "إلغاء الأرشفة",
|
||||
"Unfollowed_thread": "موضوع غير متابع",
|
||||
"Unmute": "إلغاء كتم",
|
||||
"unmuted": "إلغاء كتم",
|
||||
"Unpin": "إلغاء التثبيت",
|
||||
"unread_messages": "رسائل غير مقروءة",
|
||||
"Unread": "غير مقروء",
|
||||
"Unread_on_top": "غير مقروء في الأعلى",
|
||||
"Unstar": "إلغاء التمييز",
|
||||
"Updating": "جار التحديث...",
|
||||
"Uploading": "جار الرفع",
|
||||
"User": "مستخدم",
|
||||
"Users": "مستخدمين",
|
||||
"User_Info": "معلومات المستخدم",
|
||||
"User_has_been_key": "تمت {{key}} المستخدم!",
|
||||
"User_sent_an_attachment": "{{user}} أرسل مرفقًا",
|
||||
"Username": "اسم المستخدم",
|
||||
"Username_or_email": "اسم المستخدم أو البريد الالكتروني",
|
||||
"Uses_server_configuration": "يستخدم إعداد الخادم",
|
||||
"Registration_Succeeded": "تم التسجيل بنجاح",
|
||||
"Verify_email_desc": "لقد أرسلنا إليك بريداً إلكترونياً لتأكيد تسجيلك. إذا لم تتلق البريد الإلكتروني قريباً، فيرجى العودة والمحاولة مرة أخرى",
|
||||
"Verify_your_email_for_the_code_we_sent": "يرجى تأكيد البريد الإلكتروني عبر الرمز المرسل",
|
||||
"View_Original": "عرض المحتوى الأصلي",
|
||||
"Waiting_for_network": "بانتظار توفر شبكة...",
|
||||
"Websocket_disabled": "تم تعطيل Websocket لهذا الخادم.\n{{contact}}",
|
||||
"What_are_you_doing_right_now": "ما الذي تفعله حالياً؟",
|
||||
"Without_Servers": "بدون خوادم",
|
||||
"Workspaces": "مساحات العمل",
|
||||
"Would_you_like_to_return_the_inquiry": "هل ترغب بالرد على السؤال؟",
|
||||
"Write_External_Permission_Message": "يحتاج Rocket.Chat للوصول إلى معرض الصور الخاص بك حتى تتمكن من حفظ الصور",
|
||||
"Write_External_Permission": "إذن معرض",
|
||||
"Yes": "نعم",
|
||||
"Yes_action_it": "نعم، {{action}}!",
|
||||
"Yesterday": "أمس",
|
||||
"You_are_in_preview_mode": "أنت في وضع المعاينة",
|
||||
"You_can_search_using_RegExp_eg": "يمكنك استخدام RegExp. مثال: `/^text$/i`",
|
||||
"You_colon": "أنت: ",
|
||||
"you_were_mentioned": "تمت الإشارة إليك",
|
||||
"You_were_removed_from_channel": "تمت إزالتك من {{channel}}",
|
||||
"you": "أنت",
|
||||
"You": "أنت",
|
||||
"Logged_out_by_server": "لقد تم تسجيل خروجك من قبل الخادم. الرجاد الدخول من جديد",
|
||||
"You_need_to_access_at_least_one_RocketChat_server_to_share_something": "تحتاج إلى الوصول إلى خادم Rocket.Chat واحد على الأقل لمشاركة شيء ما",
|
||||
"You_need_to_verifiy_your_email_address_to_get_notications": "يجب تأكيد البريد الإلكتروني حتى تصلك الإشعارات",
|
||||
"Your_certificate": "شهادتك",
|
||||
"Your_invite_link_will_expire_after__usesLeft__uses": "سوف تنتهي صلاحية رابط الدعوة الخاص بك بعد {{usesLeft}} استخدامات",
|
||||
"Your_invite_link_will_expire_on__date__or_after__usesLeft__uses": "ستنتهي صلاحية رابط الدعوة الخاص بك في {{date}} أو بعد {{usesLeft}} استخدامات",
|
||||
"Your_invite_link_will_expire_on__date__": "ستنتهي صلاحية رابط الدعوة الخاص بك في {{date}}",
|
||||
"Your_invite_link_will_never_expire": "لن تنتهي صلاحية رابط الدعوة الخاص بك",
|
||||
"Your_workspace": "مساحة عملك",
|
||||
"Your_password_is": "كلمة المرور الخاصة بك هي",
|
||||
"Version_no": "النسخة: {{version}}",
|
||||
"You_will_not_be_able_to_recover_this_message": "لن تتمكن من استعادة هذه الرسالة!",
|
||||
"You_will_unset_a_certificate_for_this_server": "ستلغي شهادة هذا الخادم",
|
||||
"Change_Language": "تغيير اللغة",
|
||||
"Crash_report_disclaimer": "نحن لا نتتبع محتوى محادثاتك أبداً. يحتوي تقرير الأعطال فقط على المعلومات ذات الصلة لنا من أجل تحديد المشاكل وإصلاحها",
|
||||
"Type_message": "اكتب رسالة",
|
||||
"Search_messages": "رسائل البحث",
|
||||
"Reply_in_Thread": "الرد في موضوع",
|
||||
"Add_server": "إضافة خادم",
|
||||
"You_will_be_logged_out_of_this_application": "سيتم تسجيل خروجك من هذا التطبيق.",
|
||||
"Clear": "مسح",
|
||||
"This_will_clear_all_your_offline_data": "سيؤدي هذا إلى محو جميع بياناتك في وضع عدم الاتصال.",
|
||||
"This_will_remove_all_data_from_this_server": "هذا الإجراء يحذف جميع البيانات من هذا السيرفر",
|
||||
"Mark_unread": "علامة غير مقروء",
|
||||
"Wait_activation_warning": "يحب تفعيل حسابك من المشرف قبل تسجيل الدخول",
|
||||
"Screen_lock": "قفل الشاشة",
|
||||
"Local_authentication_biometry_title": "صادق",
|
||||
"Local_authentication_biometry_fallback": "استخدم كلمة المرور",
|
||||
"Local_authentication_unlock_option": "افتح القفل بكلمة المرور",
|
||||
"Local_authentication_change_passcode": "تغيير كلمة المرور",
|
||||
"Local_authentication_info": "تنويه: يجب حذف التطبيق عند نسيان كلمة المرور",
|
||||
"Local_authentication_facial_recognition": "التعرف على الوجه",
|
||||
"Local_authentication_fingerprint": "البصمة",
|
||||
"Local_authentication_unlock_with_label": "فتح القفل بـ {{label}}",
|
||||
"Local_authentication_auto_lock_60": "بعد دقيقة",
|
||||
"Local_authentication_auto_lock_300": "بعد 5 دقائق",
|
||||
"Local_authentication_auto_lock_900": "بعد 15 دقيقة",
|
||||
"Local_authentication_auto_lock_1800": "بعد 30 دقيقة",
|
||||
"Local_authentication_auto_lock_3600": "بعد ساعة",
|
||||
"Passcode_enter_title": "أدخل كلمة المرور",
|
||||
"Passcode_choose_title": "اختر كلمة المرور الجديدة",
|
||||
"Passcode_choose_confirm_title": "تأكيد كلمة المرور الجديدة",
|
||||
"Passcode_choose_error": "كلمة المرور غير متطابقة. حاول مجدداً",
|
||||
"Passcode_choose_force_set": "كلمة المرور مطلوبة من المشرف",
|
||||
"Passcode_app_locked_title": "التطبيق مقفل",
|
||||
"Passcode_app_locked_subtitle": "حاول مجدداً بعد {{timeLeft}} ثوان",
|
||||
"After_seconds_set_by_admin": "بعد {{seconds}} ثوان (حددها المدير)",
|
||||
"Dont_activate": "لا تقم بالتفعيل الآن",
|
||||
"Queued_chats": "محادثات في قائمى الانتظار",
|
||||
"Logout_from_other_logged_in_locations": "تسجيل الخروج من الأماكن الأخرى",
|
||||
"You_will_be_logged_out_from_other_locations": "سيتم تسجيل خروج من الأماكن الأخرى",
|
||||
"Logged_out_of_other_clients_successfully": "تم تسجيل الخروج من الأماكن الأخرى بنجاح",
|
||||
"Logout_failed": "فشل تسجيل الخروج!",
|
||||
"Log_analytics_events": "تحليلات سجل الأحداث",
|
||||
"Open_Livechats": "محادثات مباشرة جارية",
|
||||
"Broadcast_hint": "يمكن فقط للمستخدمين المصرح لهم كتابة رسائل جديدة، ولكن سيتمكن المستخدمون الآخرون من الرد",
|
||||
"and_N_more": "و{{count}} آخرين",
|
||||
"Slash_Gimme_Description": "يعرض ༼ つ ◕_◕ ༽つ قبل رسالتك",
|
||||
"Slash_LennyFace_Description": "يعرض ( ͡° ͜ʖ ͡°) بعد رسالتك",
|
||||
"Slash_Shrug_Description": "يعرض ¯\\_(ツ)_/¯ بعد رسالتك",
|
||||
|
@ -477,20 +404,91 @@
|
|||
"Slash_TableUnflip_Description": "يعرض ┬─┬ ノ( ゜-゜ノ)",
|
||||
"Slash_Topic_Description": "تعيين الموضوع",
|
||||
"Slash_Topic_Params": "رسالة الموضوع",
|
||||
"Create_A_New_Channel": "إنشاء Channel جديدة",
|
||||
"Show_the_keyboard_shortcut_list": "عرض قائمة اختصارات لوحة المفاتيح",
|
||||
"Hide_room": "إخفاء",
|
||||
"Invite_user_to_join_channel": "دعوة مستخدم واحد إلى الانضمام إلى هذه القناة",
|
||||
"Invite_user_to_join_channel_all_from": "دعوة جميع المستخدمين من [#channel] إلى الانضمام إلى هذه القناة",
|
||||
"Invite_user_to_join_channel_all_to": "دعوة جميع المستخدمين من هذه القناة إلى الانضمام إلى [#channel]",
|
||||
"Join_the_given_channel": "انضمام إلى القناة المحددة",
|
||||
"Remove_someone_from_room": "إزالة شخص من الغرفة",
|
||||
"Leave_the_current_channel": "مغادرة القناة الحالية",
|
||||
"Displays_action_text": "يعرض نص الإجراء",
|
||||
"Direct_message_someone": "رسالة مباشرة لشخص ما",
|
||||
"Mute_someone_in_room": "كتم صوت شخص ما في الغرفة",
|
||||
"Unmute_someone_in_room": "إلغاء كتم صوت شخص ما في الغرفة",
|
||||
"Audio": "صوت",
|
||||
"Sound": "الصوت",
|
||||
"Star": "تمييز",
|
||||
"Starred": "مميزة",
|
||||
"Start_a_Discussion": "ابدأ نقاش",
|
||||
"Started_call": "أجرى الاتصال {{userBy}}",
|
||||
"Started_discussion": "بدأ النقاش",
|
||||
"Status_saved_successfully": "تم حفظ الحالة بنجاح!",
|
||||
"Table": "جدول",
|
||||
"Tags": "العلامات",
|
||||
"Take_a_photo": "التقاط صورة",
|
||||
"Take_a_video": "التقاط فيديو",
|
||||
"Take_it": "التقط!",
|
||||
"Terms_of_Service": " شروط الخدمة ",
|
||||
"The_user_will_be_able_to_type_in_roomName": "المستخدم سيتمكن من الكتابة في {{roomName}}",
|
||||
"The_user_wont_be_able_to_type_in_roomName": "المستخدم لن يتمكن من الكتابة في {{roomName}}",
|
||||
"The_user_will_be_able_to_type_in_roomName": "المستخدم سيتمكن من الكتابة في {{roomName}}"
|
||||
"Theme": "سمة",
|
||||
"There_was_an_error_while_action": "حدث خطأ أثناء {{action}}!",
|
||||
"This_room_is_blocked": "هذه الغرفة محظورة",
|
||||
"This_room_is_read_only": "هذه الغرفة للقراءة فقط",
|
||||
"This_will_clear_all_your_offline_data": "سيؤدي هذا إلى محو جميع بياناتك في وضع عدم الاتصال.",
|
||||
"This_will_remove_all_data_from_this_server": "هذا الإجراء يحذف جميع البيانات من هذا السيرفر",
|
||||
"Thread": "موضوع",
|
||||
"Threads": "مواضيع",
|
||||
"Timezone": "المنطقة الزمنية",
|
||||
"Topic": "عنوان",
|
||||
"topic": "عنوان",
|
||||
"Translate": "ترجمة",
|
||||
"Try_again": "حاول مجدداً",
|
||||
"Two_Factor_Authentication": "المصادقة الثنائية",
|
||||
"Type_message": "اكتب رسالة",
|
||||
"UNARCHIVE": "إلغاء الأرشفة",
|
||||
"unarchive": "إلغاء الأرشفة",
|
||||
"Unfollowed_thread": "موضوع غير متابع",
|
||||
"Unmute": "إلغاء كتم",
|
||||
"Unmute_someone_in_room": "إلغاء كتم صوت شخص ما في الغرفة",
|
||||
"unmuted": "إلغاء كتم",
|
||||
"Unpin": "إلغاء التثبيت",
|
||||
"Unread": "غير مقروء",
|
||||
"unread_messages": "رسائل غير مقروءة",
|
||||
"Unread_on_top": "غير مقروء في الأعلى",
|
||||
"Unstar": "إلغاء التمييز",
|
||||
"Updating": "جار التحديث...",
|
||||
"Uploading": "جار الرفع",
|
||||
"User": "مستخدم",
|
||||
"User_has_been_key": "تمت {{key}} المستخدم!",
|
||||
"User_Info": "معلومات المستخدم",
|
||||
"User_sent_an_attachment": "{{user}} أرسل مرفقًا",
|
||||
"Username": "اسم المستخدم",
|
||||
"Username_or_email": "اسم المستخدم أو البريد الالكتروني",
|
||||
"Users": "مستخدمين",
|
||||
"Uses_server_configuration": "يستخدم إعداد الخادم",
|
||||
"Verify_email_desc": "لقد أرسلنا إليك بريداً إلكترونياً لتأكيد تسجيلك. إذا لم تتلق البريد الإلكتروني قريباً، فيرجى العودة والمحاولة مرة أخرى",
|
||||
"Version_no": "النسخة: {{version}}",
|
||||
"View_Original": "عرض المحتوى الأصلي",
|
||||
"Wait_activation_warning": "يحب تفعيل حسابك من المشرف قبل تسجيل الدخول",
|
||||
"Waiting_for_network": "بانتظار توفر شبكة...",
|
||||
"Websocket_disabled": "تم تعطيل Websocket لهذا الخادم.\n{{contact}}",
|
||||
"What_are_you_doing_right_now": "ما الذي تفعله حالياً؟",
|
||||
"Whats_the_password_for_your_certificate": "ماهي كلمة المرور للشهادة؟",
|
||||
"Without_Servers": "بدون خوادم",
|
||||
"Workspaces": "مساحات العمل",
|
||||
"Would_you_like_to_return_the_inquiry": "هل ترغب بالرد على السؤال؟",
|
||||
"Write_External_Permission": "إذن معرض",
|
||||
"Write_External_Permission_Message": "يحتاج Rocket.Chat للوصول إلى معرض الصور الخاص بك حتى تتمكن من حفظ الصور",
|
||||
"Yes": "نعم",
|
||||
"Yes_action_it": "نعم، {{action}}!",
|
||||
"Yesterday": "أمس",
|
||||
"You": "أنت",
|
||||
"you": "أنت",
|
||||
"You_are_in_preview_mode": "أنت في وضع المعاينة",
|
||||
"You_can_search_using_RegExp_eg": "يمكنك استخدام RegExp. مثال: `/^text$/i`",
|
||||
"You_colon": "أنت: ",
|
||||
"You_need_to_access_at_least_one_RocketChat_server_to_share_something": "تحتاج إلى الوصول إلى خادم Rocket.Chat واحد على الأقل لمشاركة شيء ما",
|
||||
"You_need_to_verifiy_your_email_address_to_get_notications": "يجب تأكيد البريد الإلكتروني حتى تصلك الإشعارات",
|
||||
"you_were_mentioned": "تمت الإشارة إليك",
|
||||
"You_were_removed_from_channel": "تمت إزالتك من {{channel}}",
|
||||
"You_will_be_logged_out_from_other_locations": "سيتم تسجيل خروج من الأماكن الأخرى",
|
||||
"You_will_be_logged_out_of_this_application": "سيتم تسجيل خروجك من هذا التطبيق.",
|
||||
"You_will_not_be_able_to_recover_this_message": "لن تتمكن من استعادة هذه الرسالة!",
|
||||
"You_will_unset_a_certificate_for_this_server": "ستلغي شهادة هذا الخادم",
|
||||
"Your_certificate": "شهادتك",
|
||||
"Your_invite_link_will_expire_after__usesLeft__uses": "سوف تنتهي صلاحية رابط الدعوة الخاص بك بعد {{usesLeft}} استخدامات",
|
||||
"Your_invite_link_will_expire_on__date__": "ستنتهي صلاحية رابط الدعوة الخاص بك في {{date}}",
|
||||
"Your_invite_link_will_expire_on__date__or_after__usesLeft__uses": "ستنتهي صلاحية رابط الدعوة الخاص بك في {{date}} أو بعد {{usesLeft}} استخدامات",
|
||||
"Your_invite_link_will_never_expire": "لن تنتهي صلاحية رابط الدعوة الخاص بك",
|
||||
"Your_password_is": "كلمة المرور الخاصة بك هي",
|
||||
"Your_workspace": "مساحة عملك"
|
||||
}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
File diff suppressed because it is too large
Load Diff
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
File diff suppressed because it is too large
Load Diff
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
File diff suppressed because it is too large
Load Diff
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1,5 +1,91 @@
|
|||
{
|
||||
"1_person_reacted": "1 persona reaccionó",
|
||||
"Actions": "Acciones",
|
||||
"Activity": "Actividad",
|
||||
"Add_Server": "Añadir servidor",
|
||||
"Add_server": "Añadir servidor",
|
||||
"Admin_Panel": "Panel de Control",
|
||||
"Alert": "Alerta",
|
||||
"alert": "alerta",
|
||||
"alerts": "alertas",
|
||||
"All": "Todos",
|
||||
"All_Messages": "Todos los mensajes",
|
||||
"All_users_in_the_channel_can_write_new_messages": "Todos los usuarios en el canal pueden escribir mensajes",
|
||||
"Allow_Reactions": "Permitir reacciones",
|
||||
"and": "y",
|
||||
"and_N_more": "y {{count}} más",
|
||||
"Announcement": "Anuncio",
|
||||
"announcement": "anuncio",
|
||||
"Apply_Your_Certificate": "Aplica tu certificado",
|
||||
"ARCHIVE": "FICHERO",
|
||||
"archive": "fichero",
|
||||
"are_typing": "están escribiendo",
|
||||
"Are_you_sure_question_mark": "¿Estás seguro?",
|
||||
"Are_you_sure_you_want_to_leave_the_room": "¿Deseas salir de la sala {{room}}?",
|
||||
"Audio": "Audio",
|
||||
"Auto_Translate": "Traducción automática",
|
||||
"Automatic": "Automático",
|
||||
"Avatar_changed_successfully": "¡Avatar modificado correctamente!",
|
||||
"Avatar_Url": "URL del Avatar",
|
||||
"Away": "Ausente",
|
||||
"Black": "Negro",
|
||||
"Broadcast_hint": "Sólo los usuarios autorizados pueden escribir nuevos mensajes, el resto podrán responder sobre los mismos.",
|
||||
"Busy": "Ocupado",
|
||||
"Call_already_ended": "¡!La llamada ya ha finalizado!",
|
||||
"Cancel": "Cancelar",
|
||||
"Cancel_editing": "Cancelar edición",
|
||||
"Cancel_recording": "Cancelar grabación",
|
||||
"Certificate_password": "Contraseña del certificado",
|
||||
"Change_Language": "Cambiar idioma",
|
||||
"changing_avatar": "cambiando avatar",
|
||||
"Channel_Name": "Nombre sala",
|
||||
"Channels": "Salas",
|
||||
"Chats": "Chats",
|
||||
"Choose": "Seleccionar",
|
||||
"Choose_file": "Seleccionar archivo",
|
||||
"Choose_from_library": "Seleccionar desde galería",
|
||||
"Click_to_join": "¡Unirme!",
|
||||
"Close": "Cerrar",
|
||||
"Close_emoji_selector": "Cerrar selector de emojis",
|
||||
"Collaborative": "Colaborativo",
|
||||
"Confirm": "Confirmar",
|
||||
"Connect": "Conectar",
|
||||
"Connecting": "Conectando...",
|
||||
"Contact_us": "Contacta con nosotros",
|
||||
"Contact_your_server_admin": "Contacta con el administrador.",
|
||||
"Continue_with": "Continuar con",
|
||||
"Copied_to_clipboard": "¡Copiado al portapapeles!",
|
||||
"Copy": "Copiar",
|
||||
"Crash_report_disclaimer": "Nunca rastreamos el contenido de sus conversaciones. El informe del error sólo contiene información relevante para nosotros con el fin de identificar los problemas y solucionarlos.",
|
||||
"Create": "Crear",
|
||||
"Create_A_New_Channel": "Crear un nuevo Channel",
|
||||
"Create_a_new_workspace": "Crear un nuevo espacio de trabajo",
|
||||
"Create_account": "Crear una cuenta",
|
||||
"Create_Channel": "Crear sala",
|
||||
"Created_snippet": "crear mensaje en bloque",
|
||||
"creating_channel": "creando channel",
|
||||
"Dark": "Oscuro",
|
||||
"Dark_level": "Nivel de oscuridad",
|
||||
"Default": "Por defecto",
|
||||
"DELETE": "ELIMINAR",
|
||||
"Delete": "Eliminar",
|
||||
"delete": "eliminar",
|
||||
"Delete_Room_Warning": "Eliminar a un usuario causará la eliminación de todos los mensajes creados por dicho usuario. Esta operación no se puede deshacer.",
|
||||
"deleting_room": "eliminando sala",
|
||||
"Description": "Descripción",
|
||||
"description": "descripción",
|
||||
"Direct_message_someone": "Enviar mensaje directo a alguien",
|
||||
"Direct_Messages": "Mensajes directos",
|
||||
"Directory": "Directorio",
|
||||
"Discussions": "Conversaciones",
|
||||
"Displays_action_text": "Mostrar texto de acción",
|
||||
"Do_you_have_a_certificate": "¿Tienes un certificado?",
|
||||
"Do_you_really_want_to_key_this_room_question_mark": "¿Deseas {{key}} de esta sala?",
|
||||
"Dont_Have_An_Account": "¿Todavía no tienes una cuenta?",
|
||||
"Edit": "Editar",
|
||||
"Email": "E-mail",
|
||||
"Enable_Auto_Translate": "Permitir Auto-Translate",
|
||||
"Error_uploading": "Error en la subida",
|
||||
"error-action-not-allowed": "{{action}} no permitida",
|
||||
"error-avatar-invalid-url": "URL de avatar inválida: {{url}}",
|
||||
"error-duplicate-channel-name": "Ya existe un canal con nombre {{room_name}}",
|
||||
|
@ -12,121 +98,51 @@
|
|||
"error-not-allowed": "No permitido",
|
||||
"error-too-many-requests": "Error, demasiadas peticiones. Debes esperar {{seconds}} segundos antes de continuar. Por favor, sé paciente.",
|
||||
"error-you-are-last-owner": "Eres el único propietario existente. Debes establecer un nuevo propietario antes de abandonar la sala.",
|
||||
"Actions": "Acciones",
|
||||
"Activity": "Actividad",
|
||||
"Add_Server": "Añadir servidor",
|
||||
"Admin_Panel": "Panel de Control",
|
||||
"Alert": "Alerta",
|
||||
"alert": "alerta",
|
||||
"alerts": "alertas",
|
||||
"All_users_in_the_channel_can_write_new_messages": "Todos los usuarios en el canal pueden escribir mensajes",
|
||||
"All": "Todos",
|
||||
"All_Messages": "Todos los mensajes",
|
||||
"Allow_Reactions": "Permitir reacciones",
|
||||
"and": "y",
|
||||
"announcement": "anuncio",
|
||||
"Announcement": "Anuncio",
|
||||
"Apply_Your_Certificate": "Aplica tu certificado",
|
||||
"ARCHIVE": "FICHERO",
|
||||
"archive": "fichero",
|
||||
"are_typing": "están escribiendo",
|
||||
"Are_you_sure_question_mark": "¿Estás seguro?",
|
||||
"Are_you_sure_you_want_to_leave_the_room": "¿Deseas salir de la sala {{room}}?",
|
||||
"Automatic": "Automático",
|
||||
"Auto_Translate": "Traducción automática",
|
||||
"Avatar_changed_successfully": "¡Avatar modificado correctamente!",
|
||||
"Avatar_Url": "URL del Avatar",
|
||||
"Away": "Ausente",
|
||||
"Black": "Negro",
|
||||
"Busy": "Ocupado",
|
||||
"Cancel_editing": "Cancelar edición",
|
||||
"Cancel_recording": "Cancelar grabación",
|
||||
"Cancel": "Cancelar",
|
||||
"changing_avatar": "cambiando avatar",
|
||||
"creating_channel": "creando channel",
|
||||
"Channel_Name": "Nombre sala",
|
||||
"Channels": "Salas",
|
||||
"Chats": "Chats",
|
||||
"Call_already_ended": "¡!La llamada ya ha finalizado!",
|
||||
"Click_to_join": "¡Unirme!",
|
||||
"Close": "Cerrar",
|
||||
"Close_emoji_selector": "Cerrar selector de emojis",
|
||||
"Choose": "Seleccionar",
|
||||
"Choose_from_library": "Seleccionar desde galería",
|
||||
"Choose_file": "Seleccionar archivo",
|
||||
"Collaborative": "Colaborativo",
|
||||
"Confirm": "Confirmar",
|
||||
"Connect": "Conectar",
|
||||
"Connecting": "Conectando...",
|
||||
"Contact_us": "Contacta con nosotros",
|
||||
"Contact_your_server_admin": "Contacta con el administrador.",
|
||||
"Continue_with": "Continuar con",
|
||||
"Copied_to_clipboard": "¡Copiado al portapapeles!",
|
||||
"Copy": "Copiar",
|
||||
"Certificate_password": "Contraseña del certificado",
|
||||
"Whats_the_password_for_your_certificate": "¿Cuál es la contraseña de tu certificado?",
|
||||
"Create_account": "Crear una cuenta",
|
||||
"Create_Channel": "Crear sala",
|
||||
"Created_snippet": "crear mensaje en bloque",
|
||||
"Create_a_new_workspace": "Crear un nuevo espacio de trabajo",
|
||||
"Create": "Crear",
|
||||
"Dark": "Oscuro",
|
||||
"Dark_level": "Nivel de oscuridad",
|
||||
"Default": "Por defecto",
|
||||
"Delete_Room_Warning": "Eliminar a un usuario causará la eliminación de todos los mensajes creados por dicho usuario. Esta operación no se puede deshacer.",
|
||||
"delete": "eliminar",
|
||||
"Delete": "Eliminar",
|
||||
"DELETE": "ELIMINAR",
|
||||
"deleting_room": "eliminando sala",
|
||||
"description": "descripción",
|
||||
"Description": "Descripción",
|
||||
"Directory": "Directorio",
|
||||
"Direct_Messages": "Mensajes directos",
|
||||
"Discussions": "Conversaciones",
|
||||
"Dont_Have_An_Account": "¿Todavía no tienes una cuenta?",
|
||||
"Do_you_have_a_certificate": "¿Tienes un certificado?",
|
||||
"Do_you_really_want_to_key_this_room_question_mark": "¿Deseas {{key}} de esta sala?",
|
||||
"Edit": "Editar",
|
||||
"Email": "E-mail",
|
||||
"Enable_Auto_Translate": "Permitir Auto-Translate",
|
||||
"Everyone_can_access_this_channel": "Todos los usuarios pueden acceder a este canal",
|
||||
"Error_uploading": "Error en la subida",
|
||||
"Favorites": "Favoritos",
|
||||
"Files": "Archivos",
|
||||
"File_description": "Descripción del archivo",
|
||||
"Files": "Archivos",
|
||||
"Finish_recording": "Finalizar grabación",
|
||||
"Following_thread": "Siguiendo hilo",
|
||||
"For_your_security_you_must_enter_your_current_password_to_continue": "Por seguridad, debes introducir tu contraseña para continuar",
|
||||
"Forgot_password_If_this_email_is_registered": "Si este email está registrado, te enviaremos las instrucciones para resetear tu contraseña. Si no recibes un email en breve, vuelve aquí e inténtalo de nuevo.",
|
||||
"Forgot_password": "¿Ha olvidado su contraseña?",
|
||||
"Forgot_password_If_this_email_is_registered": "Si este email está registrado, te enviaremos las instrucciones para resetear tu contraseña. Si no recibes un email en breve, vuelve aquí e inténtalo de nuevo.",
|
||||
"Full_table": "Click para ver la tabla completa",
|
||||
"Get_link": "Obtener enlace",
|
||||
"Hide_room": "Ocultar",
|
||||
"In_App_And_Desktop": "En la aplicación y en el escritorio",
|
||||
"In_App_and_Desktop_Alert_info": "Muestra un banner en la parte superior de la pantalla cuando la aplicación esté abierta y muestra una notificación en el escritorio",
|
||||
"Invisible": "Invisible",
|
||||
"is_typing": "escribiendo",
|
||||
"Invalid_server_version": "El servidor que intentas conectar está usando una versión que ya no está soportada por la aplicación : {{currentVersion}}. Se requiere una versión {{minVersion}}.",
|
||||
"Invisible": "Invisible",
|
||||
"Invite_user_to_join_channel": "Invitar a un usuario a unirse a este canal",
|
||||
"Invite_user_to_join_channel_all_from": "Invitar a todos los usuarios de [#channell] a que se unan a este canal",
|
||||
"Invite_user_to_join_channel_all_to": "Invitar a todos los usuarios de este canal a unirse a [#channel]",
|
||||
"is_typing": "escribiendo",
|
||||
"Join": "Conectar",
|
||||
"Join_the_given_channel": "Unirse al canal dado",
|
||||
"Just_invited_people_can_access_this_channel": "Sólo gente invitada puede acceder a este canal.",
|
||||
"Language": "Idioma",
|
||||
"last_message": "último mensaje",
|
||||
"leaving_room": "abandonando sala",
|
||||
"Learn_more": "Saber más",
|
||||
"leave": "abandonar",
|
||||
"Leave_the_current_channel": "Salir del canal actual",
|
||||
"leaving_room": "abandonando sala",
|
||||
"Legal": "Legal",
|
||||
"Light": "Claro",
|
||||
"License": "Licencia",
|
||||
"Light": "Claro",
|
||||
"Login": "Inicio de sesión",
|
||||
"Login_error": "¡Sus credenciales fueron rechazadas! Por favor, inténtelo de nuevo.",
|
||||
"Logout": "Cerrar sesión",
|
||||
"members": "miembros",
|
||||
"Members": "Miembros",
|
||||
"members": "miembros",
|
||||
"Mentions": "Menciones",
|
||||
"message": "mensaje",
|
||||
"Message_actions": "Acciones de mensaje",
|
||||
"Message_removed": "Mensaje eliminado",
|
||||
"message": "mensaje",
|
||||
"messages": "mensajes",
|
||||
"Message_Reported": "Mensaje notificado",
|
||||
"messages": "mensajes",
|
||||
"Mute": "Mutear",
|
||||
"Mute_someone_in_room": "Silenciar a alguien en la sala",
|
||||
"muted": "muteado",
|
||||
"N_people_reacted": "Han reaccionado {{n}} personas",
|
||||
"N_users": "{{n}} usuarios",
|
||||
|
@ -136,23 +152,23 @@
|
|||
"Next": "Siguiente",
|
||||
"No_files": "No hay archivos",
|
||||
"No_mentioned_messages": "No hay mensajes mencionados",
|
||||
"No_pinned_messages": "No hay mensajes fijados",
|
||||
"No_results_found": "No hay resultados",
|
||||
"No_starred_messages": "No hay mensajes destacados",
|
||||
"No_Message": "Sin mensajes",
|
||||
"No_messages_yet": "No hay mensajes todavía",
|
||||
"No_pinned_messages": "No hay mensajes fijados",
|
||||
"No_Reactions": "No hay reacciones",
|
||||
"No_Read_Receipts": "No hay confirmaciones de lectura",
|
||||
"No_results_found": "No hay resultados",
|
||||
"No_starred_messages": "No hay mensajes destacados",
|
||||
"Not_RC_Server": "Esto no es un servidor de Rocket.Chat.\n{{contact}}",
|
||||
"Nothing": "Nada",
|
||||
"Nothing_to_save": "¡No hay nada por guardar!",
|
||||
"Notification_Preferences": "Configuración de notificaciones",
|
||||
"Notifications": "Notificaciones",
|
||||
"Notify_active_in_this_room": "Notificar a los usuarios activos en esta sala",
|
||||
"Notify_all_in_this_room": "Notificar a todos en esta sala",
|
||||
"Notifications": "Notificaciones",
|
||||
"Notification_Preferences": "Configuración de notificaciones",
|
||||
"Oops": "Oops!",
|
||||
"Online": "Conectado",
|
||||
"Only_authorized_users_can_write_new_messages": "Sólo pueden escribir mensajes usuarios autorizados",
|
||||
"Oops": "Oops!",
|
||||
"Open_emoji_selector": "Abrir selector de emojis",
|
||||
"Password": "Contraseña",
|
||||
"Permalink_copied_to_clipboard": "¡Enlace permanente copiado al portapapeles!",
|
||||
|
@ -163,8 +179,8 @@
|
|||
"Privacy_Policy": "Política de privacidad",
|
||||
"Private": "Privado",
|
||||
"Processing": "Procesando...",
|
||||
"Profile_saved_successfully": "¡Perfil guardado correctamente!",
|
||||
"Profile": "Perfil",
|
||||
"Profile_saved_successfully": "¡Perfil guardado correctamente!",
|
||||
"Public": "Público",
|
||||
"Push_Notifications": "Notificaciones Push",
|
||||
"Push_Notifications_Alert_Info": "Estas notificaciones se le entregan cuando la aplicación no está abierta",
|
||||
|
@ -175,31 +191,33 @@
|
|||
"Read_Receipt": "Comprobante de lectura",
|
||||
"Receive_Group_Mentions": "Recibir menciones de grupo",
|
||||
"Receive_Group_Mentions_Info": "Recibir menciones @all y @here",
|
||||
"Register": "Registrar",
|
||||
"replies": "respuestas",
|
||||
"reply": "respuesta",
|
||||
"Reply": "Respuesta",
|
||||
"Report": "Informe",
|
||||
"Receive_Notification": "Recibir notificación",
|
||||
"Receive_notifications_from": "Recibir notificación de {{name}}",
|
||||
"Register": "Registrar",
|
||||
"Remove_someone_from_room": "Eliminar a alguien de la sala",
|
||||
"replies": "respuestas",
|
||||
"Reply": "Respuesta",
|
||||
"reply": "respuesta",
|
||||
"Report": "Informe",
|
||||
"Resend": "Reenviar",
|
||||
"RESET": "RESET",
|
||||
"Reset_password": "Resetear contraseña",
|
||||
"resetting_password": "reseteando contraseña",
|
||||
"RESET": "RESET",
|
||||
"Roles": "Roles",
|
||||
"Room_Info_Edit": "Editar información de la sala",
|
||||
"Room_Info": "Información de la sala",
|
||||
"Room_Info_Edit": "Editar información de la sala",
|
||||
"SAVE": "GUARDAR",
|
||||
"Save_Changes": "Guardar cambios",
|
||||
"Save": "Guardar",
|
||||
"Save_Changes": "Guardar cambios",
|
||||
"saving_preferences": "guardando preferencias",
|
||||
"saving_profile": "guardando perfil",
|
||||
"saving_settings": "guardando configuración",
|
||||
"Search_Messages": "Buscar mensajes",
|
||||
"Search": "Buscar",
|
||||
"Search_by": "Buscar por",
|
||||
"Search_global_users": "Buscar por usuarios globales",
|
||||
"Search_global_users_description": "Si lo activas, puedes buscar cualquier usuario de otras empresas o servidores.",
|
||||
"Search_Messages": "Buscar mensajes",
|
||||
"Search_messages": "Buscar mensajes",
|
||||
"Select_Server": "Selecciona servidor",
|
||||
"Select_Users": "Selecciona usuarios",
|
||||
"Send": "Enviar",
|
||||
|
@ -214,68 +232,8 @@
|
|||
"Settings_succesfully_changed": "¡Configuración cambiada correctamente!",
|
||||
"Share": "Compartir",
|
||||
"Share_this_app": "Compartir esta aplicación",
|
||||
"Show_the_keyboard_shortcut_list": "Mostrar la lista de atajos de teclado",
|
||||
"Sign_Up": "Registrarse",
|
||||
"Sound": "Sonido",
|
||||
"Star": "Destacar",
|
||||
"Starred": "Destacado",
|
||||
"Started_discussion": "Comenzar una conversación:",
|
||||
"Started_call": "Llamada iniciada por {{userBy}}",
|
||||
"Table": "Tabla",
|
||||
"Take_a_photo": "Enviar una foto",
|
||||
"Take_a_video": "Enviar un vídeo",
|
||||
"Terms_of_Service": "Términos de servicio",
|
||||
"Theme": "Tema",
|
||||
"There_was_an_error_while_action": "¡Ha habido un error mientras {{action}}!",
|
||||
"This_room_is_blocked": "La sala está bloqueada",
|
||||
"This_room_is_read_only": "Esta sala es de sólo lectura",
|
||||
"Threads": "Hilos",
|
||||
"Thread": "Hilo",
|
||||
"Timezone": "Zona horaria",
|
||||
"topic": "asunto",
|
||||
"Topic": "Asunto",
|
||||
"Translate": "Traducir",
|
||||
"Try_again": "Intentar de nuevo",
|
||||
"Two_Factor_Authentication": "Autenticación de doble factor",
|
||||
"unarchive": "desarchivar",
|
||||
"UNARCHIVE": "DESARCHIVAR",
|
||||
"Unfollowed_thread": "Dejar de seguir el hilo",
|
||||
"Unmute": "Desmutear",
|
||||
"unmuted": "Desmuteado",
|
||||
"Unpin": "Quitar estado fijado",
|
||||
"unread_messages": "marcar como no leído",
|
||||
"Unread": "Marcar como no leído",
|
||||
"Unread_on_top": "Mensajes no leídos en la parte superior",
|
||||
"Unstar": "Quitar destacado",
|
||||
"Updating": "Actualizando...",
|
||||
"Uploading": "Subiendo",
|
||||
"Users": "Usuarios",
|
||||
"User_has_been_key": "El usuario ha sido {{key}}",
|
||||
"User_sent_an_attachment": "{{user}} envío un adjunto",
|
||||
"Username": "Nombre de usuario",
|
||||
"Username_or_email": "Nombre de usuario o email",
|
||||
"View_Original": "Ver original",
|
||||
"Websocket_disabled": "Websocket está deshabilitado para este servidor.\n{{contact}}",
|
||||
"Without_Servers": "Sin servidores",
|
||||
"Yes_action_it": "Sí, ¡{{action}}!",
|
||||
"Yesterday": "Ayer",
|
||||
"You_are_in_preview_mode": "Estás en modo vista previa",
|
||||
"You_can_search_using_RegExp_eg": "Puedes usar expresiones regulares. Por ejemplo, `/^text$/i`",
|
||||
"You_colon": "Tú: ",
|
||||
"you_were_mentioned": "has sido mencionado",
|
||||
"you": "tú",
|
||||
"You": "Tú",
|
||||
"You_need_to_access_at_least_one_RocketChat_server_to_share_something": "Necesita acceder al menos a un servidor Rocket.Chat para compartir algo.",
|
||||
"Your_certificate": "Tu certificado",
|
||||
"Version_no": "Versión: {{version}}",
|
||||
"You_will_not_be_able_to_recover_this_message": "¡No podrás recuperar este mensaje!",
|
||||
"Change_Language": "Cambiar idioma",
|
||||
"Crash_report_disclaimer": "Nunca rastreamos el contenido de sus conversaciones. El informe del error sólo contiene información relevante para nosotros con el fin de identificar los problemas y solucionarlos.",
|
||||
"Type_message": "Escribir mensaje",
|
||||
"Search_messages": "Buscar mensajes",
|
||||
"Add_server": "Añadir servidor",
|
||||
"Broadcast_hint": "Sólo los usuarios autorizados pueden escribir nuevos mensajes, el resto podrán responder sobre los mismos.",
|
||||
"Learn_more": "Saber más",
|
||||
"and_N_more": "y {{count}} más",
|
||||
"Slash_Gimme_Description": "Muestra (つ ◕_◕) つ antes de tu mensaje",
|
||||
"Slash_LennyFace_Description": "Muestra (͡ ° ͜ʖ ͡ °) después de tu mensaje",
|
||||
"Slash_Shrug_Description": "Muestra ¯ \\ _ (ツ) _ / ¯ después de tu mensaje",
|
||||
|
@ -285,18 +243,60 @@
|
|||
"Slash_TableUnflip_Description": "Muestra ┬─┬ ノ( ゜-゜ノ)",
|
||||
"Slash_Topic_Description": "Establecer tema",
|
||||
"Slash_Topic_Params": "Mensaje de tema",
|
||||
"Create_A_New_Channel": "Crear un nuevo Channel",
|
||||
"Show_the_keyboard_shortcut_list": "Mostrar la lista de atajos de teclado",
|
||||
"Hide_room": "Ocultar",
|
||||
"Invite_user_to_join_channel": "Invitar a un usuario a unirse a este canal",
|
||||
"Invite_user_to_join_channel_all_from": "Invitar a todos los usuarios de [#channell] a que se unan a este canal",
|
||||
"Invite_user_to_join_channel_all_to": "Invitar a todos los usuarios de este canal a unirse a [#channel]",
|
||||
"Join_the_given_channel": "Unirse al canal dado",
|
||||
"Remove_someone_from_room": "Eliminar a alguien de la sala",
|
||||
"Leave_the_current_channel": "Salir del canal actual",
|
||||
"Displays_action_text": "Mostrar texto de acción",
|
||||
"Direct_message_someone": "Enviar mensaje directo a alguien",
|
||||
"Mute_someone_in_room": "Silenciar a alguien en la sala",
|
||||
"Sound": "Sonido",
|
||||
"Star": "Destacar",
|
||||
"Starred": "Destacado",
|
||||
"Started_call": "Llamada iniciada por {{userBy}}",
|
||||
"Started_discussion": "Comenzar una conversación:",
|
||||
"Table": "Tabla",
|
||||
"Take_a_photo": "Enviar una foto",
|
||||
"Take_a_video": "Enviar un vídeo",
|
||||
"Terms_of_Service": "Términos de servicio",
|
||||
"Theme": "Tema",
|
||||
"There_was_an_error_while_action": "¡Ha habido un error mientras {{action}}!",
|
||||
"This_room_is_blocked": "La sala está bloqueada",
|
||||
"This_room_is_read_only": "Esta sala es de sólo lectura",
|
||||
"Thread": "Hilo",
|
||||
"Threads": "Hilos",
|
||||
"Timezone": "Zona horaria",
|
||||
"Topic": "Asunto",
|
||||
"topic": "asunto",
|
||||
"Translate": "Traducir",
|
||||
"Try_again": "Intentar de nuevo",
|
||||
"Two_Factor_Authentication": "Autenticación de doble factor",
|
||||
"Type_message": "Escribir mensaje",
|
||||
"UNARCHIVE": "DESARCHIVAR",
|
||||
"unarchive": "desarchivar",
|
||||
"Unfollowed_thread": "Dejar de seguir el hilo",
|
||||
"Unmute": "Desmutear",
|
||||
"Unmute_someone_in_room": "Reactivar audio de un usuario de la sala",
|
||||
"Audio": "Audio"
|
||||
"unmuted": "Desmuteado",
|
||||
"Unpin": "Quitar estado fijado",
|
||||
"Unread": "Marcar como no leído",
|
||||
"unread_messages": "marcar como no leído",
|
||||
"Unread_on_top": "Mensajes no leídos en la parte superior",
|
||||
"Unstar": "Quitar destacado",
|
||||
"Updating": "Actualizando...",
|
||||
"Uploading": "Subiendo",
|
||||
"User_has_been_key": "El usuario ha sido {{key}}",
|
||||
"User_sent_an_attachment": "{{user}} envío un adjunto",
|
||||
"Username": "Nombre de usuario",
|
||||
"Username_or_email": "Nombre de usuario o email",
|
||||
"Users": "Usuarios",
|
||||
"Version_no": "Versión: {{version}}",
|
||||
"View_Original": "Ver original",
|
||||
"Websocket_disabled": "Websocket está deshabilitado para este servidor.\n{{contact}}",
|
||||
"Whats_the_password_for_your_certificate": "¿Cuál es la contraseña de tu certificado?",
|
||||
"Without_Servers": "Sin servidores",
|
||||
"Yes_action_it": "Sí, ¡{{action}}!",
|
||||
"Yesterday": "Ayer",
|
||||
"You": "Tú",
|
||||
"you": "tú",
|
||||
"You_are_in_preview_mode": "Estás en modo vista previa",
|
||||
"You_can_search_using_RegExp_eg": "Puedes usar expresiones regulares. Por ejemplo, `/^text$/i`",
|
||||
"You_colon": "Tú: ",
|
||||
"You_need_to_access_at_least_one_RocketChat_server_to_share_something": "Necesita acceder al menos a un servidor Rocket.Chat para compartir algo.",
|
||||
"you_were_mentioned": "has sido mencionado",
|
||||
"You_will_not_be_able_to_recover_this_message": "¡No podrás recuperar este mensaje!",
|
||||
"Your_certificate": "Tu certificado"
|
||||
}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
File diff suppressed because it is too large
Load Diff
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
File diff suppressed because it is too large
Load Diff
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1,84 +1,75 @@
|
|||
{
|
||||
"__count__empty_rooms_will_be_removed_automatically": "{{count}} stanze vuote verranno eliminate.",
|
||||
"__count__empty_room_will_be_removed_automatically": "{{count}} stanza vuota verrà eliminata.",
|
||||
"__count__empty_rooms_will_be_removed_automatically": "{{count}} stanze vuote verranno eliminate.",
|
||||
"1_person_reacted": "1 persona ha reagito",
|
||||
"error-action-not-allowed": "{{action}} non autorizzata",
|
||||
"error-avatar-invalid-url": "URL avatar non valido: {{url}}",
|
||||
"error-duplicate-channel-name": "Esiste già un canale con nome {{room_name}}",
|
||||
"error-email-send-failed": "Errore nel tentativo di invio e-mail: {{message}}",
|
||||
"error-save-image": "Errore nel salvataggio dell'immagine",
|
||||
"error-save-video": "Errore nel salvataggio del video",
|
||||
"error-file-too-large": "File troppo grande",
|
||||
"error-not-permission-to-upload-file": "Non hai l'autorizzazione per caricare file",
|
||||
"error-invalid-email": "E-mail {{email}} non valida",
|
||||
"error-invalid-file-type": "Tipo di file non valido",
|
||||
"error-invalid-password": "Password non corretta",
|
||||
"error-invalid-room-name": "{{room_name}} non è un nome di stanza valido",
|
||||
"error-not-allowed": "Non permesso",
|
||||
"error-too-many-requests": "Errore, troppe richieste effettuate. Rallenta. Devi attendere {{seconds}} secondi prima di riprovare.",
|
||||
"error-you-are-last-owner": "Sei l'ultimo proprietario rimasto. Imposta un nuovo proprietario prima di lasciare la stanza.",
|
||||
"A_new_owner_will_be_assigned_automatically_to__count__rooms": "Un nuovo proprietario verrà assegnato automaticamente a {{count}} stanze.",
|
||||
"A_meaningful_name_for_the_discussion_room": "Un nome significativo per il canale di discussione",
|
||||
"A_new_owner_will_be_assigned_automatically_to__count__room": "Un nuovo proprietario verrà assegnato automaticamente alla stanza {{count}}.",
|
||||
"A_new_owner_will_be_assigned_automatically_to__count__rooms": "Un nuovo proprietario verrà assegnato automaticamente a {{count}} stanze.",
|
||||
"Actions": "Azioni",
|
||||
"Activity": "Attività",
|
||||
"Add_Server": "Aggiungi server",
|
||||
"Add_server": "Aggiungi server",
|
||||
"Add_users": "Aggiungi utenti",
|
||||
"Admin_Panel": "Amministrazione",
|
||||
"After_seconds_set_by_admin": "Dopo {{seconds}} secondi (impostati dall'admin)",
|
||||
"Agent": "Agente",
|
||||
"Alert": "Avviso",
|
||||
"alert": "avviso",
|
||||
"alerts": "avvisi",
|
||||
"All_users_in_the_channel_can_write_new_messages": "Tutti gli utenti nel canale possono scrivere messaggi",
|
||||
"All_users_in_the_team_can_write_new_messages": "Tutti gli utenti nel team possono scrivere nuovi messaggi",
|
||||
"A_meaningful_name_for_the_discussion_room": "Un nome significativo per il canale di discussione",
|
||||
"All": "Tutti",
|
||||
"All_Messages": "Tutti i messaggi",
|
||||
"All_users_in_the_channel_can_write_new_messages": "Tutti gli utenti nel canale possono scrivere messaggi",
|
||||
"All_users_in_the_team_can_write_new_messages": "Tutti gli utenti nel team possono scrivere nuovi messaggi",
|
||||
"Allow_Reactions": "Permetti reazioni",
|
||||
"and": "e",
|
||||
"announcement": "annuncio",
|
||||
"and_N_more": "e altri {{count}}",
|
||||
"Announcement": "Annuncio",
|
||||
"announcement": "annuncio",
|
||||
"Apply_Your_Certificate": "Applica il tuo certificato",
|
||||
"ARCHIVE": "ARCHIVIO",
|
||||
"archive": "archivio",
|
||||
"are_typing": "stanno scrivendo",
|
||||
"Are_you_sure_question_mark": "Sei sicuro?",
|
||||
"Are_you_sure_you_want_to_delete_your_account": "Sicuro di voler eliminare il tuo account?",
|
||||
"Deleting_a_user_will_delete_all_messages": "L'eliminazione di un utente comporta l'eliminazione di tutti i messaggi, le stanze e i team di quell'utente. Questa operazione non può essere annullata.",
|
||||
"Are_you_sure_you_want_to_leave_the_room": "Sei sicuro di voler lasciare la stanza {{room}}?",
|
||||
"Automatic": "Automatico",
|
||||
"Audio": "Audio",
|
||||
"Auto_Translate": "Traduzione automatica",
|
||||
"Automatic": "Automatico",
|
||||
"Avatar_changed_successfully": "Avatar aggiornato correttamente!",
|
||||
"Avatar_Url": "URL avatar",
|
||||
"Away": "Assente",
|
||||
"Black": "Nero",
|
||||
"Broadcast_hint": "Solo gli utenti autorizzati possono scrivere messaggi, ma gli altri utenti saranno in grado di rispondere",
|
||||
"Browser": "Browser",
|
||||
"Busy": "Occupato",
|
||||
"Call_already_ended": "Chiamata già terminata!",
|
||||
"Cancel": "Annulla",
|
||||
"Cancel_editing": "Annulla modifica",
|
||||
"Cancel_recording": "Annulla registrazione",
|
||||
"Cancel": "Annulla",
|
||||
"Certificate_password": "Password certificato",
|
||||
"Change_Language": "Cambia lingua",
|
||||
"Change_language_loading": "Cambiando la lingua.",
|
||||
"changing_avatar": "cambio avatar",
|
||||
"creating_channel": "creo canale",
|
||||
"creating_invite": "creo invito",
|
||||
"Channel_Name": "Nome canale",
|
||||
"Channels": "Canali",
|
||||
"Chats": "Chat",
|
||||
"Chat_closed_by_agent": "Chat chiusa dall'agente",
|
||||
"Chat_started": "Chat avviata",
|
||||
"Call_already_ended": "Chiamata già terminata!",
|
||||
"Chats": "Chat",
|
||||
"Choose": "Scegli",
|
||||
"Choose_file": "Scegli file",
|
||||
"Choose_from_library": "Scegli dalla libreria",
|
||||
"Choose_where_you_want_links_be_opened": "Scegli dove vuoi che vengano aperti i link",
|
||||
"Clear": "Cancella",
|
||||
"Clear_cache": "Cancella la cache locale",
|
||||
"Clear_cache_loading": "Cancellando la cache.",
|
||||
"Clear_cookies_alert": "Vuoi cancellare tutti i cookie?",
|
||||
"Clear_cookies_desc": "Questo cancellerà tutti i coockie di login, permettendoti di accedere con altri account.",
|
||||
"Clear_cookies_yes": "Si, cancella i cookie",
|
||||
"Clear_cookies_no": "No, mantieni i cookie",
|
||||
"Clear_cookies_yes": "Si, cancella i cookie",
|
||||
"Click_to_join": "Clicca per unirti!",
|
||||
"Close": "Chiudi",
|
||||
"Close_emoji_selector": "Chiudi selettore emoji",
|
||||
"Change_language_loading": "Cambiando la lingua.",
|
||||
"Chat_closed_by_agent": "Chat chiusa dall'agente",
|
||||
"Choose": "Scegli",
|
||||
"Choose_from_library": "Scegli dalla libreria",
|
||||
"Choose_file": "Scegli file",
|
||||
"Choose_where_you_want_links_be_opened": "Scegli dove vuoi che vengano aperti i link",
|
||||
"Code_or_password_invalid": "Codice o password non validi",
|
||||
"Conversation_closed": "Conversazione chiusa",
|
||||
"Collaborative": "Collaborativo",
|
||||
"Confirm": "Conferma",
|
||||
"Connect": "Connetti",
|
||||
|
@ -86,78 +77,112 @@
|
|||
"Contact_us": "Contattaci",
|
||||
"Contact_your_server_admin": "Contatta l'amministratore.",
|
||||
"Continue_with": "Continua con",
|
||||
"Conversation": "Conversazione",
|
||||
"Conversation_closed": "Conversazione chiusa",
|
||||
"Copied_to_clipboard": "Copiato negli appunti!",
|
||||
"Copy": "Copia",
|
||||
"Conversation": "Conversazione",
|
||||
"Certificate_password": "Password certificato",
|
||||
"Clear_cache": "Cancella la cache locale",
|
||||
"Clear_cache_loading": "Cancellando la cache.",
|
||||
"Whats_the_password_for_your_certificate": "Qual'è la password del tuo certificato?",
|
||||
"Crash_report_disclaimer": "Non registreremo mai il contenuto delle tue chat. Il crash report contiene solo informazioni necessarie per l'identificazione e la risoluzione dei problemi.",
|
||||
"Create": "Crea",
|
||||
"Create_A_New_Channel": "Crea un nuovo canale",
|
||||
"Create_a_new_workspace": "Crea un nuovo workspace",
|
||||
"Create_account": "Crea un account",
|
||||
"Create_Channel": "Crea canale",
|
||||
"Create_Direct_Messages": "Crea Messaggi Privati",
|
||||
"Create_Discussion": "Crea una Discussione",
|
||||
"Created_snippet": "Snippet creato",
|
||||
"Create_a_new_workspace": "Crea un nuovo workspace",
|
||||
"Create": "Crea",
|
||||
"creating_channel": "creo canale",
|
||||
"creating_invite": "creo invito",
|
||||
"Dark": "Scuro",
|
||||
"Dark_level": "Contrasto",
|
||||
"Default": "Predefinito",
|
||||
"Default_browser": "Browser predefinito",
|
||||
"Delete_Room_Warning": "Eliminare una stanza cancellerà tutti i messaggi in essa contenuti. Questa azione non può essere annullata.",
|
||||
"Department": "Dipartimento",
|
||||
"delete": "elimina",
|
||||
"Delete": "Elimina",
|
||||
"DELETE": "ELIMINA",
|
||||
"Delete": "Elimina",
|
||||
"delete": "elimina",
|
||||
"Delete_Account": "Elimina account",
|
||||
"Delete_Account_confirm": "Sì, Elimina",
|
||||
"move": "spostare",
|
||||
"Delete_Room_Warning": "Eliminare una stanza cancellerà tutti i messaggi in essa contenuti. Questa azione non può essere annullata.",
|
||||
"Deleting_a_user_will_delete_all_messages": "L'eliminazione di un utente comporta l'eliminazione di tutti i messaggi, le stanze e i team di quell'utente. Questa operazione non può essere annullata.",
|
||||
"deleting_room": "cancellazione stanza",
|
||||
"description": "descrizione",
|
||||
"Department": "Dipartimento",
|
||||
"Description": "Descrizione",
|
||||
"Desktop_Notifications": "Notifiche Desktop",
|
||||
"description": "descrizione",
|
||||
"Desktop_Alert_info": "Queste notifiche vengono inviate sul client desktop",
|
||||
"Directory": "Rubrica",
|
||||
"Desktop_Notifications": "Notifiche Desktop",
|
||||
"Direct_message": "Messaggio diretto",
|
||||
"Direct_message_someone": "Invia un messaggio diretto",
|
||||
"Direct_Messages": "Messaggi diretti",
|
||||
"Discussions": "Discussioni",
|
||||
"Directory": "Rubrica",
|
||||
"Discussion_Desc": "Aiuta a mantenere una panoramica di ciò che sta succedendo! Creando una discussione verrà creato un sotto-canale di quello selezionato ed entrambi saranno collegati",
|
||||
"Discussion_name": "Nome della discussione",
|
||||
"Dont_Have_An_Account": "Non hai un account?",
|
||||
"Do_you_have_an_account": "Hai un account?",
|
||||
"Discussions": "Discussioni",
|
||||
"Displays_action_text": "Mostra il testo di azione",
|
||||
"Do_you_have_a_certificate": "Hai un certificato?",
|
||||
"Do_you_have_an_account": "Hai un account?",
|
||||
"Do_you_really_want_to_key_this_room_question_mark": "Sei sicuro di voler {{key}} questa stanza?",
|
||||
"Dont_activate": "Non attivare ora",
|
||||
"Dont_Have_An_Account": "Non hai un account?",
|
||||
"E2E_Encryption": "Crittografia E2E",
|
||||
"E2E_encryption_change_password_confirmation": "Si, cambiala",
|
||||
"E2E_encryption_change_password_description": "Ora puoi creare gruppi e messaggi privati crittografati. Potrai, inoltre, crittografare i tuoi gruppi e messaggi privati esistenti. \nQuesta è crittografia end-to-end, la chiave per codificare/decodificare i tuoi messaggi non verrà salvata sul server. Per questo motivo devi salvarla in un luogo sicuro. Ti verrà richiesto di inserirla sugli altri dispositivi sui quali vuoi usare la crittografia e2e.",
|
||||
"E2E_encryption_change_password_error": "Si è verificato un errore durante il cambio della password della chiave E2E!",
|
||||
"E2E_encryption_change_password_message": "Assicurati di salvarla in un posto sicuro.",
|
||||
"E2E_encryption_change_password_success": "La password della chiave E2E è stata cambiata con successo!",
|
||||
"E2E_encryption_change_password_title": "Cambia la password di cifratura",
|
||||
"E2E_encryption_reset_button": "Ripristina",
|
||||
"E2E_encryption_reset_confirmation": "Si, resettala",
|
||||
"E2E_encryption_reset_description": "Questa opzione rimuoverà la tua chiave E2E corrente e sarai disconnesso. \nAl prossimo login, Rocket.Chat genererà una nuova chiave e ripristinerà l'accesso a tutte le stanze crittografate con uno o più membri online. \nA causa della natura della crittografia E2E, Rocket.Chat non sarà in grado di ripristinare l'accesso alle stanze senza membri online.",
|
||||
"E2E_encryption_reset_error": "Si è verificato un errore durante il ripristino della chiave E2E!",
|
||||
"E2E_encryption_reset_message": "Stai per essere disconnesso.",
|
||||
"E2E_encryption_reset_title": "Ripristina la Chiave E2E",
|
||||
"E2E_How_It_Works_info1": "Ora puoi creare gruppi e messaggi privati crittografati. Puoi anche crittografare quelli già esistenti.",
|
||||
"E2E_How_It_Works_info2": "Questa è *crittografia end-to-end*, quindi la chiave per cifrare/decifrare i messaggi non verrà salvata sul server. Per questo motivo *devi salvare questa password in un luogo sicuro* dove poterla recuperare in seguito qualora necessario.",
|
||||
"E2E_How_It_Works_info3": "Procedendo verrà generata automaticamente una password E2E.",
|
||||
"E2E_How_It_Works_info4": "Puoi impostare una nuova password per la chiave di cifratura in qualsiasi momento da uno dei browser dove hai inserito la password E2E esistente.",
|
||||
"Edit": "Modifica",
|
||||
"Edit_Status": "Modifica Stato",
|
||||
"Edit_Invite": "Modifica invito",
|
||||
"End_to_end_encrypted_room": "Stanza crittografata end to end",
|
||||
"Edit_Status": "Modifica Stato",
|
||||
"Email": "E-mail",
|
||||
"Email_Notification_Mode_All": "Ogni Menzione/Messaggio Privato",
|
||||
"Email_Notification_Mode_Disabled": "Disabilitato",
|
||||
"Email": "E-mail",
|
||||
"Enable_Auto_Translate": "Abilita traduzione automatica",
|
||||
"Encrypted": "Crittografato",
|
||||
"Encrypted_message": "Messaggio crittografato",
|
||||
"Encryption_error_desc": "Non è stato possibile importare la tua chiave di cifratura.",
|
||||
"Encryption_error_title": "La tua password di cifratura sembra errata",
|
||||
"End_to_end_encrypted_room": "Stanza crittografata end to end",
|
||||
"Enter_workspace_URL": "Inserisci la url del workspace",
|
||||
"Enter_Your_E2E_Password": "Inserisci la tua password E2E",
|
||||
"Enter_Your_Encryption_Password_desc1": "Potrai così accedere ai tuoi gruppi privati e messaggi privati crittografati.",
|
||||
"Enter_Your_Encryption_Password_desc2": "Devi inserire la password per cifrare/decifrare i messaggi ovunque usi la chat.",
|
||||
"Encryption_error_title": "La tua password di cifratura sembra errata",
|
||||
"Encryption_error_desc": "Non è stato possibile importare la tua chiave di cifratura.",
|
||||
"Error_uploading": "Errore nel caricamento di",
|
||||
"error-action-not-allowed": "{{action}} non autorizzata",
|
||||
"error-avatar-invalid-url": "URL avatar non valido: {{url}}",
|
||||
"error-duplicate-channel-name": "Esiste già un canale con nome {{room_name}}",
|
||||
"error-email-send-failed": "Errore nel tentativo di invio e-mail: {{message}}",
|
||||
"error-file-too-large": "File troppo grande",
|
||||
"error-invalid-email": "E-mail {{email}} non valida",
|
||||
"error-invalid-file-type": "Tipo di file non valido",
|
||||
"error-invalid-password": "Password non corretta",
|
||||
"error-invalid-room-name": "{{room_name}} non è un nome di stanza valido",
|
||||
"error-not-allowed": "Non permesso",
|
||||
"error-not-permission-to-upload-file": "Non hai l'autorizzazione per caricare file",
|
||||
"error-save-image": "Errore nel salvataggio dell'immagine",
|
||||
"error-save-video": "Errore nel salvataggio del video",
|
||||
"error-too-many-requests": "Errore, troppe richieste effettuate. Rallenta. Devi attendere {{seconds}} secondi prima di riprovare.",
|
||||
"error-you-are-last-owner": "Sei l'ultimo proprietario rimasto. Imposta un nuovo proprietario prima di lasciare la stanza.",
|
||||
"Everyone_can_access_this_channel": "Tutti hanno accesso a questo canale",
|
||||
"Everyone_can_access_this_team": "Tutti hanno accesso a questo team",
|
||||
"Error_uploading": "Errore nel caricamento di",
|
||||
"Expiration_Days": "Scadenza (giorni)",
|
||||
"Favorites": "Preferiti",
|
||||
"Files": "File",
|
||||
"File_description": "Descrizione file",
|
||||
"Files": "File",
|
||||
"Finish_recording": "Termina registrazione",
|
||||
"Following": "Seguiti",
|
||||
"Following_thread": "Thread seguito",
|
||||
"For_your_security_you_must_enter_your_current_password_to_continue": "Per garantire la sicurezza del tuo account, inserisci la password per continuare.",
|
||||
"Forgot_password_If_this_email_is_registered": "Se questa e-mail è registrata, manderemo istruzioni su come resettare la tua password. Se non ricevi nulla, torna qui e riprova di nuovo.",
|
||||
"Forgot_password": "Password dimenticata",
|
||||
"Forgot_password_If_this_email_is_registered": "Se questa e-mail è registrata, manderemo istruzioni su come resettare la tua password. Se non ricevi nulla, torna qui e riprova di nuovo.",
|
||||
"Forward": "Inoltra",
|
||||
"Forward_Chat": "Inoltra Chat",
|
||||
"Forward_to_department": "Inoltra a dipartimento",
|
||||
|
@ -166,110 +191,151 @@
|
|||
"Generate_New_Link": "Genera nuovo link",
|
||||
"Get_link": "Ottieni link",
|
||||
"Has_left_the_team": "Ha lasciato il team",
|
||||
"Hide_room": "Nascondi il canale",
|
||||
"Hide_System_Messages": "Nascondi messaggi di sistema",
|
||||
"Hide_type_messages": "Nascondi messaggi di \"{{type}}\"",
|
||||
"How_It_Works": "Come funziona",
|
||||
"Message_HideType_uj": "Ingresso Utente",
|
||||
"Message_HideType_ul": "Uscita Utente",
|
||||
"Message_HideType_ru": "Rimozione Utente",
|
||||
"Message_HideType_au": "Aggiunta Utente",
|
||||
"Message_HideType_mute_unmute": "Microfono Utente attivato / disattivato",
|
||||
"Message_HideType_r": "Nome Stanza cambiato",
|
||||
"Message_HideType_ut": "Ingresso Utente in Conversazione",
|
||||
"Message_HideType_wm": "Benvenuto",
|
||||
"Message_HideType_rm": "Rimozione Messaggio",
|
||||
"Message_HideType_subscription_role_added": "Creazione ruolo",
|
||||
"Message_HideType_subscription_role_removed": "Rimozione ruolo",
|
||||
"Message_HideType_room_archived": "Stanza archiviata",
|
||||
"Message_HideType_room_unarchived": "Stanza ripristinata dall'archivio",
|
||||
"I_Saved_My_E2E_Password": "Ho salvato la mia Password E2E",
|
||||
"IP": "Indirizzo IP",
|
||||
"Ignore": "Ignora",
|
||||
"In_app": "In-app",
|
||||
"In_App_And_Desktop": "In-app e Desktop",
|
||||
"In_App_and_Desktop_Alert_info": "Mostra una notifica in cima allo schermo quando l'app è aperta, e mostra una notifica sul desktop",
|
||||
"Invisible": "Invisibile",
|
||||
"is_typing": "sta scrivendo",
|
||||
"Insert_Join_Code": "Inserisci il codice d'accesso",
|
||||
"Invalid_or_expired_invite_token": "Token di invito non valido o scaduto",
|
||||
"Invalid_server_version": "Il server a cui stai cercando di connetterti sta utilizzando una versione non più supportata dall'app: {{currentVersion}}.\n\nVersione minima richiesta: {{minVersion}}",
|
||||
"Invisible": "Invisibile",
|
||||
"Invite_Link": "Link di invito",
|
||||
"Invite_user_to_join_channel": "Invita un utente ad entrare in questo canale",
|
||||
"Invite_user_to_join_channel_all_from": "Invita tutti gli utenti da [#channell] per unirsi a questo canale",
|
||||
"Invite_user_to_join_channel_all_to": "Invita tutti gli utenti di questo canale a unirsi [#channel]",
|
||||
"Invite_users": "Invita utenti",
|
||||
"IP": "Indirizzo IP",
|
||||
"is_typing": "sta scrivendo",
|
||||
"Join": "Entra",
|
||||
"Join_Code": "Codice d'accesso",
|
||||
"Insert_Join_Code": "Inserisci il codice d'accesso",
|
||||
"Join_our_open_workspace": "Unisciti al nostro workspace",
|
||||
"Join_the_given_channel": "Entra nel canale specificato",
|
||||
"Just_invited_people_can_access_this_channel": "Solo le persone invitate possono accedere a questo canale",
|
||||
"Just_invited_people_can_access_this_team": "Solo le persone invitate possono accedere a questo team",
|
||||
"Language": "Lingua",
|
||||
"last_message": "ultimo messaggio",
|
||||
"leaving_room": "abbandonando stanza",
|
||||
"Leave": "Lasciare il canale",
|
||||
"leave": "abbandona",
|
||||
"Leave_the_current_channel": "Abbandona il canale corrente",
|
||||
"leaving_room": "abbandonando stanza",
|
||||
"Legal": "Informazioni",
|
||||
"Light": "Chiaro",
|
||||
"License": "Licenza",
|
||||
"Light": "Chiaro",
|
||||
"Local_authentication_auto_lock_1800": "Dopo 30 minuti",
|
||||
"Local_authentication_auto_lock_300": "Dopo 5 minuti",
|
||||
"Local_authentication_auto_lock_3600": "Dopo 1 ora",
|
||||
"Local_authentication_auto_lock_60": "Dopo 1 minuto",
|
||||
"Local_authentication_auto_lock_900": "Dopo 15 minuti",
|
||||
"Local_authentication_biometry_fallback": "Usa passcode",
|
||||
"Local_authentication_biometry_title": "Autenticazione",
|
||||
"Local_authentication_change_passcode": "Cambia Passcode",
|
||||
"Local_authentication_facial_recognition": "riconoscimento facciale",
|
||||
"Local_authentication_fingerprint": "impronta digitale",
|
||||
"Local_authentication_info": "Nota: se dimentichi il Passcode, dovrai cancellare e installare nuovamente l'app.",
|
||||
"Local_authentication_unlock_option": "Sblocca con Passcode",
|
||||
"Local_authentication_unlock_with_label": "Sblocca con {{label}}",
|
||||
"Log_analytics_events": "Invia statistiche anonime",
|
||||
"Logged_out_by_server": "Sei stato disconnesso dal server. Esegui nuovamente l'accesso.",
|
||||
"Logged_out_of_other_clients_successfully": "Disconnesso dalle altre postazioni con successo",
|
||||
"Logging_out": "Disconnettendo.",
|
||||
"Login": "Accedi",
|
||||
"Login_error": "Le tue credenziali sono state rifiutate! Prova di nuovo.",
|
||||
"Logging_out": "Disconnettendo.",
|
||||
"Logout": "Disconnetti",
|
||||
"Max_number_of_uses": "Max numero di utilizzi",
|
||||
"Logout_failed": "Disconnessione fallita!",
|
||||
"Logout_from_other_logged_in_locations": "Disconnetti da altre postazioni",
|
||||
"Mark_unread": "Segna come non letto",
|
||||
"Max_number_of_users_allowed_is_number": "Il numero massimo di utenti ammessi è {{maxUsers}}",
|
||||
"members": "membri",
|
||||
"Max_number_of_uses": "Max numero di utilizzi",
|
||||
"Members": "Membri",
|
||||
"members": "membri",
|
||||
"Mentions": "Menzioni",
|
||||
"Message": "Messaggio",
|
||||
"message": "messaggio",
|
||||
"Message_actions": "Azioni messaggio",
|
||||
"Message_composer_Send_to_channel": "Invia sul canale",
|
||||
"Message_HideType_au": "Aggiunta Utente",
|
||||
"Message_HideType_mute_unmute": "Microfono Utente attivato / disattivato",
|
||||
"Message_HideType_r": "Nome Stanza cambiato",
|
||||
"Message_HideType_rm": "Rimozione Messaggio",
|
||||
"Message_HideType_room_archived": "Stanza archiviata",
|
||||
"Message_HideType_room_unarchived": "Stanza ripristinata dall'archivio",
|
||||
"Message_HideType_ru": "Rimozione Utente",
|
||||
"Message_HideType_subscription_role_added": "Creazione ruolo",
|
||||
"Message_HideType_subscription_role_removed": "Rimozione ruolo",
|
||||
"Message_HideType_uj": "Ingresso Utente",
|
||||
"Message_HideType_ul": "Uscita Utente",
|
||||
"Message_HideType_ut": "Ingresso Utente in Conversazione",
|
||||
"Message_HideType_wm": "Benvenuto",
|
||||
"Message_Ignored": "Messaggio ignorato. Tocca per visualizzarlo.",
|
||||
"Message_removed": "Messaggio rimosso",
|
||||
"Message_Reported": "Messaggio segnalato",
|
||||
"Message_starred": "Messaggio importante",
|
||||
"Message_unstarred": "Messaggio non importante",
|
||||
"message": "messaggio",
|
||||
"messages": "messaggi",
|
||||
"Message": "Messaggio",
|
||||
"Message_Reported": "Messaggio segnalato",
|
||||
"move": "spostare",
|
||||
"Mute": "Silenzia",
|
||||
"Mute_someone_in_room": "Silenzia qualcuno nel canale",
|
||||
"muted": "silenziato",
|
||||
"N_channels": "{{n}} canali",
|
||||
"N_people_reacted": "{{n}} persone hanno reagito",
|
||||
"N_users": "{{n}} utenti",
|
||||
"N_channels": "{{n}} canali",
|
||||
"Name": "Nome",
|
||||
"Never": "Mai",
|
||||
"New_Message": "Nuovo messaggio",
|
||||
"New_Password": "Nuova password",
|
||||
"Next": "Successivo",
|
||||
"No_available_agents_to_transfer": "Nessun agente disponibile a cui trasferire",
|
||||
"No_files": "Nessun file",
|
||||
"No_label_provided": "Nessun {{label}} fornito.",
|
||||
"No_limit": "Nessun limite",
|
||||
"No_mentioned_messages": "Nessun messaggio menzionato",
|
||||
"No_pinned_messages": "Nessun messaggio attaccato",
|
||||
"No_results_found": "Nessun risultato",
|
||||
"No_starred_messages": "Nessun messaggio preferito",
|
||||
"No_label_provided": "Nessun {{label}} fornito.",
|
||||
"No_Message": "Nessun messaggio",
|
||||
"No_messages_yet": "Non ci sono ancora messaggi",
|
||||
"No_pinned_messages": "Nessun messaggio attaccato",
|
||||
"No_Reactions": "Nessuna reazione",
|
||||
"No_Read_Receipts": "Nessuna conferma di lettura",
|
||||
"No_results_found": "Nessun risultato",
|
||||
"No_starred_messages": "Nessun messaggio preferito",
|
||||
"No_threads": "Non ci sono thread",
|
||||
"No_threads_following": "Non stai seguendo alcun thread",
|
||||
"No_threads_unread": "Non ci sono thread non letti",
|
||||
"Not_RC_Server": "Questo non è un server di Rocket.Chat.\n{{contact}}",
|
||||
"Nothing": "Niente",
|
||||
"Nothing_to_save": "Niente da salvare!",
|
||||
"Notification_Preferences": "Impostazioni notifiche",
|
||||
"Notifications": "Notifiche",
|
||||
"Notify_active_in_this_room": "Notifica solo gli utenti attivi in questa stanza",
|
||||
"Notify_all_in_this_room": "Notifica tutti gli utenti in questa stanza",
|
||||
"Notifications": "Notifiche",
|
||||
"Notification_Preferences": "Impostazioni notifiche",
|
||||
"No_available_agents_to_transfer": "Nessun agente disponibile a cui trasferire",
|
||||
"Oops": "Oops!",
|
||||
"Omnichannel": "Omnichannel",
|
||||
"Omnichannel_enable_alert": "Non sei ancora su Onmichannel. Vuoi attivarlo?",
|
||||
"Onboarding_subtitle": "Oltre la collaborazione di gruppo",
|
||||
"Onboarding_join_open_description": "Unisciti al nostro workspace per parlare con il team e la community di Rocket.Chat.",
|
||||
"Onboarding_agree_terms": "Procedendo, accetti Rocket.Chat",
|
||||
"Onboarding_join_open_description": "Unisciti al nostro workspace per parlare con il team e la community di Rocket.Chat.",
|
||||
"Onboarding_less_options": "Meno opzioni",
|
||||
"Onboarding_more_options": "Più opzioni",
|
||||
"Onboarding_subtitle": "Oltre la collaborazione di gruppo",
|
||||
"Online": "Online",
|
||||
"Only_authorized_users_can_write_new_messages": "Solo gli utenti autorizzati possono scrivere nuovi messaggi",
|
||||
"Oops": "Oops!",
|
||||
"Open_emoji_selector": "Apri selettore emoji",
|
||||
"Open_Livechats": "Chat in corso",
|
||||
"Open_your_authentication_app_and_enter_the_code": "Apri l'app di autenticazione e inserisci il codice.",
|
||||
"OR": "O",
|
||||
"OS": "SO",
|
||||
"Overwrites_the_server_configuration_and_use_room_config": "Sovrascrive la configurazione del server in favore di quella della stanza",
|
||||
"Password": "Password",
|
||||
"Parent_channel_or_group": "Gruppo o canale originario",
|
||||
"Passcode_app_locked_subtitle": "Riprova tra {{timeLeft}} secondi",
|
||||
"Passcode_app_locked_title": "App bloccata",
|
||||
"Passcode_choose_confirm_title": "Conferma il tuo nuovo passcode",
|
||||
"Passcode_choose_error": "I passcode non corrispondono. Riprova.",
|
||||
"Passcode_choose_force_set": "Passcode richiesto dall'admin",
|
||||
"Passcode_choose_title": "Scegli il tuo nuovo passcode",
|
||||
"Passcode_enter_title": "Inserisci il passcode",
|
||||
"Password": "Password",
|
||||
"Permalink_copied_to_clipboard": "Permalink copiato negli appunti!",
|
||||
"Phone": "Telefono",
|
||||
"Pin": "Appunta",
|
||||
|
@ -281,245 +347,90 @@
|
|||
"Privacy_Policy": " Privacy Policy",
|
||||
"Private": "Privato",
|
||||
"Processing": "Elaborazione...",
|
||||
"Profile_saved_successfully": "Profilo salvato correttamente!",
|
||||
"Profile": "Profilo",
|
||||
"Profile_saved_successfully": "Profilo salvato correttamente!",
|
||||
"Public": "Pubblico",
|
||||
"Push_Notifications": "Notifiche Push",
|
||||
"Push_Notifications_Alert_Info": "Queste notifiche ti vengono recapitate quando l'app non è aperta",
|
||||
"Queued_chats": "Chat in coda",
|
||||
"Quote": "Cita",
|
||||
"Reactions_are_disabled": "Le reazioni sono disabilitate",
|
||||
"Reactions_are_enabled": "Le reazioni sono abilitate",
|
||||
"Read_External_Permission_Message": "Rocket.Chat deve accedere alle foto, media, e documenti sul tuo dispositivo",
|
||||
"Read_External_Permission": "Permesso di Lettura della Memoria",
|
||||
"Read_External_Permission_Message": "Rocket.Chat deve accedere alle foto, media, e documenti sul tuo dispositivo",
|
||||
"Read_Only": "Sola lettura",
|
||||
"Read_Receipt": "Conferma di lettura",
|
||||
"Receive_Group_Mentions": "Ricevi menzioni di gruppo",
|
||||
"Receive_Group_Mentions_Info": "Ricevi menzioni @all e @here",
|
||||
"Register": "Registrati",
|
||||
"replies": "risposte",
|
||||
"reply": "risposta",
|
||||
"Reply": "Rispondi",
|
||||
"Report": "Segnala",
|
||||
"Receive_Notification": "Ricevi notifiche",
|
||||
"Receive_notifications_from": "Ricevi notifiche da {{name}}",
|
||||
"Register": "Registrati",
|
||||
"Registration_Succeeded": "Registrazione completata!",
|
||||
"Remove": "Rimuovi",
|
||||
"Remove_from_room": "Rimuovi dalla stanza",
|
||||
"Remove_someone_from_room": "Rimuovi qualcuno dal canale",
|
||||
"replies": "risposte",
|
||||
"Reply": "Rispondi",
|
||||
"reply": "risposta",
|
||||
"Reply_in_Thread": "Rispondi nella discussione",
|
||||
"Report": "Segnala",
|
||||
"Resend": "Invia di nuovo",
|
||||
"RESET": "RIPRISTINA",
|
||||
"Reset_password": "Ripristina password",
|
||||
"resetting_password": "ripristinando password",
|
||||
"RESET": "RIPRISTINA",
|
||||
"Review_app_title": "Ti piace questa app?",
|
||||
"Review_app_desc": "Dacci 5 stesse su {{store}}",
|
||||
"Review_app_yes": "Certo!",
|
||||
"Review_app_no": "No",
|
||||
"Review_app_later": "In seguito",
|
||||
"Review_app_no": "No",
|
||||
"Review_app_title": "Ti piace questa app?",
|
||||
"Review_app_unable_store": "Impossibile aprire {{store}}",
|
||||
"Review_app_yes": "Certo!",
|
||||
"Review_this_app": "Recensisci questa app",
|
||||
"Remove": "Rimuovi",
|
||||
"Roles": "Ruoli",
|
||||
"Room_Info_Edit": "Modifica informazioni stanza",
|
||||
"Room_Info": "Informazioni stanza",
|
||||
"Room_Info_Edit": "Modifica informazioni stanza",
|
||||
"SAVE": "SALVA",
|
||||
"Save_Changes": "Salva cambiamenti",
|
||||
"Save": "Salva",
|
||||
"Save_Changes": "Salva cambiamenti",
|
||||
"Save_Your_E2E_Password": "Salva la tua Password E2E",
|
||||
"Save_Your_Encryption_Password": "Salva la tua Password di cifratura",
|
||||
"Save_Your_Encryption_Password_info": "Nota: se dovessi perdere la tua password, non c'è alcun modo per recuperarla e perderesti l'accesso ai tuoi messaggi.",
|
||||
"Save_Your_Encryption_Password_warning": "Questa password non è salvata da nessuna parte, conservala con cura.",
|
||||
"Saved": "Salvato",
|
||||
"saved_to_gallery": "Salvato in Galleria",
|
||||
"saving_preferences": "salvataggio impostazioni",
|
||||
"saving_profile": "salvataggio profilo",
|
||||
"saving_settings": "salvataggio impostazioni",
|
||||
"saved_to_gallery": "Salvato in Galleria",
|
||||
"Save_Your_E2E_Password": "Salva la tua Password E2E",
|
||||
"Save_Your_Encryption_Password": "Salva la tua Password di cifratura",
|
||||
"Save_Your_Encryption_Password_warning": "Questa password non è salvata da nessuna parte, conservala con cura.",
|
||||
"Save_Your_Encryption_Password_info": "Nota: se dovessi perdere la tua password, non c'è alcun modo per recuperarla e perderesti l'accesso ai tuoi messaggi.",
|
||||
"Search_Messages": "Cerca messaggi",
|
||||
"Screen_lock": "Blocco schermo",
|
||||
"Search": "Cerca",
|
||||
"Search_by": "Cerca per",
|
||||
"Search_global_users": "Cerca utenti globali",
|
||||
"Search_global_users_description": "Se attivi questa opzione, puoi cercare qualsiasi utente da altre aziende o server.",
|
||||
"Search_Messages": "Cerca messaggi",
|
||||
"Search_messages": "Cerca messaggi",
|
||||
"Security_and_privacy": "Sicurezza e privacy",
|
||||
"Select_Server": "Seleziona server",
|
||||
"Select_Users": "Seleziona utenti",
|
||||
"Select_a_Channel": "Seleziona un Canale",
|
||||
"Select_a_Department": "Seleziona un Dipartimento",
|
||||
"Select_an_option": "Seleziona un' opzione",
|
||||
"Select_a_User": "Seleziona un Utente",
|
||||
"Select_an_option": "Seleziona un' opzione",
|
||||
"Select_Server": "Seleziona server",
|
||||
"Select_Users": "Seleziona utenti",
|
||||
"Send": "Invia",
|
||||
"Send_audio_message": "Invia messaggio audio",
|
||||
"Send_crash_report": "Invia report sui crash",
|
||||
"Send_message": "Invia messaggio",
|
||||
"Send_me_the_code_again": "Inviami nuovamente il codice",
|
||||
"Send_to": "Invia a...",
|
||||
"Sending_to": "Invio a",
|
||||
"Server": "Server",
|
||||
"Server_version": "Versione server: {{version}}",
|
||||
"Set_username_subtitle": "Il nome utente viene utilizzato per permettere ad altri di menzionarti nei messaggi",
|
||||
"Status_saved_successfully": "Stato salvato correttamente!",
|
||||
"Settings": "Impostazioni",
|
||||
"Settings_succesfully_changed": "Impostazioni modificate correttamente!",
|
||||
"Share": "Condividi",
|
||||
"Share_Link": "Condividi link",
|
||||
"Share_this_app": "Condividi questa app",
|
||||
"Show_more": "Mostra altri",
|
||||
"Show_the_keyboard_shortcut_list": "Mostra l'elenco delle scorciatoie per la tastiera",
|
||||
"Sign_Up": "Registrati",
|
||||
"Sound": "Suono",
|
||||
"Star": "Aggiungi ai preferiti",
|
||||
"Starred": "Preferiti",
|
||||
"Start_a_Discussion": "Avvia una Discussione",
|
||||
"Started_discussion": "Discussione iniziata:",
|
||||
"Started_call": "Chiamata iniziata da {{userBy}}",
|
||||
"Table": "Tabella",
|
||||
"Tags": "Tag",
|
||||
"Take_a_photo": "Scatta una foto",
|
||||
"Take_a_video": "Registra un video",
|
||||
"Take_it": "Prendi!",
|
||||
"Terms_of_Service": " Termini di servizio ",
|
||||
"Theme": "Tema",
|
||||
"There_was_an_error_while_action": "Si è verificato un errore nel {{action}}!",
|
||||
"This_room_is_blocked": "Questa stanza è bloccata",
|
||||
"This_room_is_read_only": "Questa stanza è in sola lettura",
|
||||
"Threads": "Threads",
|
||||
"Thread": "Thread",
|
||||
"Timezone": "Fuso orario",
|
||||
"topic": "argomento",
|
||||
"Topic": "Argomento",
|
||||
"Translate": "Traduci",
|
||||
"Try_again": "Riprova",
|
||||
"Two_Factor_Authentication": "Autenticazione a due fattori",
|
||||
"unarchive": "rimuovi dall'archivio",
|
||||
"UNARCHIVE": "RIMUOVI DALL'ARCHIVIO",
|
||||
"Unfollowed_thread": "Non segui più il thread",
|
||||
"Unmute": "Attiva notifiche",
|
||||
"unmuted": "notifiche attivate",
|
||||
"Unpin": "Stacca",
|
||||
"unread_messages": "non letti",
|
||||
"Unread": "Non letto",
|
||||
"Unread_on_top": "Non letti sopra",
|
||||
"Unstar": "Rimuovi dai preferiti",
|
||||
"Updating": "Aggiornamento...",
|
||||
"Uploading": "Caricamento",
|
||||
"User": "Utente",
|
||||
"Users": "Utenti",
|
||||
"User_Info": "Informazioni utente",
|
||||
"User_has_been_key": "Utente {{key}}",
|
||||
"User_sent_an_attachment": "{{user}} ha inviato un allegato",
|
||||
"Username": "Username",
|
||||
"Username_or_email": "Username o email",
|
||||
"Uses_server_configuration": "Usa la configurazione del server",
|
||||
"Registration_Succeeded": "Registrazione completata!",
|
||||
"Verify_email_desc": "Ti abbiamo inviato una e-mail per confermare la tua registrazione. Se non la ricevi, ritorna qui e riprova",
|
||||
"Verify_your_email_for_the_code_we_sent": "Controlla l'e-mail con il codice che ti abbiamo inviato",
|
||||
"View_Original": "Mostra originale",
|
||||
"Waiting_for_network": "In attesa di connessione ...",
|
||||
"Websocket_disabled": "Websocket disabilitata per questo server.\n{{contact}}",
|
||||
"What_are_you_doing_right_now": "Cosa stai facendo in questo momento?",
|
||||
"Without_Servers": "Senza server",
|
||||
"Workspaces": "Workspace",
|
||||
"Would_you_like_to_return_the_inquiry": "Vorresti ritirare la tua domanda?",
|
||||
"Write_External_Permission_Message": "Rocket.Chat ha bisogno dell'accesso alla galleria per salvare le immagini.",
|
||||
"Write_External_Permission": "Permesso galleria",
|
||||
"Yes": "Si",
|
||||
"Yes_action_it": "Sì, {{action}}!",
|
||||
"Yesterday": "Ieri",
|
||||
"You_are_in_preview_mode": "Sei in modalità anteprima",
|
||||
"You_can_search_using_RegExp_eg": "Puoi usare espressioni regolari. es. `/^testo$/i`",
|
||||
"You_colon": "Tu: ",
|
||||
"you_were_mentioned": "sei stato menzionato",
|
||||
"You_were_removed_from_channel": "Sei stato rimosso da {{channel}}",
|
||||
"you": "tu",
|
||||
"You": "Tu",
|
||||
"Logged_out_by_server": "Sei stato disconnesso dal server. Esegui nuovamente l'accesso.",
|
||||
"You_need_to_access_at_least_one_RocketChat_server_to_share_something": "Devi accedere ad almeno un server Rocket.Chat prima di condividere qualcosa.",
|
||||
"You_need_to_verifiy_your_email_address_to_get_notications": "Devi verificare il tuo indirizzo e-mail per ricevere le notifiche",
|
||||
"Your_certificate": "Il tuo certificato",
|
||||
"Your_invite_link_will_expire_after__usesLeft__uses": "Il tuo link di invito scadrà dopo {{usesLeft}} utilizzi.",
|
||||
"Your_invite_link_will_expire_on__date__or_after__usesLeft__uses": "Il tuo link di invito scadrà il {{date}} oppure dopo {{usesLeft}} utilizzi.",
|
||||
"Your_invite_link_will_expire_on__date__": "Il tuo link di invito scadrà il {{date}}.",
|
||||
"Your_invite_link_will_never_expire": "Il tuo link di invito non scadrà mai.",
|
||||
"Your_workspace": "Il tuo workspace",
|
||||
"Your_password_is": "La tua password è",
|
||||
"Version_no": "Versione: {{version}}",
|
||||
"You_will_not_be_able_to_recover_this_message": "Non sarai in grado di ripristinare questo messaggio!",
|
||||
"You_will_unset_a_certificate_for_this_server": "Rimuoverai un certificato per questo server",
|
||||
"Change_Language": "Cambia lingua",
|
||||
"Crash_report_disclaimer": "Non registreremo mai il contenuto delle tue chat. Il crash report contiene solo informazioni necessarie per l'identificazione e la risoluzione dei problemi.",
|
||||
"Type_message": "Scrivi messaggio",
|
||||
"Search_messages": "Cerca messaggi",
|
||||
"Reply_in_Thread": "Rispondi nella discussione",
|
||||
"Add_server": "Aggiungi server",
|
||||
"You_will_be_logged_out_of_this_application": "Verrai disconnesso da questa applicazione.",
|
||||
"Clear": "Cancella",
|
||||
"This_will_clear_all_your_offline_data": "Questo cancellerà tutti i tuoi dati offline.",
|
||||
"This_will_remove_all_data_from_this_server": "Questo rimuoverà tutti i dati dal server.",
|
||||
"Mark_unread": "Segna come non letto",
|
||||
"Wait_activation_warning": "Prima di poter accedere, il tuo account deve essere attivato manualmente da un amministratore.",
|
||||
"Screen_lock": "Blocco schermo",
|
||||
"Local_authentication_biometry_title": "Autenticazione",
|
||||
"Local_authentication_biometry_fallback": "Usa passcode",
|
||||
"Local_authentication_unlock_option": "Sblocca con Passcode",
|
||||
"Local_authentication_change_passcode": "Cambia Passcode",
|
||||
"Local_authentication_info": "Nota: se dimentichi il Passcode, dovrai cancellare e installare nuovamente l'app.",
|
||||
"Local_authentication_facial_recognition": "riconoscimento facciale",
|
||||
"Local_authentication_fingerprint": "impronta digitale",
|
||||
"Local_authentication_unlock_with_label": "Sblocca con {{label}}",
|
||||
"Local_authentication_auto_lock_60": "Dopo 1 minuto",
|
||||
"Local_authentication_auto_lock_300": "Dopo 5 minuti",
|
||||
"Local_authentication_auto_lock_900": "Dopo 15 minuti",
|
||||
"Local_authentication_auto_lock_1800": "Dopo 30 minuti",
|
||||
"Local_authentication_auto_lock_3600": "Dopo 1 ora",
|
||||
"Passcode_enter_title": "Inserisci il passcode",
|
||||
"Passcode_choose_title": "Scegli il tuo nuovo passcode",
|
||||
"Passcode_choose_confirm_title": "Conferma il tuo nuovo passcode",
|
||||
"Passcode_choose_error": "I passcode non corrispondono. Riprova.",
|
||||
"Passcode_choose_force_set": "Passcode richiesto dall'admin",
|
||||
"Passcode_app_locked_title": "App bloccata",
|
||||
"Passcode_app_locked_subtitle": "Riprova tra {{timeLeft}} secondi",
|
||||
"After_seconds_set_by_admin": "Dopo {{seconds}} secondi (impostati dall'admin)",
|
||||
"Dont_activate": "Non attivare ora",
|
||||
"Queued_chats": "Chat in coda",
|
||||
"Logout_from_other_logged_in_locations": "Disconnetti da altre postazioni",
|
||||
"You_will_be_logged_out_from_other_locations": "Verrai disconnesso dalle altre postazioni.",
|
||||
"Logged_out_of_other_clients_successfully": "Disconnesso dalle altre postazioni con successo",
|
||||
"Logout_failed": "Disconnessione fallita!",
|
||||
"Log_analytics_events": "Invia statistiche anonime",
|
||||
"E2E_encryption_change_password_title": "Cambia la password di cifratura",
|
||||
"E2E_encryption_change_password_description": "Ora puoi creare gruppi e messaggi privati crittografati. Potrai, inoltre, crittografare i tuoi gruppi e messaggi privati esistenti. \nQuesta è crittografia end-to-end, la chiave per codificare/decodificare i tuoi messaggi non verrà salvata sul server. Per questo motivo devi salvarla in un luogo sicuro. Ti verrà richiesto di inserirla sugli altri dispositivi sui quali vuoi usare la crittografia e2e.",
|
||||
"E2E_encryption_change_password_error": "Si è verificato un errore durante il cambio della password della chiave E2E!",
|
||||
"E2E_encryption_change_password_success": "La password della chiave E2E è stata cambiata con successo!",
|
||||
"E2E_encryption_change_password_message": "Assicurati di salvarla in un posto sicuro.",
|
||||
"E2E_encryption_change_password_confirmation": "Si, cambiala",
|
||||
"E2E_encryption_reset_title": "Ripristina la Chiave E2E",
|
||||
"E2E_encryption_reset_description": "Questa opzione rimuoverà la tua chiave E2E corrente e sarai disconnesso. \nAl prossimo login, Rocket.Chat genererà una nuova chiave e ripristinerà l'accesso a tutte le stanze crittografate con uno o più membri online. \nA causa della natura della crittografia E2E, Rocket.Chat non sarà in grado di ripristinare l'accesso alle stanze senza membri online.",
|
||||
"E2E_encryption_reset_button": "Ripristina",
|
||||
"E2E_encryption_reset_error": "Si è verificato un errore durante il ripristino della chiave E2E!",
|
||||
"E2E_encryption_reset_message": "Stai per essere disconnesso.",
|
||||
"E2E_encryption_reset_confirmation": "Si, resettala",
|
||||
"Following": "Seguiti",
|
||||
"Threads_displaying_all": "Visualizza Tutti",
|
||||
"Threads_displaying_following": "Visualizza Seguiti",
|
||||
"Threads_displaying_unread": "Visualizza Non letti",
|
||||
"No_threads": "Non ci sono thread",
|
||||
"No_threads_following": "Non stai seguendo alcun thread",
|
||||
"No_threads_unread": "Non ci sono thread non letti",
|
||||
"Message_composer_Send_to_channel": "Invia sul canale",
|
||||
"Remove_from_room": "Rimuovi dalla stanza",
|
||||
"Ignore": "Ignora",
|
||||
"Unignore": "Non ignorare",
|
||||
"User_has_been_ignored": "Utente ignorato",
|
||||
"User_has_been_unignored": "Utente non ignorato",
|
||||
"User_has_been_removed_from_s": "L'utente è stato rimosso da {{s}}",
|
||||
"User__username__is_now_a_leader_of__room_name_": "L'utente {{username}} è ora un leader di {{room_name}}",
|
||||
"User__username__is_now_a_moderator_of__room_name_": "L'utente {{username}} è ora un moderatore di {{room_name}}",
|
||||
"User__username__is_now_a_owner_of__room_name_": "L'utente {{username}} è ora un proprietario di {{room_name}}",
|
||||
"User__username__removed_from__room_name__leaders": "L'utente {{username}} non è più un leader di {{room_name}}",
|
||||
"User__username__removed_from__room_name__moderators": "L'utente {{username}} non è più un moderatore di {{room_name}}",
|
||||
"User__username__removed_from__room_name__owners": "L'utente {{username}} non è più un proprietario di {{room_name}}",
|
||||
"The_user_will_be_removed_from_s": "L'utente sarà rimosso da {{s}}",
|
||||
"Yes_remove_user": "Si, rimuovi utente!",
|
||||
"Direct_message": "Messaggio diretto",
|
||||
"Message_Ignored": "Messaggio ignorato. Tocca per visualizzarlo.",
|
||||
"Enter_workspace_URL": "Inserisci la url del workspace",
|
||||
"Workspace_URL_Example": "Es. tua-azienda.rocket.chat",
|
||||
"Open_Livechats": "Chat in corso",
|
||||
"Broadcast_hint": "Solo gli utenti autorizzati possono scrivere messaggi, ma gli altri utenti saranno in grado di rispondere",
|
||||
"and_N_more": "e altri {{count}}",
|
||||
"Slash_Gimme_Description": "Displays ༼ つ ◕_◕ ༽つ before your message",
|
||||
"Slash_LennyFace_Description": "Displays ( ͡° ͜ʖ ͡°) after your message",
|
||||
"Slash_Shrug_Description": "Displays ¯\\_(ツ)_/¯ after your message",
|
||||
|
@ -527,20 +438,107 @@
|
|||
"Slash_TableUnflip_Description": "Displays ┬─┬ ノ( ゜-゜ノ)",
|
||||
"Slash_Topic_Description": "Set topic",
|
||||
"Slash_Topic_Params": "Topic message",
|
||||
"Create_A_New_Channel": "Crea un nuovo canale",
|
||||
"Show_the_keyboard_shortcut_list": "Mostra l'elenco delle scorciatoie per la tastiera",
|
||||
"Hide_room": "Nascondi il canale",
|
||||
"Invite_user_to_join_channel": "Invita un utente ad entrare in questo canale",
|
||||
"Invite_user_to_join_channel_all_from": "Invita tutti gli utenti da [#channell] per unirsi a questo canale",
|
||||
"Invite_user_to_join_channel_all_to": "Invita tutti gli utenti di questo canale a unirsi [#channel]",
|
||||
"Join_the_given_channel": "Entra nel canale specificato",
|
||||
"Remove_someone_from_room": "Rimuovi qualcuno dal canale",
|
||||
"Leave_the_current_channel": "Abbandona il canale corrente",
|
||||
"Displays_action_text": "Mostra il testo di azione",
|
||||
"Direct_message_someone": "Invia un messaggio diretto",
|
||||
"Mute_someone_in_room": "Silenzia qualcuno nel canale",
|
||||
"Unmute_someone_in_room": "Smuta a qualcuno nel canale",
|
||||
"Audio": "Audio",
|
||||
"Sound": "Suono",
|
||||
"Star": "Aggiungi ai preferiti",
|
||||
"Starred": "Preferiti",
|
||||
"Start_a_Discussion": "Avvia una Discussione",
|
||||
"Started_call": "Chiamata iniziata da {{userBy}}",
|
||||
"Started_discussion": "Discussione iniziata:",
|
||||
"Status_saved_successfully": "Stato salvato correttamente!",
|
||||
"Table": "Tabella",
|
||||
"Tags": "Tag",
|
||||
"Take_a_photo": "Scatta una foto",
|
||||
"Take_a_video": "Registra un video",
|
||||
"Take_it": "Prendi!",
|
||||
"Terms_of_Service": " Termini di servizio ",
|
||||
"The_user_will_be_able_to_type_in_roomName": "L'utente potrà scrivere in {{roomName}}",
|
||||
"The_user_will_be_removed_from_s": "L'utente sarà rimosso da {{s}}",
|
||||
"The_user_wont_be_able_to_type_in_roomName": "L'utente non potrà scrivere in {{roomName}}",
|
||||
"The_user_will_be_able_to_type_in_roomName": "L'utente potrà scrivere in {{roomName}}"
|
||||
"Theme": "Tema",
|
||||
"There_was_an_error_while_action": "Si è verificato un errore nel {{action}}!",
|
||||
"This_room_is_blocked": "Questa stanza è bloccata",
|
||||
"This_room_is_read_only": "Questa stanza è in sola lettura",
|
||||
"This_will_clear_all_your_offline_data": "Questo cancellerà tutti i tuoi dati offline.",
|
||||
"This_will_remove_all_data_from_this_server": "Questo rimuoverà tutti i dati dal server.",
|
||||
"Thread": "Thread",
|
||||
"Threads": "Threads",
|
||||
"Threads_displaying_all": "Visualizza Tutti",
|
||||
"Threads_displaying_following": "Visualizza Seguiti",
|
||||
"Threads_displaying_unread": "Visualizza Non letti",
|
||||
"Timezone": "Fuso orario",
|
||||
"Topic": "Argomento",
|
||||
"topic": "argomento",
|
||||
"Translate": "Traduci",
|
||||
"Try_again": "Riprova",
|
||||
"Two_Factor_Authentication": "Autenticazione a due fattori",
|
||||
"Type_message": "Scrivi messaggio",
|
||||
"UNARCHIVE": "RIMUOVI DALL'ARCHIVIO",
|
||||
"unarchive": "rimuovi dall'archivio",
|
||||
"Unfollowed_thread": "Non segui più il thread",
|
||||
"Unignore": "Non ignorare",
|
||||
"Unmute": "Attiva notifiche",
|
||||
"Unmute_someone_in_room": "Smuta a qualcuno nel canale",
|
||||
"unmuted": "notifiche attivate",
|
||||
"Unpin": "Stacca",
|
||||
"Unread": "Non letto",
|
||||
"unread_messages": "non letti",
|
||||
"Unread_on_top": "Non letti sopra",
|
||||
"Unstar": "Rimuovi dai preferiti",
|
||||
"Updating": "Aggiornamento...",
|
||||
"Uploading": "Caricamento",
|
||||
"User": "Utente",
|
||||
"User__username__is_now_a_leader_of__room_name_": "L'utente {{username}} è ora un leader di {{room_name}}",
|
||||
"User__username__is_now_a_moderator_of__room_name_": "L'utente {{username}} è ora un moderatore di {{room_name}}",
|
||||
"User__username__is_now_a_owner_of__room_name_": "L'utente {{username}} è ora un proprietario di {{room_name}}",
|
||||
"User__username__removed_from__room_name__leaders": "L'utente {{username}} non è più un leader di {{room_name}}",
|
||||
"User__username__removed_from__room_name__moderators": "L'utente {{username}} non è più un moderatore di {{room_name}}",
|
||||
"User__username__removed_from__room_name__owners": "L'utente {{username}} non è più un proprietario di {{room_name}}",
|
||||
"User_has_been_ignored": "Utente ignorato",
|
||||
"User_has_been_key": "Utente {{key}}",
|
||||
"User_has_been_removed_from_s": "L'utente è stato rimosso da {{s}}",
|
||||
"User_has_been_unignored": "Utente non ignorato",
|
||||
"User_Info": "Informazioni utente",
|
||||
"User_sent_an_attachment": "{{user}} ha inviato un allegato",
|
||||
"Username": "Username",
|
||||
"Username_or_email": "Username o email",
|
||||
"Users": "Utenti",
|
||||
"Uses_server_configuration": "Usa la configurazione del server",
|
||||
"Verify_email_desc": "Ti abbiamo inviato una e-mail per confermare la tua registrazione. Se non la ricevi, ritorna qui e riprova",
|
||||
"Version_no": "Versione: {{version}}",
|
||||
"View_Original": "Mostra originale",
|
||||
"Wait_activation_warning": "Prima di poter accedere, il tuo account deve essere attivato manualmente da un amministratore.",
|
||||
"Waiting_for_network": "In attesa di connessione ...",
|
||||
"Websocket_disabled": "Websocket disabilitata per questo server.\n{{contact}}",
|
||||
"What_are_you_doing_right_now": "Cosa stai facendo in questo momento?",
|
||||
"Whats_the_password_for_your_certificate": "Qual'è la password del tuo certificato?",
|
||||
"Without_Servers": "Senza server",
|
||||
"Workspace_URL_Example": "Es. tua-azienda.rocket.chat",
|
||||
"Workspaces": "Workspace",
|
||||
"Would_you_like_to_return_the_inquiry": "Vorresti ritirare la tua domanda?",
|
||||
"Write_External_Permission": "Permesso galleria",
|
||||
"Write_External_Permission_Message": "Rocket.Chat ha bisogno dell'accesso alla galleria per salvare le immagini.",
|
||||
"Yes": "Si",
|
||||
"Yes_action_it": "Sì, {{action}}!",
|
||||
"Yes_remove_user": "Si, rimuovi utente!",
|
||||
"Yesterday": "Ieri",
|
||||
"You": "Tu",
|
||||
"you": "tu",
|
||||
"You_are_in_preview_mode": "Sei in modalità anteprima",
|
||||
"You_can_search_using_RegExp_eg": "Puoi usare espressioni regolari. es. `/^testo$/i`",
|
||||
"You_colon": "Tu: ",
|
||||
"You_need_to_access_at_least_one_RocketChat_server_to_share_something": "Devi accedere ad almeno un server Rocket.Chat prima di condividere qualcosa.",
|
||||
"You_need_to_verifiy_your_email_address_to_get_notications": "Devi verificare il tuo indirizzo e-mail per ricevere le notifiche",
|
||||
"you_were_mentioned": "sei stato menzionato",
|
||||
"You_were_removed_from_channel": "Sei stato rimosso da {{channel}}",
|
||||
"You_will_be_logged_out_from_other_locations": "Verrai disconnesso dalle altre postazioni.",
|
||||
"You_will_be_logged_out_of_this_application": "Verrai disconnesso da questa applicazione.",
|
||||
"You_will_not_be_able_to_recover_this_message": "Non sarai in grado di ripristinare questo messaggio!",
|
||||
"You_will_unset_a_certificate_for_this_server": "Rimuoverai un certificato per questo server",
|
||||
"Your_certificate": "Il tuo certificato",
|
||||
"Your_invite_link_will_expire_after__usesLeft__uses": "Il tuo link di invito scadrà dopo {{usesLeft}} utilizzi.",
|
||||
"Your_invite_link_will_expire_on__date__": "Il tuo link di invito scadrà il {{date}}.",
|
||||
"Your_invite_link_will_expire_on__date__or_after__usesLeft__uses": "Il tuo link di invito scadrà il {{date}} oppure dopo {{usesLeft}} utilizzi.",
|
||||
"Your_invite_link_will_never_expire": "Il tuo link di invito non scadrà mai.",
|
||||
"Your_password_is": "La tua password è",
|
||||
"Your_workspace": "Il tuo workspace"
|
||||
}
|
|
@ -1,75 +1,67 @@
|
|||
{
|
||||
"1_person_reacted": "1人がリアクション",
|
||||
"error-action-not-allowed": "{{action}}の権限がありません。",
|
||||
"error-avatar-invalid-url": "画像のURLが正しくありません: {{url}}",
|
||||
"error-duplicate-channel-name": "{{room_name}}と同名のチャンネルが存在します。",
|
||||
"error-email-send-failed": "次のメールアドレスの送信に失敗しました: {{message}}",
|
||||
"error-save-image": "画像の保存に失敗しました。",
|
||||
"error-save-video": "動画の保存中にエラーが発生しました",
|
||||
"error-file-too-large": "ファイルが大きすぎます。",
|
||||
"error-not-permission-to-upload-file": "ファイルをアップロードする権限がありません",
|
||||
"error-invalid-email": "不正なメールアドレスです。 {{email}}",
|
||||
"error-invalid-file-type": "ファイルの種類が不正です",
|
||||
"error-invalid-password": "不正なパスワードです",
|
||||
"error-invalid-room-name": "{{room_name}}は正しいルーム名ではありません。",
|
||||
"error-not-allowed": "許可されていません。",
|
||||
"error-too-many-requests": "エラーです。リクエストが多すぎます。リクエストの頻度を落としてください。{{seconds}} 秒以上待ってから再度お試しください。",
|
||||
"error-you-are-last-owner": "あなたは最後のオーナーです。ルームを退出する前に別のオーナーを設定してください。",
|
||||
"A_meaningful_name_for_the_discussion_room": "ディスカッションルームわかりやすい名前",
|
||||
"Actions": "アクション",
|
||||
"Activity": "アクティビティ順",
|
||||
"Add_Server": "サーバーを追加",
|
||||
"Add_server": "サーバーを追加",
|
||||
"Add_users": "ユーザーを追加",
|
||||
"Admin_Panel": "管理者パネル",
|
||||
"Agent": "エージェント",
|
||||
"Alert": "アラート",
|
||||
"alert": "アラート",
|
||||
"alerts": "アラート",
|
||||
"All_users_in_the_channel_can_write_new_messages": "すべてのユーザーが新しいメッセージを書き込みできます",
|
||||
"All_users_in_the_team_can_write_new_messages": "チームのすべてのユーザーが新しいメッセージを書き込むことができます",
|
||||
"A_meaningful_name_for_the_discussion_room": "ディスカッションルームわかりやすい名前",
|
||||
"All": "すべての",
|
||||
"All_Messages": "全メッセージ",
|
||||
"All_users_in_the_channel_can_write_new_messages": "すべてのユーザーが新しいメッセージを書き込みできます",
|
||||
"All_users_in_the_team_can_write_new_messages": "チームのすべてのユーザーが新しいメッセージを書き込むことができます",
|
||||
"Allow_Reactions": "リアクションを許可",
|
||||
"and": "と",
|
||||
"announcement": "アナウンス",
|
||||
"and_N_more": "さらに{{count}}つ",
|
||||
"Announcement": "アナウンス",
|
||||
"announcement": "アナウンス",
|
||||
"Apply_Your_Certificate": "証明書を適用する",
|
||||
"ARCHIVE": "アーカイブ",
|
||||
"archive": "アーカイブ",
|
||||
"are_typing": "が入力中",
|
||||
"Are_you_sure_question_mark": "よろしいですか?",
|
||||
"Are_you_sure_you_want_to_leave_the_room": "{{room}}を退出してもよろしいですか?",
|
||||
"Automatic": "自動",
|
||||
"Audio": "音声",
|
||||
"Auto_Translate": "自動翻訳",
|
||||
"Automatic": "自動",
|
||||
"Avatar_changed_successfully": "アバターを変更しました!",
|
||||
"Avatar_Url": "アバターURL",
|
||||
"Away": "退出中",
|
||||
"Black": "ブラック",
|
||||
"Broadcast_hint": "許可されたユーザーのみが新しいメッセージを書き込めます。他のユーザーは返信することができます",
|
||||
"Browser": "ブラウザ",
|
||||
"Busy": "取り込み中",
|
||||
"Call_already_ended": "通話は終了しています。",
|
||||
"Cancel": "キャンセル",
|
||||
"Cancel_editing": "編集をキャンセル",
|
||||
"Cancel_recording": "録音をキャンセル",
|
||||
"Cancel": "キャンセル",
|
||||
"Certificate_password": "パスワード証明書",
|
||||
"Change_Language": "言語を変更",
|
||||
"Change_language_loading": "言語の変更",
|
||||
"changing_avatar": "アバターを変更",
|
||||
"creating_channel": "チャンネルを作成",
|
||||
"creating_invite": "招待を作成",
|
||||
"Channel_Name": "チャンネル名",
|
||||
"Channels": "チャンネル",
|
||||
"Chat_closed_by_agent": "エージェントが閉じたチャット",
|
||||
"Chats": "チャット",
|
||||
"Call_already_ended": "通話は終了しています。",
|
||||
"Choose": "選択",
|
||||
"Choose_file": "ファイルを選択",
|
||||
"Choose_from_library": "ライブラリから選択",
|
||||
"Choose_where_you_want_links_be_opened": "開くリンクを選択する",
|
||||
"Clear": "クリア",
|
||||
"Clear_cache": "ローカルのサーバーキャッシュをクリア",
|
||||
"Clear_cache_loading": "キャッシュをクリアしています。",
|
||||
"Clear_cookies_alert": "すべてのCookieをクリアしますか?",
|
||||
"Clear_cookies_desc": "この操作により、すべてのログインCookieがクリアされ、他のアカウントにログインできます。",
|
||||
"Clear_cookies_yes": "はい、Cookieをクリアします",
|
||||
"Clear_cookies_no": "いいえ、Cookieを保持します",
|
||||
"Clear_cookies_yes": "はい、Cookieをクリアします",
|
||||
"Click_to_join": "クリックして参加!",
|
||||
"Close": "閉じる",
|
||||
"Close_emoji_selector": "絵文字ピッカーを閉じる",
|
||||
"Change_language_loading": "言語の変更",
|
||||
"Chat_closed_by_agent": "エージェントが閉じたチャット",
|
||||
"Choose": "選択",
|
||||
"Choose_from_library": "ライブラリから選択",
|
||||
"Choose_file": "ファイルを選択",
|
||||
"Choose_where_you_want_links_be_opened": "開くリンクを選択する",
|
||||
"Code_or_password_invalid": "無効なコードまたはパスワード",
|
||||
"Collaborative": "コラボ",
|
||||
"Confirm": "承認",
|
||||
|
@ -78,76 +70,92 @@
|
|||
"Contact_us": "お問い合わせ",
|
||||
"Contact_your_server_admin": "サーバー管理者にお問い合わせください。",
|
||||
"Continue_with": "次でログイン: ",
|
||||
"Conversation": "会話",
|
||||
"Copied_to_clipboard": "クリップボードにコピー!",
|
||||
"Copy": "コピー",
|
||||
"Conversation": "会話",
|
||||
"Certificate_password": "パスワード証明書",
|
||||
"Clear_cache": "ローカルのサーバーキャッシュをクリア",
|
||||
"Clear_cache_loading": "キャッシュをクリアしています。",
|
||||
"Whats_the_password_for_your_certificate": "証明書のパスワードはなんですか?",
|
||||
"Crash_report_disclaimer": "クラッシュレポートには問題を特定し、修正するために必要な情報のみが含まれます。チャット内のコンテンツは送信されません。",
|
||||
"Create": "作成",
|
||||
"Create_A_New_Channel": "新しいChannelの作成",
|
||||
"Create_a_new_workspace": "新しいワークスペースを作成",
|
||||
"Create_account": "アカウントを作成",
|
||||
"Create_Channel": "チャンネルを作成",
|
||||
"Create_Direct_Messages": "ダイレクトメッセージを作成する",
|
||||
"Create_Discussion": "ディスカッションを作成する",
|
||||
"Created_snippet": "スニペットを作成",
|
||||
"Create_a_new_workspace": "新しいワークスペースを作成",
|
||||
"Create": "作成",
|
||||
"creating_channel": "チャンネルを作成",
|
||||
"creating_invite": "招待を作成",
|
||||
"Dark": "ダーク",
|
||||
"Dark_level": "ダークレベル",
|
||||
"Default": "デフォルト",
|
||||
"Default_browser": "デフォルトのブラウザ",
|
||||
"Delete_Room_Warning": "ルームを削除すると、ルームに投稿されたすべてのメッセージが削除されます。この操作は取り消せません。",
|
||||
"Department": "部署",
|
||||
"delete": "削除",
|
||||
"Delete": "削除",
|
||||
"DELETE": "削除",
|
||||
"move": "移動",
|
||||
"Delete": "削除",
|
||||
"delete": "削除",
|
||||
"Delete_Room_Warning": "ルームを削除すると、ルームに投稿されたすべてのメッセージが削除されます。この操作は取り消せません。",
|
||||
"deleting_room": "ルームを削除",
|
||||
"description": "概要",
|
||||
"Department": "部署",
|
||||
"Description": "概要",
|
||||
"Desktop_Notifications": "デスクトップ通知",
|
||||
"description": "概要",
|
||||
"Desktop_Alert_info": "これらの通知はデスクトップで配信されます",
|
||||
"Directory": "ディレクトリ",
|
||||
"Desktop_Notifications": "デスクトップ通知",
|
||||
"Direct_message_someone": "ユーザーへダイレクトメッセージする",
|
||||
"Direct_Messages": "ダイレクトメッセージ",
|
||||
"Discussions": "ディスカッション",
|
||||
"Directory": "ディレクトリ",
|
||||
"Discussion_Desc": "状況の概要を把握するのに役立ちます。ディスカッションを作成すると、選択したチャンネルのサブチャンネルが作成され、両方のチャンネルがリンクされます。",
|
||||
"Discussion_name": "ディスカッション名",
|
||||
"Dont_Have_An_Account": "アカウントがありませんか?",
|
||||
"Do_you_have_an_account": "アカウントをお持ちですか?",
|
||||
"Discussions": "ディスカッション",
|
||||
"Displays_action_text": "アクションテキストを表示",
|
||||
"Do_you_have_a_certificate": "証明書を持っていますか?",
|
||||
"Do_you_have_an_account": "アカウントをお持ちですか?",
|
||||
"Do_you_really_want_to_key_this_room_question_mark": "本当にこのルームを{{key}}しますか?",
|
||||
"Dont_Have_An_Account": "アカウントがありませんか?",
|
||||
"E2E_Encryption": "E2E暗号化",
|
||||
"E2E_How_It_Works_info1": "暗号化されたプライベートグループやダイレクトメッセージを作成できるようになりました。また、既存のプライベートグループやDMを暗号化された状態に変更することもできます。",
|
||||
"E2E_How_It_Works_info2": "これは*エンドツーエンド*の暗号化であり、メッセージをエンコード/デコードするためのキーであるため、サーバーには保存されません。そのため、必要に応じて後でアクセスできる*安全な場所にこのパスワードを保管する*必要があります。",
|
||||
"E2E_How_It_Works_info3": "処理を進めると、E2Eパスワードが自動生成されます。",
|
||||
"E2E_How_It_Works_info4": "既存のE2Eパスワードを入力した任意のブラウザから、暗号化キーの新しいパスワードをいつでも設定することもできます。",
|
||||
"Edit": "編集",
|
||||
"Edit_Status": "ステータスを編集する",
|
||||
"Edit_Invite": "編集に招待",
|
||||
"End_to_end_encrypted_room": "暗号化されたエンドツーエンドのルーム",
|
||||
"Edit_Status": "ステータスを編集する",
|
||||
"Email": "メールアドレス",
|
||||
"Email_Notification_Mode_All": "すべてのメンション/DM",
|
||||
"Email_Notification_Mode_Disabled": "無効",
|
||||
"Email": "メールアドレス",
|
||||
"Enable_Auto_Translate": "自動翻訳を有効にする",
|
||||
"Encrypted": "暗号化済み",
|
||||
"Encrypted_message": "暗号化されたメッセージ",
|
||||
"Encryption_error_desc": "暗号化キーをデコードしてインポートできませんでした。",
|
||||
"Encryption_error_title": "暗号化パスワードが間違っているようです",
|
||||
"End_to_end_encrypted_room": "暗号化されたエンドツーエンドのルーム",
|
||||
"Enter_Your_E2E_Password": "E2Eパスワードを入力してください",
|
||||
"Enter_Your_Encryption_Password_desc1": "これにより、暗号化されたプライベートグループやダイレクトメッセージにアクセスできます。",
|
||||
"Enter_Your_Encryption_Password_desc2": "チャットを利用するたびに、メッセージをエンコード/デコードするためのパスワードを入力する必要があります。",
|
||||
"Encryption_error_title": "暗号化パスワードが間違っているようです",
|
||||
"Encryption_error_desc": "暗号化キーをデコードしてインポートできませんでした。",
|
||||
"Error_uploading": "アップロードエラー",
|
||||
"error-action-not-allowed": "{{action}}の権限がありません。",
|
||||
"error-avatar-invalid-url": "画像のURLが正しくありません: {{url}}",
|
||||
"error-duplicate-channel-name": "{{room_name}}と同名のチャンネルが存在します。",
|
||||
"error-email-send-failed": "次のメールアドレスの送信に失敗しました: {{message}}",
|
||||
"error-file-too-large": "ファイルが大きすぎます。",
|
||||
"error-invalid-email": "不正なメールアドレスです。 {{email}}",
|
||||
"error-invalid-file-type": "ファイルの種類が不正です",
|
||||
"error-invalid-password": "不正なパスワードです",
|
||||
"error-invalid-room-name": "{{room_name}}は正しいルーム名ではありません。",
|
||||
"error-not-allowed": "許可されていません。",
|
||||
"error-not-permission-to-upload-file": "ファイルをアップロードする権限がありません",
|
||||
"error-save-image": "画像の保存に失敗しました。",
|
||||
"error-save-video": "動画の保存中にエラーが発生しました",
|
||||
"error-too-many-requests": "エラーです。リクエストが多すぎます。リクエストの頻度を落としてください。{{seconds}} 秒以上待ってから再度お試しください。",
|
||||
"error-you-are-last-owner": "あなたは最後のオーナーです。ルームを退出する前に別のオーナーを設定してください。",
|
||||
"Everyone_can_access_this_channel": "全員このチャンネルにアクセスできます",
|
||||
"Everyone_can_access_this_team": "全員このチームにアクセスできます",
|
||||
"Error_uploading": "アップロードエラー",
|
||||
"Expiration_Days": "期限切れ (日)",
|
||||
"Favorites": "お気に入り",
|
||||
"Files": "ファイル",
|
||||
"File_description": "ファイルの説明",
|
||||
"Files": "ファイル",
|
||||
"Finish_recording": "録音停止",
|
||||
"Following_thread": "スレッド更新時に通知",
|
||||
"For_your_security_you_must_enter_your_current_password_to_continue": "セキュリティのため、続けるには現在のパスワードを入力してください。",
|
||||
"Forgot_password_If_this_email_is_registered": "送信したメールアドレスが登録されていれば、パスワードのリセット方法を送信しました。メールアドレスがすぐに来ない場合はやり直してください。",
|
||||
"Forgot_password": "パスワードを忘れた",
|
||||
"Forgot_password_If_this_email_is_registered": "送信したメールアドレスが登録されていれば、パスワードのリセット方法を送信しました。メールアドレスがすぐに来ない場合はやり直してください。",
|
||||
"Forward": "転送",
|
||||
"Forward_Chat": "チャットを転送する",
|
||||
"Forward_to_department": "部署に転送する",
|
||||
|
@ -155,62 +163,71 @@
|
|||
"Full_table": "クリックしてテーブル全体を見る",
|
||||
"Generate_New_Link": "新しいリンクを生成",
|
||||
"Has_left_the_team": "チームを退出しました",
|
||||
"Hide_room": "ルームを非表示",
|
||||
"Hide_System_Messages": "システムメッセージを非表示にする",
|
||||
"Hide_type_messages": "\"{{type}}\"メッセージを非表示にする",
|
||||
"How_It_Works": "仕組み",
|
||||
"Message_HideType_uj": "ユーザー参加",
|
||||
"Message_HideType_ul": "ユーザー退出",
|
||||
"Message_HideType_ru": "ユーザーが削除されました",
|
||||
"Message_HideType_au": "ユーザーが追加されました",
|
||||
"Message_HideType_mute_unmute": "ユーザーがミュート/ミュート解除されました",
|
||||
"Message_HideType_r": "ルーム名が変更されました",
|
||||
"Message_HideType_ut": "ユーザーが会話に参加しました",
|
||||
"Message_HideType_wm": "ようこそ",
|
||||
"Message_HideType_rm": "メッセージが削除されました",
|
||||
"Message_HideType_subscription_role_added": "ロールが設定されました",
|
||||
"Message_HideType_subscription_role_removed": "ロールが定義されていません",
|
||||
"Message_HideType_room_archived": "ルームがアーカイブされました",
|
||||
"Message_HideType_room_unarchived": "ルームのアーカイブが解除されました",
|
||||
"I_Saved_My_E2E_Password": "自分のE2Eのパスワードを保存しました",
|
||||
"IP": "IP",
|
||||
"In_app": "アプリ内",
|
||||
"In_App_And_Desktop": "アプリ内とデスクトップ",
|
||||
"In_App_and_Desktop_Alert_info": "アプリを表示中にはバナーを上部に表示し、デスクトップには通知を送ります。",
|
||||
"Invisible": "状態を隠す",
|
||||
"is_typing": "が入力中",
|
||||
"Insert_Join_Code": "参加コードを挿入する",
|
||||
"Invalid_or_expired_invite_token": "招待トークンが無効か、期限が切れています",
|
||||
"Invalid_server_version": "接続しようとしているサーバーのバージョン({{currentVersion}})はサポートされていません。\n\nサポートする最低バージョンは {{minVersion}} です",
|
||||
"Invisible": "状態を隠す",
|
||||
"Invite_Link": "招待リンク",
|
||||
"Invite_user_to_join_channel": "1ユーザーをこのチャネルに招待",
|
||||
"Invite_user_to_join_channel_all_from": "[#channel]のすべてのユーザーをこのチャネルに招待",
|
||||
"Invite_user_to_join_channel_all_to": "このチャネルのすべてのユーザーを[#channel]に招待",
|
||||
"Invite_users": "ユーザーを招待",
|
||||
"IP": "IP",
|
||||
"is_typing": "が入力中",
|
||||
"Join": "参加",
|
||||
"Join_Code": "参加コード",
|
||||
"Insert_Join_Code": "参加コードを挿入する",
|
||||
"Join_our_open_workspace": "開いているワークスペースに参加する",
|
||||
"Join_the_given_channel": "指定したチャネルに参加",
|
||||
"Just_invited_people_can_access_this_channel": "招待されたユーザーだけがこのチャンネルに参加できます",
|
||||
"Just_invited_people_can_access_this_team": "招待されたユーザーのみがこのチームにアクセスできます",
|
||||
"Language": "言語",
|
||||
"last_message": "最後のメッセージ",
|
||||
"leaving_room": "チャンネルを退出",
|
||||
"Leave": "ルームを退出",
|
||||
"leave": "退出",
|
||||
"Leave_the_current_channel": "現在のチャネルから退出",
|
||||
"leaving_room": "チャンネルを退出",
|
||||
"Legal": "法的項目",
|
||||
"Light": "ライト",
|
||||
"License": "ライセンス",
|
||||
"Light": "ライト",
|
||||
"Logged_out_by_server": "サーバーからログアウトします。もう一度ログインしてください。",
|
||||
"Logging_out": "ログアウトしています。",
|
||||
"Login": "ログイン",
|
||||
"Login_error": "証明書が承認されませんでした。再度お試しください。",
|
||||
"Logging_out": "ログアウトしています。",
|
||||
"Logout": "ログアウト",
|
||||
"Max_number_of_uses": "最大利用数",
|
||||
"members": "メンバー",
|
||||
"Members": "メンバー",
|
||||
"members": "メンバー",
|
||||
"Mentions": "メンション",
|
||||
"Message_actions": "メッセージアクション",
|
||||
"Message_removed": "メッセージを除く",
|
||||
"message": "メッセージ",
|
||||
"messages": "メッセージ",
|
||||
"Message": "メッセージ",
|
||||
"message": "メッセージ",
|
||||
"Message_actions": "メッセージアクション",
|
||||
"Message_HideType_au": "ユーザーが追加されました",
|
||||
"Message_HideType_mute_unmute": "ユーザーがミュート/ミュート解除されました",
|
||||
"Message_HideType_r": "ルーム名が変更されました",
|
||||
"Message_HideType_rm": "メッセージが削除されました",
|
||||
"Message_HideType_room_archived": "ルームがアーカイブされました",
|
||||
"Message_HideType_room_unarchived": "ルームのアーカイブが解除されました",
|
||||
"Message_HideType_ru": "ユーザーが削除されました",
|
||||
"Message_HideType_subscription_role_added": "ロールが設定されました",
|
||||
"Message_HideType_subscription_role_removed": "ロールが定義されていません",
|
||||
"Message_HideType_uj": "ユーザー参加",
|
||||
"Message_HideType_ul": "ユーザー退出",
|
||||
"Message_HideType_ut": "ユーザーが会話に参加しました",
|
||||
"Message_HideType_wm": "ようこそ",
|
||||
"Message_removed": "メッセージを除く",
|
||||
"Message_Reported": "メッセージを報告しました",
|
||||
"messages": "メッセージ",
|
||||
"move": "移動",
|
||||
"Mute": "ミュート",
|
||||
"Mute_someone_in_room": "ルーム内のいずれかのユーザーをミュート",
|
||||
"muted": "ミュートした",
|
||||
"N_people_reacted": "{{n}}人がリアクションしました",
|
||||
"N_users": "{{n}}人",
|
||||
|
@ -222,23 +239,23 @@
|
|||
"No_files": "ファイルがありません",
|
||||
"No_limit": "制限なし",
|
||||
"No_mentioned_messages": "メンションされたメッセージはありません",
|
||||
"No_pinned_messages": "ピン留めされたメッセージはありません",
|
||||
"No_results_found": "結果なし",
|
||||
"No_starred_messages": "お気に入りされたメッセージはありません",
|
||||
"No_Message": "メッセージなし",
|
||||
"No_messages_yet": "まだメッセージはありません",
|
||||
"No_pinned_messages": "ピン留めされたメッセージはありません",
|
||||
"No_Reactions": "リアクションなし",
|
||||
"No_Read_Receipts": "未読通知はありません",
|
||||
"No_results_found": "結果なし",
|
||||
"No_starred_messages": "お気に入りされたメッセージはありません",
|
||||
"Not_RC_Server": "Rocket.Chatサーバーではありません。\n{{contact}}",
|
||||
"Nothing": "何もなし",
|
||||
"Nothing_to_save": "保存するものはありません!",
|
||||
"Notification_Preferences": "通知設定",
|
||||
"Notifications": "通知",
|
||||
"Notify_active_in_this_room": "このルームのアクティブなユーザーに通知する",
|
||||
"Notify_all_in_this_room": "このルームのユーザー全員に通知する",
|
||||
"Notifications": "通知",
|
||||
"Notification_Preferences": "通知設定",
|
||||
"Oops": "おっと!",
|
||||
"Online": "オンライン",
|
||||
"Only_authorized_users_can_write_new_messages": "承認されたユーザーだけが新しいメッセージを書き込めます",
|
||||
"Oops": "おっと!",
|
||||
"Open_emoji_selector": "絵文字ピッカーを開く",
|
||||
"Password": "パスワード",
|
||||
"Permalink_copied_to_clipboard": "リンクをクリップボードにコピーしました!",
|
||||
|
@ -249,8 +266,8 @@
|
|||
"Privacy_Policy": " プライバシーポリシー",
|
||||
"Private": "プライベート",
|
||||
"Processing": "処理中...",
|
||||
"Profile_saved_successfully": "プロフィールが保存されました!",
|
||||
"Profile": "プロフィール",
|
||||
"Profile_saved_successfully": "プロフィールが保存されました!",
|
||||
"Public": "パブリック",
|
||||
"Push_Notifications": "プッシュ通知",
|
||||
"Push_Notifications_Alert_Info": "通知はアプリを開いていない時に送られます。",
|
||||
|
@ -261,39 +278,42 @@
|
|||
"Read_Receipt": "レシートを見る",
|
||||
"Receive_Group_Mentions": "グループの通知を受け取る",
|
||||
"Receive_Group_Mentions_Info": "@all と @here の通知を受け取る",
|
||||
"Register": "登録",
|
||||
"replies": "返信",
|
||||
"reply": "返信",
|
||||
"Reply": "返信",
|
||||
"Report": "報告",
|
||||
"Receive_Notification": "通知を受け取る",
|
||||
"Receive_notifications_from": "{{name}}からの通知を受け取る",
|
||||
"Register": "登録",
|
||||
"Registration_Succeeded": "登録が成功しました",
|
||||
"Remove_someone_from_room": "ルームからいずれかのユーザーを削除",
|
||||
"replies": "返信",
|
||||
"Reply": "返信",
|
||||
"reply": "返信",
|
||||
"Report": "報告",
|
||||
"Resend": "再送信",
|
||||
"RESET": "リセット",
|
||||
"Reset_password": "パスワードをリセット",
|
||||
"resetting_password": "パスワードを再設定",
|
||||
"RESET": "リセット",
|
||||
"Review_app_title": "アプリにご満足いただけておりますか?",
|
||||
"Review_app_desc": "{{store}}で5段階で評価をお願いします",
|
||||
"Review_app_yes": "はい!",
|
||||
"Review_app_no": "いいえ",
|
||||
"Review_app_later": "あとで",
|
||||
"Review_app_no": "いいえ",
|
||||
"Review_app_title": "アプリにご満足いただけておりますか?",
|
||||
"Review_app_unable_store": "{{store}}を開けません。",
|
||||
"Review_app_yes": "はい!",
|
||||
"Review_this_app": "アプリをレビューする",
|
||||
"Roles": "ロール",
|
||||
"Room_Info_Edit": "ルーム情報を編集",
|
||||
"Room_Info": "ルーム情報",
|
||||
"Room_Info_Edit": "ルーム情報を編集",
|
||||
"SAVE": "保存",
|
||||
"Save_Changes": "変更を保存",
|
||||
"Save": "保存",
|
||||
"Save_Changes": "変更を保存",
|
||||
"saved_to_gallery": "ギャラリーに保存しました",
|
||||
"saving_preferences": "設定を保存中",
|
||||
"saving_profile": "プロフィールを設定中",
|
||||
"saving_settings": "サーバー設定を保存中",
|
||||
"saved_to_gallery": "ギャラリーに保存しました",
|
||||
"Search_Messages": "メッセージを検索",
|
||||
"Search": "検索",
|
||||
"Search_by": "検索種別: ",
|
||||
"Search_global_users": "グローバルユーザーのための検索",
|
||||
"Search_global_users_description": "有効にした場合、他の会社やサーバーの誰もがあなたを検索可能になります。",
|
||||
"Search_Messages": "メッセージを検索",
|
||||
"Search_messages": "メッセージを検索",
|
||||
"Select_Server": "サーバーを選択",
|
||||
"Select_Users": "ユーザーを選択",
|
||||
"Send": "送信",
|
||||
|
@ -309,81 +329,8 @@
|
|||
"Share": "シェア",
|
||||
"Share_Link": "リンクをシェアする",
|
||||
"Share_this_app": "このアプリをシェアする",
|
||||
"Show_the_keyboard_shortcut_list": "キーボードショートカットリストを表示",
|
||||
"Sign_Up": "登録",
|
||||
"Sound": "音",
|
||||
"Star": "お気に入り",
|
||||
"Starred": "お気に入りされています",
|
||||
"Started_discussion": "ディスカッションを開始する:",
|
||||
"Started_call": "{{userBy}}と通話する",
|
||||
"Table": "表",
|
||||
"Take_a_photo": "写真を撮影",
|
||||
"Take_a_video": "動画を撮影",
|
||||
"Terms_of_Service": " 利用規約 ",
|
||||
"Theme": "テーマ",
|
||||
"There_was_an_error_while_action": "{{action}}の最中にエラーが発生しました!",
|
||||
"This_room_is_blocked": "このルームはブロックされています。",
|
||||
"This_room_is_read_only": "このルームは読み取り専用です。",
|
||||
"Threads": "スレッド",
|
||||
"Thread": "スレッド",
|
||||
"Timezone": "タイムゾーン",
|
||||
"topic": "トピック",
|
||||
"Topic": "トピック",
|
||||
"Translate": "翻訳",
|
||||
"Try_again": "再度お試しください。",
|
||||
"Two_Factor_Authentication": "2段階認証",
|
||||
"unarchive": "アーカイブ解除",
|
||||
"UNARCHIVE": "アーカイブ解除",
|
||||
"Unfollowed_thread": "スレッド更新時に通知しない",
|
||||
"Unmute": "ミュート解除",
|
||||
"unmuted": "ミュート解除しました",
|
||||
"Unpin": "ピン留めを解除",
|
||||
"unread_messages": "未読",
|
||||
"Unread": "未読",
|
||||
"Unread_on_top": "未読メッセージを上に表示",
|
||||
"Unstar": "お気に入り解除",
|
||||
"Updating": "更新中...",
|
||||
"Uploading": "アップロード中",
|
||||
"User": "ユーザー",
|
||||
"Users": "ユーザー",
|
||||
"User_Info": "ユーザー情報",
|
||||
"User_has_been_key": "ユーザーは{{key}}",
|
||||
"User_sent_an_attachment": "{{user}}は添付ファイルを送信しました",
|
||||
"Username": "ユーザー名",
|
||||
"Username_or_email": "ユーザー名かメールアドレス",
|
||||
"Uses_server_configuration": "サーバー構成を使用する",
|
||||
"Registration_Succeeded": "登録が成功しました",
|
||||
"View_Original": "オリジナルを見る",
|
||||
"Websocket_disabled": "Websocketはこのサーバーでは無効化されています。\n{{contact}}",
|
||||
"Without_Servers": "サーバーを除く",
|
||||
"Write_External_Permission_Message": "Rocket.Chatは画像を保存するためにギャラリーへのアクセスを求めています。",
|
||||
"Write_External_Permission": "ギャラリーへのアクセス許可",
|
||||
"Yes_action_it": "はい、{{action}}します!",
|
||||
"Yesterday": "昨日",
|
||||
"You_are_in_preview_mode": "プレビューモードです。",
|
||||
"You_can_search_using_RegExp_eg": "正規表現を利用できます。 例: `/^text$/i`",
|
||||
"You_colon": "あなた: ",
|
||||
"you_were_mentioned": "あなたがメンションしました",
|
||||
"you": "あなた",
|
||||
"You": "あなた",
|
||||
"Logged_out_by_server": "サーバーからログアウトします。もう一度ログインしてください。",
|
||||
"You_need_to_access_at_least_one_RocketChat_server_to_share_something": "シェアするためには1つ以上のサーバーにアクセスする必要があります。",
|
||||
"Your_certificate": "あなたの認証情報",
|
||||
"Your_invite_link_will_expire_after__usesLeft__uses": "招待リンクはあと{{usesLeft}}回で使用できなくなります。",
|
||||
"Your_invite_link_will_expire_on__date__or_after__usesLeft__uses": "招待リンクは{{date}}までか、あと{{usesLeft}}回で使用できなくなります。",
|
||||
"Your_invite_link_will_expire_on__date__": "招待リンクは{{date}}に使用できなくなります。",
|
||||
"Your_invite_link_will_never_expire": "招待リンクはずっと有効です。",
|
||||
"Version_no": "バージョン: {{version}}",
|
||||
"You_will_not_be_able_to_recover_this_message": "このメッセージは復元できません!",
|
||||
"Change_Language": "言語を変更",
|
||||
"Crash_report_disclaimer": "クラッシュレポートには問題を特定し、修正するために必要な情報のみが含まれます。チャット内のコンテンツは送信されません。",
|
||||
"Type_message": "メッセージを入力",
|
||||
"Search_messages": "メッセージを検索",
|
||||
"Add_server": "サーバーを追加",
|
||||
"You_will_be_logged_out_of_this_application": "アプリからログアウトします。",
|
||||
"Clear": "クリア",
|
||||
"This_will_clear_all_your_offline_data": "オフラインデータをすべて削除します。",
|
||||
"Broadcast_hint": "許可されたユーザーのみが新しいメッセージを書き込めます。他のユーザーは返信することができます",
|
||||
"and_N_more": "さらに{{count}}つ",
|
||||
"Slash_Gimme_Description": "メッセージの前に༼ つ ◕_◕ ༽つを表示",
|
||||
"Slash_LennyFace_Description": "メッセージの後に( ͡° ͜ʖ ͡°)を表示",
|
||||
"Slash_Shrug_Description": "メッセージの後に¯\\_(ツ)_/¯を表示",
|
||||
|
@ -393,18 +340,71 @@
|
|||
"Slash_TableUnflip_Description": "┬─┬ ノ( ゜-゜ノ)を表示します",
|
||||
"Slash_Topic_Description": "トピックを設定",
|
||||
"Slash_Topic_Params": "トピックのメッセージ",
|
||||
"Create_A_New_Channel": "新しいChannelの作成",
|
||||
"Show_the_keyboard_shortcut_list": "キーボードショートカットリストを表示",
|
||||
"Hide_room": "ルームを非表示",
|
||||
"Invite_user_to_join_channel": "1ユーザーをこのチャネルに招待",
|
||||
"Invite_user_to_join_channel_all_from": "[#channel]のすべてのユーザーをこのチャネルに招待",
|
||||
"Invite_user_to_join_channel_all_to": "このチャネルのすべてのユーザーを[#channel]に招待",
|
||||
"Join_the_given_channel": "指定したチャネルに参加",
|
||||
"Remove_someone_from_room": "ルームからいずれかのユーザーを削除",
|
||||
"Leave_the_current_channel": "現在のチャネルから退出",
|
||||
"Displays_action_text": "アクションテキストを表示",
|
||||
"Direct_message_someone": "ユーザーへダイレクトメッセージする",
|
||||
"Mute_someone_in_room": "ルーム内のいずれかのユーザーをミュート",
|
||||
"Sound": "音",
|
||||
"Star": "お気に入り",
|
||||
"Starred": "お気に入りされています",
|
||||
"Started_call": "{{userBy}}と通話する",
|
||||
"Started_discussion": "ディスカッションを開始する:",
|
||||
"Table": "表",
|
||||
"Take_a_photo": "写真を撮影",
|
||||
"Take_a_video": "動画を撮影",
|
||||
"Terms_of_Service": " 利用規約 ",
|
||||
"Theme": "テーマ",
|
||||
"There_was_an_error_while_action": "{{action}}の最中にエラーが発生しました!",
|
||||
"This_room_is_blocked": "このルームはブロックされています。",
|
||||
"This_room_is_read_only": "このルームは読み取り専用です。",
|
||||
"This_will_clear_all_your_offline_data": "オフラインデータをすべて削除します。",
|
||||
"Thread": "スレッド",
|
||||
"Threads": "スレッド",
|
||||
"Timezone": "タイムゾーン",
|
||||
"Topic": "トピック",
|
||||
"topic": "トピック",
|
||||
"Translate": "翻訳",
|
||||
"Try_again": "再度お試しください。",
|
||||
"Two_Factor_Authentication": "2段階認証",
|
||||
"Type_message": "メッセージを入力",
|
||||
"UNARCHIVE": "アーカイブ解除",
|
||||
"unarchive": "アーカイブ解除",
|
||||
"Unfollowed_thread": "スレッド更新時に通知しない",
|
||||
"Unmute": "ミュート解除",
|
||||
"Unmute_someone_in_room": "ルームのいずれかのユーザーのミュートを解除",
|
||||
"Audio": "音声"
|
||||
"unmuted": "ミュート解除しました",
|
||||
"Unpin": "ピン留めを解除",
|
||||
"Unread": "未読",
|
||||
"unread_messages": "未読",
|
||||
"Unread_on_top": "未読メッセージを上に表示",
|
||||
"Unstar": "お気に入り解除",
|
||||
"Updating": "更新中...",
|
||||
"Uploading": "アップロード中",
|
||||
"User": "ユーザー",
|
||||
"User_has_been_key": "ユーザーは{{key}}",
|
||||
"User_Info": "ユーザー情報",
|
||||
"User_sent_an_attachment": "{{user}}は添付ファイルを送信しました",
|
||||
"Username": "ユーザー名",
|
||||
"Username_or_email": "ユーザー名かメールアドレス",
|
||||
"Users": "ユーザー",
|
||||
"Uses_server_configuration": "サーバー構成を使用する",
|
||||
"Version_no": "バージョン: {{version}}",
|
||||
"View_Original": "オリジナルを見る",
|
||||
"Websocket_disabled": "Websocketはこのサーバーでは無効化されています。\n{{contact}}",
|
||||
"Whats_the_password_for_your_certificate": "証明書のパスワードはなんですか?",
|
||||
"Without_Servers": "サーバーを除く",
|
||||
"Write_External_Permission": "ギャラリーへのアクセス許可",
|
||||
"Write_External_Permission_Message": "Rocket.Chatは画像を保存するためにギャラリーへのアクセスを求めています。",
|
||||
"Yes_action_it": "はい、{{action}}します!",
|
||||
"Yesterday": "昨日",
|
||||
"You": "あなた",
|
||||
"you": "あなた",
|
||||
"You_are_in_preview_mode": "プレビューモードです。",
|
||||
"You_can_search_using_RegExp_eg": "正規表現を利用できます。 例: `/^text$/i`",
|
||||
"You_colon": "あなた: ",
|
||||
"You_need_to_access_at_least_one_RocketChat_server_to_share_something": "シェアするためには1つ以上のサーバーにアクセスする必要があります。",
|
||||
"you_were_mentioned": "あなたがメンションしました",
|
||||
"You_will_be_logged_out_of_this_application": "アプリからログアウトします。",
|
||||
"You_will_not_be_able_to_recover_this_message": "このメッセージは復元できません!",
|
||||
"Your_certificate": "あなたの認証情報",
|
||||
"Your_invite_link_will_expire_after__usesLeft__uses": "招待リンクはあと{{usesLeft}}回で使用できなくなります。",
|
||||
"Your_invite_link_will_expire_on__date__": "招待リンクは{{date}}に使用できなくなります。",
|
||||
"Your_invite_link_will_expire_on__date__or_after__usesLeft__uses": "招待リンクは{{date}}までか、あと{{usesLeft}}回で使用できなくなります。",
|
||||
"Your_invite_link_will_never_expire": "招待リンクはずっと有効です。"
|
||||
}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
File diff suppressed because it is too large
Load Diff
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
File diff suppressed because it is too large
Load Diff
|
@ -1,19 +1,6 @@
|
|||
{
|
||||
"1_person_reacted": "1 pessoa reagiu",
|
||||
"error-action-not-allowed": "{{action}} não é permitida",
|
||||
"error-avatar-invalid-url": "URL de avatar inválido: {{url}}",
|
||||
"error-duplicate-channel-name": "Existe um canal com o nome {{room_name}}",
|
||||
"error-email-send-failed": "Erro ao tentar enviar e-mail: {{message}}",
|
||||
"error-save-image": "Erro ao salvar imagem",
|
||||
"error-save-video": "Erro ao salvar vídeo",
|
||||
"error-file-too-large": "Ficheiro demasiado grande",
|
||||
"error-invalid-email": "E-mail inválido {{email}}",
|
||||
"error-invalid-file-type": "Tipo de ficheiro inválido",
|
||||
"error-invalid-password": "Palavra-passe inválida",
|
||||
"error-invalid-room-name": "{{room_name}} não é um nome de sala válido",
|
||||
"error-not-allowed": "Não permitido",
|
||||
"error-too-many-requests": "Erro, demasiados pedidos. Por favor, diminua a velocidade. Você deve esperar {{seconds}} segundos antes de tentar novamente.",
|
||||
"error-you-are-last-owner": "Você é o último proprietário. Por favor, defina novo proprietário antes de sair da sala.",
|
||||
"A_meaningful_name_for_the_discussion_room": "Um nome significativo para a sala de discussão",
|
||||
"Actions": "Acções",
|
||||
"Activity": "Actividade",
|
||||
"Add_Server": "Adicionar Servidor",
|
||||
|
@ -23,52 +10,55 @@
|
|||
"Alert": "Alerta",
|
||||
"alert": "alerta",
|
||||
"alerts": "alertas",
|
||||
"All_users_in_the_channel_can_write_new_messages": "Todos os utilizadores no canal podem escrever novas mensagens",
|
||||
"All_users_in_the_team_can_write_new_messages": "Todos os usuários da equipa podem escrever novas mensagens",
|
||||
"A_meaningful_name_for_the_discussion_room": "Um nome significativo para a sala de discussão",
|
||||
"All": "Todos",
|
||||
"All_Messages": "Todas as Mensagens",
|
||||
"All_users_in_the_channel_can_write_new_messages": "Todos os utilizadores no canal podem escrever novas mensagens",
|
||||
"All_users_in_the_team_can_write_new_messages": "Todos os usuários da equipa podem escrever novas mensagens",
|
||||
"Allow_Reactions": "Permitir Reacções",
|
||||
"and": "e",
|
||||
"announcement": "anúncio",
|
||||
"and_N_more": "e mais {{count}}",
|
||||
"Announcement": "Anúncio",
|
||||
"announcement": "anúncio",
|
||||
"Apply_Your_Certificate": "Aplique o seu Certificado",
|
||||
"ARCHIVE": "ARQUIVAR",
|
||||
"archive": "arquivar",
|
||||
"are_typing": "estão a escrever",
|
||||
"Are_you_sure_question_mark": "Tem a certeza?",
|
||||
"Are_you_sure_you_want_to_leave_the_room": "Tem certeza de que quer sair da sala {{room}}?",
|
||||
"Automatic": "Automático",
|
||||
"Audio": "Áudio",
|
||||
"Auto_Translate": "Auto-Tradução",
|
||||
"Automatic": "Automático",
|
||||
"Avatar_changed_successfully": "Avatar alterado com sucesso!",
|
||||
"Avatar_Url": "URL do Avatar",
|
||||
"Away": "Ausente",
|
||||
"Black": "Preto",
|
||||
"Broadcast_hint": "Apenas utilizadores autorizados podem escrever novas mensagens, mas os outros utilizadores poderão responder",
|
||||
"Browser": "Navegador",
|
||||
"Busy": "Ocupado",
|
||||
"Call_already_ended": "Chamada já terminada!",
|
||||
"Cancel": "Cancelar",
|
||||
"Cancel_editing": "Cancelar edição",
|
||||
"Cancel_recording": "Cancelar gravação",
|
||||
"Cancel": "Cancelar",
|
||||
"Certificate_password": "Senha do Certificado",
|
||||
"Change_language_loading": "Mudança de idioma.",
|
||||
"changing_avatar": "a alterar avatar",
|
||||
"creating_channel": "a criar canal",
|
||||
"creating_invite": "a criar convite",
|
||||
"Channel_Name": "Nome do Canal",
|
||||
"Channels": "Canais",
|
||||
"Chat_closed_by_agent": "Chat fechado por agente",
|
||||
"Chats": "Chats",
|
||||
"Call_already_ended": "Chamada já terminada!",
|
||||
"Choose": "Escolher",
|
||||
"Choose_file": "Escolher arquivo",
|
||||
"Choose_from_library": "Escolher da biblioteca",
|
||||
"Choose_where_you_want_links_be_opened": "Escolha onde você quer que os links sejam abertos",
|
||||
"Clear_cache": "Limpar a cache do servidor local",
|
||||
"Clear_cache_loading": "A limpar a cache.",
|
||||
"Clear_cookies_alert": "Quer limpar todas as cookies?",
|
||||
"Clear_cookies_desc": "Esta acção irá limpar todos os cookies de login, permitindo que você faça login em outras contas.",
|
||||
"Clear_cookies_yes": "Sim, limpar cookies",
|
||||
"Clear_cookies_no": "Não, guardar cookies",
|
||||
"Clear_cookies_yes": "Sim, limpar cookies",
|
||||
"Click_to_join": "Clique para Entrar!",
|
||||
"Close": "Fechar",
|
||||
"Close_emoji_selector": "Fechar selector de emoticons",
|
||||
"Change_language_loading": "Mudança de idioma.",
|
||||
"Chat_closed_by_agent": "Chat fechado por agente",
|
||||
"Choose": "Escolher",
|
||||
"Choose_from_library": "Escolher da biblioteca",
|
||||
"Choose_file": "Escolher arquivo",
|
||||
"Choose_where_you_want_links_be_opened": "Escolha onde você quer que os links sejam abertos",
|
||||
"Code_or_password_invalid": "Código ou senha inválidos",
|
||||
"Collaborative": "Colaborativa",
|
||||
"Confirm": "Confirmar",
|
||||
|
@ -77,76 +67,90 @@
|
|||
"Contact_us": "Contacte-nos",
|
||||
"Contact_your_server_admin": "Contacte o administrador do seu servidor.",
|
||||
"Continue_with": "Continuar com",
|
||||
"Conversation": "Conversa",
|
||||
"Copied_to_clipboard": "Copiado para a área de transferência!",
|
||||
"Copy": "Copiar",
|
||||
"Conversation": "Conversa",
|
||||
"Certificate_password": "Senha do Certificado",
|
||||
"Clear_cache": "Limpar a cache do servidor local",
|
||||
"Clear_cache_loading": "A limpar a cache.",
|
||||
"Whats_the_password_for_your_certificate": "Qual é a senha para o seu certificado?",
|
||||
"Create": "Criar",
|
||||
"Create_A_New_Channel": "Criar um novo canal",
|
||||
"Create_a_new_workspace": "Criar um novo espaço de trabalho",
|
||||
"Create_account": "Criar uma conta",
|
||||
"Create_Channel": "Criar Canal",
|
||||
"Create_Direct_Messages": "Criar Mensagens Diretas",
|
||||
"Create_Discussion": "Criar Discussão",
|
||||
"Created_snippet": "criado um extracto",
|
||||
"Create_a_new_workspace": "Criar um novo espaço de trabalho",
|
||||
"Create": "Criar",
|
||||
"creating_channel": "a criar canal",
|
||||
"creating_invite": "a criar convite",
|
||||
"Dark": "Escuro",
|
||||
"Dark_level": "Nível Escuro",
|
||||
"Default": "Predefinição",
|
||||
"Default_browser": "Navegador predefinido",
|
||||
"Delete_Room_Warning": "Apagar uma sala irá remover todas as mensagens contidas nela. Isto não pode ser desfeito.",
|
||||
"Department": "Departamento",
|
||||
"delete": "apagar",
|
||||
"Delete": "Apagar",
|
||||
"DELETE": "APAGAR",
|
||||
"move": "mover",
|
||||
"Delete": "Apagar",
|
||||
"delete": "apagar",
|
||||
"Delete_Room_Warning": "Apagar uma sala irá remover todas as mensagens contidas nela. Isto não pode ser desfeito.",
|
||||
"deleting_room": "apagando sala",
|
||||
"description": "descrição",
|
||||
"Department": "Departamento",
|
||||
"Description": "Descrição",
|
||||
"Desktop_Notifications": "Notificações da área de trabalho",
|
||||
"description": "descrição",
|
||||
"Desktop_Alert_info": "Estas notificações são entregues na área de trabalho",
|
||||
"Directory": "Directório",
|
||||
"Desktop_Notifications": "Notificações da área de trabalho",
|
||||
"Direct_message_someone": "Enviar mensagem directa para alguém",
|
||||
"Direct_Messages": "Mensagens Directas",
|
||||
"Discussions": "Discussões",
|
||||
"Directory": "Directório",
|
||||
"Discussion_Desc": "Ajude a manter uma visão geral sobre o que está acontecendo! Ao criar uma discussão, é criado um sub-canal do que você selecionou e ambos estão ligados.",
|
||||
"Discussion_name": "Nome da discussão",
|
||||
"Dont_Have_An_Account": "Não tem uma conta?",
|
||||
"Do_you_have_an_account": "Você tem uma conta?",
|
||||
"Discussions": "Discussões",
|
||||
"Displays_action_text": "Exibe texto da acção",
|
||||
"Do_you_have_a_certificate": "Você tem um certificado?",
|
||||
"Do_you_have_an_account": "Você tem uma conta?",
|
||||
"Do_you_really_want_to_key_this_room_question_mark": "Você quer mesmo {{key}} esta sala?",
|
||||
"Dont_Have_An_Account": "Não tem uma conta?",
|
||||
"E2E_Encryption": "Encriptação E2E",
|
||||
"E2E_How_It_Works_info1": "Agora você pode criar grupos privados criptografados e mensagens diretas. Você também pode alterar grupos privados existentes ou DMs para criptografados.",
|
||||
"E2E_How_It_Works_info2": "Isto é *criptografia ponto a ponto* portanto a chave para codificar/descodificar as suas mensagens não será salva no servidor. Por essa razão *você precisa armazenar esta senha em algum lugar seguro* que você posa aceder mais tarde, se precisar.",
|
||||
"E2E_How_It_Works_info3": "Se você prosseguir, uma senha E2E será gerada automaticamente.",
|
||||
"E2E_How_It_Works_info4": "Você também pode configurar uma nova senha para sua chave de criptografia a qualquer momento a partir de qualquer navegador que você tenha inserido a senha existente do E2E.",
|
||||
"Edit": "Editar",
|
||||
"Edit_Status": "Editar Status",
|
||||
"Edit_Invite": "Editar Convite",
|
||||
"End_to_end_encrypted_room": "Sala encriptada de ponta a ponta",
|
||||
"Edit_Status": "Editar Status",
|
||||
"Email": "E-mail",
|
||||
"Email_Notification_Mode_All": "Cada Menção/DM",
|
||||
"Email_Notification_Mode_Disabled": "Desactivado",
|
||||
"Email": "E-mail",
|
||||
"Enable_Auto_Translate": "Activar Auto-Tradução",
|
||||
"Encrypted": "Encriptado",
|
||||
"Encrypted_message": "Mensagem encriptada",
|
||||
"Encryption_error_desc": "Não foi possível descodificar a sua chave de encriptação para ser importada.",
|
||||
"Encryption_error_title": "A sua senha de encriptação parece errada",
|
||||
"End_to_end_encrypted_room": "Sala encriptada de ponta a ponta",
|
||||
"Enter_Your_E2E_Password": "Digite a sua senha E2E",
|
||||
"Enter_Your_Encryption_Password_desc1": "Isto permitir-lhe-á aceder aos seus grupos privados encriptados e às suas mensagens directas.",
|
||||
"Enter_Your_Encryption_Password_desc2": "Você precisa digitar a senha para codificar/descodificar mensagens em cada lugar que você usar o chat.",
|
||||
"Encryption_error_title": "A sua senha de encriptação parece errada",
|
||||
"Encryption_error_desc": "Não foi possível descodificar a sua chave de encriptação para ser importada.",
|
||||
"Error_uploading": "Erro ao fazer o envio",
|
||||
"error-action-not-allowed": "{{action}} não é permitida",
|
||||
"error-avatar-invalid-url": "URL de avatar inválido: {{url}}",
|
||||
"error-duplicate-channel-name": "Existe um canal com o nome {{room_name}}",
|
||||
"error-email-send-failed": "Erro ao tentar enviar e-mail: {{message}}",
|
||||
"error-file-too-large": "Ficheiro demasiado grande",
|
||||
"error-invalid-email": "E-mail inválido {{email}}",
|
||||
"error-invalid-file-type": "Tipo de ficheiro inválido",
|
||||
"error-invalid-password": "Palavra-passe inválida",
|
||||
"error-invalid-room-name": "{{room_name}} não é um nome de sala válido",
|
||||
"error-not-allowed": "Não permitido",
|
||||
"error-save-image": "Erro ao salvar imagem",
|
||||
"error-save-video": "Erro ao salvar vídeo",
|
||||
"error-too-many-requests": "Erro, demasiados pedidos. Por favor, diminua a velocidade. Você deve esperar {{seconds}} segundos antes de tentar novamente.",
|
||||
"error-you-are-last-owner": "Você é o último proprietário. Por favor, defina novo proprietário antes de sair da sala.",
|
||||
"Everyone_can_access_this_channel": "Todos podem aceder a este canal",
|
||||
"Everyone_can_access_this_team": "Todos podem aceder a esta equipa",
|
||||
"Error_uploading": "Erro ao fazer o envio",
|
||||
"Expiration_Days": "Validade (Dias)",
|
||||
"Favorites": "Favoritos",
|
||||
"Files": "Ficheiros",
|
||||
"File_description": "Descrição do ficheiro",
|
||||
"Files": "Ficheiros",
|
||||
"Finish_recording": "Terminar a gravação",
|
||||
"Following_thread": "Seguir discussão",
|
||||
"For_your_security_you_must_enter_your_current_password_to_continue": "Para sua segurança, você deve escrever a sua palavra-passe actual para continuar",
|
||||
"Forgot_password_If_this_email_is_registered": "Se este e-mail estiver registado, enviaremos instruções sobre como repor a sua palavra-passe. Se você não receber um e-mail em breve, volte e tente novamente.",
|
||||
"Forgot_password": "Esquecer palavra-passe",
|
||||
"Forgot_password_If_this_email_is_registered": "Se este e-mail estiver registado, enviaremos instruções sobre como repor a sua palavra-passe. Se você não receber um e-mail em breve, volte e tente novamente.",
|
||||
"Forward": "Reencaminhar",
|
||||
"Forward_Chat": "Reencaminhar Chat",
|
||||
"Forward_to_department": "Reencaminhar para o departamento",
|
||||
|
@ -154,114 +158,124 @@
|
|||
"Full_table": "Clique para ver a tabela completa",
|
||||
"Generate_New_Link": "Gerar Novo Link",
|
||||
"Get_link": "Obter Ligação",
|
||||
"Hide_room": "Esconder sala",
|
||||
"Hide_System_Messages": "Esconder mensagens do sistema",
|
||||
"Hide_type_messages": "Esconder mensagens \"{{type}}\"",
|
||||
"How_It_Works": "Como Funciona",
|
||||
"Message_HideType_uj": "Utilizador entrou",
|
||||
"Message_HideType_ul": "Utilizador saiu",
|
||||
"Message_HideType_ru": "Utilizador removido",
|
||||
"Message_HideType_au": "Utilizador adicionado",
|
||||
"Message_HideType_mute_unmute": "Utilizador silenciado/de-silenciado",
|
||||
"Message_HideType_r": "Nome da sala alterado",
|
||||
"Message_HideType_ut": "Utilizador entrou na conversação",
|
||||
"Message_HideType_wm": "Bem-vindo",
|
||||
"Message_HideType_rm": "Mensagem Removida",
|
||||
"Message_HideType_subscription_role_added": "Foi definido o estatuto",
|
||||
"Message_HideType_subscription_role_removed": "Definição de estatuto removida",
|
||||
"Message_HideType_room_archived": "Sala arquivada",
|
||||
"Message_HideType_room_unarchived": "Sala desarquivada",
|
||||
"I_Saved_My_E2E_Password": "Guardei a minha senha E2E",
|
||||
"IP": "IP",
|
||||
"In_app": "Na aplicação",
|
||||
"In_App_And_Desktop": "Na aplicação e área de trabalho",
|
||||
"In_App_and_Desktop_Alert_info": "Exibe um banner no topo da tela quando a aplicação está aberto, e exibe uma notificação na área de trabalho",
|
||||
"Invisible": "Invisível",
|
||||
"is_typing": "está a escrever",
|
||||
"Insert_Join_Code": "Insira o código de entrada",
|
||||
"Invalid_or_expired_invite_token": "Token de convite invalido ou expirado",
|
||||
"Invalid_server_version": "O servidor ao qual esta tentando ligar-se, utiliza uma versão que não é suporta pela aplicação: {{currentVersion}}.\n\nA versão mínima requerida é {{minVersion}}",
|
||||
"Invisible": "Invisível",
|
||||
"Invite_Link": "Link de convite",
|
||||
"Invite_user_to_join_channel": "Convidar um utilizador para juntar-se a este canal",
|
||||
"Invite_user_to_join_channel_all_from": "Convide todos os utilizadores de [#channel] a participar deste canal",
|
||||
"Invite_user_to_join_channel_all_to": "Convide todos os utilizadores deste canal a participar [#canal]",
|
||||
"Invite_users": "Convidar utilizadores",
|
||||
"IP": "IP",
|
||||
"is_typing": "está a escrever",
|
||||
"Join": "Entrar",
|
||||
"Join_Code": "Código de entrada",
|
||||
"Insert_Join_Code": "Insira o código de entrada",
|
||||
"Join_our_open_workspace": "Junte-se ao nosso espaço de trabalho aberto",
|
||||
"Join_the_given_channel": "Entrar no canal apresentado",
|
||||
"Just_invited_people_can_access_this_channel": "Apenas utilizadores convidados podem aceder a este canal",
|
||||
"Just_invited_people_can_access_this_team": "Apenas pessoas convidadas podem aceder a esta equipa",
|
||||
"Language": "Idioma",
|
||||
"last_message": "última mensagem",
|
||||
"leaving_room": "a sair da sala",
|
||||
"Leave": "Sair",
|
||||
"leave": "sair",
|
||||
"Leave_the_current_channel": "Sai deste canal",
|
||||
"leaving_room": "a sair da sala",
|
||||
"Legal": "Legal",
|
||||
"Light": "Luz",
|
||||
"License": "Licença",
|
||||
"Light": "Luz",
|
||||
"Logging_out": "A terminar a sessão.",
|
||||
"Login": "Entrar",
|
||||
"Login_error": "As suas credenciais foram rejeitadas! Por favor, tente novamente.",
|
||||
"Logging_out": "A terminar a sessão.",
|
||||
"Logout": "Sair",
|
||||
"Max_number_of_uses": "Número máximo de utilizações",
|
||||
"Max_number_of_users_allowed_is_number": "O número máximo de utilizadores permitido é {{maxUsers}}",
|
||||
"members": "membros",
|
||||
"Max_number_of_uses": "Número máximo de utilizações",
|
||||
"Members": "Membros",
|
||||
"members": "membros",
|
||||
"Mentions": "Menções",
|
||||
"Message": "Mensagem",
|
||||
"message": "mensagem",
|
||||
"Message_actions": "Acções de mensagem",
|
||||
"Message_HideType_au": "Utilizador adicionado",
|
||||
"Message_HideType_mute_unmute": "Utilizador silenciado/de-silenciado",
|
||||
"Message_HideType_r": "Nome da sala alterado",
|
||||
"Message_HideType_rm": "Mensagem Removida",
|
||||
"Message_HideType_room_archived": "Sala arquivada",
|
||||
"Message_HideType_room_unarchived": "Sala desarquivada",
|
||||
"Message_HideType_ru": "Utilizador removido",
|
||||
"Message_HideType_subscription_role_added": "Foi definido o estatuto",
|
||||
"Message_HideType_subscription_role_removed": "Definição de estatuto removida",
|
||||
"Message_HideType_uj": "Utilizador entrou",
|
||||
"Message_HideType_ul": "Utilizador saiu",
|
||||
"Message_HideType_ut": "Utilizador entrou na conversação",
|
||||
"Message_HideType_wm": "Bem-vindo",
|
||||
"Message_removed": "Mensagem removida",
|
||||
"Message_Reported": "Mensagem reportada",
|
||||
"Message_starred": "Mensagem estrelada",
|
||||
"Message_unstarred": "Mensagem não estrelada",
|
||||
"message": "mensagem",
|
||||
"messages": "mensagens",
|
||||
"Message": "Mensagem",
|
||||
"Message_Reported": "Mensagem reportada",
|
||||
"move": "mover",
|
||||
"Mute": "Silenciar",
|
||||
"Mute_someone_in_room": "Silenciar alguém na sala",
|
||||
"muted": "silenciado",
|
||||
"N_channels": "{{n}} canais",
|
||||
"N_people_reacted": "{{n}} pessoas reagiram",
|
||||
"N_users": "{{n}} utilizadores",
|
||||
"N_channels": "{{n}} canais",
|
||||
"Name": "Nome",
|
||||
"Never": "Nunca",
|
||||
"New_Message": "Nova Mensagem",
|
||||
"New_Password": "Nova Palavra-passe",
|
||||
"Next": "Próximo",
|
||||
"No_available_agents_to_transfer": "Não há agentes disponíveis para transferir",
|
||||
"No_files": "Nenhum ficheiro",
|
||||
"No_label_provided": "{{label}} não fornecida/o",
|
||||
"No_limit": "Sem limite",
|
||||
"No_mentioned_messages": "Nenhuma mensagem mencionada",
|
||||
"No_pinned_messages": "Nenhuma mensagem afixada",
|
||||
"No_results_found": "Nenhum resultado encontrado",
|
||||
"No_starred_messages": "Nenhuma mensagem marcada com estrela",
|
||||
"No_label_provided": "{{label}} não fornecida/o",
|
||||
"No_Message": "Nenhuma mensagem",
|
||||
"No_messages_yet": "Ainda sem mensagens",
|
||||
"No_pinned_messages": "Nenhuma mensagem afixada",
|
||||
"No_Reactions": "Nenhuma reação",
|
||||
"No_Read_Receipts": "Sem recibos de leitura",
|
||||
"No_results_found": "Nenhum resultado encontrado",
|
||||
"No_starred_messages": "Nenhuma mensagem marcada com estrela",
|
||||
"Not_RC_Server": "Isto não é um servidor Rocket.Chat.\n{{contact}}",
|
||||
"Nothing": "Nada",
|
||||
"Nothing_to_save": "Nada para guardar!",
|
||||
"Notification_Preferences": "Preferências de Notificação",
|
||||
"Notifications": "Notificações",
|
||||
"Notify_active_in_this_room": "Notifica utilizadores activos nesta sala",
|
||||
"Notify_all_in_this_room": "Notifica todos os utilizadores nesta sala",
|
||||
"Notifications": "Notificações",
|
||||
"Notification_Preferences": "Preferências de Notificação",
|
||||
"No_available_agents_to_transfer": "Não há agentes disponíveis para transferir",
|
||||
"Oops": "Oops!",
|
||||
"Omnichannel": "Omnichannel",
|
||||
"Omnichannel_enable_alert": "Você não está disponível no Omnichannel. Você gostaria de estar disponível?",
|
||||
"Onboarding_subtitle": "Além da Colaboração da Equipe",
|
||||
"Onboarding_join_open_description": "Junte-se ao nosso espaço de trabalho aberto para conversar com a equipa e comunidade Rocket.Chat.",
|
||||
"Onboarding_agree_terms": "Ao continuar, você concorda com Rocket.Chat",
|
||||
"Onboarding_join_open_description": "Junte-se ao nosso espaço de trabalho aberto para conversar com a equipa e comunidade Rocket.Chat.",
|
||||
"Onboarding_less_options": "Menos opções",
|
||||
"Onboarding_more_options": "Mais opções",
|
||||
"Onboarding_subtitle": "Além da Colaboração da Equipe",
|
||||
"Online": "Ligado",
|
||||
"Only_authorized_users_can_write_new_messages": "Apenas utilizadores autorizados podem escrever novas mensagens",
|
||||
"Oops": "Oops!",
|
||||
"Open_emoji_selector": "Abra o selector de emoticons",
|
||||
"Open_Livechats": "Chats em andamento",
|
||||
"Open_your_authentication_app_and_enter_the_code": "Abra o seu aplicativo de autenticação e digite o código.",
|
||||
"OR": "OU",
|
||||
"OS": "OS",
|
||||
"Overwrites_the_server_configuration_and_use_room_config": "Sobrescreve a configuração do servidor e a configuração da sala de uso",
|
||||
"Password": "Palavra-passe",
|
||||
"Parent_channel_or_group": "Canal de origem ou grupo",
|
||||
"Password": "Palavra-passe",
|
||||
"Permalink_copied_to_clipboard": "Link permanente copiado para a área de transferência!",
|
||||
"Phone": "Telefone",
|
||||
"Pin": "Afixar",
|
||||
"Pinned": "Afixada",
|
||||
"Pinned_a_message": "Fixou uma mensagem:",
|
||||
"Please_add_a_comment": "Por favor, acrescente um comentário",
|
||||
"Please_enter_your_password": "Por favor, introduza a sua palavra-passe",
|
||||
"Please_wait": "Por favor, espere.",
|
||||
|
@ -269,35 +283,36 @@
|
|||
"Privacy_Policy": " Política de Privacidade",
|
||||
"Private": "Privado",
|
||||
"Processing": "A processar...",
|
||||
"Profile_saved_successfully": "Perfil actualizado com sucesso!",
|
||||
"Profile": "Perfil",
|
||||
"Profile_saved_successfully": "Perfil actualizado com sucesso!",
|
||||
"Public": "Público",
|
||||
"Push_Notifications": "Notificações Push",
|
||||
"Push_Notifications_Alert_Info": "Estas notificações são entregues quando o aplicativo não está aberto",
|
||||
"Quote": "Citar",
|
||||
"Reactions_are_disabled": "Reacções desactivadas",
|
||||
"Reactions_are_enabled": "Reacções activadas",
|
||||
"Read_External_Permission_Message": "Rocket.Chat precisa acessar fotos, média e arquivos em seu dispositivo",
|
||||
"Read_External_Permission": "Permissão de leitura da média",
|
||||
"Read_External_Permission_Message": "Rocket.Chat precisa acessar fotos, média e arquivos em seu dispositivo",
|
||||
"Read_Only": "Só de Leitura",
|
||||
"Read_Receipt": "Recibos de leitura",
|
||||
"Register": "Registar",
|
||||
"Remove_someone_from_room": "Remover alguém da sala",
|
||||
"Reply": "Responder",
|
||||
"Resend": "Reenviar",
|
||||
"RESET": "REPOR",
|
||||
"Reset_password": "Repor palavra-passe",
|
||||
"resetting_password": "a repor palavra-passe",
|
||||
"RESET": "REPOR",
|
||||
"Roles": "Funções",
|
||||
"Room_Info_Edit": "Editar Informação da Sala",
|
||||
"Room_Info": "Informação da Sala",
|
||||
"Room_Info_Edit": "Editar Informação da Sala",
|
||||
"SAVE": "GUARDAR",
|
||||
"Save_Changes": "Guardar Alterações",
|
||||
"Save": "Guardar",
|
||||
"Save_Changes": "Guardar Alterações",
|
||||
"saving_preferences": "a guardar preferências",
|
||||
"saving_profile": "a guardar perfil",
|
||||
"saving_settings": "a guardar configurações",
|
||||
"Search_Messages": "Pesquisar Mensagens",
|
||||
"Search": "Pesquisar",
|
||||
"Search_Messages": "Pesquisar Mensagens",
|
||||
"Select_Users": "Seleccionar Utilizadores",
|
||||
"Send": "Enviar",
|
||||
"Send_audio_message": "Enviar mensagem de áudio",
|
||||
|
@ -307,7 +322,15 @@
|
|||
"Settings": "Definições",
|
||||
"Settings_succesfully_changed": "Definições guardadas com sucesso!",
|
||||
"Share": "Partilhar",
|
||||
"Show_the_keyboard_shortcut_list": "Exibe a lista de atalhos do teclado",
|
||||
"Sign_Up": "Inscreva-se",
|
||||
"Slash_Gimme_Description": "Mostra (つ ◕_◕) つ antes de sua mensagem",
|
||||
"Slash_LennyFace_Description": "Mostra (͡ ° ͜ʖ ͡ °) após a sua mensagem",
|
||||
"Slash_Shrug_Description": "Mostra ¯ \\ _ (ツ) _ / ¯ após a sua mensagem",
|
||||
"Slash_Tableflip_Description": "Mostra (╯°□°)╯︵ ┻━┻",
|
||||
"Slash_TableUnflip_Description": "Mostra ┬─┬ ノ (゜ - ゜ ノ)",
|
||||
"Slash_Topic_Description": "Definir tópico",
|
||||
"Slash_Topic_Params": "Mensagem do tópico",
|
||||
"Star": "Dar estrela",
|
||||
"Starred": "Deu uma estrela",
|
||||
"Take_a_photo": "Tirar uma foto",
|
||||
|
@ -316,17 +339,18 @@
|
|||
"This_room_is_blocked": "Esta sala está bloqueada",
|
||||
"This_room_is_read_only": "Esta sala é apenas de leitura",
|
||||
"Timezone": "Fuso Horário",
|
||||
"topic": "tópico",
|
||||
"Topic": "Tópico",
|
||||
"topic": "tópico",
|
||||
"Try_again": "Tente novamente",
|
||||
"Two_Factor_Authentication": "Autenticação 2FA",
|
||||
"unarchive": "desarquivar",
|
||||
"UNARCHIVE": "DESARQUIVAR",
|
||||
"unarchive": "desarquivar",
|
||||
"Unmute": "Retirar silêncio",
|
||||
"Unmute_someone_in_room": "Remover silenciar de alguém na sala",
|
||||
"unmuted": "silêncio removido",
|
||||
"Unpin": "Desafixar",
|
||||
"unread_messages": "não lidas",
|
||||
"Unread": "Não lidas",
|
||||
"unread_messages": "não lidas",
|
||||
"Unread_on_top": "Não lidas no topo",
|
||||
"Unstar": "Retirar estrela",
|
||||
"Updating": "A actualizar...",
|
||||
|
@ -335,38 +359,14 @@
|
|||
"User_sent_an_attachment": "{{user}} enviou um ficheiro",
|
||||
"Username": "Nome de utilizador",
|
||||
"Username_or_email": "Nome de utilizador ou e-mail",
|
||||
"Whats_the_password_for_your_certificate": "Qual é a senha para o seu certificado?",
|
||||
"Yes_action_it": "Sim, {{action}}!",
|
||||
"Yesterday": "Ontem",
|
||||
"You": "Você",
|
||||
"you": "você",
|
||||
"You_are_in_preview_mode": "Você está no modo de pré-visualização",
|
||||
"You_can_search_using_RegExp_eg": "Você pode pesquisar usando RegEx. por exemplo, `/^text$/i`",
|
||||
"You_colon": "Você: ",
|
||||
"you_were_mentioned": "você foi mencionado",
|
||||
"you": "você",
|
||||
"You": "Você",
|
||||
"You_will_not_be_able_to_recover_this_message": "Você será incapaz de recuperar esta mensagem!",
|
||||
"Open_Livechats": "Chats em andamento",
|
||||
"Broadcast_hint": "Apenas utilizadores autorizados podem escrever novas mensagens, mas os outros utilizadores poderão responder",
|
||||
"and_N_more": "e mais {{count}}",
|
||||
"Slash_Gimme_Description": "Mostra (つ ◕_◕) つ antes de sua mensagem",
|
||||
"Slash_LennyFace_Description": "Mostra (͡ ° ͜ʖ ͡ °) após a sua mensagem",
|
||||
"Slash_Shrug_Description": "Mostra ¯ \\ _ (ツ) _ / ¯ após a sua mensagem",
|
||||
"Slash_Tableflip_Description": "Mostra (╯°□°)╯︵ ┻━┻",
|
||||
"Slash_TableUnflip_Description": "Mostra ┬─┬ ノ (゜ - ゜ ノ)",
|
||||
"Slash_Topic_Description": "Definir tópico",
|
||||
"Slash_Topic_Params": "Mensagem do tópico",
|
||||
"Create_A_New_Channel": "Criar um novo canal",
|
||||
"Show_the_keyboard_shortcut_list": "Exibe a lista de atalhos do teclado",
|
||||
"Hide_room": "Esconder sala",
|
||||
"Invite_user_to_join_channel": "Convidar um utilizador para juntar-se a este canal",
|
||||
"Invite_user_to_join_channel_all_from": "Convide todos os utilizadores de [#channel] a participar deste canal",
|
||||
"Invite_user_to_join_channel_all_to": "Convide todos os utilizadores deste canal a participar [#canal]",
|
||||
"Join_the_given_channel": "Entrar no canal apresentado",
|
||||
"Remove_someone_from_room": "Remover alguém da sala",
|
||||
"Leave_the_current_channel": "Sai deste canal",
|
||||
"Displays_action_text": "Exibe texto da acção",
|
||||
"Direct_message_someone": "Enviar mensagem directa para alguém",
|
||||
"Mute_someone_in_room": "Silenciar alguém na sala",
|
||||
"Unmute_someone_in_room": "Remover silenciar de alguém na sala",
|
||||
"Audio": "Áudio",
|
||||
"Pinned_a_message": "Fixou uma mensagem:"
|
||||
"You_will_not_be_able_to_recover_this_message": "Você será incapaz de recuperar esta mensagem!"
|
||||
}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
File diff suppressed because it is too large
Load Diff
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
File diff suppressed because it is too large
Load Diff
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
|
@ -1 +1 @@
|
|||
{ }
|
||||
{}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue