@redacto.io/consent-sdk-react 10.0.0-beta.2 → 10.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +9 -9
- package/CHANGELOG.md +31 -0
- package/dist/index.js +0 -54
- package/dist/index.mjs +0 -54
- package/dist/privacy-center.js +566 -821
- package/dist/privacy-center.mjs +416 -671
- package/package.json +1 -1
- package/src/RedactoNoticeAssisted/i18n.ts +0 -55
- package/src/RedactoNoticeConsent/language-codes.ts +0 -2
- package/src/RedactoPrivacyCenter/components/AppShell/AppShell.tsx +28 -0
- package/src/RedactoPrivacyCenter/components/AppShell/UserMenu.tsx +47 -45
- package/src/RedactoPrivacyCenter/components/SelectUser.tsx +15 -1
- package/src/RedactoPrivacyCenter/lib/constants.ts +0 -1
- package/src/RedactoPrivacyCenter/lib/locales.ts +0 -3
- package/src/RedactoPrivacyCenter/locales/as/translation.json +2 -1
- package/src/RedactoPrivacyCenter/locales/bn/translation.json +2 -1
- package/src/RedactoPrivacyCenter/locales/brx/translation.json +2 -1
- package/src/RedactoPrivacyCenter/locales/doi/translation.json +2 -1
- package/src/RedactoPrivacyCenter/locales/en/translation.json +3 -1
- package/src/RedactoPrivacyCenter/locales/gom/translation.json +2 -1
- package/src/RedactoPrivacyCenter/locales/gu/translation.json +2 -1
- package/src/RedactoPrivacyCenter/locales/hi/translation.json +2 -1
- package/src/RedactoPrivacyCenter/locales/kn/translation.json +2 -1
- package/src/RedactoPrivacyCenter/locales/ks/translation.json +2 -1
- package/src/RedactoPrivacyCenter/locales/mai/translation.json +2 -1
- package/src/RedactoPrivacyCenter/locales/ml/translation.json +2 -1
- package/src/RedactoPrivacyCenter/locales/mni-Mtei/translation.json +2 -1
- package/src/RedactoPrivacyCenter/locales/mr/translation.json +2 -1
- package/src/RedactoPrivacyCenter/locales/ne/translation.json +2 -1
- package/src/RedactoPrivacyCenter/locales/or/translation.json +2 -1
- package/src/RedactoPrivacyCenter/locales/pa/translation.json +2 -1
- package/src/RedactoPrivacyCenter/locales/sa/translation.json +2 -1
- package/src/RedactoPrivacyCenter/locales/sat/translation.json +2 -1
- package/src/RedactoPrivacyCenter/locales/sd/translation.json +2 -1
- package/src/RedactoPrivacyCenter/locales/ta/translation.json +2 -1
- package/src/RedactoPrivacyCenter/locales/te/translation.json +2 -1
- package/src/RedactoPrivacyCenter/locales/ur/translation.json +2 -1
- package/src/RedactoPrivacyCenter/styles/injectStyles.ts +18 -2
- package/src/RedactoPrivacyCenter/styles/pcStyles.ts +17 -0
- package/src/RedactoPrivacyCenter/ui/PCAvatar.test.tsx +83 -0
- package/src/RedactoPrivacyCenter/ui/PCAvatar.tsx +33 -9
- package/src/RedactoPrivacyCenter/locales/bho/translation.json +0 -342
|
@@ -669,6 +669,23 @@ export const pcStyles = {
|
|
|
669
669
|
height: '48px',
|
|
670
670
|
fontSize: getVar('--pc-font-size-base'),
|
|
671
671
|
},
|
|
672
|
+
// Image avatars (org logos) must NOT sit on the brand-colour fill `avatar` sets:
|
|
673
|
+
// --pc-info resolves to the org's own primary colour, so a brand-coloured mark on a
|
|
674
|
+
// transparent background would be invisible against it. Neutral surface + hairline
|
|
675
|
+
// border instead. border-box keeps the rendered box at the exact avatarSm/Md/Lg size.
|
|
676
|
+
avatarImage: {
|
|
677
|
+
backgroundColor: getVar('--pc-bg-shell'),
|
|
678
|
+
border: `1px solid ${getVar('--pc-border-color')}`,
|
|
679
|
+
boxSizing: 'border-box',
|
|
680
|
+
objectFit: 'contain',
|
|
681
|
+
padding: '3px',
|
|
682
|
+
},
|
|
683
|
+
// For an image avatar inside a control that already draws the ring and surface
|
|
684
|
+
// (the navbar avatar button) — otherwise the two rings nest as concentric circles.
|
|
685
|
+
avatarImageBare: {
|
|
686
|
+
backgroundColor: 'transparent',
|
|
687
|
+
border: 'none',
|
|
688
|
+
},
|
|
672
689
|
|
|
673
690
|
// Empty state styles
|
|
674
691
|
empty: {
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { afterEach, describe, expect, it } from 'vitest';
|
|
2
|
+
import { cleanup, fireEvent, render, screen } from '@testing-library/react';
|
|
3
|
+
import { PCAvatar } from './PCAvatar';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Regression: PCAvatar applied a single style object to BOTH branches, so an image
|
|
7
|
+
* avatar (the org logo) was painted onto a disc filled with var(--pc-info) — which
|
|
8
|
+
* applyBrandingTheme maps to the org's own primary colour. A brand-coloured mark on a
|
|
9
|
+
* transparent background therefore rendered as a featureless brand-coloured circle.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
const LOGO_SRC = 'https://cdn.example.com/org-icon.svg';
|
|
13
|
+
|
|
14
|
+
afterEach(cleanup);
|
|
15
|
+
|
|
16
|
+
describe('PCAvatar', () => {
|
|
17
|
+
it('does not paint the brand-colour fill behind a logo image', () => {
|
|
18
|
+
render(<PCAvatar src={LOGO_SRC} name="Acme Corp" color="info" />);
|
|
19
|
+
|
|
20
|
+
const image = screen.getByRole('img');
|
|
21
|
+
expect(image.style.backgroundColor).not.toBe('var(--pc-info)');
|
|
22
|
+
expect(image.style.backgroundColor).toBe('var(--pc-bg-shell)');
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('contains the logo instead of stretching it, and keeps the box at its nominal size', () => {
|
|
26
|
+
render(<PCAvatar src={LOGO_SRC} name="Acme Corp" size="sm" color="info" />);
|
|
27
|
+
|
|
28
|
+
const image = screen.getByRole('img');
|
|
29
|
+
expect(image.style.objectFit).toBe('contain');
|
|
30
|
+
expect(image.style.boxSizing).toBe('border-box');
|
|
31
|
+
expect(image.style.width).toBe('24px');
|
|
32
|
+
expect(image.style.height).toBe('24px');
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it('falls back to initials when the logo fails to load', () => {
|
|
36
|
+
render(<PCAvatar src={LOGO_SRC} name="Acme Corp" color="info" />);
|
|
37
|
+
|
|
38
|
+
fireEvent.error(screen.getByRole('img'));
|
|
39
|
+
|
|
40
|
+
expect(screen.queryByRole('img')).toBeNull();
|
|
41
|
+
expect(screen.getByText('AC')).toBeTruthy();
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
it('still fills initials avatars with the requested colour', () => {
|
|
45
|
+
render(<PCAvatar name="Acme Corp" color="info" />);
|
|
46
|
+
|
|
47
|
+
expect(screen.getByText('AC').style.backgroundColor).toBe('var(--pc-info)');
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it('keeps its tile and ring by default (standalone brand mark)', () => {
|
|
51
|
+
render(<PCAvatar src={LOGO_SRC} name="Acme Corp" color="info" />);
|
|
52
|
+
|
|
53
|
+
const image = screen.getByRole('img');
|
|
54
|
+
expect(image.style.border).toContain('var(--pc-border-color)');
|
|
55
|
+
expect(image.style.backgroundColor).toBe('var(--pc-bg-shell)');
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
it('drops its tile and ring when framed={false}, so it cannot nest inside a bordered control', () => {
|
|
59
|
+
render(<PCAvatar src={LOGO_SRC} name="Acme Corp" color="info" framed={false} />);
|
|
60
|
+
|
|
61
|
+
const image = screen.getByRole('img');
|
|
62
|
+
expect(image.style.border).not.toContain('--pc-border-color');
|
|
63
|
+
expect(image.style.backgroundColor).toBe('transparent');
|
|
64
|
+
// Still contained — framed only controls the chrome, not the fit.
|
|
65
|
+
expect(image.style.objectFit).toBe('contain');
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it('does not strip the initials fill when framed={false}', () => {
|
|
69
|
+
render(<PCAvatar name="Acme Corp" color="info" framed={false} />);
|
|
70
|
+
|
|
71
|
+
expect(screen.getByText('AC').style.backgroundColor).toBe('var(--pc-info)');
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
it('lets a caller override the style on both branches', () => {
|
|
75
|
+
const { rerender } = render(
|
|
76
|
+
<PCAvatar src={LOGO_SRC} name="Acme Corp" style={{ backgroundColor: 'red' }} />,
|
|
77
|
+
);
|
|
78
|
+
expect(screen.getByRole('img').style.backgroundColor).toBe('red');
|
|
79
|
+
|
|
80
|
+
rerender(<PCAvatar name="Acme Corp" style={{ backgroundColor: 'red' }} />);
|
|
81
|
+
expect(screen.getByText('AC').style.backgroundColor).toBe('red');
|
|
82
|
+
});
|
|
83
|
+
});
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
import { type CSSProperties } from 'react';
|
|
1
|
+
import { useEffect, useState, type CSSProperties } from 'react';
|
|
2
2
|
import { pcStyles } from '../styles/pcStyles';
|
|
3
3
|
|
|
4
|
-
export
|
|
4
|
+
export type PCAvatarProps = Readonly<{
|
|
5
5
|
name?: string;
|
|
6
6
|
src?: string;
|
|
7
7
|
className?: string;
|
|
8
8
|
style?: CSSProperties;
|
|
9
9
|
size?: 'sm' | 'md' | 'lg';
|
|
10
10
|
color?: 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'info';
|
|
11
|
-
|
|
11
|
+
// Image avatars draw their own surface + hairline ring. Set false when a parent
|
|
12
|
+
// control already draws them, so the two don't nest as concentric rings.
|
|
13
|
+
framed?: boolean;
|
|
14
|
+
}>;
|
|
12
15
|
|
|
13
16
|
function getInitials(name: string): string {
|
|
14
17
|
return name
|
|
@@ -40,29 +43,50 @@ export function PCAvatar({
|
|
|
40
43
|
style = {},
|
|
41
44
|
size = 'md',
|
|
42
45
|
color = 'primary',
|
|
46
|
+
framed = true,
|
|
43
47
|
}: PCAvatarProps) {
|
|
44
|
-
const
|
|
48
|
+
const [failed, setFailed] = useState(false);
|
|
49
|
+
|
|
50
|
+
// A new src deserves a fresh attempt — otherwise switching org/profile strands
|
|
51
|
+
// the avatar on the previous image's failure.
|
|
52
|
+
useEffect(() => setFailed(false), [src]);
|
|
53
|
+
|
|
54
|
+
const baseStyle: CSSProperties = {
|
|
45
55
|
...pcStyles.avatar,
|
|
46
56
|
...(size === 'sm' && pcStyles.avatarSm),
|
|
47
57
|
...(size === 'md' && pcStyles.avatarMd),
|
|
48
58
|
...(size === 'lg' && pcStyles.avatarLg),
|
|
49
|
-
backgroundColor: getColor(color),
|
|
50
|
-
...style,
|
|
51
59
|
};
|
|
52
60
|
|
|
53
|
-
if (src) {
|
|
61
|
+
if (src && !failed) {
|
|
62
|
+
// avatarImage overrides the brand-colour fill baked into pcStyles.avatar; a logo
|
|
63
|
+
// is usually a brand-coloured mark on transparency and would vanish against it.
|
|
64
|
+
const imageStyle: CSSProperties = {
|
|
65
|
+
...baseStyle,
|
|
66
|
+
...pcStyles.avatarImage,
|
|
67
|
+
...(!framed && pcStyles.avatarImageBare),
|
|
68
|
+
...style,
|
|
69
|
+
};
|
|
70
|
+
|
|
54
71
|
return (
|
|
55
72
|
<img
|
|
56
73
|
src={src}
|
|
57
74
|
alt={name}
|
|
58
75
|
className={className}
|
|
59
|
-
style={
|
|
76
|
+
style={imageStyle}
|
|
77
|
+
onError={() => setFailed(true)}
|
|
60
78
|
/>
|
|
61
79
|
);
|
|
62
80
|
}
|
|
63
81
|
|
|
82
|
+
const initialsStyle: CSSProperties = {
|
|
83
|
+
...baseStyle,
|
|
84
|
+
backgroundColor: getColor(color),
|
|
85
|
+
...style,
|
|
86
|
+
};
|
|
87
|
+
|
|
64
88
|
return (
|
|
65
|
-
<div className={className} style={
|
|
89
|
+
<div className={className} style={initialsStyle}>
|
|
66
90
|
{name ? getInitials(name) : '?'}
|
|
67
91
|
</div>
|
|
68
92
|
);
|
|
@@ -1,342 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"consented": "सहमति दिहल गइल",
|
|
3
|
-
"declined": "अस्वीकार कइल गइल",
|
|
4
|
-
"withdrawn": "वापस लिहल गइल",
|
|
5
|
-
"dateRange": "तारीख सीमा",
|
|
6
|
-
"allTime": "सब समय",
|
|
7
|
-
"customRange": "कस्टम सीमा",
|
|
8
|
-
"from": "से",
|
|
9
|
-
"to": "तक",
|
|
10
|
-
"clearFilters": "फिल्टर साफ करीं",
|
|
11
|
-
"myReceipt": "हमार रसीद",
|
|
12
|
-
"myReceiptSubtitle": "आपन सहमति के रसीद देखीं",
|
|
13
|
-
"event": "घटना",
|
|
14
|
-
"date": "तारीख",
|
|
15
|
-
"time": "समय",
|
|
16
|
-
"download": "डाउनलोड करीं",
|
|
17
|
-
"consentGranted": "सहमति दिहल गइल",
|
|
18
|
-
"consentRevoked": "सहमति वापस लिहल गइल",
|
|
19
|
-
"consentDeclined": "सहमति अस्वीकार कइल गइल",
|
|
20
|
-
"consentExpired": "सहमति के अवधि खतम",
|
|
21
|
-
"failedToFetchReceipts": "रसीद पावे में विफल",
|
|
22
|
-
"failedToDownloadReceipt": "रसीद डाउनलोड करे में विफल",
|
|
23
|
-
"yourPrivacyCenter": "रउरा गोपनीयता केंद्र",
|
|
24
|
-
"yourRightsOverDataSimplified": "रउरा डेटा पर अधिकार, सरल रूप में",
|
|
25
|
-
"description": "एप्लिकेशन गोपनीयता कानून रउरा के कुछ अधिकार देला जवन हमनी के द्वारा रउरा जानकारी के संग्रह, उपयोग, साझा करे आ संग्रह करे से जुड़ल बा, आ हम रउरा के ई अधिकार के प्रयोग करे के स्वागत करिला। कृपया नीचे दिहल फॉर्म भर दीं ताकि हम रउरा अनुरोध के सत्यापित आ पूरा कर सकीं। अधिक जानकारी खातिर, कृपया हमार आंतरिक गोपनीयता नीति पढ़ीं।",
|
|
26
|
-
"privacyPolicy": "गोपनीयता नीति",
|
|
27
|
-
"raiseDataRequest": "डेटा अनुरोध उठाईं",
|
|
28
|
-
"exerciseYourRights": "रउरा अधिकार के प्रयोग करीं",
|
|
29
|
-
"fullName": "पूरा नाम",
|
|
30
|
-
"contact": "संपर्क",
|
|
31
|
-
"requestType": "अनुरोध के प्रकार",
|
|
32
|
-
"requestDetails": "अनुरोध के विवरण",
|
|
33
|
-
"supportingDocumentation": "समर्थन दस्तावेज",
|
|
34
|
-
"timePeriod": "समय अवधि",
|
|
35
|
-
"additionalNote": "अतिरिक्त टिप्पणी",
|
|
36
|
-
"captchaVerification": "कैप्चा सत्यापन",
|
|
37
|
-
"selectRequestType": "कृपया रउरा जे अनुरोध करे चाहत बानी, ओकरा प्रकार के चयन करीं",
|
|
38
|
-
"uploadFile": "फाइल अपलोड करे खातिर इहाँ क्लिक करीं",
|
|
39
|
-
"uploading": "अपलोड होइत बा...",
|
|
40
|
-
"uploadFileButton": "फाइल अपलोड",
|
|
41
|
-
"saveDraft": "ड्राफ्ट सहेजें",
|
|
42
|
-
"submit": "जमा करीं",
|
|
43
|
-
"confirmCheckBox": "हम पुष्टि करीला कि हम डेटा प्रिंसिपल के ओर से ई अनुरोध दर्ज करे खातिर अधिकृत बानी",
|
|
44
|
-
"revokeConsentModalTitle": "मिटावे के साथ सहमति भी वापस लीं?",
|
|
45
|
-
"revokeConsentModalQuestion": "एह मिटावे के अनुरोध के उद्देश्य(न) खातिर रउआ के सक्रिय सहमति बा। का रउआ अनुरोध पूरा होखला पर ई सहमति भी वापस लिहल चाहब?",
|
|
46
|
-
"revokeConsentModalPurposesLabel": "रउआ के मिटावे के अनुरोध में उद्देश्य",
|
|
47
|
-
"revokeConsentModalConsentActive": "सहमति सक्रिय",
|
|
48
|
-
"revokeConsentModalIfYesLabel": "अगर रउआ हाँ चुनब:",
|
|
49
|
-
"revokeConsentModalIfYesBody": "जब संगठन रउआ के मिटावे के अनुरोध पूरा कर दी, त ऊपर के उद्देश्य(न) खातिर रउआ के सहमति स्वतः वापस ले लिहल जाई आ रउआ के ईमेल से सूचित कइल जाई।",
|
|
50
|
-
"revokeConsentModalYourPurposes": "रउआ के चुनल उद्देश्य",
|
|
51
|
-
"revokeConsentModalAndMore": "आ {{count}} गो अउरी",
|
|
52
|
-
"revokeConsentYes": "हाँ, सहमति भी वापस लीं",
|
|
53
|
-
"revokeConsentNo": "नाहीं, खाली मिटाईं",
|
|
54
|
-
"erasureConsentRevokeNotice": "{{purposes}} खातिर रउआ के सहमति रउआ के अनुरोध पूरा होते स्वतः वापस ले लिहल जाई।",
|
|
55
|
-
"requestSubmittedSuccessfully": "अनुरोध सफलतापूर्वक जमा भइल",
|
|
56
|
-
"thankYouForSubmittingYourRequest": "रउरा अनुरोध जमा करे खातिर धन्यवाद",
|
|
57
|
-
"caseID": "मामला आईडी",
|
|
58
|
-
"saveThisID": "कृपया भविष्य में संदर्भ खातिर ई आईडी सहेज लीं",
|
|
59
|
-
"confirmationSentTo": "पुष्टि भेजल गइल बा",
|
|
60
|
-
"processRequest": "हम रउरा अनुरोध के कानून के अनुसार प्रक्रिया करब",
|
|
61
|
-
"yourDataIsSafeWithUs": "रउरा डेटा हमनी के पास सुरक्षित बा। हम सुरक्षित प्रक्रिया के सुनिश्चित करिला",
|
|
62
|
-
"enterYourEmail": "रउरा ईमेल दर्ज करीं",
|
|
63
|
-
"letsConfirm": "चलीं, रउरा पहचान के पुष्टि करीं",
|
|
64
|
-
"getOtp": "ओटीपी प्राप्त करीं",
|
|
65
|
-
"otpVerify": "ओटीपी सत्यापन",
|
|
66
|
-
"enterOtp": "भेजल गइल 6-अंकीय ओटीपी दर्ज करीं",
|
|
67
|
-
"didntReceiveCode": "कोड ना मिलल?",
|
|
68
|
-
"cancel": "रद्द करीं",
|
|
69
|
-
"verifyOtp": "ओटीपी सत्यापित करीं",
|
|
70
|
-
"resendOtp": "ओटीपी फेर से भेजीं",
|
|
71
|
-
"access": "पहुंच",
|
|
72
|
-
"deletion": "हटाव",
|
|
73
|
-
"objection": "आपत्ति",
|
|
74
|
-
"modify": "संशोधन",
|
|
75
|
-
"correction": "सुधार",
|
|
76
|
-
"selectAll": "सब चुनल जाव",
|
|
77
|
-
"dataCollected": "संग्रहित डेटा",
|
|
78
|
-
"selectFieldsToUpdate": "अपडेट करे खातिर फील्ड चुनल जाव",
|
|
79
|
-
"enterCorrectValue": "प्रत्येक चुनल फील्ड खातिर सही मान दर्ज करीं",
|
|
80
|
-
"whatDataToAccess": "कवन डेटा रउरा एक्सेस करे चाहत बानी?",
|
|
81
|
-
"whatDataToDelete": "कवन डेटा हमनी के हटावे के चाहीं?",
|
|
82
|
-
"objectingProcessingActivities": "कवन प्रोसेसिंग गतिविधि पर रउरा आपत्ति बा?",
|
|
83
|
-
"whatDataToModify": "कवन डेटा हमनी के संशोधित करे के चाहीं?",
|
|
84
|
-
"enterSixDigitOtp": "कृपया 6-अंकीय ओटीपी दर्ज करीं।",
|
|
85
|
-
"invalidOtp": "अमान्य ओटीपी। कृपया फेर से प्रयास करीं।",
|
|
86
|
-
"enterEmailAddress": "कृपया रउरा ईमेल पता दर्ज करीं",
|
|
87
|
-
"enterValidEmail": "कृपया एक वैध ईमेल पता दर्ज करीं",
|
|
88
|
-
"mustBeRegisteredUserWithOrg": "रउरा के साथे पंजीकृत उपयोगकर्ता होखे के चाहीं",
|
|
89
|
-
"errorSendingOtp": "ओटीपी भेजे में त्रुटि",
|
|
90
|
-
"otpSentEmail": "ओटीपी रउरा ईमेल पर भेजल गइल बा",
|
|
91
|
-
"signedInSuccess": "सफलतापूर्वक साइन इन भइल!",
|
|
92
|
-
"reasonOptional": "कारण (वैकल्पिक)",
|
|
93
|
-
"backToHome": "मुख्य पृष्ठ पर वापस जाईं",
|
|
94
|
-
"today": "आज",
|
|
95
|
-
"last7Days": "पिछला 7 दिन",
|
|
96
|
-
"last30Days": "पिछला 30 दिन",
|
|
97
|
-
"last3Months": "पिछला 3 महीना",
|
|
98
|
-
"erasure": "मिटावा",
|
|
99
|
-
"grievance": "शिकायत",
|
|
100
|
-
"selectGrievance": "रउआ कवन शिकायत चुने चाहत बानी?",
|
|
101
|
-
"consentViolation": "सहमति उल्लंघन",
|
|
102
|
-
"unlawfulProcessing": "अवैध प्रसंस्करण",
|
|
103
|
-
"dataBreach": "डेटा उल्लंघन",
|
|
104
|
-
"manageConsent": "सहमति प्रबंधन करीं",
|
|
105
|
-
"manageConsentSubtitle": "एक जगह अपना सब सहमति देखीं आओर प्रबंधन करीं",
|
|
106
|
-
"export": "निर्यात",
|
|
107
|
-
"search": "खोजीं",
|
|
108
|
-
"status": "स्थिति",
|
|
109
|
-
"product": "उत्पाद",
|
|
110
|
-
"exportConsentData": "सहमति डेटा निर्यात करीं",
|
|
111
|
-
"exportConsentDataSubtitle": "ई अभी दिखाई देखेवला पंक्ति के CSV फाइल के रूप में डाउनलोड करेई।",
|
|
112
|
-
"exportingIncludesFilters": "निर्यात मे ई टेबल व्यू मे लागू फिल्टर आओर खोज सम्मिलित बा।",
|
|
113
|
-
"failedToFetchConsentData": "सहमति डेटा लाओने मे असफल",
|
|
114
|
-
"missingInfoToRevoke": "सहमति वापस लेबे खाती जरूरी जानकारी नइखे",
|
|
115
|
-
"consentRevokedSuccess": "सहमति कामयाबी से वापस लेल गइल।",
|
|
116
|
-
"unableToRevokeConsent": "सहमति वापस ले सकेलम नाही",
|
|
117
|
-
"errorRevokingConsent": "सहमति वापस लेत समय त्रुटि भइल",
|
|
118
|
-
"consentRegrantedSuccess": "सहमति कामयाबी से फिर से देल गइल।",
|
|
119
|
-
"unableToRegrantConsent": "सहमति फिर से दे सकेलम नाही",
|
|
120
|
-
"consentRenewedSuccess": "सहमति कामयाबी से नवीकरण भइल।",
|
|
121
|
-
"unableToRenewConsent": "सहमति नवीकरण कर सकेलम नाही",
|
|
122
|
-
"nominatorNotFound": "बतावल नामांककर्ता रउआ नामांकनन में ना मिलल।",
|
|
123
|
-
"nomineeMustSpecifyNominator": "कृपया चुनीं कि रउआ कवन नामांककर्ता के उद्देश्यन के प्रबंधन करे चाहत बानी।",
|
|
124
|
-
"missingInfoToManage": "सहमति प्रबंधित करे खाती जरूरी जानकारी नइखे",
|
|
125
|
-
"purpose": "उद्देश्य",
|
|
126
|
-
"givenDate": "देल तारीख",
|
|
127
|
-
"validTill": "मान्य तक",
|
|
128
|
-
"untilWithdrawalNoExpiry": "वापसी तक (कोनो समाप्ति नइखे)",
|
|
129
|
-
"method": "विधि",
|
|
130
|
-
"action": "कार्रवाई",
|
|
131
|
-
"modifyButton": "बदलीं",
|
|
132
|
-
"statusActive": "सक्रिय",
|
|
133
|
-
"statusWithdrawn": "वापस लेल गइल",
|
|
134
|
-
"statusExpired": "समाप्त",
|
|
135
|
-
"statusDeclined": "अस्वीकृत",
|
|
136
|
-
"modifyConsent": "सहमति बदलीं",
|
|
137
|
-
"aboutToModifyConsent": "रउआ अपनी सहमति बदलत बानी:",
|
|
138
|
-
"aboutToModifyConsentOnBehalf": "रउआ {{nominator}} के ओर से सहमति में बदलाव करे वाला बानी:",
|
|
139
|
-
"noDataElementsAvailable": "कोनो डेटा तत्व उपलब्ध नइखे",
|
|
140
|
-
"revokeConsentWarning": "अगर रउआ ई सहमति वापस लेबें, तs ई डेटा पर निर्भर कुछ फीचर के पहुंच खो सकत बानी।",
|
|
141
|
-
"revokeConsent": "सहमति वापस लेबें",
|
|
142
|
-
"regrantConsent": "सहमति फिर से देबें",
|
|
143
|
-
"regrantConsentWarning": "ई सहमति फिर से देबे पर, रउआ संगठन के ई उद्देश्य खातिर फिर से रउआ डेटा प्रोसेस करे के इजाजत देत बानी।",
|
|
144
|
-
"aboutToRegrantConsent": "रउआ अपनी सहमति फिर से देत बानी:",
|
|
145
|
-
"aboutToRegrantConsentOnBehalf": "रउआ {{nominator}} के ओर से सहमति फिर से देवे वाला बानी:",
|
|
146
|
-
"renewConsent": "सहमति नवीकरण करीं",
|
|
147
|
-
"renewConsentWarning": "ई सहमति नवीकरण करे पर, रउआ ई उद्देश्य के वैधता अवधि बढ़ा देत बानी।",
|
|
148
|
-
"aboutToRenewConsent": "रउआ अपनी सहमति के नवीकरण करत बानी:",
|
|
149
|
-
"aboutToRenewConsentOnBehalf": "रउआ {{nominator}} के ओर से सहमति के नवीनीकरण करे वाला बानी:",
|
|
150
|
-
"activities": "गतिविधि",
|
|
151
|
-
"activitiesSubtitle": "अपन गोपनीयता केंद्र गतिविधि इतिहास देखीं",
|
|
152
|
-
"activity": "गतिविधि",
|
|
153
|
-
"activityType": "गतिविधि प्रकार",
|
|
154
|
-
"activityDescription": "विवरण",
|
|
155
|
-
"timestamp": "समय",
|
|
156
|
-
"grievanceRequests": "गोपनीयता आग्रह",
|
|
157
|
-
"grievanceSubtitle": "अपन डेटा गोपनीयता आग्रह जमा करीं आ ट्रैक करीं",
|
|
158
|
-
"newRequest": "नव आग्रह",
|
|
159
|
-
"searchCasesByID": "आईडी सँ केस खोजीं",
|
|
160
|
-
"allRequests": "सभ आग्रह",
|
|
161
|
-
"processing": "प्रसंस्करण",
|
|
162
|
-
"completed": "पूर्ण",
|
|
163
|
-
"rejected": "अस्वीकृत",
|
|
164
|
-
"filterByType": "प्रकार सँ फिल्टर करीं",
|
|
165
|
-
"filter": "फिल्टर",
|
|
166
|
-
"errorLoadingCaseHistory": "केस इतिहास लोड करत मे त्रुटि",
|
|
167
|
-
"unknownError": "अज्ञात त्रुटि",
|
|
168
|
-
"pleaseSignInToViewGrievance": "अपन शिकायत आग्रह देखै लेल साइन इन करीं",
|
|
169
|
-
"emailNotFoundInSession": "सत्र मे ईमेल नै मिलल",
|
|
170
|
-
"submittedOn": "जमा तिथि",
|
|
171
|
-
"viewDetails": "विवरण देखीं",
|
|
172
|
-
"downloadResponse": "जवाब डाउनलोड करीं",
|
|
173
|
-
"caseDetails": "केस विवरण",
|
|
174
|
-
"createdAt": "बनाएल तिथि",
|
|
175
|
-
"completedAt": "पूर्ण तिथि",
|
|
176
|
-
"requestSpecifics": "आग्रह विवरण",
|
|
177
|
-
"purposesInvolved": "संबंधित उद्देश्य",
|
|
178
|
-
"dataToCorrect": "सही करै लेल डेटा",
|
|
179
|
-
"field": "क्षेत्र",
|
|
180
|
-
"currentValue": "वर्तमान मान",
|
|
181
|
-
"newValue": "नव मान",
|
|
182
|
-
"grievanceTypes": "शिकायत प्रकार",
|
|
183
|
-
"close": "बन्द करीं",
|
|
184
|
-
"noData": "कोनो डेटा नै",
|
|
185
|
-
"noDataTitle": "अबहीं देखावे खातिर कुछ नइखे",
|
|
186
|
-
"noDataDescription": "रउरा खाता से जुड़ल कवनो सहमति, अनुरोध, या गतिविधि अबहीं तक ना मिलल। रउरा गोपनीयता रिकॉर्ड उपलब्ध होते ई इहाँ देखाई दिही।",
|
|
187
|
-
"sessionExpiredTitle": "रउआ के सत्र खतम हो गइल बा",
|
|
188
|
-
"sessionExpiredDescription": "जारी रखे खातिर कृपया फेर से साइन इन करीं।",
|
|
189
|
-
"rowsPerPage": "पृष्ठ प्रति पंक्ति:",
|
|
190
|
-
"pageOf": "पृष्ठ {{current}} / {{total}}",
|
|
191
|
-
"rowsSelected": "{{total}} में से {{count}} पंक्ति चुनल गइल",
|
|
192
|
-
"consentManager": "सहमति प्रबंधक",
|
|
193
|
-
"badgeNew": "नया",
|
|
194
|
-
"back": "पाछे",
|
|
195
|
-
"signOut": "साइन आउट",
|
|
196
|
-
"translationNotAvailable": "अनुवाद उपलब्ध नइखे।",
|
|
197
|
-
"failedToFetchFormData": "फॉर्म डेटा लावे में नाकाम।",
|
|
198
|
-
"requestSubmittedSuccess": "अनुरोध कामयाबी से जमा भ गेल",
|
|
199
|
-
"requestSubmissionFailed": "अनुरोध जमा करे में नाकाम",
|
|
200
|
-
"submissionFailed": "जमा करे में नाकाम",
|
|
201
|
-
"failedToUploadFile": "{{fileName}} अपलोड करे में नाकाम",
|
|
202
|
-
"fileUploadedSuccess": "फाइल कामयाबी से अपलोड भ गइल",
|
|
203
|
-
"uploadError": "अपलोड त्रुटि: {{error}}",
|
|
204
|
-
"pleaseEnterContactToVerify": "जांच खातिर संपर्क दर्ज करीं",
|
|
205
|
-
"missingOrgOrWorkspace": "संगठन या वर्कस्पेस जानकारी गायब बा",
|
|
206
|
-
"contactVerifiedSuccess": "संपर्क कामयाबी से जांच भ गइल",
|
|
207
|
-
"unableToVerifyContact": "संपर्क जांच ना पावत। जांच करीं आ फेर प्रयास करीं।",
|
|
208
|
-
"noUserFoundForContact": "संगठन में {{contact}} खातिर कोई प्रयोगकर्ता ना मिलल, या {{contact}} संगठन के हिस्सा नइखे",
|
|
209
|
-
"failedToVerifyContact": "संपर्क जांच करे में नाकाम। फेर प्रयास करीं।",
|
|
210
|
-
"verify": "सत्यापित करीं",
|
|
211
|
-
"verifying": "सत्यापित होइत बा...",
|
|
212
|
-
"contactPlaceholder": "abc@gmail.com",
|
|
213
|
-
"myConsents": "हमार सहमतियन",
|
|
214
|
-
"managing": "प्रबंधन",
|
|
215
|
-
"consentVisibility": "सहमति दृश्यता",
|
|
216
|
-
"managingConsentsFor": "इनकर सहमतियन के प्रबंधन:",
|
|
217
|
-
"statusTransferred": "स्थानांतरित",
|
|
218
|
-
"nomination": "नामांकन",
|
|
219
|
-
"enterNomineeDetails": "नामांकित व्यक्ति के विवरण दर्ज करीं",
|
|
220
|
-
"nomineeEmail": "नामांकित व्यक्ति के ईमेल",
|
|
221
|
-
"nomineeEmailPlaceholder": "nominee@example.com",
|
|
222
|
-
"nomineeMobile": "नामांकित व्यक्ति के मोबाइल",
|
|
223
|
-
"nomineeMobilePlaceholder": "+919876543210",
|
|
224
|
-
"descriptionLabel": "विवरण",
|
|
225
|
-
"messages": "संदेश",
|
|
226
|
-
"myDocuments": "हमार दस्तावेज",
|
|
227
|
-
"submitted": "जमा भइल",
|
|
228
|
-
"responseDue": "जवाब बाकी बा",
|
|
229
|
-
"secureMessagesNotice": "रउआ संदेश बस गोपनीयता टीम के सुरक्षित तरीका से भेजल जाला।",
|
|
230
|
-
"caseFinalizedMessagesTooltip": "ई केस अंतिम हो गइल बा — अब संदेस ना भेजल जा सके।",
|
|
231
|
-
"noMessagesYet": "अबहीं तक कवनो संदेश नइखे",
|
|
232
|
-
"writeMessagePlaceholder": "गोपनीयता टीम के संदेश लिखीं...",
|
|
233
|
-
"attachFile": "फाइल जोड़ीं",
|
|
234
|
-
"send": "भेजीं",
|
|
235
|
-
"messagesSecureFooter": "संदेश बस गोपनीयता टीम के सुरक्षित तरीका से भेजल जाला",
|
|
236
|
-
"noDocumentsYet": "अबहीं तक कवनो दस्तावेज नइखे",
|
|
237
|
-
"errorLoadingMessages": "संदेश लोड करे में असफल। कृपया फिर से कोसिस करीं।",
|
|
238
|
-
"refreshMessages": "संदेश ताजा करीं",
|
|
239
|
-
"senderYou": "रउआ",
|
|
240
|
-
"senderPrivacyTeam": "गोपनीयता टीम",
|
|
241
|
-
"documentAccepted": "रउआ दस्तावेज स्वीकार भइल",
|
|
242
|
-
"documentRejected": "रउआ दस्तावेज रद्द भइल",
|
|
243
|
-
"replacementRequested": "बदली दस्तावेज के अनुरोध भइल बा",
|
|
244
|
-
"documentRequestedLabel": "दस्तावेज अनुरोध: {{title}}",
|
|
245
|
-
"acceptedLabel": "स्वीकार: {{accepted}}",
|
|
246
|
-
"uploadAndSubmit": "अपलोड आ जमा करीं",
|
|
247
|
-
"rejectionReasonLabel": "कारण: {{reason}}",
|
|
248
|
-
"docStatusPending": "लंबित",
|
|
249
|
-
"docStatusUnderReview": "समीक्षा में",
|
|
250
|
-
"docStatusApproved": "मंजूर",
|
|
251
|
-
"docStatusRejected": "रद्द",
|
|
252
|
-
"docStatusReplacementRequested": "बदली अनुरोध",
|
|
253
|
-
"notificationHub": "सूचना केंद्र",
|
|
254
|
-
"notificationHubSubtitle": "रउआ सब गोपनीयता-संबंधित सूचना एक जगह",
|
|
255
|
-
"backToManageConsent": "सहमति प्रबंधन पर वापस जाईं",
|
|
256
|
-
"notifications": "सूचना",
|
|
257
|
-
"total": "कुल",
|
|
258
|
-
"unread": "अनपढ़ल",
|
|
259
|
-
"actionNeeded": "कार्रवाई जरूरी बा",
|
|
260
|
-
"acknowledged": "मानल गइल",
|
|
261
|
-
"markAllAsRead": "सब के पढ़ल चिन्हित करीं",
|
|
262
|
-
"refreshNotifications": "सूचना ताजा करीं",
|
|
263
|
-
"all": "सब",
|
|
264
|
-
"consent": "सहमति",
|
|
265
|
-
"requests": "अनुरोध",
|
|
266
|
-
"system": "सिस्टम",
|
|
267
|
-
"loadingNotifications": "सूचना लोड हो रहल बा...",
|
|
268
|
-
"noNotificationsInCategory": "एह श्रेणी में कवनो सूचना नइखे।",
|
|
269
|
-
"noNotificationsYet": "अबहीं तक कवनो सूचना नइखे।",
|
|
270
|
-
"previous": "पिछला",
|
|
271
|
-
"next": "अगिला",
|
|
272
|
-
"viewAllNotifications": "सब सूचना देखीं",
|
|
273
|
-
"justNow": "अबहीं",
|
|
274
|
-
"minutesAgo": "{{count}}मि पहिले",
|
|
275
|
-
"hoursAgo": "{{count}}घं पहिले",
|
|
276
|
-
"daysAgo": "{{count}}दि पहिले",
|
|
277
|
-
"weeksAgo": "{{count}}ह पहिले",
|
|
278
|
-
"paginationRange": "{{start}}–{{end}} / {{total}}",
|
|
279
|
-
"poweredBy": "के द्वारा संचालित",
|
|
280
|
-
"redactoLogoAlt": "रेडैक्टो लोगो",
|
|
281
|
-
"switchToDarkMode": "डार्क मोड पर जाईं",
|
|
282
|
-
"switchToLightMode": "लाइट मोड पर जाईं",
|
|
283
|
-
"loadingEllipsis": "लोड हो रहल बा...",
|
|
284
|
-
"loading": "लोड हो रहल बा",
|
|
285
|
-
"clearInput": "इनपुट साफ करीं",
|
|
286
|
-
"selectPlaceholder": "चुनीं...",
|
|
287
|
-
"searchPlaceholder": "खोजीं...",
|
|
288
|
-
"noOptionsFound": "कवनो विकल्प ना मिलल",
|
|
289
|
-
"clearSelection": "चयन साफ करीं",
|
|
290
|
-
"closeModal": "मोडल बंद करीं",
|
|
291
|
-
"totalRecords": "कुल: {{count}} रिकॉर्ड",
|
|
292
|
-
"goToFirstPage": "पहिला पन्ना पर जाईं",
|
|
293
|
-
"goToPreviousPage": "पिछला पन्ना पर जाईं",
|
|
294
|
-
"goToNextPage": "अगिला पन्ना पर जाईं",
|
|
295
|
-
"goToLastPage": "आखिरी पन्ना पर जाईं",
|
|
296
|
-
"openSidebarMenu": "साइडबार मेनू खोलीं",
|
|
297
|
-
"closeSidebarMenu": "साइडबार मेनू बंद करीं",
|
|
298
|
-
"expandSidebar": "साइडबार बड़ा करीं",
|
|
299
|
-
"collapseSidebar": "साइडबार छोट करीं",
|
|
300
|
-
"currentValuePlaceholder": "अबहीं के मान",
|
|
301
|
-
"updatedValuePlaceholder": "अपडेट भइल मान",
|
|
302
|
-
"removeAttachment": "संलग्नक हटाईं",
|
|
303
|
-
"document": "दस्तावेज",
|
|
304
|
-
"downloadAttachment": "{{fileName}} डाउनलोड करीं",
|
|
305
|
-
"sortByColumn": "कॉलम अनुसार क्रमबद्ध करीं",
|
|
306
|
-
"manage": "Manage",
|
|
307
|
-
"consents": "Consents",
|
|
308
|
-
"consentCount_one": "{{count}} consent",
|
|
309
|
-
"consentCount_other": "{{count}} consents",
|
|
310
|
-
"purposes": "Purposes",
|
|
311
|
-
"latestActivity": "Latest activity",
|
|
312
|
-
"activeWithCount": "{{count}} active",
|
|
313
|
-
"withdrawnWithCount": "{{count}} withdrawn",
|
|
314
|
-
"expiredWithCount": "{{count}} expired",
|
|
315
|
-
"declinedWithCount": "{{count}} declined",
|
|
316
|
-
"productsAndConsentsSummary": "{{products}} products, {{consents}} consents",
|
|
317
|
-
"selectProductsForRequest": "Select one or more products for your {{requestType}} request",
|
|
318
|
-
"selectProductsForRequestGeneric": "Select one or more products to continue",
|
|
319
|
-
"yourData": "Your data",
|
|
320
|
-
"actingOnBehalfOf": "Acting on behalf of {{nominator}}",
|
|
321
|
-
"activePurposes_one": "{{count}} उद्देश्य",
|
|
322
|
-
"activePurposes_other": "{{count}} उद्देश्य",
|
|
323
|
-
"autoSelected": "Auto-selected",
|
|
324
|
-
"noProductsAvailable": "No products available",
|
|
325
|
-
"noProductsAvailableDescription": "You have no consents to manage yet.",
|
|
326
|
-
"forProduct": "For {{productName}}",
|
|
327
|
-
"actingOnBehalfOfShort": "acting on behalf of {{nominator}}",
|
|
328
|
-
"selectPurposesForThisProduct": "Select purposes within this product.",
|
|
329
|
-
"casesCreatedCount_one": "{{count}} case created",
|
|
330
|
-
"casesCreatedCount_other": "{{count}} cases created",
|
|
331
|
-
"someRequestsFailed": "Some requests failed",
|
|
332
|
-
"retry": "Retry",
|
|
333
|
-
"retrying": "Retrying...",
|
|
334
|
-
"switchProfile": "प्रोफाइल बदलीं",
|
|
335
|
-
"chooseYourProfile": "आपन प्रोफाइल चुनीं",
|
|
336
|
-
"emailLinkedToMultipleProfiles": "{{email}} एक से ढेर प्रोफाइल से जुड़ल बा। जवन रउआ देखल चाहत बानी ओकरा के चुनीं।",
|
|
337
|
-
"contactLinkedToMultipleProfiles": "ई संपर्क एक से ढेर प्रोफाइल से जुड़ल बा। जवन रउआ देखल चाहत बानी ओकरा के चुनीं।",
|
|
338
|
-
"signingInEllipsis": "साइन इन हो रहल बा…",
|
|
339
|
-
"couldNotSwitchProfile": "ओह प्रोफाइल पर स्विच ना हो सकल। कृपया फेर से कोसिस करीं।",
|
|
340
|
-
"purposeNotRevocable": "This purpose can't be withdrawn directly.",
|
|
341
|
-
"purposeNotRevocableError": "This purpose can't be withdrawn directly. Please raise a request to remove it."
|
|
342
|
-
}
|