kaori 3 лет назад
Родитель
Сommit
7075a77153

+ 2 - 0
packages/app/public/static/locales/en_US/admin.json

@@ -270,6 +270,8 @@
     "toggle_notification": "Updated setting of {{path}}"
     "toggle_notification": "Updated setting of {{path}}"
   },
   },
   "customize": "Customize",
   "customize": "Customize",
+  "ipmport_data": "Import Data",
+  "export_archive_data": "Export Archive Data",
   "full_text_search_management": "Full Text Search Management",
   "full_text_search_management": "Full Text Search Management",
   "mailer_setup_required":"<a href='/admin/app'>Email settings</a> are required to send.",
   "mailer_setup_required":"<a href='/admin/app'>Email settings</a> are required to send.",
   "admin_top": {
   "admin_top": {

+ 0 - 2
packages/app/public/static/locales/en_US/translation.json

@@ -121,8 +121,6 @@
   "external_account_management": "External Account Management",
   "external_account_management": "External Account Management",
   "UserGroup": "UserGroup",
   "UserGroup": "UserGroup",
   "ChildUserGroup": "ChildUserGroup",
   "ChildUserGroup": "ChildUserGroup",
-  "Import Data": "Import Data",
-  "Export Archive Data": "Export Archive Data",
   "Basic Settings": "Basic Settings",
   "Basic Settings": "Basic Settings",
   "Basic authentication": "Basic authentication",
   "Basic authentication": "Basic authentication",
   "Register limitation": "Register limitation",
   "Register limitation": "Register limitation",

+ 32 - 1
packages/app/public/static/locales/ja_JP/admin.json

@@ -1,8 +1,15 @@
 {
 {
   "wiki_management_home_page": "Wiki管理トップ",
   "wiki_management_home_page": "Wiki管理トップ",
   "app_settings": "アプリ設定",
   "app_settings": "アプリ設定",
+  "public": "公開",
+  "anyone_with_the_link": "リンクを知っている人のみ",
+  "specified_users": "特定ユーザーのみ",
+  "only_me": "自分のみ",
+  "only_inside_the_group": "特定グループのみ",
   "security_settings": {
   "security_settings": {
     "security_settings": "セキュリティ設定",
     "security_settings": "セキュリティ設定",
+    "scope_of_page_disclosure": "ページの公開範囲",
+    "set_point": "設定値",
     "Guest Users Access":"ゲストユーザーのアクセス",
     "Guest Users Access":"ゲストユーザーのアクセス",
     "always_hidden": "非表示 (固定)",
     "always_hidden": "非表示 (固定)",
     "always_displayed": "表示 (固定)",
     "always_displayed": "表示 (固定)",
@@ -263,7 +270,31 @@
     "toggle_notification": "{{path}}の通知設定を変更しました"
     "toggle_notification": "{{path}}の通知設定を変更しました"
   },
   },
   "customize": "カスタマイズ",
   "customize": "カスタマイズ",
-  "full_text_search_management": "Full Text Search Management",
+  "ipmport_data": "データインポート",
+  "export_archive_data": "データアーカイブ",
+  "full_text_search_management": {
+    "full_text_search_management": "全文検索管理",
+    "elasticsearch_management": "Elasticsearch 管理",
+    "connection_status": "接続の状態",
+    "connection_status_label_unconfigured": "設定されていません",
+    "connection_status_label_connected": "接続されています",
+    "connection_status_label_disconnected": "切断されています",
+    "connection_status_label_erroroccured": "SearchService でエラーが発生しています",
+    "indices_status": "インデックスの状態",
+    "indices_status_label_normalized": "正規化されています",
+    "indices_status_label_unnormalized": "リビルド中 または 破損しています",
+    "indices_summary": "インデックスのサマリ",
+    "reconnect": "再接続",
+    "reconnect_button": "再接続の試行",
+    "reconnect_description": "Elasticsearch への再接続を試みます。",
+    "normalize": "正規化",
+    "normalize_button": "インデックスの正規化",
+    "normalize_description": "破損したインデックスを修復します。",
+    "rebuild": "リビルド",
+    "rebuild_button": "インデックスのリビルド",
+    "rebuild_description_1": "全てのページのインデックスを削除し、作り直します。",
+    "rebuild_description_2": "この作業には数秒かかります。"
+  },
   "mailer_setup_required": "送信するには <a href='/admin/app'>メールの設定</a> が必要です。",
   "mailer_setup_required": "送信するには <a href='/admin/app'>メールの設定</a> が必要です。",
   "admin_top": {
   "admin_top": {
     "management_wiki": "Wiki管理",
     "management_wiki": "Wiki管理",

+ 3 - 3
packages/app/src/components/Admin/Common/AdminNavigation.jsx

@@ -29,14 +29,14 @@ const AdminNavigation = (props) => {
       case 'security':                 return <><i className="icon-fw icon-shield"></i>          { t('security_settings.security_settings') }</>;
       case 'security':                 return <><i className="icon-fw icon-shield"></i>          { t('security_settings.security_settings') }</>;
       case 'markdown':                 return <><i className="icon-fw icon-note"></i>            { t('markdown_settings') }</>;
       case 'markdown':                 return <><i className="icon-fw icon-note"></i>            { t('markdown_settings') }</>;
       case 'customize':                return <><i className="icon-fw icon-wrench"></i>          { t('customize') }</>;
       case 'customize':                return <><i className="icon-fw icon-wrench"></i>          { t('customize') }</>;
-      case 'importer':                 return <><i className="icon-fw icon-cloud-upload"></i>    { t('Import Data') }</>;
-      case 'export':                   return <><i className="icon-fw icon-cloud-download"></i>  { t('Export Archive Data') }</>;
+      case 'importer':                 return <><i className="icon-fw icon-cloud-upload"></i>    { t('ipmport_data') }</>;
+      case 'export':                   return <><i className="icon-fw icon-cloud-download"></i>  { t('export_archive_data') }</>;
       case 'notification':             return <><i className="icon-fw icon-bell"></i>            { t('external_notification.external_notification')}</>;
       case 'notification':             return <><i className="icon-fw icon-bell"></i>            { t('external_notification.external_notification')}</>;
       case 'slack-integration':        return <><i className="icon-fw icon-shuffle"></i>         { t('slack_integration.slack_integration') }</>;
       case 'slack-integration':        return <><i className="icon-fw icon-shuffle"></i>         { t('slack_integration.slack_integration') }</>;
       case 'slack-integration-legacy': return <><i className="icon-fw icon-shuffle"></i>         { t('slack_integration_legacy.slack_integration_legacy')}</>;
       case 'slack-integration-legacy': return <><i className="icon-fw icon-shuffle"></i>         { t('slack_integration_legacy.slack_integration_legacy')}</>;
       case 'users':                    return <><i className="icon-fw icon-user"></i>            { t('user_management.user_management') }</>;
       case 'users':                    return <><i className="icon-fw icon-user"></i>            { t('user_management.user_management') }</>;
       case 'user-groups':              return <><i className="icon-fw icon-people"></i>          { t('user_group_management.user_group_management') }</>;
       case 'user-groups':              return <><i className="icon-fw icon-people"></i>          { t('user_group_management.user_group_management') }</>;
-      case 'search':                   return <><i className="icon-fw icon-magnifier"></i>       { t('full_text_search_management') }</>;
+      case 'search':                   return <><i className="icon-fw icon-magnifier"></i>       { t('full_text_search_management.full_text_search_management') }</>;
       // TODO: Consider where to place the "AuditLog"
       // TODO: Consider where to place the "AuditLog"
       case 'audit-log':                return <><i className="icon-fw icon-feed"></i>            { t('audit_log_management.audit_log')}</>;
       case 'audit-log':                return <><i className="icon-fw icon-feed"></i>            { t('audit_log_management.audit_log')}</>;
       case 'cloud':                    return <><i className="icon-fw icon-share-alt"></i>       { t('to_cloud_settings')} </>;
       case 'cloud':                    return <><i className="icon-fw icon-share-alt"></i>       { t('to_cloud_settings')} </>;

+ 1 - 1
packages/app/src/components/Admin/ElasticsearchManagement/ElasticsearchManagement.tsx

@@ -15,7 +15,7 @@ import ReconnectControls from './ReconnectControls';
 import StatusTable from './StatusTable';
 import StatusTable from './StatusTable';
 
 
 const ElasticsearchManagement = () => {
 const ElasticsearchManagement = () => {
-  const { t } = useTranslation();
+  const { t } = useTranslation('admin');
   const { data: isSearchServiceReachable } = useIsSearchServiceReachable();
   const { data: isSearchServiceReachable } = useIsSearchServiceReachable();
   const { data: socket } = useAdminSocket();
   const { data: socket } = useAdminSocket();
 
 

+ 1 - 1
packages/app/src/components/Admin/ElasticsearchManagement/ReconnectControls.tsx

@@ -9,7 +9,7 @@ type Props = {
 }
 }
 
 
 const ReconnectControls = (props: Props): JSX.Element => {
 const ReconnectControls = (props: Props): JSX.Element => {
-  const { t } = useTranslation();
+  const { t } = useTranslation('admin');
 
 
   const { isEnabled, isProcessing } = props;
   const { isEnabled, isProcessing } = props;
 
 

+ 1 - 1
packages/app/src/components/Admin/ElasticsearchManagement/StatusTable.jsx

@@ -161,7 +161,7 @@ class StatusTable extends React.PureComponent {
 }
 }
 
 
 const StatusTableWrapperFC = (props) => {
 const StatusTableWrapperFC = (props) => {
-  const { t } = useTranslation();
+  const { t } = useTranslation('admin');
 
 
   return <StatusTable t={t} {...props} />;
   return <StatusTable t={t} {...props} />;
 };
 };

+ 1 - 1
packages/app/src/components/Admin/ExportArchiveDataPage.jsx

@@ -212,7 +212,7 @@ class ExportArchiveDataPage extends React.Component {
 
 
     return (
     return (
       <div data-testid="admin-export-archive-data">
       <div data-testid="admin-export-archive-data">
-        <h2>{t('Export Archive Data')}</h2>
+        <h2>{t('export_archive_data')}</h2>
 
 
         <button type="button" className="btn btn-outline-secondary" disabled={isExporting} onClick={this.openExportModal}>
         <button type="button" className="btn btn-outline-secondary" disabled={isExporting} onClick={this.openExportModal}>
           {t('admin:export_management.create_new_archive_data')}
           {t('admin:export_management.create_new_archive_data')}

+ 7 - 7
packages/app/src/components/Admin/Security/SecuritySetting.jsx

@@ -1,8 +1,8 @@
 /* eslint-disable react/no-danger */
 /* eslint-disable react/no-danger */
 import React from 'react';
 import React from 'react';
 
 
-import PropTypes from 'prop-types';
 import { useTranslation } from 'next-i18next';
 import { useTranslation } from 'next-i18next';
+import PropTypes from 'prop-types';
 import { Collapse } from 'reactstrap';
 import { Collapse } from 'reactstrap';
 
 
 import AdminGeneralSecurityContainer from '~/client/services/AdminGeneralSecurityContainer';
 import AdminGeneralSecurityContainer from '~/client/services/AdminGeneralSecurityContainer';
@@ -340,21 +340,21 @@ class SecuritySetting extends React.Component {
           <table className="table table-bordered col-lg-9 mb-5">
           <table className="table table-bordered col-lg-9 mb-5">
             <thead>
             <thead>
               <tr>
               <tr>
-                <th scope="col">{ t('scope_of_page_disclosure') }</th>
-                <th scope="col">{ t('set_point') }</th>
+                <th scope="col">{ t('security_settings.scope_of_page_disclosure') }</th>
+                <th scope="col">{ t('security_settings.set_point') }</th>
               </tr>
               </tr>
             </thead>
             </thead>
             <tbody>
             <tbody>
               <tr>
               <tr>
-                <th scope="row">{ t('Public') }</th>
+                <th scope="row">{ t('public') }</th>
                 <td>{ t('security_settings.always_displayed') }</td>
                 <td>{ t('security_settings.always_displayed') }</td>
               </tr>
               </tr>
               <tr>
               <tr>
-                <th scope="row">{ t('Anyone with the link') }</th>
+                <th scope="row">{ t('anyone_with_the_link') }</th>
                 <td>{ t('security_settings.always_hidden') }</td>
                 <td>{ t('security_settings.always_hidden') }</td>
               </tr>
               </tr>
               <tr>
               <tr>
-                <th scope="row">{ t('Only me') }</th>
+                <th scope="row">{ t('only_me') }</th>
                 <td>
                 <td>
                   <div className="custom-control custom-switch custom-checkbox-success">
                   <div className="custom-control custom-switch custom-checkbox-success">
                     <input
                     <input
@@ -371,7 +371,7 @@ class SecuritySetting extends React.Component {
                 </td>
                 </td>
               </tr>
               </tr>
               <tr>
               <tr>
-                <th scope="row">{ t('Only inside the group') }</th>
+                <th scope="row">{ t('only_inside_the_group') }</th>
                 <td>
                 <td>
                   <div className="custom-control custom-switch custom-checkbox-success">
                   <div className="custom-control custom-switch custom-checkbox-success">
                     <input
                     <input

+ 2 - 2
packages/app/src/pages/admin/[[...path]].page.tsx

@@ -132,7 +132,7 @@ const AdminMarkdownSettingsPage: NextPage<Props> = (props: Props) => {
       component: <DataImportPageContents />,
       component: <DataImportPageContents />,
     },
     },
     export: {
     export: {
-      title: t('Export Archive Data'),
+      title: t('export_archive_data'),
       component: <ExportArchiveDataPage />,
       component: <ExportArchiveDataPage />,
     },
     },
     notification: {
     notification: {
@@ -170,7 +170,7 @@ const AdminMarkdownSettingsPage: NextPage<Props> = (props: Props) => {
       },
       },
     },
     },
     search: {
     search: {
-      title: t('full_text_search_management'),
+      title: t('full_text_search_management.full_text_search_management'),
       component: <ElasticsearchManagement />,
       component: <ElasticsearchManagement />,
     },
     },
     'audit-log': {
     'audit-log': {

+ 2 - 2
packages/app/src/server/views/admin/export.html

@@ -1,9 +1,9 @@
 {% extends '../layout/admin.html' %}
 {% extends '../layout/admin.html' %}
 
 
-{% block html_title %}{{ customizeService.generateCustomTitleForFixedPageName(t('Export Archive Data')) }}{% endblock %}
+{% block html_title %}{{ customizeService.generateCustomTitleForFixedPageName(t('export_archive_data')) }}{% endblock %}
 
 
 {% block content_header %}
 {% block content_header %}
-<h1 class="title">{{ t('Export Archive Data') }}</h1>
+<h1 class="title">{{ t('export_archive_data') }}</h1>
 {% endblock %}
 {% endblock %}
 
 
 {% block content_main %}
 {% block content_main %}

+ 2 - 2
packages/app/src/server/views/admin/importer.html

@@ -1,9 +1,9 @@
 {% extends '../layout/admin.html' %}
 {% extends '../layout/admin.html' %}
 
 
-{% block html_title %}{{ customizeService.generateCustomTitleForFixedPageName(t('Import Data')) }}{% endblock %}
+{% block html_title %}{{ customizeService.generateCustomTitleForFixedPageName(t('ipmport_data')) }}{% endblock %}
 
 
 {% block content_header %}
 {% block content_header %}
-<h1 class="title">{{ t('Import Data') }}</h1>
+<h1 class="title">{{ t('ipmport_data') }}</h1>
 {% endblock %}
 {% endblock %}
 
 
 {% block content_main %}
 {% block content_main %}

+ 2 - 2
packages/app/src/server/views/admin/search.html

@@ -1,9 +1,9 @@
 {% extends '../layout/admin.html' %}
 {% extends '../layout/admin.html' %}
 
 
-{% block html_title %}{{ customizeService.generateCustomTitleForFixedPageName(t('full_text_search_management')) }}{% endblock %}
+{% block html_title %}{{ customizeService.generateCustomTitleForFixedPageName(t('full_text_search_management.full_text_search_management')) }}{% endblock %}
 
 
 {% block content_header %}
 {% block content_header %}
-<h1 class="title">{{ t('full_text_search_management') }}</h1>
+<h1 class="title">{{ t('full_text_search_management.full_text_search_management') }}</h1>
 {% endblock %}
 {% endblock %}
 
 
 {% block content_main %}
 {% block content_main %}