diff --git a/.claude/skills/accessibility/SKILL.md b/.claude/skills/accessibility/SKILL.md index ab32176cce..10bebad38d 100644 --- a/.claude/skills/accessibility/SKILL.md +++ b/.claude/skills/accessibility/SKILL.md @@ -9,12 +9,49 @@ Use this skill whenever code changes can affect screen-reader users (VoiceOver o ## Non-negotiable rules -1. **Native semantics first.** Use `Pressable`, `TextInput`, `Switch`, `Image` directly. Use `accessibilityRole` only when native semantics cannot represent the widget (`menu`, `menuitem`, `progressbar`, `radio`, `checkbox`, `article`, `alert`, `tablist`, `tab`). +1. **Native semantics first.** Use `Pressable`, `TextInput`, `Switch`, `Image` directly. Use `accessibilityRole` only when native semantics cannot represent the widget (`menu`, `menuitem`, `progressbar`, `radio`, `checkbox`, `article`, `alert`, `tablist`, `tab`). **Platform caveat:** `'menu'` and `'menuitem'` are honored by iOS VoiceOver but Android TalkBack silently ignores them (no `UIAccessibilityTraits` equivalent). For interactive items that must be announceable on both platforms, use `'button'` on the leaf `Pressable`; the `'menu'` role can stay on the container as an iOS hint. iOS-supported roles that survive to VoiceOver: `button`, `link`, `search`, `image`, `keyboardkey`, `text`, `adjustable`, `imagebutton`, `header`, `summary`, `none`. 2. **Never hardcode English** in `accessibilityLabel`/`accessibilityHint`/announcement strings. For SDK `Button`, pass `accessibilityLabelKey='a11y/...'` (and `accessibilityLabelParams` when needed). For non-Button components, use `useA11yLabel('a11y/...', params)` or `t('a11y/...')` directly when you don't need the disabled-state short-circuit. Add the key to all 12 locale files in `package/src/i18n/`. 3. **Gate behavior on `useAccessibilityContext().enabled`.** A11y is opt-in. New listeners, subscriptions, and announcer mounts must be no-ops when `enabled` is false. New `accessibilityRole`/`accessibilityState` props are fine to render unconditionally — they cost ~zero. 4. **One focusable target per action.** Don't nest `Pressable` inside `Pressable`. Mark inner decorative views with `accessibilityElementsHidden` (iOS) + `importantForAccessibility='no-hide-descendants'` (Android) so the parent carries the label. 5. **Decorative visuals stay hidden from AT.** Icon-only buttons must carry an `accessibilityLabel` on the wrapper, and the SVG icon should be hidden. 6. **Backward-compatible.** All new props are optional. Component override pattern (`WithComponents`) must continue to work. +7. **Floating overlays need a tall parent for Android a11y.** Android's accessibility framework uses each view's measured layout bounds (`getBoundsInScreen()`) to decide what's focusable at a given screen coordinate. Children rendered *outside* their parent's measured rect get pruned / reported with inverted (empty) bounds — RN doesn't clip them by default so the visual looks fine, but TalkBack can't focus them and `uiautomator dump` shows degenerate `[x,y][x,y]` rects. **Implication:** when mounting a floating overlay (autocomplete picker, popover, tooltip), pick a parent whose measured bounds contain the rendered area. A `flex: 1` Channel-area parent works; a `position: absolute` wrapper inside a small input-row container does not. This is why `AutoCompleteSuggestionList` is mounted from `MessageList` / `MessageFlashList` (full-screen flex parent) instead of `MessageComposer` (~228px composer parent — the suggestion list overflowed it and was a11y-invisible). Verify with `adb shell uiautomator dump` after mounting; if rows show `top > bottom`, the parent isn't tall enough. + +## Diagnosing Android a11y with `uiautomator dump` + +When TalkBack ignores a view, can't focus a row, or seems to focus the wrong thing, dump the a11y tree and read the bounds directly. This was the load-bearing technique behind rule #7. + +**Procedure:** + +```bash +# 1. Put the app in the state you want to inspect (open the suggestion list, modal, etc.) +adb shell uiautomator dump /sdcard/window_dump.xml +adb pull /sdcard/window_dump.xml ./window_dump.xml + +# 2. Find your view. Grep by a known accessibilityLabel, text, or resource-id. +grep -A2 'text="@channel"' window_dump.xml +grep -B1 -A1 'content-desc="Mention suggestions available"' window_dump.xml +``` + +**Reading the output:** each `` has `bounds="[left,top][right,bottom]"` in screen pixels. + +| Symptom in `bounds` | Meaning | +|---|---| +| `[0,0][0,0]` | View never measured (mid-mount or detached from a11y tree). | +| `top > bottom` or `left > right` | Clipped by parent — `getBoundsInScreen()` clamped to a smaller ancestor. TalkBack treats this as empty. **Move the mount to a taller parent.** | +| Bounds outside the screen | Off-screen or pushed by keyboard; TalkBack won't focus it. | +| Bounds present, `clickable="true"`, `focusable="true"`, but still unreachable | Check `importantForAccessibility` chain and sibling z-order — something opaque may be above it. | + +**Other useful node attributes:** +- `class` — the underlying Android View class (`android.widget.HorizontalScrollView`, etc.). Useful when an RN component compiles to something unexpected. +- `package` — confirms you're looking at *your* app, not the system UI. +- `clickable`, `focusable`, `enabled` — these must all be true for a row to take TalkBack focus. +- `content-desc` — what TalkBack will speak. If empty when you expected an `accessibilityLabel`, the prop didn't bind to the right native view. + +**Caveats:** +- The dump is a single snapshot. If the view animates in, dump after the animation settles. +- TalkBack can affect what gets dumped on some devices — turn it off when diagnosing layout, on when diagnosing focus order. +- The XML reflects native bounds *after* RN's layout pass, so a wrong dump usually means RN gave Android wrong layout, not that the dump lied. ## Where to put what @@ -54,6 +91,8 @@ Two complementary mechanisms: Use `useAnnounceOnStateChange(message, { debounceMs, priority })` for transitions (AI typing, indicators) — it dedups consecutive same-message calls and applies a default 250ms debounce. +Use `useAnnounceOnShow(visible, message, { delayMs, priority })` for **transient surfaces that appear and disappear repeatedly** (modals, sheets, autocomplete pickers). It announces on each `visible: false → true` transition and resets on hide, so the next show re-announces. The two announcer hooks are not interchangeable: `useAnnounceOnStateChange` dedupes on string equality (correct for "AI is typing" → "AI is generating"), while `useAnnounceOnShow` dedupes on visibility transition (correct for "Suggestions available" each time the picker reopens with the same label). Pair with `useA11yLabel('a11y/…')` for the message so the announcement is i18n'd and gated on the SDK's a11y opt-in. + For incoming messages: use `useIncomingMessageAnnouncements({ channel, ownUserId, activeThreadId, threadList })`. It throttles to 1 announcement per second, batches multi-message bursts, and bounds memory at 500 announced ids. ### 3) Modal / sheet focus trap @@ -104,6 +143,7 @@ Disable spring animations and limit fade durations when this is true. - **Subscribing to `AccessibilityInfo` events when `enabled` is false** — wastes a listener slot. The provided hooks already gate on this; mirror that pattern. - **`useScreenReaderEnabled()` inside list items** — toggling SR re-renders every item. Only subscribe in components that actually swap UI on SR (`AudioRecorder`, `ImageGallery`, `Message`'s alternative-actions button). - **Using live regions to force-announce static modal text** — fix the dialog semantics instead (`useResolvedModalAccessibilityProps` + correct `accessibilityRole='alert'`). +- **Auto-focusing the suggestions/listbox of a typeahead on appear** — anti-pattern for combobox-style UI. Each keystroke that produces new suggestions would re-steal focus from the active `TextInput`, breaking continuous typing. ARIA combobox spec specifically forbids this; iOS VoiceOver and Android TalkBack have the same constraint. Announce on show via `useAnnounceOnShow` instead and rely on standard screen-reader navigation gestures (swipe) for the user to reach the list when they want. - **Mutating `AccessibilityInfo` polyfill state in tests without restoring** — use the mock-builder helpers in `package/src/mock-builders/accessibility/` (or jest.mock the module) and reset between tests. ## Testing requirements per change @@ -136,9 +176,11 @@ Recommended for non-trivial changes: - `package/src/components/Accessibility/hooks/useIncomingMessageAnnouncements.ts` — port of stream-chat-react's hook. - `package/src/a11y/hooks/useA11yLabel.ts` — translated-label-or-undefined. - `package/src/a11y/hooks/useResolvedModalAccessibilityProps.ts` — modal a11y props. +- `package/src/a11y/hooks/useAnnounceOnShow.ts` — announce-on-visible helper for transient surfaces. - `package/src/components/ui/Avatar/Avatar.tsx` — example of `name` + `useA11yLabel` usage. -- `package/src/components/UIComponents/BottomSheetModal.tsx` — example of `useResolvedModalAccessibilityProps`. +- `package/src/components/UIComponents/BottomSheetModal.tsx` — example of `useResolvedModalAccessibilityProps` and `useAnnounceOnShow`. - `package/src/components/AITypingIndicatorView/AITypingIndicatorView.tsx` — example of `useAnnounceOnStateChange`. +- `package/src/components/AutoCompleteInput/AutoCompleteSuggestionList.tsx` — example of `useAnnounceOnShow` with a per-trigger label (mention/command/emoji). ## Cross-SDK parity diff --git a/.yarnrc.yml b/.yarnrc.yml index 0de43bcd5c..e4a698db6a 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -14,6 +14,9 @@ nodeLinker: node-modules npmMinimalAgeGate: 3d +npmPreapprovedPackages: + - stream-chat + npmPublishProvenance: true yarnPath: .yarn/releases/yarn-4.15.0.cjs diff --git a/ai-docs/accessibility.md b/ai-docs/accessibility.md index d4db899d2a..3a460f397a 100644 --- a/ai-docs/accessibility.md +++ b/ai-docs/accessibility.md @@ -85,7 +85,8 @@ Importable from `stream-chat-react-native`: - `useReducedMotionPreference()` — live boolean from `AccessibilityInfo.reduceMotionChanged`. - `useResolvedModalAccessibilityProps()` — returns `{ accessibilityViewIsModal, importantForAccessibility }` for the active platform. - `useA11yLabel(key, params)` — translated label or `undefined` when disabled. -- `useAnnounceOnStateChange(message, options)` — debounced live-region helper. +- `useAnnounceOnStateChange(message, options)` — debounced live-region helper that announces on message **change** and dedupes consecutive identical strings (good for state-driven labels like loading/error transitions). +- `useAnnounceOnShow(visible, message, { delayMs?, priority? })` — announces on each `visible: false → true` transition and resets on hide, so re-shows re-announce. Pair with `useA11yLabel(...)` for the message. Used by `BottomSheetModal` and `AutoCompleteSuggestionList`. - `useIncomingMessageAnnouncements({ channel, ownUserId, activeThreadId, threadList })` — throttled, batched announcement of new messages. - `` — connection-state announcer (mounted by ``). diff --git a/examples/SampleApp/android/gradle/gradle-daemon-jvm.properties b/examples/SampleApp/android/gradle/gradle-daemon-jvm.properties new file mode 100644 index 0000000000..6c1139ec06 --- /dev/null +++ b/examples/SampleApp/android/gradle/gradle-daemon-jvm.properties @@ -0,0 +1,12 @@ +#This file is generated by updateDaemonJvm +toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/ec7520a1e057cd116f9544c42142a16b/redirect +toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/4c4f879899012ff0a8b2e2117df03b0e/redirect +toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/ec7520a1e057cd116f9544c42142a16b/redirect +toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/4c4f879899012ff0a8b2e2117df03b0e/redirect +toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/73bcfb608d1fde9fb62e462f834a3299/redirect +toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/846ee0d876d26a26f37aa1ce8de73224/redirect +toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/ec7520a1e057cd116f9544c42142a16b/redirect +toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/4c4f879899012ff0a8b2e2117df03b0e/redirect +toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/9482ddec596298c84656d31d16652665/redirect +toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/39701d92e1756bb2f141eb67cd4c660e/redirect +toolchainVersion=21 diff --git a/examples/SampleApp/package.json b/examples/SampleApp/package.json index 9f9cb3ec58..ce83541a8e 100644 --- a/examples/SampleApp/package.json +++ b/examples/SampleApp/package.json @@ -64,7 +64,7 @@ "react-native-teleport": "^1.1.7", "react-native-video": "^6.19.2", "react-native-worklets": "^0.8.3", - "stream-chat": "^9.44.2", + "stream-chat": "^9.45.0", "stream-chat-react-native": "workspace:^", "stream-chat-react-native-core": "workspace:^" }, diff --git a/package/package.json b/package/package.json index f2a21b097a..574137bfc8 100644 --- a/package/package.json +++ b/package/package.json @@ -78,7 +78,7 @@ "path": "0.12.7", "react-native-markdown-package": "1.8.2", "react-native-url-polyfill": "^2.0.0", - "stream-chat": "^9.44.2", + "stream-chat": "^9.45.0", "use-sync-external-store": "^1.5.0" }, "peerDependencies": { diff --git a/package/src/a11y/hooks/useAnnounceOnShow.ts b/package/src/a11y/hooks/useAnnounceOnShow.ts new file mode 100644 index 0000000000..d186c9af1b --- /dev/null +++ b/package/src/a11y/hooks/useAnnounceOnShow.ts @@ -0,0 +1,44 @@ +import { useEffect, useRef } from 'react'; + +import { useAccessibilityAnnouncer } from '../../components/Accessibility/useAccessibilityAnnouncer'; + +type Options = { + /** Delay before the announcement fires; lets entrance animations settle. */ + delayMs?: number; + priority?: 'polite' | 'assertive'; +}; + +/** + * Announces `message` once each time `visible` flips from false to true. + * Resets when `visible` flips back to false, so the next show re-announces — + * unlike `useAnnounceOnStateChange`, which announces on string change and + * dedupes consecutive identical strings. + * + * Use this for transient surfaces that appear and disappear repeatedly within + * a session (modals, autocomplete pickers, bottom sheets) where the user + * benefits from hearing the affordance on every reappearance. + * + * When `message` is undefined (typically because `useA11yLabel` returned + * undefined — a11y disabled or key missing), the hook is a no-op. + */ +export const useAnnounceOnShow = ( + visible: boolean, + message: string | undefined, + { delayMs = 500, priority = 'polite' }: Options = {}, +) => { + const announce = useAccessibilityAnnouncer(); + const announcedRef = useRef(false); + + useEffect(() => { + if (!visible) { + announcedRef.current = false; + return; + } + if (!message || announcedRef.current) return; + const id = setTimeout(() => { + announce(message, priority); + announcedRef.current = true; + }, delayMs); + return () => clearTimeout(id); + }, [visible, message, announce, priority, delayMs]); +}; diff --git a/package/src/a11y/index.ts b/package/src/a11y/index.ts index 46279098ce..ffbd8b290f 100644 --- a/package/src/a11y/index.ts +++ b/package/src/a11y/index.ts @@ -3,5 +3,6 @@ export * from './hooks/useScreenReaderEnabled'; export * from './hooks/useReducedMotionPreference'; export * from './hooks/useResolvedModalAccessibilityProps'; export * from './hooks/useAnnounceOnStateChange'; +export * from './hooks/useAnnounceOnShow'; export * from './hooks/useA11yLabel'; export * from './hooks/useAccessibilityActivateAction'; diff --git a/package/src/components/AutoCompleteInput/AutoCompleteInput.tsx b/package/src/components/AutoCompleteInput/AutoCompleteInput.tsx index 8b1ea6f679..764ee5851d 100644 --- a/package/src/components/AutoCompleteInput/AutoCompleteInput.tsx +++ b/package/src/components/AutoCompleteInput/AutoCompleteInput.tsx @@ -165,8 +165,20 @@ const AutoCompleteInputWithContext = (props: AutoCompleteInputPropsWithContext) } }, [text]); + const nativeInputRef = useRef(null); + const clearState = useCallback(() => { setLocalText(''); + // iOS UITextView caches its intrinsicContentSize while focused, so a + // controlled `value` change to '' after a multiline send doesn't shrink + // the input back to single line height and UIKit keeps rendering at the + // previously cached focused size until blur. Not particularly sure which + // RN version regressed this, but 0.85.3 for sure has the bug. Forcebly + // setting its native prop forces UITextView to reconcile its content size + // and update accordingly. + if (Platform.OS === 'ios') { + nativeInputRef.current?.setNativeProps({ text: '' }); + } }, []); const restoreState = useStableCallback((restoredText: string) => { @@ -175,6 +187,7 @@ const AutoCompleteInputWithContext = (props: AutoCompleteInputPropsWithContext) const setExtendedInputRef = useCallback( (ref: RNTextInput | null) => { + nativeInputRef.current = ref; if (!ref) { setRef(setInputBoxRef, null); return; diff --git a/package/src/components/AutoCompleteInput/AutoCompleteSuggestionHeader.tsx b/package/src/components/AutoCompleteInput/AutoCompleteSuggestionHeader.tsx index 7c117f325b..a912d5c57c 100644 --- a/package/src/components/AutoCompleteInput/AutoCompleteSuggestionHeader.tsx +++ b/package/src/components/AutoCompleteInput/AutoCompleteSuggestionHeader.tsx @@ -27,6 +27,7 @@ export const CommandsHeader: React.FC = () => return ( @@ -52,7 +53,7 @@ export const EmojiHeader: React.FC = ({ query return ( - + {`Emoji matching "${queryText}"`} diff --git a/package/src/components/AutoCompleteInput/AutoCompleteSuggestionItem.tsx b/package/src/components/AutoCompleteInput/AutoCompleteSuggestionItem.tsx index 03b9d1954d..771e225f0e 100644 --- a/package/src/components/AutoCompleteInput/AutoCompleteSuggestionItem.tsx +++ b/package/src/components/AutoCompleteInput/AutoCompleteSuggestionItem.tsx @@ -1,46 +1,48 @@ import React, { useCallback, useMemo } from 'react'; import { Pressable, StyleSheet, Text, View } from 'react-native'; -import type { CommandSuggestion, TextComposerSuggestion, UserSuggestion } from 'stream-chat'; +import type { CommandSuggestion, MentionSuggestion, TextComposerSuggestion } from 'stream-chat'; import { AutoCompleteSuggestionCommandIcon } from './AutoCompleteSuggestionCommandIcon'; - +import { + MentionBroadcastItem, + MentionRoleItem, + MentionUserGroupItem, + MentionUserItem, +} from './mentionItems'; + +import { useComponentsContext } from '../../contexts/componentsContext/ComponentsContext'; import { useIsCommandDisabled } from '../../contexts/messageInputContext/hooks/useIsCommandDisabled'; import { useMessageComposer } from '../../contexts/messageInputContext/hooks/useMessageComposer'; import { useTheme } from '../../contexts/themeContext/ThemeContext'; import { primitives } from '../../theme'; import type { Emoji } from '../../types/types'; -import { UserAvatar } from '../ui/Avatar/UserAvatar'; - export type AutoCompleteSuggestionItemProps = { itemProps: TextComposerSuggestion; triggerType?: string; }; -export const MentionSuggestionItem = (item: UserSuggestion) => { - const { id, name, online } = item; - const { - theme: { - messageComposer: { - suggestions: { - mention: { column, container: mentionContainer, name: nameStyle }, - }, - }, - }, - } = useTheme(); - const styles = useStyles(); - - return ( - - - - - {name || id} - - - - ); +/** + * Default `@`-trigger row dispatcher. Routes a `MentionSuggestion` to the + * per type component. Each per type component is its own export and can be + * composed by integrators who override this dispatcher via + * `ComponentsContext.MentionSuggestionItem`. + */ +export const MentionSuggestionItem = (item: MentionSuggestion) => { + switch (item.mentionType) { + case 'user': + return ; + case 'channel': + case 'here': + return ; + case 'role': + return ; + case 'user_group': + return ; + default: + return null; + } }; export const EmojiSuggestionItem = (item: Emoji) => { @@ -114,9 +116,13 @@ const SuggestionItem = ({ item: TextComposerSuggestion; triggerType?: string; }) => { + // Resolve via context so integrators can swap the mention dispatcher alone + // (e.g. to render a custom @channel row) without re-implementing the + // emoji/command branches of AutoCompleteSuggestionItem. + const { MentionSuggestionItem } = useComponentsContext(); switch (triggerType) { case 'mention': - return ; + return ; case 'emoji': return ; case 'command': @@ -147,6 +153,8 @@ const UnMemoizedAutoCompleteSuggestionItem = ({ return ( [{ opacity: pressed ? 0.8 : 1 }, itemStyle]} testID='suggestion-item' @@ -194,11 +202,6 @@ const useStyles = () => { fontSize: primitives.typographyFontSizeMd, color: semantics.textTertiary, }, - column: { - flex: 1, - justifyContent: 'space-evenly', - paddingLeft: 8, - }, container: { alignItems: 'center', flexDirection: 'row', @@ -211,16 +214,6 @@ const useStyles = () => { paddingHorizontal: primitives.spacingSm, paddingVertical: primitives.spacingXs, }, - name: { - fontSize: primitives.typographyFontSizeMd, - lineHeight: primitives.typographyLineHeightNormal, - color: semantics.textPrimary, - paddingBottom: 2, - }, - tag: { - fontSize: 12, - fontWeight: '600', - }, text: { fontSize: primitives.typographyFontSizeMd, fontWeight: primitives.typographyFontWeightRegular, diff --git a/package/src/components/AutoCompleteInput/AutoCompleteSuggestionList.tsx b/package/src/components/AutoCompleteInput/AutoCompleteSuggestionList.tsx index 0f490ae913..af4900de14 100644 --- a/package/src/components/AutoCompleteInput/AutoCompleteSuggestionList.tsx +++ b/package/src/components/AutoCompleteInput/AutoCompleteSuggestionList.tsx @@ -7,13 +7,17 @@ import Animated, { LinearTransition, ZoomIn, ZoomOut } from 'react-native-reanim import { SearchSourceState, TextComposerState, TextComposerSuggestion } from 'stream-chat'; +import { useA11yLabel } from '../../a11y/hooks/useA11yLabel'; +import { useAnnounceOnShow } from '../../a11y/hooks/useAnnounceOnShow'; import { useComponentsContext } from '../../contexts/componentsContext/ComponentsContext'; import { useMessageComposer } from '../../contexts/messageInputContext/hooks/useMessageComposer'; import { useTheme } from '../../contexts/themeContext/ThemeContext'; import { useStableCallback } from '../../hooks'; import { useStateStore } from '../../hooks/useStateStore'; +import { primitives } from '../../theme'; +import { ClippingFadeBottom } from '../UIComponents/ClippingFadeBottom'; -export const DEFAULT_LIST_HEIGHT = 208; +export const DEFAULT_LIST_HEIGHT = 240; export type AutoCompleteSuggestionListProps = Record; @@ -48,6 +52,7 @@ export const AutoCompleteSuggestionList = () => { const { theme: { + semantics, messageComposer: { container: { maxHeight }, }, @@ -72,12 +77,25 @@ export const AutoCompleteSuggestionList = () => { const loadMore = useStableCallback(() => suggestions?.searchSource.search()); + // Polite announcement when the suggestion list appears. Different label per + // trigger type so the user knows whether they're looking at mentions, + // commands, or emoji without having to swipe in to find out. + const announceLabelKey = + triggerType === 'command' + ? 'a11y/Command suggestions available' + : triggerType === 'emoji' + ? 'a11y/Emoji suggestions available' + : 'a11y/Mention suggestions available'; + const announceLabel = useA11yLabel(announceLabelKey); + useAnnounceOnShow(!!(showList && triggerType), announceLabel); + if (!showList || !triggerType) { return null; } return ( { onEndReachedThreshold={0.1} renderItem={renderItem} style={[styles.flatlist, { maxHeight }]} + contentContainerStyle={styles.flatlistContentContainer} testID={'auto-complete-suggestion-list'} /> + ); }; @@ -103,7 +123,7 @@ const useStyles = () => { theme: { semantics, messageComposer: { - suggestionsListContainer: { flatlist }, + suggestionsListContainer: { flatlist, flatlistContentContainer }, }, }, } = useTheme(); @@ -116,6 +136,11 @@ const useStyles = () => { borderTopWidth: 1, borderColor: semantics.borderCoreDefault, }, + flatlistContentContainer: { + paddingVertical: primitives.spacingXs, + backgroundColor: 'transparent', + ...flatlistContentContainer, + }, flatlist: { backgroundColor: semantics.backgroundCoreElevation1, shadowColor: semantics.textOnAccent, @@ -131,7 +156,7 @@ const useStyles = () => { ...flatlist, }, }), - [semantics, flatlist], + [semantics, flatlist, flatlistContentContainer], ); }; diff --git a/package/src/components/AutoCompleteInput/mentionItems/EnhancedMentionContent.tsx b/package/src/components/AutoCompleteInput/mentionItems/EnhancedMentionContent.tsx new file mode 100644 index 0000000000..77aa84ae5e --- /dev/null +++ b/package/src/components/AutoCompleteInput/mentionItems/EnhancedMentionContent.tsx @@ -0,0 +1,71 @@ +import React, { ReactNode, useMemo } from 'react'; +import { StyleSheet, Text, View } from 'react-native'; + +import { useTheme } from '../../../contexts/themeContext/ThemeContext'; +import { primitives } from '../../../theme'; + +export type EnhancedMentionContentProps = { + title: ReactNode; + subtitle?: ReactNode; + testID?: string; +}; + +/** + * Title + optional subtitle pair used by every non-user mention row + * (channel / here / role / user_group). Override styling via + * `theme.messageComposer.suggestions.mention.enhancedMention{Container,Title,Subtitle}`. + */ +export const EnhancedMentionContent = ({ + subtitle, + testID, + title, +}: EnhancedMentionContentProps) => { + const { + theme: { + semantics, + messageComposer: { + suggestions: { + mention: { enhancedMentionContainer, enhancedMentionSubtitle, enhancedMentionTitle }, + }, + }, + }, + } = useTheme(); + const styles = useStyles(); + + return ( + + + {title} + + {subtitle ? ( + + {subtitle} + + ) : null} + + ); +}; + +const useStyles = () => + useMemo( + () => + StyleSheet.create({ + container: { + gap: primitives.spacingXxxs, + }, + subtitle: { + fontSize: primitives.typographyFontSizeXs, + lineHeight: primitives.typographyLineHeightTight, + }, + title: { + fontSize: primitives.typographyFontSizeMd, + lineHeight: primitives.typographyLineHeightNormal, + }, + }), + [], + ); diff --git a/package/src/components/AutoCompleteInput/mentionItems/EnhancedMentionIcon.tsx b/package/src/components/AutoCompleteInput/mentionItems/EnhancedMentionIcon.tsx new file mode 100644 index 0000000000..abc3b14a1f --- /dev/null +++ b/package/src/components/AutoCompleteInput/mentionItems/EnhancedMentionIcon.tsx @@ -0,0 +1,71 @@ +import React, { useMemo } from 'react'; +import { StyleSheet, View } from 'react-native'; + +import { useTheme } from '../../../contexts/themeContext/ThemeContext'; +import type { IconProps } from '../../../icons/utils/base'; +import { primitives } from '../../../theme'; + +export type EnhancedMentionIconProps = { + /** + * Any icon component from `package/src/icons` (or a custom one matching the + * same `IconProps` shape). The wrapper standardizes size + color and wraps + * the icon in a circular chip — per-type mention items don't have to know + * about any of that. + */ + Icon: React.ComponentType; + /** + * Icon size in px. Defaults to 16. The surrounding chip scales with this. + */ + size?: IconProps['size']; + /** + * Stroke / fill color. Defaults to `semantics.textSecondary`. + */ + color?: IconProps['pathFill']; +}; + +/** + * Universal wrapper for non-user mention-row icons. Renders the supplied + * `Icon` inside a circular chip. Override chip styling via + * `theme.messageComposer.suggestions.mention.enhancedMentionIcon`. + */ +export const EnhancedMentionIcon = ({ color, Icon, size = 32 }: EnhancedMentionIconProps) => { + const { + theme: { + semantics, + messageComposer: { + suggestions: { + mention: { enhancedMentionIcon }, + }, + }, + }, + } = useTheme(); + const styles = useStyles(size); + + return ( + + + + ); +}; + +const useStyles = (chipSize: number) => { + const { + theme: { semantics }, + } = useTheme(); + return useMemo( + () => + StyleSheet.create({ + chip: { + alignItems: 'center', + backgroundColor: semantics.backgroundCoreSurfaceSubtle, + borderColor: semantics.borderCoreSubtle, + borderRadius: primitives.radiusMax, + borderWidth: 1, + height: chipSize, + justifyContent: 'center', + width: chipSize, + }, + }), + [chipSize, semantics.backgroundCoreSurfaceSubtle, semantics.borderCoreSubtle], + ); +}; diff --git a/package/src/components/AutoCompleteInput/mentionItems/MentionBroadcastItem.tsx b/package/src/components/AutoCompleteInput/mentionItems/MentionBroadcastItem.tsx new file mode 100644 index 0000000000..5b90332e61 --- /dev/null +++ b/package/src/components/AutoCompleteInput/mentionItems/MentionBroadcastItem.tsx @@ -0,0 +1,36 @@ +import React from 'react'; + +import type { ChannelMentionSuggestion, HereMentionSuggestion } from 'stream-chat'; + +import { EnhancedMentionContent } from './EnhancedMentionContent'; +import { EnhancedMentionIcon } from './EnhancedMentionIcon'; +import { MentionItem } from './MentionItem'; + +import { useTranslationContext } from '../../../contexts/translationContext/TranslationContext'; +import { Megaphone } from '../../../icons/megaphone'; + +export type MentionBroadcastItemProps = { + entity: ChannelMentionSuggestion | HereMentionSuggestion; +}; + +// @channel and @here are literal SDK command keywords (matching mentioned_channel +// and mentioned_here on the wire). The title is not localized; only the +// description below it is. +const TITLE = { channel: '@channel', here: '@here' } as const; +const SUBTITLE_KEY = { + channel: 'mention/Channel Description', + here: 'mention/Here Description', +} as const; + +export const MentionBroadcastItem = ({ entity }: MentionBroadcastItemProps) => { + const { t } = useTranslationContext(); + return ( + }> + + + ); +}; diff --git a/package/src/components/AutoCompleteInput/mentionItems/MentionItem.tsx b/package/src/components/AutoCompleteInput/mentionItems/MentionItem.tsx new file mode 100644 index 0000000000..e720b51f36 --- /dev/null +++ b/package/src/components/AutoCompleteInput/mentionItems/MentionItem.tsx @@ -0,0 +1,59 @@ +import React, { PropsWithChildren, ReactNode, useMemo } from 'react'; +import { StyleSheet, View } from 'react-native'; + +import { useTheme } from '../../../contexts/themeContext/ThemeContext'; +import { primitives } from '../../../theme'; + +export type MentionItemProps = PropsWithChildren<{ + /** + * Leading visual rendered to the left of the row. UserAvatar for user + * mentions, an `EnhancedMentionIcon` for the rest. + */ + leading?: ReactNode; + testID?: string; +}>; + +/** + * Layout primitive for every mention-suggestion row: `[leading | content]`. + * The per-type content (tokenized user name, or `EnhancedMentionContent` for + * channel/here/role/user_group) is passed as children. Container and column + * styles come from `theme.messageComposer.suggestions.mention`. + */ +export const MentionItem = ({ children, leading, testID }: MentionItemProps) => { + const { + theme: { + messageComposer: { + suggestions: { + mention: { column, container }, + }, + }, + }, + } = useTheme(); + const styles = useStyles(); + + return ( + + {leading} + {children} + + ); +}; + +const useStyles = () => + useMemo( + () => + StyleSheet.create({ + column: { + flex: 1, + justifyContent: 'space-evenly', + }, + container: { + alignItems: 'center', + flexDirection: 'row', + paddingHorizontal: primitives.spacingXs, + paddingVertical: primitives.spacingXs, + gap: primitives.spacingSm, + }, + }), + [], + ); diff --git a/package/src/components/AutoCompleteInput/mentionItems/MentionRoleItem.tsx b/package/src/components/AutoCompleteInput/mentionItems/MentionRoleItem.tsx new file mode 100644 index 0000000000..55f0c686cc --- /dev/null +++ b/package/src/components/AutoCompleteInput/mentionItems/MentionRoleItem.tsx @@ -0,0 +1,27 @@ +import React from 'react'; + +import type { RoleMentionSuggestion } from 'stream-chat'; + +import { EnhancedMentionContent } from './EnhancedMentionContent'; +import { EnhancedMentionIcon } from './EnhancedMentionIcon'; +import { MentionItem } from './MentionItem'; + +import { useTranslationContext } from '../../../contexts/translationContext/TranslationContext'; +import { Shield } from '../../../icons/shield'; + +export type MentionRoleItemProps = { + entity: RoleMentionSuggestion; +}; + +export const MentionRoleItem = ({ entity }: MentionRoleItemProps) => { + const { t } = useTranslationContext(); + return ( + }> + + + ); +}; diff --git a/package/src/components/AutoCompleteInput/mentionItems/MentionUserGroupItem.tsx b/package/src/components/AutoCompleteInput/mentionItems/MentionUserGroupItem.tsx new file mode 100644 index 0000000000..67f1152a74 --- /dev/null +++ b/package/src/components/AutoCompleteInput/mentionItems/MentionUserGroupItem.tsx @@ -0,0 +1,23 @@ +import React from 'react'; + +import type { UserGroupMentionSuggestion } from 'stream-chat'; + +import { EnhancedMentionContent } from './EnhancedMentionContent'; +import { EnhancedMentionIcon } from './EnhancedMentionIcon'; +import { MentionItem } from './MentionItem'; + +import { PeopleIcon } from '../../../icons/users'; + +export type MentionUserGroupItemProps = { + entity: UserGroupMentionSuggestion; +}; + +export const MentionUserGroupItem = ({ entity }: MentionUserGroupItemProps) => ( + }> + + +); diff --git a/package/src/components/AutoCompleteInput/mentionItems/MentionUserItem.tsx b/package/src/components/AutoCompleteInput/mentionItems/MentionUserItem.tsx new file mode 100644 index 0000000000..19c12ca6d8 --- /dev/null +++ b/package/src/components/AutoCompleteInput/mentionItems/MentionUserItem.tsx @@ -0,0 +1,50 @@ +import React, { useMemo } from 'react'; + +import type { UserSuggestion } from 'stream-chat'; + +import { MentionItem } from './MentionItem'; +import { TokenizedSuggestionParts } from './TokenizedSuggestionParts'; + +import { useTheme } from '../../../contexts/themeContext/ThemeContext'; +import { primitives } from '../../../theme'; +import { UserAvatar } from '../../ui/Avatar/UserAvatar'; + +export type MentionUserItemProps = { + entity: UserSuggestion; +}; + +export const MentionUserItem = ({ entity }: MentionUserItemProps) => { + const styles = useStyles(); + + return ( + } + > + + + ); +}; + +const useStyles = () => { + const { + theme: { semantics }, + } = useTheme(); + return useMemo( + () => ({ + match: { fontWeight: primitives.typographyFontWeightBold }, + name: { + color: semantics.textPrimary, + fontSize: primitives.typographyFontSizeMd, + lineHeight: primitives.typographyLineHeightNormal, + paddingBottom: 2, + }, + }), + [semantics.textPrimary], + ); +}; diff --git a/package/src/components/AutoCompleteInput/mentionItems/TokenizedSuggestionParts.tsx b/package/src/components/AutoCompleteInput/mentionItems/TokenizedSuggestionParts.tsx new file mode 100644 index 0000000000..a61c84d516 --- /dev/null +++ b/package/src/components/AutoCompleteInput/mentionItems/TokenizedSuggestionParts.tsx @@ -0,0 +1,56 @@ +import React from 'react'; +import { StyleProp, Text, TextStyle } from 'react-native'; + +import type { TokenizationPayload } from 'stream-chat'; + +export type TokenizedSuggestionPartsProps = { + /** + * Token + parts payload produced by the stream-chat-js text composer search + * source. When the consumer matches against a display name the source splits + * the name into substrings around the matched token; we render each part and + * bold whichever part case-insensitively equals the token. + */ + tokenizedDisplayName?: TokenizationPayload['tokenizedDisplayName']; + /** + * Fallback string rendered when the tokenized payload is absent (or empty). + */ + fallback?: string; + style?: StyleProp; + matchStyle?: StyleProp; + testID?: string; +}; + +const partMatchesToken = (part: string, token: string) => + token.length > 0 && part.toLowerCase() === token.toLowerCase(); + +export const TokenizedSuggestionParts = ({ + fallback, + matchStyle, + style, + tokenizedDisplayName, + testID, +}: TokenizedSuggestionPartsProps) => { + if (!tokenizedDisplayName || tokenizedDisplayName.parts.length === 0) { + if (!fallback) return null; + return ( + + {fallback} + + ); + } + + const { parts, token } = tokenizedDisplayName; + return ( + + {parts.map((part, index) => + partMatchesToken(part, token) ? ( + + {part} + + ) : ( + part + ), + )} + + ); +}; diff --git a/package/src/components/AutoCompleteInput/mentionItems/__tests__/MentionItems.test.tsx b/package/src/components/AutoCompleteInput/mentionItems/__tests__/MentionItems.test.tsx new file mode 100644 index 0000000000..049b453003 --- /dev/null +++ b/package/src/components/AutoCompleteInput/mentionItems/__tests__/MentionItems.test.tsx @@ -0,0 +1,129 @@ +import React from 'react'; + +import { cleanup, render } from '@testing-library/react-native'; + +// UserAvatar pulls in ComponentsContext defaults which transitively load +// stream-chat-js's CJS dist; that fails to resolve @babel/runtime when the +// SDK is consumed from a workspace symlink during tests. The avatar itself +// isn't what we assert on here, so substitute a no-op. +jest.mock('../../../ui/Avatar/UserAvatar', () => ({ + UserAvatar: () => null, +})); + +// Same reason — useMessageComposer (used by AutoCompleteSuggestionItem) pulls +// stream-chat-js's CJS dist at module load. The dispatcher we're testing +// doesn't use these hooks itself, so stub them. +jest.mock('../../../../contexts/messageInputContext/hooks/useMessageComposer', () => ({ + useMessageComposer: () => ({ textComposer: { handleSelect: () => {} } }), +})); +jest.mock('../../../../contexts/messageInputContext/hooks/useIsCommandDisabled', () => ({ + useIsCommandDisabled: () => false, +})); + +import type { + ChannelMentionSuggestion, + HereMentionSuggestion, + RoleMentionSuggestion, + UserGroupMentionSuggestion, + UserSuggestion, +} from 'stream-chat'; + +import { ThemeProvider } from '../../../../contexts/themeContext/ThemeContext'; +import { defaultTheme } from '../../../../contexts/themeContext/utils/theme'; +import { MentionSuggestionItem } from '../../AutoCompleteSuggestionItem'; + +const wrap = (ui: React.ReactElement) => + render({ui}); + +const userEntity: UserSuggestion = { + id: 'u1', + mentionType: 'user', + name: 'Alice', + tokenizedDisplayName: { parts: ['Alice'], token: '' }, +} as unknown as UserSuggestion; + +const channelEntity: ChannelMentionSuggestion = { + id: 'channel', + mentionType: 'channel', + name: 'channel', + tokenizedDisplayName: { parts: ['channel'], token: '' }, +} as unknown as ChannelMentionSuggestion; + +const hereEntity: HereMentionSuggestion = { + id: 'here', + mentionType: 'here', + name: 'here', + tokenizedDisplayName: { parts: ['here'], token: '' }, +} as unknown as HereMentionSuggestion; + +const roleEntity: RoleMentionSuggestion = { + id: 'admin', + mentionType: 'role', + name: 'admin', + tokenizedDisplayName: { parts: ['admin'], token: '' }, +} as unknown as RoleMentionSuggestion; + +const groupEntity: UserGroupMentionSuggestion = { + description: 'Engineering org', + id: 'eng', + memberCount: 42, + mentionType: 'user_group', + name: 'engineering', + tokenizedDisplayName: { parts: ['engineering'], token: '' }, +} as unknown as UserGroupMentionSuggestion; + +describe('MentionSuggestionItem', () => { + afterEach(() => { + cleanup(); + }); + + it('renders a user row with the display name', () => { + const { getByText } = wrap(); + expect(getByText('Alice')).toBeTruthy(); + }); + + it('renders a broadcast row for @channel with description subtitle', () => { + const { getByText } = wrap(); + expect(getByText('@channel')).toBeTruthy(); + expect(getByText('mention/Channel Description')).toBeTruthy(); + }); + + it('renders a broadcast row for @here with description subtitle', () => { + const { getByText } = wrap(); + expect(getByText('@here')).toBeTruthy(); + expect(getByText('mention/Here Description')).toBeTruthy(); + }); + + it('renders a role row with the role name and the notify subtitle', () => { + const { getByText } = wrap(); + expect(getByText('@admin')).toBeTruthy(); + // The test translation context echoes the i18n key; the {{ role }} + // interpolation is left as-is, which is enough to assert the right key + // was selected with the right argument. + expect(getByText(/Notify all .* members/)).toBeTruthy(); + }); + + it('renders a user group row with name + description', () => { + const { getByText } = wrap(); + expect(getByText('@engineering')).toBeTruthy(); + expect(getByText('Engineering org')).toBeTruthy(); + }); + + it('omits the subtitle slot when a user group has no description', () => { + const { queryByText } = wrap( + , + ); + expect(queryByText('Engineering org')).toBeNull(); + }); + + it('renders nothing for an unknown mention type', () => { + const { toJSON } = wrap( + , + ); + expect(toJSON()).toBeNull(); + }); +}); diff --git a/package/src/components/AutoCompleteInput/mentionItems/__tests__/TokenizedSuggestionParts.test.tsx b/package/src/components/AutoCompleteInput/mentionItems/__tests__/TokenizedSuggestionParts.test.tsx new file mode 100644 index 0000000000..ad4efab5a2 --- /dev/null +++ b/package/src/components/AutoCompleteInput/mentionItems/__tests__/TokenizedSuggestionParts.test.tsx @@ -0,0 +1,63 @@ +import React from 'react'; + +import { cleanup, render } from '@testing-library/react-native'; + +import { TokenizedSuggestionParts } from '../TokenizedSuggestionParts'; + +describe('TokenizedSuggestionParts', () => { + afterEach(() => { + cleanup(); + }); + + it('renders the fallback when no tokenized payload is provided', () => { + const { getByText } = render(); + expect(getByText('Jane Doe')).toBeTruthy(); + }); + + it('renders nothing when neither tokenized payload nor fallback is provided', () => { + const { toJSON } = render(); + expect(toJSON()).toBeNull(); + }); + + it('renders all parts when the tokenized payload is present', () => { + const { queryByText } = render( + , + ); + // The full name still reads through because RN concatenates nested Text children. + expect(queryByText('Alice')).toBeTruthy(); + }); + + it('wraps the matched part in a separate Text node so it can be styled', () => { + const matchStyle = { fontWeight: 'bold' as const }; + const { UNSAFE_root } = render( + , + ); + // The matched substring is rendered inside a nested Text — the only one + // carrying our matchStyle — so the count of styled descendants equals the + // number of matching parts (case-insensitive). + const matchedNodes = UNSAFE_root.findAll( + (node) => + typeof node.type !== 'string' && + Array.isArray(node.props?.style) === false && + node.props?.style === matchStyle, + ); + expect(matchedNodes.length).toBe(1); + }); + + it('matches case-insensitively', () => { + const matchStyle = { fontWeight: 'bold' as const }; + const { UNSAFE_root } = render( + , + ); + const matchedNodes = UNSAFE_root.findAll( + (node) => typeof node.type !== 'string' && node.props?.style === matchStyle, + ); + expect(matchedNodes.length).toBe(1); + }); +}); diff --git a/package/src/components/AutoCompleteInput/mentionItems/index.ts b/package/src/components/AutoCompleteInput/mentionItems/index.ts new file mode 100644 index 0000000000..3041603672 --- /dev/null +++ b/package/src/components/AutoCompleteInput/mentionItems/index.ts @@ -0,0 +1,16 @@ +export { EnhancedMentionContent } from './EnhancedMentionContent'; +export type { EnhancedMentionContentProps } from './EnhancedMentionContent'; +export { EnhancedMentionIcon } from './EnhancedMentionIcon'; +export type { EnhancedMentionIconProps } from './EnhancedMentionIcon'; +export { MentionBroadcastItem } from './MentionBroadcastItem'; +export type { MentionBroadcastItemProps } from './MentionBroadcastItem'; +export { MentionItem } from './MentionItem'; +export type { MentionItemProps } from './MentionItem'; +export { MentionRoleItem } from './MentionRoleItem'; +export type { MentionRoleItemProps } from './MentionRoleItem'; +export { MentionUserGroupItem } from './MentionUserGroupItem'; +export type { MentionUserGroupItemProps } from './MentionUserGroupItem'; +export { MentionUserItem } from './MentionUserItem'; +export type { MentionUserItemProps } from './MentionUserItem'; +export { TokenizedSuggestionParts } from './TokenizedSuggestionParts'; +export type { TokenizedSuggestionPartsProps } from './TokenizedSuggestionParts'; diff --git a/package/src/components/Message/Message.tsx b/package/src/components/Message/Message.tsx index 57768e813e..bae6caa77c 100644 --- a/package/src/components/Message/Message.tsx +++ b/package/src/components/Message/Message.tsx @@ -11,7 +11,7 @@ import { import { useSafeAreaInsets } from 'react-native-safe-area-context'; import { Portal } from 'react-native-teleport'; -import type { Attachment, LocalMessage, UserResponse } from 'stream-chat'; +import type { Attachment, LocalMessage, MentionEntity, UserResponse } from 'stream-chat'; import { useCreateMessageContext } from './hooks/useCreateMessageContext'; import { useMessageActionHandlers } from './hooks/useMessageActionHandlers'; @@ -93,7 +93,19 @@ export type TouchableEmitter = | 'messageReplies' | 'reactionList'; -export type TextMentionTouchableHandlerAdditionalInfo = { user?: UserResponse }; +export type TextMentionTouchableHandlerAdditionalInfo = { + /** + * The typed mention entity for the pressed mention (user / channel / here / + * role / user_group). Always populated by the default renderText pipeline; + * undefined only when a custom renderer doesn't resolve a match. + */ + mentionedEntity?: MentionEntity; + /** + * Back-compat: still populated when the mention is a user, so existing + * integrators reading `additionalInfo.user` keep working. + */ + user?: UserResponse; +}; export type TextMentionTouchableHandlerPayload = { emitter: 'textMention'; diff --git a/package/src/components/Message/MessageItemView/MessageTextContainer.tsx b/package/src/components/Message/MessageItemView/MessageTextContainer.tsx index bc2d06f7ce..24e48488f2 100644 --- a/package/src/components/Message/MessageItemView/MessageTextContainer.tsx +++ b/package/src/components/Message/MessageItemView/MessageTextContainer.tsx @@ -151,6 +151,31 @@ const areEqual = ( return false; } + // Enhanced mention sources (channel/here/roles/groups) — without these the + // renderText cache would refresh on a new entity but this comparator would + // short-circuit it away and the highlight would not appear until something + // else re-rendered the row. + const mentionedBroadcastEqual = + prevMessage.mentioned_channel === nextMessage.mentioned_channel && + prevMessage.mentioned_here === nextMessage.mentioned_here; + if (!mentionedBroadcastEqual) { + return false; + } + + const joinIds = (values?: string[]) => (values ?? []).join('|'); + const mentionedRolesEqual = + joinIds(prevMessage.mentioned_roles) === joinIds(nextMessage.mentioned_roles); + if (!mentionedRolesEqual) { + return false; + } + + const groupIds = (m: typeof prevMessage) => + joinIds(m.mentioned_groups?.map((g) => g.id) ?? m.mentioned_group_ids); + const mentionedGroupsEqual = groupIds(prevMessage) === groupIds(nextMessage); + if (!mentionedGroupsEqual) { + return false; + } + // stringify could be an expensive operation, so lets rule out the obvious // possibilities first such as different object reference or empty objects etc. // Also keeping markdown equality check at the last to make sure other less diff --git a/package/src/components/Message/MessageItemView/utils/renderText.tsx b/package/src/components/Message/MessageItemView/utils/renderText.tsx index 9061cca175..8a8edc2cdf 100644 --- a/package/src/components/Message/MessageItemView/utils/renderText.tsx +++ b/package/src/components/Message/MessageItemView/utils/renderText.tsx @@ -27,7 +27,7 @@ import { State, } from 'simple-markdown'; -import type { LocalMessage, UserResponse } from 'stream-chat'; +import type { LocalMessage, MentionEntity, UserResponse } from 'stream-chat'; import { generateMarkdownText } from './generateMarkdownText'; @@ -152,7 +152,7 @@ const defaultMarkdownStyles: MarkdownStyle = { flexDirection: 'row', }, mentions: { - fontWeight: '700', + fontWeight: primitives.typographyFontWeightRegular, fontSize: primitives.typographyFontSizeMd, lineHeight: primitives.typographyLineHeightNormal, }, @@ -286,7 +286,7 @@ export const renderText = (params: RenderTextParams) => { }, mentions: { ...defaultMarkdownStyles.mentions, - color: semantics.accentPrimary, + color: semantics.chatTextMention, ...markdownStyles?.mentions, }, table: { @@ -404,26 +404,96 @@ export const renderText = (params: RenderTextParams) => { ); }; - // take the @ mentions and turn them into markdown? - // translate links - const { mentioned_users } = message; - const mentionedUsernames = (mentioned_users || []) - .map((user) => user.name || user.id) - .filter(Boolean) + // Collect every mention type the server sent us into a single typed list so + // the markdown rule, the lookup, and the press payload all see the same shape. + const { + mentioned_channel, + mentioned_group_ids, + mentioned_groups, + mentioned_here, + mentioned_roles, + mentioned_users, + } = message; + + const mentionEntities: MentionEntity[] = [ + ...((mentioned_users ?? []) as UserResponse[]).map( + (user) => ({ ...user, mentionType: 'user' }) as MentionEntity, + ), + ...(mentioned_channel + ? ([{ id: 'channel', mentionType: 'channel', name: 'channel' }] as MentionEntity[]) + : []), + ...(mentioned_here + ? ([{ id: 'here', mentionType: 'here', name: 'here' }] as MentionEntity[]) + : []), + ...((mentioned_roles ?? []) as string[]).map( + (role) => ({ id: role, mentionType: 'role', name: role }) as MentionEntity, + ), + ...( + (mentioned_groups ?? (mentioned_group_ids ?? []).map((id) => ({ id, name: id }))) as Array<{ + id: string; + name?: string; + }> + ).map( + (group) => + ({ + id: group.id, + mentionType: 'user_group', + name: group.name ?? group.id, + }) as MentionEntity, + ), + ]; + + // Lookup keyed by the rendered mention text (sans `@`), lowercased so we + // resolve case-insensitively. First-write-wins: if a user shares a name with + // a role/group, the user entity is preferred — same precedence the React SDK + // applies via insertion order in its plugin. + const mentionLookup = new Map(); + for (const entity of mentionEntities) { + const key = (entity.name ?? entity.id).toLowerCase(); + if (!mentionLookup.has(key)) mentionLookup.set(key, entity); + } + + const mentionTokens = mentionEntities + .map((entity) => entity.name ?? entity.id) + .filter((value): value is string => Boolean(value)) .sort((a, b) => b.length - a.length) - .map(escapeRegExp); - const mentionedUsers = mentionedUsernames.map((username) => `@${username}`).join('|'); - const regEx = new RegExp(`^\\B(${mentionedUsers})`, 'g'); + .map((value) => `@${escapeRegExp(value)}`) + .join('|'); + const regEx = new RegExp(`^\\B(${mentionTokens})`, 'g'); const mentionsMatchFunction: MatchFunction = (source) => regEx.exec(source); + const colorForMentionType = (mentionType: MentionEntity['mentionType']) => { + switch (mentionType) { + case 'user': + return semantics.chatTextMentionUser; + case 'channel': + case 'here': + return semantics.chatTextMentionBroadcast; + case 'role': + return semantics.chatTextMentionRole; + case 'user_group': + return semantics.chatTextMentionGroup; + default: + return semantics.chatTextMention; + } + }; + const mentionsReact: ReactNodeOutput = (node, output, { ...state }) => { - /**removes the @ prefix of username */ - const userName = node.content[0]?.content?.substring(1); + const matchedText: string | undefined = node.content[0]?.content; + const matchedName = matchedText?.substring(1) ?? ''; + const matchedEntity = mentionLookup.get(matchedName.toLowerCase()); + const mentionedUser = + matchedEntity?.mentionType === 'user' ? (matchedEntity as UserResponse) : undefined; + const mentionColor = matchedEntity + ? colorForMentionType(matchedEntity.mentionType) + : semantics.chatTextMention; + const onPress = (event: GestureResponderEvent) => { if (!preventPress && onPressParam) { onPressParam({ additionalInfo: { - user: mentioned_users?.find((user: UserResponse) => userName === user.name), + mentionedEntity: matchedEntity, + user: mentionedUser, }, emitter: 'textMention', event, @@ -434,6 +504,10 @@ export const renderText = (params: RenderTextParams) => { const onLongPress = (event: GestureResponderEvent) => { if (!preventPress && onLongPressParam) { onLongPressParam({ + additionalInfo: { + mentionedEntity: matchedEntity, + user: mentionedUser, + }, emitter: 'textMention', event, }); @@ -441,7 +515,12 @@ export const renderText = (params: RenderTextParams) => { }; return ( - + {Array.isArray(node.content) ? node.content.reduce((acc, current) => acc + current.content, '') || '' : output(node.content, state)} @@ -492,7 +571,7 @@ export const renderText = (params: RenderTextParams) => { // we have no react rendering support for reflinks reflink: { match: () => null }, sublist: { react: listReact }, - ...(mentionedUsers + ...(mentionTokens ? { mentions: { match: mentionsMatchFunction, @@ -507,7 +586,7 @@ export const renderText = (params: RenderTextParams) => { return ( { shadowRadius: 12, }, suggestionsListContainer: { - backgroundColor: semantics.backgroundCoreElevation1, + backgroundColor: 'transparent', position: 'absolute', width: '100%', }, @@ -211,7 +211,6 @@ const MessageComposerWithContext = (props: MessageComposerPropsWithContext) => { AudioRecordingInProgress, AudioRecordingLockIndicator, AudioRecordingPreview, - AutoCompleteSuggestionList, Input, InputView, MessageComposerLeadingView, @@ -238,7 +237,6 @@ const MessageComposerWithContext = (props: MessageComposerPropsWithContext) => { inputBoxWrapper, inputContainer, inputFloatingContainer, - suggestionsListContainer: { container: suggestionListContainer }, wrapper, }, }, @@ -366,7 +364,12 @@ const MessageComposerWithContext = (props: MessageComposerPropsWithContext) => { layout: { height: newHeight }, }, }) => { - messageInputHeightStore.setHeight(newHeight); + messageInputHeightStore.setHeight( + newHeight - + (selectedPicker && !isKeyboardVisible + ? attachmentPickerBottomSheetHeight - bottomInset + : 0), + ); }} style={ messageInputFloating @@ -448,11 +451,6 @@ const MessageComposerWithContext = (props: MessageComposerPropsWithContext) => { )} - - - diff --git a/package/src/components/MessageList/MessageFlashList.tsx b/package/src/components/MessageList/MessageFlashList.tsx index 57ae443481..55dd181241 100644 --- a/package/src/components/MessageList/MessageFlashList.tsx +++ b/package/src/components/MessageList/MessageFlashList.tsx @@ -60,6 +60,7 @@ import { MessageInputHeightState } from '../../state-store/message-input-height- import { primitives } from '../../theme'; import { transitions } from '../../utils/animations/transitions'; import { MessageWrapper } from '../Message/MessageItemView/MessageWrapper'; +import { PortalWhileClosingView } from '../UIComponents/PortalWhileClosingView'; type FlashListContextApi = { getRef?: () => FlashListRef | null } | undefined; @@ -297,6 +298,7 @@ const MessageFlashListWithContext = (props: MessageFlashListPropsWithContext) => threadList = false, } = props; const { + AutoCompleteSuggestionList, EmptyStateIndicator, MessageListLoadingIndicator: LoadingIndicator, NetworkDownIndicator, @@ -1135,6 +1137,22 @@ const MessageFlashListWithContext = (props: MessageFlashListPropsWithContext) => /> ) : null} + + + + + ); @@ -1279,6 +1297,9 @@ const useStyles = () => { scrollToBottomButtonContainer, unreadMessagesNotificationContainer, }, + messageComposer: { + suggestionsListContainer: { container: suggestionListContainer }, + }, }, } = useTheme(); @@ -1287,6 +1308,12 @@ const useStyles = () => { return useMemo( () => StyleSheet.create({ + suggestionsListContainer: { + backgroundColor: 'transparent', + position: 'absolute', + width: '100%', + ...suggestionListContainer, + }, container: { flex: 1, width: '100%', @@ -1338,6 +1365,7 @@ const useStyles = () => { scrollToBottomButtonContainer, stickyHeaderContainer, unreadMessagesNotificationContainer, + suggestionListContainer, ], ); }; diff --git a/package/src/components/MessageList/MessageList.tsx b/package/src/components/MessageList/MessageList.tsx index 4c27fc5665..ffb77698ef 100644 --- a/package/src/components/MessageList/MessageList.tsx +++ b/package/src/components/MessageList/MessageList.tsx @@ -74,6 +74,7 @@ import { primitives } from '../../theme'; import { transitions } from '../../utils/animations/transitions'; import { useIncomingMessageAnnouncements } from '../Accessibility/hooks/useIncomingMessageAnnouncements'; import { MessageWrapper } from '../Message/MessageItemView/MessageWrapper'; +import { PortalWhileClosingView } from '../UIComponents'; // This is just to make sure that the scrolling happens in a different task queue. // TODO: Think if we really need this and strive to remove it if we can. @@ -92,6 +93,9 @@ const useStyles = () => { scrollToBottomButtonContainer, unreadMessagesNotificationContainer, }, + messageComposer: { + suggestionsListContainer: { container: suggestionListContainer }, + }, }, } = useTheme(); @@ -100,6 +104,12 @@ const useStyles = () => { return useMemo( () => StyleSheet.create({ + suggestionsListContainer: { + backgroundColor: 'transparent', + position: 'absolute', + width: '100%', + ...suggestionListContainer, + }, container: { flex: 1, width: '100%', @@ -151,6 +161,7 @@ const useStyles = () => { scrollToBottomButtonContainer, stickyHeaderContainer, unreadMessagesNotificationContainer, + suggestionListContainer, ], ); }; @@ -360,6 +371,7 @@ const MessageListWithContext = (props: MessageListPropsWithContext) => { TypingIndicator, TypingIndicatorContainer, UnreadMessagesNotification, + AutoCompleteSuggestionList, } = useComponentsContext(); const [isUnreadNotificationOpen, setIsUnreadNotificationOpen] = useState(false); const { theme } = useTheme(); @@ -1363,6 +1375,22 @@ const MessageListWithContext = (props: MessageListPropsWithContext) => { /> ) : null} + + + + + ); diff --git a/package/src/components/Thread/__tests__/__snapshots__/Thread.test.tsx.snap b/package/src/components/Thread/__tests__/__snapshots__/Thread.test.tsx.snap index 593a2c7d0c..c11910b339 100644 --- a/package/src/components/Thread/__tests__/__snapshots__/Thread.test.tsx.snap +++ b/package/src/components/Thread/__tests__/__snapshots__/Thread.test.tsx.snap @@ -1706,6 +1706,30 @@ exports[`Thread should match thread snapshot 1`] = ` } } /> + + + + + - diff --git a/package/src/components/UIComponents/BottomSheetModal.tsx b/package/src/components/UIComponents/BottomSheetModal.tsx index 6346cc468f..9d328bbfcd 100644 --- a/package/src/components/UIComponents/BottomSheetModal.tsx +++ b/package/src/components/UIComponents/BottomSheetModal.tsx @@ -39,12 +39,12 @@ import { } from './BottomSheetModal.utils'; import { useA11yLabel } from '../../a11y/hooks/useA11yLabel'; +import { useAnnounceOnShow } from '../../a11y/hooks/useAnnounceOnShow'; import { useResolvedModalAccessibilityProps } from '../../a11y/hooks/useResolvedModalAccessibilityProps'; import { BottomSheetProvider } from '../../contexts/bottomSheetContext/BottomSheetContext'; import { useTheme } from '../../contexts/themeContext/ThemeContext'; import { useStableCallback } from '../../hooks'; import { primitives } from '../../theme'; -import { useAccessibilityAnnouncer } from '../Accessibility/useAccessibilityAnnouncer'; export type BottomSheetModalProps = { /** @@ -498,25 +498,10 @@ const BottomSheetModalInner = (props: PropsWithChildren) const modalA11yProps = useResolvedModalAccessibilityProps(); - const announce = useAccessibilityAnnouncer(); const openAnnouncement = useA11yLabel( 'a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.', ); - const announcedOpenRef = useRef(false); - useEffect(() => { - if (!visible) { - announcedOpenRef.current = false; - return; - } - if (!openAnnouncement || announcedOpenRef.current) { - return; - } - const id = setTimeout(() => { - announce(openAnnouncement, 'polite'); - announcedOpenRef.current = true; - }, 800); - return () => clearTimeout(id); - }, [visible, openAnnouncement, announce]); + useAnnounceOnShow(visible, openAnnouncement, { delayMs: 800 }); const closeLabel = useA11yLabel('a11y/Close'); const closeAccessibilityActions = useMemo( diff --git a/package/src/components/UIComponents/ClippingFadeBottom.tsx b/package/src/components/UIComponents/ClippingFadeBottom.tsx new file mode 100644 index 0000000000..0c7f025d0e --- /dev/null +++ b/package/src/components/UIComponents/ClippingFadeBottom.tsx @@ -0,0 +1,47 @@ +import React from 'react'; +import { StyleSheet, View } from 'react-native'; + +import Svg, { Defs, LinearGradient, Rect, Stop } from 'react-native-svg'; + +const CLIPPING_FADE_HEIGHT = 16; +const CLIPPING_FADE_GRADIENT_ID = 'sdk-clipping-fade-bottom'; + +export type ClippingFadeBottomProps = { + /** + * Color the fade ramps toward at the bottom edge. Typically the + * background color of the surface beneath the fade so the bottom edge of + * scrolling content visually melts into it. + */ + backgroundColor: string; +}; + +/** + * Bottom edge fade overlay. Draws a 16px tall SVG linear gradient that + * ramps from the supplied background's transparent variant at the top to + * fully opaque at the bottom - visually clipping any content that scrolls + * past the lower edge of its parent. `pointerEvents='none'` so it doesn't + * intercept taps/scrolls on the rows underneath. + */ +export const ClippingFadeBottom = ({ backgroundColor }: ClippingFadeBottomProps) => ( + + + + + + + + + + + +); + +const styles = StyleSheet.create({ + fade: { + bottom: 0, + height: CLIPPING_FADE_HEIGHT, + left: 0, + position: 'absolute', + right: 0, + }, +}); diff --git a/package/src/components/UIComponents/PortalWhileClosingView.tsx b/package/src/components/UIComponents/PortalWhileClosingView.tsx index ffe785a004..2ae6292bfa 100644 --- a/package/src/components/UIComponents/PortalWhileClosingView.tsx +++ b/package/src/components/UIComponents/PortalWhileClosingView.tsx @@ -130,10 +130,6 @@ const useSyncingApi = (portalHostName: string, registrationId: string) => { y: y + (Platform.OS === 'android' ? insets.top : 0), }; - if (!width || !height) { - return; - } - placeholderLayout.value = { h: height, w: width }; setClosingPortalLayout(portalHostName, registrationId, { diff --git a/package/src/components/UIComponents/index.ts b/package/src/components/UIComponents/index.ts index b10b12011d..7851545065 100644 --- a/package/src/components/UIComponents/index.ts +++ b/package/src/components/UIComponents/index.ts @@ -1,4 +1,5 @@ export * from './BottomSheetModal'; +export * from './ClippingFadeBottom'; export * from './StreamBottomSheetModalFlatList'; export * from './ImageBackground'; export * from './SvgAwareImage'; diff --git a/package/src/components/index.ts b/package/src/components/index.ts index 7df045b924..3e17d030a4 100644 --- a/package/src/components/index.ts +++ b/package/src/components/index.ts @@ -28,6 +28,7 @@ export * from './AutoCompleteInput/AutoCompleteSuggestionHeader'; export * from './AutoCompleteInput/AutoCompleteSuggestionItem'; export * from './AutoCompleteInput/AutoCompleteSuggestionList'; export * from './AutoCompleteInput/InputView'; +export * from './AutoCompleteInput/mentionItems'; export * from './Channel/Channel'; export * from './Channel/hooks/useCreateChannelContext'; diff --git a/package/src/contexts/componentsContext/defaultComponents.ts b/package/src/contexts/componentsContext/defaultComponents.ts index 968c63d090..91714b859d 100644 --- a/package/src/contexts/componentsContext/defaultComponents.ts +++ b/package/src/contexts/componentsContext/defaultComponents.ts @@ -24,7 +24,10 @@ import { AttachmentPickerContent } from '../../components/AttachmentPicker/compo import { AttachmentPickerSelectionBar } from '../../components/AttachmentPicker/components/AttachmentPickerSelectionBar'; import { ImageOverlaySelectedComponent } from '../../components/AttachmentPicker/components/ImageOverlaySelectedComponent'; import { AutoCompleteSuggestionHeader } from '../../components/AutoCompleteInput/AutoCompleteSuggestionHeader'; -import { AutoCompleteSuggestionItem } from '../../components/AutoCompleteInput/AutoCompleteSuggestionItem'; +import { + AutoCompleteSuggestionItem, + MentionSuggestionItem, +} from '../../components/AutoCompleteInput/AutoCompleteSuggestionItem'; import { AutoCompleteSuggestionList } from '../../components/AutoCompleteInput/AutoCompleteSuggestionList'; import { InputView } from '../../components/AutoCompleteInput/InputView'; import { ChannelListFooterLoadingIndicator } from '../../components/ChannelList/ChannelListFooterLoadingIndicator'; @@ -180,6 +183,7 @@ const components = { AutoCompleteSuggestionHeader, AutoCompleteSuggestionItem, AutoCompleteSuggestionList, + MentionSuggestionItem, ChannelDetailsBottomSheet, CooldownTimer, CircularProgressIndicator, diff --git a/package/src/contexts/themeContext/utils/theme.ts b/package/src/contexts/themeContext/utils/theme.ts index 9a9fdb936d..a326d85260 100644 --- a/package/src/contexts/themeContext/utils/theme.ts +++ b/package/src/contexts/themeContext/utils/theme.ts @@ -473,6 +473,10 @@ export type Theme = { avatarSize: number; column: ViewStyle; container: ViewStyle; + enhancedMentionContainer: ViewStyle; + enhancedMentionIcon: ViewStyle; + enhancedMentionSubtitle: TextStyle; + enhancedMentionTitle: TextStyle; name: TextStyle; tag: TextStyle; }; @@ -480,6 +484,7 @@ export type Theme = { suggestionsListContainer: { container: ViewStyle; flatlist: ViewStyle; + flatlistContentContainer: ViewStyle; }; videoAttachmentUploadPreview: { durationContainer: ViewStyle; @@ -1418,6 +1423,10 @@ export const defaultTheme: Theme = { avatarSize: 40, column: {}, container: {}, + enhancedMentionContainer: {}, + enhancedMentionIcon: {}, + enhancedMentionSubtitle: {}, + enhancedMentionTitle: {}, name: {}, tag: {}, }, @@ -1425,6 +1434,7 @@ export const defaultTheme: Theme = { suggestionsListContainer: { container: {}, flatlist: {}, + flatlistContentContainer: {}, }, wrapper: {}, linkPreviewList: { diff --git a/package/src/i18n/ar.json b/package/src/i18n/ar.json index 829a76af98..9ff0a110c6 100644 --- a/package/src/i18n/ar.json +++ b/package/src/i18n/ar.json @@ -1,4 +1,7 @@ { + "+{{count}} More Options_many": "+{{count}} خيارات إضافية", + "+{{count}} More Options_one": "+{{count}} خيار إضافي", + "+{{count}} More Options_other": "+{{count}} خيارات إضافية", "+{{count}}_many": "+{{count}}", "+{{count}}_one": "+{{count}}", "+{{count}}_other": "+{{count}}", @@ -11,33 +14,60 @@ "Allow access to your Gallery": "اسمح بالوصول إلى المعرض", "Allow camera access in device settings": "اسمح بالوصول إلى الكاميرا في إعدادات الجهاز", "Also send to channel": "أرسل أيضاً إلى القناة", + "Also sent in channel": "تم الإرسال أيضًا في القناة", "Anonymous": "مجهول", "Anonymous voting": "تصويت مجهول", + "Archive Chat": "أرشفة الدردشة", + "Archive Group": "أرشفة المجموعة", + "Are you sure you want to delete this chat? This can't be undone.": "هل أنت متأكد أنك تريد حذف هذه الدردشة؟ لا يمكن التراجع عن هذا.", + "Are you sure you want to delete this group? This can't be undone.": "هل أنت متأكد أنك تريد حذف هذه المجموعة؟ لا يمكن التراجع عن هذا.", "Are you sure you want to permanently delete this message?": "هل أنت متأكد أنك تريد حذف هذه الرسالة نهائياً؟", "Are you sure?": "هل أنت متأكد؟", "Ask a question": "اطرح سؤالاً", + "Attachment upload blocked due to {{reason}}": "تم حظر رفع المرفق بسبب {{reason}}", + "Attachment upload failed due to {{reason}}": "فشل رفع المرفق بسبب {{reason}}", "Audio": "صوت", "Ban User": "منع المستخدم", "Block User": "حظر المستخدم", "Cancel": "إلغاء", "Cannot Flag Message": "تعذر الإبلاغ عن الرسالة", + "Cannot seek in the recording": "لا يمكن التنقل داخل التسجيل", + "Change in Settings": "التغيير في الإعدادات", + "Channel archived": "تمت أرشفة القناة", + "Channel muted": "تم كتم القناة", + "Channel pinned": "تم تثبيت القناة", + "Channel unarchived": "تم إلغاء أرشفة القناة", + "Channel unmuted": "تم إلغاء كتم القناة", + "Channel unpinned": "تم إلغاء تثبيت القناة", + "Choose between 2–10 options": "اختر بين 2 و10 خيارات", + "Command not available": "الأمر غير متاح", + "Command not available while editing": "الأمر غير متاح أثناء التعديل", + "Command not available while replying": "الأمر غير متاح أثناء الرد", "Consider how your comment might make others feel and be sure to follow our Community Guidelines": "فكّر في تأثير تعليقك على الآخرين وتأكد من اتباع إرشادات مجتمعنا", "Copy Message": "نسخ الرسالة", + "Couldn't load new threads. Tap to retry": "تعذر تحميل المواضيع الجديدة. اضغط لإعادة المحاولة", "Create Poll": "إنشاء تصويت", + "Create a poll and let everyone vote": "أنشئ تصويتاً ودع الجميع يصوّت", "Delete": "حذف", + "Delete Chat": "حذف الدردشة", + "Delete Group": "حذف المجموعة", "Delete Message": "حذف الرسالة", + "Delete chat": "حذف الدردشة", "Delete for me": "حذف لدي", + "Delete group": "حذف المجموعة", "Device camera is used to take photos or videos.": "تُستخدم كاميرا الجهاز لالتقاط الصور أو الفيديو.", "Device gallery permissions is used to take photos or videos.": "تُستخدم أذونات معرض الجهاز لالتقاط الصور أو الفيديو.", "Do you want to send a copy of this message to a moderator for further investigation?": "هل تريد إرسال نسخة من هذه الرسالة إلى مشرف لمزيد من المراجعة؟", + "Draft": "مسودة", "Due since {{ dueSince }}": "مستحق منذ {{ dueSince }}", "Edit Message": "تعديل الرسالة", + "Edit message request failed": "فشل طلب تعديل الرسالة", "Edited": "تم التعديل", "Editing Message": "جارٍ تعديل الرسالة", "Emoji matching": "مطابقة الإيموجي", "Empty message...": "رسالة فارغة...", - "Enter a new option": "أدخل خيارًا جديدًا", "End Vote": "إنهاء التصويت", + "Enter a new option": "أدخل خيارًا جديدًا", "Error adding flag": "خطأ في إضافة الإبلاغ", "Error deleting message": "خطأ في حذف الرسالة", "Error fetching reactions": "خطأ في جلب التفاعلات", @@ -48,8 +78,24 @@ "Error muting a user ...": "خطأ في كتم المستخدم...", "Error pinning message": "خطأ في تثبيت الرسالة", "Error removing message pin": "خطأ في إزالة تثبيت الرسالة", + "Error reproducing the recording": "خطأ في تشغيل التسجيل", "Error unmuting a user ...": "خطأ في إلغاء كتم المستخدم...", + "Error uploading attachment": "خطأ في رفع المرفق", "Error while loading, please reload/refresh": "حدث خطأ أثناء التحميل، يرجى إعادة التحميل/التحديث", + "Failed to block user": "فشل حظر المستخدم", + "Failed to create the poll": "فشل إنشاء التصويت", + "Failed to create the poll due to {{reason}}": "فشل إنشاء التصويت بسبب {{reason}}", + "Failed to end the poll": "فشل إنهاء التصويت", + "Failed to end the poll due to {{reason}}": "فشل إنهاء التصويت بسبب {{reason}}", + "Failed to jump to the first unread message": "فشل الانتقال إلى أول رسالة غير مقروءة", + "Failed to leave channel": "فشل مغادرة القناة", + "Failed to play the recording": "فشل تشغيل التسجيل", + "Failed to retrieve location": "فشل جلب الموقع", + "Failed to share location": "فشل مشاركة الموقع", + "Failed to update channel archive status": "فشل تحديث حالة أرشفة القناة", + "Failed to update channel mute status": "فشل تحديث حالة كتم القناة", + "Failed to update channel pinned status": "فشل تحديث حالة تثبيت القناة", + "File is required for upload attachment": "الملف مطلوب لرفع المرفق", "File is too large: {{ size }}, maximum upload size is {{ limit }}": "الملف كبير جدًا: {{ size }}، الحد الأقصى للرفع هو {{ limit }}", "File too large": "الملف كبير جدًا", "File type not supported": "نوع الملف غير مدعوم", @@ -63,41 +109,52 @@ "Hold to start recording.": "اضغط مطولاً لبدء التسجيل.", "How about sending your first message to a friend?": "ما رأيك في إرسال أول رسالة إلى صديق؟", "Instant Commands": "الأوامر السريعة", + "Leave Chat": "مغادرة الدردشة", + "Leave Group": "مغادرة المجموعة", + "Left channel": "تمت مغادرة القناة", "Let others add options": "السماح للآخرين بإضافة خيارات", "Let's start chatting!": "لنبدأ الدردشة!", + "Limit votes per person": "تحديد عدد الأصوات لكل شخص", "Links are disabled": "الروابط معطلة", "Live Location": "الموقع المباشر", "Loading channels...": "جارٍ تحميل القنوات...", "Loading messages...": "جارٍ تحميل الرسائل...", "Loading threads...": "جارٍ تحميل المواضيع...", "Loading...": "جارٍ التحميل...", + "Local upload attachment missing local id": "المرفق المرفوع محليًا يفتقد المعرف المحلي", "Location": "الموقع", "Mark as Unread": "وضع كغير مقروء", "Maximum number of files reached": "تم الوصول إلى الحد الأقصى لعدد الملفات", "Message Reactions": "تفاعلات الرسالة", "Message deleted": "تم حذف الرسالة", - "Message has been successfully flagged": "تم الإبلاغ عن الرسالة بنجاح", + "Message failed to send": "فشل إرسال الرسالة", "Message flagged": "تم الإبلاغ عن الرسالة", + "Message has been successfully flagged": "تم الإبلاغ عن الرسالة بنجاح", "Message marked as unread": "تم وضع علامة غير مقروء على الرسالة", "Message pinned": "تم تثبيت الرسالة", "Message unpinned": "تم إلغاء تثبيت الرسالة", "Multiple votes": "تصويتات متعددة", - "Network error": "خطأ في الشبكة", - "Select more than one option": "اختر أكثر من خيار واحد", - "Limit votes per person": "تحديد عدد الأصوات لكل شخص", - "Choose between 2–10 options": "اختر بين 2 و10 خيارات", + "Mute Group": "كتم المجموعة", "Mute User": "كتم المستخدم", + "Network error": "خطأ في الشبكة", "No chats here yet…": "لا توجد محادثات هنا بعد…", + "No conversations yet": "لا توجد محادثات بعد", "No items exist": "لا توجد عناصر", + "No messages yet": "لا توجد رسائل بعد", "No threads here yet": "لا توجد مواضيع هنا بعد", "Not supported": "غير مدعوم", "Nothing yet...": "لا شيء بعد...", + "Notify all {{ role }} members": "Notify all {{ role }} members", + "Offline": "غير متصل", "Ok": "حسناً", + "Online": "متصل", "Only visible to you": "مرئي لك فقط", + "Open Camera": "فتح الكاميرا", + "Open Files": "فتح الملفات", "Open Settings": "فتح الإعدادات", "Option": "خيار", - "Option {{count}}": "الخيار {{count}}", "Option already exists": "الخيار موجود بالفعل", + "Option {{count}}": "الخيار {{count}}", "Options": "الخيارات", "Photo": "صورة", "Photos and Videos": "الصور ومقاطع الفيديو", @@ -109,16 +166,26 @@ "Poll Comments": "تعليقات التصويت", "Poll Options": "خيارات التصويت", "Poll Results": "نتائج التصويت", + "Poll ended": "انتهى التصويت", + "Poll has ended": "انتهى التصويت", "Questions": "الأسئلة", + "Reached the vote limit. Remove an existing vote first.": "تم الوصول إلى حد التصويت. أزل صوتًا قائمًا أولًا.", "Reconnecting...": "جارٍ إعادة الاتصال...", + "Recording format is not supported and cannot be reproduced": "تنسيق التسجيل غير مدعوم ولا يمكن تشغيله", + "Reminder overdue": "انتهى وقت التذكير", + "Reminder set": "تم ضبط التذكير", + "Replied to a thread": "تم الرد في موضوع", "Reply": "رد", - "Reply to {{name}}": "الرد على {{name}}", "Reply to Message": "الرد على الرسالة", + "Reply to a message to start a thread": "قم بالرد على رسالة لبدء موضوع", + "Reply to {{name}}": "الرد على {{name}}", "Resend": "إعادة الإرسال", "Retry Upload": "إعادة محاولة الرفع", "SEND": "إرسال", "Search": "بحث", "Select More Photos": "اختيار المزيد من الصور", + "Select files to share": "اختر الملفات للمشاركة", + "Select more than one option": "اختر أكثر من خيار واحد", "Select one": "اختر واحداً", "Select one or more": "اختر واحداً أو أكثر", "Select up to {{count}}_many": "اختر حتى {{count}}", @@ -126,26 +193,39 @@ "Select up to {{count}}_other": "اختر حتى {{count}}", "Send Anyway": "أرسل على أي حال", "Send a message": "أرسل رسالة", + "Send message request failed": "فشل طلب إرسال الرسالة", "Sending links is not allowed in this conversation": "إرسال الروابط غير مسموح في هذه المحادثة", "Show All": "عرض الكل", "Slide to Cancel": "اسحب للإلغاء", "Slow mode ON": "الوضع البطيء قيد التشغيل", "Slow mode, wait {{seconds}}s...": "وضع بطيء، انتظر {{seconds}}ث...", "Suggest an option": "اقترح خياراً", + "Take a photo and share": "التقط صورة وشاركها", + "Take a video and share": "التقط فيديو وشاركه", + "Tap to remove": "اضغط للإزالة", "The message has been reported to a moderator.": "تم الإبلاغ عن الرسالة إلى مشرف.", "The source message was deleted": "تم حذف الرسالة الأصلية", "Thinking...": "جارٍ التفكير...", "This reply was deleted": "تم حذف هذا الرد", "Thread Reply": "رد في الموضوع", + "Thread has not been found": "لم يتم العثور على الموضوع", "Type a number from 2 to 10": "اكتب رقماً من 2 إلى 10", + "Typing": "يكتب", + "Unarchive Chat": "إلغاء أرشفة الدردشة", + "Unarchive Group": "إلغاء أرشفة المجموعة", "Unban User": "إلغاء منع المستخدم", "Unblock User": "إلغاء حظر المستخدم", "Unknown User": "مستخدم غير معروف", + "Unmute Group": "إلغاء كتم المجموعة", "Unmute User": "إلغاء كتم المستخدم", "Unpin from Conversation": "إلغاء التثبيت من المحادثة", "Unread Messages": "رسائل غير مقروءة", + "Unsupported Attachment": "مرفق غير مدعوم", "Update your comment": "حدّث تعليقك", + "User blocked": "تم حظر المستخدم", + "User unblocked": "تم إلغاء حظر المستخدم", "Video": "فيديو", + "View": "عرض", "View Results": "عرض النتائج", "View {{count}} comments_many": "عرض {{count}} تعليقات", "View {{count}} comments_one": "عرض {{count}} تعليق", @@ -153,13 +233,90 @@ "Voice message": "رسالة صوتية", "Voice message ({{duration}})": "رسالة صوتية ({{duration}})", "Voice message deleted": "تم حذف الرسالة الصوتية", - "Your comment": "تعليقك", + "Wait until all attachments have uploaded": "انتظر حتى يتم رفع جميع المرفقات", "You": "أنت", "You can't send messages in this channel": "لا يمكنك إرسال رسائل في هذه القناة", + "You have not granted access to the photo library.": "لم تمنح إذن الوصول إلى مكتبة الصور.", + "You have not granted access to your camera": "لم تمنح إذن الوصول إلى الكاميرا", + "You voted: {{ option }}": "لقد صوّتَّ: {{ option }}", + "Your comment": "تعليقك", + "a11y/AI is generating": "AI is generating", + "a11y/AI is thinking": "AI is thinking", + "a11y/Activate to view results": "فعّل لعرض النتائج", + "a11y/Add attachment": "Add attachment", + "a11y/Avatar of {{name}}": "Avatar of {{name}}", + "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.", + "a11y/Close": "Close", + "a11y/Close attachments": "Close attachments", + "a11y/Close poll": "Close poll", + "a11y/Close poll creation": "Close poll creation", + "a11y/Command suggestions available": "Command suggestions available", + "a11y/Connected": "Connected", + "a11y/Create poll": "Create poll", + "a11y/Decrease maximum votes": "Decrease maximum votes", + "a11y/Delete voice recording": "Delete voice recording", + "a11y/Delivered": "Delivered", + "a11y/Deselect image": "Deselect image", + "a11y/Deselect video": "Deselect video", + "a11y/Dismiss notification": "Dismiss notification", + "a11y/Dismiss unread messages": "Dismiss unread messages", + "a11y/Double tap and hold to activate contextual menu": "انقر نقرًا مزدوجًا مع الاستمرار لتفعيل قائمة السياق", + "a11y/Emoji suggestions available": "Emoji suggestions available", + "a11y/End vote": "إنهاء التصويت", + "a11y/Grid Icon": "Grid Icon", + "a11y/Hide Overlay": "Hide Overlay", + "a11y/Increase maximum votes": "Increase maximum votes", + "a11y/Loading": "Loading", + "a11y/Loading failed": "Loading failed", + "a11y/Mention suggestions available": "Mention suggestions available", + "a11y/Message actions": "Message actions", + "a11y/New message from {{user}}": "New message from {{user}}", + "a11y/Notifications": "Notifications", + "a11y/Offline": "Offline", + "a11y/Open camera": "Open camera", + "a11y/Open commands": "Open commands", + "a11y/Open file picker": "Open file picker", + "a11y/Open message actions": "Open message actions", + "a11y/Open more reactions": "Open more reactions", + "a11y/Open photo picker": "Open photo picker", + "a11y/Open poll creation": "Open poll creation", + "a11y/Open video recorder": "Open video recorder", + "a11y/Play Pause Button": "Play Pause Button", + "a11y/Reaction {{emoji}} by {{count}} users": "Reaction {{emoji}} by {{count}} users", + "a11y/Read": "Read", + "a11y/Reconnecting": "Reconnecting", + "a11y/Remove attachment": "Remove Attachment", + "a11y/Remove edit": "Remove edit", + "a11y/Remove reply": "Remove reply", + "a11y/Reply to {{user}}": "Reply to {{user}}", + "a11y/Save edited message": "Save edited message", + "a11y/Scroll to bottom": "Scroll to bottom", + "a11y/Scroll to bottom, {{count}} new messages": "Scroll to bottom, {{count}} new messages", + "a11y/Scroll to latest": "Scroll to latest", + "a11y/Scroll to latest, {{count}} unread": "Scroll to latest, {{count}} unread", + "a11y/Select image": "Select image", + "a11y/Select video": "Select video", + "a11y/Send message": "Send message", + "a11y/Send voice recording": "Send voice recording", + "a11y/Sending": "Sending", + "a11y/Sent": "Sent", + "a11y/Share Button": "Share Button", + "a11y/Show all options": "إظهار جميع الخيارات", + "a11y/Start voice recording": "Start voice recording", + "a11y/Stop voice recording": "Stop voice recording", + "a11y/Swipe right to go through different actions": "اسحب لليمين للتنقل بين الإجراءات المختلفة", + "a11y/Voice message recording. Hold to record.": "Voice message recording. Hold to record.", + "a11y/Vote on {{option}}": "صوّت على {{option}}", + "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", + "a11y/{{count}} new messages": "{{count}} new messages", + "and {{ count }} others": "و{{ count }} آخرون", "duration/Location end at": "{{ milliseconds | durationFormatter(withSuffix: false) }}", "duration/Message reminder": "{{ milliseconds | durationFormatter(withSuffix: true) }}", "duration/Remind Me": "{{ milliseconds | durationFormatter(withSuffix: true) }}", + "mention/Channel Description": "Notify everyone in this channel", + "mention/Here Description": "Notify every online member in this channel", "replied to": "رد على", + "size limit": "حد الحجم", "timestamp/ChannelPreviewStatus": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[أمس]\", \"lastWeek\":\"dddd\", \"nextDay\":\"[غدًا]\", \"nextWeek\":\"dddd [في] LT\", \"sameDay\":\"LT\", \"sameElse\":\"L\"}) }}", "timestamp/ImageGalleryHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/InlineDateSeparator": "{{ timestamp | timestampFormatter(calendar: true) }}", @@ -170,17 +327,16 @@ "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/StickyHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/ThreadListItem": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[أمس]\", \"lastWeek\":\"dddd\", \"nextDay\":\"[غدًا]\", \"nextWeek\":\"dddd [في] LT\", \"sameDay\":\"LT\", \"sameElse\":\"L\"}) }}", + "unknown error": "خطأ غير معروف", + "unsupported file type": "نوع ملف غير مدعوم", "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} و{{ nonSelfUserLength }} آخرون يكتبون", + "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }} و{{ secondUser }} يكتبان", "{{ index }} of {{ photoLength }}": "{{ index }} من {{ photoLength }}", + "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }} أشخاص يكتبون", "{{ replyCount }} Replies": "{{ replyCount }} ردود", + "{{ user }} has been muted": "تم كتم {{ user }}", + "{{ user }} has been unmuted": "تم إلغاء كتم {{ user }}", "{{ user }} is typing": "{{ user }} يكتب", - "You voted: {{ option }}": "لقد صوّتَّ: {{ option }}", - "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }} و{{ secondUser }} يكتبان", - "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }} أشخاص يكتبون", - "Typing": "يكتب", - "No messages yet": "لا توجد رسائل بعد", - "Message failed to send": "فشل إرسال الرسالة", - "and {{ count }} others": "و{{ count }} آخرون", "{{ user }} voted: {{ option }}": "{{ user }} صوّت: {{ option }}", "{{count}} Audios_many": "{{count}} ملفًا صوتيًا", "{{count}} Audios_one": "ملف صوتي واحد", @@ -191,173 +347,23 @@ "{{count}} Photos_many": "{{count}} صورة", "{{count}} Photos_one": "صورة واحدة", "{{count}} Photos_other": "{{count}} صور", - "{{count}} Voice messages_many": "{{count}} رسالة صوتية", - "{{count}} Voice messages_one": "رسالة صوتية واحدة", - "{{count}} Voice messages_other": "{{count}} رسائل صوتية", + "{{count}} Reactions_many": "{{count}} تفاعلات", + "{{count}} Reactions_one": "{{count}} تفاعل", + "{{count}} Reactions_other": "{{count}} تفاعلات", "{{count}} Videos_many": "{{count}} مقطعًا", "{{count}} Videos_one": "مقطع فيديو واحد", "{{count}} Videos_other": "{{count}} مقاطع فيديو", + "{{count}} Voice messages_many": "{{count}} رسالة صوتية", + "{{count}} Voice messages_one": "رسالة صوتية واحدة", + "{{count}} Voice messages_other": "{{count}} رسائل صوتية", + "{{count}} new messages": "{{count}} رسائل جديدة", + "{{count}} new threads": "{{count}} مواضيع جديدة", + "{{count}} unread": "{{count}} غير مقروء", "{{count}} votes_many": "{{count}} أصوات", "{{count}} votes_one": "{{count}} صوت", "{{count}} votes_other": "{{count}} أصوات", - "🏙 Attachment...": "🏙 مرفق...", - "You have not granted access to the photo library.": "لم تمنح إذن الوصول إلى مكتبة الصور.", - "Change in Settings": "التغيير في الإعدادات", - "Create a poll and let everyone vote": "أنشئ تصويتاً ودع الجميع يصوّت", - "Open Camera": "فتح الكاميرا", - "Open Files": "فتح الملفات", - "Select files to share": "اختر الملفات للمشاركة", - "Take a photo and share": "التقط صورة وشاركها", - "Take a video and share": "التقط فيديو وشاركه", - "You have not granted access to your camera": "لم تمنح إذن الوصول إلى الكاميرا", - "{{count}} Reactions_many": "{{count}} تفاعلات", - "{{count}} Reactions_one": "{{count}} تفاعل", - "{{count}} Reactions_other": "{{count}} تفاعلات", - "Tap to remove": "اضغط للإزالة", - "Draft": "مسودة", - "Reminder set": "تم ضبط التذكير", - "Also sent in channel": "تم الإرسال أيضًا في القناة", - "Replied to a thread": "تم الرد في موضوع", - "View": "عرض", - "Reminder overdue": "انتهى وقت التذكير", - "Poll has ended": "انتهى التصويت", - "Reply to a message to start a thread": "قم بالرد على رسالة لبدء موضوع", - "Couldn't load new threads. Tap to retry": "تعذر تحميل المواضيع الجديدة. اضغط لإعادة المحاولة", - "{{count}} new threads": "{{count}} مواضيع جديدة", - "No conversations yet": "لا توجد محادثات بعد", - "Are you sure you want to delete this group? This can't be undone.": "هل أنت متأكد أنك تريد حذف هذه المجموعة؟ لا يمكن التراجع عن هذا.", - "Are you sure you want to delete this chat? This can't be undone.": "هل أنت متأكد أنك تريد حذف هذه الدردشة؟ لا يمكن التراجع عن هذا.", - "Delete chat": "حذف الدردشة", - "Delete group": "حذف المجموعة", - "Archive Chat": "أرشفة الدردشة", - "Archive Group": "أرشفة المجموعة", - "Delete Chat": "حذف الدردشة", - "Delete Group": "حذف المجموعة", - "Leave Chat": "مغادرة الدردشة", - "Leave Group": "مغادرة المجموعة", - "Mute Group": "كتم المجموعة", - "Offline": "غير متصل", - "Online": "متصل", - "Unarchive Chat": "إلغاء أرشفة الدردشة", - "Unarchive Group": "إلغاء أرشفة المجموعة", - "Unmute Group": "إلغاء كتم المجموعة", + "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}} أعضاء، {{onlineCount}} متصل", "{{memberCount}} members, {{onlineCount}} online_one": "{{memberCount}} عضو، {{onlineCount}} متصل", "{{memberCount}} members, {{onlineCount}} online_other": "{{memberCount}} أعضاء، {{onlineCount}} متصل", - "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}} أعضاء، {{onlineCount}} متصل", - "{{count}} unread": "{{count}} غير مقروء", - "{{count}} new messages": "{{count}} رسائل جديدة", - "Unsupported Attachment": "مرفق غير مدعوم", - "+{{count}} More Options_one": "+{{count}} خيار إضافي", - "+{{count}} More Options_other": "+{{count}} خيارات إضافية", - "+{{count}} More Options_many": "+{{count}} خيارات إضافية", - "a11y/AI is generating": "AI is generating", - "a11y/AI is thinking": "AI is thinking", - "a11y/Avatar of {{name}}": "Avatar of {{name}}", - "a11y/Connected": "Connected", - "a11y/Delivered": "Delivered", - "a11y/Loading": "Loading", - "a11y/Loading failed": "Loading failed", - "a11y/Message actions": "Message actions", - "a11y/New message from {{user}}": "New message from {{user}}", - "a11y/Offline": "Offline", - "a11y/Open message actions": "Open message actions", - "a11y/Reaction {{emoji}} by {{count}} users": "Reaction {{emoji}} by {{count}} users", - "a11y/Read": "Read", - "a11y/Reconnecting": "Reconnecting", - "a11y/Reply to {{user}}": "Reply to {{user}}", - "a11y/Remove edit": "Remove edit", - "a11y/Remove reply": "Remove reply", - "a11y/Scroll to bottom": "Scroll to bottom", - "a11y/Scroll to bottom, {{count}} new messages": "Scroll to bottom, {{count}} new messages", - "a11y/Scroll to latest": "Scroll to latest", - "a11y/Scroll to latest, {{count}} unread": "Scroll to latest, {{count}} unread", - "a11y/Send message": "Send message", - "a11y/Sending": "Sending", - "a11y/Sent": "Sent", - "a11y/Voice message recording. Hold to record.": "Voice message recording. Hold to record.", - "a11y/{{count}} new messages": "{{count}} new messages", - "a11y/Add attachment": "Add attachment", - "a11y/Close attachments": "Close attachments", - "a11y/Remove attachment": "Remove Attachment", - "a11y/Close poll": "Close poll", - "a11y/Close poll creation": "Close poll creation", - "a11y/Create poll": "Create poll", - "a11y/Decrease maximum votes": "Decrease maximum votes", - "a11y/Delete voice recording": "Delete voice recording", - "a11y/Deselect image": "Deselect image", - "a11y/Deselect video": "Deselect video", - "a11y/Dismiss unread messages": "Dismiss unread messages", - "a11y/Grid Icon": "Grid Icon", - "a11y/Hide Overlay": "Hide Overlay", - "a11y/Increase maximum votes": "Increase maximum votes", - "a11y/Open camera": "Open camera", - "a11y/Open commands": "Open commands", - "a11y/Open file picker": "Open file picker", - "a11y/Open more reactions": "Open more reactions", - "a11y/Open photo picker": "Open photo picker", - "a11y/Open poll creation": "Open poll creation", - "a11y/Open video recorder": "Open video recorder", - "a11y/Play Pause Button": "Play Pause Button", - "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", - "a11y/Save edited message": "Save edited message", - "a11y/Select image": "Select image", - "a11y/Select video": "Select video", - "a11y/Send voice recording": "Send voice recording", - "a11y/Share Button": "Share Button", - "a11y/Start voice recording": "Start voice recording", - "a11y/Stop voice recording": "Stop voice recording", - "a11y/Notifications": "Notifications", - "a11y/Dismiss notification": "Dismiss notification", - "Attachment upload blocked due to {{reason}}": "تم حظر رفع المرفق بسبب {{reason}}", - "Attachment upload failed due to {{reason}}": "فشل رفع المرفق بسبب {{reason}}", - "Command not available": "الأمر غير متاح", - "Command not available while editing": "الأمر غير متاح أثناء التعديل", - "Command not available while replying": "الأمر غير متاح أثناء الرد", - "Error reproducing the recording": "خطأ في تشغيل التسجيل", - "Error uploading attachment": "خطأ في رفع المرفق", - "Failed to create the poll": "فشل إنشاء التصويت", - "Failed to create the poll due to {{reason}}": "فشل إنشاء التصويت بسبب {{reason}}", - "Failed to end the poll": "فشل إنهاء التصويت", - "Failed to end the poll due to {{reason}}": "فشل إنهاء التصويت بسبب {{reason}}", - "Failed to jump to the first unread message": "فشل الانتقال إلى أول رسالة غير مقروءة", - "Failed to retrieve location": "فشل جلب الموقع", - "Failed to share location": "فشل مشاركة الموقع", - "File is required for upload attachment": "الملف مطلوب لرفع المرفق", - "Local upload attachment missing local id": "المرفق المرفوع محليًا يفتقد المعرف المحلي", - "Poll ended": "انتهى التصويت", - "Reached the vote limit. Remove an existing vote first.": "تم الوصول إلى حد التصويت. أزل صوتًا قائمًا أولًا.", - "Thread has not been found": "لم يتم العثور على الموضوع", - "Wait until all attachments have uploaded": "انتظر حتى يتم رفع جميع المرفقات", - "Cannot seek in the recording": "لا يمكن التنقل داخل التسجيل", - "Channel archived": "تمت أرشفة القناة", - "Channel muted": "تم كتم القناة", - "Channel pinned": "تم تثبيت القناة", - "Channel unarchived": "تم إلغاء أرشفة القناة", - "Channel unmuted": "تم إلغاء كتم القناة", - "Channel unpinned": "تم إلغاء تثبيت القناة", - "Edit message request failed": "فشل طلب تعديل الرسالة", - "Failed to block user": "فشل حظر المستخدم", - "Failed to leave channel": "فشل مغادرة القناة", - "Failed to play the recording": "فشل تشغيل التسجيل", - "Failed to update channel archive status": "فشل تحديث حالة أرشفة القناة", - "Failed to update channel mute status": "فشل تحديث حالة كتم القناة", - "Failed to update channel pinned status": "فشل تحديث حالة تثبيت القناة", - "Left channel": "تمت مغادرة القناة", - "Recording format is not supported and cannot be reproduced": "تنسيق التسجيل غير مدعوم ولا يمكن تشغيله", - "Send message request failed": "فشل طلب إرسال الرسالة", - "User blocked": "تم حظر المستخدم", - "User unblocked": "تم إلغاء حظر المستخدم", - "{{ user }} has been muted": "تم كتم {{ user }}", - "{{ user }} has been unmuted": "تم إلغاء كتم {{ user }}", - "size limit": "حد الحجم", - "unknown error": "خطأ غير معروف", - "unsupported file type": "نوع ملف غير مدعوم", - "a11y/Activate to view results": "فعّل لعرض النتائج", - "a11y/End vote": "إنهاء التصويت", - "a11y/Show all options": "إظهار جميع الخيارات", - "a11y/Vote on {{option}}": "صوّت على {{option}}", - "a11y/Double tap and hold to activate contextual menu": "انقر نقرًا مزدوجًا مع الاستمرار لتفعيل قائمة السياق", - "a11y/Swipe right to go through different actions": "اسحب لليمين للتنقل بين الإجراءات المختلفة", - "a11y/Close": "Close", - "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss." + "🏙 Attachment...": "🏙 مرفق..." } diff --git a/package/src/i18n/en.json b/package/src/i18n/en.json index d5d3f16471..852cd70b5d 100644 --- a/package/src/i18n/en.json +++ b/package/src/i18n/en.json @@ -1,4 +1,7 @@ { + "+{{count}} More Options_many": "+{{count}} More Options", + "+{{count}} More Options_one": "+{{count}} More Option", + "+{{count}} More Options_other": "+{{count}} More Options", "+{{count}}_many": "+{{count}}", "+{{count}}_one": "+{{count}}", "+{{count}}_other": "+{{count}}", @@ -11,33 +14,60 @@ "Allow access to your Gallery": "Allow access to your Gallery", "Allow camera access in device settings": "Allow camera access in device settings", "Also send to channel": "Also send to channel", + "Also sent in channel": "Also sent in channel", "Anonymous": "Anonymous", "Anonymous voting": "Anonymous voting", + "Archive Chat": "Archive Chat", + "Archive Group": "Archive Group", + "Are you sure you want to delete this chat? This can't be undone.": "Are you sure you want to delete this chat? This can't be undone.", + "Are you sure you want to delete this group? This can't be undone.": "Are you sure you want to delete this group? This can't be undone.", "Are you sure you want to permanently delete this message?": "Are you sure you want to permanently delete this message?", "Are you sure?": "Are you sure?", "Ask a question": "Ask a question", + "Attachment upload blocked due to {{reason}}": "Attachment upload blocked due to {{reason}}", + "Attachment upload failed due to {{reason}}": "Attachment upload failed due to {{reason}}", "Audio": "Audio", "Ban User": "Ban User", "Block User": "Block User", "Cancel": "Cancel", "Cannot Flag Message": "Cannot Flag Message", + "Cannot seek in the recording": "Cannot seek in the recording", + "Change in Settings": "Change in Settings", + "Channel archived": "Channel archived", + "Channel muted": "Channel muted", + "Channel pinned": "Channel pinned", + "Channel unarchived": "Channel unarchived", + "Channel unmuted": "Channel unmuted", + "Channel unpinned": "Channel unpinned", + "Choose between 2–10 options": "Choose between 2–10 options", + "Command not available": "Command not available", + "Command not available while editing": "Command not available while editing", + "Command not available while replying": "Command not available while replying", "Consider how your comment might make others feel and be sure to follow our Community Guidelines": "Consider how your comment might make others feel and be sure to follow our Community Guidelines", "Copy Message": "Copy Message", + "Couldn't load new threads. Tap to retry": "Couldn't load new threads. Tap to retry", "Create Poll": "Create Poll", + "Create a poll and let everyone vote": "Create a poll and let everyone vote", "Delete": "Delete", + "Delete Chat": "Delete Chat", + "Delete Group": "Delete Group", "Delete Message": "Delete Message", + "Delete chat": "Delete chat", "Delete for me": "Delete for me", + "Delete group": "Delete group", "Device camera is used to take photos or videos.": "Device camera is used to take photos or videos.", "Device gallery permissions is used to take photos or videos.": "Device gallery permissions is used to take photos or videos.", "Do you want to send a copy of this message to a moderator for further investigation?": "Do you want to send a copy of this message to a moderator for further investigation?", + "Draft": "Draft", "Due since {{ dueSince }}": "Due since {{ dueSince }}", "Edit Message": "Edit Message", + "Edit message request failed": "Edit message request failed", "Edited": "Edited", "Editing Message": "Editing Message", "Emoji matching": "Emoji matching", "Empty message...": "Empty message...", - "Enter a new option": "Enter a new option", "End Vote": "End Vote", + "Enter a new option": "Enter a new option", "Error adding flag": "Error adding flag", "Error deleting message": "Error deleting message", "Error fetching reactions": "Error fetching reactions", @@ -48,8 +78,24 @@ "Error muting a user ...": "Error muting a user ...", "Error pinning message": "Error pinning message", "Error removing message pin": "Error removing message pin", + "Error reproducing the recording": "Error reproducing the recording", "Error unmuting a user ...": "Error unmuting a user ...", + "Error uploading attachment": "Error uploading attachment", "Error while loading, please reload/refresh": "Error while loading, please reload/refresh", + "Failed to block user": "Failed to block user", + "Failed to create the poll": "Failed to create the poll", + "Failed to create the poll due to {{reason}}": "Failed to create the poll due to {{reason}}", + "Failed to end the poll": "Failed to end the poll", + "Failed to end the poll due to {{reason}}": "Failed to end the poll due to {{reason}}", + "Failed to jump to the first unread message": "Failed to jump to the first unread message", + "Failed to leave channel": "Failed to leave channel", + "Failed to play the recording": "Failed to play the recording", + "Failed to retrieve location": "Failed to retrieve location", + "Failed to share location": "Failed to share location", + "Failed to update channel archive status": "Failed to update channel archive status", + "Failed to update channel mute status": "Failed to update channel mute status", + "Failed to update channel pinned status": "Failed to update channel pinned status", + "File is required for upload attachment": "File is required for upload attachment", "File is too large: {{ size }}, maximum upload size is {{ limit }}": "File is too large: {{ size }}, maximum upload size is {{ limit }}", "File too large": "File too large", "File type not supported": "File type not supported", @@ -63,41 +109,52 @@ "Hold to start recording.": "Hold to start recording.", "How about sending your first message to a friend?": "How about sending your first message to a friend?", "Instant Commands": "Instant Commands", + "Leave Chat": "Leave Chat", + "Leave Group": "Leave Group", + "Left channel": "Left channel", "Let others add options": "Let others add options", "Let's start chatting!": "Let's start chatting!", + "Limit votes per person": "Limit votes per person", "Links are disabled": "Links are disabled", "Live Location": "Live Location", "Loading channels...": "Loading channels...", "Loading messages...": "Loading messages...", "Loading threads...": "Loading threads...", "Loading...": "Loading...", + "Local upload attachment missing local id": "Local upload attachment missing local id", "Location": "Location", "Mark as Unread": "Mark as Unread", "Maximum number of files reached": "Maximum number of files reached", "Message Reactions": "Message Reactions", "Message deleted": "Message deleted", - "Message has been successfully flagged": "Message has been successfully flagged", + "Message failed to send": "Message failed to send", "Message flagged": "Message flagged", + "Message has been successfully flagged": "Message has been successfully flagged", "Message marked as unread": "Message marked as unread", "Message pinned": "Message pinned", "Message unpinned": "Message unpinned", "Multiple votes": "Multiple votes", - "Network error": "Network error", - "Select more than one option": "Select more than one option", - "Limit votes per person": "Limit votes per person", - "Choose between 2–10 options": "Choose between 2–10 options", + "Mute Group": "Mute Group", "Mute User": "Mute User", + "Network error": "Network error", "No chats here yet…": "No chats here yet…", + "No conversations yet": "No conversations yet", "No items exist": "No items exist", + "No messages yet": "No messages yet", "No threads here yet": "No threads here yet", "Not supported": "Not supported", "Nothing yet...": "Nothing yet...", + "Notify all {{ role }} members": "Notify all {{ role }} members", + "Offline": "Offline", "Ok": "Ok", + "Online": "Online", "Only visible to you": "Only visible to you", + "Open Camera": "Open Camera", + "Open Files": "Open Files", "Open Settings": "Open Settings", "Option": "Option", - "Option {{count}}": "Option {{count}}", "Option already exists": "Option already exists", + "Option {{count}}": "Option {{count}}", "Options": "Options", "Photo": "Photo", "Photos and Videos": "Photos and Videos", @@ -109,16 +166,26 @@ "Poll Comments": "Poll Comments", "Poll Options": "Poll Options", "Poll Results": "Poll Results", + "Poll ended": "Poll ended", + "Poll has ended": "Poll has ended", "Questions": "Questions", + "Reached the vote limit. Remove an existing vote first.": "Reached the vote limit. Remove an existing vote first.", "Reconnecting...": "Reconnecting...", + "Recording format is not supported and cannot be reproduced": "Recording format is not supported and cannot be reproduced", + "Reminder overdue": "Reminder overdue", + "Reminder set": "Reminder set", + "Replied to a thread": "Replied to a thread", "Reply": "Reply", - "Reply to {{name}}": "Reply to {{name}}", "Reply to Message": "Reply to Message", + "Reply to a message to start a thread": "Reply to a message to start a thread", + "Reply to {{name}}": "Reply to {{name}}", "Resend": "Resend", "Retry Upload": "Retry Upload", "SEND": "SEND", "Search": "Search", "Select More Photos": "Select More Photos", + "Select files to share": "Select files to share", + "Select more than one option": "Select more than one option", "Select one": "Select one", "Select one or more": "Select one or more", "Select up to {{count}}_many": "Select up to {{count}}", @@ -126,26 +193,39 @@ "Select up to {{count}}_other": "Select up to {{count}}", "Send Anyway": "Send Anyway", "Send a message": "Send a message", + "Send message request failed": "Send message request failed", "Sending links is not allowed in this conversation": "Sending links is not allowed in this conversation", "Show All": "Show All", "Slide to Cancel": "Slide to Cancel", "Slow mode ON": "Slow mode ON", "Slow mode, wait {{seconds}}s...": "Slow mode, wait {{seconds}}s...", "Suggest an option": "Suggest an option", + "Take a photo and share": "Take a photo and share", + "Take a video and share": "Take a video and share", + "Tap to remove": "Tap to remove", "The message has been reported to a moderator.": "The message has been reported to a moderator.", "The source message was deleted": "The source message was deleted", "Thinking...": "Thinking...", "This reply was deleted": "This reply was deleted", "Thread Reply": "Thread Reply", + "Thread has not been found": "Thread has not been found", "Type a number from 2 to 10": "Type a number from 2 to 10", + "Typing": "Typing", + "Unarchive Chat": "Unarchive Chat", + "Unarchive Group": "Unarchive Group", "Unban User": "Unban User", "Unblock User": "Unblock User", "Unknown User": "Unknown User", + "Unmute Group": "Unmute Group", "Unmute User": "Unmute User", "Unpin from Conversation": "Unpin from Conversation", "Unread Messages": "Unread Messages", + "Unsupported Attachment": "Unsupported Attachment", "Update your comment": "Update your comment", + "User blocked": "User blocked", + "User unblocked": "User unblocked", "Video": "Video", + "View": "View", "View Results": "View Results", "View {{count}} comments_many": "View {{count}} comments", "View {{count}} comments_one": "View {{count}} comment", @@ -153,211 +233,137 @@ "Voice message": "Voice message", "Voice message ({{duration}})": "Voice message ({{duration}})", "Voice message deleted": "Voice message deleted", - "Your comment": "Your comment", + "Wait until all attachments have uploaded": "Wait until all attachments have uploaded", "You": "You", "You can't send messages in this channel": "You can't send messages in this channel", - "duration/Location end at": "{{ milliseconds | durationFormatter(withSuffix: false) }}", - "duration/Message reminder": "{{ milliseconds | durationFormatter(withSuffix: true) }}", - "duration/Remind Me": "{{ milliseconds | durationFormatter(withSuffix: true) }}", - "replied to": "replied to", - "timestamp/ChannelPreviewStatus": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[Yesterday]\", \"lastWeek\":\"dddd\", \"nextDay\":\"[Tomorrow]\", \"nextWeek\":\"dddd [at] LT\", \"sameDay\":\"LT\", \"sameElse\":\"L\"}) }}", - "timestamp/ImageGalleryHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", - "timestamp/InlineDateSeparator": "{{ timestamp | timestampFormatter(calendar: true) }}", - "timestamp/MessageEditedTimestamp": "{{ timestamp | timestampFormatter(calendar: true) }}", - "timestamp/MessageSystem": "{{ timestamp | timestampFormatter(calendar: true) }}", - "timestamp/MessageTimestamp": "{{ timestamp | timestampFormatter(format: LT) }}", - "timestamp/PollVote": "{{ timestamp | relativeCompactDateFormatter }}", - "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true) }}", - "timestamp/StickyHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", - "timestamp/ThreadListItem": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[Yesterday]\", \"lastWeek\":\"dddd\", \"nextDay\":\"[Tomorrow]\", \"nextWeek\":\"dddd [at] LT\", \"sameDay\":\"LT\", \"sameElse\":\"L\"}) }}", - "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} and {{ nonSelfUserLength }} more are typing", - "{{ index }} of {{ photoLength }}": "{{ index }} of {{ photoLength }}", - "{{ replyCount }} Replies": "{{ replyCount }} Replies", - "{{ user }} is typing": "{{ user }} is typing", - "You voted: {{ option }}": "You voted: {{ option }}", - "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }} and {{ secondUser }} are typing", - "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }} people are typing", - "Typing": "Typing", - "No messages yet": "No messages yet", - "Message failed to send": "Message failed to send", - "and {{ count }} others": "and {{ count }} others", - "{{ user }} voted: {{ option }}": "{{ user }} voted: {{ option }}", - "{{count}} Audios_many": "{{count}} Audios", - "{{count}} Audios_one": "{{count}} Audio", - "{{count}} Audios_other": "{{count}} Audios", - "{{count}} Files_many": "{{count}} Files", - "{{count}} Files_one": "{{count}} File", - "{{count}} Files_other": "{{count}} Files", - "{{count}} Photos_many": "{{count}} Photos", - "{{count}} Photos_one": "{{count}} Photo", - "{{count}} Photos_other": "{{count}} Photos", - "{{count}} Voice messages_many": "{{count}} Voice messages", - "{{count}} Voice messages_one": "{{count}} Voice message", - "{{count}} Voice messages_other": "{{count}} Voice messages", - "{{count}} Videos_many": "{{count}} Videos", - "{{count}} Videos_one": "{{count}} Video", - "{{count}} Videos_other": "{{count}} Videos", - "{{count}} votes_many": "{{count}} votes", - "{{count}} votes_one": "{{count}} vote", - "{{count}} votes_other": "{{count}} votes", - "🏙 Attachment...": "🏙 Attachment...", "You have not granted access to the photo library.": "You have not granted access to the photo library.", - "Change in Settings": "Change in Settings", - "Create a poll and let everyone vote": "Create a poll and let everyone vote", - "Open Camera": "Open Camera", - "Open Files": "Open Files", - "Select files to share": "Select files to share", - "Take a photo and share": "Take a photo and share", - "Take a video and share": "Take a video and share", "You have not granted access to your camera": "You have not granted access to your camera", - "{{count}} Reactions_many": "{{count}} Reactions", - "{{count}} Reactions_one": "{{count}} Reaction", - "{{count}} Reactions_other": "{{count}} Reactions", - "Tap to remove": "Tap to remove", - "Draft": "Draft", - "Reminder set": "Reminder set", - "Also sent in channel": "Also sent in channel", - "Replied to a thread": "Replied to a thread", - "View": "View", - "Reminder overdue": "Reminder overdue", - "Poll has ended": "Poll has ended", - "Reply to a message to start a thread": "Reply to a message to start a thread", - "Couldn't load new threads. Tap to retry": "Couldn't load new threads. Tap to retry", - "{{count}} new threads": "{{count}} new threads", - "No conversations yet": "No conversations yet", - "Are you sure you want to delete this group? This can't be undone.": "Are you sure you want to delete this group? This can't be undone.", - "Are you sure you want to delete this chat? This can't be undone.": "Are you sure you want to delete this chat? This can't be undone.", - "Delete chat": "Delete chat", - "Delete group": "Delete group", - "Archive Chat": "Archive Chat", - "Archive Group": "Archive Group", - "Delete Chat": "Delete Chat", - "Delete Group": "Delete Group", - "Leave Chat": "Leave Chat", - "Leave Group": "Leave Group", - "Mute Group": "Mute Group", - "Offline": "Offline", - "Online": "Online", - "Unarchive Chat": "Unarchive Chat", - "Unarchive Group": "Unarchive Group", - "Unmute Group": "Unmute Group", - "{{memberCount}} members, {{onlineCount}} online_one": "{{memberCount}} member, {{onlineCount}} online", - "{{memberCount}} members, {{onlineCount}} online_other": "{{memberCount}} members, {{onlineCount}} online", - "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}} members, {{onlineCount}} online", - "{{count}} unread": "{{count}} unread", - "{{count}} new messages": "{{count}} new messages", - "Unsupported Attachment": "Unsupported Attachment", - "+{{count}} More Options_one": "+{{count}} More Option", - "+{{count}} More Options_other": "+{{count}} More Options", - "+{{count}} More Options_many": "+{{count}} More Options", + "You voted: {{ option }}": "You voted: {{ option }}", + "Your comment": "Your comment", "a11y/AI is generating": "AI is generating", "a11y/AI is thinking": "AI is thinking", - "a11y/Avatar of {{name}}": "Avatar of {{name}}", - "a11y/Connected": "Connected", - "a11y/Delivered": "Delivered", - "a11y/Loading": "Loading", - "a11y/Loading failed": "Loading failed", - "a11y/Message actions": "Message actions", - "a11y/New message from {{user}}": "New message from {{user}}", - "a11y/Offline": "Offline", - "a11y/Open message actions": "Open message actions", - "a11y/Reaction {{emoji}} by {{count}} users": "Reaction {{emoji}} by {{count}} users", - "a11y/Read": "Read", - "a11y/Reconnecting": "Reconnecting", - "a11y/Reply to {{user}}": "Reply to {{user}}", - "a11y/Remove edit": "Remove edit", - "a11y/Remove reply": "Remove reply", - "a11y/Scroll to bottom": "Scroll to bottom", - "a11y/Scroll to bottom, {{count}} new messages": "Scroll to bottom, {{count}} new messages", - "a11y/Scroll to latest": "Scroll to latest", - "a11y/Scroll to latest, {{count}} unread": "Scroll to latest, {{count}} unread", - "a11y/Send message": "Send message", - "a11y/Sending": "Sending", - "a11y/Sent": "Sent", - "a11y/Voice message recording. Hold to record.": "Voice message recording. Hold to record.", - "a11y/{{count}} new messages": "{{count}} new messages", + "a11y/Activate to view results": "Activate to view results", "a11y/Add attachment": "Add attachment", + "a11y/Avatar of {{name}}": "Avatar of {{name}}", + "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.", + "a11y/Close": "Close", "a11y/Close attachments": "Close attachments", - "a11y/Remove attachment": "Remove Attachment", "a11y/Close poll": "Close poll", "a11y/Close poll creation": "Close poll creation", + "a11y/Command suggestions available": "Command suggestions available", + "a11y/Connected": "Connected", "a11y/Create poll": "Create poll", "a11y/Decrease maximum votes": "Decrease maximum votes", "a11y/Delete voice recording": "Delete voice recording", + "a11y/Delivered": "Delivered", "a11y/Deselect image": "Deselect image", "a11y/Deselect video": "Deselect video", + "a11y/Dismiss notification": "Dismiss notification", "a11y/Dismiss unread messages": "Dismiss unread messages", + "a11y/Double tap and hold to activate contextual menu": "Double tap and hold to activate contextual menu", + "a11y/Emoji suggestions available": "Emoji suggestions available", + "a11y/End vote": "End vote", "a11y/Grid Icon": "Grid Icon", "a11y/Hide Overlay": "Hide Overlay", "a11y/Increase maximum votes": "Increase maximum votes", + "a11y/Loading": "Loading", + "a11y/Loading failed": "Loading failed", + "a11y/Mention suggestions available": "Mention suggestions available", + "a11y/Message actions": "Message actions", + "a11y/New message from {{user}}": "New message from {{user}}", + "a11y/Notifications": "Notifications", + "a11y/Offline": "Offline", "a11y/Open camera": "Open camera", "a11y/Open commands": "Open commands", "a11y/Open file picker": "Open file picker", + "a11y/Open message actions": "Open message actions", "a11y/Open more reactions": "Open more reactions", "a11y/Open photo picker": "Open photo picker", "a11y/Open poll creation": "Open poll creation", "a11y/Open video recorder": "Open video recorder", "a11y/Play Pause Button": "Play Pause Button", - "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", + "a11y/Reaction {{emoji}} by {{count}} users": "Reaction {{emoji}} by {{count}} users", + "a11y/Read": "Read", + "a11y/Reconnecting": "Reconnecting", + "a11y/Remove attachment": "Remove Attachment", + "a11y/Remove edit": "Remove edit", + "a11y/Remove reply": "Remove reply", + "a11y/Reply to {{user}}": "Reply to {{user}}", "a11y/Save edited message": "Save edited message", + "a11y/Scroll to bottom": "Scroll to bottom", + "a11y/Scroll to bottom, {{count}} new messages": "Scroll to bottom, {{count}} new messages", + "a11y/Scroll to latest": "Scroll to latest", + "a11y/Scroll to latest, {{count}} unread": "Scroll to latest, {{count}} unread", "a11y/Select image": "Select image", "a11y/Select video": "Select video", + "a11y/Send message": "Send message", "a11y/Send voice recording": "Send voice recording", + "a11y/Sending": "Sending", + "a11y/Sent": "Sent", "a11y/Share Button": "Share Button", + "a11y/Show all options": "Show all options", "a11y/Start voice recording": "Start voice recording", "a11y/Stop voice recording": "Stop voice recording", - "a11y/Notifications": "Notifications", - "a11y/Dismiss notification": "Dismiss notification", - "a11y/Activate to view results": "Activate to view results", - "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.", - "a11y/Close": "Close", - "a11y/Double tap and hold to activate contextual menu": "Double tap and hold to activate contextual menu", - "a11y/End vote": "End vote", - "a11y/Show all options": "Show all options", "a11y/Swipe right to go through different actions": "Swipe right to go through different actions", + "a11y/Voice message recording. Hold to record.": "Voice message recording. Hold to record.", "a11y/Vote on {{option}}": "Vote on {{option}}", - "Attachment upload blocked due to {{reason}}": "Attachment upload blocked due to {{reason}}", - "Attachment upload failed due to {{reason}}": "Attachment upload failed due to {{reason}}", - "Command not available": "Command not available", - "Command not available while editing": "Command not available while editing", - "Command not available while replying": "Command not available while replying", - "Error reproducing the recording": "Error reproducing the recording", - "Error uploading attachment": "Error uploading attachment", - "Failed to create the poll": "Failed to create the poll", - "Failed to create the poll due to {{reason}}": "Failed to create the poll due to {{reason}}", - "Failed to end the poll": "Failed to end the poll", - "Failed to end the poll due to {{reason}}": "Failed to end the poll due to {{reason}}", - "Failed to jump to the first unread message": "Failed to jump to the first unread message", - "Failed to retrieve location": "Failed to retrieve location", - "Failed to share location": "Failed to share location", - "File is required for upload attachment": "File is required for upload attachment", - "Local upload attachment missing local id": "Local upload attachment missing local id", - "Poll ended": "Poll ended", - "Reached the vote limit. Remove an existing vote first.": "Reached the vote limit. Remove an existing vote first.", - "Thread has not been found": "Thread has not been found", - "Wait until all attachments have uploaded": "Wait until all attachments have uploaded", - "Cannot seek in the recording": "Cannot seek in the recording", - "Channel archived": "Channel archived", - "Channel muted": "Channel muted", - "Channel pinned": "Channel pinned", - "Channel unarchived": "Channel unarchived", - "Channel unmuted": "Channel unmuted", - "Channel unpinned": "Channel unpinned", - "Edit message request failed": "Edit message request failed", - "Failed to block user": "Failed to block user", - "Failed to leave channel": "Failed to leave channel", - "Failed to play the recording": "Failed to play the recording", - "Failed to update channel archive status": "Failed to update channel archive status", - "Failed to update channel mute status": "Failed to update channel mute status", - "Failed to update channel pinned status": "Failed to update channel pinned status", - "Left channel": "Left channel", - "Recording format is not supported and cannot be reproduced": "Recording format is not supported and cannot be reproduced", - "Send message request failed": "Send message request failed", - "User blocked": "User blocked", - "User unblocked": "User unblocked", - "{{ user }} has been muted": "{{ user }} has been muted", - "{{ user }} has been unmuted": "{{ user }} has been unmuted", + "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", + "a11y/{{count}} new messages": "{{count}} new messages", + "and {{ count }} others": "and {{ count }} others", + "duration/Location end at": "{{ milliseconds | durationFormatter(withSuffix: false) }}", + "duration/Message reminder": "{{ milliseconds | durationFormatter(withSuffix: true) }}", + "duration/Remind Me": "{{ milliseconds | durationFormatter(withSuffix: true) }}", + "mention/Channel Description": "Notify everyone in this channel", + "mention/Here Description": "Notify every online member in this channel", + "replied to": "replied to", "size limit": "size limit", + "timestamp/ChannelPreviewStatus": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[Yesterday]\", \"lastWeek\":\"dddd\", \"nextDay\":\"[Tomorrow]\", \"nextWeek\":\"dddd [at] LT\", \"sameDay\":\"LT\", \"sameElse\":\"L\"}) }}", + "timestamp/ImageGalleryHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", + "timestamp/InlineDateSeparator": "{{ timestamp | timestampFormatter(calendar: true) }}", + "timestamp/MessageEditedTimestamp": "{{ timestamp | timestampFormatter(calendar: true) }}", + "timestamp/MessageSystem": "{{ timestamp | timestampFormatter(calendar: true) }}", + "timestamp/MessageTimestamp": "{{ timestamp | timestampFormatter(format: LT) }}", + "timestamp/PollVote": "{{ timestamp | relativeCompactDateFormatter }}", + "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true) }}", + "timestamp/StickyHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", + "timestamp/ThreadListItem": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[Yesterday]\", \"lastWeek\":\"dddd\", \"nextDay\":\"[Tomorrow]\", \"nextWeek\":\"dddd [at] LT\", \"sameDay\":\"LT\", \"sameElse\":\"L\"}) }}", "unknown error": "unknown error", - "unsupported file type": "unsupported file type" + "unsupported file type": "unsupported file type", + "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} and {{ nonSelfUserLength }} more are typing", + "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }} and {{ secondUser }} are typing", + "{{ index }} of {{ photoLength }}": "{{ index }} of {{ photoLength }}", + "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }} people are typing", + "{{ replyCount }} Replies": "{{ replyCount }} Replies", + "{{ user }} has been muted": "{{ user }} has been muted", + "{{ user }} has been unmuted": "{{ user }} has been unmuted", + "{{ user }} is typing": "{{ user }} is typing", + "{{ user }} voted: {{ option }}": "{{ user }} voted: {{ option }}", + "{{count}} Audios_many": "{{count}} Audios", + "{{count}} Audios_one": "{{count}} Audio", + "{{count}} Audios_other": "{{count}} Audios", + "{{count}} Files_many": "{{count}} Files", + "{{count}} Files_one": "{{count}} File", + "{{count}} Files_other": "{{count}} Files", + "{{count}} Photos_many": "{{count}} Photos", + "{{count}} Photos_one": "{{count}} Photo", + "{{count}} Photos_other": "{{count}} Photos", + "{{count}} Reactions_many": "{{count}} Reactions", + "{{count}} Reactions_one": "{{count}} Reaction", + "{{count}} Reactions_other": "{{count}} Reactions", + "{{count}} Videos_many": "{{count}} Videos", + "{{count}} Videos_one": "{{count}} Video", + "{{count}} Videos_other": "{{count}} Videos", + "{{count}} Voice messages_many": "{{count}} Voice messages", + "{{count}} Voice messages_one": "{{count}} Voice message", + "{{count}} Voice messages_other": "{{count}} Voice messages", + "{{count}} new messages": "{{count}} new messages", + "{{count}} new threads": "{{count}} new threads", + "{{count}} unread": "{{count}} unread", + "{{count}} votes_many": "{{count}} votes", + "{{count}} votes_one": "{{count}} vote", + "{{count}} votes_other": "{{count}} votes", + "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}} members, {{onlineCount}} online", + "{{memberCount}} members, {{onlineCount}} online_one": "{{memberCount}} member, {{onlineCount}} online", + "{{memberCount}} members, {{onlineCount}} online_other": "{{memberCount}} members, {{onlineCount}} online", + "🏙 Attachment...": "🏙 Attachment..." } diff --git a/package/src/i18n/es.json b/package/src/i18n/es.json index 75fdc566e5..fe25593c75 100644 --- a/package/src/i18n/es.json +++ b/package/src/i18n/es.json @@ -1,4 +1,7 @@ { + "+{{count}} More Options_many": "+{{count}} opciones más", + "+{{count}} More Options_one": "+{{count}} opción más", + "+{{count}} More Options_other": "+{{count}} opciones más", "+{{count}}_many": "+{{count}}", "+{{count}}_one": "+{{count}}", "+{{count}}_other": "+{{count}}", @@ -11,33 +14,60 @@ "Allow access to your Gallery": "Permitir acceso a tu galería", "Allow camera access in device settings": "Permitir el acceso a la cámara en la configuración del dispositivo", "Also send to channel": "También enviar al canal", + "Also sent in channel": "También enviado en el canal", "Anonymous": "Anónimo", "Anonymous voting": "Encuesta anónima", + "Archive Chat": "Archivar chat", + "Archive Group": "Archivar grupo", + "Are you sure you want to delete this chat? This can't be undone.": "¿Seguro que quieres eliminar este chat? Esta acción no se puede deshacer.", + "Are you sure you want to delete this group? This can't be undone.": "¿Seguro que quieres eliminar este grupo? Esta acción no se puede deshacer.", "Are you sure you want to permanently delete this message?": "¿Estás seguro de que deseas eliminar permanentemente este mensaje?", "Are you sure?": "¿Estás seguro?", "Ask a question": "Hacer una pregunta", + "Attachment upload blocked due to {{reason}}": "Carga de adjunto bloqueada por {{reason}}", + "Attachment upload failed due to {{reason}}": "Error al cargar el adjunto debido a {{reason}}", "Audio": "Audio", "Ban User": "Bloquear Usuario", "Block User": "Bloquear usuario", "Cancel": "Cancelar", "Cannot Flag Message": "No se puede reportar el mensaje", + "Cannot seek in the recording": "No se puede cambiar la posición de la grabación", + "Change in Settings": "Cambiar en Ajustes", + "Channel archived": "Canal archivado", + "Channel muted": "Canal silenciado", + "Channel pinned": "Canal fijado", + "Channel unarchived": "Canal desarchivado", + "Channel unmuted": "Canal no silenciado", + "Channel unpinned": "Canal desfijado", + "Choose between 2–10 options": "Elige entre 2 y 10 opciones", + "Command not available": "Comando no disponible", + "Command not available while editing": "Comando no disponible mientras editas", + "Command not available while replying": "Comando no disponible mientras respondes", "Consider how your comment might make others feel and be sure to follow our Community Guidelines": "Considera cómo tu comentario podría hacer sentir a los demás y asegúrate de seguir nuestras Normas de la Comunidad", "Copy Message": "Copiar mensaje", + "Couldn't load new threads. Tap to retry": "No se pudieron cargar nuevos hilos. Toca para reintentar", "Create Poll": "Crear encuesta", + "Create a poll and let everyone vote": "Crea una encuesta y deja que todos voten", "Delete": "Eliminar", + "Delete Chat": "Eliminar chat", + "Delete Group": "Eliminar grupo", "Delete Message": "Eliminar mensaje", + "Delete chat": "Eliminar chat", "Delete for me": "Eliminar para mí", + "Delete group": "Eliminar grupo", "Device camera is used to take photos or videos.": "La cámara del dispositivo se utiliza para tomar fotografías o vídeos.", "Device gallery permissions is used to take photos or videos.": "Los permisos de la galería del dispositivo se utilizan para tomar fotos o videos.", "Do you want to send a copy of this message to a moderator for further investigation?": "¿Deseas enviar una copia de este mensaje a un moderador para una investigación adicional?", + "Draft": "Borrador", "Due since {{ dueSince }}": "Debido desde {{ dueSince }}", "Edit Message": "Editar mensaje", + "Edit message request failed": "No se pudo editar el mensaje", "Edited": "Editado", "Editing Message": "Editando mensaje", "Emoji matching": "Coincidencia de emoji", "Empty message...": "Mensaje vacío...", - "Enter a new option": "Introduce una nueva opción", "End Vote": "Finalizar votación", + "Enter a new option": "Introduce una nueva opción", "Error adding flag": "Error al reportar el mensaje", "Error deleting message": "Error al eliminar el mensaje", "Error fetching reactions": "Error al obtener las reacciones", @@ -48,8 +78,24 @@ "Error muting a user ...": "Error al silenciar a un usuario ...", "Error pinning message": "Error al fijar el mensaje", "Error removing message pin": "Error al quitar la fijación del mensaje", + "Error reproducing the recording": "Error al reproducir la grabación", "Error unmuting a user ...": "Error al dejar de silenciar a un usuario ...", + "Error uploading attachment": "Error al cargar el adjunto", "Error while loading, please reload/refresh": "Error al cargar, por favor recarga/actualiza", + "Failed to block user": "No se pudo bloquear al usuario", + "Failed to create the poll": "No se pudo crear la encuesta", + "Failed to create the poll due to {{reason}}": "No se pudo crear la encuesta debido a {{reason}}", + "Failed to end the poll": "No se pudo finalizar la encuesta", + "Failed to end the poll due to {{reason}}": "No se pudo finalizar la encuesta debido a {{reason}}", + "Failed to jump to the first unread message": "No se pudo ir al primer mensaje no leído", + "Failed to leave channel": "No se pudo salir del canal", + "Failed to play the recording": "No se pudo reproducir la grabación", + "Failed to retrieve location": "No se pudo obtener la ubicación", + "Failed to share location": "No se pudo compartir la ubicación", + "Failed to update channel archive status": "No se pudo actualizar el estado de archivo del canal", + "Failed to update channel mute status": "No se pudo actualizar el estado de silencio del canal", + "Failed to update channel pinned status": "No se pudo actualizar el estado de fijación del canal", + "File is required for upload attachment": "Se requiere un archivo para cargar un adjunto", "File is too large: {{ size }}, maximum upload size is {{ limit }}": "El archivo es demasiado grande: {{ size }}, el tamaño máximo de carga es de {{ limit }}", "File too large": "Archivo demasiado grande", "File type not supported": "Tipo de archivo no admitido", @@ -63,41 +109,52 @@ "Hold to start recording.": "Mantén presionado para comenzar a grabar.", "How about sending your first message to a friend?": "¿Qué tal enviar tu primer mensaje a un amigo?", "Instant Commands": "Comandos instantáneos", + "Leave Chat": "Salir del chat", + "Leave Group": "Salir del grupo", + "Left channel": "Saliste del canal", "Let others add options": "Permitir que otros añadan opciones", "Let's start chatting!": "¡Empecemos a charlar!", + "Limit votes per person": "Limita los votos por persona", "Links are disabled": "Los enlaces están desactivados", "Live Location": "Ubicación en vivo", "Loading channels...": "Cargando canales...", "Loading messages...": "Cargando mensajes...", "Loading threads...": "Cargando hilos...", "Loading...": "Cargando...", + "Local upload attachment missing local id": "Falta el ID local del adjunto local de carga", "Location": "Ubicación", "Mark as Unread": "Marcar como no leído", "Maximum number of files reached": "Número máximo de archivos alcanzado", "Message Reactions": "Reacciones al mensaje", "Message deleted": "Mensaje eliminado", - "Message has been successfully flagged": "El mensaje se ha reportado correctamente", + "Message failed to send": "El mensaje no se pudo enviar", "Message flagged": "Mensaje reportado", + "Message has been successfully flagged": "El mensaje se ha reportado correctamente", "Message marked as unread": "Mensaje marcado como no leído", "Message pinned": "Mensaje fijado", "Message unpinned": "Mensaje desfijado", "Multiple votes": "Votos múltiples", - "Network error": "Error de red", - "Select more than one option": "Selecciona más de una opción", - "Limit votes per person": "Limita los votos por persona", - "Choose between 2–10 options": "Elige entre 2 y 10 opciones", + "Mute Group": "Silenciar grupo", "Mute User": "Silenciar usuario", + "Network error": "Error de red", "No chats here yet…": "No hay chats aquí todavía...", + "No conversations yet": "No hay conversaciones todavía", "No items exist": "No hay elementos", + "No messages yet": "No hay mensajes todavía", "No threads here yet": "Aún no hay hilos aquí", "Not supported": "No admitido", "Nothing yet...": "Aún no hay nada...", + "Notify all {{ role }} members": "Notify all {{ role }} members", + "Offline": "Desconectado", "Ok": "Aceptar", + "Online": "En línea", "Only visible to you": "Solo visible para ti", + "Open Camera": "Abrir camara", + "Open Files": "Abrir archivos", "Open Settings": "Configuración abierta", "Option": "Opción", - "Option {{count}}": "Opción {{count}}", "Option already exists": "La opción ya existe", + "Option {{count}}": "Opción {{count}}", "Options": "Opciones", "Photo": "Foto", "Photos and Videos": "Fotos y videos", @@ -109,16 +166,26 @@ "Poll Comments": "Comentarios de la encuesta", "Poll Options": "Opciones de la encuesta", "Poll Results": "Resultados de la encuesta", + "Poll ended": "Encuesta finalizada", + "Poll has ended": "Votación finalizada", "Questions": "Preguntas", + "Reached the vote limit. Remove an existing vote first.": "Se alcanzó el límite de votos. Elimina un voto existente primero.", "Reconnecting...": "Reconectando...", + "Recording format is not supported and cannot be reproduced": "El formato de la grabación no es compatible y no se puede reproducir", + "Reminder overdue": "Recordatorio vencido", + "Reminder set": "Recordatorio establecido", + "Replied to a thread": "Respondido a un hilo", "Reply": "Responder", - "Reply to {{name}}": "Responder a {{name}}", "Reply to Message": "Responder al mensaje", + "Reply to a message to start a thread": "Responde a un mensaje para empezar un hilo", + "Reply to {{name}}": "Responder a {{name}}", "Resend": "Reenviar", "Retry Upload": "Reintentar carga", "SEND": "ENVIAR", "Search": "Buscar", "Select More Photos": "Seleccionar más fotos", + "Select files to share": "Selecciona archivos para compartir", + "Select more than one option": "Selecciona más de una opción", "Select one": "Seleccionar una", "Select one or more": "Seleccionar una o más", "Select up to {{count}}_many": "Selecciona hasta {{count}}", @@ -126,26 +193,39 @@ "Select up to {{count}}_other": "Selecciona hasta {{count}}", "Send Anyway": "Enviar de todos modos", "Send a message": "Enviar un mensaje", + "Send message request failed": "No se pudo enviar el mensaje", "Sending links is not allowed in this conversation": "No está permitido enviar enlaces en esta conversación", "Show All": "Mostrar todo", "Slide to Cancel": "Desliza para cancelar", "Slow mode ON": "Modo lento ACTIVADO", "Slow mode, wait {{seconds}}s...": "Modo lento, espera {{seconds}}s...", "Suggest an option": "Sugerir una opción", + "Take a photo and share": "Toma una foto y compártela", + "Take a video and share": "Graba un video y compártelo", + "Tap to remove": "Toca para quitar", "The message has been reported to a moderator.": "El mensaje ha sido reportado a un moderador.", "The source message was deleted": "El mensaje original fue eliminado", "Thinking...": "Pensando...", "This reply was deleted": "Esta respuesta fue eliminada", "Thread Reply": "Respuesta de hilo", + "Thread has not been found": "No se encontró el hilo", "Type a number from 2 to 10": "Escribe un número de 2 a 10", + "Typing": "Escribiendo", + "Unarchive Chat": "Desarchivar chat", + "Unarchive Group": "Desarchivar grupo", "Unban User": "Desbloquear usuario", "Unblock User": "Desbloquear usuario", "Unknown User": "Usuario desconocido", + "Unmute Group": "Activar sonido del grupo", "Unmute User": "Activar sonido del usuario", "Unpin from Conversation": "Desmarcar de la conversación", "Unread Messages": "Mensajes no leídos", + "Unsupported Attachment": "Adjunto no admitido", "Update your comment": "Actualizar tu comentario", + "User blocked": "Usuario bloqueado", + "User unblocked": "Usuario desbloqueado", "Video": "Video", + "View": "Ver", "View Results": "Ver resultados", "View {{count}} comments_many": "Ver {{count}} comentarios", "View {{count}} comments_one": "Ver {{count}} comentario", @@ -153,13 +233,90 @@ "Voice message": "Mensaje de voz", "Voice message ({{duration}})": "Mensaje de voz ({{duration}})", "Voice message deleted": "Mensaje de voz eliminado", - "Your comment": "Tu comentario", + "Wait until all attachments have uploaded": "Espera hasta que se hayan cargado todos los adjuntos", "You": "Tú", "You can't send messages in this channel": "No puedes enviar mensajes en este canal", + "You have not granted access to the photo library.": "No has concedido acceso a la biblioteca de fotos.", + "You have not granted access to your camera": "No has concedido acceso a tu camara", + "You voted: {{ option }}": "Has votado: {{ option }}", + "Your comment": "Tu comentario", + "a11y/AI is generating": "La IA está generando", + "a11y/AI is thinking": "La IA está pensando", + "a11y/Activate to view results": "Activa para ver los resultados", + "a11y/Add attachment": "Add attachment", + "a11y/Avatar of {{name}}": "Avatar de {{name}}", + "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.", + "a11y/Close": "Close", + "a11y/Close attachments": "Close attachments", + "a11y/Close poll": "Close poll", + "a11y/Close poll creation": "Close poll creation", + "a11y/Command suggestions available": "Command suggestions available", + "a11y/Connected": "Conectado", + "a11y/Create poll": "Create poll", + "a11y/Decrease maximum votes": "Decrease maximum votes", + "a11y/Delete voice recording": "Delete voice recording", + "a11y/Delivered": "Entregado", + "a11y/Deselect image": "Deselect image", + "a11y/Deselect video": "Deselect video", + "a11y/Dismiss notification": "Descartar notificación", + "a11y/Dismiss unread messages": "Dismiss unread messages", + "a11y/Double tap and hold to activate contextual menu": "Toca dos veces y mantén pulsado para activar el menú contextual", + "a11y/Emoji suggestions available": "Emoji suggestions available", + "a11y/End vote": "Finalizar votación", + "a11y/Grid Icon": "Grid Icon", + "a11y/Hide Overlay": "Hide Overlay", + "a11y/Increase maximum votes": "Increase maximum votes", + "a11y/Loading": "Cargando", + "a11y/Loading failed": "Error al cargar", + "a11y/Mention suggestions available": "Mention suggestions available", + "a11y/Message actions": "Acciones del mensaje", + "a11y/New message from {{user}}": "Nuevo mensaje de {{user}}", + "a11y/Notifications": "Notificaciones", + "a11y/Offline": "Sin conexión", + "a11y/Open camera": "Open camera", + "a11y/Open commands": "Open commands", + "a11y/Open file picker": "Open file picker", + "a11y/Open message actions": "Abrir acciones del mensaje", + "a11y/Open more reactions": "Open more reactions", + "a11y/Open photo picker": "Open photo picker", + "a11y/Open poll creation": "Open poll creation", + "a11y/Open video recorder": "Open video recorder", + "a11y/Play Pause Button": "Play Pause Button", + "a11y/Reaction {{emoji}} by {{count}} users": "Reacción {{emoji}} de {{count}} usuarios", + "a11y/Read": "Leído", + "a11y/Reconnecting": "Reconectando", + "a11y/Remove attachment": "Remove Attachment", + "a11y/Remove edit": "Eliminar edición", + "a11y/Remove reply": "Eliminar respuesta", + "a11y/Reply to {{user}}": "Responder a {{user}}", + "a11y/Save edited message": "Save edited message", + "a11y/Scroll to bottom": "Ir al final", + "a11y/Scroll to bottom, {{count}} new messages": "Ir al final, {{count}} mensajes nuevos", + "a11y/Scroll to latest": "Ir al último mensaje", + "a11y/Scroll to latest, {{count}} unread": "Ir al último mensaje, {{count}} sin leer", + "a11y/Select image": "Select image", + "a11y/Select video": "Select video", + "a11y/Send message": "Enviar mensaje", + "a11y/Send voice recording": "Send voice recording", + "a11y/Sending": "Enviando", + "a11y/Sent": "Enviado", + "a11y/Share Button": "Share Button", + "a11y/Show all options": "Mostrar todas las opciones", + "a11y/Start voice recording": "Start voice recording", + "a11y/Stop voice recording": "Stop voice recording", + "a11y/Swipe right to go through different actions": "Desliza a la derecha para recorrer las diferentes acciones", + "a11y/Voice message recording. Hold to record.": "Grabación de mensaje de voz. Mantén pulsado para grabar.", + "a11y/Vote on {{option}}": "Votar por {{option}}", + "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", + "a11y/{{count}} new messages": "{{count}} mensajes nuevos", + "and {{ count }} others": "y {{ count }} más", "duration/Location end at": "{{ milliseconds | durationFormatter(withSuffix: false) }}", "duration/Message reminder": "{{ milliseconds | durationFormatter(withSuffix: true) }}", "duration/Remind Me": "{{ milliseconds | durationFormatter(withSuffix: true) }}", + "mention/Channel Description": "Notify everyone in this channel", + "mention/Here Description": "Notify every online member in this channel", "replied to": "respondió a", + "size limit": "límite de tamaño", "timestamp/ChannelPreviewStatus": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[Ayer]\", \"lastWeek\":\"dddd\", \"nextDay\":\"[Mañana]\", \"nextWeek\":\"dddd [a las] LT\", \"sameDay\":\"LT\", \"sameElse\":\"L\"}) }}", "timestamp/ImageGalleryHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/InlineDateSeparator": "{{ timestamp | timestampFormatter(calendar: true) }}", @@ -170,17 +327,16 @@ "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/StickyHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/ThreadListItem": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[Ayer]\", \"lastWeek\":\"dddd\", \"nextDay\":\"[Mañana]\", \"nextWeek\":\"dddd [a las] LT\", \"sameDay\":\"LT\", \"sameElse\":\"L\"}) }}", + "unknown error": "error desconocido", + "unsupported file type": "tipo de archivo no compatible", "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} y {{ nonSelfUserLength }} más están escribiendo", + "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }} y {{ secondUser }} están escribiendo", "{{ index }} of {{ photoLength }}": "{{ index }} de {{ photoLength }}", + "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }} personas están escribiendo", "{{ replyCount }} Replies": "{{ replyCount }} Respuestas", + "{{ user }} has been muted": "{{ user }} ha sido silenciado", + "{{ user }} has been unmuted": "{{ user }} ya no está silenciado", "{{ user }} is typing": "{{ user }} está escribiendo", - "You voted: {{ option }}": "Has votado: {{ option }}", - "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }} y {{ secondUser }} están escribiendo", - "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }} personas están escribiendo", - "Typing": "Escribiendo", - "No messages yet": "No hay mensajes todavía", - "Message failed to send": "El mensaje no se pudo enviar", - "and {{ count }} others": "y {{ count }} más", "{{ user }} voted: {{ option }}": "{{ user }} votó: {{ option }}", "{{count}} Audios_many": "{{count}} audios", "{{count}} Audios_one": "{{count}} audio", @@ -191,173 +347,23 @@ "{{count}} Photos_many": "{{count}} fotos", "{{count}} Photos_one": "{{count}} foto", "{{count}} Photos_other": "{{count}} fotos", - "{{count}} Voice messages_many": "{{count}} mensajes de voz", - "{{count}} Voice messages_one": "{{count}} mensaje de voz", - "{{count}} Voice messages_other": "{{count}} mensajes de voz", + "{{count}} Reactions_many": "{{count}} reacciones", + "{{count}} Reactions_one": "{{count}} reacción", + "{{count}} Reactions_other": "{{count}} reacciones", "{{count}} Videos_many": "{{count}} vídeos", "{{count}} Videos_one": "{{count}} vídeo", "{{count}} Videos_other": "{{count}} vídeos", + "{{count}} Voice messages_many": "{{count}} mensajes de voz", + "{{count}} Voice messages_one": "{{count}} mensaje de voz", + "{{count}} Voice messages_other": "{{count}} mensajes de voz", + "{{count}} new messages": "{{count}} nuevos mensajes", + "{{count}} new threads": "{{count}} nuevos hilos", + "{{count}} unread": "{{count}} no leídos", "{{count}} votes_many": "{{count}} votos", "{{count}} votes_one": "{{count}} voto", "{{count}} votes_other": "{{count}} votos", - "🏙 Attachment...": "🏙 Adjunto...", - "You have not granted access to the photo library.": "No has concedido acceso a la biblioteca de fotos.", - "Change in Settings": "Cambiar en Ajustes", - "Create a poll and let everyone vote": "Crea una encuesta y deja que todos voten", - "Open Camera": "Abrir camara", - "Open Files": "Abrir archivos", - "Select files to share": "Selecciona archivos para compartir", - "Take a photo and share": "Toma una foto y compártela", - "Take a video and share": "Graba un video y compártelo", - "You have not granted access to your camera": "No has concedido acceso a tu camara", - "{{count}} Reactions_many": "{{count}} reacciones", - "{{count}} Reactions_one": "{{count}} reacción", - "{{count}} Reactions_other": "{{count}} reacciones", - "Tap to remove": "Toca para quitar", - "Draft": "Borrador", - "Reminder set": "Recordatorio establecido", - "Also sent in channel": "También enviado en el canal", - "Replied to a thread": "Respondido a un hilo", - "View": "Ver", - "Reminder overdue": "Recordatorio vencido", - "Poll has ended": "Votación finalizada", - "Reply to a message to start a thread": "Responde a un mensaje para empezar un hilo", - "Couldn't load new threads. Tap to retry": "No se pudieron cargar nuevos hilos. Toca para reintentar", - "{{count}} new threads": "{{count}} nuevos hilos", - "No conversations yet": "No hay conversaciones todavía", - "Are you sure you want to delete this group? This can't be undone.": "¿Seguro que quieres eliminar este grupo? Esta acción no se puede deshacer.", - "Are you sure you want to delete this chat? This can't be undone.": "¿Seguro que quieres eliminar este chat? Esta acción no se puede deshacer.", - "Delete chat": "Eliminar chat", - "Delete group": "Eliminar grupo", - "Archive Chat": "Archivar chat", - "Archive Group": "Archivar grupo", - "Delete Chat": "Eliminar chat", - "Delete Group": "Eliminar grupo", - "Leave Chat": "Salir del chat", - "Leave Group": "Salir del grupo", - "Mute Group": "Silenciar grupo", - "Offline": "Desconectado", - "Online": "En línea", - "Unarchive Chat": "Desarchivar chat", - "Unarchive Group": "Desarchivar grupo", - "Unmute Group": "Activar sonido del grupo", + "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}} miembros, {{onlineCount}} en línea", "{{memberCount}} members, {{onlineCount}} online_one": "{{memberCount}} miembro, {{onlineCount}} en línea", "{{memberCount}} members, {{onlineCount}} online_other": "{{memberCount}} miembros, {{onlineCount}} en línea", - "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}} miembros, {{onlineCount}} en línea", - "{{count}} unread": "{{count}} no leídos", - "{{count}} new messages": "{{count}} nuevos mensajes", - "Unsupported Attachment": "Adjunto no admitido", - "+{{count}} More Options_one": "+{{count}} opción más", - "+{{count}} More Options_other": "+{{count}} opciones más", - "+{{count}} More Options_many": "+{{count}} opciones más", - "a11y/AI is generating": "La IA está generando", - "a11y/AI is thinking": "La IA está pensando", - "a11y/Avatar of {{name}}": "Avatar de {{name}}", - "a11y/Connected": "Conectado", - "a11y/Delivered": "Entregado", - "a11y/Loading": "Cargando", - "a11y/Loading failed": "Error al cargar", - "a11y/Message actions": "Acciones del mensaje", - "a11y/New message from {{user}}": "Nuevo mensaje de {{user}}", - "a11y/Offline": "Sin conexión", - "a11y/Open message actions": "Abrir acciones del mensaje", - "a11y/Reaction {{emoji}} by {{count}} users": "Reacción {{emoji}} de {{count}} usuarios", - "a11y/Read": "Leído", - "a11y/Reconnecting": "Reconectando", - "a11y/Reply to {{user}}": "Responder a {{user}}", - "a11y/Remove edit": "Eliminar edición", - "a11y/Remove reply": "Eliminar respuesta", - "a11y/Scroll to bottom": "Ir al final", - "a11y/Scroll to bottom, {{count}} new messages": "Ir al final, {{count}} mensajes nuevos", - "a11y/Scroll to latest": "Ir al último mensaje", - "a11y/Scroll to latest, {{count}} unread": "Ir al último mensaje, {{count}} sin leer", - "a11y/Send message": "Enviar mensaje", - "a11y/Sending": "Enviando", - "a11y/Sent": "Enviado", - "a11y/Voice message recording. Hold to record.": "Grabación de mensaje de voz. Mantén pulsado para grabar.", - "a11y/{{count}} new messages": "{{count}} mensajes nuevos", - "a11y/Add attachment": "Add attachment", - "a11y/Close attachments": "Close attachments", - "a11y/Remove attachment": "Remove Attachment", - "a11y/Close poll": "Close poll", - "a11y/Close poll creation": "Close poll creation", - "a11y/Create poll": "Create poll", - "a11y/Decrease maximum votes": "Decrease maximum votes", - "a11y/Delete voice recording": "Delete voice recording", - "a11y/Deselect image": "Deselect image", - "a11y/Deselect video": "Deselect video", - "a11y/Dismiss unread messages": "Dismiss unread messages", - "a11y/Grid Icon": "Grid Icon", - "a11y/Hide Overlay": "Hide Overlay", - "a11y/Increase maximum votes": "Increase maximum votes", - "a11y/Open camera": "Open camera", - "a11y/Open commands": "Open commands", - "a11y/Open file picker": "Open file picker", - "a11y/Open more reactions": "Open more reactions", - "a11y/Open photo picker": "Open photo picker", - "a11y/Open poll creation": "Open poll creation", - "a11y/Open video recorder": "Open video recorder", - "a11y/Play Pause Button": "Play Pause Button", - "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", - "a11y/Save edited message": "Save edited message", - "a11y/Select image": "Select image", - "a11y/Select video": "Select video", - "a11y/Send voice recording": "Send voice recording", - "a11y/Share Button": "Share Button", - "a11y/Start voice recording": "Start voice recording", - "a11y/Stop voice recording": "Stop voice recording", - "a11y/Notifications": "Notificaciones", - "a11y/Dismiss notification": "Descartar notificación", - "Attachment upload blocked due to {{reason}}": "Carga de adjunto bloqueada por {{reason}}", - "Attachment upload failed due to {{reason}}": "Error al cargar el adjunto debido a {{reason}}", - "Command not available": "Comando no disponible", - "Command not available while editing": "Comando no disponible mientras editas", - "Command not available while replying": "Comando no disponible mientras respondes", - "Error reproducing the recording": "Error al reproducir la grabación", - "Error uploading attachment": "Error al cargar el adjunto", - "Failed to create the poll": "No se pudo crear la encuesta", - "Failed to create the poll due to {{reason}}": "No se pudo crear la encuesta debido a {{reason}}", - "Failed to end the poll": "No se pudo finalizar la encuesta", - "Failed to end the poll due to {{reason}}": "No se pudo finalizar la encuesta debido a {{reason}}", - "Failed to jump to the first unread message": "No se pudo ir al primer mensaje no leído", - "Failed to retrieve location": "No se pudo obtener la ubicación", - "Failed to share location": "No se pudo compartir la ubicación", - "File is required for upload attachment": "Se requiere un archivo para cargar un adjunto", - "Local upload attachment missing local id": "Falta el ID local del adjunto local de carga", - "Poll ended": "Encuesta finalizada", - "Reached the vote limit. Remove an existing vote first.": "Se alcanzó el límite de votos. Elimina un voto existente primero.", - "Thread has not been found": "No se encontró el hilo", - "Wait until all attachments have uploaded": "Espera hasta que se hayan cargado todos los adjuntos", - "Cannot seek in the recording": "No se puede cambiar la posición de la grabación", - "Channel archived": "Canal archivado", - "Channel muted": "Canal silenciado", - "Channel pinned": "Canal fijado", - "Channel unarchived": "Canal desarchivado", - "Channel unmuted": "Canal no silenciado", - "Channel unpinned": "Canal desfijado", - "Edit message request failed": "No se pudo editar el mensaje", - "Failed to block user": "No se pudo bloquear al usuario", - "Failed to leave channel": "No se pudo salir del canal", - "Failed to play the recording": "No se pudo reproducir la grabación", - "Failed to update channel archive status": "No se pudo actualizar el estado de archivo del canal", - "Failed to update channel mute status": "No se pudo actualizar el estado de silencio del canal", - "Failed to update channel pinned status": "No se pudo actualizar el estado de fijación del canal", - "Left channel": "Saliste del canal", - "Recording format is not supported and cannot be reproduced": "El formato de la grabación no es compatible y no se puede reproducir", - "Send message request failed": "No se pudo enviar el mensaje", - "User blocked": "Usuario bloqueado", - "User unblocked": "Usuario desbloqueado", - "{{ user }} has been muted": "{{ user }} ha sido silenciado", - "{{ user }} has been unmuted": "{{ user }} ya no está silenciado", - "size limit": "límite de tamaño", - "unknown error": "error desconocido", - "unsupported file type": "tipo de archivo no compatible", - "a11y/Activate to view results": "Activa para ver los resultados", - "a11y/End vote": "Finalizar votación", - "a11y/Show all options": "Mostrar todas las opciones", - "a11y/Vote on {{option}}": "Votar por {{option}}", - "a11y/Double tap and hold to activate contextual menu": "Toca dos veces y mantén pulsado para activar el menú contextual", - "a11y/Swipe right to go through different actions": "Desliza a la derecha para recorrer las diferentes acciones", - "a11y/Close": "Close", - "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss." + "🏙 Attachment...": "🏙 Adjunto..." } diff --git a/package/src/i18n/fr.json b/package/src/i18n/fr.json index bc498a9f71..094baa382d 100644 --- a/package/src/i18n/fr.json +++ b/package/src/i18n/fr.json @@ -1,4 +1,7 @@ { + "+{{count}} More Options_many": "+{{count}} options supplémentaires", + "+{{count}} More Options_one": "+{{count}} option supplémentaire", + "+{{count}} More Options_other": "+{{count}} options supplémentaires", "+{{count}}_many": "+{{count}}", "+{{count}}_one": "+{{count}}", "+{{count}}_other": "+{{count}}", @@ -11,33 +14,60 @@ "Allow access to your Gallery": "Autoriser l'accès à votre galerie", "Allow camera access in device settings": "Autoriser l'accès à la caméra dans les paramètres de l'appareil", "Also send to channel": "Envoyer également à la chaîne", + "Also sent in channel": "También enviado en el canal", "Anonymous": "Anonyme", "Anonymous voting": "Sondage anonyme", + "Archive Chat": "Archiver la discussion", + "Archive Group": "Archiver le groupe", + "Are you sure you want to delete this chat? This can't be undone.": "Êtes-vous sûr de vouloir supprimer cette discussion ? Cette action est irréversible.", + "Are you sure you want to delete this group? This can't be undone.": "Êtes-vous sûr de vouloir supprimer ce groupe ? Cette action est irréversible.", "Are you sure you want to permanently delete this message?": "Êtes-vous sûr de vouloir supprimer définitivement ce message?", "Are you sure?": "Es-tu sûr ?", "Ask a question": "Poser une question", + "Attachment upload blocked due to {{reason}}": "Envoi de la pièce jointe bloqué en raison de {{reason}}", + "Attachment upload failed due to {{reason}}": "Échec de l'envoi de la pièce jointe en raison de {{reason}}", "Audio": "Audio", "Ban User": "Bannir Utilisateur", "Block User": "Bloquer un utilisateur", "Cancel": "Annuler", "Cannot Flag Message": "Impossible de signaler le message", + "Cannot seek in the recording": "Impossible de se déplacer dans l’enregistrement", + "Change in Settings": "Changer dans Réglages", + "Channel archived": "Canal archivé", + "Channel muted": "Canal mis en sourdine", + "Channel pinned": "Canal épinglé", + "Channel unarchived": "Canal désarchivé", + "Channel unmuted": "Canal retiré de la sourdine", + "Channel unpinned": "Canal désépinglé", + "Choose between 2–10 options": "Choisissez entre 2 et 10 options", + "Command not available": "Commande non disponible", + "Command not available while editing": "Commande non disponible pendant la modification", + "Command not available while replying": "Commande non disponible pendant la réponse", "Consider how your comment might make others feel and be sure to follow our Community Guidelines": "Considérez comment votre commentaire pourrait faire sentir les autres et assurez-vous de suivre nos directives communautaires", "Copy Message": "Copier le message", + "Couldn't load new threads. Tap to retry": "Impossible de charger les nouveaux fils. Appuyez pour réessayer", "Create Poll": "Créer un sondage", + "Create a poll and let everyone vote": "Créez un sondage et laissez tout le monde voter", "Delete": "Supprimer", + "Delete Chat": "Supprimer la discussion", + "Delete Group": "Supprimer le groupe", "Delete Message": "Supprimer un message", + "Delete chat": "Supprimer la discussion", "Delete for me": "Supprimer pour moi", + "Delete group": "Supprimer le groupe", "Device camera is used to take photos or videos.": "L'appareil photo de l'appareil est utilisé pour prendre des photos ou des vidéos.", "Device gallery permissions is used to take photos or videos.": "Les autorisations de la galerie de l'appareil sont utilisées pour prendre des photos ou des vidéos.", "Do you want to send a copy of this message to a moderator for further investigation?": "Voulez-vous envoyer une copie de ce message à un modérateur pour une enquête plus approfondie?", + "Draft": "Brouillon", "Due since {{ dueSince }}": "Échéance depuis {{ dueSince }}", "Edit Message": "Éditer un message", + "Edit message request failed": "Échec de la modification du message", "Edited": "Édité", "Editing Message": "Édite un message", "Emoji matching": "Correspondance Emoji", "Empty message...": "Message vide...", - "Enter a new option": "Saisissez une nouvelle option", "End Vote": "Fin du vote", + "Enter a new option": "Saisissez une nouvelle option", "Error adding flag": "Erreur lors du signalement du message", "Error deleting message": "Erreur lors de la suppression du message", "Error fetching reactions": "Erreur lors du chargement des réactions", @@ -48,8 +78,24 @@ "Error muting a user ...": "Erreur lors de la mise en sourdine d’un utilisateur ...", "Error pinning message": "Erreur lors de l’épinglage du message", "Error removing message pin": "Erreur lors du désépinglage du message", + "Error reproducing the recording": "Erreur lors de la lecture de l'enregistrement", "Error unmuting a user ...": "Erreur lors du retrait de la sourdine d’un utilisateur ...", + "Error uploading attachment": "Erreur lors de l'envoi de la pièce jointe", "Error while loading, please reload/refresh": "Erreur lors du chargement, veuillez recharger/rafraîchir", + "Failed to block user": "Échec du blocage de l’utilisateur", + "Failed to create the poll": "Échec de la création du sondage", + "Failed to create the poll due to {{reason}}": "Échec de la création du sondage en raison de {{reason}}", + "Failed to end the poll": "Échec de la clôture du sondage", + "Failed to end the poll due to {{reason}}": "Échec de la clôture du sondage en raison de {{reason}}", + "Failed to jump to the first unread message": "Impossible d'accéder au premier message non lu", + "Failed to leave channel": "Échec de la sortie du canal", + "Failed to play the recording": "Échec de la lecture de l’enregistrement", + "Failed to retrieve location": "Impossible de récupérer la position", + "Failed to share location": "Impossible de partager la position", + "Failed to update channel archive status": "Échec de la mise à jour du statut d’archivage du canal", + "Failed to update channel mute status": "Échec de la mise à jour du statut de mise en sourdine du canal", + "Failed to update channel pinned status": "Échec de la mise à jour du statut d’épinglage du canal", + "File is required for upload attachment": "Un fichier est requis pour envoyer une pièce jointe", "File is too large: {{ size }}, maximum upload size is {{ limit }}": "Le fichier est trop volumineux : {{ size }}, la taille de téléchargement maximale est de {{ limit }}", "File too large": "Fichier trop volumineux", "File type not supported": "Le type de fichier n'est pas pris en charge", @@ -63,41 +109,52 @@ "Hold to start recording.": "Hold to start recording.", "How about sending your first message to a friend?": "Et si vous envoyiez votre premier message à un ami ?", "Instant Commands": "Commandes Instantanées", + "Leave Chat": "Quitter la discussion", + "Leave Group": "Quitter le groupe", + "Left channel": "Canal quitté", "Let others add options": "Autoriser d'autres à ajouter des options", "Let's start chatting!": "Commençons à discuter !", + "Limit votes per person": "Limiter les votes par personne", "Links are disabled": "Links are disabled", "Live Location": "Position en direct", "Loading channels...": "Chargement des canaux...", "Loading messages...": "Chargement des messages...", "Loading threads...": "Chargement des fils...", "Loading...": "Chargement...", + "Local upload attachment missing local id": "L'identifiant local de la pièce jointe à envoyer est manquant", "Location": "Emplacement", "Mark as Unread": "Marquer comme non lu", "Maximum number of files reached": "Nombre maximal de fichiers atteint", "Message Reactions": "Réactions aux messages", "Message deleted": "Message supprimé", - "Message has been successfully flagged": "Le message a été signalé avec succès", + "Message failed to send": "Le message n'a pas pu être envoyé", "Message flagged": "Message signalé", + "Message has been successfully flagged": "Le message a été signalé avec succès", "Message marked as unread": "Message marqué comme non lu", "Message pinned": "Message épinglé", "Message unpinned": "Message désépinglé", "Multiple votes": "Votes multiples", - "Network error": "Erreur réseau", - "Select more than one option": "Sélectionnez plus d’une option", - "Limit votes per person": "Limiter les votes par personne", - "Choose between 2–10 options": "Choisissez entre 2 et 10 options", + "Mute Group": "Mettre le groupe en sourdine", "Mute User": "Utilisateur muet", + "Network error": "Erreur réseau", "No chats here yet…": "Pas de discussions ici pour le moment…", + "No conversations yet": "Aucune conversation pour le moment", "No items exist": "Aucun élément", + "No messages yet": "Aucun message pour le moment", "No threads here yet": "Aucun fil ici pour le moment", "Not supported": "Non pris en charge", "Nothing yet...": "Aucun message...", + "Notify all {{ role }} members": "Notify all {{ role }} members", + "Offline": "Hors ligne", "Ok": "Ok", + "Online": "En ligne", "Only visible to you": "Seulement visible par vous", + "Open Camera": "Ouvrir la caméra", + "Open Files": "Ouvrir les fichiers", "Open Settings": "Ouvrir les paramètres", "Option": "Option", - "Option {{count}}": "Option {{count}}", "Option already exists": "L'option existe déjà", + "Option {{count}}": "Option {{count}}", "Options": "Options", "Photo": "Photo", "Photos and Videos": "Photos et vidéos", @@ -109,16 +166,26 @@ "Poll Comments": "Commentaires du sondage", "Poll Options": "Options du sondage", "Poll Results": "Résultats du sondage", + "Poll ended": "Sondage terminé", + "Poll has ended": "Vote terminé", "Questions": "Questions", + "Reached the vote limit. Remove an existing vote first.": "Limite de votes atteinte. Supprimez d'abord un vote existant.", "Reconnecting...": "Se Reconnecter...", + "Recording format is not supported and cannot be reproduced": "Le format de l’enregistrement n’est pas pris en charge et ne peut pas être lu", + "Reminder overdue": "Recordatorio vencido", + "Reminder set": "Recordatorio establecido", + "Replied to a thread": "Respondido a un hilo", "Reply": "Répondre", - "Reply to {{name}}": "Répondre à {{name}}", "Reply to Message": "Répondre au message", + "Reply to a message to start a thread": "Répondre à un message pour commencer un fil", + "Reply to {{name}}": "Répondre à {{name}}", "Resend": "Renvoyer", "Retry Upload": "Réessayer l'envoi", "SEND": "ENVOYER", "Search": "Rechercher", "Select More Photos": "Sélectionner plus de photos", + "Select files to share": "Sélectionnez des fichiers à partager", + "Select more than one option": "Sélectionnez plus d’une option", "Select one": "Sélectionner une", "Select one or more": "Sélectionner une ou plusieurs", "Select up to {{count}}_many": "Sélectionnez jusqu'à {{count}}", @@ -126,26 +193,39 @@ "Select up to {{count}}_other": "Sélectionnez jusqu'à {{count}}", "Send Anyway": "Envoyer quand même", "Send a message": "Envoyer un message", + "Send message request failed": "Échec de l’envoi du message", "Sending links is not allowed in this conversation": "Sending links is not allowed in this conversation", "Show All": "Afficher tout", "Slide to Cancel": "Glisser pour annuler", "Slow mode ON": "Mode lent activé", "Slow mode, wait {{seconds}}s...": "Mode lent, attendez {{seconds}}s...", "Suggest an option": "Suggérer une option", + "Take a photo and share": "Prenez une photo et partagez-la", + "Take a video and share": "Prenez une vidéo et partagez-la", + "Tap to remove": "Appuyez pour retirer", "The message has been reported to a moderator.": "Le message a été signalé à un modérateur.", "The source message was deleted": "Le message source a été supprimé", "Thinking...": "Réflexion...", "This reply was deleted": "Cette réponse a été supprimée", "Thread Reply": "Réponse à la discussion", + "Thread has not been found": "Le fil de discussion est introuvable", "Type a number from 2 to 10": "Entrez un nombre de 2 à 10", + "Typing": "Écrivant", + "Unarchive Chat": "Désarchiver la discussion", + "Unarchive Group": "Désarchiver le groupe", "Unban User": "Débannir Utilisateur", "Unblock User": "Débloquer Utilisateur", "Unknown User": "Utilisateur inconnu", + "Unmute Group": "Rétablir le son du groupe", "Unmute User": "Activer le son de Utilisateur", "Unpin from Conversation": "Décrocher de la conversation", "Unread Messages": "Messages non lus", + "Unsupported Attachment": "Pièce jointe non prise en charge", "Update your comment": "Mettre à jour votre commentaire", + "User blocked": "Utilisateur bloqué", + "User unblocked": "Utilisateur débloqué", "Video": "Vidéo", + "View": "Ver", "View Results": "Voir les résultats", "View {{count}} comments_many": "Voir {{count}} commentaires", "View {{count}} comments_one": "Voir {{count}} commentaire", @@ -153,13 +233,90 @@ "Voice message": "Message vocal", "Voice message ({{duration}})": "Message vocal ({{duration}})", "Voice message deleted": "Message vocal supprimé", - "Your comment": "Votre commentaire", + "Wait until all attachments have uploaded": "Attendez que toutes les pièces jointes soient envoyées", "You": "Toi", "You can't send messages in this channel": "You can't send messages in this channel", + "You have not granted access to the photo library.": "Vous n'avez pas accordé l'accès à la photothèque.", + "You have not granted access to your camera": "Vous n'avez pas accordé l'accès à votre caméra", + "You voted: {{ option }}": "Vous avez voté: {{ option }}", + "Your comment": "Votre commentaire", + "a11y/AI is generating": "L'IA génère une réponse", + "a11y/AI is thinking": "L'IA réfléchit", + "a11y/Activate to view results": "Activer pour voir les résultats", + "a11y/Add attachment": "Add attachment", + "a11y/Avatar of {{name}}": "Avatar de {{name}}", + "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.", + "a11y/Close": "Close", + "a11y/Close attachments": "Close attachments", + "a11y/Close poll": "Close poll", + "a11y/Close poll creation": "Close poll creation", + "a11y/Command suggestions available": "Command suggestions available", + "a11y/Connected": "Connecté", + "a11y/Create poll": "Create poll", + "a11y/Decrease maximum votes": "Decrease maximum votes", + "a11y/Delete voice recording": "Delete voice recording", + "a11y/Delivered": "Distribué", + "a11y/Deselect image": "Deselect image", + "a11y/Deselect video": "Deselect video", + "a11y/Dismiss notification": "Fermer la notification", + "a11y/Dismiss unread messages": "Dismiss unread messages", + "a11y/Double tap and hold to activate contextual menu": "Appuyez deux fois et maintenez pour activer le menu contextuel", + "a11y/Emoji suggestions available": "Emoji suggestions available", + "a11y/End vote": "Terminer le vote", + "a11y/Grid Icon": "Grid Icon", + "a11y/Hide Overlay": "Hide Overlay", + "a11y/Increase maximum votes": "Increase maximum votes", + "a11y/Loading": "Chargement", + "a11y/Loading failed": "Échec du chargement", + "a11y/Mention suggestions available": "Mention suggestions available", + "a11y/Message actions": "Actions du message", + "a11y/New message from {{user}}": "Nouveau message de {{user}}", + "a11y/Notifications": "Notifications", + "a11y/Offline": "Hors ligne", + "a11y/Open camera": "Open camera", + "a11y/Open commands": "Open commands", + "a11y/Open file picker": "Open file picker", + "a11y/Open message actions": "Ouvrir les actions du message", + "a11y/Open more reactions": "Open more reactions", + "a11y/Open photo picker": "Open photo picker", + "a11y/Open poll creation": "Open poll creation", + "a11y/Open video recorder": "Open video recorder", + "a11y/Play Pause Button": "Play Pause Button", + "a11y/Reaction {{emoji}} by {{count}} users": "Réaction {{emoji}} par {{count}} utilisateurs", + "a11y/Read": "Lu", + "a11y/Reconnecting": "Reconnexion", + "a11y/Remove attachment": "Remove Attachment", + "a11y/Remove edit": "Supprimer la modification", + "a11y/Remove reply": "Supprimer la réponse", + "a11y/Reply to {{user}}": "Répondre à {{user}}", + "a11y/Save edited message": "Save edited message", + "a11y/Scroll to bottom": "Aller en bas", + "a11y/Scroll to bottom, {{count}} new messages": "Aller en bas, {{count}} nouveaux messages", + "a11y/Scroll to latest": "Aller au dernier message", + "a11y/Scroll to latest, {{count}} unread": "Aller au dernier message, {{count}} non lus", + "a11y/Select image": "Select image", + "a11y/Select video": "Select video", + "a11y/Send message": "Envoyer le message", + "a11y/Send voice recording": "Send voice recording", + "a11y/Sending": "Envoi", + "a11y/Sent": "Envoyé", + "a11y/Share Button": "Share Button", + "a11y/Show all options": "Afficher toutes les options", + "a11y/Start voice recording": "Start voice recording", + "a11y/Stop voice recording": "Stop voice recording", + "a11y/Swipe right to go through different actions": "Glissez vers la droite pour parcourir les différentes actions", + "a11y/Voice message recording. Hold to record.": "Enregistrement d'un message vocal. Maintenez appuyé pour enregistrer.", + "a11y/Vote on {{option}}": "Voter pour {{option}}", + "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", + "a11y/{{count}} new messages": "{{count}} nouveaux messages", + "and {{ count }} others": "et {{ count }} autres", "duration/Location end at": "{{ milliseconds | durationFormatter(withSuffix: false) }}", "duration/Message reminder": "{{ milliseconds | durationFormatter(withSuffix: true) }}", "duration/Remind Me": "{{ milliseconds | durationFormatter(withSuffix: true) }}", + "mention/Channel Description": "Notify everyone in this channel", + "mention/Here Description": "Notify every online member in this channel", "replied to": "a répondu à", + "size limit": "limite de taille", "timestamp/ChannelPreviewStatus": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[Hier]\", \"lastWeek\":\"dddd\", \"nextDay\":\"[Demain]\", \"nextWeek\":\"dddd [à] LT\", \"sameDay\":\"LT\", \"sameElse\":\"L\"}) }}", "timestamp/ImageGalleryHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/InlineDateSeparator": "{{ timestamp | timestampFormatter(calendar: true) }}", @@ -170,17 +327,16 @@ "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/StickyHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/ThreadListItem": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[Hier]\", \"lastWeek\":\"dddd\", \"nextDay\":\"[Demain]\", \"nextWeek\":\"dddd [à] LT\", \"sameDay\":\"LT\", \"sameElse\":\"L\"}) }}", + "unknown error": "erreur inconnue", + "unsupported file type": "type de fichier non pris en charge", "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} et {{ nonSelfUserLength }} autres sont en train d'écrire", + "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }} et {{ secondUser }} sont en train d'écrire", "{{ index }} of {{ photoLength }}": "{{ index }} sur {{ photoLength }}", + "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }} personnes sont en train d'écrire", "{{ replyCount }} Replies": "{{ replyCount }} Réponses", + "{{ user }} has been muted": "{{ user }} a été mis en sourdine", + "{{ user }} has been unmuted": "{{ user }} n’est plus en sourdine", "{{ user }} is typing": "{{ user }} est en train d'écrire", - "You voted: {{ option }}": "Vous avez voté: {{ option }}", - "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }} et {{ secondUser }} sont en train d'écrire", - "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }} personnes sont en train d'écrire", - "Typing": "Écrivant", - "No messages yet": "Aucun message pour le moment", - "Message failed to send": "Le message n'a pas pu être envoyé", - "and {{ count }} others": "et {{ count }} autres", "{{ user }} voted: {{ option }}": "{{ user }} a voté: {{ option }}", "{{count}} Audios_many": "{{count}} audios", "{{count}} Audios_one": "{{count}} audio", @@ -191,173 +347,23 @@ "{{count}} Photos_many": "{{count}} photos", "{{count}} Photos_one": "{{count}} photo", "{{count}} Photos_other": "{{count}} photos", - "{{count}} Voice messages_many": "{{count}} messages vocaux", - "{{count}} Voice messages_one": "{{count}} message vocal", - "{{count}} Voice messages_other": "{{count}} messages vocaux", + "{{count}} Reactions_many": "{{count}} réactions", + "{{count}} Reactions_one": "{{count}} réaction", + "{{count}} Reactions_other": "{{count}} réactions", "{{count}} Videos_many": "{{count}} vidéos", "{{count}} Videos_one": "{{count}} vidéo", "{{count}} Videos_other": "{{count}} vidéos", + "{{count}} Voice messages_many": "{{count}} messages vocaux", + "{{count}} Voice messages_one": "{{count}} message vocal", + "{{count}} Voice messages_other": "{{count}} messages vocaux", + "{{count}} new messages": "{{count}} nouveaux messages", + "{{count}} new threads": "{{count}} nouveaux fils", + "{{count}} unread": "{{count}} non lus", "{{count}} votes_many": "{{count}} votes", "{{count}} votes_one": "{{count}} vote", "{{count}} votes_other": "{{count}} votes", - "🏙 Attachment...": "🏙 Pièce jointe...", - "You have not granted access to the photo library.": "Vous n'avez pas accordé l'accès à la photothèque.", - "Change in Settings": "Changer dans Réglages", - "Create a poll and let everyone vote": "Créez un sondage et laissez tout le monde voter", - "Open Camera": "Ouvrir la caméra", - "Open Files": "Ouvrir les fichiers", - "Select files to share": "Sélectionnez des fichiers à partager", - "Take a photo and share": "Prenez une photo et partagez-la", - "Take a video and share": "Prenez une vidéo et partagez-la", - "You have not granted access to your camera": "Vous n'avez pas accordé l'accès à votre caméra", - "{{count}} Reactions_many": "{{count}} réactions", - "{{count}} Reactions_one": "{{count}} réaction", - "{{count}} Reactions_other": "{{count}} réactions", - "Tap to remove": "Appuyez pour retirer", - "Draft": "Brouillon", - "Reminder set": "Recordatorio establecido", - "Also sent in channel": "También enviado en el canal", - "Replied to a thread": "Respondido a un hilo", - "View": "Ver", - "Reminder overdue": "Recordatorio vencido", - "Poll has ended": "Vote terminé", - "Reply to a message to start a thread": "Répondre à un message pour commencer un fil", - "Couldn't load new threads. Tap to retry": "Impossible de charger les nouveaux fils. Appuyez pour réessayer", - "{{count}} new threads": "{{count}} nouveaux fils", - "No conversations yet": "Aucune conversation pour le moment", - "Are you sure you want to delete this group? This can't be undone.": "Êtes-vous sûr de vouloir supprimer ce groupe ? Cette action est irréversible.", - "Are you sure you want to delete this chat? This can't be undone.": "Êtes-vous sûr de vouloir supprimer cette discussion ? Cette action est irréversible.", - "Delete chat": "Supprimer la discussion", - "Delete group": "Supprimer le groupe", - "Archive Chat": "Archiver la discussion", - "Archive Group": "Archiver le groupe", - "Delete Chat": "Supprimer la discussion", - "Delete Group": "Supprimer le groupe", - "Leave Chat": "Quitter la discussion", - "Leave Group": "Quitter le groupe", - "Mute Group": "Mettre le groupe en sourdine", - "Offline": "Hors ligne", - "Online": "En ligne", - "Unarchive Chat": "Désarchiver la discussion", - "Unarchive Group": "Désarchiver le groupe", - "Unmute Group": "Rétablir le son du groupe", + "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}} membres, {{onlineCount}} en ligne", "{{memberCount}} members, {{onlineCount}} online_one": "{{memberCount}} membre, {{onlineCount}} en ligne", "{{memberCount}} members, {{onlineCount}} online_other": "{{memberCount}} membres, {{onlineCount}} en ligne", - "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}} membres, {{onlineCount}} en ligne", - "{{count}} unread": "{{count}} non lus", - "{{count}} new messages": "{{count}} nouveaux messages", - "Unsupported Attachment": "Pièce jointe non prise en charge", - "+{{count}} More Options_one": "+{{count}} option supplémentaire", - "+{{count}} More Options_other": "+{{count}} options supplémentaires", - "+{{count}} More Options_many": "+{{count}} options supplémentaires", - "a11y/AI is generating": "L'IA génère une réponse", - "a11y/AI is thinking": "L'IA réfléchit", - "a11y/Avatar of {{name}}": "Avatar de {{name}}", - "a11y/Connected": "Connecté", - "a11y/Delivered": "Distribué", - "a11y/Loading": "Chargement", - "a11y/Loading failed": "Échec du chargement", - "a11y/Message actions": "Actions du message", - "a11y/New message from {{user}}": "Nouveau message de {{user}}", - "a11y/Offline": "Hors ligne", - "a11y/Open message actions": "Ouvrir les actions du message", - "a11y/Reaction {{emoji}} by {{count}} users": "Réaction {{emoji}} par {{count}} utilisateurs", - "a11y/Read": "Lu", - "a11y/Reconnecting": "Reconnexion", - "a11y/Reply to {{user}}": "Répondre à {{user}}", - "a11y/Remove edit": "Supprimer la modification", - "a11y/Remove reply": "Supprimer la réponse", - "a11y/Scroll to bottom": "Aller en bas", - "a11y/Scroll to bottom, {{count}} new messages": "Aller en bas, {{count}} nouveaux messages", - "a11y/Scroll to latest": "Aller au dernier message", - "a11y/Scroll to latest, {{count}} unread": "Aller au dernier message, {{count}} non lus", - "a11y/Send message": "Envoyer le message", - "a11y/Sending": "Envoi", - "a11y/Sent": "Envoyé", - "a11y/Voice message recording. Hold to record.": "Enregistrement d'un message vocal. Maintenez appuyé pour enregistrer.", - "a11y/{{count}} new messages": "{{count}} nouveaux messages", - "a11y/Add attachment": "Add attachment", - "a11y/Close attachments": "Close attachments", - "a11y/Remove attachment": "Remove Attachment", - "a11y/Close poll": "Close poll", - "a11y/Close poll creation": "Close poll creation", - "a11y/Create poll": "Create poll", - "a11y/Decrease maximum votes": "Decrease maximum votes", - "a11y/Delete voice recording": "Delete voice recording", - "a11y/Deselect image": "Deselect image", - "a11y/Deselect video": "Deselect video", - "a11y/Dismiss unread messages": "Dismiss unread messages", - "a11y/Grid Icon": "Grid Icon", - "a11y/Hide Overlay": "Hide Overlay", - "a11y/Increase maximum votes": "Increase maximum votes", - "a11y/Open camera": "Open camera", - "a11y/Open commands": "Open commands", - "a11y/Open file picker": "Open file picker", - "a11y/Open more reactions": "Open more reactions", - "a11y/Open photo picker": "Open photo picker", - "a11y/Open poll creation": "Open poll creation", - "a11y/Open video recorder": "Open video recorder", - "a11y/Play Pause Button": "Play Pause Button", - "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", - "a11y/Save edited message": "Save edited message", - "a11y/Select image": "Select image", - "a11y/Select video": "Select video", - "a11y/Send voice recording": "Send voice recording", - "a11y/Share Button": "Share Button", - "a11y/Start voice recording": "Start voice recording", - "a11y/Stop voice recording": "Stop voice recording", - "a11y/Notifications": "Notifications", - "a11y/Dismiss notification": "Fermer la notification", - "Attachment upload blocked due to {{reason}}": "Envoi de la pièce jointe bloqué en raison de {{reason}}", - "Attachment upload failed due to {{reason}}": "Échec de l'envoi de la pièce jointe en raison de {{reason}}", - "Command not available": "Commande non disponible", - "Command not available while editing": "Commande non disponible pendant la modification", - "Command not available while replying": "Commande non disponible pendant la réponse", - "Error reproducing the recording": "Erreur lors de la lecture de l'enregistrement", - "Error uploading attachment": "Erreur lors de l'envoi de la pièce jointe", - "Failed to create the poll": "Échec de la création du sondage", - "Failed to create the poll due to {{reason}}": "Échec de la création du sondage en raison de {{reason}}", - "Failed to end the poll": "Échec de la clôture du sondage", - "Failed to end the poll due to {{reason}}": "Échec de la clôture du sondage en raison de {{reason}}", - "Failed to jump to the first unread message": "Impossible d'accéder au premier message non lu", - "Failed to retrieve location": "Impossible de récupérer la position", - "Failed to share location": "Impossible de partager la position", - "File is required for upload attachment": "Un fichier est requis pour envoyer une pièce jointe", - "Local upload attachment missing local id": "L'identifiant local de la pièce jointe à envoyer est manquant", - "Poll ended": "Sondage terminé", - "Reached the vote limit. Remove an existing vote first.": "Limite de votes atteinte. Supprimez d'abord un vote existant.", - "Thread has not been found": "Le fil de discussion est introuvable", - "Wait until all attachments have uploaded": "Attendez que toutes les pièces jointes soient envoyées", - "Cannot seek in the recording": "Impossible de se déplacer dans l’enregistrement", - "Channel archived": "Canal archivé", - "Channel muted": "Canal mis en sourdine", - "Channel pinned": "Canal épinglé", - "Channel unarchived": "Canal désarchivé", - "Channel unmuted": "Canal retiré de la sourdine", - "Channel unpinned": "Canal désépinglé", - "Edit message request failed": "Échec de la modification du message", - "Failed to block user": "Échec du blocage de l’utilisateur", - "Failed to leave channel": "Échec de la sortie du canal", - "Failed to play the recording": "Échec de la lecture de l’enregistrement", - "Failed to update channel archive status": "Échec de la mise à jour du statut d’archivage du canal", - "Failed to update channel mute status": "Échec de la mise à jour du statut de mise en sourdine du canal", - "Failed to update channel pinned status": "Échec de la mise à jour du statut d’épinglage du canal", - "Left channel": "Canal quitté", - "Recording format is not supported and cannot be reproduced": "Le format de l’enregistrement n’est pas pris en charge et ne peut pas être lu", - "Send message request failed": "Échec de l’envoi du message", - "User blocked": "Utilisateur bloqué", - "User unblocked": "Utilisateur débloqué", - "{{ user }} has been muted": "{{ user }} a été mis en sourdine", - "{{ user }} has been unmuted": "{{ user }} n’est plus en sourdine", - "size limit": "limite de taille", - "unknown error": "erreur inconnue", - "unsupported file type": "type de fichier non pris en charge", - "a11y/Activate to view results": "Activer pour voir les résultats", - "a11y/End vote": "Terminer le vote", - "a11y/Show all options": "Afficher toutes les options", - "a11y/Vote on {{option}}": "Voter pour {{option}}", - "a11y/Double tap and hold to activate contextual menu": "Appuyez deux fois et maintenez pour activer le menu contextuel", - "a11y/Swipe right to go through different actions": "Glissez vers la droite pour parcourir les différentes actions", - "a11y/Close": "Close", - "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss." + "🏙 Attachment...": "🏙 Pièce jointe..." } diff --git a/package/src/i18n/he.json b/package/src/i18n/he.json index 42c9e51ee0..26a24832f4 100644 --- a/package/src/i18n/he.json +++ b/package/src/i18n/he.json @@ -1,4 +1,7 @@ { + "+{{count}} More Options_many": "+עוד {{count}} אפשרויות", + "+{{count}} More Options_one": "+עוד אפשרות {{count}}", + "+{{count}} More Options_other": "+עוד {{count}} אפשרויות", "+{{count}}_many": "+{{count}}", "+{{count}}_one": "+{{count}}", "+{{count}}_other": "+{{count}}", @@ -11,33 +14,60 @@ "Allow access to your Gallery": "אפשר גישה לגלריה שלך", "Allow camera access in device settings": "אפשר גישה למצלמה בהגדרות המכשיר", "Also send to channel": "שלח/י הודעה לשיחה", + "Also sent in channel": "שלח/י גם לשיחה", "Anonymous": "אנונימי", "Anonymous voting": "סקר אנונימי", + "Archive Chat": "העבר/י צ׳אט לארכיון", + "Archive Group": "העבר/י קבוצה לארכיון", + "Are you sure you want to delete this chat? This can't be undone.": "האם למחוק את הצ׳אט הזה? לא ניתן לבטל את הפעולה.", + "Are you sure you want to delete this group? This can't be undone.": "האם למחוק את הקבוצה הזו? לא ניתן לבטל את הפעולה.", "Are you sure you want to permanently delete this message?": "האם את/ה בטוח/ה שאת/ה רוצה למחוק את ההודעה הזו לצמיתות?", "Are you sure?": "האם אתה בטוח?", "Ask a question": "שאל שאלה", + "Attachment upload blocked due to {{reason}}": "העלאת הקובץ המצורף נחסמה עקב {{reason}}", + "Attachment upload failed due to {{reason}}": "העלאת הקובץ המצורף נכשלה עקב {{reason}}", "Audio": "אודיו", "Ban User": "לחסום משתמש", "Block User": "חסום משתמש", "Cancel": "ביטול", "Cannot Flag Message": "סימון הודעה לא אפשרי", + "Cannot seek in the recording": "לא ניתן לעבור למיקום אחר בהקלטה", + "Change in Settings": "שנה בהגדרות", + "Channel archived": "השיחה הועברה לארכיון", + "Channel muted": "השיחה הושתקה", + "Channel pinned": "השיחה ננעצה", + "Channel unarchived": "השיחה הוצאה מהארכיון", + "Channel unmuted": "השתקת השיחה בוטלה", + "Channel unpinned": "נעיצת השיחה בוטלה", + "Choose between 2–10 options": "בחר/י בין 2 ל-10 אפשרויות", + "Command not available": "הפקודה אינה זמינה", + "Command not available while editing": "הפקודה אינה זמינה בזמן עריכה", + "Command not available while replying": "הפקודה אינה זמינה בזמן תגובה", "Consider how your comment might make others feel and be sure to follow our Community Guidelines": "שקול איך התגובה שלך עשויה להשפיע על אחרים ווודא שאתה עוקב אחר ההנחיות של הקהילה שלנו", "Copy Message": "העתק/י הודעה", + "Couldn't load new threads. Tap to retry": "לא ניתן לטעון שרשורים חדשים. הקש כדי לנסות שוב", "Create Poll": "צור סקר", + "Create a poll and let everyone vote": "צור סקר ותן לכולם להצביע", "Delete": "מחק", + "Delete Chat": "מחק/י צ׳אט", + "Delete Group": "מחק/י קבוצה", "Delete Message": "מחק/י הודעה", + "Delete chat": "מחק/י צ׳אט", "Delete for me": "מחק עבורי", + "Delete group": "מחק/י קבוצה", "Device camera is used to take photos or videos.": "מצלמת המכשיר משמשת לצילום תמונות או סרטונים.", "Device gallery permissions is used to take photos or videos.": "הרשאות גלריית המכשיר משמשות לצילום תמונות או סרטונים.", "Do you want to send a copy of this message to a moderator for further investigation?": "האם את/ה רוצה לשלוח עותק של הודעה זו למנחה להמשך חקירה?", + "Draft": "טיוטה", "Due since {{ dueSince }}": "מועד אחרון מאז {{ dueSince }}", "Edit Message": "ערוך הודעה", + "Edit message request failed": "עריכת ההודעה נכשלה", "Edited": "נערך", "Editing Message": "הודעה בעריכה", "Emoji matching": "התאמת אמוג'י", "Empty message...": "הודעה ריקה...", - "Enter a new option": "הזן אפשרות חדשה", "End Vote": "סיים הצבעה", + "Enter a new option": "הזן אפשרות חדשה", "Error adding flag": "שגיאה בדיווח על ההודעה", "Error deleting message": "שגיאה במחיקת ההודעה", "Error fetching reactions": "שגיאה בטעינת התגובות", @@ -48,8 +78,24 @@ "Error muting a user ...": "שגיאה בהשתקת משתמש ...", "Error pinning message": "שגיאה בנעיצת ההודעה", "Error removing message pin": "שגיאה בביטול נעיצת ההודעה", + "Error reproducing the recording": "שגיאה בהפעלת ההקלטה", "Error unmuting a user ...": "שגיאה בביטול השתקת משתמש ...", + "Error uploading attachment": "שגיאה בהעלאת הקובץ המצורף", "Error while loading, please reload/refresh": "שגיאה ארעה בזמן הטעינה, אנא טען מחדש/רענן", + "Failed to block user": "חסימת המשתמש נכשלה", + "Failed to create the poll": "יצירת הסקר נכשלה", + "Failed to create the poll due to {{reason}}": "יצירת הסקר נכשלה עקב {{reason}}", + "Failed to end the poll": "סיום הסקר נכשל", + "Failed to end the poll due to {{reason}}": "סיום הסקר נכשל עקב {{reason}}", + "Failed to jump to the first unread message": "המעבר להודעה הראשונה שלא נקראה נכשל", + "Failed to leave channel": "עזיבת השיחה נכשלה", + "Failed to play the recording": "הפעלת ההקלטה נכשלה", + "Failed to retrieve location": "אחזור המיקום נכשל", + "Failed to share location": "שיתוף המיקום נכשל", + "Failed to update channel archive status": "עדכון מצב הארכיון של השיחה נכשל", + "Failed to update channel mute status": "עדכון מצב ההשתקה של השיחה נכשל", + "Failed to update channel pinned status": "עדכון מצב הנעיצה של השיחה נכשל", + "File is required for upload attachment": "נדרש קובץ להעלאת קובץ מצורף", "File is too large: {{ size }}, maximum upload size is {{ limit }}": "הקובץ גדול מדי: {{ size }}, גודל העלאה מקסימלי הוא {{ limit }}", "File too large": "הקובץ גדול מדי", "File type not supported": "סוג הקובץ אינו נתמך", @@ -63,41 +109,52 @@ "Hold to start recording.": "לחץ והחזק כדי להתחיל להקליט.", "How about sending your first message to a friend?": "מה דעתך לשלוח את ההודעה הראשונה שלך לחבר?", "Instant Commands": "פעולות מיידיות", + "Leave Chat": "צא/י מהצ׳אט", + "Leave Group": "צא/י מהקבוצה", + "Left channel": "עזבת את השיחה", "Let others add options": "אפשר לאחרים להוסיף אפשרויות", "Let's start chatting!": "בואו נתחיל לשוחח!", + "Limit votes per person": "הגבל/י את מספר ההצבעות לאדם", "Links are disabled": "הקישורים מבוטלים", "Live Location": "מיקום חי", "Loading channels...": "השיחות בטעינה...", "Loading messages...": "ההודעות בטעינה..", "Loading threads...": "טוען שרשורים...", "Loading...": "טוען...", + "Local upload attachment missing local id": "חסר מזהה מקומי לקובץ המצורף המקומי להעלאה", "Location": "מיקום", "Mark as Unread": "סמן כלא נקרא", "Maximum number of files reached": "הגעת למספר המרבי של קבצים", "Message Reactions": "תגובות להודעה", "Message deleted": "ההודעה נמחקה", - "Message has been successfully flagged": "ההודעה דווחה בהצלחה", + "Message failed to send": "ההודעה לא נשלחה", "Message flagged": "ההודעה סומנה", + "Message has been successfully flagged": "ההודעה דווחה בהצלחה", "Message marked as unread": "ההודעה סומנה כלא נקראה", "Message pinned": "ההודעה ננעצה", "Message unpinned": "נעיצת ההודעה בוטלה", "Multiple votes": "הצבעות מרובות", - "Network error": "שגיאת רשת", - "Select more than one option": "בחר/י יותר מאפשרות אחת", - "Limit votes per person": "הגבל/י את מספר ההצבעות לאדם", - "Choose between 2–10 options": "בחר/י בין 2 ל-10 אפשרויות", + "Mute Group": "השתק/י קבוצה", "Mute User": "השתק/י משתמש", + "Network error": "שגיאת רשת", "No chats here yet…": "אין צ'אטים כאן עדיין...", + "No conversations yet": "אין שיחות עדיין", "No items exist": "אין פריטים", + "No messages yet": "אין הודעות עדיין", "No threads here yet": "אין שרשורים כאן עדיין", "Not supported": "לא נתמך", "Nothing yet...": "אינפורמציה תתקבל בהמשך...", + "Notify all {{ role }} members": "Notify all {{ role }} members", + "Offline": "לא מחובר/ת", "Ok": "אוקיי", + "Online": "מחובר/ת", "Only visible to you": "גלוי רק לך", + "Open Camera": "פתח מצלמה", + "Open Files": "פתח קבצים", "Open Settings": "פתח את ההגדרות", "Option": "אפשרות", - "Option {{count}}": "אפשרות {{count}}", "Option already exists": "האפשרות כבר קיימת", + "Option {{count}}": "אפשרות {{count}}", "Options": "אפשרויות", "Photo": "תמונה", "Photos and Videos": "תמונות ווידאו", @@ -109,16 +166,26 @@ "Poll Comments": "תגובות לסקר", "Poll Options": "אפשרויות הסקר", "Poll Results": "תוצאות הסקר", + "Poll ended": "הסקר הסתיים", + "Poll has ended": "ההצבעה הסתיימה", "Questions": "שאלות", + "Reached the vote limit. Remove an existing vote first.": "הגעת למגבלת ההצבעות. הסר קודם הצבעה קיימת.", "Reconnecting...": "מתחבר מחדש...", + "Recording format is not supported and cannot be reproduced": "פורמט ההקלטה אינו נתמך ולא ניתן להשמיע אותו", + "Reminder overdue": "הזמן פג", + "Reminder set": "הזמן הוקם", + "Replied to a thread": "הגב/י בשרשור", "Reply": "השב/י", - "Reply to {{name}}": "השב/י ל-{{name}}", "Reply to Message": "השב/י להודעה", + "Reply to a message to start a thread": "השב/י להודעה כדי להתחיל שרשור", + "Reply to {{name}}": "השב/י ל-{{name}}", "Resend": "שלח/י שוב", "Retry Upload": "נסה להעלות שוב", "SEND": "שלח", "Search": "חפש/י", "Select More Photos": "בחר עוד תמונות", + "Select files to share": "בחר קבצים לשיתוף", + "Select more than one option": "בחר/י יותר מאפשרות אחת", "Select one": "בחר אחת", "Select one or more": "בחר אחת או יותר", "Select up to {{count}}_many": "בחר עד {{count}}", @@ -126,26 +193,39 @@ "Select up to {{count}}_other": "בחר עד {{count}}", "Send Anyway": "שלח בכל זאת", "Send a message": "שלח/י הודעה", + "Send message request failed": "שליחת ההודעה נכשלה", "Sending links is not allowed in this conversation": "שליחת קישורים אינה מותרת בשיחה זו", "Show All": "הצג הכל", "Slide to Cancel": "גלגל/י כדי לבטל", "Slow mode ON": "מצב איטי מופעל", "Slow mode, wait {{seconds}}s...": "מצב איטי, חכה {{seconds}}s...", "Suggest an option": "הצע אפשרות", + "Take a photo and share": "צלם תמונה ושתף", + "Take a video and share": "צלם וידאו ושתף", + "Tap to remove": "הקש כדי להסיר", "The message has been reported to a moderator.": "ההודעה דווחה למנהל", "The source message was deleted": "ההודעה המקורית נמחקה", "Thinking...": "חושב...", "This reply was deleted": "התגובה הזו נמחקה", "Thread Reply": "הגב/י בשרשור", + "Thread has not been found": "השרשור לא נמצא", "Type a number from 2 to 10": "הקלד מספר בין 2 ל-10", + "Typing": "מקליד/ה", + "Unarchive Chat": "הוצא/י צ׳אט מהארכיון", + "Unarchive Group": "הוצא/י קבוצה מהארכיון", "Unban User": "לבטל חסימת משתמש", "Unblock User": "בטל/י חסימת משתמש", "Unknown User": "משתמש לא ידוע", + "Unmute Group": "בטל/י השתקת קבוצה", "Unmute User": "בטל/י השתקת משתמש", "Unpin from Conversation": "בטל/י הצמדה לשיחה", "Unread Messages": "הודעות שטרם נקרו", + "Unsupported Attachment": "קובץ לא נתמך", "Update your comment": "עדכן את התגובה שלך", + "User blocked": "המשתמש נחסם", + "User unblocked": "חסימת המשתמש בוטלה", "Video": "וִידֵאוֹ", + "View": "צפה", "View Results": "הצג תוצאות", "View {{count}} comments_many": "הצג {{count}} תגובות", "View {{count}} comments_one": "הצג {{count}} תגובה", @@ -153,13 +233,90 @@ "Voice message": "הודעת קול", "Voice message ({{duration}})": "הודעת קול ({{duration}})", "Voice message deleted": "הודעת הקול נמחקה", - "Your comment": "התגובה שלך", + "Wait until all attachments have uploaded": "יש להמתין עד שכל הקבצים המצורפים יועלו", "You": "את/ה", "You can't send messages in this channel": "את/ב לא יכול/ה לשלוח הודעות בשיחה זו", + "You have not granted access to the photo library.": "לא הענקת גישה לספריית התמונות.", + "You have not granted access to your camera": "לא הענקת גישה למצלמה שלך", + "You voted: {{ option }}": "הצבעת: {{ option }}", + "Your comment": "התגובה שלך", + "a11y/AI is generating": "הבינה המלאכותית יוצרת תשובה", + "a11y/AI is thinking": "הבינה המלאכותית חושבת", + "a11y/Activate to view results": "הפעל כדי לראות את התוצאות", + "a11y/Add attachment": "Add attachment", + "a11y/Avatar of {{name}}": "תמונת פרופיל של {{name}}", + "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.", + "a11y/Close": "Close", + "a11y/Close attachments": "Close attachments", + "a11y/Close poll": "Close poll", + "a11y/Close poll creation": "Close poll creation", + "a11y/Command suggestions available": "Command suggestions available", + "a11y/Connected": "מחובר", + "a11y/Create poll": "Create poll", + "a11y/Decrease maximum votes": "Decrease maximum votes", + "a11y/Delete voice recording": "Delete voice recording", + "a11y/Delivered": "נמסר", + "a11y/Deselect image": "Deselect image", + "a11y/Deselect video": "Deselect video", + "a11y/Dismiss notification": "סגור התראה", + "a11y/Dismiss unread messages": "Dismiss unread messages", + "a11y/Double tap and hold to activate contextual menu": "הקש פעמיים והחזק כדי להפעיל את התפריט ההקשרי", + "a11y/Emoji suggestions available": "Emoji suggestions available", + "a11y/End vote": "סיים הצבעה", + "a11y/Grid Icon": "Grid Icon", + "a11y/Hide Overlay": "Hide Overlay", + "a11y/Increase maximum votes": "Increase maximum votes", + "a11y/Loading": "טוען", + "a11y/Loading failed": "הטעינה נכשלה", + "a11y/Mention suggestions available": "Mention suggestions available", + "a11y/Message actions": "פעולות הודעה", + "a11y/New message from {{user}}": "הודעה חדשה מ-{{user}}", + "a11y/Notifications": "התראות", + "a11y/Offline": "לא מקוון", + "a11y/Open camera": "Open camera", + "a11y/Open commands": "Open commands", + "a11y/Open file picker": "Open file picker", + "a11y/Open message actions": "פתח פעולות הודעה", + "a11y/Open more reactions": "Open more reactions", + "a11y/Open photo picker": "Open photo picker", + "a11y/Open poll creation": "Open poll creation", + "a11y/Open video recorder": "Open video recorder", + "a11y/Play Pause Button": "Play Pause Button", + "a11y/Reaction {{emoji}} by {{count}} users": "תגובה {{emoji}} מאת {{count}} משתמשים", + "a11y/Read": "נקרא", + "a11y/Reconnecting": "מתחבר מחדש", + "a11y/Remove attachment": "Remove Attachment", + "a11y/Remove edit": "הסר עריכה", + "a11y/Remove reply": "הסר תגובה", + "a11y/Reply to {{user}}": "השב ל-{{user}}", + "a11y/Save edited message": "Save edited message", + "a11y/Scroll to bottom": "גלול לתחתית", + "a11y/Scroll to bottom, {{count}} new messages": "גלול לתחתית, {{count}} הודעות חדשות", + "a11y/Scroll to latest": "גלול להודעה האחרונה", + "a11y/Scroll to latest, {{count}} unread": "גלול להודעה האחרונה, {{count}} לא נקראו", + "a11y/Select image": "Select image", + "a11y/Select video": "Select video", + "a11y/Send message": "שלח הודעה", + "a11y/Send voice recording": "Send voice recording", + "a11y/Sending": "שולח", + "a11y/Sent": "נשלח", + "a11y/Share Button": "Share Button", + "a11y/Show all options": "הצג את כל האפשרויות", + "a11y/Start voice recording": "Start voice recording", + "a11y/Stop voice recording": "Stop voice recording", + "a11y/Swipe right to go through different actions": "החלק ימינה כדי לעבור בין הפעולות השונות", + "a11y/Voice message recording. Hold to record.": "הקלטת הודעה קולית. החזק כדי להקליט.", + "a11y/Vote on {{option}}": "הצבע עבור {{option}}", + "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", + "a11y/{{count}} new messages": "{{count}} הודעות חדשות", + "and {{ count }} others": "ועוד {{ count }} משתמש/ים", "duration/Location end at": "{{ milliseconds | durationFormatter(withSuffix: false) }}", "duration/Message reminder": "{{ milliseconds | durationFormatter(withSuffix: true) }}", "duration/Remind Me": "{{ milliseconds | durationFormatter(withSuffix: true) }}", + "mention/Channel Description": "Notify everyone in this channel", + "mention/Here Description": "Notify every online member in this channel", "replied to": "הגיב ל", + "size limit": "מגבלת גודל", "timestamp/ChannelPreviewStatus": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[אתמול]\",\"lastWeek\":\"dddd\",\"nextDay\":\"[מחר]\",\"nextWeek\":\"dddd [בשעה] LT\",\"sameDay\":\"LT\",\"sameElse\":\"L\"}) }}", "timestamp/ImageGalleryHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/InlineDateSeparator": "{{ timestamp | timestampFormatter(calendar: true) }}", @@ -170,17 +327,16 @@ "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/StickyHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/ThreadListItem": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[אתמול]\",\"lastWeek\":\"dddd\",\"nextDay\":\"[מחר]\",\"nextWeek\":\"dddd [בשעה] LT\",\"sameDay\":\"LT\",\"sameElse\":\"L\"}) }}", + "unknown error": "שגיאה לא ידועה", + "unsupported file type": "סוג קובץ לא נתמך", "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} ו-{{ nonSelfUserLength }} משתמש/ים אחר/ים מקלידים", + "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }} ו-{{ secondUser }} מקלידים", "{{ index }} of {{ photoLength }}": "{{ index }} מתוך {{ photoLength }}", + "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }} משתמש/ים מקלידים", "{{ replyCount }} Replies": "{{ replyCount }} תגובות", + "{{ user }} has been muted": "{{ user }} הושתק/ה", + "{{ user }} has been unmuted": "{{ user }} כבר לא מושתק/ת", "{{ user }} is typing": "{{ user }} מקליד/ה", - "You voted: {{ option }}": "הצבעת: {{ option }}", - "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }} ו-{{ secondUser }} מקלידים", - "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }} משתמש/ים מקלידים", - "Typing": "מקליד/ה", - "No messages yet": "אין הודעות עדיין", - "Message failed to send": "ההודעה לא נשלחה", - "and {{ count }} others": "ועוד {{ count }} משתמש/ים", "{{ user }} voted: {{ option }}": "{{ user }} הצבע: {{ option }}", "{{count}} Audios_many": "{{count}} קבצי אודיו", "{{count}} Audios_one": "{{count}} קובץ אודיו", @@ -191,173 +347,23 @@ "{{count}} Photos_many": "{{count}} תמונות", "{{count}} Photos_one": "{{count}} תמונה", "{{count}} Photos_other": "{{count}} תמונות", - "{{count}} Voice messages_many": "{{count}} הודעות קול", - "{{count}} Voice messages_one": "{{count}} הודעת קול", - "{{count}} Voice messages_other": "{{count}} הודעות קול", + "{{count}} Reactions_many": "{{count}} תגובות", + "{{count}} Reactions_one": "{{count}} תגובה", + "{{count}} Reactions_other": "{{count}} תגובות", "{{count}} Videos_many": "{{count}} סרטונים", "{{count}} Videos_one": "{{count}} סרטון", "{{count}} Videos_other": "{{count}} סרטונים", + "{{count}} Voice messages_many": "{{count}} הודעות קול", + "{{count}} Voice messages_one": "{{count}} הודעת קול", + "{{count}} Voice messages_other": "{{count}} הודעות קול", + "{{count}} new messages": "{{count}} הודעות חדשות", + "{{count}} new threads": "{{count}} שרשורים חדשים", + "{{count}} unread": "{{count}} שטרם נקרא", "{{count}} votes_many": "{{count}} הצבעות", "{{count}} votes_one": "{{count}} הצבעה", "{{count}} votes_other": "{{count}} הצבעות", - "🏙 Attachment...": "🏙 קובץ מצורף...", - "You have not granted access to the photo library.": "לא הענקת גישה לספריית התמונות.", - "Change in Settings": "שנה בהגדרות", - "Create a poll and let everyone vote": "צור סקר ותן לכולם להצביע", - "Open Camera": "פתח מצלמה", - "Open Files": "פתח קבצים", - "Select files to share": "בחר קבצים לשיתוף", - "Take a photo and share": "צלם תמונה ושתף", - "Take a video and share": "צלם וידאו ושתף", - "You have not granted access to your camera": "לא הענקת גישה למצלמה שלך", - "{{count}} Reactions_many": "{{count}} תגובות", - "{{count}} Reactions_one": "{{count}} תגובה", - "{{count}} Reactions_other": "{{count}} תגובות", - "Tap to remove": "הקש כדי להסיר", - "Draft": "טיוטה", - "Reminder set": "הזמן הוקם", - "Also sent in channel": "שלח/י גם לשיחה", - "Replied to a thread": "הגב/י בשרשור", - "View": "צפה", - "Reminder overdue": "הזמן פג", - "Poll has ended": "ההצבעה הסתיימה", - "Reply to a message to start a thread": "השב/י להודעה כדי להתחיל שרשור", - "Couldn't load new threads. Tap to retry": "לא ניתן לטעון שרשורים חדשים. הקש כדי לנסות שוב", - "{{count}} new threads": "{{count}} שרשורים חדשים", - "No conversations yet": "אין שיחות עדיין", - "Are you sure you want to delete this group? This can't be undone.": "האם למחוק את הקבוצה הזו? לא ניתן לבטל את הפעולה.", - "Are you sure you want to delete this chat? This can't be undone.": "האם למחוק את הצ׳אט הזה? לא ניתן לבטל את הפעולה.", - "Delete chat": "מחק/י צ׳אט", - "Delete group": "מחק/י קבוצה", - "Archive Chat": "העבר/י צ׳אט לארכיון", - "Archive Group": "העבר/י קבוצה לארכיון", - "Delete Chat": "מחק/י צ׳אט", - "Delete Group": "מחק/י קבוצה", - "Leave Chat": "צא/י מהצ׳אט", - "Leave Group": "צא/י מהקבוצה", - "Mute Group": "השתק/י קבוצה", - "Offline": "לא מחובר/ת", - "Online": "מחובר/ת", - "Unarchive Chat": "הוצא/י צ׳אט מהארכיון", - "Unarchive Group": "הוצא/י קבוצה מהארכיון", - "Unmute Group": "בטל/י השתקת קבוצה", + "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}} חברים, {{onlineCount}} מחוברים", "{{memberCount}} members, {{onlineCount}} online_one": "{{memberCount}} חבר/ה, {{onlineCount}} מחוברים", "{{memberCount}} members, {{onlineCount}} online_other": "{{memberCount}} חברים, {{onlineCount}} מחוברים", - "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}} חברים, {{onlineCount}} מחוברים", - "{{count}} unread": "{{count}} שטרם נקרא", - "{{count}} new messages": "{{count}} הודעות חדשות", - "Unsupported Attachment": "קובץ לא נתמך", - "+{{count}} More Options_one": "+עוד אפשרות {{count}}", - "+{{count}} More Options_other": "+עוד {{count}} אפשרויות", - "+{{count}} More Options_many": "+עוד {{count}} אפשרויות", - "a11y/AI is generating": "הבינה המלאכותית יוצרת תשובה", - "a11y/AI is thinking": "הבינה המלאכותית חושבת", - "a11y/Avatar of {{name}}": "תמונת פרופיל של {{name}}", - "a11y/Connected": "מחובר", - "a11y/Delivered": "נמסר", - "a11y/Loading": "טוען", - "a11y/Loading failed": "הטעינה נכשלה", - "a11y/Message actions": "פעולות הודעה", - "a11y/New message from {{user}}": "הודעה חדשה מ-{{user}}", - "a11y/Offline": "לא מקוון", - "a11y/Open message actions": "פתח פעולות הודעה", - "a11y/Reaction {{emoji}} by {{count}} users": "תגובה {{emoji}} מאת {{count}} משתמשים", - "a11y/Read": "נקרא", - "a11y/Reconnecting": "מתחבר מחדש", - "a11y/Reply to {{user}}": "השב ל-{{user}}", - "a11y/Remove edit": "הסר עריכה", - "a11y/Remove reply": "הסר תגובה", - "a11y/Scroll to bottom": "גלול לתחתית", - "a11y/Scroll to bottom, {{count}} new messages": "גלול לתחתית, {{count}} הודעות חדשות", - "a11y/Scroll to latest": "גלול להודעה האחרונה", - "a11y/Scroll to latest, {{count}} unread": "גלול להודעה האחרונה, {{count}} לא נקראו", - "a11y/Send message": "שלח הודעה", - "a11y/Sending": "שולח", - "a11y/Sent": "נשלח", - "a11y/Voice message recording. Hold to record.": "הקלטת הודעה קולית. החזק כדי להקליט.", - "a11y/{{count}} new messages": "{{count}} הודעות חדשות", - "a11y/Add attachment": "Add attachment", - "a11y/Close attachments": "Close attachments", - "a11y/Remove attachment": "Remove Attachment", - "a11y/Close poll": "Close poll", - "a11y/Close poll creation": "Close poll creation", - "a11y/Create poll": "Create poll", - "a11y/Decrease maximum votes": "Decrease maximum votes", - "a11y/Delete voice recording": "Delete voice recording", - "a11y/Deselect image": "Deselect image", - "a11y/Deselect video": "Deselect video", - "a11y/Dismiss unread messages": "Dismiss unread messages", - "a11y/Grid Icon": "Grid Icon", - "a11y/Hide Overlay": "Hide Overlay", - "a11y/Increase maximum votes": "Increase maximum votes", - "a11y/Open camera": "Open camera", - "a11y/Open commands": "Open commands", - "a11y/Open file picker": "Open file picker", - "a11y/Open more reactions": "Open more reactions", - "a11y/Open photo picker": "Open photo picker", - "a11y/Open poll creation": "Open poll creation", - "a11y/Open video recorder": "Open video recorder", - "a11y/Play Pause Button": "Play Pause Button", - "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", - "a11y/Save edited message": "Save edited message", - "a11y/Select image": "Select image", - "a11y/Select video": "Select video", - "a11y/Send voice recording": "Send voice recording", - "a11y/Share Button": "Share Button", - "a11y/Start voice recording": "Start voice recording", - "a11y/Stop voice recording": "Stop voice recording", - "a11y/Notifications": "התראות", - "a11y/Dismiss notification": "סגור התראה", - "Attachment upload blocked due to {{reason}}": "העלאת הקובץ המצורף נחסמה עקב {{reason}}", - "Attachment upload failed due to {{reason}}": "העלאת הקובץ המצורף נכשלה עקב {{reason}}", - "Command not available": "הפקודה אינה זמינה", - "Command not available while editing": "הפקודה אינה זמינה בזמן עריכה", - "Command not available while replying": "הפקודה אינה זמינה בזמן תגובה", - "Error reproducing the recording": "שגיאה בהפעלת ההקלטה", - "Error uploading attachment": "שגיאה בהעלאת הקובץ המצורף", - "Failed to create the poll": "יצירת הסקר נכשלה", - "Failed to create the poll due to {{reason}}": "יצירת הסקר נכשלה עקב {{reason}}", - "Failed to end the poll": "סיום הסקר נכשל", - "Failed to end the poll due to {{reason}}": "סיום הסקר נכשל עקב {{reason}}", - "Failed to jump to the first unread message": "המעבר להודעה הראשונה שלא נקראה נכשל", - "Failed to retrieve location": "אחזור המיקום נכשל", - "Failed to share location": "שיתוף המיקום נכשל", - "File is required for upload attachment": "נדרש קובץ להעלאת קובץ מצורף", - "Local upload attachment missing local id": "חסר מזהה מקומי לקובץ המצורף המקומי להעלאה", - "Poll ended": "הסקר הסתיים", - "Reached the vote limit. Remove an existing vote first.": "הגעת למגבלת ההצבעות. הסר קודם הצבעה קיימת.", - "Thread has not been found": "השרשור לא נמצא", - "Wait until all attachments have uploaded": "יש להמתין עד שכל הקבצים המצורפים יועלו", - "Cannot seek in the recording": "לא ניתן לעבור למיקום אחר בהקלטה", - "Channel archived": "השיחה הועברה לארכיון", - "Channel muted": "השיחה הושתקה", - "Channel pinned": "השיחה ננעצה", - "Channel unarchived": "השיחה הוצאה מהארכיון", - "Channel unmuted": "השתקת השיחה בוטלה", - "Channel unpinned": "נעיצת השיחה בוטלה", - "Edit message request failed": "עריכת ההודעה נכשלה", - "Failed to block user": "חסימת המשתמש נכשלה", - "Failed to leave channel": "עזיבת השיחה נכשלה", - "Failed to play the recording": "הפעלת ההקלטה נכשלה", - "Failed to update channel archive status": "עדכון מצב הארכיון של השיחה נכשל", - "Failed to update channel mute status": "עדכון מצב ההשתקה של השיחה נכשל", - "Failed to update channel pinned status": "עדכון מצב הנעיצה של השיחה נכשל", - "Left channel": "עזבת את השיחה", - "Recording format is not supported and cannot be reproduced": "פורמט ההקלטה אינו נתמך ולא ניתן להשמיע אותו", - "Send message request failed": "שליחת ההודעה נכשלה", - "User blocked": "המשתמש נחסם", - "User unblocked": "חסימת המשתמש בוטלה", - "{{ user }} has been muted": "{{ user }} הושתק/ה", - "{{ user }} has been unmuted": "{{ user }} כבר לא מושתק/ת", - "size limit": "מגבלת גודל", - "unknown error": "שגיאה לא ידועה", - "unsupported file type": "סוג קובץ לא נתמך", - "a11y/Activate to view results": "הפעל כדי לראות את התוצאות", - "a11y/End vote": "סיים הצבעה", - "a11y/Show all options": "הצג את כל האפשרויות", - "a11y/Vote on {{option}}": "הצבע עבור {{option}}", - "a11y/Double tap and hold to activate contextual menu": "הקש פעמיים והחזק כדי להפעיל את התפריט ההקשרי", - "a11y/Swipe right to go through different actions": "החלק ימינה כדי לעבור בין הפעולות השונות", - "a11y/Close": "Close", - "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss." + "🏙 Attachment...": "🏙 קובץ מצורף..." } diff --git a/package/src/i18n/hi.json b/package/src/i18n/hi.json index 84586cafd8..a7261b990c 100644 --- a/package/src/i18n/hi.json +++ b/package/src/i18n/hi.json @@ -1,4 +1,7 @@ { + "+{{count}} More Options_many": "+{{count}} और विकल्प", + "+{{count}} More Options_one": "+{{count}} और विकल्प", + "+{{count}} More Options_other": "+{{count}} और विकल्प", "+{{count}}_many": "+{{count}}", "+{{count}}_one": "+{{count}}", "+{{count}}_other": "+{{count}}", @@ -11,33 +14,60 @@ "Allow access to your Gallery": "अपनी गैलरी तक पहुँचने की अनुमति दें", "Allow camera access in device settings": "डिवाइस सेटिंग्स में कैमरा एक्सेस की अनुमति दें", "Also send to channel": "चैनल को भी भेजें", + "Also sent in channel": "चैनल में भी भेजा गया", "Anonymous": "गुमनाम", "Anonymous voting": "अनाम सर्वेक्षण", + "Archive Chat": "चैट संग्रहित करें", + "Archive Group": "ग्रुप संग्रहित करें", + "Are you sure you want to delete this chat? This can't be undone.": "क्या आप वाकई इस चैट को हटाना चाहते हैं? यह वापस नहीं किया जा सकता।", + "Are you sure you want to delete this group? This can't be undone.": "क्या आप वाकई इस ग्रुप को हटाना चाहते हैं? यह वापस नहीं किया जा सकता।", "Are you sure you want to permanently delete this message?": "क्या आप वाकई इस संदेश को स्थायी रूप से हटाना चाहते हैं?", "Are you sure?": "क्या आप सुनिश्चित हैं?", "Ask a question": "एक प्रश्न पूछें", + "Attachment upload blocked due to {{reason}}": "{{reason}} के कारण अटैचमेंट अपलोड अवरुद्ध है", + "Attachment upload failed due to {{reason}}": "{{reason}} के कारण अटैचमेंट अपलोड विफल रहा", "Audio": "ऑडियो", "Ban User": "उपयोगकर्ता को प्रतिबंधित करें", "Block User": "उपयोगकर्ता को रोक देना, ब्लॉक यूजर", "Cancel": "रद्द करें", "Cannot Flag Message": "मैसेज फ्लैग नहीं किया जा सकता है", + "Cannot seek in the recording": "रिकॉर्डिंग में सीक नहीं किया जा सकता", + "Change in Settings": "सेटिंग्स में बदलें", + "Channel archived": "चैनल आर्काइव किया गया", + "Channel muted": "चैनल म्यूट किया गया", + "Channel pinned": "चैनल पिन किया गया", + "Channel unarchived": "चैनल अनआर्काइव किया गया", + "Channel unmuted": "चैनल अनम्यूट किया गया", + "Channel unpinned": "चैनल से पिन हटाया गया", + "Choose between 2–10 options": "2–10 विकल्प चुनें", + "Command not available": "कमांड उपलब्ध नहीं है", + "Command not available while editing": "संपादन करते समय कमांड उपलब्ध नहीं है", + "Command not available while replying": "जवाब देते समय कमांड उपलब्ध नहीं है", "Consider how your comment might make others feel and be sure to follow our Community Guidelines": "ध्यान दें कि आपका संदेश दूसरों को कैसा लगा सकता है और सुनिश्चित हों कि आप हमारी सामुदायिक अनुशासन का पालन कर रहे हैं", "Copy Message": "संदेश की प्रतिलिपि बनाएँ", + "Couldn't load new threads. Tap to retry": "नये थ्रेड्स लोड नहीं हो सके। टैप करके पुनः कोशिश करें", "Create Poll": "सर्वेक्षण बनाएं", + "Create a poll and let everyone vote": "पोल बनाएँ और सभी को वोट करने दें", "Delete": "हटाएं", + "Delete Chat": "चैट हटाएं", + "Delete Group": "ग्रुप हटाएं", "Delete Message": "मैसेज को डिलीट करे", + "Delete chat": "चैट हटाएं", "Delete for me": "मुझे हटाएं", + "Delete group": "ग्रुप हटाएं", "Device camera is used to take photos or videos.": "डिवाइस कैमरे का उपयोग फ़ोटो या वीडियो लेने के लिए किया जाता है।", "Device gallery permissions is used to take photos or videos.": "डिवाइस गैलरी की अनुमतियों का उपयोग फोटो या वीडियो लेने के लिए किया जाता है।", "Do you want to send a copy of this message to a moderator for further investigation?": "क्या आप इस संदेश की एक प्रति आगे की जाँच के लिए किसी मॉडरेटर को भेजना चाहते हैं?", + "Draft": "ड्राफ्ट", "Due since {{ dueSince }}": "{{ dueSince }} से देय है", "Edit Message": "मैसेज में बदलाव करे", + "Edit message request failed": "संदेश संपादित करने का अनुरोध विफल रहा", "Edited": "मैसेज बदला गया है", "Editing Message": "मैसेज बदला जा रहा है", "Emoji matching": "इमोजी मिलान", "Empty message...": "खाली संदेश...", - "Enter a new option": "एक नया विकल्प दर्ज करें", "End Vote": "वोट समाप्त करें", + "Enter a new option": "एक नया विकल्प दर्ज करें", "Error adding flag": "संदेश को फ़्लैग करने में त्रुटि", "Error deleting message": "संदेश हटाने में त्रुटि", "Error fetching reactions": "प्रतिक्रियाएँ प्राप्त करने में त्रुटि", @@ -48,8 +78,24 @@ "Error muting a user ...": "उपयोगकर्ता को म्यूट करने में त्रुटि ...", "Error pinning message": "संदेश पिन करने में त्रुटि", "Error removing message pin": "संदेश पिन हटाने में त्रुटि", + "Error reproducing the recording": "रिकॉर्डिंग चलाने में त्रुटि", "Error unmuting a user ...": "उपयोगकर्ता को अनम्यूट करने में त्रुटि ...", + "Error uploading attachment": "अटैचमेंट अपलोड करने में त्रुटि", "Error while loading, please reload/refresh": "एरर, रिफ्रेश करे", + "Failed to block user": "उपयोगकर्ता को ब्लॉक करने में विफल", + "Failed to create the poll": "पोल बनाने में विफल", + "Failed to create the poll due to {{reason}}": "{{reason}} के कारण पोल बनाने में विफल", + "Failed to end the poll": "पोल समाप्त करने में विफल", + "Failed to end the poll due to {{reason}}": "{{reason}} के कारण पोल समाप्त करने में विफल", + "Failed to jump to the first unread message": "पहले अपठित संदेश पर जाने में विफल", + "Failed to leave channel": "चैनल छोड़ने में विफल", + "Failed to play the recording": "रिकॉर्डिंग चलाने में विफल", + "Failed to retrieve location": "स्थान प्राप्त करने में विफल", + "Failed to share location": "स्थान साझा करने में विफल", + "Failed to update channel archive status": "चैनल आर्काइव स्थिति अपडेट करने में विफल", + "Failed to update channel mute status": "चैनल म्यूट स्थिति अपडेट करने में विफल", + "Failed to update channel pinned status": "चैनल पिन स्थिति अपडेट करने में विफल", + "File is required for upload attachment": "अटैचमेंट अपलोड करने के लिए फ़ाइल आवश्यक है", "File is too large: {{ size }}, maximum upload size is {{ limit }}": "फ़ाइल बहुत बड़ी है: {{ size }}, अधिकतम अपलोड साइज़ {{ limit }} है", "File too large": "फ़ाइल बहुत बड़ी है", "File type not supported": "फ़ाइल प्रकार समर्थित नहीं है", @@ -63,41 +109,52 @@ "Hold to start recording.": "रिकॉर्डिंग शुरू करने के लिए दबाएं।", "How about sending your first message to a friend?": "किसी मित्र को अपना पहला संदेश भेजने के बारे में क्या ख़याल है?", "Instant Commands": "त्वरित कमांड", + "Leave Chat": "चैट छोड़ें", + "Leave Group": "ग्रुप छोड़ें", + "Left channel": "चैनल छोड़ दिया", "Let others add options": "दूसरों को विकल्प जोड़ने दें", "Let's start chatting!": "आइए चैट करना शुरू करें!", + "Limit votes per person": "प्रति व्यक्ति वोट सीमित करें", "Links are disabled": "लिंक अक्षम हैं", "Live Location": "लाइव लोकेशन", "Loading channels...": "चैनल लोड हो रहे हैं...", "Loading messages...": "मेसेजस लोड हो रहे हैं...", "Loading threads...": "थ्रेड्स लोड हो रहे हैं...", "Loading...": "लोड हो रहा है...", + "Local upload attachment missing local id": "स्थानीय अपलोड अटैचमेंट में स्थानीय आईडी नहीं है", "Location": "स्थान", "Mark as Unread": "अपठित मार्क करें", "Maximum number of files reached": "फ़ाइलों की अधिकतम संख्या पहुँच गई", "Message Reactions": "संदेश प्रतिक्रियाएँ", "Message deleted": "मैसेज हटा दिया गया", - "Message has been successfully flagged": "संदेश सफलतापूर्वक फ़्लैग किया गया", + "Message failed to send": "मैसेज भेजने में विफल", "Message flagged": "संदेश को ध्वजांकित किया गया", + "Message has been successfully flagged": "संदेश सफलतापूर्वक फ़्लैग किया गया", "Message marked as unread": "संदेश को अपठित के रूप में चिह्नित किया गया", "Message pinned": "संदेश पिन किया गया", "Message unpinned": "संदेश से पिन हटाया गया", "Multiple votes": "एकाधिक वोट", - "Network error": "नेटवर्क त्रुटि", - "Select more than one option": "एक से अधिक विकल्प चुनें", - "Limit votes per person": "प्रति व्यक्ति वोट सीमित करें", - "Choose between 2–10 options": "2–10 विकल्प चुनें", + "Mute Group": "ग्रुप म्यूट करें", "Mute User": "उपयोगकर्ता को म्यूट करें", + "Network error": "नेटवर्क त्रुटि", "No chats here yet…": "अभी तक यहाँ कोई चैट नहीं है...", + "No conversations yet": "अभी तक कोई चैट नहीं है", "No items exist": "कोई आइटम मौजूद नहीं", + "No messages yet": "अभी तक कोई मैसेज नहीं है", "No threads here yet": "यहाँ अभी तक कोई थ्रेड्स नहीं हैं", "Not supported": "समर्थित नहीं", "Nothing yet...": "कोई मैसेज नहीं है...", + "Notify all {{ role }} members": "Notify all {{ role }} members", + "Offline": "ऑफलाइन", "Ok": "ठीक", + "Online": "ऑनलाइन", "Only visible to you": "केवल आपको दिखाई दे रहा है", + "Open Camera": "कैमरा खोलें", + "Open Files": "फ़ाइलें खोलें", "Open Settings": "सेटिंग्स खोलें", "Option": "विकल्प", - "Option {{count}}": "विकल्प {{count}}", "Option already exists": "विकल्प पहले से मौजूद है", + "Option {{count}}": "विकल्प {{count}}", "Options": "विकल्प", "Photo": "तस्वीर", "Photos and Videos": "तस्वीरें और वीडियों", @@ -109,16 +166,26 @@ "Poll Comments": "सर्वेक्षण टिप्पणियाँ", "Poll Options": "सर्वेक्षण विकल्प", "Poll Results": "सर्वेक्षण परिणाम", + "Poll ended": "पोल समाप्त हो गया", + "Poll has ended": "वोट समाप्त", "Questions": "प्रश्न", + "Reached the vote limit. Remove an existing vote first.": "वोट सीमा पूरी हो गई है। पहले मौजूदा वोट हटाएं।", "Reconnecting...": "पुनः कनेक्ट हो...", + "Recording format is not supported and cannot be reproduced": "रिकॉर्डिंग फ़ॉर्मेट समर्थित नहीं है और इसे चलाया नहीं जा सकता", + "Reminder overdue": "रीमिंडर ओवरडो", + "Reminder set": "रीमिंडर सेट किया गया", + "Replied to a thread": "थ्रेड में उत्तर दिया", "Reply": "मैसेज को रिप्लाई करे", - "Reply to {{name}}": "{{name}} को जवाब दें", "Reply to Message": "संदेश का जवाब दें", + "Reply to a message to start a thread": "एक संदेश का जवाब देकर थ्रेड शुरू करें", + "Reply to {{name}}": "{{name}} को जवाब दें", "Resend": "पुन: भेजें", "Retry Upload": "अपलोड पुनः प्रयास करें", "SEND": "भेजें", "Search": "खोजें", "Select More Photos": "अधिक फ़ोटो चुनें", + "Select files to share": "साझा करने के लिए फ़ाइलें चुनें", + "Select more than one option": "एक से अधिक विकल्प चुनें", "Select one": "एक चुनें", "Select one or more": "एक या अधिक चुनें", "Select up to {{count}}_many": "{{count}} तक चुनें", @@ -126,26 +193,39 @@ "Select up to {{count}}_other": "{{count}} तक चुनें", "Send Anyway": "फिर भी भेजें", "Send a message": "एक संदेश भेजें", + "Send message request failed": "संदेश भेजने का अनुरोध विफल रहा", "Sending links is not allowed in this conversation": "इस बातचीत में लिंक भेजने की अनुमति नहीं है", "Show All": "सभी दिखाएं", "Slide to Cancel": "स्लाइड करके रद्द करें", "Slow mode ON": "स्लो मोड चालू", "Slow mode, wait {{seconds}}s...": "स्लो मोड, {{seconds}}s इंतजार करें...", "Suggest an option": "एक विकल्प सुझाएं", + "Take a photo and share": "एक फ़ोटो लें और साझा करें", + "Take a video and share": "वीडियो लें और साझा करें", + "Tap to remove": "हटाने के लिए टैप करें", "The message has been reported to a moderator.": "संदेश एक मॉडरेटर को सूचित किया गया है।", "The source message was deleted": "स्रोत संदेश हटा दिया गया है", "Thinking...": "सोच रहा है...", "This reply was deleted": "यह उत्तर हटा दिया गया है", "Thread Reply": "धागा जवाब", + "Thread has not been found": "थ्रेड नहीं मिला", "Type a number from 2 to 10": "2 से 10 के बीच एक संख्या दर्ज करें", + "Typing": "लिख रहा है", + "Unarchive Chat": "चैट को संग्रह से निकालें", + "Unarchive Group": "ग्रुप को संग्रह से निकालें", "Unban User": "उपयोगकर्ता को अनब्लॉक करें", "Unblock User": "उपयोगकर्ता को अनब्लॉक करें", "Unknown User": "अज्ञात उपयोगकर्ता", + "Unmute Group": "ग्रुप अनम्यूट करें", "Unmute User": "उपयोगकर्ता को अनम्यूट करें", "Unpin from Conversation": "बातचीत से अनपिन करें", "Unread Messages": "अपठित संदेश", + "Unsupported Attachment": "असमर्थित अटैचमेंट", "Update your comment": "अपनी टिप्पणी अपडेट करें", + "User blocked": "उपयोगकर्ता ब्लॉक किया गया", + "User unblocked": "उपयोगकर्ता अनब्लॉक किया गया", "Video": "वीडियो", + "View": "देखें", "View Results": "परिणाम देखें", "View {{count}} comments_many": "सभी {{count}} टिप्पणियाँ देखें", "View {{count}} comments_one": "{{count}} टिप्पणी देखें", @@ -153,13 +233,90 @@ "Voice message": "वॉइस संदेश", "Voice message ({{duration}})": "वॉइस संदेश ({{duration}})", "Voice message deleted": "वॉइस संदेश हटा दिया गया", - "Your comment": "आपकी टिप्पणी", + "Wait until all attachments have uploaded": "सभी अटैचमेंट अपलोड होने तक प्रतीक्षा करें", "You": "आप", "You can't send messages in this channel": "आप इस चैनल में संदेश नहीं भेज सकते", + "You have not granted access to the photo library.": "आपने फोटो लाइब्रेरी के लिए अनुमति नहीं दी है।", + "You have not granted access to your camera": "आपने अपने कैमरे के लिए अनुमति नहीं दी है", + "You voted: {{ option }}": "आपने वोट दिया: {{ option }}", + "Your comment": "आपकी टिप्पणी", + "a11y/AI is generating": "AI जवाब तैयार कर रहा है", + "a11y/AI is thinking": "AI सोच रहा है", + "a11y/Activate to view results": "परिणाम देखने के लिए सक्रिय करें", + "a11y/Add attachment": "Add attachment", + "a11y/Avatar of {{name}}": "{{name}} का अवतार", + "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.", + "a11y/Close": "Close", + "a11y/Close attachments": "Close attachments", + "a11y/Close poll": "Close poll", + "a11y/Close poll creation": "Close poll creation", + "a11y/Command suggestions available": "Command suggestions available", + "a11y/Connected": "कनेक्टेड", + "a11y/Create poll": "Create poll", + "a11y/Decrease maximum votes": "Decrease maximum votes", + "a11y/Delete voice recording": "Delete voice recording", + "a11y/Delivered": "डिलीवर हुआ", + "a11y/Deselect image": "Deselect image", + "a11y/Deselect video": "Deselect video", + "a11y/Dismiss notification": "सूचना हटाएं", + "a11y/Dismiss unread messages": "Dismiss unread messages", + "a11y/Double tap and hold to activate contextual menu": "संदर्भ मेनू सक्रिय करने के लिए दो बार टैप करें और होल्ड करें", + "a11y/Emoji suggestions available": "Emoji suggestions available", + "a11y/End vote": "मतदान समाप्त करें", + "a11y/Grid Icon": "Grid Icon", + "a11y/Hide Overlay": "Hide Overlay", + "a11y/Increase maximum votes": "Increase maximum votes", + "a11y/Loading": "लोड हो रहा है", + "a11y/Loading failed": "लोड नहीं हो सका", + "a11y/Mention suggestions available": "Mention suggestions available", + "a11y/Message actions": "संदेश की कार्रवाइयां", + "a11y/New message from {{user}}": "{{user}} से नया संदेश", + "a11y/Notifications": "सूचनाएं", + "a11y/Offline": "ऑफलाइन", + "a11y/Open camera": "Open camera", + "a11y/Open commands": "Open commands", + "a11y/Open file picker": "Open file picker", + "a11y/Open message actions": "संदेश की कार्रवाइयां खोलें", + "a11y/Open more reactions": "Open more reactions", + "a11y/Open photo picker": "Open photo picker", + "a11y/Open poll creation": "Open poll creation", + "a11y/Open video recorder": "Open video recorder", + "a11y/Play Pause Button": "Play Pause Button", + "a11y/Reaction {{emoji}} by {{count}} users": "{{count}} उपयोगकर्ताओं की {{emoji}} प्रतिक्रिया", + "a11y/Read": "पढ़ा गया", + "a11y/Reconnecting": "फिर से कनेक्ट हो रहा है", + "a11y/Remove attachment": "Remove Attachment", + "a11y/Remove edit": "संपादन हटाएं", + "a11y/Remove reply": "जवाब हटाएं", + "a11y/Reply to {{user}}": "{{user}} को जवाब दें", + "a11y/Save edited message": "Save edited message", + "a11y/Scroll to bottom": "नीचे स्क्रॉल करें", + "a11y/Scroll to bottom, {{count}} new messages": "नीचे स्क्रॉल करें, {{count}} नए संदेश", + "a11y/Scroll to latest": "नवीनतम संदेश पर जाएं", + "a11y/Scroll to latest, {{count}} unread": "नवीनतम संदेश पर जाएं, {{count}} अपठित", + "a11y/Select image": "Select image", + "a11y/Select video": "Select video", + "a11y/Send message": "संदेश भेजें", + "a11y/Send voice recording": "Send voice recording", + "a11y/Sending": "भेजा जा रहा है", + "a11y/Sent": "भेजा गया", + "a11y/Share Button": "Share Button", + "a11y/Show all options": "सभी विकल्प दिखाएं", + "a11y/Start voice recording": "Start voice recording", + "a11y/Stop voice recording": "Stop voice recording", + "a11y/Swipe right to go through different actions": "विभिन्न क्रियाओं के बीच जाने के लिए दाएं स्वाइप करें", + "a11y/Voice message recording. Hold to record.": "वॉइस संदेश रिकॉर्डिंग। रिकॉर्ड करने के लिए दबाकर रखें।", + "a11y/Vote on {{option}}": "{{option}} पर वोट करें", + "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", + "a11y/{{count}} new messages": "{{count}} नए संदेश", + "and {{ count }} others": "और {{ count }} अन्य", "duration/Location end at": "{{ milliseconds | durationFormatter(withSuffix: false) }}", "duration/Message reminder": "{{ milliseconds | durationFormatter(withSuffix: true) }}", "duration/Remind Me": "{{ milliseconds | durationFormatter(withSuffix: true) }}", + "mention/Channel Description": "Notify everyone in this channel", + "mention/Here Description": "Notify every online member in this channel", "replied to": "को उत्तर दिया", + "size limit": "आकार सीमा", "timestamp/ChannelPreviewStatus": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[कल]\",\"lastWeek\":\"dddd\",\"nextDay\":\"[कल]\",\"nextWeek\":\"dddd [को] LT\",\"sameDay\":\"LT\",\"sameElse\":\"L\"}) }}", "timestamp/ImageGalleryHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/InlineDateSeparator": "{{ timestamp | timestampFormatter(calendar: true) }}", @@ -170,17 +327,16 @@ "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/StickyHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/ThreadListItem": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[कल]\",\"lastWeek\":\"dddd\",\"nextDay\":\"[कल]\",\"nextWeek\":\"dddd [को] LT\",\"sameDay\":\"LT\",\"sameElse\":\"L\"}) }}", + "unknown error": "अज्ञात त्रुटि", + "unsupported file type": "असमर्थित फ़ाइल प्रकार", "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} और {{ nonSelfUserLength }} अधिक टाइप कर रहे हैं", + "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }} और {{ secondUser }} लिख रहे हैं", "{{ index }} of {{ photoLength }}": "{{ index }} / {{ photoLength }}", + "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }} लोग लिख रहे हैं", "{{ replyCount }} Replies": "{{ replyCount }} रिप्लाई", + "{{ user }} has been muted": "{{ user }} को म्यूट किया गया", + "{{ user }} has been unmuted": "{{ user }} को अनम्यूट किया गया", "{{ user }} is typing": "{{ user }} टाइप कर रहा है", - "You voted: {{ option }}": "आपने वोट दिया: {{ option }}", - "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }} और {{ secondUser }} लिख रहे हैं", - "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }} लोग लिख रहे हैं", - "Typing": "लिख रहा है", - "No messages yet": "अभी तक कोई मैसेज नहीं है", - "Message failed to send": "मैसेज भेजने में विफल", - "and {{ count }} others": "और {{ count }} अन्य", "{{ user }} voted: {{ option }}": "{{ user }} वोट दिया: {{ option }}", "{{count}} Audios_many": "{{count}} ऑडियो", "{{count}} Audios_one": "{{count}} ऑडियो", @@ -191,173 +347,23 @@ "{{count}} Photos_many": "{{count}} फ़ोटो", "{{count}} Photos_one": "{{count}} फ़ोटो", "{{count}} Photos_other": "{{count}} फ़ोटो", - "{{count}} Voice messages_many": "{{count}} वॉइस संदेश", - "{{count}} Voice messages_one": "{{count}} वॉइस संदेश", - "{{count}} Voice messages_other": "{{count}} वॉइस संदेश", + "{{count}} Reactions_many": "{{count}} प्रतिक्रियाएँ", + "{{count}} Reactions_one": "{{count}} प्रतिक्रिया", + "{{count}} Reactions_other": "{{count}} प्रतिक्रियाएँ", "{{count}} Videos_many": "{{count}} वीडियो", "{{count}} Videos_one": "{{count}} वीडियो", "{{count}} Videos_other": "{{count}} वीडियो", + "{{count}} Voice messages_many": "{{count}} वॉइस संदेश", + "{{count}} Voice messages_one": "{{count}} वॉइस संदेश", + "{{count}} Voice messages_other": "{{count}} वॉइस संदेश", + "{{count}} new messages": "{{count}} नये संदेश", + "{{count}} new threads": "{{count}} नये थ्रेड्स", + "{{count}} unread": "{{count}} ना पढ़े हुए", "{{count}} votes_many": "{{count}} वोट", "{{count}} votes_one": "{{count}} वोट", "{{count}} votes_other": "{{count}} वोट", - "🏙 Attachment...": "🏙 अटैचमेंट...", - "You have not granted access to the photo library.": "आपने फोटो लाइब्रेरी के लिए अनुमति नहीं दी है।", - "Change in Settings": "सेटिंग्स में बदलें", - "Create a poll and let everyone vote": "पोल बनाएँ और सभी को वोट करने दें", - "Open Camera": "कैमरा खोलें", - "Open Files": "फ़ाइलें खोलें", - "Select files to share": "साझा करने के लिए फ़ाइलें चुनें", - "Take a photo and share": "एक फ़ोटो लें और साझा करें", - "Take a video and share": "वीडियो लें और साझा करें", - "You have not granted access to your camera": "आपने अपने कैमरे के लिए अनुमति नहीं दी है", - "{{count}} Reactions_many": "{{count}} प्रतिक्रियाएँ", - "{{count}} Reactions_one": "{{count}} प्रतिक्रिया", - "{{count}} Reactions_other": "{{count}} प्रतिक्रियाएँ", - "Tap to remove": "हटाने के लिए टैप करें", - "Draft": "ड्राफ्ट", - "Reminder set": "रीमिंडर सेट किया गया", - "Also sent in channel": "चैनल में भी भेजा गया", - "Replied to a thread": "थ्रेड में उत्तर दिया", - "View": "देखें", - "Reminder overdue": "रीमिंडर ओवरडो", - "Poll has ended": "वोट समाप्त", - "Reply to a message to start a thread": "एक संदेश का जवाब देकर थ्रेड शुरू करें", - "Couldn't load new threads. Tap to retry": "नये थ्रेड्स लोड नहीं हो सके। टैप करके पुनः कोशिश करें", - "{{count}} new threads": "{{count}} नये थ्रेड्स", - "No conversations yet": "अभी तक कोई चैट नहीं है", - "Are you sure you want to delete this group? This can't be undone.": "क्या आप वाकई इस ग्रुप को हटाना चाहते हैं? यह वापस नहीं किया जा सकता।", - "Are you sure you want to delete this chat? This can't be undone.": "क्या आप वाकई इस चैट को हटाना चाहते हैं? यह वापस नहीं किया जा सकता।", - "Delete chat": "चैट हटाएं", - "Delete group": "ग्रुप हटाएं", - "Archive Chat": "चैट संग्रहित करें", - "Archive Group": "ग्रुप संग्रहित करें", - "Delete Chat": "चैट हटाएं", - "Delete Group": "ग्रुप हटाएं", - "Leave Chat": "चैट छोड़ें", - "Leave Group": "ग्रुप छोड़ें", - "Mute Group": "ग्रुप म्यूट करें", - "Offline": "ऑफलाइन", - "Online": "ऑनलाइन", - "Unarchive Chat": "चैट को संग्रह से निकालें", - "Unarchive Group": "ग्रुप को संग्रह से निकालें", - "Unmute Group": "ग्रुप अनम्यूट करें", + "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}} सदस्य, {{onlineCount}} ऑनलाइन", "{{memberCount}} members, {{onlineCount}} online_one": "{{memberCount}} सदस्य, {{onlineCount}} ऑनलाइन", "{{memberCount}} members, {{onlineCount}} online_other": "{{memberCount}} सदस्य, {{onlineCount}} ऑनलाइन", - "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}} सदस्य, {{onlineCount}} ऑनलाइन", - "{{count}} unread": "{{count}} ना पढ़े हुए", - "{{count}} new messages": "{{count}} नये संदेश", - "Unsupported Attachment": "असमर्थित अटैचमेंट", - "+{{count}} More Options_one": "+{{count}} और विकल्प", - "+{{count}} More Options_other": "+{{count}} और विकल्प", - "+{{count}} More Options_many": "+{{count}} और विकल्प", - "a11y/AI is generating": "AI जवाब तैयार कर रहा है", - "a11y/AI is thinking": "AI सोच रहा है", - "a11y/Avatar of {{name}}": "{{name}} का अवतार", - "a11y/Connected": "कनेक्टेड", - "a11y/Delivered": "डिलीवर हुआ", - "a11y/Loading": "लोड हो रहा है", - "a11y/Loading failed": "लोड नहीं हो सका", - "a11y/Message actions": "संदेश की कार्रवाइयां", - "a11y/New message from {{user}}": "{{user}} से नया संदेश", - "a11y/Offline": "ऑफलाइन", - "a11y/Open message actions": "संदेश की कार्रवाइयां खोलें", - "a11y/Reaction {{emoji}} by {{count}} users": "{{count}} उपयोगकर्ताओं की {{emoji}} प्रतिक्रिया", - "a11y/Read": "पढ़ा गया", - "a11y/Reconnecting": "फिर से कनेक्ट हो रहा है", - "a11y/Reply to {{user}}": "{{user}} को जवाब दें", - "a11y/Remove edit": "संपादन हटाएं", - "a11y/Remove reply": "जवाब हटाएं", - "a11y/Scroll to bottom": "नीचे स्क्रॉल करें", - "a11y/Scroll to bottom, {{count}} new messages": "नीचे स्क्रॉल करें, {{count}} नए संदेश", - "a11y/Scroll to latest": "नवीनतम संदेश पर जाएं", - "a11y/Scroll to latest, {{count}} unread": "नवीनतम संदेश पर जाएं, {{count}} अपठित", - "a11y/Send message": "संदेश भेजें", - "a11y/Sending": "भेजा जा रहा है", - "a11y/Sent": "भेजा गया", - "a11y/Voice message recording. Hold to record.": "वॉइस संदेश रिकॉर्डिंग। रिकॉर्ड करने के लिए दबाकर रखें।", - "a11y/{{count}} new messages": "{{count}} नए संदेश", - "a11y/Add attachment": "Add attachment", - "a11y/Close attachments": "Close attachments", - "a11y/Remove attachment": "Remove Attachment", - "a11y/Close poll": "Close poll", - "a11y/Close poll creation": "Close poll creation", - "a11y/Create poll": "Create poll", - "a11y/Decrease maximum votes": "Decrease maximum votes", - "a11y/Delete voice recording": "Delete voice recording", - "a11y/Deselect image": "Deselect image", - "a11y/Deselect video": "Deselect video", - "a11y/Dismiss unread messages": "Dismiss unread messages", - "a11y/Grid Icon": "Grid Icon", - "a11y/Hide Overlay": "Hide Overlay", - "a11y/Increase maximum votes": "Increase maximum votes", - "a11y/Open camera": "Open camera", - "a11y/Open commands": "Open commands", - "a11y/Open file picker": "Open file picker", - "a11y/Open more reactions": "Open more reactions", - "a11y/Open photo picker": "Open photo picker", - "a11y/Open poll creation": "Open poll creation", - "a11y/Open video recorder": "Open video recorder", - "a11y/Play Pause Button": "Play Pause Button", - "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", - "a11y/Save edited message": "Save edited message", - "a11y/Select image": "Select image", - "a11y/Select video": "Select video", - "a11y/Send voice recording": "Send voice recording", - "a11y/Share Button": "Share Button", - "a11y/Start voice recording": "Start voice recording", - "a11y/Stop voice recording": "Stop voice recording", - "a11y/Notifications": "सूचनाएं", - "a11y/Dismiss notification": "सूचना हटाएं", - "Attachment upload blocked due to {{reason}}": "{{reason}} के कारण अटैचमेंट अपलोड अवरुद्ध है", - "Attachment upload failed due to {{reason}}": "{{reason}} के कारण अटैचमेंट अपलोड विफल रहा", - "Command not available": "कमांड उपलब्ध नहीं है", - "Command not available while editing": "संपादन करते समय कमांड उपलब्ध नहीं है", - "Command not available while replying": "जवाब देते समय कमांड उपलब्ध नहीं है", - "Error reproducing the recording": "रिकॉर्डिंग चलाने में त्रुटि", - "Error uploading attachment": "अटैचमेंट अपलोड करने में त्रुटि", - "Failed to create the poll": "पोल बनाने में विफल", - "Failed to create the poll due to {{reason}}": "{{reason}} के कारण पोल बनाने में विफल", - "Failed to end the poll": "पोल समाप्त करने में विफल", - "Failed to end the poll due to {{reason}}": "{{reason}} के कारण पोल समाप्त करने में विफल", - "Failed to jump to the first unread message": "पहले अपठित संदेश पर जाने में विफल", - "Failed to retrieve location": "स्थान प्राप्त करने में विफल", - "Failed to share location": "स्थान साझा करने में विफल", - "File is required for upload attachment": "अटैचमेंट अपलोड करने के लिए फ़ाइल आवश्यक है", - "Local upload attachment missing local id": "स्थानीय अपलोड अटैचमेंट में स्थानीय आईडी नहीं है", - "Poll ended": "पोल समाप्त हो गया", - "Reached the vote limit. Remove an existing vote first.": "वोट सीमा पूरी हो गई है। पहले मौजूदा वोट हटाएं।", - "Thread has not been found": "थ्रेड नहीं मिला", - "Wait until all attachments have uploaded": "सभी अटैचमेंट अपलोड होने तक प्रतीक्षा करें", - "Cannot seek in the recording": "रिकॉर्डिंग में सीक नहीं किया जा सकता", - "Channel archived": "चैनल आर्काइव किया गया", - "Channel muted": "चैनल म्यूट किया गया", - "Channel pinned": "चैनल पिन किया गया", - "Channel unarchived": "चैनल अनआर्काइव किया गया", - "Channel unmuted": "चैनल अनम्यूट किया गया", - "Channel unpinned": "चैनल से पिन हटाया गया", - "Edit message request failed": "संदेश संपादित करने का अनुरोध विफल रहा", - "Failed to block user": "उपयोगकर्ता को ब्लॉक करने में विफल", - "Failed to leave channel": "चैनल छोड़ने में विफल", - "Failed to play the recording": "रिकॉर्डिंग चलाने में विफल", - "Failed to update channel archive status": "चैनल आर्काइव स्थिति अपडेट करने में विफल", - "Failed to update channel mute status": "चैनल म्यूट स्थिति अपडेट करने में विफल", - "Failed to update channel pinned status": "चैनल पिन स्थिति अपडेट करने में विफल", - "Left channel": "चैनल छोड़ दिया", - "Recording format is not supported and cannot be reproduced": "रिकॉर्डिंग फ़ॉर्मेट समर्थित नहीं है और इसे चलाया नहीं जा सकता", - "Send message request failed": "संदेश भेजने का अनुरोध विफल रहा", - "User blocked": "उपयोगकर्ता ब्लॉक किया गया", - "User unblocked": "उपयोगकर्ता अनब्लॉक किया गया", - "{{ user }} has been muted": "{{ user }} को म्यूट किया गया", - "{{ user }} has been unmuted": "{{ user }} को अनम्यूट किया गया", - "size limit": "आकार सीमा", - "unknown error": "अज्ञात त्रुटि", - "unsupported file type": "असमर्थित फ़ाइल प्रकार", - "a11y/Activate to view results": "परिणाम देखने के लिए सक्रिय करें", - "a11y/End vote": "मतदान समाप्त करें", - "a11y/Show all options": "सभी विकल्प दिखाएं", - "a11y/Vote on {{option}}": "{{option}} पर वोट करें", - "a11y/Double tap and hold to activate contextual menu": "संदर्भ मेनू सक्रिय करने के लिए दो बार टैप करें और होल्ड करें", - "a11y/Swipe right to go through different actions": "विभिन्न क्रियाओं के बीच जाने के लिए दाएं स्वाइप करें", - "a11y/Close": "Close", - "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss." + "🏙 Attachment...": "🏙 अटैचमेंट..." } diff --git a/package/src/i18n/it.json b/package/src/i18n/it.json index 4452fb0009..97f896d306 100644 --- a/package/src/i18n/it.json +++ b/package/src/i18n/it.json @@ -1,4 +1,7 @@ { + "+{{count}} More Options_many": "+{{count}} altre opzioni", + "+{{count}} More Options_one": "+{{count}} altra opzione", + "+{{count}} More Options_other": "+{{count}} altre opzioni", "+{{count}}_many": "+{{count}}", "+{{count}}_one": "+{{count}}", "+{{count}}_other": "+{{count}}", @@ -11,33 +14,60 @@ "Allow access to your Gallery": "Consenti l'accesso alla tua galleria", "Allow camera access in device settings": "Consenti l'accesso alla fotocamera nelle impostazioni del dispositivo", "Also send to channel": "Invia anche al canale", + "Also sent in channel": "También enviado en el canal", "Anonymous": "Anonimo", "Anonymous voting": "Sondaggio anonimo", + "Archive Chat": "Archivia chat", + "Archive Group": "Archivia gruppo", + "Are you sure you want to delete this chat? This can't be undone.": "Sei sicuro di voler eliminare questa chat? Questa azione non può essere annullata.", + "Are you sure you want to delete this group? This can't be undone.": "Sei sicuro di voler eliminare questo gruppo? Questa azione non può essere annullata.", "Are you sure you want to permanently delete this message?": "Sei sicuro di voler eliminare definitivamente questo messaggio?", "Are you sure?": "Sei sicuro?", "Ask a question": "Fai una domanda", + "Attachment upload blocked due to {{reason}}": "Caricamento dell'allegato bloccato a causa di {{reason}}", + "Attachment upload failed due to {{reason}}": "Caricamento dell'allegato non riuscito a causa di {{reason}}", "Audio": "Audio", "Ban User": "Blocca Utente", "Block User": "Blocca Utente", "Cancel": "Annulla", "Cannot Flag Message": "Impossibile Segnalare Messaggio", + "Cannot seek in the recording": "Impossibile spostarsi nella registrazione", + "Change in Settings": "Cambia in Impostazioni", + "Channel archived": "Canale archiviato", + "Channel muted": "Canale silenziato", + "Channel pinned": "Canale fissato", + "Channel unarchived": "Canale rimosso dall'archivio", + "Channel unmuted": "Canale non più silenziato", + "Channel unpinned": "Canale non più fissato", + "Choose between 2–10 options": "Scegli tra 2 e 10 opzioni", + "Command not available": "Comando non disponibile", + "Command not available while editing": "Comando non disponibile durante la modifica", + "Command not available while replying": "Comando non disponibile durante la risposta", "Consider how your comment might make others feel and be sure to follow our Community Guidelines": "Considera come il tuo commento potrebbe far sentire gli altri e assicurati di seguire le nostre Linee guida della community", "Copy Message": "Copia Messaggio", + "Couldn't load new threads. Tap to retry": "Impossibile caricare nuovi thread. Tocca per riprovare", "Create Poll": "Crea sondaggio", + "Create a poll and let everyone vote": "Crea un sondaggio e lascia che tutti votino", "Delete": "Elimina", + "Delete Chat": "Elimina chat", + "Delete Group": "Elimina gruppo", "Delete Message": "Cancella il Messaggio", + "Delete chat": "Elimina chat", "Delete for me": "Elimina per me", + "Delete group": "Elimina gruppo", "Device camera is used to take photos or videos.": "La fotocamera del dispositivo viene utilizzata per scattare foto o video.", "Device gallery permissions is used to take photos or videos.": "Le autorizzazioni della galleria del dispositivo vengono utilizzate per scattare foto o video.", "Do you want to send a copy of this message to a moderator for further investigation?": "Vuoi inviare una copia di questo messaggio a un moderatore per ulteriori indagini?", + "Draft": "Borrador", "Due since {{ dueSince }}": "Scadenza dal {{ dueSince }}", "Edit Message": "Modifica Messaggio", + "Edit message request failed": "Richiesta di modifica del messaggio non riuscita", "Edited": "Modificato", "Editing Message": "Modificando il Messaggio", "Emoji matching": "Abbinamento emoji", "Empty message...": "Message vuoto...", - "Enter a new option": "Inserisci una nuova opzione", "End Vote": "Termina votazione", + "Enter a new option": "Inserisci una nuova opzione", "Error adding flag": "Errore durante la segnalazione del messaggio", "Error deleting message": "Errore durante l'eliminazione del messaggio", "Error fetching reactions": "Errore durante il recupero delle reazioni", @@ -48,8 +78,24 @@ "Error muting a user ...": "Errore durante il silenziamento di un utente ...", "Error pinning message": "Errore durante il fissaggio del messaggio", "Error removing message pin": "Errore durante la rimozione del pin dal messaggio", + "Error reproducing the recording": "Errore durante la riproduzione della registrazione", "Error unmuting a user ...": "Errore durante la rimozione del silenziamento di un utente ...", + "Error uploading attachment": "Errore durante il caricamento dell'allegato", "Error while loading, please reload/refresh": "Errore durante il caricamento, per favore ricarica la pagina", + "Failed to block user": "Impossibile bloccare l'utente", + "Failed to create the poll": "Impossibile creare il sondaggio", + "Failed to create the poll due to {{reason}}": "Impossibile creare il sondaggio a causa di {{reason}}", + "Failed to end the poll": "Impossibile terminare il sondaggio", + "Failed to end the poll due to {{reason}}": "Impossibile terminare il sondaggio a causa di {{reason}}", + "Failed to jump to the first unread message": "Impossibile passare al primo messaggio non letto", + "Failed to leave channel": "Impossibile lasciare il canale", + "Failed to play the recording": "Impossibile riprodurre la registrazione", + "Failed to retrieve location": "Impossibile recuperare la posizione", + "Failed to share location": "Impossibile condividere la posizione", + "Failed to update channel archive status": "Impossibile aggiornare lo stato di archiviazione del canale", + "Failed to update channel mute status": "Impossibile aggiornare lo stato di silenziamento del canale", + "Failed to update channel pinned status": "Impossibile aggiornare lo stato di fissaggio del canale", + "File is required for upload attachment": "È necessario un file per caricare un allegato", "File is too large: {{ size }}, maximum upload size is {{ limit }}": "Il file è troppo grande: {{ size }}, la dimensione massima di caricamento è {{ limit }}", "File too large": "File troppo grande", "File type not supported": "Tipo di file non supportato", @@ -63,41 +109,52 @@ "Hold to start recording.": "Tieni premuto per avviare la registrazione.", "How about sending your first message to a friend?": "Che ne dici di inviare il tuo primo messaggio ad un amico?", "Instant Commands": "Comandi Istantanei", + "Leave Chat": "Lascia chat", + "Leave Group": "Lascia gruppo", + "Left channel": "Canale lasciato", "Let others add options": "Permetti ad altri di aggiungere opzioni", "Let's start chatting!": "Iniziamo a chattare!", + "Limit votes per person": "Limita i voti per persona", "Links are disabled": "I link sono disabilitati", "Live Location": "Posizione in tempo reale", "Loading channels...": "Caricamento canali in corso...", "Loading messages...": "Caricamento messaggi...", "Loading threads...": "Caricamento dei thread...", "Loading...": "Caricamento...", + "Local upload attachment missing local id": "ID locale mancante per l'allegato locale da caricare", "Location": "Posizione", "Mark as Unread": "Segna come non letto", "Maximum number of files reached": "Numero massimo di file raggiunto", "Message Reactions": "Reazioni ai Messaggi", "Message deleted": "Messaggio cancellato", - "Message has been successfully flagged": "Messaggio segnalato con successo", + "Message failed to send": "Il messaggio non è stato inviato", "Message flagged": "Messaggio contrassegnato", + "Message has been successfully flagged": "Messaggio segnalato con successo", "Message marked as unread": "Messaggio contrassegnato come non letto", "Message pinned": "Messaggio fissato", "Message unpinned": "Messaggio non più fissato", "Multiple votes": "Voti multipli", - "Network error": "Errore di rete", - "Select more than one option": "Seleziona più di un'opzione", - "Limit votes per person": "Limita i voti per persona", - "Choose between 2–10 options": "Scegli tra 2 e 10 opzioni", + "Mute Group": "Disattiva audio gruppo", "Mute User": "Utente Muto", + "Network error": "Errore di rete", "No chats here yet…": "Non ci sono ancora chat qui...", + "No conversations yet": "Ancora nessuna conversazione", "No items exist": "Nessun elemento", + "No messages yet": "Ancora nessun messaggio", "No threads here yet": "Nessun thread qui ancora", "Not supported": "non supportato", "Nothing yet...": "Ancora niente...", + "Notify all {{ role }} members": "Notify all {{ role }} members", + "Offline": "Offline", "Ok": "Ok", + "Online": "Online", "Only visible to you": "Visibile solo a te", + "Open Camera": "Apri fotocamera", + "Open Files": "Apri file", "Open Settings": "Apri Impostazioni", "Option": "Opzione", - "Option {{count}}": "Opzione {{count}}", "Option already exists": "L'opzione esiste già", + "Option {{count}}": "Opzione {{count}}", "Options": "Opzioni", "Photo": "Foto", "Photos and Videos": "Foto e Video", @@ -109,16 +166,26 @@ "Poll Comments": "Commenti sul sondaggio", "Poll Options": "Opzioni del sondaggio", "Poll Results": "Risultati del sondaggio", + "Poll ended": "Sondaggio terminato", + "Poll has ended": "Votazione terminata", "Questions": "Domande", + "Reached the vote limit. Remove an existing vote first.": "Limite di voti raggiunto. Rimuovi prima un voto esistente.", "Reconnecting...": "Ricollegarsi...", + "Recording format is not supported and cannot be reproduced": "Il formato della registrazione non è supportato e non può essere riprodotto", + "Reminder overdue": "Recordatorio vencido", + "Reminder set": "Recordatorio establecido", + "Replied to a thread": "Respondido a un hilo", "Reply": "Rispondi", - "Reply to {{name}}": "Rispondi a {{name}}", "Reply to Message": "Rispondi al messaggio", + "Reply to a message to start a thread": "Rispondi a un messaggio per iniziare un thread", + "Reply to {{name}}": "Rispondi a {{name}}", "Resend": "Invia di nuovo", "Retry Upload": "Riprova caricamento", "SEND": "INVIA", "Search": "Cerca", "Select More Photos": "Seleziona Altre foto", + "Select files to share": "Seleziona file da condividere", + "Select more than one option": "Seleziona più di un'opzione", "Select one": "Seleziona una", "Select one or more": "Seleziona una o più", "Select up to {{count}}_many": "Seleziona fino a {{count}}", @@ -126,26 +193,39 @@ "Select up to {{count}}_other": "Seleziona fino a {{count}}", "Send Anyway": "Invia comunque", "Send a message": "Mandare un messaggio", + "Send message request failed": "Richiesta di invio del messaggio non riuscita", "Sending links is not allowed in this conversation": "L'invio di link non è consentito in questa conversazione", "Show All": "Mostra tutto", "Slide to Cancel": "Scorri per annullare", "Slow mode ON": "Slowmode attiva", "Slow mode, wait {{seconds}}s...": "Slowmode, attendi {{seconds}}s...", "Suggest an option": "Suggerisci un'opzione", + "Take a photo and share": "Scatta una foto e condividila", + "Take a video and share": "Registra un video e condividilo", + "Tap to remove": "Tocca per rimuovere", "The message has been reported to a moderator.": "Il messaggio è stato segnalato a un moderatore.", "The source message was deleted": "Il messaggio originale è stato eliminato", "Thinking...": "Pensando...", "This reply was deleted": "Questa risposta è stata eliminata", "Thread Reply": "Rispondi alla Discussione", + "Thread has not been found": "Thread non trovato", "Type a number from 2 to 10": "Digita un numero da 2 a 10", + "Typing": "Scrivendo", + "Unarchive Chat": "Rimuovi chat dall'archivio", + "Unarchive Group": "Rimuovi gruppo dall'archivio", "Unban User": "Sblocca Utente", "Unblock User": "Sblocca utente", "Unknown User": "Utente sconosciuto", + "Unmute Group": "Riattiva audio gruppo", "Unmute User": "Riattiva utente", "Unpin from Conversation": "Rimuovi dagli elementi in evidenza", "Unread Messages": "Messaggi non letti", + "Unsupported Attachment": "Allegato non supportato", "Update your comment": "Aggiorna il tuo commento", + "User blocked": "Utente bloccato", + "User unblocked": "Utente sbloccato", "Video": "Video", + "View": "Ver", "View Results": "Visualizza i risultati", "View {{count}} comments_many": "Vedi {{count}} commenti", "View {{count}} comments_one": "Vedi {{count}} commento", @@ -153,13 +233,90 @@ "Voice message": "Messaggio vocale", "Voice message ({{duration}})": "Messaggio vocale ({{duration}})", "Voice message deleted": "Messaggio vocale eliminato", - "Your comment": "Il tuo commento", + "Wait until all attachments have uploaded": "Attendi il caricamento di tutti gli allegati", "You": "Tu", "You can't send messages in this channel": "Non puoi inviare messaggi in questo canale", + "You have not granted access to the photo library.": "Non hai concesso l'accesso alla libreria foto.", + "You have not granted access to your camera": "Non hai concesso l’accesso alla fotocamera", + "You voted: {{ option }}": "Hai votato: {{ option }}", + "Your comment": "Il tuo commento", + "a11y/AI is generating": "L'IA sta generando", + "a11y/AI is thinking": "L'IA sta pensando", + "a11y/Activate to view results": "Attiva per vedere i risultati", + "a11y/Add attachment": "Add attachment", + "a11y/Avatar of {{name}}": "Avatar di {{name}}", + "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.", + "a11y/Close": "Close", + "a11y/Close attachments": "Close attachments", + "a11y/Close poll": "Close poll", + "a11y/Close poll creation": "Close poll creation", + "a11y/Command suggestions available": "Command suggestions available", + "a11y/Connected": "Connesso", + "a11y/Create poll": "Create poll", + "a11y/Decrease maximum votes": "Decrease maximum votes", + "a11y/Delete voice recording": "Delete voice recording", + "a11y/Delivered": "Consegnato", + "a11y/Deselect image": "Deselect image", + "a11y/Deselect video": "Deselect video", + "a11y/Dismiss notification": "Chiudi notifica", + "a11y/Dismiss unread messages": "Dismiss unread messages", + "a11y/Double tap and hold to activate contextual menu": "Tocca due volte e tieni premuto per attivare il menu contestuale", + "a11y/Emoji suggestions available": "Emoji suggestions available", + "a11y/End vote": "Termina sondaggio", + "a11y/Grid Icon": "Grid Icon", + "a11y/Hide Overlay": "Hide Overlay", + "a11y/Increase maximum votes": "Increase maximum votes", + "a11y/Loading": "Caricamento", + "a11y/Loading failed": "Caricamento non riuscito", + "a11y/Mention suggestions available": "Mention suggestions available", + "a11y/Message actions": "Azioni del messaggio", + "a11y/New message from {{user}}": "Nuovo messaggio da {{user}}", + "a11y/Notifications": "Notifiche", + "a11y/Offline": "Offline", + "a11y/Open camera": "Open camera", + "a11y/Open commands": "Open commands", + "a11y/Open file picker": "Open file picker", + "a11y/Open message actions": "Apri azioni del messaggio", + "a11y/Open more reactions": "Open more reactions", + "a11y/Open photo picker": "Open photo picker", + "a11y/Open poll creation": "Open poll creation", + "a11y/Open video recorder": "Open video recorder", + "a11y/Play Pause Button": "Play Pause Button", + "a11y/Reaction {{emoji}} by {{count}} users": "Reazione {{emoji}} di {{count}} utenti", + "a11y/Read": "Letto", + "a11y/Reconnecting": "Riconnessione", + "a11y/Remove attachment": "Remove Attachment", + "a11y/Remove edit": "Rimuovi modifica", + "a11y/Remove reply": "Rimuovi risposta", + "a11y/Reply to {{user}}": "Rispondi a {{user}}", + "a11y/Save edited message": "Save edited message", + "a11y/Scroll to bottom": "Vai in fondo", + "a11y/Scroll to bottom, {{count}} new messages": "Vai in fondo, {{count}} nuovi messaggi", + "a11y/Scroll to latest": "Vai al messaggio più recente", + "a11y/Scroll to latest, {{count}} unread": "Vai al messaggio più recente, {{count}} non letti", + "a11y/Select image": "Select image", + "a11y/Select video": "Select video", + "a11y/Send message": "Invia messaggio", + "a11y/Send voice recording": "Send voice recording", + "a11y/Sending": "Invio in corso", + "a11y/Sent": "Inviato", + "a11y/Share Button": "Share Button", + "a11y/Show all options": "Mostra tutte le opzioni", + "a11y/Start voice recording": "Start voice recording", + "a11y/Stop voice recording": "Stop voice recording", + "a11y/Swipe right to go through different actions": "Scorri a destra per passare in rassegna le diverse azioni", + "a11y/Voice message recording. Hold to record.": "Registrazione del messaggio vocale. Tieni premuto per registrare.", + "a11y/Vote on {{option}}": "Vota per {{option}}", + "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", + "a11y/{{count}} new messages": "{{count}} nuovi messaggi", + "and {{ count }} others": "e {{ count }} altri", "duration/Location end at": "{{ milliseconds | durationFormatter(withSuffix: false) }}", "duration/Message reminder": "{{ milliseconds | durationFormatter(withSuffix: true) }}", "duration/Remind Me": "{{ milliseconds | durationFormatter(withSuffix: true) }}", + "mention/Channel Description": "Notify everyone in this channel", + "mention/Here Description": "Notify every online member in this channel", "replied to": "ha risposto a", + "size limit": "limite di dimensione", "timestamp/ChannelPreviewStatus": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[Ieri]\",\"lastWeek\":\"dddd\",\"nextDay\":\"[Domani]\",\"nextWeek\":\"dddd [alle] LT\",\"sameDay\":\"LT\",\"sameElse\":\"L\"}) }}", "timestamp/ImageGalleryHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/InlineDateSeparator": "{{ timestamp | timestampFormatter(calendar: true) }}", @@ -170,17 +327,16 @@ "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/StickyHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/ThreadListItem": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[Ieri]\",\"lastWeek\":\"dddd\",\"nextDay\":\"[Domani]\",\"nextWeek\":\"dddd [alle] LT\",\"sameDay\":\"LT\",\"sameElse\":\"L\"}) }}", + "unknown error": "errore sconosciuto", + "unsupported file type": "tipo di file non supportato", "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} e altri {{ nonSelfUserLength }} stanno scrivendo", + "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }} e {{ secondUser }} stanno scrivendo", "{{ index }} of {{ photoLength }}": "{{ index }} di {{ photoLength }}", + "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }} persone stanno scrivendo", "{{ replyCount }} Replies": "{{ replyCount }} Risposte", + "{{ user }} has been muted": "{{ user }} è stato silenziato", + "{{ user }} has been unmuted": "{{ user }} non è più silenziato", "{{ user }} is typing": "{{ user }} sta scrivendo", - "You voted: {{ option }}": "Hai votato: {{ option }}", - "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }} e {{ secondUser }} stanno scrivendo", - "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }} persone stanno scrivendo", - "Typing": "Scrivendo", - "No messages yet": "Ancora nessun messaggio", - "Message failed to send": "Il messaggio non è stato inviato", - "and {{ count }} others": "e {{ count }} altri", "{{ user }} voted: {{ option }}": "{{ user }} ha votato: {{ option }}", "{{count}} Audios_many": "{{count}} audio", "{{count}} Audios_one": "{{count}} audio", @@ -191,173 +347,23 @@ "{{count}} Photos_many": "{{count}} foto", "{{count}} Photos_one": "{{count}} foto", "{{count}} Photos_other": "{{count}} foto", - "{{count}} Voice messages_many": "{{count}} messaggi vocali", - "{{count}} Voice messages_one": "{{count}} messaggio vocale", - "{{count}} Voice messages_other": "{{count}} messaggi vocali", + "{{count}} Reactions_many": "{{count}} reazioni", + "{{count}} Reactions_one": "{{count}} reazione", + "{{count}} Reactions_other": "{{count}} reazioni", "{{count}} Videos_many": "{{count}} video", "{{count}} Videos_one": "{{count}} video", "{{count}} Videos_other": "{{count}} video", + "{{count}} Voice messages_many": "{{count}} messaggi vocali", + "{{count}} Voice messages_one": "{{count}} messaggio vocale", + "{{count}} Voice messages_other": "{{count}} messaggi vocali", + "{{count}} new messages": "{{count}} nuovi messaggi", + "{{count}} new threads": "{{count}} nuovi thread", + "{{count}} unread": "{{count}} non letti", "{{count}} votes_many": "{{count}} voti", "{{count}} votes_one": "{{count}} voto", "{{count}} votes_other": "{{count}} voti", - "🏙 Attachment...": "🏙 Allegato...", - "You have not granted access to the photo library.": "Non hai concesso l'accesso alla libreria foto.", - "Change in Settings": "Cambia in Impostazioni", - "Create a poll and let everyone vote": "Crea un sondaggio e lascia che tutti votino", - "Open Camera": "Apri fotocamera", - "Open Files": "Apri file", - "Select files to share": "Seleziona file da condividere", - "Take a photo and share": "Scatta una foto e condividila", - "Take a video and share": "Registra un video e condividilo", - "You have not granted access to your camera": "Non hai concesso l’accesso alla fotocamera", - "{{count}} Reactions_many": "{{count}} reazioni", - "{{count}} Reactions_one": "{{count}} reazione", - "{{count}} Reactions_other": "{{count}} reazioni", - "Tap to remove": "Tocca per rimuovere", - "Draft": "Borrador", - "Reminder set": "Recordatorio establecido", - "Also sent in channel": "También enviado en el canal", - "Replied to a thread": "Respondido a un hilo", - "View": "Ver", - "Reminder overdue": "Recordatorio vencido", - "Poll has ended": "Votazione terminata", - "Reply to a message to start a thread": "Rispondi a un messaggio per iniziare un thread", - "Couldn't load new threads. Tap to retry": "Impossibile caricare nuovi thread. Tocca per riprovare", - "{{count}} new threads": "{{count}} nuovi thread", - "No conversations yet": "Ancora nessuna conversazione", - "Are you sure you want to delete this group? This can't be undone.": "Sei sicuro di voler eliminare questo gruppo? Questa azione non può essere annullata.", - "Are you sure you want to delete this chat? This can't be undone.": "Sei sicuro di voler eliminare questa chat? Questa azione non può essere annullata.", - "Delete chat": "Elimina chat", - "Delete group": "Elimina gruppo", - "Archive Chat": "Archivia chat", - "Archive Group": "Archivia gruppo", - "Delete Chat": "Elimina chat", - "Delete Group": "Elimina gruppo", - "Leave Chat": "Lascia chat", - "Leave Group": "Lascia gruppo", - "Mute Group": "Disattiva audio gruppo", - "Offline": "Offline", - "Online": "Online", - "Unarchive Chat": "Rimuovi chat dall'archivio", - "Unarchive Group": "Rimuovi gruppo dall'archivio", - "Unmute Group": "Riattiva audio gruppo", + "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}} membri, {{onlineCount}} online", "{{memberCount}} members, {{onlineCount}} online_one": "{{memberCount}} membro, {{onlineCount}} online", "{{memberCount}} members, {{onlineCount}} online_other": "{{memberCount}} membri, {{onlineCount}} online", - "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}} membri, {{onlineCount}} online", - "{{count}} unread": "{{count}} non letti", - "{{count}} new messages": "{{count}} nuovi messaggi", - "Unsupported Attachment": "Allegato non supportato", - "+{{count}} More Options_one": "+{{count}} altra opzione", - "+{{count}} More Options_other": "+{{count}} altre opzioni", - "+{{count}} More Options_many": "+{{count}} altre opzioni", - "a11y/AI is generating": "L'IA sta generando", - "a11y/AI is thinking": "L'IA sta pensando", - "a11y/Avatar of {{name}}": "Avatar di {{name}}", - "a11y/Connected": "Connesso", - "a11y/Delivered": "Consegnato", - "a11y/Loading": "Caricamento", - "a11y/Loading failed": "Caricamento non riuscito", - "a11y/Message actions": "Azioni del messaggio", - "a11y/New message from {{user}}": "Nuovo messaggio da {{user}}", - "a11y/Offline": "Offline", - "a11y/Open message actions": "Apri azioni del messaggio", - "a11y/Reaction {{emoji}} by {{count}} users": "Reazione {{emoji}} di {{count}} utenti", - "a11y/Read": "Letto", - "a11y/Reconnecting": "Riconnessione", - "a11y/Reply to {{user}}": "Rispondi a {{user}}", - "a11y/Remove edit": "Rimuovi modifica", - "a11y/Remove reply": "Rimuovi risposta", - "a11y/Scroll to bottom": "Vai in fondo", - "a11y/Scroll to bottom, {{count}} new messages": "Vai in fondo, {{count}} nuovi messaggi", - "a11y/Scroll to latest": "Vai al messaggio più recente", - "a11y/Scroll to latest, {{count}} unread": "Vai al messaggio più recente, {{count}} non letti", - "a11y/Send message": "Invia messaggio", - "a11y/Sending": "Invio in corso", - "a11y/Sent": "Inviato", - "a11y/Voice message recording. Hold to record.": "Registrazione del messaggio vocale. Tieni premuto per registrare.", - "a11y/{{count}} new messages": "{{count}} nuovi messaggi", - "a11y/Add attachment": "Add attachment", - "a11y/Close attachments": "Close attachments", - "a11y/Remove attachment": "Remove Attachment", - "a11y/Close poll": "Close poll", - "a11y/Close poll creation": "Close poll creation", - "a11y/Create poll": "Create poll", - "a11y/Decrease maximum votes": "Decrease maximum votes", - "a11y/Delete voice recording": "Delete voice recording", - "a11y/Deselect image": "Deselect image", - "a11y/Deselect video": "Deselect video", - "a11y/Dismiss unread messages": "Dismiss unread messages", - "a11y/Grid Icon": "Grid Icon", - "a11y/Hide Overlay": "Hide Overlay", - "a11y/Increase maximum votes": "Increase maximum votes", - "a11y/Open camera": "Open camera", - "a11y/Open commands": "Open commands", - "a11y/Open file picker": "Open file picker", - "a11y/Open more reactions": "Open more reactions", - "a11y/Open photo picker": "Open photo picker", - "a11y/Open poll creation": "Open poll creation", - "a11y/Open video recorder": "Open video recorder", - "a11y/Play Pause Button": "Play Pause Button", - "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", - "a11y/Save edited message": "Save edited message", - "a11y/Select image": "Select image", - "a11y/Select video": "Select video", - "a11y/Send voice recording": "Send voice recording", - "a11y/Share Button": "Share Button", - "a11y/Start voice recording": "Start voice recording", - "a11y/Stop voice recording": "Stop voice recording", - "a11y/Notifications": "Notifiche", - "a11y/Dismiss notification": "Chiudi notifica", - "Attachment upload blocked due to {{reason}}": "Caricamento dell'allegato bloccato a causa di {{reason}}", - "Attachment upload failed due to {{reason}}": "Caricamento dell'allegato non riuscito a causa di {{reason}}", - "Command not available": "Comando non disponibile", - "Command not available while editing": "Comando non disponibile durante la modifica", - "Command not available while replying": "Comando non disponibile durante la risposta", - "Error reproducing the recording": "Errore durante la riproduzione della registrazione", - "Error uploading attachment": "Errore durante il caricamento dell'allegato", - "Failed to create the poll": "Impossibile creare il sondaggio", - "Failed to create the poll due to {{reason}}": "Impossibile creare il sondaggio a causa di {{reason}}", - "Failed to end the poll": "Impossibile terminare il sondaggio", - "Failed to end the poll due to {{reason}}": "Impossibile terminare il sondaggio a causa di {{reason}}", - "Failed to jump to the first unread message": "Impossibile passare al primo messaggio non letto", - "Failed to retrieve location": "Impossibile recuperare la posizione", - "Failed to share location": "Impossibile condividere la posizione", - "File is required for upload attachment": "È necessario un file per caricare un allegato", - "Local upload attachment missing local id": "ID locale mancante per l'allegato locale da caricare", - "Poll ended": "Sondaggio terminato", - "Reached the vote limit. Remove an existing vote first.": "Limite di voti raggiunto. Rimuovi prima un voto esistente.", - "Thread has not been found": "Thread non trovato", - "Wait until all attachments have uploaded": "Attendi il caricamento di tutti gli allegati", - "Cannot seek in the recording": "Impossibile spostarsi nella registrazione", - "Channel archived": "Canale archiviato", - "Channel muted": "Canale silenziato", - "Channel pinned": "Canale fissato", - "Channel unarchived": "Canale rimosso dall'archivio", - "Channel unmuted": "Canale non più silenziato", - "Channel unpinned": "Canale non più fissato", - "Edit message request failed": "Richiesta di modifica del messaggio non riuscita", - "Failed to block user": "Impossibile bloccare l'utente", - "Failed to leave channel": "Impossibile lasciare il canale", - "Failed to play the recording": "Impossibile riprodurre la registrazione", - "Failed to update channel archive status": "Impossibile aggiornare lo stato di archiviazione del canale", - "Failed to update channel mute status": "Impossibile aggiornare lo stato di silenziamento del canale", - "Failed to update channel pinned status": "Impossibile aggiornare lo stato di fissaggio del canale", - "Left channel": "Canale lasciato", - "Recording format is not supported and cannot be reproduced": "Il formato della registrazione non è supportato e non può essere riprodotto", - "Send message request failed": "Richiesta di invio del messaggio non riuscita", - "User blocked": "Utente bloccato", - "User unblocked": "Utente sbloccato", - "{{ user }} has been muted": "{{ user }} è stato silenziato", - "{{ user }} has been unmuted": "{{ user }} non è più silenziato", - "size limit": "limite di dimensione", - "unknown error": "errore sconosciuto", - "unsupported file type": "tipo di file non supportato", - "a11y/Activate to view results": "Attiva per vedere i risultati", - "a11y/End vote": "Termina sondaggio", - "a11y/Show all options": "Mostra tutte le opzioni", - "a11y/Vote on {{option}}": "Vota per {{option}}", - "a11y/Double tap and hold to activate contextual menu": "Tocca due volte e tieni premuto per attivare il menu contestuale", - "a11y/Swipe right to go through different actions": "Scorri a destra per passare in rassegna le diverse azioni", - "a11y/Close": "Close", - "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss." + "🏙 Attachment...": "🏙 Allegato..." } diff --git a/package/src/i18n/ja.json b/package/src/i18n/ja.json index 73f05ecc4a..02868b5b63 100644 --- a/package/src/i18n/ja.json +++ b/package/src/i18n/ja.json @@ -1,4 +1,7 @@ { + "+{{count}} More Options_many": "+{{count}} 件の追加オプション", + "+{{count}} More Options_one": "+{{count}} 件の追加オプション", + "+{{count}} More Options_other": "+{{count}} 件の追加オプション", "+{{count}}_many": "+{{count}}", "+{{count}}_one": "+{{count}}", "+{{count}}_other": "+{{count}}", @@ -11,33 +14,60 @@ "Allow access to your Gallery": "ギャラリーへのアクセスを許可する", "Allow camera access in device settings": "デバイス設定でカメラへのアクセスを許可する", "Also send to channel": "チャンネルにも送信", + "Also sent in channel": "チャンネルにも送信", "Anonymous": "匿名", "Anonymous voting": "匿名アンケート", + "Archive Chat": "チャットをアーカイブ", + "Archive Group": "グループをアーカイブ", + "Are you sure you want to delete this chat? This can't be undone.": "このチャットを削除しますか?この操作は元に戻せません。", + "Are you sure you want to delete this group? This can't be undone.": "このグループを削除しますか?この操作は元に戻せません。", "Are you sure you want to permanently delete this message?": "このメッセージを完全に削除してもよろしいですか?", "Are you sure?": "本当によろしいですか?", "Ask a question": "質問をする", + "Attachment upload blocked due to {{reason}}": "{{reason}} のため添付ファイルのアップロードがブロックされました", + "Attachment upload failed due to {{reason}}": "{{reason}} のため添付ファイルのアップロードに失敗しました", "Audio": "音声", "Ban User": "ユーザーを禁止する", "Block User": "ユーザをブロックする", "Cancel": "キャンセル", "Cannot Flag Message": "メッセージをフラグできません", + "Cannot seek in the recording": "録音内をシークできません", + "Change in Settings": "設定で変更", + "Channel archived": "チャンネルをアーカイブしました", + "Channel muted": "チャンネルをミュートしました", + "Channel pinned": "チャンネルをピン留めしました", + "Channel unarchived": "チャンネルのアーカイブを解除しました", + "Channel unmuted": "チャンネルのミュートを解除しました", + "Channel unpinned": "チャンネルのピン留めを解除しました", + "Choose between 2–10 options": "2~10個のオプションから選択", + "Command not available": "コマンドは利用できません", + "Command not available while editing": "編集中はコマンドを利用できません", + "Command not available while replying": "返信中はコマンドを利用できません", "Consider how your comment might make others feel and be sure to follow our Community Guidelines": "あなたのコメントが他の人にどのように影響するか考え、必ずコミュニティガイドラインに従ってください", "Copy Message": "メッセージのコピー", + "Couldn't load new threads. Tap to retry": "新しいスレッドを読み込めませんでした。タップして再試行", "Create Poll": "アンケートを作成", + "Create a poll and let everyone vote": "投票を作成してみんなに投票してもらう", "Delete": "消去", + "Delete Chat": "チャットを削除", + "Delete Group": "グループを削除", "Delete Message": "メッセージを削除", + "Delete chat": "チャットを削除", "Delete for me": "自分で削除", + "Delete group": "グループを削除", "Device camera is used to take photos or videos.": "デバイスのカメラは写真やビデオの撮影に使用されます。", "Device gallery permissions is used to take photos or videos.": "デバイスギャラリーの権限は写真やビデオを撮るために使用されます。", "Do you want to send a copy of this message to a moderator for further investigation?": "このメッセージのコピーをモデレーターに送信して、さらに調査しますか?", + "Draft": "下書き", "Due since {{ dueSince }}": "期限は {{ dueSince }} からです", "Edit Message": "メッセージを編集", + "Edit message request failed": "メッセージの編集リクエストに失敗しました", "Edited": "編集済み", "Editing Message": "メッセージを編集中", "Emoji matching": "絵文字マッチング", "Empty message...": "空のメッセージ...", - "Enter a new option": "新しい選択肢を入力", "End Vote": "投票を終了", + "Enter a new option": "新しい選択肢を入力", "Error adding flag": "メッセージのフラグ付け中にエラーが発生しました", "Error deleting message": "メッセージの削除中にエラーが発生しました", "Error fetching reactions": "リアクションの取得中にエラーが発生しました", @@ -48,8 +78,24 @@ "Error muting a user ...": "ユーザーのミュート中にエラーが発生しました ...", "Error pinning message": "メッセージのピン留め中にエラーが発生しました", "Error removing message pin": "メッセージのピン留め解除中にエラーが発生しました", + "Error reproducing the recording": "録音の再生中にエラーが発生しました", "Error unmuting a user ...": "ユーザーのミュート解除中にエラーが発生しました ...", + "Error uploading attachment": "添付ファイルのアップロード中にエラーが発生しました", "Error while loading, please reload/refresh": "ロード中にエラーが発生しました。更新してください", + "Failed to block user": "ユーザーのブロックに失敗しました", + "Failed to create the poll": "投票を作成できませんでした", + "Failed to create the poll due to {{reason}}": "{{reason}} のため投票を作成できませんでした", + "Failed to end the poll": "投票を終了できませんでした", + "Failed to end the poll due to {{reason}}": "{{reason}} のため投票を終了できませんでした", + "Failed to jump to the first unread message": "最初の未読メッセージへ移動できませんでした", + "Failed to leave channel": "チャンネルの退出に失敗しました", + "Failed to play the recording": "録音の再生に失敗しました", + "Failed to retrieve location": "位置情報を取得できませんでした", + "Failed to share location": "位置情報を共有できませんでした", + "Failed to update channel archive status": "チャンネルのアーカイブ状態の更新に失敗しました", + "Failed to update channel mute status": "チャンネルのミュート状態の更新に失敗しました", + "Failed to update channel pinned status": "チャンネルのピン留め状態の更新に失敗しました", + "File is required for upload attachment": "添付ファイルをアップロードするにはファイルが必要です", "File is too large: {{ size }}, maximum upload size is {{ limit }}": "ファイルが大きすぎます:{{ size }}、最大アップロードサイズは{{ limit }}です", "File too large": "ファイルが大きすぎます", "File type not supported": "サポートされていないファイルです", @@ -63,41 +109,52 @@ "Hold to start recording.": "録音を開始するには押し続けてください。", "How about sending your first message to a friend?": "初めてのメッセージを友達に送ってみてはいかがでしょうか?", "Instant Commands": "インスタントコマンド", + "Leave Chat": "チャットを退出", + "Leave Group": "グループを退出", + "Left channel": "チャンネルから退出しました", "Let others add options": "他の人が選択肢を追加できるようにする", "Let's start chatting!": "チャットを始めましょう!", + "Limit votes per person": "1人あたりの投票数を制限", "Links are disabled": "リンク機能が無効になっています", "Live Location": "ライブ位置情報", "Loading channels...": "チャネルを読み込み中。。。", "Loading messages...": "メッセージを読み込み中。。。", "Loading threads...": "スレッドを読み込み中...", "Loading...": "読み込み中。。。", + "Local upload attachment missing local id": "ローカルアップロード添付ファイルにローカル ID がありません", "Location": "位置情報", "Mark as Unread": "未読としてマーク", "Maximum number of files reached": "ファイルの最大数に達しました", "Message Reactions": "メッセージのリアクション", "Message deleted": "メッセージが削除されました", - "Message has been successfully flagged": "メッセージが正常にフラグ付けされました", + "Message failed to send": "メッセージを送信できませんでした", "Message flagged": "メッセージにフラグが付けられました", + "Message has been successfully flagged": "メッセージが正常にフラグ付けされました", "Message marked as unread": "メッセージを未読にしました", "Message pinned": "メッセージをピン留めしました", "Message unpinned": "メッセージのピン留めを解除しました", "Multiple votes": "複数投票", - "Network error": "ネットワークエラー", - "Select more than one option": "2つ以上のオプションを選択", - "Limit votes per person": "1人あたりの投票数を制限", - "Choose between 2–10 options": "2~10個のオプションから選択", + "Mute Group": "グループをミュート", "Mute User": "ユーザーをミュートする", + "Network error": "ネットワークエラー", "No chats here yet…": "まだチャットはありません…", + "No conversations yet": "まだ会話がありません", "No items exist": "項目がありません", + "No messages yet": "まだメッセージがありません", "No threads here yet": "まだスレッドがありません", "Not supported": "サポートしていません", "Nothing yet...": "まだ何もありません...", + "Notify all {{ role }} members": "Notify all {{ role }} members", + "Offline": "オフライン", "Ok": "確認", + "Online": "オンライン", "Only visible to you": "あなただけに見える", + "Open Camera": "カメラを開く", + "Open Files": "ファイルを開く", "Open Settings": "設定を開く", "Option": "オプション", - "Option {{count}}": "オプション {{count}}", "Option already exists": "オプションはすでに存在します", + "Option {{count}}": "オプション {{count}}", "Options": "オプション", "Photo": "写真", "Photos and Videos": "写真と動画", @@ -109,16 +166,26 @@ "Poll Comments": "アンケートのコメント", "Poll Options": "アンケートのオプション", "Poll Results": "アンケートの結果", + "Poll ended": "投票は終了しました", + "Poll has ended": "投票終了", "Questions": "質問", + "Reached the vote limit. Remove an existing vote first.": "投票数の上限に達しました。先に既存の投票を削除してください。", "Reconnecting...": "再接続中。。。", + "Recording format is not supported and cannot be reproduced": "録音形式がサポートされていないため再生できません", + "Reminder overdue": "リマインダー期限切れ", + "Reminder set": "リマインダー設定", + "Replied to a thread": "スレッドに返信", "Reply": "返事", - "Reply to {{name}}": "{{name}}に返信", "Reply to Message": "メッセージに返信", + "Reply to a message to start a thread": "メッセージに返信してスレッドを開始", + "Reply to {{name}}": "{{name}}に返信", "Resend": "再送", "Retry Upload": "アップロードを再試行", "SEND": "送信", "Search": "検索", "Select More Photos": "さらに写真を選択", + "Select files to share": "共有するファイルを選択", + "Select more than one option": "2つ以上のオプションを選択", "Select one": "1つ選択", "Select one or more": "1つ以上選択", "Select up to {{count}}_many": "{{count}} まで選択", @@ -126,26 +193,39 @@ "Select up to {{count}}_other": "{{count}} まで選択", "Send Anyway": "とにかく送信", "Send a message": "メッセージを送る", + "Send message request failed": "メッセージの送信リクエストに失敗しました", "Sending links is not allowed in this conversation": "この会話ではリンク機能を使用できません。", "Show All": "すべて表示", "Slide to Cancel": "スライドしてキャンセル", "Slow mode ON": "スローモードオン", "Slow mode, wait {{seconds}}s...": "スローモード, {{seconds}}s 待ってください...", "Suggest an option": "オプションを提案", + "Take a photo and share": "写真を撮って共有", + "Take a video and share": "動画を撮影して共有", + "Tap to remove": "タップして削除", "The message has been reported to a moderator.": "メッセージはモデレーターに報告されました。", "The source message was deleted": "元のメッセージが削除されました", "Thinking...": "考え中...", "This reply was deleted": "この返信は削除されました", "Thread Reply": "スレッドの返信", + "Thread has not been found": "スレッドが見つかりません", "Type a number from 2 to 10": "2から10の数字を入力してください", + "Typing": "タイピング中", + "Unarchive Chat": "チャットのアーカイブを解除", + "Unarchive Group": "グループのアーカイブを解除", "Unban User": "ユーザーの禁止を解除する", "Unblock User": "ユーザーのブロックを解除する", "Unknown User": "不明なユーザー", + "Unmute Group": "グループのミュートを解除", "Unmute User": "ユーザーのミュートを解除する", "Unpin from Conversation": "会話のピンを外す", "Unread Messages": "未読メッセージ", + "Unsupported Attachment": "サポートされていない添付ファイル", "Update your comment": "コメントを更新", + "User blocked": "ユーザーをブロックしました", + "User unblocked": "ユーザーのブロックを解除しました", "Video": "ビデオ", + "View": "表示", "View Results": "結果を表示", "View {{count}} comments_many": "すべての{{count}}コメントを表示", "View {{count}} comments_one": "{{count}} 件のコメントを表示", @@ -153,13 +233,90 @@ "Voice message": "ボイスメッセージ", "Voice message ({{duration}})": "ボイスメッセージ({{duration}})", "Voice message deleted": "ボイスメッセージを削除しました", - "Your comment": "あなたのコメント", + "Wait until all attachments have uploaded": "すべての添付ファイルのアップロードが完了するまでお待ちください", "You": "あなた", "You can't send messages in this channel": "このチャンネルではメッセージを送信できません", + "You have not granted access to the photo library.": "写真ライブラリへのアクセスが許可されていません。", + "You have not granted access to your camera": "カメラへのアクセスが許可されていません", + "You voted: {{ option }}": "あなたが投票しました: {{ option }}", + "Your comment": "あなたのコメント", + "a11y/AI is generating": "AIが生成しています", + "a11y/AI is thinking": "AIが考えています", + "a11y/Activate to view results": "結果を表示するには有効化", + "a11y/Add attachment": "Add attachment", + "a11y/Avatar of {{name}}": "{{name}}のアバター", + "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.", + "a11y/Close": "Close", + "a11y/Close attachments": "Close attachments", + "a11y/Close poll": "Close poll", + "a11y/Close poll creation": "Close poll creation", + "a11y/Command suggestions available": "Command suggestions available", + "a11y/Connected": "接続済み", + "a11y/Create poll": "Create poll", + "a11y/Decrease maximum votes": "Decrease maximum votes", + "a11y/Delete voice recording": "Delete voice recording", + "a11y/Delivered": "配信済み", + "a11y/Deselect image": "Deselect image", + "a11y/Deselect video": "Deselect video", + "a11y/Dismiss notification": "通知を閉じる", + "a11y/Dismiss unread messages": "Dismiss unread messages", + "a11y/Double tap and hold to activate contextual menu": "コンテキストメニューを表示するにはダブルタップして長押し", + "a11y/Emoji suggestions available": "Emoji suggestions available", + "a11y/End vote": "投票を終了", + "a11y/Grid Icon": "Grid Icon", + "a11y/Hide Overlay": "Hide Overlay", + "a11y/Increase maximum votes": "Increase maximum votes", + "a11y/Loading": "読み込み中", + "a11y/Loading failed": "読み込みに失敗しました", + "a11y/Mention suggestions available": "Mention suggestions available", + "a11y/Message actions": "メッセージの操作", + "a11y/New message from {{user}}": "{{user}}からの新しいメッセージ", + "a11y/Notifications": "通知", + "a11y/Offline": "オフライン", + "a11y/Open camera": "Open camera", + "a11y/Open commands": "Open commands", + "a11y/Open file picker": "Open file picker", + "a11y/Open message actions": "メッセージの操作を開く", + "a11y/Open more reactions": "Open more reactions", + "a11y/Open photo picker": "Open photo picker", + "a11y/Open poll creation": "Open poll creation", + "a11y/Open video recorder": "Open video recorder", + "a11y/Play Pause Button": "Play Pause Button", + "a11y/Reaction {{emoji}} by {{count}} users": "{{count}}人のユーザーによるリアクション{{emoji}}", + "a11y/Read": "既読", + "a11y/Reconnecting": "再接続中", + "a11y/Remove attachment": "Remove Attachment", + "a11y/Remove edit": "編集を削除", + "a11y/Remove reply": "返信を削除", + "a11y/Reply to {{user}}": "{{user}}に返信", + "a11y/Save edited message": "Save edited message", + "a11y/Scroll to bottom": "一番下へ移動", + "a11y/Scroll to bottom, {{count}} new messages": "一番下へ移動、新しいメッセージ{{count}}件", + "a11y/Scroll to latest": "最新のメッセージへ移動", + "a11y/Scroll to latest, {{count}} unread": "最新のメッセージへ移動、未読{{count}}件", + "a11y/Select image": "Select image", + "a11y/Select video": "Select video", + "a11y/Send message": "メッセージを送信", + "a11y/Send voice recording": "Send voice recording", + "a11y/Sending": "送信中", + "a11y/Sent": "送信済み", + "a11y/Share Button": "Share Button", + "a11y/Show all options": "すべてのオプションを表示", + "a11y/Start voice recording": "Start voice recording", + "a11y/Stop voice recording": "Stop voice recording", + "a11y/Swipe right to go through different actions": "右にスワイプして異なるアクションを切り替えます", + "a11y/Voice message recording. Hold to record.": "音声メッセージの録音。長押しして録音します。", + "a11y/Vote on {{option}}": "{{option}}に投票", + "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", + "a11y/{{count}} new messages": "新しいメッセージ{{count}}件", + "and {{ count }} others": "{{ count }}人がタイピングしています", "duration/Location end at": "{{ milliseconds | durationFormatter(withSuffix: false) }}", "duration/Message reminder": "{{ milliseconds | durationFormatter(withSuffix: true) }}", "duration/Remind Me": "{{ milliseconds | durationFormatter(withSuffix: true) }}", + "mention/Channel Description": "Notify everyone in this channel", + "mention/Here Description": "Notify every online member in this channel", "replied to": "に返信しました", + "size limit": "サイズ制限", "timestamp/ChannelPreviewStatus": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[昨日]\",\"lastWeek\":\"dddd\",\"nextDay\":\"[明日]\",\"nextWeek\":\"dddd [の] LT\",\"sameDay\":\"LT\",\"sameElse\":\"L\"}) }}", "timestamp/ImageGalleryHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/InlineDateSeparator": "{{ timestamp | timestampFormatter(calendar: true) }}", @@ -170,17 +327,16 @@ "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/StickyHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/ThreadListItem": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[昨日]\",\"lastWeek\":\"dddd\",\"nextDay\":\"[明日]\",\"nextWeek\":\"dddd [の] LT\",\"sameDay\":\"LT\",\"sameElse\":\"L\"}) }}", + "unknown error": "不明なエラー", + "unsupported file type": "サポートされていないファイル形式", "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }}と{{ nonSelfUserLength }}人がタイピングしています", + "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }}と{{ secondUser }}がタイピングしています", "{{ index }} of {{ photoLength }}": "{{ index }} / {{ photoLength }}", + "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }}人がタイピングしています", "{{ replyCount }} Replies": "{{ replyCount }}件の返信", + "{{ user }} has been muted": "{{ user }} をミュートしました", + "{{ user }} has been unmuted": "{{ user }} のミュートを解除しました", "{{ user }} is typing": "{{ user }}はタイピング中", - "You voted: {{ option }}": "あなたが投票しました: {{ option }}", - "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }}と{{ secondUser }}がタイピングしています", - "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }}人がタイピングしています", - "Typing": "タイピング中", - "No messages yet": "まだメッセージがありません", - "Message failed to send": "メッセージを送信できませんでした", - "and {{ count }} others": "{{ count }}人がタイピングしています", "{{ user }} voted: {{ option }}": "{{ user }} が投票しました: {{ option }}", "{{count}} Audios_many": "{{count}} 件の音声", "{{count}} Audios_one": "{{count}} 件の音声", @@ -191,173 +347,23 @@ "{{count}} Photos_many": "{{count}} 枚の写真", "{{count}} Photos_one": "{{count}} 枚の写真", "{{count}} Photos_other": "{{count}} 枚の写真", - "{{count}} Voice messages_many": "{{count}} 件のボイスメッセージ", - "{{count}} Voice messages_one": "{{count}} 件のボイスメッセージ", - "{{count}} Voice messages_other": "{{count}} 件のボイスメッセージ", + "{{count}} Reactions_many": "{{count}}件のリアクション", + "{{count}} Reactions_one": "{{count}}件のリアクション", + "{{count}} Reactions_other": "{{count}}件のリアクション", "{{count}} Videos_many": "{{count}} 件の動画", "{{count}} Videos_one": "{{count}} 件の動画", "{{count}} Videos_other": "{{count}} 件の動画", + "{{count}} Voice messages_many": "{{count}} 件のボイスメッセージ", + "{{count}} Voice messages_one": "{{count}} 件のボイスメッセージ", + "{{count}} Voice messages_other": "{{count}} 件のボイスメッセージ", + "{{count}} new messages": "{{count}} 新しいメッセージ", + "{{count}} new threads": "{{count}} 新しいスレッド", + "{{count}} unread": "{{count}} 未読", "{{count}} votes_many": "{{count}}票", "{{count}} votes_one": "{{count}} 票", "{{count}} votes_other": "{{count}} 票", - "🏙 Attachment...": "🏙 アタッチメント...", - "You have not granted access to the photo library.": "写真ライブラリへのアクセスが許可されていません。", - "Change in Settings": "設定で変更", - "Create a poll and let everyone vote": "投票を作成してみんなに投票してもらう", - "Open Camera": "カメラを開く", - "Open Files": "ファイルを開く", - "Select files to share": "共有するファイルを選択", - "Take a photo and share": "写真を撮って共有", - "Take a video and share": "動画を撮影して共有", - "You have not granted access to your camera": "カメラへのアクセスが許可されていません", - "{{count}} Reactions_many": "{{count}}件のリアクション", - "{{count}} Reactions_one": "{{count}}件のリアクション", - "{{count}} Reactions_other": "{{count}}件のリアクション", - "Tap to remove": "タップして削除", - "Draft": "下書き", - "Reminder set": "リマインダー設定", - "Also sent in channel": "チャンネルにも送信", - "Replied to a thread": "スレッドに返信", - "View": "表示", - "Reminder overdue": "リマインダー期限切れ", - "Poll has ended": "投票終了", - "Reply to a message to start a thread": "メッセージに返信してスレッドを開始", - "Couldn't load new threads. Tap to retry": "新しいスレッドを読み込めませんでした。タップして再試行", - "{{count}} new threads": "{{count}} 新しいスレッド", - "No conversations yet": "まだ会話がありません", - "Are you sure you want to delete this group? This can't be undone.": "このグループを削除しますか?この操作は元に戻せません。", - "Are you sure you want to delete this chat? This can't be undone.": "このチャットを削除しますか?この操作は元に戻せません。", - "Delete chat": "チャットを削除", - "Delete group": "グループを削除", - "Archive Chat": "チャットをアーカイブ", - "Archive Group": "グループをアーカイブ", - "Delete Chat": "チャットを削除", - "Delete Group": "グループを削除", - "Leave Chat": "チャットを退出", - "Leave Group": "グループを退出", - "Mute Group": "グループをミュート", - "Offline": "オフライン", - "Online": "オンライン", - "Unarchive Chat": "チャットのアーカイブを解除", - "Unarchive Group": "グループのアーカイブを解除", - "Unmute Group": "グループのミュートを解除", + "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}}人のメンバー、{{onlineCount}}人がオンライン", "{{memberCount}} members, {{onlineCount}} online_one": "{{memberCount}}人のメンバー、{{onlineCount}}人がオンライン", "{{memberCount}} members, {{onlineCount}} online_other": "{{memberCount}}人のメンバー、{{onlineCount}}人がオンライン", - "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}}人のメンバー、{{onlineCount}}人がオンライン", - "{{count}} unread": "{{count}} 未読", - "{{count}} new messages": "{{count}} 新しいメッセージ", - "Unsupported Attachment": "サポートされていない添付ファイル", - "+{{count}} More Options_one": "+{{count}} 件の追加オプション", - "+{{count}} More Options_other": "+{{count}} 件の追加オプション", - "+{{count}} More Options_many": "+{{count}} 件の追加オプション", - "a11y/AI is generating": "AIが生成しています", - "a11y/AI is thinking": "AIが考えています", - "a11y/Avatar of {{name}}": "{{name}}のアバター", - "a11y/Connected": "接続済み", - "a11y/Delivered": "配信済み", - "a11y/Loading": "読み込み中", - "a11y/Loading failed": "読み込みに失敗しました", - "a11y/Message actions": "メッセージの操作", - "a11y/New message from {{user}}": "{{user}}からの新しいメッセージ", - "a11y/Offline": "オフライン", - "a11y/Open message actions": "メッセージの操作を開く", - "a11y/Reaction {{emoji}} by {{count}} users": "{{count}}人のユーザーによるリアクション{{emoji}}", - "a11y/Read": "既読", - "a11y/Reconnecting": "再接続中", - "a11y/Reply to {{user}}": "{{user}}に返信", - "a11y/Remove edit": "編集を削除", - "a11y/Remove reply": "返信を削除", - "a11y/Scroll to bottom": "一番下へ移動", - "a11y/Scroll to bottom, {{count}} new messages": "一番下へ移動、新しいメッセージ{{count}}件", - "a11y/Scroll to latest": "最新のメッセージへ移動", - "a11y/Scroll to latest, {{count}} unread": "最新のメッセージへ移動、未読{{count}}件", - "a11y/Send message": "メッセージを送信", - "a11y/Sending": "送信中", - "a11y/Sent": "送信済み", - "a11y/Voice message recording. Hold to record.": "音声メッセージの録音。長押しして録音します。", - "a11y/{{count}} new messages": "新しいメッセージ{{count}}件", - "a11y/Add attachment": "Add attachment", - "a11y/Close attachments": "Close attachments", - "a11y/Remove attachment": "Remove Attachment", - "a11y/Close poll": "Close poll", - "a11y/Close poll creation": "Close poll creation", - "a11y/Create poll": "Create poll", - "a11y/Decrease maximum votes": "Decrease maximum votes", - "a11y/Delete voice recording": "Delete voice recording", - "a11y/Deselect image": "Deselect image", - "a11y/Deselect video": "Deselect video", - "a11y/Dismiss unread messages": "Dismiss unread messages", - "a11y/Grid Icon": "Grid Icon", - "a11y/Hide Overlay": "Hide Overlay", - "a11y/Increase maximum votes": "Increase maximum votes", - "a11y/Open camera": "Open camera", - "a11y/Open commands": "Open commands", - "a11y/Open file picker": "Open file picker", - "a11y/Open more reactions": "Open more reactions", - "a11y/Open photo picker": "Open photo picker", - "a11y/Open poll creation": "Open poll creation", - "a11y/Open video recorder": "Open video recorder", - "a11y/Play Pause Button": "Play Pause Button", - "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", - "a11y/Save edited message": "Save edited message", - "a11y/Select image": "Select image", - "a11y/Select video": "Select video", - "a11y/Send voice recording": "Send voice recording", - "a11y/Share Button": "Share Button", - "a11y/Start voice recording": "Start voice recording", - "a11y/Stop voice recording": "Stop voice recording", - "a11y/Notifications": "通知", - "a11y/Dismiss notification": "通知を閉じる", - "Attachment upload blocked due to {{reason}}": "{{reason}} のため添付ファイルのアップロードがブロックされました", - "Attachment upload failed due to {{reason}}": "{{reason}} のため添付ファイルのアップロードに失敗しました", - "Command not available": "コマンドは利用できません", - "Command not available while editing": "編集中はコマンドを利用できません", - "Command not available while replying": "返信中はコマンドを利用できません", - "Error reproducing the recording": "録音の再生中にエラーが発生しました", - "Error uploading attachment": "添付ファイルのアップロード中にエラーが発生しました", - "Failed to create the poll": "投票を作成できませんでした", - "Failed to create the poll due to {{reason}}": "{{reason}} のため投票を作成できませんでした", - "Failed to end the poll": "投票を終了できませんでした", - "Failed to end the poll due to {{reason}}": "{{reason}} のため投票を終了できませんでした", - "Failed to jump to the first unread message": "最初の未読メッセージへ移動できませんでした", - "Failed to retrieve location": "位置情報を取得できませんでした", - "Failed to share location": "位置情報を共有できませんでした", - "File is required for upload attachment": "添付ファイルをアップロードするにはファイルが必要です", - "Local upload attachment missing local id": "ローカルアップロード添付ファイルにローカル ID がありません", - "Poll ended": "投票は終了しました", - "Reached the vote limit. Remove an existing vote first.": "投票数の上限に達しました。先に既存の投票を削除してください。", - "Thread has not been found": "スレッドが見つかりません", - "Wait until all attachments have uploaded": "すべての添付ファイルのアップロードが完了するまでお待ちください", - "Cannot seek in the recording": "録音内をシークできません", - "Channel archived": "チャンネルをアーカイブしました", - "Channel muted": "チャンネルをミュートしました", - "Channel pinned": "チャンネルをピン留めしました", - "Channel unarchived": "チャンネルのアーカイブを解除しました", - "Channel unmuted": "チャンネルのミュートを解除しました", - "Channel unpinned": "チャンネルのピン留めを解除しました", - "Edit message request failed": "メッセージの編集リクエストに失敗しました", - "Failed to block user": "ユーザーのブロックに失敗しました", - "Failed to leave channel": "チャンネルの退出に失敗しました", - "Failed to play the recording": "録音の再生に失敗しました", - "Failed to update channel archive status": "チャンネルのアーカイブ状態の更新に失敗しました", - "Failed to update channel mute status": "チャンネルのミュート状態の更新に失敗しました", - "Failed to update channel pinned status": "チャンネルのピン留め状態の更新に失敗しました", - "Left channel": "チャンネルから退出しました", - "Recording format is not supported and cannot be reproduced": "録音形式がサポートされていないため再生できません", - "Send message request failed": "メッセージの送信リクエストに失敗しました", - "User blocked": "ユーザーをブロックしました", - "User unblocked": "ユーザーのブロックを解除しました", - "{{ user }} has been muted": "{{ user }} をミュートしました", - "{{ user }} has been unmuted": "{{ user }} のミュートを解除しました", - "size limit": "サイズ制限", - "unknown error": "不明なエラー", - "unsupported file type": "サポートされていないファイル形式", - "a11y/Activate to view results": "結果を表示するには有効化", - "a11y/End vote": "投票を終了", - "a11y/Show all options": "すべてのオプションを表示", - "a11y/Vote on {{option}}": "{{option}}に投票", - "a11y/Double tap and hold to activate contextual menu": "コンテキストメニューを表示するにはダブルタップして長押し", - "a11y/Swipe right to go through different actions": "右にスワイプして異なるアクションを切り替えます", - "a11y/Close": "Close", - "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss." + "🏙 Attachment...": "🏙 アタッチメント..." } diff --git a/package/src/i18n/ko.json b/package/src/i18n/ko.json index bec7e20f17..30bf90db12 100644 --- a/package/src/i18n/ko.json +++ b/package/src/i18n/ko.json @@ -1,4 +1,7 @@ { + "+{{count}} More Options_many": "+옵션 {{count}}개 더", + "+{{count}} More Options_one": "+옵션 {{count}}개 더", + "+{{count}} More Options_other": "+옵션 {{count}}개 더", "+{{count}}_many": "+{{count}}", "+{{count}}_one": "+{{count}}", "+{{count}}_other": "+{{count}}", @@ -11,33 +14,60 @@ "Allow access to your Gallery": "갤러리에 대한 액세스를 허용", "Allow camera access in device settings": "기기 설정에서 카메라 액세스를 허용하세요.", "Also send to channel": "채널에도 전송", + "Also sent in channel": "채널에도 전송", "Anonymous": "익명", "Anonymous voting": "익명 투표", + "Archive Chat": "채팅 보관", + "Archive Group": "그룹 보관", + "Are you sure you want to delete this chat? This can't be undone.": "이 채팅을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", + "Are you sure you want to delete this group? This can't be undone.": "이 그룹을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", "Are you sure you want to permanently delete this message?": "이 메시지를 영구적으로 삭제하시겠습니까?", "Are you sure?": "확실합니까?", "Ask a question": "질문하기", + "Attachment upload blocked due to {{reason}}": "{{reason}} 때문에 첨부 파일 업로드가 차단되었습니다", + "Attachment upload failed due to {{reason}}": "{{reason}} 때문에 첨부 파일 업로드에 실패했습니다", "Audio": "오디오", "Ban User": "사용자 차단", "Block User": "사용자 차단", "Cancel": "취소", "Cannot Flag Message": "메세지를 플래그 할 수 없습니다", + "Cannot seek in the recording": "녹음에서 이동할 수 없습니다", + "Change in Settings": "설정에서 변경", + "Channel archived": "채널이 보관되었습니다", + "Channel muted": "채널이 음소거되었습니다", + "Channel pinned": "채널이 고정되었습니다", + "Channel unarchived": "채널 보관이 해제되었습니다", + "Channel unmuted": "채널 음소거가 해제되었습니다", + "Channel unpinned": "채널 고정이 해제되었습니다", + "Choose between 2–10 options": "2~10개의 옵션 중에서 선택하세요", + "Command not available": "명령을 사용할 수 없습니다", + "Command not available while editing": "편집 중에는 명령을 사용할 수 없습니다", + "Command not available while replying": "답장 중에는 명령을 사용할 수 없습니다", "Consider how your comment might make others feel and be sure to follow our Community Guidelines": "당신의 댓글이 다른 사람들에게 어떤 영향을 줄지 고려하고 반드시 우리의 커뮤니티 가이드라인을 따르십시오", "Copy Message": "메시지 복사", + "Couldn't load new threads. Tap to retry": "새로운 스레드를 로드할 수 없습니다. 탭하여 다시 시도", "Create Poll": "투표 생성", + "Create a poll and let everyone vote": "투표를 만들어 모두가 투표하게 하세요", "Delete": "삭제", + "Delete Chat": "채팅 삭제", + "Delete Group": "그룹 삭제", "Delete Message": "메시지 삭제", + "Delete chat": "채팅 삭제", "Delete for me": "나 삭제", + "Delete group": "그룹 삭제", "Device camera is used to take photos or videos.": "기기 카메라는 사진이나 동영상을 촬영하는 데 사용됩니다.", "Device gallery permissions is used to take photos or videos.": "장치 갤러리 권한은 사진 또는 비디오를 촬영하는 데 사용됩니다.", "Do you want to send a copy of this message to a moderator for further investigation?": "이 메시지의 복사본을 운영자에게 보내 추가 조사를합니까?", + "Draft": "초안", "Due since {{ dueSince }}": "기한은 {{ dueSince }}부터입니다.", "Edit Message": "메시지 수정", + "Edit message request failed": "메시지 수정 요청이 실패했습니다", "Edited": "편집됨", "Editing Message": "메시지 편집중", "Emoji matching": "이모티콘 매칭", "Empty message...": "빈 메시지...", - "Enter a new option": "새 옵션 입력", "End Vote": "투표 종료", + "Enter a new option": "새 옵션 입력", "Error adding flag": "메시지에 플래그를 지정하는 중 오류가 발생했습니다", "Error deleting message": "메시지를 삭제하는 중 오류가 발생했습니다", "Error fetching reactions": "리액션을 가져오는 중 오류가 발생했습니다", @@ -48,8 +78,24 @@ "Error muting a user ...": "사용자를 음소거하는 중 오류가 발생했습니다 ...", "Error pinning message": "메시지를 고정하는 중 오류가 발생했습니다", "Error removing message pin": "메시지 고정을 해제하는 중 오류가 발생했습니다", + "Error reproducing the recording": "녹음 재생 중 오류가 발생했습니다", "Error unmuting a user ...": "사용자 음소거를 해제하는 중 오류가 발생했습니다 ...", + "Error uploading attachment": "첨부 파일 업로드 중 오류가 발생했습니다", "Error while loading, please reload/refresh": "로드하는 동안 오류가 발생했습니다. 다시로드하십시오", + "Failed to block user": "사용자 차단에 실패했습니다", + "Failed to create the poll": "투표를 만들지 못했습니다", + "Failed to create the poll due to {{reason}}": "{{reason}} 때문에 투표를 만들지 못했습니다", + "Failed to end the poll": "투표를 종료하지 못했습니다", + "Failed to end the poll due to {{reason}}": "{{reason}} 때문에 투표를 종료하지 못했습니다", + "Failed to jump to the first unread message": "첫 번째 읽지 않은 메시지로 이동하지 못했습니다", + "Failed to leave channel": "채널 나가기에 실패했습니다", + "Failed to play the recording": "녹음 재생에 실패했습니다", + "Failed to retrieve location": "위치를 가져오지 못했습니다", + "Failed to share location": "위치를 공유하지 못했습니다", + "Failed to update channel archive status": "채널 보관 상태 업데이트에 실패했습니다", + "Failed to update channel mute status": "채널 음소거 상태 업데이트에 실패했습니다", + "Failed to update channel pinned status": "채널 고정 상태 업데이트에 실패했습니다", + "File is required for upload attachment": "첨부 파일을 업로드하려면 파일이 필요합니다", "File is too large: {{ size }}, maximum upload size is {{ limit }}": "파일이 너무 큽니다: {{ size }}, 최대 업로드 크기는 {{ limit }}입니다", "File too large": "파일이 너무 큽니다", "File type not supported": "지원하지 않는 파일입니다.", @@ -63,41 +109,52 @@ "Hold to start recording.": "녹음을 시작하려면 눌러주세요.", "How about sending your first message to a friend?": "친구에게 첫 번째 메시지를 보내는 것은 어떻습니까?", "Instant Commands": "인스턴트 명령", + "Leave Chat": "채팅 나가기", + "Leave Group": "그룹 나가기", + "Left channel": "채널에서 나갔습니다", "Let others add options": "다른 사람이 옵션을 추가하도록 허용", "Let's start chatting!": "채팅을 시작합시다!", + "Limit votes per person": "1인당 투표 수 제한", "Links are disabled": "링크 기능이 비활성화되었습니다", "Live Location": "실시간 위치", "Loading channels...": "채널을 로딩 중...", "Loading messages...": "메시지를 로딩 중...", "Loading threads...": "스레드 로딩 중...", "Loading...": "로딩 중...", + "Local upload attachment missing local id": "로컬 업로드 첨부 파일에 로컬 ID가 없습니다", "Location": "위치", "Mark as Unread": "읽지 않음으로 표시", "Maximum number of files reached": "최대 파일 수에 도달했습니다", "Message Reactions": "메시지의 리액션", "Message deleted": "메시지가 삭제되었습니다.", - "Message has been successfully flagged": "메시지가 성공적으로 플래그 지정되었습니다", + "Message failed to send": "메시지 전송 실패", "Message flagged": "메시지에 플래그가 지정되었습니다", + "Message has been successfully flagged": "메시지가 성공적으로 플래그 지정되었습니다", "Message marked as unread": "메시지가 읽지 않음으로 표시되었습니다", "Message pinned": "메시지가 고정되었습니다", "Message unpinned": "메시지 고정이 해제되었습니다", "Multiple votes": "복수 투표", - "Network error": "네트워크 오류", - "Select more than one option": "두 개 이상의 옵션을 선택하세요", - "Limit votes per person": "1인당 투표 수 제한", - "Choose between 2–10 options": "2~10개의 옵션 중에서 선택하세요", + "Mute Group": "그룹 음소거", "Mute User": "사용자를 음소거", + "Network error": "네트워크 오류", "No chats here yet…": "아직 여기에 채팅이 없어요…", + "No conversations yet": "아직 대화가 없습니다", "No items exist": "항목이 없습니다", + "No messages yet": "아직 메시지가 없습니다", "No threads here yet": "아직 스레드가 없습니다", "Not supported": "지원하지 않습니다", "Nothing yet...": "아직 아무것도...", + "Notify all {{ role }} members": "Notify all {{ role }} members", + "Offline": "오프라인", "Ok": "확인", + "Online": "온라인", "Only visible to you": "당신만 볼 수 있습니다", + "Open Camera": "카메라 열기", + "Open Files": "파일 열기", "Open Settings": "설정 열기", "Option": "옵션", - "Option {{count}}": "옵션 {{count}}", "Option already exists": "옵션은 이미 존재합니다", + "Option {{count}}": "옵션 {{count}}", "Options": "옵션", "Photo": "사진", "Photos and Videos": "사진과 동영상", @@ -109,16 +166,26 @@ "Poll Comments": "투표 댓글", "Poll Options": "투표 옵션", "Poll Results": "투표 결과", + "Poll ended": "투표가 종료되었습니다", + "Poll has ended": "투표 종료됨", "Questions": "질문", + "Reached the vote limit. Remove an existing vote first.": "투표 한도에 도달했습니다. 먼저 기존 투표를 제거하세요.", "Reconnecting...": "다시 연결 중...", + "Recording format is not supported and cannot be reproduced": "녹음 형식이 지원되지 않아 재생할 수 없습니다", + "Reminder overdue": "리마인더 만료", + "Reminder set": "리마인더 설정", + "Replied to a thread": "스레드에 답장", "Reply": "답장", - "Reply to {{name}}": "{{name}}님에게 답장", "Reply to Message": "메시지에 답장", + "Reply to a message to start a thread": "메시지에 답장하여 스레드 시작", + "Reply to {{name}}": "{{name}}님에게 답장", "Resend": "재전송", "Retry Upload": "업로드 재시도", "SEND": "보내기", "Search": "검색", "Select More Photos": "추가 사진 선택", + "Select files to share": "공유할 파일 선택", + "Select more than one option": "두 개 이상의 옵션을 선택하세요", "Select one": "하나 선택", "Select one or more": "하나 이상 선택", "Select up to {{count}}_many": "{{count}} 까지 선택", @@ -126,26 +193,39 @@ "Select up to {{count}}_other": "{{count}}까지 선택", "Send Anyway": "그래도 보내기", "Send a message": "메세지를 보내다", + "Send message request failed": "메시지 보내기 요청이 실패했습니다", "Sending links is not allowed in this conversation": "이 대화에서는 링크 기능을 사용할 수 없습니다", "Show All": "모두 보기", "Slide to Cancel": "슬라이드하여 취소", "Slow mode ON": "슬로모드 켜짐", "Slow mode, wait {{seconds}}s...": "슬로모드, {{seconds}}s 대기...", "Suggest an option": "옵션 제안", + "Take a photo and share": "사진을 찍고 공유", + "Take a video and share": "동영상을 촬영하고 공유", + "Tap to remove": "탭하여 제거", "The message has been reported to a moderator.": "메시지는 운영자에보고되었습니다.", "The source message was deleted": "원본 메시지가 삭제되었습니다", "Thinking...": "생각 중...", "This reply was deleted": "이 답글은 삭제되었습니다", "Thread Reply": "스레드 답장", + "Thread has not been found": "스레드를 찾을 수 없습니다", "Type a number from 2 to 10": "2에서 10 사이의 숫자를 입력하세요", + "Typing": "타이핑 중", + "Unarchive Chat": "채팅 보관 해제", + "Unarchive Group": "그룹 보관 해제", "Unban User": "사용자 차단 해제", "Unblock User": "사용자 차단 해제", "Unknown User": "알 수없는 사용자", + "Unmute Group": "그룹 음소거 해제", "Unmute User": "사용자 음소거 해제", "Unpin from Conversation": "대화의 핀을 분리합니다", "Unread Messages": "읽지 않은 메시지", + "Unsupported Attachment": "지원하지 않는 첨부파일", "Update your comment": "댓글 수정", + "User blocked": "사용자가 차단되었습니다", + "User unblocked": "사용자 차단이 해제되었습니다", "Video": "동영상", + "View": "보기", "View Results": "결과 보기", "View {{count}} comments_many": "모든 {{count}} 댓글 보기", "View {{count}} comments_one": "{{count}}개의 댓글 보기", @@ -153,13 +233,90 @@ "Voice message": "음성 메시지", "Voice message ({{duration}})": "음성 메시지 ({{duration}})", "Voice message deleted": "음성 메시지가 삭제되었습니다", - "Your comment": "댓글 입력", + "Wait until all attachments have uploaded": "모든 첨부 파일이 업로드될 때까지 기다리세요", "You": "당신", "You can't send messages in this channel": "이 채널에서는 메세지를 전송할 수 없습니다", + "You have not granted access to the photo library.": "사진 라이브러리에 대한 접근 권한이 없습니다.", + "You have not granted access to your camera": "카메라 접근 권한이 없습니다", + "You voted: {{ option }}": "당신이 투표했습니다: {{ option }}", + "Your comment": "댓글 입력", + "a11y/AI is generating": "AI가 생성 중입니다", + "a11y/AI is thinking": "AI가 생각 중입니다", + "a11y/Activate to view results": "결과를 보려면 활성화", + "a11y/Add attachment": "Add attachment", + "a11y/Avatar of {{name}}": "{{name}}의 아바타", + "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.", + "a11y/Close": "Close", + "a11y/Close attachments": "Close attachments", + "a11y/Close poll": "Close poll", + "a11y/Close poll creation": "Close poll creation", + "a11y/Command suggestions available": "Command suggestions available", + "a11y/Connected": "연결됨", + "a11y/Create poll": "Create poll", + "a11y/Decrease maximum votes": "Decrease maximum votes", + "a11y/Delete voice recording": "Delete voice recording", + "a11y/Delivered": "전달됨", + "a11y/Deselect image": "Deselect image", + "a11y/Deselect video": "Deselect video", + "a11y/Dismiss notification": "알림 닫기", + "a11y/Dismiss unread messages": "Dismiss unread messages", + "a11y/Double tap and hold to activate contextual menu": "컨텍스트 메뉴를 활성화하려면 두 번 탭하고 길게 누르세요", + "a11y/Emoji suggestions available": "Emoji suggestions available", + "a11y/End vote": "투표 종료", + "a11y/Grid Icon": "Grid Icon", + "a11y/Hide Overlay": "Hide Overlay", + "a11y/Increase maximum votes": "Increase maximum votes", + "a11y/Loading": "로드 중", + "a11y/Loading failed": "로드 실패", + "a11y/Mention suggestions available": "Mention suggestions available", + "a11y/Message actions": "메시지 작업", + "a11y/New message from {{user}}": "{{user}}님의 새 메시지", + "a11y/Notifications": "알림", + "a11y/Offline": "오프라인", + "a11y/Open camera": "Open camera", + "a11y/Open commands": "Open commands", + "a11y/Open file picker": "Open file picker", + "a11y/Open message actions": "메시지 작업 열기", + "a11y/Open more reactions": "Open more reactions", + "a11y/Open photo picker": "Open photo picker", + "a11y/Open poll creation": "Open poll creation", + "a11y/Open video recorder": "Open video recorder", + "a11y/Play Pause Button": "Play Pause Button", + "a11y/Reaction {{emoji}} by {{count}} users": "{{count}}명의 사용자가 남긴 {{emoji}} 반응", + "a11y/Read": "읽음", + "a11y/Reconnecting": "다시 연결 중", + "a11y/Remove attachment": "Remove Attachment", + "a11y/Remove edit": "편집 제거", + "a11y/Remove reply": "답장 제거", + "a11y/Reply to {{user}}": "{{user}}님에게 답장", + "a11y/Save edited message": "Save edited message", + "a11y/Scroll to bottom": "맨 아래로 이동", + "a11y/Scroll to bottom, {{count}} new messages": "맨 아래로 이동, 새 메시지 {{count}}개", + "a11y/Scroll to latest": "최신 메시지로 이동", + "a11y/Scroll to latest, {{count}} unread": "최신 메시지로 이동, 읽지 않은 메시지 {{count}}개", + "a11y/Select image": "Select image", + "a11y/Select video": "Select video", + "a11y/Send message": "메시지 보내기", + "a11y/Send voice recording": "Send voice recording", + "a11y/Sending": "보내는 중", + "a11y/Sent": "보냄", + "a11y/Share Button": "Share Button", + "a11y/Show all options": "모든 옵션 표시", + "a11y/Start voice recording": "Start voice recording", + "a11y/Stop voice recording": "Stop voice recording", + "a11y/Swipe right to go through different actions": "다른 작업을 탐색하려면 오른쪽으로 스와이프하세요", + "a11y/Voice message recording. Hold to record.": "음성 메시지 녹음. 길게 눌러 녹음하세요.", + "a11y/Vote on {{option}}": "{{option}}에 투표", + "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", + "a11y/{{count}} new messages": "새 메시지 {{count}}개", + "and {{ count }} others": "{{ count }}명 이상", "duration/Location end at": "{{ milliseconds | durationFormatter(withSuffix: false) }}", "duration/Message reminder": "{{ milliseconds | durationFormatter(withSuffix: true) }}", "duration/Remind Me": "{{ milliseconds | durationFormatter(withSuffix: true) }}", + "mention/Channel Description": "Notify everyone in this channel", + "mention/Here Description": "Notify every online member in this channel", "replied to": "에 답장했습니다", + "size limit": "크기 제한", "timestamp/ChannelPreviewStatus": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[어제]\",\"lastWeek\":\"dddd\",\"nextDay\":\"[내일]\",\"nextWeek\":\"dddd [LT에]\",\"sameDay\":\"LT\",\"sameElse\":\"L\"}) }}", "timestamp/ImageGalleryHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/InlineDateSeparator": "{{ timestamp | timestampFormatter(calendar: true) }}", @@ -170,17 +327,16 @@ "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/StickyHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/ThreadListItem": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[어제]\",\"lastWeek\":\"dddd\",\"nextDay\":\"[내일]\",\"nextWeek\":\"dddd [LT에]\",\"sameDay\":\"LT\",\"sameElse\":\"L\"}) }}", + "unknown error": "알 수 없는 오류", + "unsupported file type": "지원되지 않는 파일 형식", "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} 외 {{ nonSelfUserLength }}명이 입력 중입니다", + "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }}와 {{ secondUser }}가 타이핑 중입니다", "{{ index }} of {{ photoLength }}": "{{ index }} / {{ photoLength }}", + "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }}명이 타이핑 중입니다", "{{ replyCount }} Replies": "{{ replyCount }} 답글", + "{{ user }} has been muted": "{{ user }}님이 음소거되었습니다", + "{{ user }} has been unmuted": "{{ user }}님의 음소거가 해제되었습니다", "{{ user }} is typing": "{{ user }} 타이핑 중", - "You voted: {{ option }}": "당신이 투표했습니다: {{ option }}", - "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }}와 {{ secondUser }}가 타이핑 중입니다", - "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }}명이 타이핑 중입니다", - "Typing": "타이핑 중", - "No messages yet": "아직 메시지가 없습니다", - "Message failed to send": "메시지 전송 실패", - "and {{ count }} others": "{{ count }}명 이상", "{{ user }} voted: {{ option }}": "{{ user }} 투표했습니다: {{ option }}", "{{count}} Audios_many": "{{count}}개의 오디오", "{{count}} Audios_one": "{{count}}개의 오디오", @@ -191,173 +347,23 @@ "{{count}} Photos_many": "{{count}}장의 사진", "{{count}} Photos_one": "{{count}}장의 사진", "{{count}} Photos_other": "{{count}}장의 사진", - "{{count}} Voice messages_many": "{{count}}개의 음성 메시지", - "{{count}} Voice messages_one": "{{count}}개의 음성 메시지", - "{{count}} Voice messages_other": "{{count}}개의 음성 메시지", + "{{count}} Reactions_many": "{{count}}개의 반응", + "{{count}} Reactions_one": "{{count}}개의 반응", + "{{count}} Reactions_other": "{{count}}개의 반응", "{{count}} Videos_many": "{{count}}개의 동영상", "{{count}} Videos_one": "{{count}}개의 동영상", "{{count}} Videos_other": "{{count}}개의 동영상", + "{{count}} Voice messages_many": "{{count}}개의 음성 메시지", + "{{count}} Voice messages_one": "{{count}}개의 음성 메시지", + "{{count}} Voice messages_other": "{{count}}개의 음성 메시지", + "{{count}} new messages": "{{count}} 새로운 메시지", + "{{count}} new threads": "{{count}} 새로운 스레드", + "{{count}} unread": "{{count}} 읽지 않은", "{{count}} votes_many": "{{count}} 표", "{{count}} votes_one": "{{count}} 표", "{{count}} votes_other": "{{count}} 표", - "🏙 Attachment...": "🏙 부착...", - "You have not granted access to the photo library.": "사진 라이브러리에 대한 접근 권한이 없습니다.", - "Change in Settings": "설정에서 변경", - "Create a poll and let everyone vote": "투표를 만들어 모두가 투표하게 하세요", - "Open Camera": "카메라 열기", - "Open Files": "파일 열기", - "Select files to share": "공유할 파일 선택", - "Take a photo and share": "사진을 찍고 공유", - "Take a video and share": "동영상을 촬영하고 공유", - "You have not granted access to your camera": "카메라 접근 권한이 없습니다", - "{{count}} Reactions_many": "{{count}}개의 반응", - "{{count}} Reactions_one": "{{count}}개의 반응", - "{{count}} Reactions_other": "{{count}}개의 반응", - "Tap to remove": "탭하여 제거", - "Draft": "초안", - "Reminder set": "리마인더 설정", - "Also sent in channel": "채널에도 전송", - "Replied to a thread": "스레드에 답장", - "View": "보기", - "Reminder overdue": "리마인더 만료", - "Poll has ended": "투표 종료됨", - "Reply to a message to start a thread": "메시지에 답장하여 스레드 시작", - "Couldn't load new threads. Tap to retry": "새로운 스레드를 로드할 수 없습니다. 탭하여 다시 시도", - "{{count}} new threads": "{{count}} 새로운 스레드", - "No conversations yet": "아직 대화가 없습니다", - "Are you sure you want to delete this group? This can't be undone.": "이 그룹을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", - "Are you sure you want to delete this chat? This can't be undone.": "이 채팅을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", - "Delete chat": "채팅 삭제", - "Delete group": "그룹 삭제", - "Archive Chat": "채팅 보관", - "Archive Group": "그룹 보관", - "Delete Chat": "채팅 삭제", - "Delete Group": "그룹 삭제", - "Leave Chat": "채팅 나가기", - "Leave Group": "그룹 나가기", - "Mute Group": "그룹 음소거", - "Offline": "오프라인", - "Online": "온라인", - "Unarchive Chat": "채팅 보관 해제", - "Unarchive Group": "그룹 보관 해제", - "Unmute Group": "그룹 음소거 해제", + "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}}명, {{onlineCount}}명 온라인", "{{memberCount}} members, {{onlineCount}} online_one": "{{memberCount}}명, {{onlineCount}}명 온라인", "{{memberCount}} members, {{onlineCount}} online_other": "{{memberCount}}명, {{onlineCount}}명 온라인", - "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}}명, {{onlineCount}}명 온라인", - "{{count}} unread": "{{count}} 읽지 않은", - "{{count}} new messages": "{{count}} 새로운 메시지", - "Unsupported Attachment": "지원하지 않는 첨부파일", - "+{{count}} More Options_one": "+옵션 {{count}}개 더", - "+{{count}} More Options_other": "+옵션 {{count}}개 더", - "+{{count}} More Options_many": "+옵션 {{count}}개 더", - "a11y/AI is generating": "AI가 생성 중입니다", - "a11y/AI is thinking": "AI가 생각 중입니다", - "a11y/Avatar of {{name}}": "{{name}}의 아바타", - "a11y/Connected": "연결됨", - "a11y/Delivered": "전달됨", - "a11y/Loading": "로드 중", - "a11y/Loading failed": "로드 실패", - "a11y/Message actions": "메시지 작업", - "a11y/New message from {{user}}": "{{user}}님의 새 메시지", - "a11y/Offline": "오프라인", - "a11y/Open message actions": "메시지 작업 열기", - "a11y/Reaction {{emoji}} by {{count}} users": "{{count}}명의 사용자가 남긴 {{emoji}} 반응", - "a11y/Read": "읽음", - "a11y/Reconnecting": "다시 연결 중", - "a11y/Reply to {{user}}": "{{user}}님에게 답장", - "a11y/Remove edit": "편집 제거", - "a11y/Remove reply": "답장 제거", - "a11y/Scroll to bottom": "맨 아래로 이동", - "a11y/Scroll to bottom, {{count}} new messages": "맨 아래로 이동, 새 메시지 {{count}}개", - "a11y/Scroll to latest": "최신 메시지로 이동", - "a11y/Scroll to latest, {{count}} unread": "최신 메시지로 이동, 읽지 않은 메시지 {{count}}개", - "a11y/Send message": "메시지 보내기", - "a11y/Sending": "보내는 중", - "a11y/Sent": "보냄", - "a11y/Voice message recording. Hold to record.": "음성 메시지 녹음. 길게 눌러 녹음하세요.", - "a11y/{{count}} new messages": "새 메시지 {{count}}개", - "a11y/Add attachment": "Add attachment", - "a11y/Close attachments": "Close attachments", - "a11y/Remove attachment": "Remove Attachment", - "a11y/Close poll": "Close poll", - "a11y/Close poll creation": "Close poll creation", - "a11y/Create poll": "Create poll", - "a11y/Decrease maximum votes": "Decrease maximum votes", - "a11y/Delete voice recording": "Delete voice recording", - "a11y/Deselect image": "Deselect image", - "a11y/Deselect video": "Deselect video", - "a11y/Dismiss unread messages": "Dismiss unread messages", - "a11y/Grid Icon": "Grid Icon", - "a11y/Hide Overlay": "Hide Overlay", - "a11y/Increase maximum votes": "Increase maximum votes", - "a11y/Open camera": "Open camera", - "a11y/Open commands": "Open commands", - "a11y/Open file picker": "Open file picker", - "a11y/Open more reactions": "Open more reactions", - "a11y/Open photo picker": "Open photo picker", - "a11y/Open poll creation": "Open poll creation", - "a11y/Open video recorder": "Open video recorder", - "a11y/Play Pause Button": "Play Pause Button", - "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", - "a11y/Save edited message": "Save edited message", - "a11y/Select image": "Select image", - "a11y/Select video": "Select video", - "a11y/Send voice recording": "Send voice recording", - "a11y/Share Button": "Share Button", - "a11y/Start voice recording": "Start voice recording", - "a11y/Stop voice recording": "Stop voice recording", - "a11y/Notifications": "알림", - "a11y/Dismiss notification": "알림 닫기", - "Attachment upload blocked due to {{reason}}": "{{reason}} 때문에 첨부 파일 업로드가 차단되었습니다", - "Attachment upload failed due to {{reason}}": "{{reason}} 때문에 첨부 파일 업로드에 실패했습니다", - "Command not available": "명령을 사용할 수 없습니다", - "Command not available while editing": "편집 중에는 명령을 사용할 수 없습니다", - "Command not available while replying": "답장 중에는 명령을 사용할 수 없습니다", - "Error reproducing the recording": "녹음 재생 중 오류가 발생했습니다", - "Error uploading attachment": "첨부 파일 업로드 중 오류가 발생했습니다", - "Failed to create the poll": "투표를 만들지 못했습니다", - "Failed to create the poll due to {{reason}}": "{{reason}} 때문에 투표를 만들지 못했습니다", - "Failed to end the poll": "투표를 종료하지 못했습니다", - "Failed to end the poll due to {{reason}}": "{{reason}} 때문에 투표를 종료하지 못했습니다", - "Failed to jump to the first unread message": "첫 번째 읽지 않은 메시지로 이동하지 못했습니다", - "Failed to retrieve location": "위치를 가져오지 못했습니다", - "Failed to share location": "위치를 공유하지 못했습니다", - "File is required for upload attachment": "첨부 파일을 업로드하려면 파일이 필요합니다", - "Local upload attachment missing local id": "로컬 업로드 첨부 파일에 로컬 ID가 없습니다", - "Poll ended": "투표가 종료되었습니다", - "Reached the vote limit. Remove an existing vote first.": "투표 한도에 도달했습니다. 먼저 기존 투표를 제거하세요.", - "Thread has not been found": "스레드를 찾을 수 없습니다", - "Wait until all attachments have uploaded": "모든 첨부 파일이 업로드될 때까지 기다리세요", - "Cannot seek in the recording": "녹음에서 이동할 수 없습니다", - "Channel archived": "채널이 보관되었습니다", - "Channel muted": "채널이 음소거되었습니다", - "Channel pinned": "채널이 고정되었습니다", - "Channel unarchived": "채널 보관이 해제되었습니다", - "Channel unmuted": "채널 음소거가 해제되었습니다", - "Channel unpinned": "채널 고정이 해제되었습니다", - "Edit message request failed": "메시지 수정 요청이 실패했습니다", - "Failed to block user": "사용자 차단에 실패했습니다", - "Failed to leave channel": "채널 나가기에 실패했습니다", - "Failed to play the recording": "녹음 재생에 실패했습니다", - "Failed to update channel archive status": "채널 보관 상태 업데이트에 실패했습니다", - "Failed to update channel mute status": "채널 음소거 상태 업데이트에 실패했습니다", - "Failed to update channel pinned status": "채널 고정 상태 업데이트에 실패했습니다", - "Left channel": "채널에서 나갔습니다", - "Recording format is not supported and cannot be reproduced": "녹음 형식이 지원되지 않아 재생할 수 없습니다", - "Send message request failed": "메시지 보내기 요청이 실패했습니다", - "User blocked": "사용자가 차단되었습니다", - "User unblocked": "사용자 차단이 해제되었습니다", - "{{ user }} has been muted": "{{ user }}님이 음소거되었습니다", - "{{ user }} has been unmuted": "{{ user }}님의 음소거가 해제되었습니다", - "size limit": "크기 제한", - "unknown error": "알 수 없는 오류", - "unsupported file type": "지원되지 않는 파일 형식", - "a11y/Activate to view results": "결과를 보려면 활성화", - "a11y/End vote": "투표 종료", - "a11y/Show all options": "모든 옵션 표시", - "a11y/Vote on {{option}}": "{{option}}에 투표", - "a11y/Double tap and hold to activate contextual menu": "컨텍스트 메뉴를 활성화하려면 두 번 탭하고 길게 누르세요", - "a11y/Swipe right to go through different actions": "다른 작업을 탐색하려면 오른쪽으로 스와이프하세요", - "a11y/Close": "Close", - "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss." + "🏙 Attachment...": "🏙 부착..." } diff --git a/package/src/i18n/nl.json b/package/src/i18n/nl.json index 1d0a400967..8f07b15f54 100644 --- a/package/src/i18n/nl.json +++ b/package/src/i18n/nl.json @@ -1,4 +1,7 @@ { + "+{{count}} More Options_many": "+{{count}} extra opties", + "+{{count}} More Options_one": "+{{count}} extra optie", + "+{{count}} More Options_other": "+{{count}} extra opties", "+{{count}}_many": "+{{count}}", "+{{count}}_one": "+{{count}}", "+{{count}}_other": "+{{count}}", @@ -11,33 +14,60 @@ "Allow access to your Gallery": "Geef toegang tot uw galerij", "Allow camera access in device settings": "Sta cameratoegang toe in de apparaatinstellingen", "Also send to channel": "Stuur ook naar kanaal", + "Also sent in channel": "Also sent in channel", "Anonymous": "Anoniem", "Anonymous voting": "Anonieme peiling", + "Archive Chat": "Chat archiveren", + "Archive Group": "Groep archiveren", + "Are you sure you want to delete this chat? This can't be undone.": "Weet je zeker dat je deze chat wilt verwijderen? Dit kan niet ongedaan worden gemaakt.", + "Are you sure you want to delete this group? This can't be undone.": "Weet je zeker dat je deze groep wilt verwijderen? Dit kan niet ongedaan worden gemaakt.", "Are you sure you want to permanently delete this message?": "Weet u zeker dat u dit bericht definitief wilt verwijderen?", "Are you sure?": "Weet je het zeker?", "Ask a question": "Stel een vraag", + "Attachment upload blocked due to {{reason}}": "Uploaden van bijlage geblokkeerd vanwege {{reason}}", + "Attachment upload failed due to {{reason}}": "Uploaden van bijlage mislukt vanwege {{reason}}", "Audio": "Audio", "Ban User": "Gebruiker Verbannen", "Block User": "Blokkeer Gebruiker", "Cancel": "Annuleer", "Cannot Flag Message": "Kan bericht niet rapporteren", + "Cannot seek in the recording": "Kan niet spoelen in de opname", + "Change in Settings": "Wijzigen in Instellingen", + "Channel archived": "Kanaal gearchiveerd", + "Channel muted": "Kanaal gedempt", + "Channel pinned": "Kanaal vastgezet", + "Channel unarchived": "Kanaal uit archief gehaald", + "Channel unmuted": "Kanaal niet meer gedempt", + "Channel unpinned": "Kanaal losgemaakt", + "Choose between 2–10 options": "Kies tussen 2 en 10 opties", + "Command not available": "Opdracht niet beschikbaar", + "Command not available while editing": "Opdracht niet beschikbaar tijdens bewerken", + "Command not available while replying": "Opdracht niet beschikbaar tijdens beantwoorden", "Consider how your comment might make others feel and be sure to follow our Community Guidelines": "Denk na over hoe jouw opmerking anderen zou kunnen laten voelen en zorg ervoor dat je onze Community-richtlijnen volgt", "Copy Message": "Bericht kopiëren", + "Couldn't load new threads. Tap to retry": "Kan nieuwe threads niet laden. Tik om opnieuw te proberen", "Create Poll": "Peiling aanmaken", + "Create a poll and let everyone vote": "Maak een peiling en laat iedereen stemmen", "Delete": "Verwijderen", + "Delete Chat": "Chat verwijderen", + "Delete Group": "Groep verwijderen", "Delete Message": "Verwijder bericht", + "Delete chat": "Chat verwijderen", "Delete for me": "Verwijder voor mij", + "Delete group": "Groep verwijderen", "Device camera is used to take photos or videos.": "De camera van het apparaat wordt gebruikt om foto's of video's te maken.", "Device gallery permissions is used to take photos or videos.": "Apparaatgallerijmachtigingen worden gebruikt om foto’s of video’s te maken.", "Do you want to send a copy of this message to a moderator for further investigation?": "Wil je een kopie van dit bericht naar een moderator sturen voor verder onderzoek?", + "Draft": "Ontwerp", "Due since {{ dueSince }}": "Vervaldatum sinds {{ dueSince }}", "Edit Message": "Pas bericht aan", + "Edit message request failed": "Verzoek om bericht te bewerken mislukt", "Edited": "Bewerkt", "Editing Message": "Bericht aanpassen", "Emoji matching": "Emoji-overeenkomsten", "Empty message...": "Leeg bericht...", - "Enter a new option": "Voer een nieuwe optie in", "End Vote": "Einde stemronde", + "Enter a new option": "Voer een nieuwe optie in", "Error adding flag": "Fout bij het markeren van het bericht", "Error deleting message": "Fout bij het verwijderen van het bericht", "Error fetching reactions": "Fout bij het ophalen van reacties", @@ -48,8 +78,24 @@ "Error muting a user ...": "Fout bij het dempen van een gebruiker ...", "Error pinning message": "Fout bij het vastzetten van het bericht", "Error removing message pin": "Fout bij het losmaken van het bericht", + "Error reproducing the recording": "Fout bij afspelen van de opname", "Error unmuting a user ...": "Fout bij het opheffen van dempen van een gebruiker ...", + "Error uploading attachment": "Fout bij uploaden van bijlage", "Error while loading, please reload/refresh": "Probleem bij het laden, probeer opnieuw", + "Failed to block user": "Gebruiker blokkeren mislukt", + "Failed to create the poll": "Poll maken mislukt", + "Failed to create the poll due to {{reason}}": "Poll maken mislukt vanwege {{reason}}", + "Failed to end the poll": "Poll beëindigen mislukt", + "Failed to end the poll due to {{reason}}": "Poll beëindigen mislukt vanwege {{reason}}", + "Failed to jump to the first unread message": "Kon niet naar het eerste ongelezen bericht gaan", + "Failed to leave channel": "Kanaal verlaten mislukt", + "Failed to play the recording": "Opname afspelen mislukt", + "Failed to retrieve location": "Kon locatie niet ophalen", + "Failed to share location": "Kon locatie niet delen", + "Failed to update channel archive status": "Bijwerken van kanaalarchiefstatus mislukt", + "Failed to update channel mute status": "Bijwerken van dempstatus van kanaal mislukt", + "Failed to update channel pinned status": "Bijwerken van vastzetstatus van kanaal mislukt", + "File is required for upload attachment": "Er is een bestand vereist om een bijlage te uploaden", "File is too large: {{ size }}, maximum upload size is {{ limit }}": "Bestand is te groot: {{ size }}, maximale uploadgrootte is {{ limit }}", "File too large": "Bestand te groot", "File type not supported": "Bestandstype niet ondersteund", @@ -63,41 +109,52 @@ "Hold to start recording.": "Houd vast om opname te starten.", "How about sending your first message to a friend?": "Wat dacht je ervan om je eerste bericht naar een vriend te sturen?", "Instant Commands": "Directe Opdrachten", + "Leave Chat": "Chat verlaten", + "Leave Group": "Groep verlaten", + "Left channel": "Kanaal verlaten", "Let others add options": "Laat anderen opties toevoegen", "Let's start chatting!": "Laten we beginnen met chatten!", + "Limit votes per person": "Beperk stemmen per persoon", "Links are disabled": "Het versturen van links staat uit", "Live Location": "Live locatie", "Loading channels...": "Kanalen aan het laden...", "Loading messages...": "Berichten aan het laden...", "Loading threads...": "Threads laden...", "Loading...": "Aan het laden...", + "Local upload attachment missing local id": "Lokale uploadbijlage mist een lokale ID", "Location": "Locatie", "Mark as Unread": "Markeer als ongelezen", "Maximum number of files reached": "Maximaal aantal bestanden bereikt", "Message Reactions": "Bericht Reacties", "Message deleted": "Bericht verwijderd", - "Message has been successfully flagged": "Bericht is succesvol gemarkeerd", + "Message failed to send": "Bericht niet verzonden", "Message flagged": "Bericht gemarkeerd", + "Message has been successfully flagged": "Bericht is succesvol gemarkeerd", "Message marked as unread": "Bericht gemarkeerd als ongelezen", "Message pinned": "Bericht vastgezet", "Message unpinned": "Bericht losgemaakt", "Multiple votes": "Meerdere stemmen", - "Network error": "Netwerkfout", - "Select more than one option": "Selecteer meer dan één optie", - "Limit votes per person": "Beperk stemmen per persoon", - "Choose between 2–10 options": "Kies tussen 2 en 10 opties", + "Mute Group": "Groep dempen", "Mute User": "Gebruiker dempen", + "Network error": "Netwerkfout", "No chats here yet…": "Nog geen chats hier…", + "No conversations yet": "Nog geen gesprekken", "No items exist": "Er zijn geen items", + "No messages yet": "Nog geen berichten", "No threads here yet": "Hier zijn nog geen threads", "Not supported": "niet ondersteund", "Nothing yet...": "Nog niets...", + "Notify all {{ role }} members": "Notify all {{ role }} members", + "Offline": "Offline", "Ok": "Oké", + "Online": "Online", "Only visible to you": "Alleen zichtbaar voor jou", + "Open Camera": "Camera openen", + "Open Files": "Bestanden openen", "Open Settings": "Open instellingen", "Option": "Optie", - "Option {{count}}": "Optie {{count}}", "Option already exists": "Optie bestaat al", + "Option {{count}}": "Optie {{count}}", "Options": "Opties", "Photo": "Foto", "Photos and Videos": "Foto's en video's", @@ -109,16 +166,26 @@ "Poll Comments": "Peiling reacties", "Poll Options": "Peiling opties", "Poll Results": "Peiling resultaten", + "Poll ended": "Poll beëindigd", + "Poll has ended": "Stemmen beëindigd", "Questions": "Vragen", + "Reached the vote limit. Remove an existing vote first.": "Stemlimiet bereikt. Verwijder eerst een bestaande stem.", "Reconnecting...": "Opnieuw Verbinding Maken...", + "Recording format is not supported and cannot be reproduced": "Opnameformaat wordt niet ondersteund en kan niet worden afgespeeld", + "Reminder overdue": "Reminder overdue", + "Reminder set": "Reminder set", + "Replied to a thread": "Replied to a thread", "Reply": "Antwoord", - "Reply to {{name}}": "Antwoord aan {{name}}", "Reply to Message": "Beantwoord bericht", + "Reply to a message to start a thread": "Antwoord op een bericht om een thread te starten", + "Reply to {{name}}": "Antwoord aan {{name}}", "Resend": "Opnieuw versturen", "Retry Upload": "Uploaden opnieuw proberen", "SEND": "VERZENDEN", "Search": "Zoeken", "Select More Photos": "Selecteer Meer foto's", + "Select files to share": "Selecteer bestanden om te delen", + "Select more than one option": "Selecteer meer dan één optie", "Select one": "Kies één", "Select one or more": "Kies één of meer", "Select up to {{count}}_many": "Selecteer tot {{count}}", @@ -126,26 +193,39 @@ "Select up to {{count}}_other": "Kies tot {{count}}", "Send Anyway": "Toch verzenden", "Send a message": "Stuur een bericht", + "Send message request failed": "Verzoek om bericht te verzenden mislukt", "Sending links is not allowed in this conversation": "In dit gesprek is het niet toegestaan links te versturen", "Show All": "Alles weergeven", "Slide to Cancel": "Slide om te annuleren", "Slow mode ON": "Langzame modus aan", "Slow mode, wait {{seconds}}s...": "Langzame modus, wacht {{seconds}}s...", "Suggest an option": "Stel een optie voor", + "Take a photo and share": "Maak een foto en deel deze", + "Take a video and share": "Maak een video en deel deze", + "Tap to remove": "Tik om te verwijderen", "The message has been reported to a moderator.": "Het bericht is gerapporteerd aan een moderator.", "The source message was deleted": "Het oorspronkelijke bericht is verwijderd", "Thinking...": "Aan het denken...", "This reply was deleted": "Deze reactie is verwijderd", "Thread Reply": "Discussie beantwoorden", + "Thread has not been found": "Thread is niet gevonden", "Type a number from 2 to 10": "Typ een getal van 2 tot 10", + "Typing": "Typen", + "Unarchive Chat": "Chat uit archief halen", + "Unarchive Group": "Groep uit archief halen", "Unban User": "Gebruiker Deblokeren", "Unblock User": "Deblokkeer gebruiker", "Unknown User": "Onbekende gebruiker", + "Unmute Group": "Dempen van groep opheffen", "Unmute User": "Dempen van gebruiker opheffen", "Unpin from Conversation": "Losmaken van gesprek", "Unread Messages": "Ongelezen Berichten", + "Unsupported Attachment": "Ondersteunde bijlage", "Update your comment": "Werk je reactie bij", + "User blocked": "Gebruiker geblokkeerd", + "User unblocked": "Gebruiker gedeblokkeerd", "Video": "Video", + "View": "View", "View Results": "Bekijk resultaten", "View {{count}} comments_many": "Bekijk {{count}} reacties", "View {{count}} comments_one": "Bekijk {{count}} reactie", @@ -153,13 +233,90 @@ "Voice message": "Spraakbericht", "Voice message ({{duration}})": "Spraakbericht ({{duration}})", "Voice message deleted": "Spraakbericht verwijderd", - "Your comment": "Jouw reactie", + "Wait until all attachments have uploaded": "Wacht tot alle bijlagen zijn geüpload", "You": "U", "You can't send messages in this channel": "Je kan geen berichten sturen in dit kanaal", + "You have not granted access to the photo library.": "Je hebt geen toegang tot de fotobibliotheek verleend.", + "You have not granted access to your camera": "Je hebt geen toegang tot je camera verleend", + "You voted: {{ option }}": "Je hebt gestemd: {{ option }}", + "Your comment": "Jouw reactie", + "a11y/AI is generating": "AI genereert", + "a11y/AI is thinking": "AI denkt na", + "a11y/Activate to view results": "Activeer om resultaten te bekijken", + "a11y/Add attachment": "Add attachment", + "a11y/Avatar of {{name}}": "Avatar van {{name}}", + "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.", + "a11y/Close": "Close", + "a11y/Close attachments": "Close attachments", + "a11y/Close poll": "Close poll", + "a11y/Close poll creation": "Close poll creation", + "a11y/Command suggestions available": "Command suggestions available", + "a11y/Connected": "Verbonden", + "a11y/Create poll": "Create poll", + "a11y/Decrease maximum votes": "Decrease maximum votes", + "a11y/Delete voice recording": "Delete voice recording", + "a11y/Delivered": "Afgeleverd", + "a11y/Deselect image": "Deselect image", + "a11y/Deselect video": "Deselect video", + "a11y/Dismiss notification": "Melding sluiten", + "a11y/Dismiss unread messages": "Dismiss unread messages", + "a11y/Double tap and hold to activate contextual menu": "Dubbeltik en houd vast om het contextmenu te openen", + "a11y/Emoji suggestions available": "Emoji suggestions available", + "a11y/End vote": "Stemming beëindigen", + "a11y/Grid Icon": "Grid Icon", + "a11y/Hide Overlay": "Hide Overlay", + "a11y/Increase maximum votes": "Increase maximum votes", + "a11y/Loading": "Laden", + "a11y/Loading failed": "Laden mislukt", + "a11y/Mention suggestions available": "Mention suggestions available", + "a11y/Message actions": "Berichtacties", + "a11y/New message from {{user}}": "Nieuw bericht van {{user}}", + "a11y/Notifications": "Meldingen", + "a11y/Offline": "Offline", + "a11y/Open camera": "Open camera", + "a11y/Open commands": "Open commands", + "a11y/Open file picker": "Open file picker", + "a11y/Open message actions": "Berichtacties openen", + "a11y/Open more reactions": "Open more reactions", + "a11y/Open photo picker": "Open photo picker", + "a11y/Open poll creation": "Open poll creation", + "a11y/Open video recorder": "Open video recorder", + "a11y/Play Pause Button": "Play Pause Button", + "a11y/Reaction {{emoji}} by {{count}} users": "Reactie {{emoji}} door {{count}} gebruikers", + "a11y/Read": "Gelezen", + "a11y/Reconnecting": "Opnieuw verbinden", + "a11y/Remove attachment": "Remove Attachment", + "a11y/Remove edit": "Bewerking verwijderen", + "a11y/Remove reply": "Antwoord verwijderen", + "a11y/Reply to {{user}}": "Antwoorden op {{user}}", + "a11y/Save edited message": "Save edited message", + "a11y/Scroll to bottom": "Ga naar beneden", + "a11y/Scroll to bottom, {{count}} new messages": "Ga naar beneden, {{count}} nieuwe berichten", + "a11y/Scroll to latest": "Ga naar het nieuwste bericht", + "a11y/Scroll to latest, {{count}} unread": "Ga naar het nieuwste bericht, {{count}} ongelezen", + "a11y/Select image": "Select image", + "a11y/Select video": "Select video", + "a11y/Send message": "Bericht verzenden", + "a11y/Send voice recording": "Send voice recording", + "a11y/Sending": "Verzenden", + "a11y/Sent": "Verzonden", + "a11y/Share Button": "Share Button", + "a11y/Show all options": "Alle opties weergeven", + "a11y/Start voice recording": "Start voice recording", + "a11y/Stop voice recording": "Stop voice recording", + "a11y/Swipe right to go through different actions": "Veeg naar rechts om door verschillende acties te bladeren", + "a11y/Voice message recording. Hold to record.": "Spraakbericht opnemen. Houd ingedrukt om op te nemen.", + "a11y/Vote on {{option}}": "Stem op {{option}}", + "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", + "a11y/{{count}} new messages": "{{count}} nieuwe berichten", + "and {{ count }} others": "{{ count }} anderen", "duration/Location end at": "{{ milliseconds | durationFormatter(withSuffix: false) }}", "duration/Message reminder": "{{ milliseconds | durationFormatter(withSuffix: true) }}", "duration/Remind Me": "{{ milliseconds | durationFormatter(withSuffix: true) }}", + "mention/Channel Description": "Notify everyone in this channel", + "mention/Here Description": "Notify every online member in this channel", "replied to": "reageerde op", + "size limit": "groottelimiet", "timestamp/ChannelPreviewStatus": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[Gisteren]\",\"lastWeek\":\"dddd\",\"nextDay\":\"[Morgen]\",\"nextWeek\":\"dddd [om] LT\",\"sameDay\":\"LT\",\"sameElse\":\"L\"}) }}", "timestamp/ImageGalleryHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/InlineDateSeparator": "{{ timestamp | timestampFormatter(calendar: true) }}", @@ -170,17 +327,16 @@ "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/StickyHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/ThreadListItem": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[Gisteren]\",\"lastWeek\":\"dddd\",\"nextDay\":\"[Morgen]\",\"nextWeek\":\"dddd [om] LT\",\"sameDay\":\"LT\",\"sameElse\":\"L\"}) }}", + "unknown error": "onbekende fout", + "unsupported file type": "niet-ondersteund bestandstype", "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} en {{ nonSelfUserLength }} anderen zijn aan het typen", + "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }} en {{ secondUser }} zijn aan het typen", "{{ index }} of {{ photoLength }}": "{{ index }} van {{ photoLength }}", + "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }} mensen zijn aan het typen", "{{ replyCount }} Replies": "{{ replyCount }} Antwoorden", + "{{ user }} has been muted": "{{ user }} is gedempt", + "{{ user }} has been unmuted": "{{ user }} is niet meer gedempt", "{{ user }} is typing": "{{ user }} is aan het typen", - "You voted: {{ option }}": "Je hebt gestemd: {{ option }}", - "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }} en {{ secondUser }} zijn aan het typen", - "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }} mensen zijn aan het typen", - "Typing": "Typen", - "No messages yet": "Nog geen berichten", - "Message failed to send": "Bericht niet verzonden", - "and {{ count }} others": "{{ count }} anderen", "{{ user }} voted: {{ option }}": "{{ user }} heeft gestemd: {{ option }}", "{{count}} Audios_many": "{{count}} audio's", "{{count}} Audios_one": "{{count}} audio", @@ -191,173 +347,23 @@ "{{count}} Photos_many": "{{count}} foto's", "{{count}} Photos_one": "{{count}} foto", "{{count}} Photos_other": "{{count}} foto's", - "{{count}} Voice messages_many": "{{count}} spraakberichten", - "{{count}} Voice messages_one": "{{count}} spraakbericht", - "{{count}} Voice messages_other": "{{count}} spraakberichten", + "{{count}} Reactions_many": "{{count}} reacties", + "{{count}} Reactions_one": "{{count}} reactie", + "{{count}} Reactions_other": "{{count}} reacties", "{{count}} Videos_many": "{{count}} video's", "{{count}} Videos_one": "{{count}} video", "{{count}} Videos_other": "{{count}} video's", + "{{count}} Voice messages_many": "{{count}} spraakberichten", + "{{count}} Voice messages_one": "{{count}} spraakbericht", + "{{count}} Voice messages_other": "{{count}} spraakberichten", + "{{count}} new messages": "{{count}} nieuwe berichten", + "{{count}} new threads": "{{count}} nieuwe threads", + "{{count}} unread": "{{count}} ongelezen", "{{count}} votes_many": "{{count}} stemmen", "{{count}} votes_one": "{{count}} stem", "{{count}} votes_other": "{{count}} stemmen", - "🏙 Attachment...": "🏙 Bijlage...", - "You have not granted access to the photo library.": "Je hebt geen toegang tot de fotobibliotheek verleend.", - "Change in Settings": "Wijzigen in Instellingen", - "Create a poll and let everyone vote": "Maak een peiling en laat iedereen stemmen", - "Open Camera": "Camera openen", - "Open Files": "Bestanden openen", - "Select files to share": "Selecteer bestanden om te delen", - "Take a photo and share": "Maak een foto en deel deze", - "Take a video and share": "Maak een video en deel deze", - "You have not granted access to your camera": "Je hebt geen toegang tot je camera verleend", - "{{count}} Reactions_many": "{{count}} reacties", - "{{count}} Reactions_one": "{{count}} reactie", - "{{count}} Reactions_other": "{{count}} reacties", - "Tap to remove": "Tik om te verwijderen", - "Draft": "Ontwerp", - "Reminder set": "Reminder set", - "Also sent in channel": "Also sent in channel", - "Replied to a thread": "Replied to a thread", - "View": "View", - "Reminder overdue": "Reminder overdue", - "Poll has ended": "Stemmen beëindigd", - "Reply to a message to start a thread": "Antwoord op een bericht om een thread te starten", - "Couldn't load new threads. Tap to retry": "Kan nieuwe threads niet laden. Tik om opnieuw te proberen", - "{{count}} new threads": "{{count}} nieuwe threads", - "No conversations yet": "Nog geen gesprekken", - "Are you sure you want to delete this group? This can't be undone.": "Weet je zeker dat je deze groep wilt verwijderen? Dit kan niet ongedaan worden gemaakt.", - "Are you sure you want to delete this chat? This can't be undone.": "Weet je zeker dat je deze chat wilt verwijderen? Dit kan niet ongedaan worden gemaakt.", - "Delete chat": "Chat verwijderen", - "Delete group": "Groep verwijderen", - "Archive Chat": "Chat archiveren", - "Archive Group": "Groep archiveren", - "Delete Chat": "Chat verwijderen", - "Delete Group": "Groep verwijderen", - "Leave Chat": "Chat verlaten", - "Leave Group": "Groep verlaten", - "Mute Group": "Groep dempen", - "Offline": "Offline", - "Online": "Online", - "Unarchive Chat": "Chat uit archief halen", - "Unarchive Group": "Groep uit archief halen", - "Unmute Group": "Dempen van groep opheffen", + "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}} leden, {{onlineCount}} online", "{{memberCount}} members, {{onlineCount}} online_one": "{{memberCount}} lid, {{onlineCount}} online", "{{memberCount}} members, {{onlineCount}} online_other": "{{memberCount}} leden, {{onlineCount}} online", - "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}} leden, {{onlineCount}} online", - "{{count}} unread": "{{count}} ongelezen", - "{{count}} new messages": "{{count}} nieuwe berichten", - "Unsupported Attachment": "Ondersteunde bijlage", - "+{{count}} More Options_one": "+{{count}} extra optie", - "+{{count}} More Options_other": "+{{count}} extra opties", - "+{{count}} More Options_many": "+{{count}} extra opties", - "a11y/AI is generating": "AI genereert", - "a11y/AI is thinking": "AI denkt na", - "a11y/Avatar of {{name}}": "Avatar van {{name}}", - "a11y/Connected": "Verbonden", - "a11y/Delivered": "Afgeleverd", - "a11y/Loading": "Laden", - "a11y/Loading failed": "Laden mislukt", - "a11y/Message actions": "Berichtacties", - "a11y/New message from {{user}}": "Nieuw bericht van {{user}}", - "a11y/Offline": "Offline", - "a11y/Open message actions": "Berichtacties openen", - "a11y/Reaction {{emoji}} by {{count}} users": "Reactie {{emoji}} door {{count}} gebruikers", - "a11y/Read": "Gelezen", - "a11y/Reconnecting": "Opnieuw verbinden", - "a11y/Reply to {{user}}": "Antwoorden op {{user}}", - "a11y/Remove edit": "Bewerking verwijderen", - "a11y/Remove reply": "Antwoord verwijderen", - "a11y/Scroll to bottom": "Ga naar beneden", - "a11y/Scroll to bottom, {{count}} new messages": "Ga naar beneden, {{count}} nieuwe berichten", - "a11y/Scroll to latest": "Ga naar het nieuwste bericht", - "a11y/Scroll to latest, {{count}} unread": "Ga naar het nieuwste bericht, {{count}} ongelezen", - "a11y/Send message": "Bericht verzenden", - "a11y/Sending": "Verzenden", - "a11y/Sent": "Verzonden", - "a11y/Voice message recording. Hold to record.": "Spraakbericht opnemen. Houd ingedrukt om op te nemen.", - "a11y/{{count}} new messages": "{{count}} nieuwe berichten", - "a11y/Add attachment": "Add attachment", - "a11y/Close attachments": "Close attachments", - "a11y/Remove attachment": "Remove Attachment", - "a11y/Close poll": "Close poll", - "a11y/Close poll creation": "Close poll creation", - "a11y/Create poll": "Create poll", - "a11y/Decrease maximum votes": "Decrease maximum votes", - "a11y/Delete voice recording": "Delete voice recording", - "a11y/Deselect image": "Deselect image", - "a11y/Deselect video": "Deselect video", - "a11y/Dismiss unread messages": "Dismiss unread messages", - "a11y/Grid Icon": "Grid Icon", - "a11y/Hide Overlay": "Hide Overlay", - "a11y/Increase maximum votes": "Increase maximum votes", - "a11y/Open camera": "Open camera", - "a11y/Open commands": "Open commands", - "a11y/Open file picker": "Open file picker", - "a11y/Open more reactions": "Open more reactions", - "a11y/Open photo picker": "Open photo picker", - "a11y/Open poll creation": "Open poll creation", - "a11y/Open video recorder": "Open video recorder", - "a11y/Play Pause Button": "Play Pause Button", - "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", - "a11y/Save edited message": "Save edited message", - "a11y/Select image": "Select image", - "a11y/Select video": "Select video", - "a11y/Send voice recording": "Send voice recording", - "a11y/Share Button": "Share Button", - "a11y/Start voice recording": "Start voice recording", - "a11y/Stop voice recording": "Stop voice recording", - "a11y/Notifications": "Meldingen", - "a11y/Dismiss notification": "Melding sluiten", - "Attachment upload blocked due to {{reason}}": "Uploaden van bijlage geblokkeerd vanwege {{reason}}", - "Attachment upload failed due to {{reason}}": "Uploaden van bijlage mislukt vanwege {{reason}}", - "Command not available": "Opdracht niet beschikbaar", - "Command not available while editing": "Opdracht niet beschikbaar tijdens bewerken", - "Command not available while replying": "Opdracht niet beschikbaar tijdens beantwoorden", - "Error reproducing the recording": "Fout bij afspelen van de opname", - "Error uploading attachment": "Fout bij uploaden van bijlage", - "Failed to create the poll": "Poll maken mislukt", - "Failed to create the poll due to {{reason}}": "Poll maken mislukt vanwege {{reason}}", - "Failed to end the poll": "Poll beëindigen mislukt", - "Failed to end the poll due to {{reason}}": "Poll beëindigen mislukt vanwege {{reason}}", - "Failed to jump to the first unread message": "Kon niet naar het eerste ongelezen bericht gaan", - "Failed to retrieve location": "Kon locatie niet ophalen", - "Failed to share location": "Kon locatie niet delen", - "File is required for upload attachment": "Er is een bestand vereist om een bijlage te uploaden", - "Local upload attachment missing local id": "Lokale uploadbijlage mist een lokale ID", - "Poll ended": "Poll beëindigd", - "Reached the vote limit. Remove an existing vote first.": "Stemlimiet bereikt. Verwijder eerst een bestaande stem.", - "Thread has not been found": "Thread is niet gevonden", - "Wait until all attachments have uploaded": "Wacht tot alle bijlagen zijn geüpload", - "Cannot seek in the recording": "Kan niet spoelen in de opname", - "Channel archived": "Kanaal gearchiveerd", - "Channel muted": "Kanaal gedempt", - "Channel pinned": "Kanaal vastgezet", - "Channel unarchived": "Kanaal uit archief gehaald", - "Channel unmuted": "Kanaal niet meer gedempt", - "Channel unpinned": "Kanaal losgemaakt", - "Edit message request failed": "Verzoek om bericht te bewerken mislukt", - "Failed to block user": "Gebruiker blokkeren mislukt", - "Failed to leave channel": "Kanaal verlaten mislukt", - "Failed to play the recording": "Opname afspelen mislukt", - "Failed to update channel archive status": "Bijwerken van kanaalarchiefstatus mislukt", - "Failed to update channel mute status": "Bijwerken van dempstatus van kanaal mislukt", - "Failed to update channel pinned status": "Bijwerken van vastzetstatus van kanaal mislukt", - "Left channel": "Kanaal verlaten", - "Recording format is not supported and cannot be reproduced": "Opnameformaat wordt niet ondersteund en kan niet worden afgespeeld", - "Send message request failed": "Verzoek om bericht te verzenden mislukt", - "User blocked": "Gebruiker geblokkeerd", - "User unblocked": "Gebruiker gedeblokkeerd", - "{{ user }} has been muted": "{{ user }} is gedempt", - "{{ user }} has been unmuted": "{{ user }} is niet meer gedempt", - "size limit": "groottelimiet", - "unknown error": "onbekende fout", - "unsupported file type": "niet-ondersteund bestandstype", - "a11y/Activate to view results": "Activeer om resultaten te bekijken", - "a11y/End vote": "Stemming beëindigen", - "a11y/Show all options": "Alle opties weergeven", - "a11y/Vote on {{option}}": "Stem op {{option}}", - "a11y/Double tap and hold to activate contextual menu": "Dubbeltik en houd vast om het contextmenu te openen", - "a11y/Swipe right to go through different actions": "Veeg naar rechts om door verschillende acties te bladeren", - "a11y/Close": "Close", - "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss." + "🏙 Attachment...": "🏙 Bijlage..." } diff --git a/package/src/i18n/pt-br.json b/package/src/i18n/pt-br.json index 54da88ca23..52def1580f 100644 --- a/package/src/i18n/pt-br.json +++ b/package/src/i18n/pt-br.json @@ -1,4 +1,7 @@ { + "+{{count}} More Options_many": "+{{count}} opções a mais", + "+{{count}} More Options_one": "+{{count}} opção a mais", + "+{{count}} More Options_other": "+{{count}} opções a mais", "+{{count}}_many": "+{{count}}", "+{{count}}_one": "+{{count}}", "+{{count}}_other": "+{{count}}", @@ -11,33 +14,60 @@ "Allow access to your Gallery": "Permitir acesso à sua Galeria", "Allow camera access in device settings": "Permitir acesso à câmera nas configurações do dispositivo", "Also send to channel": "Também enviar para o canal", + "Also sent in channel": "También enviado en el canal", "Anonymous": "Anônimo", "Anonymous voting": "Enquete anônima", + "Archive Chat": "Arquivar conversa", + "Archive Group": "Arquivar grupo", + "Are you sure you want to delete this chat? This can't be undone.": "Tem certeza de que deseja excluir esta conversa? Esta ação não pode ser desfeita.", + "Are you sure you want to delete this group? This can't be undone.": "Tem certeza de que deseja excluir este grupo? Esta ação não pode ser desfeita.", "Are you sure you want to permanently delete this message?": "Tem certeza de que deseja excluir esta mensagem permanentemente?", "Are you sure?": "Tem certeza?", "Ask a question": "Fazer uma pergunta", + "Attachment upload blocked due to {{reason}}": "Upload do anexo bloqueado devido a {{reason}}", + "Attachment upload failed due to {{reason}}": "Falha no upload do anexo devido a {{reason}}", "Audio": "Áudio", "Ban User": "Banir Usuário", "Block User": "Bloquear Usuário", "Cancel": "Cancelar", "Cannot Flag Message": "Não é possível reportar a mensagem", + "Cannot seek in the recording": "Não é possível navegar pela gravação", + "Change in Settings": "Alterar nos Ajustes", + "Channel archived": "Canal arquivado", + "Channel muted": "Canal silenciado", + "Channel pinned": "Canal fixado", + "Channel unarchived": "Canal desarquivado", + "Channel unmuted": "Canal com silenciamento removido", + "Channel unpinned": "Canal desafixado", + "Choose between 2–10 options": "Escolha entre 2 e 10 opções", + "Command not available": "Comando indisponível", + "Command not available while editing": "Comando indisponível durante a edição", + "Command not available while replying": "Comando indisponível durante a resposta", "Consider how your comment might make others feel and be sure to follow our Community Guidelines": "Considere como seu comentário pode fazer os outros se sentirem e certifique-se de seguir nossas Diretrizes da Comunidade", "Copy Message": "Copiar Mensagem", + "Couldn't load new threads. Tap to retry": "Não foi possível carregar novos tópicos. Toque para tentar novamente", "Create Poll": "Criar enquete", + "Create a poll and let everyone vote": "Crie uma enquete e deixe todos votarem", "Delete": "Excluir", + "Delete Chat": "Excluir conversa", + "Delete Group": "Excluir grupo", "Delete Message": "Excluir Mensagem", + "Delete chat": "Excluir conversa", "Delete for me": "Excluir para mim", + "Delete group": "Excluir grupo", "Device camera is used to take photos or videos.": "A câmera do dispositivo é usada para tirar fotos ou vídeos.", "Device gallery permissions is used to take photos or videos.": "As permissões da galeria do dispositivo são usadas para tirar fotos ou vídeos.", "Do you want to send a copy of this message to a moderator for further investigation?": "Deseja enviar uma cópia desta mensagem para um moderador para investigação adicional?", + "Draft": "Rascunho", "Due since {{ dueSince }}": "Vencido desde {{ dueSince }}", "Edit Message": "Editar Mensagem", + "Edit message request failed": "Falha na solicitação de edição da mensagem", "Edited": "Editado", "Editing Message": "Editando Mensagem", "Emoji matching": "Correspondência de Emoji", "Empty message...": "Mensagem vazia...", - "Enter a new option": "Digite uma nova opção", "End Vote": "Encerrar votação", + "Enter a new option": "Digite uma nova opção", "Error adding flag": "Erro ao sinalizar mensagem", "Error deleting message": "Erro ao excluir mensagem", "Error fetching reactions": "Erro ao buscar reações", @@ -48,8 +78,24 @@ "Error muting a user ...": "Erro ao silenciar um usuário ...", "Error pinning message": "Erro ao fixar mensagem", "Error removing message pin": "Erro ao remover fixação da mensagem", + "Error reproducing the recording": "Erro ao reproduzir a gravação", "Error unmuting a user ...": "Erro ao remover silenciamento de um usuário ...", + "Error uploading attachment": "Erro ao fazer upload do anexo", "Error while loading, please reload/refresh": "Erro ao carregar, por favor recarregue/atualize", + "Failed to block user": "Falha ao bloquear usuário", + "Failed to create the poll": "Falha ao criar a enquete", + "Failed to create the poll due to {{reason}}": "Falha ao criar a enquete devido a {{reason}}", + "Failed to end the poll": "Falha ao encerrar a enquete", + "Failed to end the poll due to {{reason}}": "Falha ao encerrar a enquete devido a {{reason}}", + "Failed to jump to the first unread message": "Falha ao ir para a primeira mensagem não lida", + "Failed to leave channel": "Falha ao sair do canal", + "Failed to play the recording": "Falha ao reproduzir a gravação", + "Failed to retrieve location": "Falha ao obter localização", + "Failed to share location": "Falha ao compartilhar localização", + "Failed to update channel archive status": "Falha ao atualizar o status de arquivamento do canal", + "Failed to update channel mute status": "Falha ao atualizar o status de silenciamento do canal", + "Failed to update channel pinned status": "Falha ao atualizar o status de fixação do canal", + "File is required for upload attachment": "É necessário um arquivo para fazer upload de um anexo", "File is too large: {{ size }}, maximum upload size is {{ limit }}": "O arquivo é muito grande: {{ size }}, o tamanho máximo de upload é {{ limit }}", "File too large": "Arquivo muito grande", "File type not supported": "Tipo de arquivo não suportado", @@ -63,41 +109,52 @@ "Hold to start recording.": "Mantenha pressionado para começar a gravar.", "How about sending your first message to a friend?": "Que tal enviar sua primeira mensagem para um amigo?", "Instant Commands": "Comandos Instantâneos", + "Leave Chat": "Sair da conversa", + "Leave Group": "Sair do grupo", + "Left channel": "Você saiu do canal", "Let others add options": "Permitir que outros adicionem opções", "Let's start chatting!": "Vamos começar a conversar!", + "Limit votes per person": "Limite os votos por pessoa", "Links are disabled": "Links estão desabilitados", "Live Location": "Localização ao vivo", "Loading channels...": "Carregando canais...", "Loading messages...": "Carregando mensagens...", "Loading threads...": "Carregando tópicos...", "Loading...": "Carregando...", + "Local upload attachment missing local id": "ID local ausente no anexo local para upload", "Location": "Localização", "Mark as Unread": "Marcar como não lido", "Maximum number of files reached": "Número máximo de arquivos atingido", "Message Reactions": "Reações à Mensagem", "Message deleted": "Mensagem excluída", - "Message has been successfully flagged": "Mensagem sinalizada com sucesso", + "Message failed to send": "Mensagem não enviada", "Message flagged": "Mensagem sinalizada", + "Message has been successfully flagged": "Mensagem sinalizada com sucesso", "Message marked as unread": "Mensagem marcada como não lida", "Message pinned": "Mensagem fixada", "Message unpinned": "Mensagem desafixada", "Multiple votes": "Votos múltiplos", - "Network error": "Erro de rede", - "Select more than one option": "Selecione mais de uma opção", - "Limit votes per person": "Limite os votos por pessoa", - "Choose between 2–10 options": "Escolha entre 2 e 10 opções", + "Mute Group": "Silenciar grupo", "Mute User": "Silenciar Usuário", + "Network error": "Erro de rede", "No chats here yet…": "Ainda não há chats aqui...", + "No conversations yet": "Ainda não há conversas", "No items exist": "Nenhum item", + "No messages yet": "Ainda não há mensagens", "No threads here yet": "Ainda não há tópicos aqui", "Not supported": "Não suportado", "Nothing yet...": "Nada ainda...", + "Notify all {{ role }} members": "Notify all {{ role }} members", + "Offline": "Offline", "Ok": "Ok", + "Online": "Online", "Only visible to you": "Apenas visível para você", + "Open Camera": "Abrir camera", + "Open Files": "Abrir arquivos", "Open Settings": "Abrir Configurações", "Option": "Opção", - "Option {{count}}": "Opção {{count}}", "Option already exists": "A opção já existe", + "Option {{count}}": "Opção {{count}}", "Options": "Opções", "Photo": "Foto", "Photos and Videos": "Fotos e Vídeos", @@ -109,16 +166,26 @@ "Poll Comments": "Comentários da enquete", "Poll Options": "Opções da enquete", "Poll Results": "Resultados da enquete", + "Poll ended": "Enquete encerrada", + "Poll has ended": "Votação encerrada", "Questions": "Perguntas", + "Reached the vote limit. Remove an existing vote first.": "Limite de votos atingido. Remova um voto existente primeiro.", "Reconnecting...": "Reconectando...", + "Recording format is not supported and cannot be reproduced": "O formato da gravação não é compatível e não pode ser reproduzido", + "Reminder overdue": "Recordatorio vencido", + "Reminder set": "Recordatorio establecido", + "Replied to a thread": "Respondido a un hilo", "Reply": "Responder", - "Reply to {{name}}": "Responder a {{name}}", "Reply to Message": "Responder à Mensagem", + "Reply to a message to start a thread": "Responder a uma mensagem para iniciar um tópico", + "Reply to {{name}}": "Responder a {{name}}", "Resend": "Reenviar", "Retry Upload": "Tentar upload novamente", "SEND": "ENVIAR", "Search": "Pesquisar", "Select More Photos": "Selecionar Mais Fotos", + "Select files to share": "Selecione arquivos para compartilhar", + "Select more than one option": "Selecione mais de uma opção", "Select one": "Selecione uma", "Select one or more": "Selecione uma ou mais", "Select up to {{count}}_many": "Selecione até {{count}}", @@ -126,26 +193,39 @@ "Select up to {{count}}_other": "Selecione até {{count}}", "Send Anyway": "Enviar de qualquer maneira", "Send a message": "Enviar uma mensagem", + "Send message request failed": "Falha na solicitação de envio da mensagem", "Sending links is not allowed in this conversation": "Não é permitido enviar links nesta conversa", "Show All": "Mostrar tudo", "Slide to Cancel": "Deslize para cancelar", "Slow mode ON": "Modo Lento ATIVADO", "Slow mode, wait {{seconds}}s...": "Modo lento, aguarde {{seconds}}s...", "Suggest an option": "Sugerir uma opção", + "Take a photo and share": "Tire uma foto e compartilhe", + "Take a video and share": "Grave um video e compartilhe", + "Tap to remove": "Toque para remover", "The message has been reported to a moderator.": "A mensagem foi relatada a um moderador.", "The source message was deleted": "A mensagem original foi excluída", "Thinking...": "Pensando...", "This reply was deleted": "Esta resposta foi excluída", "Thread Reply": "Respostas de Tópico", + "Thread has not been found": "Thread não encontrada", "Type a number from 2 to 10": "Digite um número de 2 a 10", + "Typing": "Digitando", + "Unarchive Chat": "Desarquivar conversa", + "Unarchive Group": "Desarquivar grupo", "Unban User": "Desbanir Usuário", "Unblock User": "Desbloquear Usuário", "Unknown User": "Usuário Desconhecido", + "Unmute Group": "Remover grupo do modo silencioso", "Unmute User": "Remover usuário do modo silencioso", "Unpin from Conversation": "Desmarcar como fixado na conversa", "Unread Messages": "Mensagens não lidas", + "Unsupported Attachment": "Anexo não suportado", "Update your comment": "Atualize seu comentário", + "User blocked": "Usuário bloqueado", + "User unblocked": "Usuário desbloqueado", "Video": "Vídeo", + "View": "Ver", "View Results": "Ver resultados", "View {{count}} comments_many": "Ver {{count}} comentários", "View {{count}} comments_one": "Ver {{count}} comentário", @@ -153,13 +233,90 @@ "Voice message": "Mensagem de voz", "Voice message ({{duration}})": "Mensagem de voz ({{duration}})", "Voice message deleted": "Mensagem de voz excluída", - "Your comment": "Seu comentário", + "Wait until all attachments have uploaded": "Aguarde até que todos os anexos tenham sido enviados", "You": "Você", "You can't send messages in this channel": "Você não pode enviar mensagens neste canal", + "You have not granted access to the photo library.": "Você não concedeu acesso à biblioteca de fotos.", + "You have not granted access to your camera": "Você não concedeu acesso à sua câmera", + "You voted: {{ option }}": "Você votou: {{ option }}", + "Your comment": "Seu comentário", + "a11y/AI is generating": "A IA está gerando", + "a11y/AI is thinking": "A IA está pensando", + "a11y/Activate to view results": "Ative para ver os resultados", + "a11y/Add attachment": "Add attachment", + "a11y/Avatar of {{name}}": "Avatar de {{name}}", + "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.", + "a11y/Close": "Close", + "a11y/Close attachments": "Close attachments", + "a11y/Close poll": "Close poll", + "a11y/Close poll creation": "Close poll creation", + "a11y/Command suggestions available": "Command suggestions available", + "a11y/Connected": "Conectado", + "a11y/Create poll": "Create poll", + "a11y/Decrease maximum votes": "Decrease maximum votes", + "a11y/Delete voice recording": "Delete voice recording", + "a11y/Delivered": "Entregue", + "a11y/Deselect image": "Deselect image", + "a11y/Deselect video": "Deselect video", + "a11y/Dismiss notification": "Fechar notificação", + "a11y/Dismiss unread messages": "Dismiss unread messages", + "a11y/Double tap and hold to activate contextual menu": "Toque duas vezes e segure para ativar o menu contextual", + "a11y/Emoji suggestions available": "Emoji suggestions available", + "a11y/End vote": "Encerrar votação", + "a11y/Grid Icon": "Grid Icon", + "a11y/Hide Overlay": "Hide Overlay", + "a11y/Increase maximum votes": "Increase maximum votes", + "a11y/Loading": "Carregando", + "a11y/Loading failed": "Falha ao carregar", + "a11y/Mention suggestions available": "Mention suggestions available", + "a11y/Message actions": "Ações da mensagem", + "a11y/New message from {{user}}": "Nova mensagem de {{user}}", + "a11y/Notifications": "Notificações", + "a11y/Offline": "Offline", + "a11y/Open camera": "Open camera", + "a11y/Open commands": "Open commands", + "a11y/Open file picker": "Open file picker", + "a11y/Open message actions": "Abrir ações da mensagem", + "a11y/Open more reactions": "Open more reactions", + "a11y/Open photo picker": "Open photo picker", + "a11y/Open poll creation": "Open poll creation", + "a11y/Open video recorder": "Open video recorder", + "a11y/Play Pause Button": "Play Pause Button", + "a11y/Reaction {{emoji}} by {{count}} users": "Reação {{emoji}} de {{count}} usuários", + "a11y/Read": "Lido", + "a11y/Reconnecting": "Reconectando", + "a11y/Remove attachment": "Remove Attachment", + "a11y/Remove edit": "Remover edição", + "a11y/Remove reply": "Remover resposta", + "a11y/Reply to {{user}}": "Responder a {{user}}", + "a11y/Save edited message": "Save edited message", + "a11y/Scroll to bottom": "Ir para o final", + "a11y/Scroll to bottom, {{count}} new messages": "Ir para o final, {{count}} novas mensagens", + "a11y/Scroll to latest": "Ir para a mensagem mais recente", + "a11y/Scroll to latest, {{count}} unread": "Ir para a mensagem mais recente, {{count}} não lidas", + "a11y/Select image": "Select image", + "a11y/Select video": "Select video", + "a11y/Send message": "Enviar mensagem", + "a11y/Send voice recording": "Send voice recording", + "a11y/Sending": "Enviando", + "a11y/Sent": "Enviado", + "a11y/Share Button": "Share Button", + "a11y/Show all options": "Mostrar todas as opções", + "a11y/Start voice recording": "Start voice recording", + "a11y/Stop voice recording": "Stop voice recording", + "a11y/Swipe right to go through different actions": "Deslize para a direita para percorrer as diferentes ações", + "a11y/Voice message recording. Hold to record.": "Gravação de mensagem de voz. Mantenha pressionado para gravar.", + "a11y/Vote on {{option}}": "Votar em {{option}}", + "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", + "a11y/{{count}} new messages": "{{count}} novas mensagens", + "and {{ count }} others": "{{ count }} outros", "duration/Location end at": "{{ milliseconds | durationFormatter(withSuffix: false) }}", "duration/Message reminder": "{{ milliseconds | durationFormatter(withSuffix: true) }}", "duration/Remind Me": "{{ milliseconds | durationFormatter(withSuffix: true) }}", + "mention/Channel Description": "Notify everyone in this channel", + "mention/Here Description": "Notify every online member in this channel", "replied to": "respondeu a", + "size limit": "limite de tamanho", "timestamp/ChannelPreviewStatus": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[Ontem]\",\"lastWeek\":\"dddd\",\"nextDay\":\"[Amanhã]\",\"nextWeek\":\"dddd [às] LT\",\"sameDay\":\"LT\",\"sameElse\":\"L\"}) }}", "timestamp/ImageGalleryHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/InlineDateSeparator": "{{ timestamp | timestampFormatter(calendar: true) }}", @@ -170,17 +327,16 @@ "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/StickyHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/ThreadListItem": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[Ontem]\",\"lastWeek\":\"dddd\",\"nextDay\":\"[Amanhã]\",\"nextWeek\":\"dddd [às] LT\",\"sameDay\":\"LT\",\"sameElse\":\"L\"}) }}", + "unknown error": "erro desconhecido", + "unsupported file type": "tipo de arquivo não compatível", "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} e mais {{ nonSelfUserLength }} pessoa(s) estão digitando", + "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }} e {{ secondUser }} estão digitando", "{{ index }} of {{ photoLength }}": "{{ index }} de {{ photoLength }}", + "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }} pessoas estão digitando", "{{ replyCount }} Replies": "{{ replyCount }} Respostas", + "{{ user }} has been muted": "{{ user }} foi silenciado", + "{{ user }} has been unmuted": "{{ user }} teve o silenciamento removido", "{{ user }} is typing": "{{ user }} está digitando", - "You voted: {{ option }}": "Você votou: {{ option }}", - "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }} e {{ secondUser }} estão digitando", - "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }} pessoas estão digitando", - "Typing": "Digitando", - "No messages yet": "Ainda não há mensagens", - "Message failed to send": "Mensagem não enviada", - "and {{ count }} others": "{{ count }} outros", "{{ user }} voted: {{ option }}": "{{ user }} votou: {{ option }}", "{{count}} Audios_many": "{{count}} áudios", "{{count}} Audios_one": "{{count}} áudio", @@ -191,173 +347,23 @@ "{{count}} Photos_many": "{{count}} fotos", "{{count}} Photos_one": "{{count}} foto", "{{count}} Photos_other": "{{count}} fotos", - "{{count}} Voice messages_many": "{{count}} mensagens de voz", - "{{count}} Voice messages_one": "{{count}} mensagem de voz", - "{{count}} Voice messages_other": "{{count}} mensagens de voz", + "{{count}} Reactions_many": "{{count}} reações", + "{{count}} Reactions_one": "{{count}} reação", + "{{count}} Reactions_other": "{{count}} reações", "{{count}} Videos_many": "{{count}} vídeos", "{{count}} Videos_one": "{{count}} vídeo", "{{count}} Videos_other": "{{count}} vídeos", + "{{count}} Voice messages_many": "{{count}} mensagens de voz", + "{{count}} Voice messages_one": "{{count}} mensagem de voz", + "{{count}} Voice messages_other": "{{count}} mensagens de voz", + "{{count}} new messages": "{{count}} novas mensagens", + "{{count}} new threads": "{{count}} novos tópicos", + "{{count}} unread": "{{count}} não lidas", "{{count}} votes_many": "{{count}} votos", "{{count}} votes_one": "{{count}} voto", "{{count}} votes_other": "{{count}} votos", - "🏙 Attachment...": "🏙 Anexo...", - "You have not granted access to the photo library.": "Você não concedeu acesso à biblioteca de fotos.", - "Change in Settings": "Alterar nos Ajustes", - "Create a poll and let everyone vote": "Crie uma enquete e deixe todos votarem", - "Open Camera": "Abrir camera", - "Open Files": "Abrir arquivos", - "Select files to share": "Selecione arquivos para compartilhar", - "Take a photo and share": "Tire uma foto e compartilhe", - "Take a video and share": "Grave um video e compartilhe", - "You have not granted access to your camera": "Você não concedeu acesso à sua câmera", - "{{count}} Reactions_many": "{{count}} reações", - "{{count}} Reactions_one": "{{count}} reação", - "{{count}} Reactions_other": "{{count}} reações", - "Tap to remove": "Toque para remover", - "Draft": "Rascunho", - "Reminder set": "Recordatorio establecido", - "Also sent in channel": "También enviado en el canal", - "Replied to a thread": "Respondido a un hilo", - "View": "Ver", - "Reminder overdue": "Recordatorio vencido", - "Poll has ended": "Votação encerrada", - "Reply to a message to start a thread": "Responder a uma mensagem para iniciar um tópico", - "Couldn't load new threads. Tap to retry": "Não foi possível carregar novos tópicos. Toque para tentar novamente", - "{{count}} new threads": "{{count}} novos tópicos", - "No conversations yet": "Ainda não há conversas", - "Are you sure you want to delete this group? This can't be undone.": "Tem certeza de que deseja excluir este grupo? Esta ação não pode ser desfeita.", - "Are you sure you want to delete this chat? This can't be undone.": "Tem certeza de que deseja excluir esta conversa? Esta ação não pode ser desfeita.", - "Delete chat": "Excluir conversa", - "Delete group": "Excluir grupo", - "Archive Chat": "Arquivar conversa", - "Archive Group": "Arquivar grupo", - "Delete Chat": "Excluir conversa", - "Delete Group": "Excluir grupo", - "Leave Chat": "Sair da conversa", - "Leave Group": "Sair do grupo", - "Mute Group": "Silenciar grupo", - "Offline": "Offline", - "Online": "Online", - "Unarchive Chat": "Desarquivar conversa", - "Unarchive Group": "Desarquivar grupo", - "Unmute Group": "Remover grupo do modo silencioso", + "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}} membros, {{onlineCount}} online", "{{memberCount}} members, {{onlineCount}} online_one": "{{memberCount}} membro, {{onlineCount}} online", "{{memberCount}} members, {{onlineCount}} online_other": "{{memberCount}} membros, {{onlineCount}} online", - "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}} membros, {{onlineCount}} online", - "{{count}} unread": "{{count}} não lidas", - "{{count}} new messages": "{{count}} novas mensagens", - "Unsupported Attachment": "Anexo não suportado", - "+{{count}} More Options_one": "+{{count}} opção a mais", - "+{{count}} More Options_other": "+{{count}} opções a mais", - "+{{count}} More Options_many": "+{{count}} opções a mais", - "a11y/AI is generating": "A IA está gerando", - "a11y/AI is thinking": "A IA está pensando", - "a11y/Avatar of {{name}}": "Avatar de {{name}}", - "a11y/Connected": "Conectado", - "a11y/Delivered": "Entregue", - "a11y/Loading": "Carregando", - "a11y/Loading failed": "Falha ao carregar", - "a11y/Message actions": "Ações da mensagem", - "a11y/New message from {{user}}": "Nova mensagem de {{user}}", - "a11y/Offline": "Offline", - "a11y/Open message actions": "Abrir ações da mensagem", - "a11y/Reaction {{emoji}} by {{count}} users": "Reação {{emoji}} de {{count}} usuários", - "a11y/Read": "Lido", - "a11y/Reconnecting": "Reconectando", - "a11y/Reply to {{user}}": "Responder a {{user}}", - "a11y/Remove edit": "Remover edição", - "a11y/Remove reply": "Remover resposta", - "a11y/Scroll to bottom": "Ir para o final", - "a11y/Scroll to bottom, {{count}} new messages": "Ir para o final, {{count}} novas mensagens", - "a11y/Scroll to latest": "Ir para a mensagem mais recente", - "a11y/Scroll to latest, {{count}} unread": "Ir para a mensagem mais recente, {{count}} não lidas", - "a11y/Send message": "Enviar mensagem", - "a11y/Sending": "Enviando", - "a11y/Sent": "Enviado", - "a11y/Voice message recording. Hold to record.": "Gravação de mensagem de voz. Mantenha pressionado para gravar.", - "a11y/{{count}} new messages": "{{count}} novas mensagens", - "a11y/Add attachment": "Add attachment", - "a11y/Close attachments": "Close attachments", - "a11y/Remove attachment": "Remove Attachment", - "a11y/Close poll": "Close poll", - "a11y/Close poll creation": "Close poll creation", - "a11y/Create poll": "Create poll", - "a11y/Decrease maximum votes": "Decrease maximum votes", - "a11y/Delete voice recording": "Delete voice recording", - "a11y/Deselect image": "Deselect image", - "a11y/Deselect video": "Deselect video", - "a11y/Dismiss unread messages": "Dismiss unread messages", - "a11y/Grid Icon": "Grid Icon", - "a11y/Hide Overlay": "Hide Overlay", - "a11y/Increase maximum votes": "Increase maximum votes", - "a11y/Open camera": "Open camera", - "a11y/Open commands": "Open commands", - "a11y/Open file picker": "Open file picker", - "a11y/Open more reactions": "Open more reactions", - "a11y/Open photo picker": "Open photo picker", - "a11y/Open poll creation": "Open poll creation", - "a11y/Open video recorder": "Open video recorder", - "a11y/Play Pause Button": "Play Pause Button", - "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", - "a11y/Save edited message": "Save edited message", - "a11y/Select image": "Select image", - "a11y/Select video": "Select video", - "a11y/Send voice recording": "Send voice recording", - "a11y/Share Button": "Share Button", - "a11y/Start voice recording": "Start voice recording", - "a11y/Stop voice recording": "Stop voice recording", - "a11y/Notifications": "Notificações", - "a11y/Dismiss notification": "Fechar notificação", - "Attachment upload blocked due to {{reason}}": "Upload do anexo bloqueado devido a {{reason}}", - "Attachment upload failed due to {{reason}}": "Falha no upload do anexo devido a {{reason}}", - "Command not available": "Comando indisponível", - "Command not available while editing": "Comando indisponível durante a edição", - "Command not available while replying": "Comando indisponível durante a resposta", - "Error reproducing the recording": "Erro ao reproduzir a gravação", - "Error uploading attachment": "Erro ao fazer upload do anexo", - "Failed to create the poll": "Falha ao criar a enquete", - "Failed to create the poll due to {{reason}}": "Falha ao criar a enquete devido a {{reason}}", - "Failed to end the poll": "Falha ao encerrar a enquete", - "Failed to end the poll due to {{reason}}": "Falha ao encerrar a enquete devido a {{reason}}", - "Failed to jump to the first unread message": "Falha ao ir para a primeira mensagem não lida", - "Failed to retrieve location": "Falha ao obter localização", - "Failed to share location": "Falha ao compartilhar localização", - "File is required for upload attachment": "É necessário um arquivo para fazer upload de um anexo", - "Local upload attachment missing local id": "ID local ausente no anexo local para upload", - "Poll ended": "Enquete encerrada", - "Reached the vote limit. Remove an existing vote first.": "Limite de votos atingido. Remova um voto existente primeiro.", - "Thread has not been found": "Thread não encontrada", - "Wait until all attachments have uploaded": "Aguarde até que todos os anexos tenham sido enviados", - "Cannot seek in the recording": "Não é possível navegar pela gravação", - "Channel archived": "Canal arquivado", - "Channel muted": "Canal silenciado", - "Channel pinned": "Canal fixado", - "Channel unarchived": "Canal desarquivado", - "Channel unmuted": "Canal com silenciamento removido", - "Channel unpinned": "Canal desafixado", - "Edit message request failed": "Falha na solicitação de edição da mensagem", - "Failed to block user": "Falha ao bloquear usuário", - "Failed to leave channel": "Falha ao sair do canal", - "Failed to play the recording": "Falha ao reproduzir a gravação", - "Failed to update channel archive status": "Falha ao atualizar o status de arquivamento do canal", - "Failed to update channel mute status": "Falha ao atualizar o status de silenciamento do canal", - "Failed to update channel pinned status": "Falha ao atualizar o status de fixação do canal", - "Left channel": "Você saiu do canal", - "Recording format is not supported and cannot be reproduced": "O formato da gravação não é compatível e não pode ser reproduzido", - "Send message request failed": "Falha na solicitação de envio da mensagem", - "User blocked": "Usuário bloqueado", - "User unblocked": "Usuário desbloqueado", - "{{ user }} has been muted": "{{ user }} foi silenciado", - "{{ user }} has been unmuted": "{{ user }} teve o silenciamento removido", - "size limit": "limite de tamanho", - "unknown error": "erro desconhecido", - "unsupported file type": "tipo de arquivo não compatível", - "a11y/Activate to view results": "Ative para ver os resultados", - "a11y/End vote": "Encerrar votação", - "a11y/Show all options": "Mostrar todas as opções", - "a11y/Vote on {{option}}": "Votar em {{option}}", - "a11y/Double tap and hold to activate contextual menu": "Toque duas vezes e segure para ativar o menu contextual", - "a11y/Swipe right to go through different actions": "Deslize para a direita para percorrer as diferentes ações", - "a11y/Close": "Close", - "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss." + "🏙 Attachment...": "🏙 Anexo..." } diff --git a/package/src/i18n/ru.json b/package/src/i18n/ru.json index 32b2f456ed..dd8cd82d27 100644 --- a/package/src/i18n/ru.json +++ b/package/src/i18n/ru.json @@ -1,4 +1,7 @@ { + "+{{count}} More Options_many": "+ещё {{count}} вариантов", + "+{{count}} More Options_one": "+ещё {{count}} вариант", + "+{{count}} More Options_other": "+ещё {{count}} варианта", "+{{count}}_many": "+{{count}}", "+{{count}}_one": "+{{count}}", "+{{count}}_other": "+{{count}}", @@ -11,33 +14,60 @@ "Allow access to your Gallery": "Разрешить доступ к вашей галерее", "Allow camera access in device settings": "Разрешите доступ к камере в настройках устройства.", "Also send to channel": "Также отправить на канал", + "Also sent in channel": "Также отправлено в канал", "Anonymous": "Анонимный", "Anonymous voting": "Анонимный опрос", + "Archive Chat": "Архивировать чат", + "Archive Group": "Архивировать группу", + "Are you sure you want to delete this chat? This can't be undone.": "Вы уверены, что хотите удалить этот чат? Это действие нельзя отменить.", + "Are you sure you want to delete this group? This can't be undone.": "Вы уверены, что хотите удалить эту группу? Это действие нельзя отменить.", "Are you sure you want to permanently delete this message?": "Вы действительно хотите удалить это сообщение без возможности восстановления?", "Are you sure?": "Вы уверены?", "Ask a question": "Задайте вопрос", + "Attachment upload blocked due to {{reason}}": "Загрузка вложения заблокирована из-за {{reason}}", + "Attachment upload failed due to {{reason}}": "Не удалось загрузить вложение из-за {{reason}}", "Audio": "Аудио", "Ban User": "Заблокировать Пользователя", "Block User": "Заблокировать пользователя", "Cancel": "Отмена", "Cannot Flag Message": "Невозможно пожаловаться на сообщение", + "Cannot seek in the recording": "Невозможно перемотать запись", + "Change in Settings": "Изменить в настройках", + "Channel archived": "Канал архивирован", + "Channel muted": "Уведомления канала отключены", + "Channel pinned": "Канал закреплен", + "Channel unarchived": "Канал разархивирован", + "Channel unmuted": "Уведомления канала включены", + "Channel unpinned": "Канал откреплен", + "Choose between 2–10 options": "Выберите от 2 до 10 вариантов", + "Command not available": "Команда недоступна", + "Command not available while editing": "Команда недоступна во время редактирования", + "Command not available while replying": "Команда недоступна во время ответа", "Consider how your comment might make others feel and be sure to follow our Community Guidelines": "Обдумайте, как ваш комментарий может повлиять на других, и убедитесь, что вы следуете нашим правилам сообщества", "Copy Message": "Копировать сообщение", + "Couldn't load new threads. Tap to retry": "Не удалось загрузить новые темы. Нажмите, чтобы попробовать снова", "Create Poll": "Создать опрос", + "Create a poll and let everyone vote": "Создайте опрос и дайте всем проголосовать", "Delete": "удалять", + "Delete Chat": "Удалить чат", + "Delete Group": "Удалить группу", "Delete Message": "Удалить сообщение", + "Delete chat": "Удалить чат", "Delete for me": "Удалить для себя", + "Delete group": "Удалить группу", "Device camera is used to take photos or videos.": "Камера устройства используется для съемки фотографий или видео.", "Device gallery permissions is used to take photos or videos.": "Разрешения галереи устройства используются для съемки фото или видео.", "Do you want to send a copy of this message to a moderator for further investigation?": "Вы хотите отправить копию этого сообщения модератору для дальнейшего изучения?", + "Draft": "Черновик", "Due since {{ dueSince }}": "Срок с {{ dueSince }}", "Edit Message": "Редактировать сообщение", + "Edit message request failed": "Не удалось изменить сообщение", "Edited": "Отредактировано", "Editing Message": "Редактирование сообщения", "Emoji matching": "Соответствие эмодзи", "Empty message...": "Пустое сообщение...", - "Enter a new option": "Введите новый вариант", "End Vote": "Завершить голосование", + "Enter a new option": "Введите новый вариант", "Error adding flag": "Ошибка при отметке сообщения", "Error deleting message": "Ошибка при удалении сообщения", "Error fetching reactions": "Ошибка при загрузке реакций", @@ -48,8 +78,24 @@ "Error muting a user ...": "Ошибка при отключении пользователя ...", "Error pinning message": "Ошибка при закреплении сообщения", "Error removing message pin": "Ошибка при откреплении сообщения", + "Error reproducing the recording": "Ошибка воспроизведения записи", "Error unmuting a user ...": "Ошибка при включении пользователя ...", + "Error uploading attachment": "Ошибка загрузки вложения", "Error while loading, please reload/refresh": "Ошибка загрузки, пожалуйста перезагрузите или обновите", + "Failed to block user": "Не удалось заблокировать пользователя", + "Failed to create the poll": "Не удалось создать опрос", + "Failed to create the poll due to {{reason}}": "Не удалось создать опрос из-за {{reason}}", + "Failed to end the poll": "Не удалось завершить опрос", + "Failed to end the poll due to {{reason}}": "Не удалось завершить опрос из-за {{reason}}", + "Failed to jump to the first unread message": "Не удалось перейти к первому непрочитанному сообщению", + "Failed to leave channel": "Не удалось покинуть канал", + "Failed to play the recording": "Не удалось воспроизвести запись", + "Failed to retrieve location": "Не удалось получить местоположение", + "Failed to share location": "Не удалось поделиться местоположением", + "Failed to update channel archive status": "Не удалось обновить статус архивации канала", + "Failed to update channel mute status": "Не удалось обновить статус уведомлений канала", + "Failed to update channel pinned status": "Не удалось обновить статус закрепления канала", + "File is required for upload attachment": "Для загрузки вложения требуется файл", "File is too large: {{ size }}, maximum upload size is {{ limit }}": "Файл слишком большой: {{ size }}, максимальный размер загрузки составляет {{ limit }}", "File too large": "Файл слишком большой", "File type not supported": "Тип файла не поддерживается", @@ -63,41 +109,52 @@ "Hold to start recording.": "Удерживайте, чтобы начать запись.", "How about sending your first message to a friend?": "Как насчет отправки первого сообщения другу?", "Instant Commands": "Мгновенные Команды", + "Leave Chat": "Покинуть чат", + "Leave Group": "Покинуть группу", + "Left channel": "Вы покинули канал", "Let others add options": "Разрешить другим добавлять варианты", "Let's start chatting!": "Давайте начнем общаться!", + "Limit votes per person": "Ограничить количество голосов на человека", "Links are disabled": "Ссылки отключены", "Live Location": "Трансляция местоположения", "Loading channels...": "Загружаю каналы...", "Loading messages...": "Загружаю сообщения...", "Loading threads...": "Загрузка потоков...", "Loading...": "Загружаю...", + "Local upload attachment missing local id": "У локального загружаемого вложения отсутствует локальный ID", "Location": "Местоположение", "Mark as Unread": "Отметить как непрочитанное", "Maximum number of files reached": "Достигнуто максимальное количество файлов", "Message Reactions": "Сообщения Реакции", "Message deleted": "Сообщение удалено", - "Message has been successfully flagged": "Сообщение успешно отмечено", + "Message failed to send": "Сообщение не отправлено", "Message flagged": "Сообщение отмечено", + "Message has been successfully flagged": "Сообщение успешно отмечено", "Message marked as unread": "Сообщение отмечено как непрочитанное", "Message pinned": "Сообщение закреплено", "Message unpinned": "Сообщение откреплено", "Multiple votes": "Несколько голосов", - "Network error": "Ошибка сети", - "Select more than one option": "Выберите больше одного варианта", - "Limit votes per person": "Ограничить количество голосов на человека", - "Choose between 2–10 options": "Выберите от 2 до 10 вариантов", + "Mute Group": "Отключить группу", "Mute User": "Отключить пользователя", + "Network error": "Ошибка сети", "No chats here yet…": "Здесь пока нет чатов…", + "No conversations yet": "Нет чатов", "No items exist": "Нет элементов", + "No messages yet": "Нет сообщений", "No threads here yet": "Здесь пока нет потоков", "Not supported": "не поддерживается", "Nothing yet...": "Пока ничего нет...", + "Notify all {{ role }} members": "Notify all {{ role }} members", + "Offline": "Не в сети", "Ok": "Oк", + "Online": "В сети", "Only visible to you": "Видно только вам", + "Open Camera": "Открыть камеру", + "Open Files": "Открыть файлы", "Open Settings": "Открыть настройки", "Option": "Вариант", - "Option {{count}}": "Вариант {{count}}", "Option already exists": "Вариант уже существует", + "Option {{count}}": "Вариант {{count}}", "Options": "Варианты", "Photo": "Фото", "Photos and Videos": "Фото и видео", @@ -109,16 +166,26 @@ "Poll Comments": "Комментарии к опросу", "Poll Options": "Варианты опроса", "Poll Results": "Результаты опроса", + "Poll ended": "Опрос завершен", + "Poll has ended": "Голосование завершено", "Questions": "Вопросы", + "Reached the vote limit. Remove an existing vote first.": "Достигнут лимит голосов. Сначала удалите существующий голос.", "Reconnecting...": "Переподключение...", + "Recording format is not supported and cannot be reproduced": "Формат записи не поддерживается, ее невозможно воспроизвести", + "Reminder overdue": "Напоминание просрочено", + "Reminder set": "Напоминание установлено", + "Replied to a thread": "Ответил на тему", "Reply": "Ответить", - "Reply to {{name}}": "Ответить пользователю {{name}}", "Reply to Message": "Ответить на сообщение", + "Reply to a message to start a thread": "Ответить на сообщение, чтобы начать тему", + "Reply to {{name}}": "Ответить пользователю {{name}}", "Resend": "Отправить", "Retry Upload": "Повторить загрузку", "SEND": "ОТПРАВИТЬ", "Search": "Поиск", "Select More Photos": "Выбрать больше фотографий", + "Select files to share": "Выберите файлы для отправки", + "Select more than one option": "Выберите больше одного варианта", "Select one": "Выберите один", "Select one or more": "Выберите один или несколько", "Select up to {{count}}_many": "Выберите до {{count}}", @@ -126,26 +193,39 @@ "Select up to {{count}}_other": "Выберите до {{count}}", "Send Anyway": "Всё равно отправить", "Send a message": "Отправить сообщение", + "Send message request failed": "Не удалось отправить сообщение", "Sending links is not allowed in this conversation": "Отправка ссылок недоступна в этом чате", "Show All": "Показать все", "Slide to Cancel": "Слайд для отмены", "Slow mode ON": "Медленный режим включен", "Slow mode, wait {{seconds}}s...": "Медленный режим, ожидайте {{seconds}}s...", "Suggest an option": "Предложить вариант", + "Take a photo and share": "Сделайте фото и поделитесь", + "Take a video and share": "Снимите видео и поделитесь", + "Tap to remove": "Нажмите, чтобы удалить", "The message has been reported to a moderator.": "Сообщение отправлено модератору.", "The source message was deleted": "Исходное сообщение было удалено", "Thinking...": "Думаю...", "This reply was deleted": "Этот ответ был удалён", "Thread Reply": "Тема Ответить", + "Thread has not been found": "Ветка не найдена", "Type a number from 2 to 10": "Введите число от 2 до 10", + "Typing": "Пишет", + "Unarchive Chat": "Разархивировать чат", + "Unarchive Group": "Разархивировать группу", "Unban User": "Разблокировать Пользователя", "Unblock User": "Разблокировать пользователя", "Unknown User": "Неизвестный пользователь", + "Unmute Group": "Включить группу", "Unmute User": "Включить микрофон", "Unpin from Conversation": "Открепить от беседы", "Unread Messages": "Непрочитанные Сообщения", + "Unsupported Attachment": "Неподдерживаемое вложение", "Update your comment": "Обновить ваш комментарий", + "User blocked": "Пользователь заблокирован", + "User unblocked": "Пользователь разблокирован", "Video": "видео", + "View": "Посмотреть", "View Results": "Посмотреть результаты", "View {{count}} comments_many": "Посмотреть {{count}} комментария", "View {{count}} comments_one": "Посмотреть {{count}} комментарий", @@ -153,13 +233,90 @@ "Voice message": "Голосовое сообщение", "Voice message ({{duration}})": "Голосовое сообщение ({{duration}})", "Voice message deleted": "Голосовое сообщение удалено", - "Your comment": "Ваш комментарий", + "Wait until all attachments have uploaded": "Дождитесь загрузки всех вложений", "You": "Вы", "You can't send messages in this channel": "Вы не можете отправлять сообщения в этот канал", + "You have not granted access to the photo library.": "Вы не предоставили доступ к фотобиблиотеке.", + "You have not granted access to your camera": "Вы не предоставили доступ к вашей камере", + "You voted: {{ option }}": "Вы проголосовали: {{ option }}", + "Your comment": "Ваш комментарий", + "a11y/AI is generating": "ИИ генерирует ответ", + "a11y/AI is thinking": "ИИ думает", + "a11y/Activate to view results": "Активируйте, чтобы увидеть результаты", + "a11y/Add attachment": "Add attachment", + "a11y/Avatar of {{name}}": "Аватар {{name}}", + "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.", + "a11y/Close": "Close", + "a11y/Close attachments": "Close attachments", + "a11y/Close poll": "Close poll", + "a11y/Close poll creation": "Close poll creation", + "a11y/Command suggestions available": "Command suggestions available", + "a11y/Connected": "Подключено", + "a11y/Create poll": "Create poll", + "a11y/Decrease maximum votes": "Decrease maximum votes", + "a11y/Delete voice recording": "Delete voice recording", + "a11y/Delivered": "Доставлено", + "a11y/Deselect image": "Deselect image", + "a11y/Deselect video": "Deselect video", + "a11y/Dismiss notification": "Закрыть уведомление", + "a11y/Dismiss unread messages": "Dismiss unread messages", + "a11y/Double tap and hold to activate contextual menu": "Дважды коснитесь и удерживайте, чтобы открыть контекстное меню", + "a11y/Emoji suggestions available": "Emoji suggestions available", + "a11y/End vote": "Завершить голосование", + "a11y/Grid Icon": "Grid Icon", + "a11y/Hide Overlay": "Hide Overlay", + "a11y/Increase maximum votes": "Increase maximum votes", + "a11y/Loading": "Загрузка", + "a11y/Loading failed": "Не удалось загрузить", + "a11y/Mention suggestions available": "Mention suggestions available", + "a11y/Message actions": "Действия с сообщением", + "a11y/New message from {{user}}": "Новое сообщение от {{user}}", + "a11y/Notifications": "Уведомления", + "a11y/Offline": "Не в сети", + "a11y/Open camera": "Open camera", + "a11y/Open commands": "Open commands", + "a11y/Open file picker": "Open file picker", + "a11y/Open message actions": "Открыть действия с сообщением", + "a11y/Open more reactions": "Open more reactions", + "a11y/Open photo picker": "Open photo picker", + "a11y/Open poll creation": "Open poll creation", + "a11y/Open video recorder": "Open video recorder", + "a11y/Play Pause Button": "Play Pause Button", + "a11y/Reaction {{emoji}} by {{count}} users": "Реакция {{emoji}} от {{count}} пользователей", + "a11y/Read": "Прочитано", + "a11y/Reconnecting": "Повторное подключение", + "a11y/Remove attachment": "Remove Attachment", + "a11y/Remove edit": "Удалить редактирование", + "a11y/Remove reply": "Удалить ответ", + "a11y/Reply to {{user}}": "Ответить {{user}}", + "a11y/Save edited message": "Save edited message", + "a11y/Scroll to bottom": "Прокрутить вниз", + "a11y/Scroll to bottom, {{count}} new messages": "Прокрутить вниз, {{count}} новых сообщений", + "a11y/Scroll to latest": "Перейти к последнему сообщению", + "a11y/Scroll to latest, {{count}} unread": "Перейти к последнему сообщению, {{count}} непрочитанных", + "a11y/Select image": "Select image", + "a11y/Select video": "Select video", + "a11y/Send message": "Отправить сообщение", + "a11y/Send voice recording": "Send voice recording", + "a11y/Sending": "Отправка", + "a11y/Sent": "Отправлено", + "a11y/Share Button": "Share Button", + "a11y/Show all options": "Показать все варианты", + "a11y/Start voice recording": "Start voice recording", + "a11y/Stop voice recording": "Stop voice recording", + "a11y/Swipe right to go through different actions": "Смахните вправо, чтобы переключаться между действиями", + "a11y/Voice message recording. Hold to record.": "Запись голосового сообщения. Удерживайте, чтобы записать.", + "a11y/Vote on {{option}}": "Голосовать за {{option}}", + "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", + "a11y/{{count}} new messages": "{{count}} новых сообщений", + "and {{ count }} others": "{{ count }} других", "duration/Location end at": "{{ milliseconds | durationFormatter(withSuffix: false) }}", "duration/Message reminder": "{{ milliseconds | durationFormatter(withSuffix: true) }}", "duration/Remind Me": "{{ milliseconds | durationFormatter(withSuffix: true) }}", + "mention/Channel Description": "Notify everyone in this channel", + "mention/Here Description": "Notify every online member in this channel", "replied to": "ответил на", + "size limit": "лимит размера", "timestamp/ChannelPreviewStatus": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[Вчера]\",\"lastWeek\":\"dddd\",\"nextDay\":\"[Завтра]\",\"nextWeek\":\"dddd [в] LT\",\"sameDay\":\"LT\",\"sameElse\":\"L\"}) }}", "timestamp/ImageGalleryHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/InlineDateSeparator": "{{ timestamp | timestampFormatter(calendar: true) }}", @@ -170,17 +327,16 @@ "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/StickyHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/ThreadListItem": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[Вчера]\",\"lastWeek\":\"dddd\",\"nextDay\":\"[Завтра]\",\"nextWeek\":\"dddd [в] LT\",\"sameDay\":\"LT\",\"sameElse\":\"L\"}) }}", + "unknown error": "неизвестная ошибка", + "unsupported file type": "неподдерживаемый тип файла", "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} и еще {{ nonSelfUserLength }} пишут", + "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }} и {{ secondUser }} пишут", "{{ index }} of {{ photoLength }}": "{{ index }} из {{ photoLength }}", + "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }} людей пишут", "{{ replyCount }} Replies": "{{ replyCount }} Ответов", + "{{ user }} has been muted": "{{ user }} отключен(а)", + "{{ user }} has been unmuted": "{{ user }} включен(а)", "{{ user }} is typing": "{{ user }} пишет", - "You voted: {{ option }}": "Вы проголосовали: {{ option }}", - "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }} и {{ secondUser }} пишут", - "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }} людей пишут", - "Typing": "Пишет", - "No messages yet": "Нет сообщений", - "Message failed to send": "Сообщение не отправлено", - "and {{ count }} others": "{{ count }} других", "{{ user }} voted: {{ option }}": "{{ user }} проголосовал: {{ option }}", "{{count}} Audios_many": "{{count}} аудио", "{{count}} Audios_one": "{{count}} аудио", @@ -191,173 +347,23 @@ "{{count}} Photos_many": "{{count}} фото", "{{count}} Photos_one": "{{count}} фото", "{{count}} Photos_other": "{{count}} фото", - "{{count}} Voice messages_many": "{{count}} голосовых сообщений", - "{{count}} Voice messages_one": "{{count}} голосовое сообщение", - "{{count}} Voice messages_other": "{{count}} голосовых сообщений", + "{{count}} Reactions_many": "{{count}} реакций", + "{{count}} Reactions_one": "{{count}} реакция", + "{{count}} Reactions_other": "{{count}} реакций", "{{count}} Videos_many": "{{count}} видео", "{{count}} Videos_one": "{{count}} видео", "{{count}} Videos_other": "{{count}} видео", + "{{count}} Voice messages_many": "{{count}} голосовых сообщений", + "{{count}} Voice messages_one": "{{count}} голосовое сообщение", + "{{count}} Voice messages_other": "{{count}} голосовых сообщений", + "{{count}} new messages": "{{count}} новых сообщений", + "{{count}} new threads": "{{count}} новых тем", + "{{count}} unread": "{{count}} непрочитанных", "{{count}} votes_many": "{{count}} голосов", "{{count}} votes_one": "{{count}} голос", "{{count}} votes_other": "{{count}} голосов", - "🏙 Attachment...": "🏙 Вложение...", - "You have not granted access to the photo library.": "Вы не предоставили доступ к фотобиблиотеке.", - "Change in Settings": "Изменить в настройках", - "Create a poll and let everyone vote": "Создайте опрос и дайте всем проголосовать", - "Open Camera": "Открыть камеру", - "Open Files": "Открыть файлы", - "Select files to share": "Выберите файлы для отправки", - "Take a photo and share": "Сделайте фото и поделитесь", - "Take a video and share": "Снимите видео и поделитесь", - "You have not granted access to your camera": "Вы не предоставили доступ к вашей камере", - "{{count}} Reactions_many": "{{count}} реакций", - "{{count}} Reactions_one": "{{count}} реакция", - "{{count}} Reactions_other": "{{count}} реакций", - "Tap to remove": "Нажмите, чтобы удалить", - "Draft": "Черновик", - "Reminder set": "Напоминание установлено", - "Also sent in channel": "Также отправлено в канал", - "Replied to a thread": "Ответил на тему", - "View": "Посмотреть", - "Reminder overdue": "Напоминание просрочено", - "Poll has ended": "Голосование завершено", - "Reply to a message to start a thread": "Ответить на сообщение, чтобы начать тему", - "Couldn't load new threads. Tap to retry": "Не удалось загрузить новые темы. Нажмите, чтобы попробовать снова", - "{{count}} new threads": "{{count}} новых тем", - "No conversations yet": "Нет чатов", - "Are you sure you want to delete this group? This can't be undone.": "Вы уверены, что хотите удалить эту группу? Это действие нельзя отменить.", - "Are you sure you want to delete this chat? This can't be undone.": "Вы уверены, что хотите удалить этот чат? Это действие нельзя отменить.", - "Delete chat": "Удалить чат", - "Delete group": "Удалить группу", - "Archive Chat": "Архивировать чат", - "Archive Group": "Архивировать группу", - "Delete Chat": "Удалить чат", - "Delete Group": "Удалить группу", - "Leave Chat": "Покинуть чат", - "Leave Group": "Покинуть группу", - "Mute Group": "Отключить группу", - "Offline": "Не в сети", - "Online": "В сети", - "Unarchive Chat": "Разархивировать чат", - "Unarchive Group": "Разархивировать группу", - "Unmute Group": "Включить группу", + "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}} участников, {{onlineCount}} онлайн", "{{memberCount}} members, {{onlineCount}} online_one": "{{memberCount}} участник, {{onlineCount}} онлайн", "{{memberCount}} members, {{onlineCount}} online_other": "{{memberCount}} участника, {{onlineCount}} онлайн", - "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}} участников, {{onlineCount}} онлайн", - "{{count}} unread": "{{count}} непрочитанных", - "{{count}} new messages": "{{count}} новых сообщений", - "Unsupported Attachment": "Неподдерживаемое вложение", - "+{{count}} More Options_one": "+ещё {{count}} вариант", - "+{{count}} More Options_other": "+ещё {{count}} варианта", - "+{{count}} More Options_many": "+ещё {{count}} вариантов", - "a11y/AI is generating": "ИИ генерирует ответ", - "a11y/AI is thinking": "ИИ думает", - "a11y/Avatar of {{name}}": "Аватар {{name}}", - "a11y/Connected": "Подключено", - "a11y/Delivered": "Доставлено", - "a11y/Loading": "Загрузка", - "a11y/Loading failed": "Не удалось загрузить", - "a11y/Message actions": "Действия с сообщением", - "a11y/New message from {{user}}": "Новое сообщение от {{user}}", - "a11y/Offline": "Не в сети", - "a11y/Open message actions": "Открыть действия с сообщением", - "a11y/Reaction {{emoji}} by {{count}} users": "Реакция {{emoji}} от {{count}} пользователей", - "a11y/Read": "Прочитано", - "a11y/Reconnecting": "Повторное подключение", - "a11y/Reply to {{user}}": "Ответить {{user}}", - "a11y/Remove edit": "Удалить редактирование", - "a11y/Remove reply": "Удалить ответ", - "a11y/Scroll to bottom": "Прокрутить вниз", - "a11y/Scroll to bottom, {{count}} new messages": "Прокрутить вниз, {{count}} новых сообщений", - "a11y/Scroll to latest": "Перейти к последнему сообщению", - "a11y/Scroll to latest, {{count}} unread": "Перейти к последнему сообщению, {{count}} непрочитанных", - "a11y/Send message": "Отправить сообщение", - "a11y/Sending": "Отправка", - "a11y/Sent": "Отправлено", - "a11y/Voice message recording. Hold to record.": "Запись голосового сообщения. Удерживайте, чтобы записать.", - "a11y/{{count}} new messages": "{{count}} новых сообщений", - "a11y/Add attachment": "Add attachment", - "a11y/Close attachments": "Close attachments", - "a11y/Remove attachment": "Remove Attachment", - "a11y/Close poll": "Close poll", - "a11y/Close poll creation": "Close poll creation", - "a11y/Create poll": "Create poll", - "a11y/Decrease maximum votes": "Decrease maximum votes", - "a11y/Delete voice recording": "Delete voice recording", - "a11y/Deselect image": "Deselect image", - "a11y/Deselect video": "Deselect video", - "a11y/Dismiss unread messages": "Dismiss unread messages", - "a11y/Grid Icon": "Grid Icon", - "a11y/Hide Overlay": "Hide Overlay", - "a11y/Increase maximum votes": "Increase maximum votes", - "a11y/Open camera": "Open camera", - "a11y/Open commands": "Open commands", - "a11y/Open file picker": "Open file picker", - "a11y/Open more reactions": "Open more reactions", - "a11y/Open photo picker": "Open photo picker", - "a11y/Open poll creation": "Open poll creation", - "a11y/Open video recorder": "Open video recorder", - "a11y/Play Pause Button": "Play Pause Button", - "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", - "a11y/Save edited message": "Save edited message", - "a11y/Select image": "Select image", - "a11y/Select video": "Select video", - "a11y/Send voice recording": "Send voice recording", - "a11y/Share Button": "Share Button", - "a11y/Start voice recording": "Start voice recording", - "a11y/Stop voice recording": "Stop voice recording", - "a11y/Notifications": "Уведомления", - "a11y/Dismiss notification": "Закрыть уведомление", - "Attachment upload blocked due to {{reason}}": "Загрузка вложения заблокирована из-за {{reason}}", - "Attachment upload failed due to {{reason}}": "Не удалось загрузить вложение из-за {{reason}}", - "Command not available": "Команда недоступна", - "Command not available while editing": "Команда недоступна во время редактирования", - "Command not available while replying": "Команда недоступна во время ответа", - "Error reproducing the recording": "Ошибка воспроизведения записи", - "Error uploading attachment": "Ошибка загрузки вложения", - "Failed to create the poll": "Не удалось создать опрос", - "Failed to create the poll due to {{reason}}": "Не удалось создать опрос из-за {{reason}}", - "Failed to end the poll": "Не удалось завершить опрос", - "Failed to end the poll due to {{reason}}": "Не удалось завершить опрос из-за {{reason}}", - "Failed to jump to the first unread message": "Не удалось перейти к первому непрочитанному сообщению", - "Failed to retrieve location": "Не удалось получить местоположение", - "Failed to share location": "Не удалось поделиться местоположением", - "File is required for upload attachment": "Для загрузки вложения требуется файл", - "Local upload attachment missing local id": "У локального загружаемого вложения отсутствует локальный ID", - "Poll ended": "Опрос завершен", - "Reached the vote limit. Remove an existing vote first.": "Достигнут лимит голосов. Сначала удалите существующий голос.", - "Thread has not been found": "Ветка не найдена", - "Wait until all attachments have uploaded": "Дождитесь загрузки всех вложений", - "Cannot seek in the recording": "Невозможно перемотать запись", - "Channel archived": "Канал архивирован", - "Channel muted": "Уведомления канала отключены", - "Channel pinned": "Канал закреплен", - "Channel unarchived": "Канал разархивирован", - "Channel unmuted": "Уведомления канала включены", - "Channel unpinned": "Канал откреплен", - "Edit message request failed": "Не удалось изменить сообщение", - "Failed to block user": "Не удалось заблокировать пользователя", - "Failed to leave channel": "Не удалось покинуть канал", - "Failed to play the recording": "Не удалось воспроизвести запись", - "Failed to update channel archive status": "Не удалось обновить статус архивации канала", - "Failed to update channel mute status": "Не удалось обновить статус уведомлений канала", - "Failed to update channel pinned status": "Не удалось обновить статус закрепления канала", - "Left channel": "Вы покинули канал", - "Recording format is not supported and cannot be reproduced": "Формат записи не поддерживается, ее невозможно воспроизвести", - "Send message request failed": "Не удалось отправить сообщение", - "User blocked": "Пользователь заблокирован", - "User unblocked": "Пользователь разблокирован", - "{{ user }} has been muted": "{{ user }} отключен(а)", - "{{ user }} has been unmuted": "{{ user }} включен(а)", - "size limit": "лимит размера", - "unknown error": "неизвестная ошибка", - "unsupported file type": "неподдерживаемый тип файла", - "a11y/Activate to view results": "Активируйте, чтобы увидеть результаты", - "a11y/End vote": "Завершить голосование", - "a11y/Show all options": "Показать все варианты", - "a11y/Vote on {{option}}": "Голосовать за {{option}}", - "a11y/Double tap and hold to activate contextual menu": "Дважды коснитесь и удерживайте, чтобы открыть контекстное меню", - "a11y/Swipe right to go through different actions": "Смахните вправо, чтобы переключаться между действиями", - "a11y/Close": "Close", - "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss." + "🏙 Attachment...": "🏙 Вложение..." } diff --git a/package/src/i18n/tr.json b/package/src/i18n/tr.json index b3a80c6a3f..df6c83d2ef 100644 --- a/package/src/i18n/tr.json +++ b/package/src/i18n/tr.json @@ -1,4 +1,7 @@ { + "+{{count}} More Options_many": "+{{count}} seçenek daha", + "+{{count}} More Options_one": "+{{count}} seçenek daha", + "+{{count}} More Options_other": "+{{count}} seçenek daha", "+{{count}}_many": "+{{count}}", "+{{count}}_one": "+{{count}}", "+{{count}}_other": "+{{count}}", @@ -11,33 +14,60 @@ "Allow access to your Gallery": "Galerinize erişime izin verin", "Allow camera access in device settings": "Cihaz ayarlarında kamera erişimine izin ver", "Also send to channel": "Kanala da gönder", + "Also sent in channel": "Kanala da gönderildi", "Anonymous": "Anonim", "Anonymous voting": "Anonim anket", + "Archive Chat": "Sohbeti arşivle", + "Archive Group": "Grubu arşivle", + "Are you sure you want to delete this chat? This can't be undone.": "Bu sohbeti silmek istediğinize emin misiniz? Bu işlem geri alınamaz.", + "Are you sure you want to delete this group? This can't be undone.": "Bu grubu silmek istediğinize emin misiniz? Bu işlem geri alınamaz.", "Are you sure you want to permanently delete this message?": "Bu mesajı kalıcı olarak silmek istediğinizden emin misiniz?", "Are you sure?": "Emin misiniz?", "Ask a question": "Bir soru sor", + "Attachment upload blocked due to {{reason}}": "Ek yükleme {{reason}} nedeniyle engellendi", + "Attachment upload failed due to {{reason}}": "Ek yükleme {{reason}} nedeniyle başarısız oldu", "Audio": "Ses", "Ban User": "Kullanıcıyı Yasakla", "Block User": "Kullanıcıyı engelle", "Cancel": "İptal", "Cannot Flag Message": "Raporlama Başarısız", + "Cannot seek in the recording": "Kayıtta ileri/geri sarılamıyor", + "Change in Settings": "Ayarlar'da değiştir", + "Channel archived": "Kanal arşivlendi", + "Channel muted": "Kanal sessize alındı", + "Channel pinned": "Kanal sabitlendi", + "Channel unarchived": "Kanal arşivden çıkarıldı", + "Channel unmuted": "Kanalın sesi açıldı", + "Channel unpinned": "Kanal sabitlemesi kaldırıldı", + "Choose between 2–10 options": "2 ile 10 arasında seçenek seçin", + "Command not available": "Komut kullanılamıyor", + "Command not available while editing": "Komut düzenleme sırasında kullanılamıyor", + "Command not available while replying": "Komut yanıt verirken kullanılamıyor", "Consider how your comment might make others feel and be sure to follow our Community Guidelines": "Yorumunuzun diğerlerini nasıl hissettirebileceğini düşünün ve topluluk kurallarımızı takip ettiğinizden emin olun", "Copy Message": "Mesajı Kopyala", + "Couldn't load new threads. Tap to retry": "Yeni konular yüklenemedi. Tekrar denemek için dokunun", "Create Poll": "Anket oluştur", + "Create a poll and let everyone vote": "Bir anket oluşturun ve herkesin oy vermesine izin verin", "Delete": "Sil", + "Delete Chat": "Sohbeti sil", + "Delete Group": "Grubu sil", "Delete Message": "Mesajı Sil", + "Delete chat": "Sohbeti sil", "Delete for me": "Benim için sil", + "Delete group": "Grubu sil", "Device camera is used to take photos or videos.": "Cihaz kamerası fotoğraf veya video çekmek için kullanılır.", "Device gallery permissions is used to take photos or videos.": "Cihaz galerisi izinleri fotoğraf veya video çekmek için kullanılır.", "Do you want to send a copy of this message to a moderator for further investigation?": "Detaylı inceleme için bu mesajın kopyasını moderatöre göndermek istiyor musunuz?", + "Draft": "Taslak", "Due since {{ dueSince }}": "Son tarihi {{ dueSince }} itibarıyla geçmiştir.", "Edit Message": "Mesajı Düzenle", + "Edit message request failed": "Mesaj düzenleme isteği başarısız oldu", "Edited": "Düzenlendi", "Editing Message": "Mesaj Düzenleniyor", "Emoji matching": "Emoji eşleştirme", "Empty message...": "Boş mesaj...", - "Enter a new option": "Yeni bir seçenek girin", "End Vote": "Oylamayı sonlandır", + "Enter a new option": "Yeni bir seçenek girin", "Error adding flag": "Mesaj raporlanırken hata oluştu", "Error deleting message": "Mesaj silinirken hata oluştu", "Error fetching reactions": "Tepkiler alınırken hata oluştu", @@ -48,8 +78,24 @@ "Error muting a user ...": "Kullanıcı sessize alınırken hata oluştu ...", "Error pinning message": "Mesaj sabitlenirken hata oluştu", "Error removing message pin": "Mesaj sabitlemesi kaldırılırken hata oluştu", + "Error reproducing the recording": "Kaydı oynatırken hata oluştu", "Error unmuting a user ...": "Kullanıcının sesi açılırken hata oluştu ...", + "Error uploading attachment": "Eki yüklerken hata oluştu", "Error while loading, please reload/refresh": "Yüklenirken hata oluştu, lütfen tekrar deneyiniz", + "Failed to block user": "Kullanıcı engellenemedi", + "Failed to create the poll": "Anket oluşturulamadı", + "Failed to create the poll due to {{reason}}": "Anket {{reason}} nedeniyle oluşturulamadı", + "Failed to end the poll": "Anket sonlandırılamadı", + "Failed to end the poll due to {{reason}}": "Anket {{reason}} nedeniyle sonlandırılamadı", + "Failed to jump to the first unread message": "İlk okunmamış mesaja gidilemedi", + "Failed to leave channel": "Kanaldan çıkılamadı", + "Failed to play the recording": "Kayıt oynatılamadı", + "Failed to retrieve location": "Konum alınamadı", + "Failed to share location": "Konum paylaşılamadı", + "Failed to update channel archive status": "Kanal arşiv durumu güncellenemedi", + "Failed to update channel mute status": "Kanal sessize alma durumu güncellenemedi", + "Failed to update channel pinned status": "Kanal sabitleme durumu güncellenemedi", + "File is required for upload attachment": "Ek yüklemek için bir dosya gerekli", "File is too large: {{ size }}, maximum upload size is {{ limit }}": "Dosya çok büyük: {{ size }}, maksimum yükleme boyutu {{ limit }}", "File too large": "Dosya çok büyük", "File type not supported": "Dosya türü desteklenmiyor", @@ -63,41 +109,52 @@ "Hold to start recording.": "Kayıt yapmak için basılı tutun.", "How about sending your first message to a friend?": "İlk mesajınızı bir arkadaşınıza göndermeye ne dersiniz?", "Instant Commands": "Anlık Komutlar", + "Leave Chat": "Sohbetten ayrıl", + "Leave Group": "Gruptan ayrıl", + "Left channel": "Kanaldan çıkıldı", "Let others add options": "Başkalarının seçenek eklemesine izin ver", "Let's start chatting!": "Haydi sohbete başlayalım!", + "Limit votes per person": "Kişi başına oy sayısını sınırla", "Links are disabled": "Bağlantılar devre dışı", "Live Location": "Canlı Konum", "Loading channels...": "Kanallar yükleniyor...", "Loading messages...": "Mesajlar yükleniyor...", "Loading threads...": "Akışlar yükleniyor...", "Loading...": "Yükleniyor...", + "Local upload attachment missing local id": "Yerel yükleme ekinin yerel kimliği eksik", "Location": "Konum", "Mark as Unread": "Okunmamış olarak işaretle", "Maximum number of files reached": "Maksimum dosya sayısına ulaşıldı", "Message Reactions": "Mesaj Tepkileri", "Message deleted": "Mesaj silindi", - "Message has been successfully flagged": "Mesaj başarıyla raporlandı", + "Message failed to send": "Mesaj gönderimi başarısız", "Message flagged": "Mesaj işaretlendi", + "Message has been successfully flagged": "Mesaj başarıyla raporlandı", "Message marked as unread": "Mesaj okunmadı olarak işaretlendi", "Message pinned": "Mesaj sabitlendi", "Message unpinned": "Mesaj sabitlemesi kaldırıldı", "Multiple votes": "Çoklu oy", - "Network error": "Ağ hatası", - "Select more than one option": "Birden fazla seçenek seçin", - "Limit votes per person": "Kişi başına oy sayısını sınırla", - "Choose between 2–10 options": "2 ile 10 arasında seçenek seçin", + "Mute Group": "Grubu sessize al", "Mute User": "Kullanıcıyı sessize al", + "Network error": "Ağ hatası", "No chats here yet…": "Henüz burada sohbet yok…", + "No conversations yet": "Henüz konuşma yok", "No items exist": "Hiçbir öğe yok", + "No messages yet": "Henüz mesaj yok", "No threads here yet": "Burada henüz akış yok", "Not supported": "Desteklenmiyor", "Nothing yet...": "Henüz değil...", + "Notify all {{ role }} members": "Notify all {{ role }} members", + "Offline": "Çevrimdışı", "Ok": "Tamam", + "Online": "Çevrimiçi", "Only visible to you": "Sadece siz görebilirsiniz", + "Open Camera": "Kamerayı aç", + "Open Files": "Dosyaları aç", "Open Settings": "Ayarları aç", "Option": "Seçenek", - "Option {{count}}": "Seçenek {{count}}", "Option already exists": "Seçenek zaten var", + "Option {{count}}": "Seçenek {{count}}", "Options": "Seçenekler", "Photo": "Fotoğraf", "Photos and Videos": "Fotoğraflar ve Videolar", @@ -109,16 +166,26 @@ "Poll Comments": "Anket Yorumları", "Poll Options": "Anket Seçenekleri", "Poll Results": "Anket Sonuçları", + "Poll ended": "Anket sona erdi", + "Poll has ended": "Oylama sona erdi", "Questions": "Sorular", + "Reached the vote limit. Remove an existing vote first.": "Oy sınırına ulaşıldı. Önce mevcut bir oyu kaldırın.", "Reconnecting...": "Yeniden Bağlanılıyor...", + "Recording format is not supported and cannot be reproduced": "Kayıt biçimi desteklenmiyor ve oynatılamıyor", + "Reminder overdue": "Hatırlatıcı süresi doldu", + "Reminder set": "Hatırlatıcı ayarlandı", + "Replied to a thread": "Konuya yanıt verildi", "Reply": "Yanıtla", - "Reply to {{name}}": "{{name}} için yanıtla", "Reply to Message": "Mesajı Yanıtla", + "Reply to a message to start a thread": "Bir mesaja yanıt vermek için konu başlatın", + "Reply to {{name}}": "{{name}} için yanıtla", "Resend": "Yeniden gönder", "Retry Upload": "Yüklemeyi yeniden dene", "SEND": "GÖNDER", "Search": "Ara", "Select More Photos": "Daha Fazla Fotoğraf Seçin", + "Select files to share": "Paylaşmak için dosyaları seç", + "Select more than one option": "Birden fazla seçenek seçin", "Select one": "Birini seç", "Select one or more": "Bir veya daha fazlasını seç", "Select up to {{count}}_many": "Seçenekleri {{count}} kadar seç", @@ -126,26 +193,39 @@ "Select up to {{count}}_other": "{{count}} kadar seç", "Send Anyway": "Yine de Gönder", "Send a message": "Mesaj gönder", + "Send message request failed": "Mesaj gönderme isteği başarısız oldu", "Sending links is not allowed in this conversation": "Bu konuşmada bağlantı göndermek desteklenmiyor", "Show All": "Hepsini göster", "Slide to Cancel": "Silmek için kaydırın", "Slow mode ON": "Yavaş Mod Açık", "Slow mode, wait {{seconds}}s...": "Yavaş mod, {{seconds}}s bekleyin...", "Suggest an option": "Bir seçenek öner", + "Take a photo and share": "Fotoğraf çek ve paylaş", + "Take a video and share": "Video çek ve paylaş", + "Tap to remove": "Kaldırmak için dokunun", "The message has been reported to a moderator.": "Mesaj moderatöre bildirildi.", "The source message was deleted": "Kaynak mesaj silindi", "Thinking...": "Düşünüyor...", "This reply was deleted": "Bu yanıt silindi", "Thread Reply": "Konu Yanıtı", + "Thread has not been found": "Konu bulunamadı", "Type a number from 2 to 10": "2 ile 10 arasında bir sayı girin", + "Typing": "Yazıyor", + "Unarchive Chat": "Sohbeti arşivden çıkar", + "Unarchive Group": "Grubu arşivden çıkar", "Unban User": "Kullanıcının Yasağını Kaldır", "Unblock User": "Kullanıcının engelini kaldır", "Unknown User": "Bilinmeyen kullanıcı", + "Unmute Group": "Grubun sesini ac", "Unmute User": "Kullanıcının sesini aç", "Unpin from Conversation": "Sabitlemeyi kaldır", "Unread Messages": "Okunmamış Mesajlar", + "Unsupported Attachment": "Desteklenmeyen ek", "Update your comment": "Yorumunu güncelle", + "User blocked": "Kullanıcı engellendi", + "User unblocked": "Kullanıcının engeli kaldırıldı", "Video": "Video", + "View": "Görüntüle", "View Results": "Sonuçları görüntüle", "View {{count}} comments_many": "Tüm {{count}} yorumları görüntüle", "View {{count}} comments_one": "{{count}} yorumu görüntüle", @@ -153,13 +233,90 @@ "Voice message": "Sesli mesaj", "Voice message ({{duration}})": "Sesli mesaj ({{duration}})", "Voice message deleted": "Sesli mesaj silindi", - "Your comment": "Yorumunuz", + "Wait until all attachments have uploaded": "Tüm ekler yüklenene kadar bekleyin", "You": "Sen", "You can't send messages in this channel": "Bu konuşmaya mesaj gönderemezsiniz", + "You have not granted access to the photo library.": "Fotoğraf kitaplığına erişim izni vermediniz.", + "You have not granted access to your camera": "Kameranıza erişim izni vermediniz", + "You voted: {{ option }}": "Oy verdiniz: {{ option }}", + "Your comment": "Yorumunuz", + "a11y/AI is generating": "Yapay zeka oluşturuyor", + "a11y/AI is thinking": "Yapay zeka düşünüyor", + "a11y/Activate to view results": "Sonuçları görmek için etkinleştir", + "a11y/Add attachment": "Add attachment", + "a11y/Avatar of {{name}}": "{{name}} avatarı", + "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.", + "a11y/Close": "Close", + "a11y/Close attachments": "Close attachments", + "a11y/Close poll": "Close poll", + "a11y/Close poll creation": "Close poll creation", + "a11y/Command suggestions available": "Command suggestions available", + "a11y/Connected": "Bağlandı", + "a11y/Create poll": "Create poll", + "a11y/Decrease maximum votes": "Decrease maximum votes", + "a11y/Delete voice recording": "Delete voice recording", + "a11y/Delivered": "Teslim edildi", + "a11y/Deselect image": "Deselect image", + "a11y/Deselect video": "Deselect video", + "a11y/Dismiss notification": "Bildirimi kapat", + "a11y/Dismiss unread messages": "Dismiss unread messages", + "a11y/Double tap and hold to activate contextual menu": "Bağlam menüsünü etkinleştirmek için çift dokunup basılı tut", + "a11y/Emoji suggestions available": "Emoji suggestions available", + "a11y/End vote": "Oylamayı sonlandır", + "a11y/Grid Icon": "Grid Icon", + "a11y/Hide Overlay": "Hide Overlay", + "a11y/Increase maximum votes": "Increase maximum votes", + "a11y/Loading": "Yükleniyor", + "a11y/Loading failed": "Yükleme başarısız", + "a11y/Mention suggestions available": "Mention suggestions available", + "a11y/Message actions": "Mesaj eylemleri", + "a11y/New message from {{user}}": "{{user}} kullanıcısından yeni mesaj", + "a11y/Notifications": "Bildirimler", + "a11y/Offline": "Çevrimdışı", + "a11y/Open camera": "Open camera", + "a11y/Open commands": "Open commands", + "a11y/Open file picker": "Open file picker", + "a11y/Open message actions": "Mesaj eylemlerini aç", + "a11y/Open more reactions": "Open more reactions", + "a11y/Open photo picker": "Open photo picker", + "a11y/Open poll creation": "Open poll creation", + "a11y/Open video recorder": "Open video recorder", + "a11y/Play Pause Button": "Play Pause Button", + "a11y/Reaction {{emoji}} by {{count}} users": "{{count}} kullanıcıdan {{emoji}} tepkisi", + "a11y/Read": "Okundu", + "a11y/Reconnecting": "Yeniden bağlanıyor", + "a11y/Remove attachment": "Remove Attachment", + "a11y/Remove edit": "Düzenlemeyi kaldır", + "a11y/Remove reply": "Yanıtı kaldır", + "a11y/Reply to {{user}}": "{{user}} kullanıcısına yanıt ver", + "a11y/Save edited message": "Save edited message", + "a11y/Scroll to bottom": "En alta git", + "a11y/Scroll to bottom, {{count}} new messages": "En alta git, {{count}} yeni mesaj", + "a11y/Scroll to latest": "En son mesaja git", + "a11y/Scroll to latest, {{count}} unread": "En son mesaja git, {{count}} okunmamış", + "a11y/Select image": "Select image", + "a11y/Select video": "Select video", + "a11y/Send message": "Mesaj gönder", + "a11y/Send voice recording": "Send voice recording", + "a11y/Sending": "Gönderiliyor", + "a11y/Sent": "Gönderildi", + "a11y/Share Button": "Share Button", + "a11y/Show all options": "Tüm seçenekleri göster", + "a11y/Start voice recording": "Start voice recording", + "a11y/Stop voice recording": "Stop voice recording", + "a11y/Swipe right to go through different actions": "Farklı eylemler arasında geçiş yapmak için sağa kaydır", + "a11y/Voice message recording. Hold to record.": "Sesli mesaj kaydı. Kaydetmek için basılı tutun.", + "a11y/Vote on {{option}}": "{{option}} için oy ver", + "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", + "a11y/{{count}} new messages": "{{count}} yeni mesaj", + "and {{ count }} others": "{{ count }} kişi daha", "duration/Location end at": "{{ milliseconds | durationFormatter(withSuffix: false) }}", "duration/Message reminder": "{{ milliseconds | durationFormatter(withSuffix: true) }}", "duration/Remind Me": "{{ milliseconds | durationFormatter(withSuffix: true) }}", + "mention/Channel Description": "Notify everyone in this channel", + "mention/Here Description": "Notify every online member in this channel", "replied to": "yanıtladı", + "size limit": "boyut sınırı", "timestamp/ChannelPreviewStatus": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[Dün]\",\"lastWeek\":\"dddd\",\"nextDay\":\"[Yarın]\",\"nextWeek\":\"dddd [saat] LT\",\"sameDay\":\"LT\",\"sameElse\":\"L\"}) }}", "timestamp/ImageGalleryHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/InlineDateSeparator": "{{ timestamp | timestampFormatter(calendar: true) }}", @@ -170,17 +327,16 @@ "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/StickyHeader": "{{ timestamp | timestampFormatter(calendar: true) }}", "timestamp/ThreadListItem": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[Dün]\",\"lastWeek\":\"dddd\",\"nextDay\":\"[Yarın]\",\"nextWeek\":\"dddd [saat] LT\",\"sameDay\":\"LT\",\"sameElse\":\"L\"}) }}", + "unknown error": "bilinmeyen hata", + "unsupported file type": "desteklenmeyen dosya türü", "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} ve {{ nonSelfUserLength }} kişi daha yazıyor", + "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }} ve {{ secondUser }} yazıyor", "{{ index }} of {{ photoLength }}": "{{ index }} / {{ photoLength }}", + "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }} kişi yazıyor", "{{ replyCount }} Replies": "{{ replyCount }} Cevap", + "{{ user }} has been muted": "{{ user }} sessize alındı", + "{{ user }} has been unmuted": "{{ user }} kullanıcısının sesi açıldı", "{{ user }} is typing": "{{ user }} yazıyor", - "You voted: {{ option }}": "Oy verdiniz: {{ option }}", - "{{ firstUser }} and {{ secondUser }} are typing": "{{ firstUser }} ve {{ secondUser }} yazıyor", - "{{ numberOfUsers }} people are typing": "{{ numberOfUsers }} kişi yazıyor", - "Typing": "Yazıyor", - "No messages yet": "Henüz mesaj yok", - "Message failed to send": "Mesaj gönderimi başarısız", - "and {{ count }} others": "{{ count }} kişi daha", "{{ user }} voted: {{ option }}": "{{ user }} oy verdi: {{ option }}", "{{count}} Audios_many": "{{count}} ses", "{{count}} Audios_one": "{{count}} ses", @@ -191,173 +347,23 @@ "{{count}} Photos_many": "{{count}} fotoğraf", "{{count}} Photos_one": "{{count}} fotoğraf", "{{count}} Photos_other": "{{count}} fotoğraf", - "{{count}} Voice messages_many": "{{count}} sesli mesaj", - "{{count}} Voice messages_one": "{{count}} sesli mesaj", - "{{count}} Voice messages_other": "{{count}} sesli mesaj", + "{{count}} Reactions_many": "{{count}} tepki", + "{{count}} Reactions_one": "{{count}} tepki", + "{{count}} Reactions_other": "{{count}} tepki", "{{count}} Videos_many": "{{count}} video", "{{count}} Videos_one": "{{count}} video", "{{count}} Videos_other": "{{count}} video", + "{{count}} Voice messages_many": "{{count}} sesli mesaj", + "{{count}} Voice messages_one": "{{count}} sesli mesaj", + "{{count}} Voice messages_other": "{{count}} sesli mesaj", + "{{count}} new messages": "{{count}} yeni mesaj", + "{{count}} new threads": "{{count}} yeni konu", + "{{count}} unread": "{{count}} okunmamış", "{{count}} votes_many": "{{count}} oy", "{{count}} votes_one": "{{count}} oy", "{{count}} votes_other": "{{count}} oy", - "🏙 Attachment...": "🏙 Ek...", - "You have not granted access to the photo library.": "Fotoğraf kitaplığına erişim izni vermediniz.", - "Change in Settings": "Ayarlar'da değiştir", - "Create a poll and let everyone vote": "Bir anket oluşturun ve herkesin oy vermesine izin verin", - "Open Camera": "Kamerayı aç", - "Open Files": "Dosyaları aç", - "Select files to share": "Paylaşmak için dosyaları seç", - "Take a photo and share": "Fotoğraf çek ve paylaş", - "Take a video and share": "Video çek ve paylaş", - "You have not granted access to your camera": "Kameranıza erişim izni vermediniz", - "{{count}} Reactions_many": "{{count}} tepki", - "{{count}} Reactions_one": "{{count}} tepki", - "{{count}} Reactions_other": "{{count}} tepki", - "Tap to remove": "Kaldırmak için dokunun", - "Draft": "Taslak", - "Reminder set": "Hatırlatıcı ayarlandı", - "Also sent in channel": "Kanala da gönderildi", - "Replied to a thread": "Konuya yanıt verildi", - "View": "Görüntüle", - "Reminder overdue": "Hatırlatıcı süresi doldu", - "Poll has ended": "Oylama sona erdi", - "Reply to a message to start a thread": "Bir mesaja yanıt vermek için konu başlatın", - "Couldn't load new threads. Tap to retry": "Yeni konular yüklenemedi. Tekrar denemek için dokunun", - "{{count}} new threads": "{{count}} yeni konu", - "No conversations yet": "Henüz konuşma yok", - "Are you sure you want to delete this group? This can't be undone.": "Bu grubu silmek istediğinize emin misiniz? Bu işlem geri alınamaz.", - "Are you sure you want to delete this chat? This can't be undone.": "Bu sohbeti silmek istediğinize emin misiniz? Bu işlem geri alınamaz.", - "Delete chat": "Sohbeti sil", - "Delete group": "Grubu sil", - "Archive Chat": "Sohbeti arşivle", - "Archive Group": "Grubu arşivle", - "Delete Chat": "Sohbeti sil", - "Delete Group": "Grubu sil", - "Leave Chat": "Sohbetten ayrıl", - "Leave Group": "Gruptan ayrıl", - "Mute Group": "Grubu sessize al", - "Offline": "Çevrimdışı", - "Online": "Çevrimiçi", - "Unarchive Chat": "Sohbeti arşivden çıkar", - "Unarchive Group": "Grubu arşivden çıkar", - "Unmute Group": "Grubun sesini ac", + "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}} üye, {{onlineCount}} çevrimiçi", "{{memberCount}} members, {{onlineCount}} online_one": "{{memberCount}} üye, {{onlineCount}} çevrimiçi", "{{memberCount}} members, {{onlineCount}} online_other": "{{memberCount}} üye, {{onlineCount}} çevrimiçi", - "{{memberCount}} members, {{onlineCount}} online_many": "{{memberCount}} üye, {{onlineCount}} çevrimiçi", - "{{count}} unread": "{{count}} okunmamış", - "{{count}} new messages": "{{count}} yeni mesaj", - "Unsupported Attachment": "Desteklenmeyen ek", - "+{{count}} More Options_one": "+{{count}} seçenek daha", - "+{{count}} More Options_other": "+{{count}} seçenek daha", - "+{{count}} More Options_many": "+{{count}} seçenek daha", - "a11y/AI is generating": "Yapay zeka oluşturuyor", - "a11y/AI is thinking": "Yapay zeka düşünüyor", - "a11y/Avatar of {{name}}": "{{name}} avatarı", - "a11y/Connected": "Bağlandı", - "a11y/Delivered": "Teslim edildi", - "a11y/Loading": "Yükleniyor", - "a11y/Loading failed": "Yükleme başarısız", - "a11y/Message actions": "Mesaj eylemleri", - "a11y/New message from {{user}}": "{{user}} kullanıcısından yeni mesaj", - "a11y/Offline": "Çevrimdışı", - "a11y/Open message actions": "Mesaj eylemlerini aç", - "a11y/Reaction {{emoji}} by {{count}} users": "{{count}} kullanıcıdan {{emoji}} tepkisi", - "a11y/Read": "Okundu", - "a11y/Reconnecting": "Yeniden bağlanıyor", - "a11y/Reply to {{user}}": "{{user}} kullanıcısına yanıt ver", - "a11y/Remove edit": "Düzenlemeyi kaldır", - "a11y/Remove reply": "Yanıtı kaldır", - "a11y/Scroll to bottom": "En alta git", - "a11y/Scroll to bottom, {{count}} new messages": "En alta git, {{count}} yeni mesaj", - "a11y/Scroll to latest": "En son mesaja git", - "a11y/Scroll to latest, {{count}} unread": "En son mesaja git, {{count}} okunmamış", - "a11y/Send message": "Mesaj gönder", - "a11y/Sending": "Gönderiliyor", - "a11y/Sent": "Gönderildi", - "a11y/Voice message recording. Hold to record.": "Sesli mesaj kaydı. Kaydetmek için basılı tutun.", - "a11y/{{count}} new messages": "{{count}} yeni mesaj", - "a11y/Add attachment": "Add attachment", - "a11y/Close attachments": "Close attachments", - "a11y/Remove attachment": "Remove Attachment", - "a11y/Close poll": "Close poll", - "a11y/Close poll creation": "Close poll creation", - "a11y/Create poll": "Create poll", - "a11y/Decrease maximum votes": "Decrease maximum votes", - "a11y/Delete voice recording": "Delete voice recording", - "a11y/Deselect image": "Deselect image", - "a11y/Deselect video": "Deselect video", - "a11y/Dismiss unread messages": "Dismiss unread messages", - "a11y/Grid Icon": "Grid Icon", - "a11y/Hide Overlay": "Hide Overlay", - "a11y/Increase maximum votes": "Increase maximum votes", - "a11y/Open camera": "Open camera", - "a11y/Open commands": "Open commands", - "a11y/Open file picker": "Open file picker", - "a11y/Open more reactions": "Open more reactions", - "a11y/Open photo picker": "Open photo picker", - "a11y/Open poll creation": "Open poll creation", - "a11y/Open video recorder": "Open video recorder", - "a11y/Play Pause Button": "Play Pause Button", - "a11y/reaction-button-{{type}}-{{selected}}": "reaction-button-{{type}}-{{selected}}", - "a11y/Save edited message": "Save edited message", - "a11y/Select image": "Select image", - "a11y/Select video": "Select video", - "a11y/Send voice recording": "Send voice recording", - "a11y/Share Button": "Share Button", - "a11y/Start voice recording": "Start voice recording", - "a11y/Stop voice recording": "Stop voice recording", - "a11y/Notifications": "Bildirimler", - "a11y/Dismiss notification": "Bildirimi kapat", - "Attachment upload blocked due to {{reason}}": "Ek yükleme {{reason}} nedeniyle engellendi", - "Attachment upload failed due to {{reason}}": "Ek yükleme {{reason}} nedeniyle başarısız oldu", - "Command not available": "Komut kullanılamıyor", - "Command not available while editing": "Komut düzenleme sırasında kullanılamıyor", - "Command not available while replying": "Komut yanıt verirken kullanılamıyor", - "Error reproducing the recording": "Kaydı oynatırken hata oluştu", - "Error uploading attachment": "Eki yüklerken hata oluştu", - "Failed to create the poll": "Anket oluşturulamadı", - "Failed to create the poll due to {{reason}}": "Anket {{reason}} nedeniyle oluşturulamadı", - "Failed to end the poll": "Anket sonlandırılamadı", - "Failed to end the poll due to {{reason}}": "Anket {{reason}} nedeniyle sonlandırılamadı", - "Failed to jump to the first unread message": "İlk okunmamış mesaja gidilemedi", - "Failed to retrieve location": "Konum alınamadı", - "Failed to share location": "Konum paylaşılamadı", - "File is required for upload attachment": "Ek yüklemek için bir dosya gerekli", - "Local upload attachment missing local id": "Yerel yükleme ekinin yerel kimliği eksik", - "Poll ended": "Anket sona erdi", - "Reached the vote limit. Remove an existing vote first.": "Oy sınırına ulaşıldı. Önce mevcut bir oyu kaldırın.", - "Thread has not been found": "Konu bulunamadı", - "Wait until all attachments have uploaded": "Tüm ekler yüklenene kadar bekleyin", - "Cannot seek in the recording": "Kayıtta ileri/geri sarılamıyor", - "Channel archived": "Kanal arşivlendi", - "Channel muted": "Kanal sessize alındı", - "Channel pinned": "Kanal sabitlendi", - "Channel unarchived": "Kanal arşivden çıkarıldı", - "Channel unmuted": "Kanalın sesi açıldı", - "Channel unpinned": "Kanal sabitlemesi kaldırıldı", - "Edit message request failed": "Mesaj düzenleme isteği başarısız oldu", - "Failed to block user": "Kullanıcı engellenemedi", - "Failed to leave channel": "Kanaldan çıkılamadı", - "Failed to play the recording": "Kayıt oynatılamadı", - "Failed to update channel archive status": "Kanal arşiv durumu güncellenemedi", - "Failed to update channel mute status": "Kanal sessize alma durumu güncellenemedi", - "Failed to update channel pinned status": "Kanal sabitleme durumu güncellenemedi", - "Left channel": "Kanaldan çıkıldı", - "Recording format is not supported and cannot be reproduced": "Kayıt biçimi desteklenmiyor ve oynatılamıyor", - "Send message request failed": "Mesaj gönderme isteği başarısız oldu", - "User blocked": "Kullanıcı engellendi", - "User unblocked": "Kullanıcının engeli kaldırıldı", - "{{ user }} has been muted": "{{ user }} sessize alındı", - "{{ user }} has been unmuted": "{{ user }} kullanıcısının sesi açıldı", - "size limit": "boyut sınırı", - "unknown error": "bilinmeyen hata", - "unsupported file type": "desteklenmeyen dosya türü", - "a11y/Activate to view results": "Sonuçları görmek için etkinleştir", - "a11y/End vote": "Oylamayı sonlandır", - "a11y/Show all options": "Tüm seçenekleri göster", - "a11y/Vote on {{option}}": "{{option}} için oy ver", - "a11y/Double tap and hold to activate contextual menu": "Bağlam menüsünü etkinleştirmek için çift dokunup basılı tut", - "a11y/Swipe right to go through different actions": "Farklı eylemler arasında geçiş yapmak için sağa kaydır", - "a11y/Close": "Close", - "a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.": "Bottom sheet opened. Activate the close action or use the escape gesture to dismiss." + "🏙 Attachment...": "🏙 Ek..." } diff --git a/package/src/icons/megaphone.tsx b/package/src/icons/megaphone.tsx new file mode 100644 index 0000000000..095b18db7d --- /dev/null +++ b/package/src/icons/megaphone.tsx @@ -0,0 +1,21 @@ +import React from 'react'; + +import { Path, Svg } from 'react-native-svg'; + +import { IconProps } from './utils/base'; + +export const Megaphone = ({ fill, height, pathFill, size, stroke, width, ...rest }: IconProps) => { + const color = stroke ?? pathFill ?? fill ?? 'black'; + + return ( + + + + ); +}; diff --git a/package/src/icons/shield.tsx b/package/src/icons/shield.tsx new file mode 100644 index 0000000000..bab786b10d --- /dev/null +++ b/package/src/icons/shield.tsx @@ -0,0 +1,21 @@ +import React from 'react'; + +import { Path, Svg } from 'react-native-svg'; + +import { IconProps } from './utils/base'; + +export const Shield = ({ fill, height, pathFill, size, stroke, width, ...rest }: IconProps) => { + const color = stroke ?? pathFill ?? fill ?? 'black'; + + return ( + + + + ); +}; diff --git a/package/src/store/SqliteClient.ts b/package/src/store/SqliteClient.ts index d82973cebe..733fc95dd8 100644 --- a/package/src/store/SqliteClient.ts +++ b/package/src/store/SqliteClient.ts @@ -28,7 +28,7 @@ import type { PreparedBatchQueries, PreparedQueries, Scalar, Table } from './typ * This way usage @op-engineering/op-sqlite package is scoped to a single class/file. */ export class SqliteClient { - static dbVersion = 15; + static dbVersion = 16; static dbName = DB_NAME; static dbLocation = DB_LOCATION; diff --git a/package/src/store/mappers/mapDraftMessageToStorable.ts b/package/src/store/mappers/mapDraftMessageToStorable.ts index 4cdc216e50..7966f855c7 100644 --- a/package/src/store/mappers/mapDraftMessageToStorable.ts +++ b/package/src/store/mappers/mapDraftMessageToStorable.ts @@ -12,6 +12,10 @@ export const mapDraftMessageToStorable = ({ custom, text, attachments, + mentioned_channel, + mentioned_group_ids, + mentioned_here, + mentioned_roles, mentioned_users, parent_id, poll_id, @@ -25,6 +29,10 @@ export const mapDraftMessageToStorable = ({ attachments: attachments ? JSON.stringify(attachments) : undefined, custom: custom ? JSON.stringify(custom) : undefined, id, + mentionedChannel: mentioned_channel, + mentionedGroupIds: mentioned_group_ids ? JSON.stringify(mentioned_group_ids) : undefined, + mentionedHere: mentioned_here, + mentionedRoles: mentioned_roles ? JSON.stringify(mentioned_roles) : undefined, mentionedUsers: mentioned_users ? JSON.stringify(mentioned_users) : undefined, parentId: parent_id, poll_id, diff --git a/package/src/store/mappers/mapStorableToDraftMessage.ts b/package/src/store/mappers/mapStorableToDraftMessage.ts index 3d194a9448..64bd754549 100644 --- a/package/src/store/mappers/mapStorableToDraftMessage.ts +++ b/package/src/store/mappers/mapStorableToDraftMessage.ts @@ -10,6 +10,10 @@ export const mapStorableToDraftMessage = ( custom, text, attachments, + mentionedChannel, + mentionedGroupIds, + mentionedHere, + mentionedRoles, mentionedUsers, parentId, poll_id, @@ -23,6 +27,10 @@ export const mapStorableToDraftMessage = ( attachments: attachments ? JSON.parse(attachments) : undefined, custom: custom ? JSON.parse(custom) : undefined, id, + mentioned_channel: mentionedChannel, + mentioned_group_ids: mentionedGroupIds ? JSON.parse(mentionedGroupIds) : undefined, + mentioned_here: mentionedHere, + mentioned_roles: mentionedRoles ? JSON.parse(mentionedRoles) : undefined, mentioned_users: mentionedUsers ? JSON.parse(mentionedUsers) : undefined, parent_id: parentId, poll_id, diff --git a/package/src/store/schema.ts b/package/src/store/schema.ts index b21f1dd9ba..9b918e44f5 100644 --- a/package/src/store/schema.ts +++ b/package/src/store/schema.ts @@ -90,6 +90,10 @@ export const tables: Tables = { attachments: 'TEXT', custom: 'TEXT', id: 'TEXT NOT NULL', + mentionedChannel: 'BOOLEAN DEFAULT FALSE', + mentionedGroupIds: 'TEXT', + mentionedHere: 'BOOLEAN DEFAULT FALSE', + mentionedRoles: 'TEXT', mentionedUsers: 'TEXT', parentId: 'TEXT', poll_id: 'TEXT', @@ -381,6 +385,10 @@ export type Schema = { id: string; attachments?: string; custom?: string; + mentionedChannel?: boolean; + mentionedGroupIds?: string; + mentionedHere?: boolean; + mentionedRoles?: string; mentionedUsers?: string; parentId?: string; poll_id?: string; diff --git a/package/src/theme/generated/StreamTokens.types.ts b/package/src/theme/generated/StreamTokens.types.ts index 24f807b48f..fbe14392df 100644 --- a/package/src/theme/generated/StreamTokens.types.ts +++ b/package/src/theme/generated/StreamTokens.types.ts @@ -444,6 +444,11 @@ export interface ChatSemantics { chatBgAttachmentIncoming: ColorValue; chatBgAttachmentOutgoing: ColorValue; chatBgIncoming: ColorValue; + chatBgMention: ColorValue; + chatBgMentionBroadcast: ColorValue; + chatBgMentionGroup: ColorValue; + chatBgMentionRole: ColorValue; + chatBgMentionUser: ColorValue; chatBgOutgoing: ColorValue; chatBorderIncoming: ColorValue; chatBorderOnChatIncoming: ColorValue; @@ -458,6 +463,10 @@ export interface ChatSemantics { chatTextIncoming: ColorValue; chatTextLink: ColorValue; chatTextMention: ColorValue; + chatTextMentionBroadcast: ColorValue; + chatTextMentionGroup: ColorValue; + chatTextMentionRole: ColorValue; + chatTextMentionUser: ColorValue; chatTextOutgoing: ColorValue; chatTextReaction: ColorValue; chatTextRead: ColorValue; diff --git a/package/src/theme/generated/dark/StreamTokens.android.ts b/package/src/theme/generated/dark/StreamTokens.android.ts index abf524ee10..69dfedf70b 100644 --- a/package/src/theme/generated/dark/StreamTokens.android.ts +++ b/package/src/theme/generated/dark/StreamTokens.android.ts @@ -509,6 +509,11 @@ export const semantics: IStreamTokens['semantics'] = { chatBgAttachmentIncoming: '$backgroundCoreSurfaceStrong', chatBgAttachmentOutgoing: '$brand150', chatBgIncoming: '$backgroundCoreSurfaceDefault', + chatBgMention: foundations.colors.baseTransparent0, + chatBgMentionBroadcast: '$chatBgMention', + chatBgMentionGroup: '$chatBgMention', + chatBgMentionRole: '$chatBgMention', + chatBgMentionUser: '$chatBgMention', chatBgOutgoing: '$brand100', chatBorderIncoming: '$borderCoreSubtle', chatBorderOnChatIncoming: '$borderCoreStrong', @@ -522,7 +527,11 @@ export const semantics: IStreamTokens['semantics'] = { chatReplyIndicatorOutgoing: '$brand400', chatTextIncoming: '$textPrimary', chatTextLink: '$textLink', - chatTextMention: '$textLink', + chatTextMention: '$accentPrimary', + chatTextMentionBroadcast: '$chatTextMention', + chatTextMentionGroup: '$chatTextMention', + chatTextMentionRole: '$chatTextMention', + chatTextMentionUser: '$chatTextMention', chatTextOutgoing: '$brand900', chatTextReaction: '$textSecondary', chatTextRead: '$accentPrimary', diff --git a/package/src/theme/generated/dark/StreamTokens.ios.ts b/package/src/theme/generated/dark/StreamTokens.ios.ts index 8f679bd27a..64e63bb277 100644 --- a/package/src/theme/generated/dark/StreamTokens.ios.ts +++ b/package/src/theme/generated/dark/StreamTokens.ios.ts @@ -509,6 +509,11 @@ export const semantics: IStreamTokens['semantics'] = { chatBgAttachmentIncoming: '$backgroundCoreSurfaceStrong', chatBgAttachmentOutgoing: '$brand150', chatBgIncoming: '$backgroundCoreSurfaceDefault', + chatBgMention: foundations.colors.baseTransparent0, + chatBgMentionBroadcast: '$chatBgMention', + chatBgMentionGroup: '$chatBgMention', + chatBgMentionRole: '$chatBgMention', + chatBgMentionUser: '$chatBgMention', chatBgOutgoing: '$brand100', chatBorderIncoming: '$borderCoreSubtle', chatBorderOnChatIncoming: '$borderCoreStrong', @@ -522,7 +527,11 @@ export const semantics: IStreamTokens['semantics'] = { chatReplyIndicatorOutgoing: '$brand400', chatTextIncoming: '$textPrimary', chatTextLink: '$textLink', - chatTextMention: '$textLink', + chatTextMention: '$accentPrimary', + chatTextMentionBroadcast: '$chatTextMention', + chatTextMentionGroup: '$chatTextMention', + chatTextMentionRole: '$chatTextMention', + chatTextMentionUser: '$chatTextMention', chatTextOutgoing: '$brand900', chatTextReaction: '$textSecondary', chatTextRead: '$accentPrimary', diff --git a/package/src/theme/generated/dark/StreamTokens.web.ts b/package/src/theme/generated/dark/StreamTokens.web.ts index 4733f3b7ab..d7b0bc657e 100644 --- a/package/src/theme/generated/dark/StreamTokens.web.ts +++ b/package/src/theme/generated/dark/StreamTokens.web.ts @@ -509,6 +509,11 @@ export const semantics: IStreamTokens['semantics'] = { chatBgAttachmentIncoming: '$backgroundCoreSurfaceStrong', chatBgAttachmentOutgoing: '$brand150', chatBgIncoming: '$backgroundCoreSurfaceDefault', + chatBgMention: foundations.colors.baseTransparent0, + chatBgMentionBroadcast: '$chatBgMention', + chatBgMentionGroup: '$chatBgMention', + chatBgMentionRole: '$chatBgMention', + chatBgMentionUser: '$chatBgMention', chatBgOutgoing: '$brand100', chatBorderIncoming: '$borderCoreSubtle', chatBorderOnChatIncoming: '$borderCoreStrong', @@ -522,7 +527,11 @@ export const semantics: IStreamTokens['semantics'] = { chatReplyIndicatorOutgoing: '$brand400', chatTextIncoming: '$textPrimary', chatTextLink: '$textLink', - chatTextMention: '$textLink', + chatTextMention: '$accentPrimary', + chatTextMentionBroadcast: '$chatTextMention', + chatTextMentionGroup: '$chatTextMention', + chatTextMentionRole: '$chatTextMention', + chatTextMentionUser: '$chatTextMention', chatTextOutgoing: '$brand900', chatTextReaction: '$textSecondary', chatTextRead: '$accentPrimary', diff --git a/package/src/theme/generated/light/StreamTokens.android.ts b/package/src/theme/generated/light/StreamTokens.android.ts index bbfd645c38..55058d22b0 100644 --- a/package/src/theme/generated/light/StreamTokens.android.ts +++ b/package/src/theme/generated/light/StreamTokens.android.ts @@ -509,6 +509,11 @@ export const semantics: IStreamTokens['semantics'] = { chatBgAttachmentIncoming: '$backgroundCoreSurfaceStrong', chatBgAttachmentOutgoing: '$brand150', chatBgIncoming: '$backgroundCoreSurfaceDefault', + chatBgMention: foundations.colors.baseTransparent0, + chatBgMentionBroadcast: '$chatBgMention', + chatBgMentionGroup: '$chatBgMention', + chatBgMentionRole: '$chatBgMention', + chatBgMentionUser: '$chatBgMention', chatBgOutgoing: '$brand100', chatBorderIncoming: '$borderCoreSubtle', chatBorderOnChatIncoming: '$borderCoreStrong', @@ -522,7 +527,11 @@ export const semantics: IStreamTokens['semantics'] = { chatReplyIndicatorOutgoing: '$brand400', chatTextIncoming: '$textPrimary', chatTextLink: '$textLink', - chatTextMention: '$textLink', + chatTextMention: '$accentPrimary', + chatTextMentionBroadcast: '$chatTextMention', + chatTextMentionGroup: '$chatTextMention', + chatTextMentionRole: '$chatTextMention', + chatTextMentionUser: '$chatTextMention', chatTextOutgoing: '$brand900', chatTextReaction: '$textSecondary', chatTextRead: '$accentPrimary', diff --git a/package/src/theme/generated/light/StreamTokens.ios.ts b/package/src/theme/generated/light/StreamTokens.ios.ts index 8bf993c444..d1d5923f33 100644 --- a/package/src/theme/generated/light/StreamTokens.ios.ts +++ b/package/src/theme/generated/light/StreamTokens.ios.ts @@ -509,6 +509,11 @@ export const semantics: IStreamTokens['semantics'] = { chatBgAttachmentIncoming: '$backgroundCoreSurfaceStrong', chatBgAttachmentOutgoing: '$brand150', chatBgIncoming: '$backgroundCoreSurfaceDefault', + chatBgMention: foundations.colors.baseTransparent0, + chatBgMentionBroadcast: '$chatBgMention', + chatBgMentionGroup: '$chatBgMention', + chatBgMentionRole: '$chatBgMention', + chatBgMentionUser: '$chatBgMention', chatBgOutgoing: '$brand100', chatBorderIncoming: '$borderCoreSubtle', chatBorderOnChatIncoming: '$borderCoreStrong', @@ -522,7 +527,11 @@ export const semantics: IStreamTokens['semantics'] = { chatReplyIndicatorOutgoing: '$brand400', chatTextIncoming: '$textPrimary', chatTextLink: '$textLink', - chatTextMention: '$textLink', + chatTextMention: '$accentPrimary', + chatTextMentionBroadcast: '$chatTextMention', + chatTextMentionGroup: '$chatTextMention', + chatTextMentionRole: '$chatTextMention', + chatTextMentionUser: '$chatTextMention', chatTextOutgoing: '$brand900', chatTextReaction: '$textSecondary', chatTextRead: '$accentPrimary', diff --git a/package/src/theme/generated/light/StreamTokens.web.ts b/package/src/theme/generated/light/StreamTokens.web.ts index cca8f2f43e..8f75c7dbc6 100644 --- a/package/src/theme/generated/light/StreamTokens.web.ts +++ b/package/src/theme/generated/light/StreamTokens.web.ts @@ -509,6 +509,11 @@ export const semantics: IStreamTokens['semantics'] = { chatBgAttachmentIncoming: '$backgroundCoreSurfaceStrong', chatBgAttachmentOutgoing: '$brand150', chatBgIncoming: '$backgroundCoreSurfaceDefault', + chatBgMention: foundations.colors.baseTransparent0, + chatBgMentionBroadcast: '$chatBgMention', + chatBgMentionGroup: '$chatBgMention', + chatBgMentionRole: '$chatBgMention', + chatBgMentionUser: '$chatBgMention', chatBgOutgoing: '$brand100', chatBorderIncoming: '$borderCoreSubtle', chatBorderOnChatIncoming: '$borderCoreStrong', @@ -522,7 +527,11 @@ export const semantics: IStreamTokens['semantics'] = { chatReplyIndicatorOutgoing: '$brand400', chatTextIncoming: '$textPrimary', chatTextLink: '$textLink', - chatTextMention: '$textLink', + chatTextMention: '$accentPrimary', + chatTextMentionBroadcast: '$chatTextMention', + chatTextMentionGroup: '$chatTextMention', + chatTextMentionRole: '$chatTextMention', + chatTextMentionUser: '$chatTextMention', chatTextOutgoing: '$brand900', chatTextReaction: '$textSecondary', chatTextRead: '$accentPrimary', diff --git a/yarn.lock b/yarn.lock index 57ea5621cf..e26b444d44 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7064,7 +7064,7 @@ __metadata: languageName: node linkType: hard -"@types/ws@npm:^8.5.14": +"@types/ws@npm:^8.18.1": version: 8.18.1 resolution: "@types/ws@npm:8.18.1" dependencies: @@ -7503,6 +7503,15 @@ __metadata: languageName: node linkType: hard +"agent-base@npm:6": + version: 6.0.2 + resolution: "agent-base@npm:6.0.2" + dependencies: + debug: "npm:4" + checksum: 10c0/dc4f757e40b5f3e3d674bc9beb4f1048f4ee83af189bae39be99f57bf1f48dde166a8b0a5342a84b5944ee8e6ed1e5a9d801858f4ad44764e84957122fe46261 + languageName: node + linkType: hard + "agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": version: 7.1.4 resolution: "agent-base@npm:7.1.4" @@ -7919,14 +7928,15 @@ __metadata: languageName: node linkType: hard -"axios@npm:^1.15.1": - version: 1.16.0 - resolution: "axios@npm:1.16.0" +"axios@npm:^1.16.1": + version: 1.16.1 + resolution: "axios@npm:1.16.1" dependencies: follow-redirects: "npm:^1.16.0" form-data: "npm:^4.0.5" + https-proxy-agent: "npm:^5.0.1" proxy-from-env: "npm:^2.1.0" - checksum: 10c0/1c91a5221b77b76072026b4cc95ecdf38f7c3e33e63423abec09a85e6e9a12279637dcc9ac2ba1fc333e0c447fb3b0f46d7965acb5d7cea02d188e9c6d425c0b + checksum: 10c0/2f77e37e6552bbff8a772d058fb09500198e9188c6b20dc799d82dbe12a8cb506f6eed4e4e62a9ba612a35cbab496faa26d68f9bff14a53af6d15c3e136391a7 languageName: node linkType: hard @@ -11478,7 +11488,7 @@ __metadata: languageName: node linkType: hard -"form-data@npm:^4.0.4, form-data@npm:^4.0.5": +"form-data@npm:^4.0.5": version: 4.0.5 resolution: "form-data@npm:4.0.5" dependencies: @@ -12224,6 +12234,16 @@ __metadata: languageName: node linkType: hard +"https-proxy-agent@npm:^5.0.1": + version: 5.0.1 + resolution: "https-proxy-agent@npm:5.0.1" + dependencies: + agent-base: "npm:6" + debug: "npm:4" + checksum: 10c0/6dd639f03434003577c62b27cafdb864784ef19b2de430d8ae2a1d45e31c4fd60719e5637b44db1a88a046934307da7089e03d6089ec3ddacc1189d8de8897d1 + languageName: node + linkType: hard + "https-proxy-agent@npm:^7.0.0, https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.5": version: 7.0.6 resolution: "https-proxy-agent@npm:7.0.6" @@ -14483,7 +14503,7 @@ __metadata: languageName: node linkType: hard -"linkifyjs@npm:^4.3.2": +"linkifyjs@npm:^4.3.2, linkifyjs@npm:^4.3.3": version: 4.3.3 resolution: "linkifyjs@npm:4.3.3" checksum: 10c0/0eac293927f1465d13625c8c67c83c50d7fda9137c255a4a2ff5970ea4e9ba57de4846b170326e54b9e4e82be24f3705572bc50773737be9b13af5f1e4577798 @@ -18864,7 +18884,7 @@ __metadata: react-native-teleport: "npm:^1.1.7" react-native-video: "npm:^6.19.2" react-native-worklets: "npm:^0.8.3" - stream-chat: "npm:^9.44.2" + stream-chat: "npm:^9.45.0" stream-chat-react-native: "workspace:^" stream-chat-react-native-core: "workspace:^" typescript: "npm:5.9.3" @@ -19591,7 +19611,7 @@ __metadata: react-native-worklets: "npm:^0.9.1" react-test-renderer: "npm:19.2.3" rimraf: "npm:^6.0.1" - stream-chat: "npm:^9.44.2" + stream-chat: "npm:^9.45.0" typescript: "npm:5.9.3" use-sync-external-store: "npm:^1.5.0" uuid: "npm:^11.1.0" @@ -19663,20 +19683,25 @@ __metadata: languageName: unknown linkType: soft -"stream-chat@npm:^9.44.2": - version: 9.44.2 - resolution: "stream-chat@npm:9.44.2" +"stream-chat@npm:^9.44.2, stream-chat@npm:^9.45.0": + version: 9.45.0 + resolution: "stream-chat@npm:9.45.0" dependencies: "@types/jsonwebtoken": "npm:^9.0.8" - "@types/ws": "npm:^8.5.14" - axios: "npm:^1.15.1" + "@types/ws": "npm:^8.18.1" + axios: "npm:^1.16.1" base64-js: "npm:^1.5.1" - form-data: "npm:^4.0.4" + form-data: "npm:^4.0.5" isomorphic-ws: "npm:^5.0.0" jsonwebtoken: "npm:^9.0.3" - linkifyjs: "npm:^4.3.2" - ws: "npm:^8.18.1" - checksum: 10c0/2657a6fdf21f54833df230fa2f8261a3ff9648ae627ca394639dd4baf27c244257bd380544d45073915b7af64943e471e021c780c90426875662925048133895 + linkifyjs: "npm:^4.3.3" + ws: "npm:^8.20.1" + dependenciesMeta: + esbuild: + built: true + husky: + built: true + checksum: 10c0/549fe5ecee248653e00a8d31e11813aebe31a76c26f84e67589251e0bb2e48781dbc8925785a16dabe8a688eba317da3d63042887b7e7a6c528c38f836c6f421 languageName: node linkType: hard @@ -21278,7 +21303,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.12.1, ws@npm:^8.18.1": +"ws@npm:^8.12.1": version: 8.20.1 resolution: "ws@npm:8.20.1" peerDependencies: @@ -21293,6 +21318,21 @@ __metadata: languageName: node linkType: hard +"ws@npm:^8.20.1": + version: 8.21.0 + resolution: "ws@npm:8.21.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/ef4a243476283fc49bc7550966c4af4aa0eef56273837211e700de3b664e08604a760cdddcb5ba43c049140e74ccfec5b0ee0bb439e08c2adf9138902fdde5f9 + languageName: node + linkType: hard + "xcode@npm:^3.0.1": version: 3.0.1 resolution: "xcode@npm:3.0.1"