mirror of
				https://github.com/owncast/owncast.git
				synced 2025-10-31 18:18:06 +08:00 
			
		
		
		
	 cb387d88be
			
		
	
	cb387d88be
	
	
	
		
			
			* First pass at configuring localization * Add CI job for translations * Update CI job * Update default value * Update parser config * Update defaults again * try to fix the multiple parsing of a file * Update crowdlin config * Update configs * New Crowdin translations by GitHub Action (#3448) Co-authored-by: Crowdin Bot <support+bot@crowdin.com> * Point to updated translated files * Tooltip i18n * Run translation job when web components are updated * Commit updated translations * Translations update (#3453) * Update source file strings.json Updated translations * New translations strings.json (French) Updated translations * New translations strings.json (Spanish) Updated translations * New translations strings.json (German) Updated translations * New translations strings.json (English, United States) Updated translations * Commit updated translations * New Crowdin translations by GitHub Action (#3452) Co-authored-by: Owncast <owncast@owncast.online> * chore(deps): update to next config to address build errors * New Crowdin translations by GitHub Action (#3455) Co-authored-by: Crowdin Bot <support+bot@crowdin.com> * Translations update (#3456) * New translations strings.json (Arabic) Updated translations * New translations strings.json (German) Updated translations * New translations strings.json (Greek) Updated translations * New translations strings.json (Irish) Updated translations * New translations strings.json (Italian) Updated translations * New translations strings.json (Japanese) Updated translations * New translations strings.json (Korean) Updated translations * New translations strings.json (Dutch) Updated translations * New translations strings.json (Norwegian) Updated translations * New translations strings.json (Punjabi) Updated translations * New translations strings.json (Russian) Updated translations * New translations strings.json (Swedish) Updated translations * New translations strings.json (Chinese Traditional) Updated translations * New translations strings.json (Vietnamese) Updated translations * New translations strings.json (Bengali) Updated translations * New translations strings.json (Thai) Updated translations * New translations strings.json (Croatian) Updated translations * New translations strings.json (Hindi) Updated translations * New translations strings.json (Malay) Updated translations * New Crowdin translations by GitHub Action (#3457) * New translations strings.json (Arabic) Updated translations * New translations strings.json (German) Updated translations * New translations strings.json (Greek) Updated translations * New translations strings.json (Irish) Updated translations * New translations strings.json (Italian) Updated translations * New translations strings.json (Japanese) Updated translations * New translations strings.json (Korean) Updated translations * New translations strings.json (Dutch) Updated translations * New translations strings.json (Norwegian) Updated translations * New translations strings.json (Punjabi) Updated translations * New translations strings.json (Russian) Updated translations * New translations strings.json (Swedish) Updated translations * New translations strings.json (Chinese Traditional) Updated translations * New translations strings.json (Vietnamese) Updated translations * New translations strings.json (Bengali) Updated translations * New translations strings.json (Thai) Updated translations * New translations strings.json (Croatian) Updated translations * New translations strings.json (Hindi) Updated translations * New translations strings.json (Malay) Updated translations * New Crowdin translations by GitHub Action --------- Co-authored-by: Gabe Kangas <gabek@real-ity.com> Co-authored-by: Crowdin Bot <support+bot@crowdin.com> * Commit updated API documentation * Update translations job * New Crowdin translations by GitHub Action (#3698) Co-authored-by: Crowdin Bot <support+bot@crowdin.com> * Update Crowdin configuration file * Translations update (#3700) * New translations strings.json (French) Updated translations * New translations strings.json (Italian) Updated translations * Translations update (#3699) * New translations strings.json (French) Updated translations * New translations strings.json (Spanish) Updated translations * New translations strings.json (Italian) Updated translations * New translations strings.json (Japanese) Updated translations * New translations strings.json (Polish) Updated translations * New translations strings.json (Russian) Updated translations * New translations strings.json (Portuguese, Brazilian) Updated translations * Commit updated API documentation --------- Co-authored-by: Owncast <owncast@owncast.online> * New Crowdin translations by GitHub Action (#3701) * New translations strings.json (French) Updated translations * New translations strings.json (Spanish) Updated translations * New translations strings.json (Italian) Updated translations * New translations strings.json (Japanese) Updated translations * New translations strings.json (Polish) Updated translations * New translations strings.json (Russian) Updated translations * New translations strings.json (Portuguese, Brazilian) Updated translations * New Crowdin translations by GitHub Action --------- Co-authored-by: Gabe Kangas <gabek@real-ity.com> Co-authored-by: Crowdin Bot <support+bot@crowdin.com> * Draft: Mark strings for translation. (#3458) * Mark strings for translation. * Mark up strings for translation * fix(web): fix linter warnings --------- Co-authored-by: Le fractal <17422-fractal@users.noreply.framagit.org> Co-authored-by: Gabe Kangas <gabek@real-ity.com> * do not pull from cowdin via workflow * Commit updated translations * feat: add translations support to admin pages and components (#3977) * feat: add translations support to admin pages and components Added translations support admin main page and its components, help page, handware-info page. Added translations support for LogTable, NewsFeed and StreamHealthOverview components. * update package.json * fix rendering issue * Commit updated API documentation --------- Co-authored-by: Owncast <owncast@owncast.online> Co-authored-by: Gabe Kangas <gabek@real-ity.com> * Offline banner i18n formatting (#3997) * Fix "Last live ago" string formatting with i18n interpolation * Change some base translation jsons to use i18n interpolation * Linting fix * chore(js): ignore i18n pkgs in knip * fix(test): fix browser ui test * fix(js): remove unused var --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Crowdin Bot <support+bot@crowdin.com> Co-authored-by: Owncast <owncast@owncast.online> Co-authored-by: taintedcypher <119351153+taintedcypher@users.noreply.github.com> Co-authored-by: Le fractal <17422-fractal@users.noreply.framagit.org> Co-authored-by: Sufyaan Khateeb <81009832+SufyaanKhateeb@users.noreply.github.com> Co-authored-by: mahmed2000 <mahmad2000@protonmail.com>
		
			
				
	
	
		
			102 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { Alert, Button, Card, Col, Row, Statistic, Typography } from 'antd';
 | |
| import dynamic from 'next/dynamic';
 | |
| import Link from 'next/link';
 | |
| import React, { FC, useContext } from 'react';
 | |
| import { useTranslation } from 'next-export-i18n';
 | |
| import { ServerStatusContext } from '../../utils/server-status-context';
 | |
| 
 | |
| // Lazy loaded components
 | |
| 
 | |
| const CheckCircleOutlined = dynamic(() => import('@ant-design/icons/CheckCircleOutlined'), {
 | |
|   ssr: false,
 | |
| });
 | |
| 
 | |
| const ExclamationCircleOutlined = dynamic(
 | |
|   () => import('@ant-design/icons/ExclamationCircleOutlined'),
 | |
|   {
 | |
|     ssr: false,
 | |
|   },
 | |
| );
 | |
| 
 | |
| export type StreamHealthOverviewProps = {
 | |
|   showTroubleshootButton?: Boolean;
 | |
| };
 | |
| 
 | |
| export const StreamHealthOverview: FC<StreamHealthOverviewProps> = ({ showTroubleshootButton }) => {
 | |
|   const { t } = useTranslation();
 | |
|   const serverStatusData = useContext(ServerStatusContext);
 | |
|   const { health } = serverStatusData;
 | |
|   if (!health) {
 | |
|     return null;
 | |
|   }
 | |
| 
 | |
|   const { healthy, healthPercentage, message, representation } = health;
 | |
|   let color = '#3f8600';
 | |
|   let icon: 'success' | 'info' | 'warning' | 'error' = 'info';
 | |
|   if (healthPercentage < 80) {
 | |
|     color = '#cf000f';
 | |
|     icon = 'error';
 | |
|   } else if (healthPercentage < 30) {
 | |
|     color = '#f0ad4e';
 | |
|     icon = 'error';
 | |
|   }
 | |
| 
 | |
|   return (
 | |
|     <div>
 | |
|       <Card type="inner">
 | |
|         <Row gutter={8}>
 | |
|           <Col span={12}>
 | |
|             <Statistic
 | |
|               title={t('Healthy Stream')}
 | |
|               value={healthy ? t('Yes') : t('No')}
 | |
|               valueStyle={{ color }}
 | |
|               prefix={healthy ? <CheckCircleOutlined /> : <ExclamationCircleOutlined />}
 | |
|             />
 | |
|           </Col>
 | |
|           <Col span={12}>
 | |
|             <Statistic
 | |
|               title={t('Playback Health')}
 | |
|               value={healthPercentage}
 | |
|               valueStyle={{ color }}
 | |
|               suffix="%"
 | |
|             />
 | |
|           </Col>
 | |
|         </Row>
 | |
|         <Row style={{ display: representation < 100 && representation !== 0 ? 'grid' : 'none' }}>
 | |
|           <Typography.Text
 | |
|             type="secondary"
 | |
|             style={{ textAlign: 'center', fontSize: '0.7em', opacity: '0.3' }}
 | |
|           >
 | |
|             {`${t('Stream health represents')} ${representation}% ${t('of all known players. Other player status is unknown.')}`}
 | |
|           </Typography.Text>
 | |
|         </Row>
 | |
|         <Row
 | |
|           gutter={16}
 | |
|           style={{ width: '100%', display: message ? 'grid' : 'none', marginTop: '10px' }}
 | |
|         >
 | |
|           <Col span={24}>
 | |
|             <Alert
 | |
|               message={message}
 | |
|               type={icon}
 | |
|               showIcon
 | |
|               action={
 | |
|                 showTroubleshootButton && (
 | |
|                   <Link passHref href="/admin/stream-health">
 | |
|                     <Button size="small" type="text" style={{ color: 'black' }}>
 | |
|                       {t('TROUBLESHOOT')}
 | |
|                     </Button>
 | |
|                   </Link>
 | |
|                 )
 | |
|               }
 | |
|             />
 | |
|           </Col>
 | |
|         </Row>
 | |
|       </Card>
 | |
|     </div>
 | |
|   );
 | |
| };
 | |
| 
 | |
| StreamHealthOverview.defaultProps = {
 | |
|   showTroubleshootButton: true,
 | |
| };
 |