@ndla/ui 50.9.7 → 50.9.8
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/es/AudioPlayer/AudioPlayer.js +34 -34
- package/es/Embed/ContentLinkEmbed.js +2 -2
- package/es/Embed/IframeEmbed.js +11 -4
- package/es/Embed/UuDisclaimerEmbed.js +75 -0
- package/es/Embed/index.js +2 -1
- package/es/Messages/MessageBox.js +6 -6
- package/es/RelatedArticleList/RelatedArticleList.js +8 -8
- package/es/index.js +1 -1
- package/es/locale/messages-en.js +3 -0
- package/es/locale/messages-nb.js +3 -0
- package/es/locale/messages-nn.js +3 -0
- package/es/locale/messages-se.js +3 -0
- package/es/locale/messages-sma.js +3 -0
- package/lib/AudioPlayer/AudioPlayer.js +34 -34
- package/lib/Embed/ContentLinkEmbed.js +2 -2
- package/lib/Embed/IframeEmbed.js +12 -4
- package/lib/Embed/UuDisclaimerEmbed.d.ts +15 -0
- package/lib/Embed/UuDisclaimerEmbed.js +78 -0
- package/lib/Embed/index.d.ts +1 -0
- package/lib/Embed/index.js +7 -0
- package/lib/Messages/MessageBox.d.ts +1 -1
- package/lib/Messages/MessageBox.js +6 -6
- package/lib/RelatedArticleList/RelatedArticleList.js +8 -8
- package/lib/index.d.ts +1 -1
- package/lib/index.js +6 -0
- package/lib/locale/messages-en.d.ts +3 -0
- package/lib/locale/messages-en.js +3 -0
- package/lib/locale/messages-nb.d.ts +3 -0
- package/lib/locale/messages-nb.js +3 -0
- package/lib/locale/messages-nn.d.ts +3 -0
- package/lib/locale/messages-nn.js +3 -0
- package/lib/locale/messages-se.d.ts +3 -0
- package/lib/locale/messages-se.js +3 -0
- package/lib/locale/messages-sma.d.ts +3 -0
- package/lib/locale/messages-sma.js +3 -0
- package/package.json +12 -12
- package/src/AudioPlayer/AudioPlayer.tsx +13 -27
- package/src/CampaignBlock/CampaignBlock.stories.tsx +15 -0
- package/src/Embed/BrightcoveEmbed.stories.tsx +1 -1
- package/src/Embed/ContentLinkEmbed.tsx +1 -1
- package/src/Embed/ExternalEmbed.stories.tsx +93 -0
- package/src/Embed/IframeEmbed.tsx +8 -3
- package/src/Embed/UuDisclaimerEmbed.stories.tsx +150 -0
- package/src/Embed/UuDisclaimerEmbed.tsx +62 -0
- package/src/Embed/index.ts +1 -0
- package/src/Messages/MessageBox.tsx +1 -1
- package/src/RelatedArticleList/RelatedArticleList.tsx +1 -1
- package/src/index.ts +1 -0
- package/src/locale/messages-en.ts +3 -0
- package/src/locale/messages-nb.ts +3 -0
- package/src/locale/messages-nn.ts +3 -0
- package/src/locale/messages-se.ts +3 -0
- package/src/locale/messages-sma.ts +3 -0
|
@@ -17,6 +17,15 @@ const embedData: OembedEmbedData = {
|
|
|
17
17
|
type: "iframe",
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
+
const embedDataFullscreen: OembedEmbedData = {
|
|
21
|
+
resource: "external",
|
|
22
|
+
url: "https://embed.ted.com/talks/zahra_biabani_the_eco_creators_helping_the_climate_through_social_media",
|
|
23
|
+
type: "fullscreen",
|
|
24
|
+
title: "Zahra Biabani: The eco-creators helping the climate through social media",
|
|
25
|
+
caption: "Ted talk",
|
|
26
|
+
imageid: "65086",
|
|
27
|
+
};
|
|
28
|
+
|
|
20
29
|
const metaData: OembedData = {
|
|
21
30
|
oembed: {
|
|
22
31
|
type: "video",
|
|
@@ -81,3 +90,87 @@ export const Failed: StoryObj<typeof ExternalEmbed> = {
|
|
|
81
90
|
},
|
|
82
91
|
},
|
|
83
92
|
};
|
|
93
|
+
|
|
94
|
+
const opensInNewMetaData: OembedData = {
|
|
95
|
+
oembed: {
|
|
96
|
+
type: "video",
|
|
97
|
+
version: "1.0",
|
|
98
|
+
title: "Zahra Biabani: The eco-creators helping the climate through social media",
|
|
99
|
+
description:
|
|
100
|
+
'"Climate doom-ism," or a pessimistic outlook on the future of the planet, rivals climate denialism in holding up the fight against climate change, says activist Zahra Biabani. Illuminating how hope combats inaction, she takes us inside the world of eco-friendly content on TikTok -- and shows that we all have what it takes to make real change.',
|
|
101
|
+
authorName: "Zahra Biabani",
|
|
102
|
+
authorUrl: "https://www.ted.com/speakers/zahra_biabani",
|
|
103
|
+
providerName: "TED",
|
|
104
|
+
providerUrl: "https://www.ted.com",
|
|
105
|
+
cacheAge: 300,
|
|
106
|
+
thumbnailUrl:
|
|
107
|
+
"https://pi.tedcdn.com/r/talkstar-photos.s3.amazonaws.com/uploads/803ab5d5-2cff-4764-b5b6-545217159538/ZahraBiabani_2022T-embed.jpg?h=315&w=560",
|
|
108
|
+
thumbnailWidth: 560,
|
|
109
|
+
thumbnailHeight: 315,
|
|
110
|
+
width: 560,
|
|
111
|
+
height: 315,
|
|
112
|
+
html: '<iframe src="https://embed.ted.com/talks/zahra_biabani_the_eco_creators_helping_the_climate_through_social_media" width="560" height="315" frameborder="0" scrolling="no" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>',
|
|
113
|
+
},
|
|
114
|
+
iframeImage: {
|
|
115
|
+
id: "65086",
|
|
116
|
+
metaUrl: "https://api.test.ndla.no/image-api/v3/images/65086",
|
|
117
|
+
title: {
|
|
118
|
+
title: "\nSamtale ",
|
|
119
|
+
language: "nb",
|
|
120
|
+
},
|
|
121
|
+
alttext: {
|
|
122
|
+
alttext: " To ungdommer sitter og snakker. Foto. ",
|
|
123
|
+
language: "nb",
|
|
124
|
+
},
|
|
125
|
+
copyright: {
|
|
126
|
+
license: {
|
|
127
|
+
license: "COPYRIGHTED",
|
|
128
|
+
description: "Copyrighted",
|
|
129
|
+
},
|
|
130
|
+
origin: "",
|
|
131
|
+
creators: [],
|
|
132
|
+
processors: [],
|
|
133
|
+
rightsholders: [
|
|
134
|
+
{
|
|
135
|
+
type: "rightsholder",
|
|
136
|
+
name: "Folkehelseprosjektet Helsefremmende miljø på sosial medier, Bergen kommune 2019-2022",
|
|
137
|
+
},
|
|
138
|
+
],
|
|
139
|
+
processed: false,
|
|
140
|
+
},
|
|
141
|
+
tags: {
|
|
142
|
+
tags: ["samtale", "Dialog", "gutter"],
|
|
143
|
+
language: "nb",
|
|
144
|
+
},
|
|
145
|
+
caption: {
|
|
146
|
+
caption: 'Dette bildet skal bare brukes i casen "Livet på sosiale medier". ',
|
|
147
|
+
language: "nb",
|
|
148
|
+
},
|
|
149
|
+
supportedLanguages: ["nb"],
|
|
150
|
+
created: "2022-12-02T14:24:19Z",
|
|
151
|
+
createdBy: "oltQx44eGQp0DwkiR1NRo5qE",
|
|
152
|
+
modelRelease: "yes",
|
|
153
|
+
image: {
|
|
154
|
+
fileName: "IgOjO6og.jpg",
|
|
155
|
+
size: 176667,
|
|
156
|
+
contentType: "image/jpeg",
|
|
157
|
+
imageUrl: "https://api.test.ndla.no/image-api/raw/IgOjO6og.jpg",
|
|
158
|
+
dimensions: {
|
|
159
|
+
width: 1920,
|
|
160
|
+
height: 804,
|
|
161
|
+
},
|
|
162
|
+
language: "nb",
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
export const Fullscreen: StoryObj<typeof ExternalEmbed> = {
|
|
168
|
+
args: {
|
|
169
|
+
embed: {
|
|
170
|
+
resource: "external",
|
|
171
|
+
status: "success",
|
|
172
|
+
embedData: embedDataFullscreen,
|
|
173
|
+
data: opensInNewMetaData,
|
|
174
|
+
},
|
|
175
|
+
},
|
|
176
|
+
};
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
import { useEffect, useRef } from "react";
|
|
10
10
|
import { useTranslation } from "react-i18next";
|
|
11
11
|
import { IframeMetaData } from "@ndla/types-embed";
|
|
12
|
+
import EmbedErrorPlaceholder from "./EmbedErrorPlaceholder";
|
|
12
13
|
import { Figure } from "../Figure";
|
|
13
14
|
import { ResourceBox } from "../ResourceBox";
|
|
14
15
|
|
|
@@ -21,8 +22,6 @@ const IframeEmbed = ({ embed, isConcept }: Props) => {
|
|
|
21
22
|
const { t } = useTranslation();
|
|
22
23
|
const iframeRef = useRef<HTMLIFrameElement>(null);
|
|
23
24
|
|
|
24
|
-
const { embedData } = embed;
|
|
25
|
-
|
|
26
25
|
useEffect(() => {
|
|
27
26
|
const iframe = iframeRef.current;
|
|
28
27
|
if (iframe) {
|
|
@@ -33,8 +32,14 @@ const IframeEmbed = ({ embed, isConcept }: Props) => {
|
|
|
33
32
|
}
|
|
34
33
|
}, []);
|
|
35
34
|
|
|
35
|
+
if (embed.status === "error") {
|
|
36
|
+
return <EmbedErrorPlaceholder type="external" />;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const { embedData, data } = embed;
|
|
40
|
+
|
|
36
41
|
if (embedData.type === "fullscreen") {
|
|
37
|
-
const iframeImage = embed.status === "success" ?
|
|
42
|
+
const iframeImage = embed.status === "success" ? data.iframeImage : undefined;
|
|
38
43
|
const alt = embedData.alt !== undefined ? embedData.alt : iframeImage?.alttext.alttext;
|
|
39
44
|
const image = { src: iframeImage?.image.imageUrl ?? "", alt: alt ?? "" };
|
|
40
45
|
return (
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2024-present, NDLA.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the GPLv3 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
10
|
+
import { UuDisclaimerEmbedData } from "@ndla/types-embed";
|
|
11
|
+
import H5pEmbed from "./H5pEmbed";
|
|
12
|
+
import IframeEmbed from "./IframeEmbed";
|
|
13
|
+
import UuDisclaimerEmbed from "./UuDisclaimerEmbed";
|
|
14
|
+
import { defaultParameters } from "../../../../stories/defaults";
|
|
15
|
+
|
|
16
|
+
const embedData: UuDisclaimerEmbedData = {
|
|
17
|
+
resource: "uu-disclaimer",
|
|
18
|
+
disclaimer: "Dette inholdet er ikke tastaturvennlig.",
|
|
19
|
+
articleId: 123,
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const meta: Meta<typeof UuDisclaimerEmbed> = {
|
|
23
|
+
title: "Embeds/UuDisclaimerEmbed",
|
|
24
|
+
component: UuDisclaimerEmbed,
|
|
25
|
+
tags: ["autodocs"],
|
|
26
|
+
decorators: [
|
|
27
|
+
(Story) => (
|
|
28
|
+
<div className="o-wrapper">
|
|
29
|
+
<article className="c-article c-article--clean">
|
|
30
|
+
<section className="u-4/6@desktop u-push-1/6@desktop u-10/12@tablet u-push-1/12@tablet">
|
|
31
|
+
<section>
|
|
32
|
+
<Story />
|
|
33
|
+
</section>
|
|
34
|
+
</section>
|
|
35
|
+
</article>
|
|
36
|
+
</div>
|
|
37
|
+
),
|
|
38
|
+
],
|
|
39
|
+
parameters: defaultParameters,
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export default meta;
|
|
43
|
+
|
|
44
|
+
export const Regular: StoryObj<typeof UuDisclaimerEmbed> = {
|
|
45
|
+
args: {
|
|
46
|
+
embed: {
|
|
47
|
+
resource: "uu-disclaimer",
|
|
48
|
+
status: "success",
|
|
49
|
+
embedData: embedData,
|
|
50
|
+
data: {},
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export const WithLink: StoryObj<typeof UuDisclaimerEmbed> = {
|
|
56
|
+
args: {
|
|
57
|
+
embed: {
|
|
58
|
+
resource: "uu-disclaimer",
|
|
59
|
+
status: "success",
|
|
60
|
+
embedData: embedData,
|
|
61
|
+
data: {
|
|
62
|
+
disclaimerLink: {
|
|
63
|
+
href: "https://ndla.no/article/123",
|
|
64
|
+
text: "Navn på artikkel med innhold",
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
export const WithIframe: StoryObj<typeof UuDisclaimerEmbed> = {
|
|
72
|
+
args: {
|
|
73
|
+
embed: {
|
|
74
|
+
resource: "uu-disclaimer",
|
|
75
|
+
status: "success",
|
|
76
|
+
embedData: embedData,
|
|
77
|
+
data: {},
|
|
78
|
+
},
|
|
79
|
+
children: (
|
|
80
|
+
<IframeEmbed
|
|
81
|
+
embed={{
|
|
82
|
+
resource: "iframe",
|
|
83
|
+
status: "success",
|
|
84
|
+
embedData: {
|
|
85
|
+
resource: "iframe",
|
|
86
|
+
type: "iframe",
|
|
87
|
+
url: "https://embed.kahoot.it/2a51c481-d362-475b-862b-e4b47b96b3c9",
|
|
88
|
+
},
|
|
89
|
+
data: {},
|
|
90
|
+
}}
|
|
91
|
+
/>
|
|
92
|
+
),
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
export const WithH5p: StoryObj<typeof UuDisclaimerEmbed> = {
|
|
97
|
+
args: {
|
|
98
|
+
embed: {
|
|
99
|
+
resource: "uu-disclaimer",
|
|
100
|
+
status: "success",
|
|
101
|
+
embedData: embedData,
|
|
102
|
+
data: {},
|
|
103
|
+
},
|
|
104
|
+
children: (
|
|
105
|
+
<H5pEmbed
|
|
106
|
+
embed={{
|
|
107
|
+
resource: "h5p",
|
|
108
|
+
status: "success",
|
|
109
|
+
embedData: {
|
|
110
|
+
resource: "h5p",
|
|
111
|
+
path: "/resource/c56368d0-0432-4ec3-97bd-f4ba4badf55e",
|
|
112
|
+
url: "https://h5p-test.ndla.no/resource/c56368d0-0432-4ec3-97bd-f4ba4badf55e?locale=nb-no&cssUrl=https://test.ndla.no/static/h5p-custom-css.css",
|
|
113
|
+
},
|
|
114
|
+
data: {
|
|
115
|
+
h5pUrl:
|
|
116
|
+
"https://h5p-test.ndla.no/resource/c56368d0-0432-4ec3-97bd-f4ba4badf55e?locale=nb-no&cssUrl=https://test.ndla.no/static/h5p-custom-css.css",
|
|
117
|
+
oembed: {
|
|
118
|
+
type: "proxy",
|
|
119
|
+
version: "1.0",
|
|
120
|
+
title: "Sorter avfall",
|
|
121
|
+
width: 600,
|
|
122
|
+
height: 300,
|
|
123
|
+
html: '<div><iframe width="600" height="300" allowfullscreen="allowfullscreen" src="https://h5p-test.ndla.no/resource/c56368d0-0432-4ec3-97bd-f4ba4badf55e?locale=nb-no&cssUrl=https%3A%2F%2Ftest.ndla.no%2Fstatic%2Fh5p-custom-css.css" title="Sorter avfall"></iframe><script src="https://ca.h5p.ndla.no/h5p-php-library/js/h5p-resizer.js"></script></div>',
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
}}
|
|
127
|
+
/>
|
|
128
|
+
),
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
export const WithHtml: StoryObj<typeof UuDisclaimerEmbed> = {
|
|
133
|
+
args: {
|
|
134
|
+
embed: {
|
|
135
|
+
resource: "uu-disclaimer",
|
|
136
|
+
status: "success",
|
|
137
|
+
embedData: embedData,
|
|
138
|
+
data: {},
|
|
139
|
+
},
|
|
140
|
+
children: (
|
|
141
|
+
<>
|
|
142
|
+
<h2>Dette er html med en ekspanderboks</h2>
|
|
143
|
+
<details>
|
|
144
|
+
<summary>Tittel</summary>
|
|
145
|
+
<p>innhold</p>
|
|
146
|
+
</details>
|
|
147
|
+
</>
|
|
148
|
+
),
|
|
149
|
+
},
|
|
150
|
+
};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2024-present, NDLA.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the GPLv3 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { ReactNode } from "react";
|
|
10
|
+
import { useTranslation } from "react-i18next";
|
|
11
|
+
import styled from "@emotion/styled";
|
|
12
|
+
import { InformationOutline } from "@ndla/icons/common";
|
|
13
|
+
import SafeLink from "@ndla/safelink";
|
|
14
|
+
import { UuDisclaimerMetaData } from "@ndla/types-embed";
|
|
15
|
+
import { MessageBox } from "../Messages";
|
|
16
|
+
interface Props {
|
|
17
|
+
embed: UuDisclaimerMetaData;
|
|
18
|
+
children?: ReactNode;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const StyledMessageBox = styled(MessageBox)`
|
|
22
|
+
display: flex;
|
|
23
|
+
flex-align: center;
|
|
24
|
+
`;
|
|
25
|
+
|
|
26
|
+
const Disclaimer = styled.div`
|
|
27
|
+
display: flow;
|
|
28
|
+
`;
|
|
29
|
+
|
|
30
|
+
const UuDisclaimerEmbed = ({ embed, children }: Props) => {
|
|
31
|
+
const { t } = useTranslation();
|
|
32
|
+
|
|
33
|
+
if (embed.status === "error") {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const { embedData, data } = embed;
|
|
38
|
+
|
|
39
|
+
const disclaimerLink = data.disclaimerLink ? (
|
|
40
|
+
<>
|
|
41
|
+
{` ${t("uuDisclaimer.alternative")} `}
|
|
42
|
+
<SafeLink to={data.disclaimerLink.href} target="_blank" rel="noopener noreferrer">
|
|
43
|
+
{data.disclaimerLink.text}
|
|
44
|
+
</SafeLink>
|
|
45
|
+
</>
|
|
46
|
+
) : null;
|
|
47
|
+
|
|
48
|
+
return (
|
|
49
|
+
<>
|
|
50
|
+
<StyledMessageBox type="info">
|
|
51
|
+
<InformationOutline />
|
|
52
|
+
<Disclaimer contentEditable={false}>
|
|
53
|
+
{embedData.disclaimer}
|
|
54
|
+
{disclaimerLink}
|
|
55
|
+
</Disclaimer>
|
|
56
|
+
</StyledMessageBox>
|
|
57
|
+
{children}
|
|
58
|
+
</>
|
|
59
|
+
);
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export default UuDisclaimerEmbed;
|
package/src/Embed/index.ts
CHANGED
|
@@ -20,4 +20,5 @@ export { ConceptNotionV2 } from "./conceptComponents";
|
|
|
20
20
|
export { default as ConceptListEmbed } from "./ConceptListEmbed";
|
|
21
21
|
export { default as UnknownEmbed } from "./UnknownEmbed";
|
|
22
22
|
export { InlineConcept, BlockConcept } from "./ConceptEmbed";
|
|
23
|
+
export { default as UuDisclaimerEmbed } from "./UuDisclaimerEmbed";
|
|
23
24
|
export type { HeartButtonType, CanonicalUrlFuncs, RenderContext } from "./types";
|
|
@@ -13,7 +13,7 @@ import { CloseButton } from "@ndla/button";
|
|
|
13
13
|
import { breakpoints, colors, fonts, mq, spacing } from "@ndla/core";
|
|
14
14
|
import { Forward } from "@ndla/icons/common";
|
|
15
15
|
|
|
16
|
-
type MessageBoxType = "ghost" | "danger";
|
|
16
|
+
type MessageBoxType = "ghost" | "danger" | "info";
|
|
17
17
|
|
|
18
18
|
interface LinkProps {
|
|
19
19
|
href?: string;
|
package/src/index.ts
CHANGED
|
@@ -1355,6 +1355,9 @@ const messages = {
|
|
|
1355
1355
|
pinyin: "Pinyin",
|
|
1356
1356
|
},
|
|
1357
1357
|
},
|
|
1358
|
+
uuDisclaimer: {
|
|
1359
|
+
alternative: "You can find alternative content in the article",
|
|
1360
|
+
},
|
|
1358
1361
|
wordClass: {
|
|
1359
1362
|
[wordClass.wordClass.adjective]: "Adjective",
|
|
1360
1363
|
[wordClass.wordClass.adverb]: "Adverb",
|
|
@@ -1353,6 +1353,9 @@ const messages = {
|
|
|
1353
1353
|
pinyin: "Pinyin",
|
|
1354
1354
|
},
|
|
1355
1355
|
},
|
|
1356
|
+
uuDisclaimer: {
|
|
1357
|
+
alternative: "Du kan finne alternativt innhold i artikkelen",
|
|
1358
|
+
},
|
|
1356
1359
|
wordClass: {
|
|
1357
1360
|
[wordClass.wordClass.adjective]: "Adjektiv",
|
|
1358
1361
|
[wordClass.wordClass.adverb]: "Adverb",
|
|
@@ -1353,6 +1353,9 @@ const messages = {
|
|
|
1353
1353
|
pinyin: "Pinyin",
|
|
1354
1354
|
},
|
|
1355
1355
|
},
|
|
1356
|
+
uuDisclaimer: {
|
|
1357
|
+
alternative: "Du kan finne alternativt innhald i artikkelen",
|
|
1358
|
+
},
|
|
1356
1359
|
wordClass: {
|
|
1357
1360
|
[wordClass.wordClass.adjective]: "Adjektiv",
|
|
1358
1361
|
[wordClass.wordClass.adverb]: "Adverb",
|
|
@@ -1355,6 +1355,9 @@ const messages = {
|
|
|
1355
1355
|
pinyin: "Pinyin",
|
|
1356
1356
|
},
|
|
1357
1357
|
},
|
|
1358
|
+
uuDisclaimer: {
|
|
1359
|
+
alternative: "Du kan finne alternativt innhold i artikkelen",
|
|
1360
|
+
},
|
|
1358
1361
|
wordClass: {
|
|
1359
1362
|
[wordClass.wordClass.adjective]: "Adjektiivvat",
|
|
1360
1363
|
[wordClass.wordClass.adverb]: "Advearba",
|
|
@@ -1357,6 +1357,9 @@ const messages = {
|
|
|
1357
1357
|
pinyin: "Pinyin",
|
|
1358
1358
|
},
|
|
1359
1359
|
},
|
|
1360
|
+
uuDisclaimer: {
|
|
1361
|
+
alternative: "Du kan finne alternativt innhold i artikkelen",
|
|
1362
|
+
},
|
|
1360
1363
|
wordClass: {
|
|
1361
1364
|
[wordClass.wordClass.adjective]: "Adjektiv",
|
|
1362
1365
|
[wordClass.wordClass.adverb]: "Adverb",
|