File tree 11 files changed +106
-12
lines changed
migrations/postgres/2022-10-27T09-15_v103
11 files changed +106
-12
lines changed Original file line number Diff line number Diff line change 80
80
"searching" : " Searching..." ,
81
81
"select-report" : " Select Template" ,
82
82
"select-store" : " Select store" ,
83
+ "select-language" : " Select language" ,
83
84
"stock" : " View Stock" ,
84
85
"stocktakes" : " Stocktakes" ,
85
86
"store-details" : " Store code: {{code}}" ,
Original file line number Diff line number Diff line change @@ -5,6 +5,14 @@ import { LanguageType } from '../../types/schema';
5
5
6
6
export { useTranslationNext } ;
7
7
8
+ const languageOptions = [
9
+ { label : 'عربي' , value : 'ar' } ,
10
+ { label : 'Français' , value : 'fr' } ,
11
+ { label : 'English' , value : 'en' } ,
12
+ { label : 'Española' , value : 'es' } ,
13
+ { label : 'Tetum' , value : 'tet' } ,
14
+ ] ;
15
+
8
16
const locales = [
9
17
'ar' as const ,
10
18
'en' as const ,
@@ -53,6 +61,9 @@ export const IntlUtils = {
53
61
}
54
62
return 'en' ;
55
63
} ,
64
+ languageOptions,
65
+ getLanguageName : ( language : string ) =>
66
+ languageOptions . find ( option => option . value === language ) ?. label ,
56
67
} ;
57
68
58
69
const parseLanguage = ( language ?: LanguageType ) => {
@@ -71,6 +82,8 @@ const parseLanguage = (language?: LanguageType) => {
71
82
return 'ru' ;
72
83
case LanguageType . Spanish :
73
84
return 'es' ;
85
+ case LanguageType . Tetum :
86
+ return 'tet' ;
74
87
default :
75
88
return undefined ;
76
89
}
Original file line number Diff line number Diff line change @@ -1466,7 +1466,8 @@ export enum LanguageType {
1466
1466
Laos = 'LAOS' ,
1467
1467
Portuguese = 'PORTUGUESE' ,
1468
1468
Russian = 'RUSSIAN' ,
1469
- Spanish = 'SPANISH'
1469
+ Spanish = 'SPANISH' ,
1470
+ Tetum = 'TETUM'
1470
1471
}
1471
1472
1472
1473
export type LocationConnector = {
Original file line number Diff line number Diff line change @@ -2,18 +2,22 @@ import React from 'react';
2
2
import {
3
3
Box ,
4
4
HomeIcon ,
5
+ IntlUtils ,
5
6
styled ,
6
7
Tooltip ,
8
+ TranslateIcon ,
7
9
Typography ,
8
10
useAuthContext ,
9
11
UserIcon ,
10
12
useTranslation ,
11
13
} from '@openmsupply-client/common' ;
12
14
import { StoreSelector } from './StoreSelector' ;
15
+ import { LanguageSelector } from './LanguageSelector' ;
13
16
14
17
export const Footer : React . FC = ( ) => {
15
18
const { user, store } = useAuthContext ( ) ;
16
19
const t = useTranslation ( 'app' ) ;
20
+ const i18n = IntlUtils . useI18N ( ) ;
17
21
const PaddedCell = styled ( Box ) ( { display : 'flex' } ) ;
18
22
const iconStyles = { color : 'gray.main' , height : '16px' , width : '16px' } ;
19
23
const textStyles = {
@@ -38,6 +42,16 @@ export const Footer: React.FC = () => {
38
42
< Typography sx = { textStyles } > { user . name } </ Typography >
39
43
</ PaddedCell >
40
44
) : null }
45
+ < LanguageSelector >
46
+ < PaddedCell >
47
+ < TranslateIcon sx = { iconStyles } />
48
+ < Tooltip title = { t ( 'select-language' , { ...store } ) } >
49
+ < Typography sx = { textStyles } >
50
+ { IntlUtils . getLanguageName ( i18n . language ) }
51
+ </ Typography >
52
+ </ Tooltip >
53
+ </ PaddedCell >
54
+ </ LanguageSelector >
41
55
</ Box >
42
56
) ;
43
57
} ;
Original file line number Diff line number Diff line change
1
+ import React , { FC } from 'react' ;
2
+ import {
3
+ Box ,
4
+ FlatButton ,
5
+ PaperPopoverSection ,
6
+ usePaperClickPopover ,
7
+ useTranslation ,
8
+ IntlUtils ,
9
+ useNavigate ,
10
+ } from '@openmsupply-client/common' ;
11
+
12
+ import { PropsWithChildrenOnly } from '@common/types' ;
13
+
14
+ export const LanguageSelector : FC < PropsWithChildrenOnly > = ( { children } ) => {
15
+ const navigate = useNavigate ( ) ;
16
+ const { hide, PaperClickPopover } = usePaperClickPopover ( ) ;
17
+ const t = useTranslation ( 'app' ) ;
18
+
19
+ const i18n = IntlUtils . useI18N ( ) ;
20
+
21
+ const languageButtons = IntlUtils . languageOptions . map ( l => (
22
+ < FlatButton
23
+ label = { l . label }
24
+ disabled = { l . value === i18n . language }
25
+ onClick = { ( ) => {
26
+ i18n . changeLanguage ( l . value ) ;
27
+ hide ( ) ;
28
+ navigate ( 0 ) ;
29
+ } }
30
+ key = { l . value }
31
+ sx = { {
32
+ whiteSpace : 'nowrap' ,
33
+ overflowX : 'hidden' ,
34
+ overflowY : 'visible' ,
35
+ textOverflow : 'ellipsis' ,
36
+ display : 'block' ,
37
+ textAlign : 'left' ,
38
+ } }
39
+ />
40
+ ) ) ;
41
+ return (
42
+ < PaperClickPopover
43
+ placement = "top"
44
+ width = { 300 }
45
+ Content = {
46
+ < PaperPopoverSection label = { t ( 'select-language' ) } >
47
+ < Box
48
+ style = { {
49
+ overflowY : 'auto' ,
50
+ maxHeight : 300 ,
51
+ } }
52
+ >
53
+ { languageButtons }
54
+ </ Box >
55
+ </ PaperPopoverSection >
56
+ }
57
+ >
58
+ { children }
59
+ </ PaperClickPopover >
60
+ ) ;
61
+ } ;
Original file line number Diff line number Diff line change @@ -16,14 +16,6 @@ export const LanguageMenu: React.FC = () => {
16
16
navigate ( 0 ) ;
17
17
} ;
18
18
19
- const options = [
20
- { label : 'عربي' , value : 'ar' } ,
21
- { label : 'Français' , value : 'fr' } ,
22
- { label : 'English' , value : 'en' } ,
23
- { label : 'Española' , value : 'es' } ,
24
- { label : 'Tetum' , value : 'tet' } ,
25
- ] ;
26
-
27
19
const renderOption = ( option : Option ) => (
28
20
< MenuItem
29
21
key = { option . value }
@@ -37,7 +29,7 @@ export const LanguageMenu: React.FC = () => {
37
29
return (
38
30
< Select
39
31
onChange = { handleChange }
40
- options = { options }
32
+ options = { IntlUtils . languageOptions }
41
33
value = { i18n . language }
42
34
renderOption = { renderOption }
43
35
/>
Original file line number Diff line number Diff line change @@ -50,6 +50,7 @@ pub enum LanguageType {
50
50
Khmer ,
51
51
Portuguese ,
52
52
Russian ,
53
+ Tetum ,
53
54
}
54
55
55
56
#[ derive( SimpleObject ) ]
@@ -133,6 +134,7 @@ impl LanguageType {
133
134
Language :: Khmer => Self :: Khmer ,
134
135
Language :: Portuguese => Self :: Portuguese ,
135
136
Language :: Russian => Self :: Russian ,
137
+ Language :: Tetum => Self :: Tetum ,
136
138
}
137
139
}
138
140
}
Original file line number Diff line number Diff line change 1
- CREATE TYPE language_type AS ENUM (
1
+ CREATE TYPE language_type AS ENUM
2
+ (
2
3
' ENGLISH' ,
3
4
' FRENCH' ,
4
5
' SPANISH' ,
5
6
' LAOS' ,
6
7
' KHMER' ,
7
8
' PORTUGUESE' ,
8
- ' RUSSIAN'
9
+ ' RUSSIAN' ,
10
+ ' TETUM'
9
11
);
10
12
11
13
ALTER TABLE user_account
Original file line number Diff line number Diff line change @@ -26,6 +26,7 @@ pub enum Language {
26
26
Khmer ,
27
27
Portuguese ,
28
28
Russian ,
29
+ Tetum ,
29
30
}
30
31
31
32
impl Default for Language {
Original file line number Diff line number Diff line change @@ -41,6 +41,12 @@ impl Migration for V1_01_03 {
41
41
);"#
42
42
) ?;
43
43
44
+ #[ cfg( feature = "postgres" ) ]
45
+ sql ! (
46
+ connection,
47
+ r#"ALTER TYPE language_type ADD VALUE IF NOT EXISTS 'TETUM';"#
48
+ ) ?;
49
+
44
50
Ok ( ( ) )
45
51
}
46
52
}
Original file line number Diff line number Diff line change @@ -237,6 +237,7 @@ impl LoginService {
237
237
4 => Language :: Khmer ,
238
238
5 => Language :: Portuguese ,
239
239
6 => Language :: Russian ,
240
+ 7 => Language :: Tetum ,
240
241
_ => Language :: English ,
241
242
} ,
242
243
} ;
You can’t perform that action at this time.
0 commit comments