From 8a50ef4ef2f6f6044d36ea2f4fe06e663083972e Mon Sep 17 00:00:00 2001 From: Haishan Date: Sun, 6 Dec 2020 14:57:59 +0800 Subject: feat: initial Chinese UI language support --- src/components/Config.tsx | 51 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 37 insertions(+), 14 deletions(-) (limited to 'src/components/Config.tsx') diff --git a/src/components/Config.tsx b/src/components/Config.tsx index 981eae1..4659e16 100644 --- a/src/components/Config.tsx +++ b/src/components/Config.tsx @@ -1,5 +1,8 @@ -import PropTypes from 'prop-types'; -import React from 'react'; +import * as React from 'react'; +import { useTranslation } from 'react-i18next'; +import Select from 'src/components/shared/Select'; +import { ClashGeneralConfig, DispatchFn, State } from 'src/store/types'; +import { ClashAPIConfig } from 'src/types'; import { getClashAPIConfig, @@ -67,12 +70,17 @@ const portFields = [ { key: 'redir-port', label: 'Redir Port' }, ]; -const mapState = (s) => ({ +const langOptions = [ + ['zh', '中文'], + ['en', 'English'], +]; + +const mapState = (s: State) => ({ configs: getConfigs(s), apiConfig: getClashAPIConfig(s), }); -const mapState2 = (s) => ({ +const mapState2 = (s: State) => ({ selectedChartStyleIndex: getSelectedChartStyleIndex(s), latencyTestUrl: getLatencyTestUrl(s), apiConfig: getClashAPIConfig(s), @@ -88,13 +96,21 @@ function ConfigContainer({ dispatch, configs, apiConfig }) { return ; } +type ConfigImplProps = { + dispatch: DispatchFn; + configs: ClashGeneralConfig; + selectedChartStyleIndex: number; + latencyTestUrl: string; + apiConfig: ClashAPIConfig; +}; + function ConfigImpl({ dispatch, configs, selectedChartStyleIndex, latencyTestUrl, apiConfig, -}) { +}: ConfigImplProps) { const [configState, setConfigStateInternal] = useState(configs); const refConfigs = useRef(configs); useEffect(() => { @@ -188,9 +204,11 @@ function ConfigImpl({ return typeof m === 'string' && m[0].toUpperCase() + m.slice(1); }, [configState.mode]); + const { t, i18n } = useTranslation(); + return (
- +
{portFields.map((f) => configState[f.key] !== undefined ? ( @@ -242,7 +260,7 @@ function ConfigImpl({
-
Chart Style
+
{t('chart_style')}
-
-
Latency Test URL
+
+
{t('latency_test_url')}
Action
+
+
{t('lang')}
+
+