|
|
@@ -1,5 +1,6 @@
|
|
|
import React from 'react';
|
|
|
|
|
|
+import { useTranslation } from 'next-i18next';
|
|
|
import { Spinner } from 'reactstrap';
|
|
|
|
|
|
import { useSWRxPlugins } from '~/stores/plugin';
|
|
|
@@ -16,20 +17,23 @@ const Loading = (): JSX.Element => {
|
|
|
};
|
|
|
|
|
|
export const PluginsExtensionPageContents = (): JSX.Element => {
|
|
|
+ const { t } = useTranslation('admin');
|
|
|
+
|
|
|
const { data, mutate } = useSWRxPlugins();
|
|
|
|
|
|
return (
|
|
|
<div>
|
|
|
<div className="row mb-5">
|
|
|
<div className="col-lg-12">
|
|
|
- <h2 className="admin-setting-header">Plugin Installer</h2>
|
|
|
+ <h2 className="admin-setting-header">{t('plugins.plugin_installer')}</h2>
|
|
|
<PluginInstallerForm />
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div className="row mb-5">
|
|
|
<div className="col-lg-12">
|
|
|
- <h2 className="admin-setting-header">Plugins
|
|
|
+ <h2 className="admin-setting-header">
|
|
|
+ {t('plugins.plugin_card')}
|
|
|
<button type="button" className="btn btn-sm ml-auto grw-btn-reload" onClick={() => mutate()}>
|
|
|
<i className="icon icon-reload"></i>
|
|
|
</button>
|
|
|
@@ -39,7 +43,7 @@ export const PluginsExtensionPageContents = (): JSX.Element => {
|
|
|
: (
|
|
|
<div className="d-grid gap-5">
|
|
|
{ data.plugins.length === 0 && (
|
|
|
- <div>Plugin is not installed</div>
|
|
|
+ <div>{t('plugins.plugin_is_not_installed')}</div>
|
|
|
)}
|
|
|
{ data.plugins.map((plugin) => {
|
|
|
const pluginId = plugin._id;
|