@plone/volto 19.0.0-alpha.1 → 19.0.0-alpha.11
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/.eslintignore +1 -0
- package/.eslintrc +37 -2
- package/CHANGELOG.md +234 -0
- package/README.md +18 -14
- package/cypress/docker/prefixed-rules.yml +26 -0
- package/cypress/docker/prefixed.yml +24 -0
- package/cypress/support/commands.js +12 -6
- package/cypress/support/guillotina.js +1 -0
- package/cypress.config.js +1 -0
- package/locales/af.json +1 -0
- package/locales/ar.json +1 -0
- package/locales/bg.json +1 -0
- package/locales/bn.json +1 -0
- package/locales/ca/LC_MESSAGES/volto.po +96 -17
- package/locales/ca.json +1 -1
- package/locales/cs.json +1 -0
- package/locales/cy.json +1 -0
- package/locales/da.json +1 -0
- package/locales/de/LC_MESSAGES/volto.po +104 -25
- package/locales/de.json +1 -1
- package/locales/el.json +1 -0
- package/locales/en/LC_MESSAGES/volto.po +97 -18
- package/locales/en.json +1 -1
- package/locales/en_AU.json +1 -0
- package/locales/en_GB.json +1 -0
- package/locales/eo.json +1 -0
- package/locales/es/LC_MESSAGES/volto.po +97 -18
- package/locales/es.json +1 -1
- package/locales/et.json +1 -0
- package/locales/eu/LC_MESSAGES/volto.po +96 -17
- package/locales/eu.json +1 -1
- package/locales/fa.json +1 -0
- package/locales/fi/LC_MESSAGES/volto.po +96 -17
- package/locales/fi.json +1 -1
- package/locales/fr/LC_MESSAGES/volto.po +97 -18
- package/locales/fr.json +1 -1
- package/locales/fu.json +1 -0
- package/locales/gl.json +1 -0
- package/locales/he.json +1 -0
- package/locales/hi/LC_MESSAGES/volto.po +100 -21
- package/locales/hi.json +1 -1
- package/locales/hr.json +1 -0
- package/locales/hu.json +1 -0
- package/locales/hy.json +1 -0
- package/locales/id.json +1 -0
- package/locales/it/LC_MESSAGES/volto.po +101 -22
- package/locales/it.json +1 -1
- package/locales/ja/LC_MESSAGES/volto.po +96 -17
- package/locales/ja.json +1 -1
- package/locales/ka.json +1 -0
- package/locales/kn.json +1 -0
- package/locales/ko.json +1 -0
- package/locales/lt.json +1 -0
- package/locales/lv.json +1 -0
- package/locales/mi.json +1 -0
- package/locales/mk.json +1 -0
- package/locales/my.json +1 -0
- package/locales/nb_NO.json +1 -0
- package/locales/nl/LC_MESSAGES/volto.po +100 -21
- package/locales/nl.json +1 -1
- package/locales/nn.json +1 -0
- package/locales/pl.json +1 -0
- package/locales/pt/LC_MESSAGES/volto.po +96 -17
- package/locales/pt.json +1 -1
- package/locales/pt_BR/LC_MESSAGES/volto.po +116 -37
- package/locales/pt_BR.json +1 -1
- package/locales/rm.json +1 -0
- package/locales/ro/LC_MESSAGES/volto.po +100 -21
- package/locales/ro.json +1 -1
- package/locales/ru/LC_MESSAGES/volto.po +100 -21
- package/locales/ru.json +1 -1
- package/locales/sk.json +1 -0
- package/locales/sl.json +1 -0
- package/locales/sm.json +1 -0
- package/locales/sq.json +1 -0
- package/locales/sr.json +1 -0
- package/locales/sr@cyrl.json +1 -0
- package/locales/sr@latn.json +1 -0
- package/locales/sv.json +1 -1
- package/locales/ta.json +1 -0
- package/locales/te.json +1 -0
- package/locales/th.json +1 -0
- package/locales/to.json +1 -0
- package/locales/tr.json +1 -0
- package/locales/uk.json +1 -0
- package/locales/vi.json +1 -0
- package/locales/volto.pot +97 -18
- package/locales/zh_CN/LC_MESSAGES/volto.po +96 -17
- package/locales/zh_CN.json +1 -1
- package/locales/zh_Hant.json +1 -0
- package/locales/zh_Hant_HK.json +1 -0
- package/package.json +28 -26
- package/razzle.config.js +16 -0
- package/src/actions/content/content.js +0 -1
- package/src/actions/controlpanels/controlpanels.js +13 -7
- package/src/actions/controlpanels/controlpanels.test.js +11 -5
- package/src/actions/users/users.js +2 -2
- package/src/components/manage/Add/Add.jsx +5 -6
- package/src/components/manage/Blocks/Block/Edit.jsx +1 -0
- package/src/components/manage/Blocks/Block/EditBlockWrapper.jsx +9 -4
- package/src/components/manage/Blocks/Image/Edit.jsx +5 -1
- package/src/components/manage/Blocks/LeadImage/Edit.jsx +2 -2
- package/src/components/manage/Blocks/LeadImage/LeadImageSidebar.jsx +1 -1
- package/src/components/manage/Blocks/Listing/ImageGallery.jsx +6 -4
- package/src/components/manage/Blocks/Maps/Edit.jsx +2 -1
- package/src/components/manage/Blocks/Search/SearchBlockView.jsx +21 -4
- package/src/components/manage/Blocks/Teaser/Data.jsx +21 -7
- package/src/components/manage/Blocks/Teaser/DefaultBody.jsx +1 -1
- package/src/components/manage/Blocks/Teaser/schema.js +8 -3
- package/src/components/manage/Blocks/Title/Edit.jsx +8 -2
- package/src/components/manage/Blocks/Video/Edit.jsx +2 -1
- package/src/components/manage/Contents/Contents.jsx +23 -2
- package/src/components/manage/Contents/Contents.test.jsx +7 -0
- package/src/components/manage/Contents/ContentsBreadcrumbs.Multilingual.test.jsx +18 -5
- package/src/components/manage/Contents/ContentsBreadcrumbs.jsx +20 -26
- package/src/components/manage/Contents/ContentsBreadcrumbs.test.jsx +14 -0
- package/src/components/manage/Contents/ContentsDeleteModal.jsx +258 -206
- package/src/components/manage/Contents/ContentsDeleteModal.stories.jsx +26 -8
- package/src/components/manage/Contents/ContentsItem.jsx +10 -2
- package/src/components/manage/Contents/ContentsUploadModal.test.jsx +13 -22
- package/src/components/manage/Controlpanels/ContentType.jsx +1 -1
- package/src/components/manage/Controlpanels/Groups/GroupsControlpanel.jsx +3 -2
- package/src/components/manage/Controlpanels/Users/RenderUsers.jsx +156 -175
- package/src/components/manage/Controlpanels/Users/UsersControlpanel.jsx +575 -630
- package/src/components/manage/Controlpanels/Users/UsersControlpanel.test.jsx +4 -3
- package/src/components/manage/Edit/Edit.jsx +2 -3
- package/src/components/manage/Form/Form.jsx +32 -0
- package/src/components/manage/Form/Form.test.jsx +22 -18
- package/src/components/manage/Form/InlineForm.jsx +2 -2
- package/src/components/manage/Multilingual/CompareLanguages.jsx +2 -5
- package/src/components/manage/Multilingual/CreateTranslation.jsx +8 -8
- package/src/components/manage/Multilingual/ManageTranslations.jsx +4 -2
- package/src/components/manage/Multilingual/ManageTranslations.test.jsx +5 -1
- package/src/components/manage/Multilingual/TranslationObject.jsx +1 -1
- package/src/components/manage/Sidebar/ObjectBrowserNav.jsx +2 -1
- package/src/components/manage/Sidebar/SidebarPortal.test.tsx +42 -0
- package/src/components/manage/Sidebar/SidebarPortal.tsx +48 -0
- package/src/components/manage/TemplateChooser/TemplateChooser.jsx +2 -1
- package/src/components/manage/Toolbar/More.jsx +4 -1
- package/src/components/manage/Toolbar/More.test.jsx +3 -0
- package/src/components/manage/Toolbar/PersonalTools.jsx +2 -1
- package/src/components/manage/Toolbar/Toolbar.jsx +3 -4
- package/src/components/manage/Toolbar/Types.jsx +7 -7
- package/src/components/manage/UniversalLink/UniversalLink.tsx +1 -0
- package/src/components/manage/Widgets/DatetimeWidget.jsx +5 -0
- package/src/components/manage/Widgets/FileWidget.jsx +14 -8
- package/src/components/manage/Widgets/ImageWidget.jsx +171 -38
- package/src/components/manage/Widgets/InternalUrlWidget.jsx +2 -0
- package/src/components/manage/Widgets/ObjectBrowserWidget.jsx +3 -0
- package/src/components/manage/Widgets/RegistryImageWidget.test.jsx +3 -2
- package/src/components/manage/Widgets/SelectAutoComplete.jsx +29 -12
- package/src/components/manage/Widgets/SelectWidget.jsx +3 -1
- package/src/components/manage/Widgets/UrlWidget.jsx +2 -0
- package/src/components/theme/AlternateHrefLangs/AlternateHrefLangs.jsx +1 -3
- package/src/components/theme/AlternateHrefLangs/AlternateHrefLangs.test.jsx +0 -4
- package/src/components/theme/App/App.jsx +3 -1
- package/src/components/theme/App/App.test.jsx +1 -0
- package/src/components/theme/Avatar/Avatar.jsx +2 -1
- package/src/components/theme/FormattedDate/FormattedDate.stories.jsx +20 -2
- package/src/components/theme/Image/Image.jsx +11 -8
- package/src/components/theme/LanguageSelector/{LanguageSelector.test.jsx → LanguageSelector.test.tsx} +6 -6
- package/src/components/theme/LanguageSelector/LanguageSelector.tsx +89 -0
- package/src/components/theme/Logo/Logo.Multilingual.test.jsx +0 -5
- package/src/components/theme/MultilingualRedirector/MultilingualRedirector.jsx +8 -12
- package/src/components/theme/MultilingualRedirector/MultilingualRedirector.test.jsx +3 -5
- package/src/components/theme/Navigation/NavItem.jsx +1 -5
- package/src/components/theme/Navigation/Navigation.Multilingual.test.jsx +0 -5
- package/src/components/theme/NotFound/NotFound.jsx +5 -2
- package/src/components/theme/NotFound/NotFound.test.jsx +3 -0
- package/src/components/theme/PreviewImage/PreviewImage.jsx +1 -1
- package/src/components/theme/RequestTimeout/RequestTimeout.jsx +1 -1
- package/src/components/theme/Sitemap/Sitemap.jsx +6 -5
- package/src/components/theme/Sitemap/Sitemap.test.jsx +0 -1
- package/src/components/theme/View/FileView.jsx +9 -1
- package/src/components/theme/View/View.jsx +1 -1
- package/src/components/theme/Widgets/ImageWidget.jsx +2 -1
- package/src/config/ControlPanels.js +1 -0
- package/src/config/index.js +18 -25
- package/src/config/server.js +0 -2
- package/src/express-middleware/devproxy.js +20 -5
- package/src/helpers/Api/APIResourceWithAuth.js +8 -3
- package/src/helpers/Api/Api.js +7 -4
- package/src/helpers/AsyncConnect/ssr.js +4 -1
- package/src/helpers/Content/Content.js +23 -0
- package/src/helpers/Content/Content.test.js +39 -0
- package/src/helpers/Content/withClientSideContent.jsx +35 -0
- package/src/helpers/Extensions/withBlockSchemaEnhancer.jsx +4 -1
- package/src/helpers/Html/Html.jsx +13 -7
- package/src/helpers/LanguageMap/LanguageMap.js +115 -8
- package/src/helpers/MessageLabels/MessageLabels.js +5 -0
- package/src/helpers/Sitemap/Sitemap.js +4 -4
- package/src/helpers/Url/Url.js +32 -2
- package/src/helpers/Url/Url.test.js +62 -0
- package/src/helpers/Utils/withSaveAsDraft.jsx +241 -0
- package/src/hooks/user/useUser.js +1 -1
- package/src/middleware/Api.test.js +4 -0
- package/src/middleware/api.js +77 -28
- package/src/middleware/storeProtectLoadUtils.test.js +3 -3
- package/src/reducers/content/content.js +3 -18
- package/src/reducers/diff/diff.js +5 -1
- package/src/reducers/diff/diff.test.js +60 -4
- package/src/routes.js +4 -2
- package/src/server.jsx +45 -14
- package/src/start-client.jsx +9 -6
- package/src/start-server.js +9 -3
- package/test-setup-config.jsx +0 -2
- package/theme/themes/pastanaga/collections/table.overrides +9 -0
- package/theme/themes/pastanaga/extras/blocks.less +26 -0
- package/theme/themes/pastanaga/extras/contents.less +17 -5
- package/theme/themes/pastanaga/extras/main.less +32 -2
- package/tsconfig.json +3 -4
- package/types/components/manage/Blocks/Teaser/schema.d.ts +1 -0
- package/types/components/manage/Controlpanels/Users/RenderUsers.d.ts +18 -2
- package/types/components/manage/Controlpanels/Users/UsersControlpanel.d.ts +6 -2
- package/types/components/manage/Controlpanels/index.d.ts +2 -2
- package/types/components/manage/Sidebar/SidebarPortal.d.ts +7 -15
- package/types/components/manage/Widgets/ImageWidget.d.ts +41 -1
- package/types/components/manage/Widgets/RecurrenceWidget/Utils.d.ts +12 -18
- package/types/components/theme/FormattedDate/FormattedDate.stories.d.ts +1 -1
- package/types/components/theme/LanguageSelector/LanguageSelector.d.ts +3 -10
- package/types/helpers/Content/Content.d.ts +7 -0
- package/types/helpers/Content/withClientSideContent.d.ts +1 -0
- package/types/helpers/Extensions/withBlockSchemaEnhancer.d.ts +4 -5
- package/types/helpers/Helmet/Helmet.d.ts +1 -1
- package/types/helpers/LanguageMap/LanguageMap.d.ts +428 -4
- package/types/helpers/MessageLabels/MessageLabels.d.ts +68 -62
- package/types/helpers/Url/Url.d.ts +14 -0
- package/types/helpers/Url/bulkFlattenToAppURL.d.ts +5 -0
- package/types/helpers/Utils/withSaveAsDraft.d.ts +1 -0
- package/types/middleware/api.d.ts +6 -9
- package/types/reducers/index.d.ts +1 -0
- package/types/start-client.d.ts +0 -1
- package/package-why.json +0 -34
- package/src/actions/content/content.multilingual.test.js +0 -17
- package/src/components/manage/Sidebar/SidebarPortal.jsx +0 -47
- package/src/components/manage/Sidebar/SidebarPortal.test.jsx +0 -26
- package/src/components/theme/LanguageSelector/LanguageSelector.jsx +0 -77
- package/theme/themes/pastanaga/extras/utils.less +0 -63
|
@@ -11,6 +11,7 @@ import keys from 'lodash/keys';
|
|
|
11
11
|
import endsWith from 'lodash/endsWith';
|
|
12
12
|
import find from 'lodash/find';
|
|
13
13
|
import config from '@plone/volto/registry';
|
|
14
|
+
import omit from 'lodash/omit';
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* Nest content.
|
|
@@ -85,3 +86,25 @@ export function getLanguageIndependentFields(schema) {
|
|
|
85
86
|
properties[field]['multilingual_options']?.['language_independent'],
|
|
86
87
|
);
|
|
87
88
|
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Flattens static behaviors into the parent object with dot-notation keys.
|
|
92
|
+
* @function flattenStaticBehaviors
|
|
93
|
+
* @param {Object} result The result object containing static behaviors.
|
|
94
|
+
* @returns {Object} Result object with flattened static behaviors.
|
|
95
|
+
*/
|
|
96
|
+
export function flattenStaticBehaviors(result) {
|
|
97
|
+
if (!result['@static_behaviors']) {
|
|
98
|
+
return result;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
let flattened = Object.assign({}, result);
|
|
102
|
+
map(result['@static_behaviors'], (behavior) => {
|
|
103
|
+
flattened = {
|
|
104
|
+
...omit(flattened, behavior),
|
|
105
|
+
...mapKeys(flattened[behavior], (value, key) => `${behavior}.${key}`),
|
|
106
|
+
};
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
return flattened;
|
|
110
|
+
}
|
|
@@ -2,6 +2,7 @@ import {
|
|
|
2
2
|
nestContent,
|
|
3
3
|
getContentIcon,
|
|
4
4
|
getLanguageIndependentFields,
|
|
5
|
+
flattenStaticBehaviors,
|
|
5
6
|
} from './Content';
|
|
6
7
|
import contentExistingSVG from '@plone/volto/icons/content-existing.svg';
|
|
7
8
|
import linkSVG from '@plone/volto/icons/link.svg';
|
|
@@ -96,4 +97,42 @@ describe('Content', () => {
|
|
|
96
97
|
expect(getLanguageIndependentFields(schema)).toStrictEqual(['lif']);
|
|
97
98
|
});
|
|
98
99
|
});
|
|
100
|
+
|
|
101
|
+
describe('flattenStaticBehaviors', () => {
|
|
102
|
+
it('returns object unchanged when no @static_behaviors', () => {
|
|
103
|
+
const input = {
|
|
104
|
+
title: 'Example',
|
|
105
|
+
creator: 'admin',
|
|
106
|
+
};
|
|
107
|
+
expect(flattenStaticBehaviors(input)).toEqual(input);
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
it('flattens static behaviors into dot-notation keys', () => {
|
|
111
|
+
const input = {
|
|
112
|
+
title: 'Example',
|
|
113
|
+
'@static_behaviors': [
|
|
114
|
+
'guillotina_cms.interfaces.blocks.IBlocks',
|
|
115
|
+
'guillotina_cms.interfaces.dublin_core.IDublinCore',
|
|
116
|
+
],
|
|
117
|
+
'guillotina_cms.interfaces.blocks.IBlocks': {
|
|
118
|
+
blocks: 'blocks',
|
|
119
|
+
blocks_layout: 'blocks_layout',
|
|
120
|
+
},
|
|
121
|
+
'guillotina_cms.interfaces.dublin_core.IDublinCore': {
|
|
122
|
+
creator: 'creator',
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
expect(flattenStaticBehaviors(input)).toEqual({
|
|
126
|
+
title: 'Example',
|
|
127
|
+
'@static_behaviors': [
|
|
128
|
+
'guillotina_cms.interfaces.blocks.IBlocks',
|
|
129
|
+
'guillotina_cms.interfaces.dublin_core.IDublinCore',
|
|
130
|
+
],
|
|
131
|
+
'guillotina_cms.interfaces.blocks.IBlocks.blocks': 'blocks',
|
|
132
|
+
'guillotina_cms.interfaces.blocks.IBlocks.blocks_layout':
|
|
133
|
+
'blocks_layout',
|
|
134
|
+
'guillotina_cms.interfaces.dublin_core.IDublinCore.creator': 'creator',
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
});
|
|
99
138
|
});
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/*
|
|
2
|
+
This is a HOC for use with the volto Edit component.
|
|
3
|
+
It makes sure that we fetch the content from the API on the client side
|
|
4
|
+
when the Edit component is mounted, if there is an internalApiPath
|
|
5
|
+
that is different from the public API path. Otherwise we might end up
|
|
6
|
+
saving backend API paths back to the server.
|
|
7
|
+
|
|
8
|
+
It's admittedly a bit of a workaround.
|
|
9
|
+
Ideally the volto SSR should produce correct URLs
|
|
10
|
+
so that we don't have to do this on the client side.
|
|
11
|
+
But, that requires refactoring that won't happen quickly...
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { useEffect } from 'react';
|
|
15
|
+
import { useDispatch, useSelector } from 'react-redux';
|
|
16
|
+
import hoistNonReactStatics from 'hoist-non-react-statics';
|
|
17
|
+
import config from '@plone/volto/registry';
|
|
18
|
+
import { getContent } from '@plone/volto/actions/content/content';
|
|
19
|
+
|
|
20
|
+
export default function withClientSideContent(WrappedComponent) {
|
|
21
|
+
function WithClientSideContent(props) {
|
|
22
|
+
const { internalApiPath } = config.settings;
|
|
23
|
+
const dispatch = useDispatch();
|
|
24
|
+
const content = useSelector((state) => state.content);
|
|
25
|
+
const id = content.data?.['@id'];
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
if (internalApiPath && id?.startsWith(internalApiPath)) {
|
|
28
|
+
dispatch(getContent(id.substring(internalApiPath.length)));
|
|
29
|
+
}
|
|
30
|
+
}, [internalApiPath, dispatch, id]);
|
|
31
|
+
return <WrappedComponent {...props} />;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return hoistNonReactStatics(WithClientSideContent, WrappedComponent);
|
|
35
|
+
}
|
|
@@ -305,8 +305,11 @@ export const EMPTY_STYLES_SCHEMA = {
|
|
|
305
305
|
|
|
306
306
|
/**
|
|
307
307
|
* Adds the `styles` field and 'styling' fieldset in a given schema
|
|
308
|
+
* @param {object} params Helper params
|
|
309
|
+
* @param {import('@plone/types').JSONSchema} params.schema Schema to enhance
|
|
310
|
+
* @param {import('react-intl').IntlShape} params.intl intl helper for translations
|
|
308
311
|
*/
|
|
309
|
-
export const addStyling = ({ schema,
|
|
312
|
+
export const addStyling = ({ schema, intl }) => {
|
|
310
313
|
if (isEmpty(find(schema.fieldsets, { id: 'styling' }))) {
|
|
311
314
|
schema.fieldsets.push({
|
|
312
315
|
id: 'styling',
|
|
@@ -9,6 +9,7 @@ import Helmet from '@plone/volto/helpers/Helmet/Helmet';
|
|
|
9
9
|
import serialize from 'serialize-javascript';
|
|
10
10
|
import join from 'lodash/join';
|
|
11
11
|
import BodyClass from '@plone/volto/helpers/BodyClass/BodyClass';
|
|
12
|
+
import { addSubpathPrefix } from '@plone/volto/helpers/Url/Url';
|
|
12
13
|
import { runtimeConfig } from '@plone/volto/runtime_config';
|
|
13
14
|
import config from '@plone/volto/registry';
|
|
14
15
|
|
|
@@ -122,21 +123,26 @@ class Html extends Component {
|
|
|
122
123
|
...(publicURL && {
|
|
123
124
|
publicURL,
|
|
124
125
|
}),
|
|
125
|
-
...(process.env.SITE_DEFAULT_LANGUAGE && {
|
|
126
|
-
defaultLanguage: process.env.SITE_DEFAULT_LANGUAGE,
|
|
127
|
-
}),
|
|
128
126
|
})};`,
|
|
129
127
|
}}
|
|
130
128
|
/>
|
|
131
129
|
|
|
132
|
-
<link
|
|
133
|
-
|
|
130
|
+
<link
|
|
131
|
+
rel="icon"
|
|
132
|
+
href={addSubpathPrefix('/favicon.ico')}
|
|
133
|
+
sizes="any"
|
|
134
|
+
/>
|
|
135
|
+
<link
|
|
136
|
+
rel="icon"
|
|
137
|
+
href={addSubpathPrefix('/icon.svg')}
|
|
138
|
+
type="image/svg+xml"
|
|
139
|
+
/>
|
|
134
140
|
<link
|
|
135
141
|
rel="apple-touch-icon"
|
|
136
142
|
sizes="180x180"
|
|
137
|
-
href=
|
|
143
|
+
href={addSubpathPrefix('/apple-touch-icon.png')}
|
|
138
144
|
/>
|
|
139
|
-
<link rel="manifest" href=
|
|
145
|
+
<link rel="manifest" href={addSubpathPrefix('/site.webmanifest')} />
|
|
140
146
|
<meta name="generator" content="Plone 6 - https://plone.org" />
|
|
141
147
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
142
148
|
<meta name="mobile-web-app-capable" content="yes" />
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
const langmap = new Proxy(
|
|
2
2
|
{
|
|
3
|
+
aa: { nativeName: 'магIарул мацI', englishName: 'Afar' },
|
|
4
|
+
ab: { nativeName: 'бызшәа', englishName: 'Abkhazian' },
|
|
3
5
|
ach: {
|
|
4
6
|
nativeName: 'Lwo',
|
|
5
7
|
englishName: 'Acholi',
|
|
@@ -8,6 +10,7 @@ const langmap = new Proxy(
|
|
|
8
10
|
nativeName: 'Адыгэбзэ',
|
|
9
11
|
englishName: 'Adyghe',
|
|
10
12
|
},
|
|
13
|
+
ae: { nativeName: 'avesta', englishName: 'Avestan' },
|
|
11
14
|
af: {
|
|
12
15
|
nativeName: 'Afrikaans',
|
|
13
16
|
englishName: 'Afrikaans',
|
|
@@ -24,6 +27,8 @@ const langmap = new Proxy(
|
|
|
24
27
|
nativeName: 'Tɕɥi',
|
|
25
28
|
englishName: 'Akan',
|
|
26
29
|
},
|
|
30
|
+
am: { nativeName: 'አማርኛ', englishName: 'Amharic' },
|
|
31
|
+
an: { nativeName: 'aragonés', englishName: 'Aragonese' },
|
|
27
32
|
ar: {
|
|
28
33
|
nativeName: 'العربية',
|
|
29
34
|
englishName: 'Arabic',
|
|
@@ -40,6 +45,8 @@ const langmap = new Proxy(
|
|
|
40
45
|
nativeName: 'العربية (السعودية)',
|
|
41
46
|
englishName: 'Arabic (Saudi Arabia)',
|
|
42
47
|
},
|
|
48
|
+
as: { nativeName: 'অসমিয়া', englishName: 'Assamese' },
|
|
49
|
+
ay: { nativeName: 'Aymara', englishName: 'Aymara' },
|
|
43
50
|
'ay-BO': {
|
|
44
51
|
nativeName: 'Aymar aru',
|
|
45
52
|
englishName: 'Aymara',
|
|
@@ -52,6 +59,7 @@ const langmap = new Proxy(
|
|
|
52
59
|
nativeName: 'Azərbaycan dili',
|
|
53
60
|
englishName: 'Azerbaijani',
|
|
54
61
|
},
|
|
62
|
+
ba: { nativeName: 'Bashkir', englishName: 'Bashkir' },
|
|
55
63
|
'be-BY': {
|
|
56
64
|
nativeName: 'Беларуская',
|
|
57
65
|
englishName: 'Belarusian',
|
|
@@ -64,6 +72,10 @@ const langmap = new Proxy(
|
|
|
64
72
|
nativeName: 'Български',
|
|
65
73
|
englishName: 'Bulgarian',
|
|
66
74
|
},
|
|
75
|
+
be: { nativeName: 'Беларускі', englishName: 'Belarussian' },
|
|
76
|
+
bh: { nativeName: 'Bihari', englishName: 'Bihari' },
|
|
77
|
+
bi: { nativeName: 'Bislama', englishName: 'Bislama' },
|
|
78
|
+
bm: { nativeName: 'bamanankan', englishName: 'Bambara' },
|
|
67
79
|
bn: {
|
|
68
80
|
nativeName: 'বাংলা',
|
|
69
81
|
englishName: 'Bengali',
|
|
@@ -76,6 +88,7 @@ const langmap = new Proxy(
|
|
|
76
88
|
nativeName: 'বাংলা(বাংলাদেশ)',
|
|
77
89
|
englishName: 'Bengali (Bangladesh)',
|
|
78
90
|
},
|
|
91
|
+
bo: { nativeName: 'བོད་སྐད་', englishName: 'Tibetan' },
|
|
79
92
|
br: {
|
|
80
93
|
nativeName: 'Brezhoneg',
|
|
81
94
|
englishName: 'Breton',
|
|
@@ -104,6 +117,10 @@ const langmap = new Proxy(
|
|
|
104
117
|
nativeName: 'ᏣᎳᎩ (tsalagi)',
|
|
105
118
|
englishName: 'Cherokee',
|
|
106
119
|
},
|
|
120
|
+
ce: { nativeName: 'нохчийн мотт', englishName: 'Chechen' },
|
|
121
|
+
ch: { nativeName: 'Chamoru', englishName: 'Chamorro' },
|
|
122
|
+
co: { nativeName: 'Corsu', englishName: 'Corsican' },
|
|
123
|
+
cr: { nativeName: 'ᓀᐦᐃᔭᐍᐏᐣ', englishName: 'Cree' },
|
|
107
124
|
cs: {
|
|
108
125
|
nativeName: 'Čeština',
|
|
109
126
|
englishName: 'Czech',
|
|
@@ -112,6 +129,8 @@ const langmap = new Proxy(
|
|
|
112
129
|
nativeName: 'Čeština',
|
|
113
130
|
englishName: 'Czech',
|
|
114
131
|
},
|
|
132
|
+
cu: { nativeName: 'ѩзыкъ словѣньскъ', englishName: 'Old Church Slavonic' },
|
|
133
|
+
cv: { nativeName: 'чӑваш чӗлхи', englishName: 'Chuvash' },
|
|
115
134
|
cy: {
|
|
116
135
|
nativeName: 'Cymraeg',
|
|
117
136
|
englishName: 'Welsh',
|
|
@@ -148,6 +167,9 @@ const langmap = new Proxy(
|
|
|
148
167
|
nativeName: 'Dolnoserbšćina',
|
|
149
168
|
englishName: 'Lower Sorbian',
|
|
150
169
|
},
|
|
170
|
+
dv: { nativeName: 'Divehi', englishName: 'Maldivian' },
|
|
171
|
+
dz: { nativeName: 'Bhutani', englishName: 'Indian Bhutani' },
|
|
172
|
+
ee: { nativeName: 'Eʋegbe', englishName: 'Ewe' },
|
|
151
173
|
el: {
|
|
152
174
|
nativeName: 'Ελληνικά',
|
|
153
175
|
englishName: 'Greek',
|
|
@@ -296,6 +318,8 @@ const langmap = new Proxy(
|
|
|
296
318
|
nativeName: 'Suomi',
|
|
297
319
|
englishName: 'Finnish',
|
|
298
320
|
},
|
|
321
|
+
fj: { nativeName: 'Fiji', englishName: 'Fiji' },
|
|
322
|
+
fo: { nativeName: 'Føroyska', englishName: 'Faroese' },
|
|
299
323
|
'fo-FO': {
|
|
300
324
|
nativeName: 'Føroyskt',
|
|
301
325
|
englishName: 'Faroese',
|
|
@@ -320,6 +344,7 @@ const langmap = new Proxy(
|
|
|
320
344
|
nativeName: 'Français (Suisse)',
|
|
321
345
|
englishName: 'French (Switzerland)',
|
|
322
346
|
},
|
|
347
|
+
fy: { nativeName: 'Frysk', englishName: 'Frisian' },
|
|
323
348
|
'fy-NL': {
|
|
324
349
|
nativeName: 'Frysk',
|
|
325
350
|
englishName: 'Frisian (West)',
|
|
@@ -344,10 +369,12 @@ const langmap = new Proxy(
|
|
|
344
369
|
nativeName: 'Galego',
|
|
345
370
|
englishName: 'Galician',
|
|
346
371
|
},
|
|
372
|
+
gn: { nativeName: 'Guarani', englishName: 'Guarani' },
|
|
347
373
|
'gn-PY': {
|
|
348
374
|
nativeName: "Avañe'ẽ",
|
|
349
375
|
englishName: 'Guarani',
|
|
350
376
|
},
|
|
377
|
+
gu: { nativeName: 'ગુજરાતી', englishName: 'Gujarati' },
|
|
351
378
|
'gu-IN': {
|
|
352
379
|
nativeName: 'ગુજરાતી',
|
|
353
380
|
englishName: 'Gujarati',
|
|
@@ -360,6 +387,7 @@ const langmap = new Proxy(
|
|
|
360
387
|
nativeName: 'Ἑλληνική ἀρχαία',
|
|
361
388
|
englishName: 'Classical Greek',
|
|
362
389
|
},
|
|
390
|
+
ha: { nativeName: 'هَوُس', englishName: 'Hausa' },
|
|
363
391
|
he: {
|
|
364
392
|
nativeName: 'עברית',
|
|
365
393
|
englishName: 'Hebrew',
|
|
@@ -376,6 +404,7 @@ const langmap = new Proxy(
|
|
|
376
404
|
nativeName: 'हिन्दी',
|
|
377
405
|
englishName: 'Hindi',
|
|
378
406
|
},
|
|
407
|
+
ho: { nativeName: 'Hiri Motu', englishName: 'Hiri Motu' },
|
|
379
408
|
hr: {
|
|
380
409
|
nativeName: 'Hrvatski',
|
|
381
410
|
englishName: 'Croatian',
|
|
@@ -400,10 +429,13 @@ const langmap = new Proxy(
|
|
|
400
429
|
nativeName: 'Magyar',
|
|
401
430
|
englishName: 'Hungarian',
|
|
402
431
|
},
|
|
432
|
+
hy: { nativeName: 'Հայերէն', englishName: 'Armenian' },
|
|
403
433
|
'hy-AM': {
|
|
404
434
|
nativeName: 'Հայերեն',
|
|
405
435
|
englishName: 'Armenian',
|
|
406
436
|
},
|
|
437
|
+
hz: { nativeName: 'Otjiherero', englishName: 'Herero' },
|
|
438
|
+
ia: { nativeName: 'Interlingua', englishName: 'Interlingua' },
|
|
407
439
|
id: {
|
|
408
440
|
nativeName: 'Bahasa Indonesia',
|
|
409
441
|
englishName: 'Indonesian',
|
|
@@ -412,6 +444,11 @@ const langmap = new Proxy(
|
|
|
412
444
|
nativeName: 'Bahasa Indonesia',
|
|
413
445
|
englishName: 'Indonesian',
|
|
414
446
|
},
|
|
447
|
+
ie: { nativeName: 'Interlingue', englishName: 'Interlingue' },
|
|
448
|
+
ig: { nativeName: 'Asụsụ Igbo', englishName: 'Igbo' },
|
|
449
|
+
ii: { nativeName: 'Nuosu', englishName: 'Nuosu' },
|
|
450
|
+
ik: { nativeName: 'Iñupiaq', englishName: 'Inupiak' },
|
|
451
|
+
io: { nativeName: 'Ido', englishName: 'Ido' },
|
|
415
452
|
is: {
|
|
416
453
|
nativeName: 'Íslenska',
|
|
417
454
|
englishName: 'Icelandic',
|
|
@@ -428,6 +465,7 @@ const langmap = new Proxy(
|
|
|
428
465
|
nativeName: 'Italiano',
|
|
429
466
|
englishName: 'Italian',
|
|
430
467
|
},
|
|
468
|
+
iu: { nativeName: 'ᐃᓄᒃᑎᑐᑦ', englishName: 'Inuktitut' },
|
|
431
469
|
ja: {
|
|
432
470
|
nativeName: '日本語',
|
|
433
471
|
englishName: 'Japanese',
|
|
@@ -436,18 +474,29 @@ const langmap = new Proxy(
|
|
|
436
474
|
nativeName: '日本語 (日本)',
|
|
437
475
|
englishName: 'Japanese (Japan)',
|
|
438
476
|
},
|
|
477
|
+
jv: { nativeName: 'Javanese', englishName: 'basa Jawa' },
|
|
439
478
|
'jv-ID': {
|
|
440
479
|
nativeName: 'Basa Jawa',
|
|
441
480
|
englishName: 'Javanese',
|
|
442
481
|
},
|
|
482
|
+
ka: { nativeName: 'ქართული', englishName: 'Georgian' },
|
|
443
483
|
'ka-GE': {
|
|
444
484
|
nativeName: 'ქართული',
|
|
445
485
|
englishName: 'Georgian',
|
|
446
486
|
},
|
|
487
|
+
kab: {
|
|
488
|
+
nativeName: 'Taqbaylit',
|
|
489
|
+
englishName: 'Kabyle',
|
|
490
|
+
},
|
|
491
|
+
kg: { nativeName: 'KiKongo', englishName: 'Kongo' },
|
|
492
|
+
ki: { nativeName: 'Gĩkũyũ', englishName: 'Kikuyu' },
|
|
493
|
+
kj: { nativeName: 'Kuanyama', englishName: 'Kwanyama' },
|
|
494
|
+
kk: { nativeName: 'ﻗﺎﺯﺍﻗﺸﺎ', englishName: 'Kazakh' },
|
|
447
495
|
'kk-KZ': {
|
|
448
496
|
nativeName: 'Қазақша',
|
|
449
497
|
englishName: 'Kazakh',
|
|
450
498
|
},
|
|
499
|
+
kl: { nativeName: 'Greenlandic', englishName: 'Greenlandic' },
|
|
451
500
|
km: {
|
|
452
501
|
nativeName: 'ភាសាខ្មែរ',
|
|
453
502
|
englishName: 'Khmer',
|
|
@@ -456,10 +505,6 @@ const langmap = new Proxy(
|
|
|
456
505
|
nativeName: 'ភាសាខ្មែរ',
|
|
457
506
|
englishName: 'Khmer',
|
|
458
507
|
},
|
|
459
|
-
kab: {
|
|
460
|
-
nativeName: 'Taqbaylit',
|
|
461
|
-
englishName: 'Kabyle',
|
|
462
|
-
},
|
|
463
508
|
kn: {
|
|
464
509
|
nativeName: 'ಕನ್ನಡ',
|
|
465
510
|
englishName: 'Kannada',
|
|
@@ -476,14 +521,19 @@ const langmap = new Proxy(
|
|
|
476
521
|
nativeName: '한국어 (한국)',
|
|
477
522
|
englishName: 'Korean (Korea)',
|
|
478
523
|
},
|
|
524
|
+
kr: { nativeName: 'Kanuri', englishName: 'Kanuri' },
|
|
525
|
+
ks: { nativeName: 'काऽशुर', englishName: 'Kashmiri' },
|
|
526
|
+
ku: { nativeName: 'Kurdí', englishName: 'Kurdish' },
|
|
479
527
|
'ku-TR': {
|
|
480
528
|
nativeName: 'Kurdî',
|
|
481
529
|
englishName: 'Kurdish',
|
|
482
530
|
},
|
|
531
|
+
kv: { nativeName: 'коми кыв', englishName: 'Komi' },
|
|
483
532
|
kw: {
|
|
484
533
|
nativeName: 'Kernewek',
|
|
485
534
|
englishName: 'Cornish',
|
|
486
535
|
},
|
|
536
|
+
ky: { nativeName: 'Кыргыз', englishName: 'Kirghiz' },
|
|
487
537
|
la: {
|
|
488
538
|
nativeName: 'Latin',
|
|
489
539
|
englishName: 'Latin',
|
|
@@ -496,10 +546,14 @@ const langmap = new Proxy(
|
|
|
496
546
|
nativeName: 'Lëtzebuergesch',
|
|
497
547
|
englishName: 'Luxembourgish',
|
|
498
548
|
},
|
|
549
|
+
lg: { nativeName: 'Luganda', englishName: 'Ganda' },
|
|
550
|
+
li: { nativeName: 'Limburgs', englishName: 'Limburgish' },
|
|
499
551
|
'li-NL': {
|
|
500
552
|
nativeName: 'Lèmbörgs',
|
|
501
553
|
englishName: 'Limburgish',
|
|
502
554
|
},
|
|
555
|
+
ln: { nativeName: 'Lingala', englishName: 'Lingala' },
|
|
556
|
+
lo: { nativeName: 'ພາສາລາວ', englishName: 'Laotian' },
|
|
503
557
|
lt: {
|
|
504
558
|
nativeName: 'Lietuvių',
|
|
505
559
|
englishName: 'Lithuanian',
|
|
@@ -508,6 +562,7 @@ const langmap = new Proxy(
|
|
|
508
562
|
nativeName: 'Lietuvių',
|
|
509
563
|
englishName: 'Lithuanian',
|
|
510
564
|
},
|
|
565
|
+
lu: { nativeName: 'Tshiluba', englishName: 'Luba-Katanga' },
|
|
511
566
|
lv: {
|
|
512
567
|
nativeName: 'Latviešu',
|
|
513
568
|
englishName: 'Latvian',
|
|
@@ -520,10 +575,13 @@ const langmap = new Proxy(
|
|
|
520
575
|
nativeName: 'मैथिली, মৈথিলী',
|
|
521
576
|
englishName: 'Maithili',
|
|
522
577
|
},
|
|
578
|
+
mg: { nativeName: 'Malagasy', englishName: 'Madagascarian' },
|
|
523
579
|
'mg-MG': {
|
|
524
580
|
nativeName: 'Malagasy',
|
|
525
581
|
englishName: 'Malagasy',
|
|
526
582
|
},
|
|
583
|
+
mh: { nativeName: 'Kajin M̧ajeļ', englishName: 'Marshallese' },
|
|
584
|
+
mi: { nativeName: 'Maori', englishName: 'Maori' },
|
|
527
585
|
mk: {
|
|
528
586
|
nativeName: 'Македонски',
|
|
529
587
|
englishName: 'Macedonian',
|
|
@@ -540,10 +598,12 @@ const langmap = new Proxy(
|
|
|
540
598
|
nativeName: 'മലയാളം',
|
|
541
599
|
englishName: 'Malayalam',
|
|
542
600
|
},
|
|
601
|
+
mn: { nativeName: 'Монгол', englishName: 'Mongolian' },
|
|
543
602
|
'mn-MN': {
|
|
544
603
|
nativeName: 'Монгол',
|
|
545
604
|
englishName: 'Mongolian',
|
|
546
605
|
},
|
|
606
|
+
mo: { nativeName: 'Moldavian', englishName: 'Moldavian' },
|
|
547
607
|
mr: {
|
|
548
608
|
nativeName: 'मराठी',
|
|
549
609
|
englishName: 'Marathi',
|
|
@@ -572,10 +632,7 @@ const langmap = new Proxy(
|
|
|
572
632
|
nativeName: 'ဗမာစကာ',
|
|
573
633
|
englishName: 'Burmese',
|
|
574
634
|
},
|
|
575
|
-
|
|
576
|
-
nativeName: 'Norsk',
|
|
577
|
-
englishName: 'Norwegian',
|
|
578
|
-
},
|
|
635
|
+
na: { nativeName: 'Nauru', englishName: 'Nauruan' },
|
|
579
636
|
nb: {
|
|
580
637
|
nativeName: 'Norsk (bokmål)',
|
|
581
638
|
englishName: 'Norwegian (bokmal)',
|
|
@@ -584,6 +641,7 @@ const langmap = new Proxy(
|
|
|
584
641
|
nativeName: 'Norsk (bokmål)',
|
|
585
642
|
englishName: 'Norwegian (bokmal)',
|
|
586
643
|
},
|
|
644
|
+
nd: { nativeName: 'Ndebele (North)', englishName: 'Ndebele (North)' },
|
|
587
645
|
ne: {
|
|
588
646
|
nativeName: 'नेपाली',
|
|
589
647
|
englishName: 'Nepali',
|
|
@@ -592,6 +650,8 @@ const langmap = new Proxy(
|
|
|
592
650
|
nativeName: 'नेपाली',
|
|
593
651
|
englishName: 'Nepali',
|
|
594
652
|
},
|
|
653
|
+
ng: { nativeName: 'Owambo', englishName: 'Ndonga' },
|
|
654
|
+
|
|
595
655
|
nl: {
|
|
596
656
|
nativeName: 'Nederlands',
|
|
597
657
|
englishName: 'Dutch',
|
|
@@ -604,18 +664,30 @@ const langmap = new Proxy(
|
|
|
604
664
|
nativeName: 'Nederlands (Nederland)',
|
|
605
665
|
englishName: 'Dutch (Netherlands)',
|
|
606
666
|
},
|
|
667
|
+
nn: { nativeName: 'Nynorsk', englishName: 'Nynorsk' },
|
|
607
668
|
'nn-NO': {
|
|
608
669
|
nativeName: 'Norsk (nynorsk)',
|
|
609
670
|
englishName: 'Norwegian (nynorsk)',
|
|
610
671
|
},
|
|
672
|
+
no: {
|
|
673
|
+
nativeName: 'Norsk',
|
|
674
|
+
englishName: 'Norwegian',
|
|
675
|
+
},
|
|
676
|
+
nr: { nativeName: 'IsiNdebele', englishName: 'Ndebele (South)' },
|
|
677
|
+
nv: { nativeName: 'Diné bizaad', englishName: 'Navajo' },
|
|
678
|
+
ny: { nativeName: 'chiCheŵa', englishName: 'Chichewa' },
|
|
611
679
|
oc: {
|
|
612
680
|
nativeName: 'Occitan',
|
|
613
681
|
englishName: 'Occitan',
|
|
614
682
|
},
|
|
683
|
+
oj: { nativeName: 'ᐊᓂᔑᓈᐯᒧᐎᓐ', englishName: 'Ojibwe' },
|
|
684
|
+
om: { nativeName: 'Oromo', englishName: 'Oromo' },
|
|
685
|
+
or: { nativeName: 'ଓଡ଼ିଆ', englishName: 'Oriya' },
|
|
615
686
|
'or-IN': {
|
|
616
687
|
nativeName: 'ଓଡ଼ିଆ',
|
|
617
688
|
englishName: 'Oriya',
|
|
618
689
|
},
|
|
690
|
+
os: { nativeName: 'ирон æвзаг', englishName: 'Ossetian' },
|
|
619
691
|
pa: {
|
|
620
692
|
nativeName: 'ਪੰਜਾਬੀ',
|
|
621
693
|
englishName: 'Punjabi',
|
|
@@ -624,6 +696,7 @@ const langmap = new Proxy(
|
|
|
624
696
|
nativeName: 'ਪੰਜਾਬੀ (ਭਾਰਤ ਨੂੰ)',
|
|
625
697
|
englishName: 'Punjabi (India)',
|
|
626
698
|
},
|
|
699
|
+
pi: { nativeName: 'पाऴि', englishName: 'Pāli' },
|
|
627
700
|
pl: {
|
|
628
701
|
nativeName: 'Polski',
|
|
629
702
|
englishName: 'Polish',
|
|
@@ -632,6 +705,7 @@ const langmap = new Proxy(
|
|
|
632
705
|
nativeName: 'Polski',
|
|
633
706
|
englishName: 'Polish',
|
|
634
707
|
},
|
|
708
|
+
ps: { nativeName: 'پښتو', englishName: 'Pashto' },
|
|
635
709
|
'ps-AF': {
|
|
636
710
|
nativeName: 'پښتو',
|
|
637
711
|
englishName: 'Pashto',
|
|
@@ -648,6 +722,7 @@ const langmap = new Proxy(
|
|
|
648
722
|
nativeName: 'Português (Portugal)',
|
|
649
723
|
englishName: 'Portuguese (Portugal)',
|
|
650
724
|
},
|
|
725
|
+
qu: { nativeName: 'Quechua', englishName: 'Quechua' },
|
|
651
726
|
'qu-PE': {
|
|
652
727
|
nativeName: 'Qhichwa',
|
|
653
728
|
englishName: 'Quechua',
|
|
@@ -664,6 +739,8 @@ const langmap = new Proxy(
|
|
|
664
739
|
nativeName: 'Română',
|
|
665
740
|
englishName: 'Romanian',
|
|
666
741
|
},
|
|
742
|
+
rm: { nativeName: 'Rhaeto-Romance', englishName: 'Rhaeto-Romance' },
|
|
743
|
+
rn: { nativeName: 'Kirundi', englishName: 'Kirundi' },
|
|
667
744
|
ru: {
|
|
668
745
|
nativeName: 'Русский',
|
|
669
746
|
englishName: 'Russian',
|
|
@@ -672,18 +749,25 @@ const langmap = new Proxy(
|
|
|
672
749
|
nativeName: 'Русский',
|
|
673
750
|
englishName: 'Russian',
|
|
674
751
|
},
|
|
752
|
+
rw: { nativeName: 'Kinyarwanda', englishName: 'Kinyarwanda' },
|
|
753
|
+
sa: { nativeName: 'संस्कृत', englishName: 'Sanskrit' },
|
|
675
754
|
'sa-IN': {
|
|
676
755
|
nativeName: 'संस्कृतम्',
|
|
677
756
|
englishName: 'Sanskrit',
|
|
678
757
|
},
|
|
758
|
+
sc: { nativeName: 'sardu', englishName: 'Sardinian' },
|
|
759
|
+
sd: { nativeName: 'سنڌي', englishName: 'Sindhi' },
|
|
760
|
+
se: { nativeName: 'Northern Sámi', englishName: 'Northern Sámi' },
|
|
679
761
|
'se-NO': {
|
|
680
762
|
nativeName: 'Davvisámegiella',
|
|
681
763
|
englishName: 'Northern Sámi',
|
|
682
764
|
},
|
|
765
|
+
sg: { nativeName: 'Sangho', englishName: 'Sangho' },
|
|
683
766
|
sh: {
|
|
684
767
|
nativeName: 'српскохрватски',
|
|
685
768
|
englishName: 'Serbo-Croatian',
|
|
686
769
|
},
|
|
770
|
+
si: { nativeName: 'Singhalese', englishName: 'Singhalese' },
|
|
687
771
|
'si-LK': {
|
|
688
772
|
nativeName: 'පළාත',
|
|
689
773
|
englishName: 'Sinhala (Sri Lanka)',
|
|
@@ -704,10 +788,13 @@ const langmap = new Proxy(
|
|
|
704
788
|
nativeName: 'Slovenščina',
|
|
705
789
|
englishName: 'Slovenian',
|
|
706
790
|
},
|
|
791
|
+
sm: { nativeName: 'Samoan', englishName: 'Samoan' },
|
|
792
|
+
sn: { nativeName: 'Shona', englishName: 'Shona' },
|
|
707
793
|
'so-SO': {
|
|
708
794
|
nativeName: 'Soomaaliga',
|
|
709
795
|
englishName: 'Somali',
|
|
710
796
|
},
|
|
797
|
+
so: { nativeName: 'Somali', englishName: 'Somali' },
|
|
711
798
|
sq: {
|
|
712
799
|
nativeName: 'Shqip',
|
|
713
800
|
englishName: 'Albanian',
|
|
@@ -724,6 +811,8 @@ const langmap = new Proxy(
|
|
|
724
811
|
nativeName: 'Српски (Serbia)',
|
|
725
812
|
englishName: 'Serbian (Serbia)',
|
|
726
813
|
},
|
|
814
|
+
ss: { nativeName: 'SiSwati', englishName: 'Swati' },
|
|
815
|
+
st: { nativeName: 'Sesotho', englishName: 'Southern Sotho' },
|
|
727
816
|
su: {
|
|
728
817
|
nativeName: 'Basa Sunda',
|
|
729
818
|
englishName: 'Sundanese',
|
|
@@ -776,6 +865,8 @@ const langmap = new Proxy(
|
|
|
776
865
|
nativeName: 'ภาษาไทย (ประเทศไทย)',
|
|
777
866
|
englishName: 'Thai (Thailand)',
|
|
778
867
|
},
|
|
868
|
+
ti: { nativeName: 'ትግርኛ', englishName: 'Tigrinya' },
|
|
869
|
+
tk: { nativeName: 'түркmенче', englishName: 'Turkmen' },
|
|
779
870
|
tl: {
|
|
780
871
|
nativeName: 'Filipino',
|
|
781
872
|
englishName: 'Filipino',
|
|
@@ -788,6 +879,8 @@ const langmap = new Proxy(
|
|
|
788
879
|
nativeName: 'tlhIngan-Hol',
|
|
789
880
|
englishName: 'Klingon',
|
|
790
881
|
},
|
|
882
|
+
tn: { nativeName: 'Setswana', englishName: 'Tswana' },
|
|
883
|
+
to: { nativeName: 'Tonga', englishName: 'Tonga' },
|
|
791
884
|
tr: {
|
|
792
885
|
nativeName: 'Türkçe',
|
|
793
886
|
englishName: 'Turkish',
|
|
@@ -796,10 +889,14 @@ const langmap = new Proxy(
|
|
|
796
889
|
nativeName: 'Türkçe',
|
|
797
890
|
englishName: 'Turkish',
|
|
798
891
|
},
|
|
892
|
+
ts: { nativeName: 'Xitsonga', englishName: 'Tsonga' },
|
|
893
|
+
tt: { nativeName: 'татарча', englishName: 'Tatar' },
|
|
799
894
|
'tt-RU': {
|
|
800
895
|
nativeName: 'татарча',
|
|
801
896
|
englishName: 'Tatar',
|
|
802
897
|
},
|
|
898
|
+
tw: { nativeName: 'Twi', englishName: 'Twi' },
|
|
899
|
+
ty: { nativeName: 'Reo Tahiti', englishName: 'Tahitian' },
|
|
803
900
|
uk: {
|
|
804
901
|
nativeName: 'Українська',
|
|
805
902
|
englishName: 'Ukrainian',
|
|
@@ -808,6 +905,7 @@ const langmap = new Proxy(
|
|
|
808
905
|
nativeName: 'Українська',
|
|
809
906
|
englishName: 'Ukrainian',
|
|
810
907
|
},
|
|
908
|
+
ug: { nativeName: 'Uigur', englishName: 'Uigur' },
|
|
811
909
|
ur: {
|
|
812
910
|
nativeName: 'اردو',
|
|
813
911
|
englishName: 'Urdu',
|
|
@@ -824,6 +922,7 @@ const langmap = new Proxy(
|
|
|
824
922
|
nativeName: "O'zbek",
|
|
825
923
|
englishName: 'Uzbek',
|
|
826
924
|
},
|
|
925
|
+
ve: { nativeName: 'Tshivenḓa', englishName: 'Venda' },
|
|
827
926
|
vi: {
|
|
828
927
|
nativeName: 'Tiếng Việt',
|
|
829
928
|
englishName: 'Vietnamese',
|
|
@@ -832,6 +931,11 @@ const langmap = new Proxy(
|
|
|
832
931
|
nativeName: 'Tiếng Việt',
|
|
833
932
|
englishName: 'Vietnamese',
|
|
834
933
|
},
|
|
934
|
+
vk: { nativeName: 'Ovalingo', englishName: 'Viking' },
|
|
935
|
+
vo: { nativeName: 'Volapük', englishName: 'Volapük' },
|
|
936
|
+
wa: { nativeName: 'Walon', englishName: 'Walloon' },
|
|
937
|
+
wo: { nativeName: 'Wolof', englishName: 'Wolof' },
|
|
938
|
+
xh: { nativeName: 'IsiXhosa', englishName: 'Xhosa' },
|
|
835
939
|
'xh-ZA': {
|
|
836
940
|
nativeName: 'isiXhosa',
|
|
837
941
|
englishName: 'Xhosa',
|
|
@@ -844,6 +948,8 @@ const langmap = new Proxy(
|
|
|
844
948
|
nativeName: 'ייִדיש (German)',
|
|
845
949
|
englishName: 'Yiddish (German)',
|
|
846
950
|
},
|
|
951
|
+
yo: { nativeName: 'Yorùbá', englishName: 'Yorouba' },
|
|
952
|
+
za: { nativeName: 'Zhuang', englishName: 'Zhuang' },
|
|
847
953
|
zh: {
|
|
848
954
|
nativeName: '中文',
|
|
849
955
|
englishName: 'Chinese',
|
|
@@ -872,6 +978,7 @@ const langmap = new Proxy(
|
|
|
872
978
|
nativeName: '中文(台灣)',
|
|
873
979
|
englishName: 'Chinese Traditional (Taiwan)',
|
|
874
980
|
},
|
|
981
|
+
zu: { nativeName: 'IsiZulu', englishName: 'Zulu' },
|
|
875
982
|
'zu-ZA': {
|
|
876
983
|
nativeName: 'isiZulu',
|
|
877
984
|
englishName: 'Zulu',
|
|
@@ -152,6 +152,11 @@ export const messages = defineMessages({
|
|
|
152
152
|
id: 'Groupname',
|
|
153
153
|
defaultMessage: 'Groupname',
|
|
154
154
|
},
|
|
155
|
+
addGroupsFormGroupNameDescription: {
|
|
156
|
+
id: 'A unique identifier for the group. Cannot be changed after creation. No spaces allowed.',
|
|
157
|
+
defaultMessage:
|
|
158
|
+
'A unique identifier for the group. Cannot be changed after creation. No spaces allowed.',
|
|
159
|
+
},
|
|
155
160
|
addGroupsFormDescriptionTitle: {
|
|
156
161
|
id: 'Description',
|
|
157
162
|
defaultMessage: 'Description',
|