@@ -5,7 +5,6 @@ import * as Blockly from 'blockly';
5
5
6
6
import BlocklyPy from 'blockly/python' ;
7
7
import * as En from 'blockly/msg/en' ;
8
- import * as Fr from 'blockly/msg/fr' ;
9
8
10
9
import { IBlocklyManager } from './token' ;
11
10
import { TOOLBOX } from './utils' ;
@@ -26,7 +25,7 @@ export class BlocklyManager implements IBlocklyManager {
26
25
this . _toolbox = TOOLBOX ;
27
26
this . _activeGenerator = BlocklyPy ;
28
27
this . _generators = new Map < string , Blockly . Generator > ( ) ;
29
- // this._language = 'En'; // By default we choose English.
28
+ this . _language = 'En' ; // By default we choose English.
30
29
31
30
this . _changed = new Signal < BlocklyManager , void > ( this ) ;
32
31
}
@@ -47,11 +46,11 @@ export class BlocklyManager implements IBlocklyManager {
47
46
return this . _changed ;
48
47
}
49
48
50
- set language ( language : string ) {
49
+ set language ( language : string ) {
51
50
this . _language = language ;
52
51
}
53
52
54
- get language ( ) : string {
53
+ get language ( ) : string {
55
54
return this . _language ;
56
55
}
57
56
@@ -70,16 +69,115 @@ export class BlocklyManager implements IBlocklyManager {
70
69
setlanguage ( language : string ) : void {
71
70
this . language = language ;
72
71
73
- // Set Blockly Language to English.
74
- if ( language == 'En' ) {
75
- // @ts -ignore
76
- Blockly . setLocale ( En ) ;
77
- console . log ( 'Setting Blockly language to English.' ) ;
72
+ this . language = language ;
73
+ Private . importLanguageModule ( language ) ;
74
+ }
75
+ }
76
+
77
+ namespace Private {
78
+ export async function importLanguageModule ( language : string ) {
79
+ let module : Promise < any > ;
80
+ switch ( language ) {
81
+ case 'En' :
82
+ module = import ( 'blockly/msg/en' ) ;
83
+ break ;
84
+ case 'Es' :
85
+ module = import ( 'blockly/msg/es' ) ;
86
+ break ;
87
+ case 'Fr' :
88
+ module = import ( 'blockly/msg/fr' ) ;
89
+ break ;
90
+ case ( 'Sa' || 'Ar' ) :
91
+ module = import ( 'blockly/msg/ar' ) ;
92
+ break ;
93
+ case 'Cz' :
94
+ module = import ( 'blockly/msg/cs' ) ;
95
+ break ;
96
+ case 'Dk' :
97
+ module = import ( 'blockly/msg/da' ) ;
98
+ break ;
99
+ case 'De' :
100
+ module = import ( 'blockly/msg/de' ) ;
101
+ break ;
102
+ case 'Gr' :
103
+ module = import ( 'blockly/msg/el' ) ;
104
+ break ;
105
+ case 'Ee' :
106
+ module = import ( 'blockly/msg/et' ) ;
107
+ break ;
108
+ case 'Fi' :
109
+ module = import ( 'blockly/msg/fi' ) ;
110
+ break ;
111
+ case 'Il' :
112
+ module = import ( 'blockly/msg/he' ) ;
113
+ break ;
114
+ case 'Hu' :
115
+ module = import ( 'blockly/msg/hu' ) ;
116
+ break ;
117
+ case 'Am' :
118
+ module = import ( 'blockly/msg/hy' ) ;
119
+ break ;
120
+ case 'Id' :
121
+ module = import ( 'blockly/msg/id' ) ;
122
+ break ;
123
+ case 'It' :
124
+ module = import ( 'blockly/msg/it' ) ;
125
+ break ;
126
+ case 'Jp' :
127
+ module = import ( 'blockly/msg/ja' ) ;
128
+ break ;
129
+ case 'Kr' :
130
+ module = import ( 'blockly/msg/ko' ) ;
131
+ break ;
132
+ case 'Lt' :
133
+ module = import ( 'blockly/msg/lt' ) ;
134
+ break ;
135
+ case 'Nl' :
136
+ module = import ( 'blockly/msg/nl' ) ;
137
+ break ;
138
+ case 'Pl' :
139
+ module = import ( 'blockly/msg/pl' ) ;
140
+ break ;
141
+ case 'Br' :
142
+ module = import ( 'blockly/msg/pt' ) ;
143
+ break ;
144
+ case 'Ro' :
145
+ module = import ( 'blockly/msg/ro' ) ;
146
+ break ;
147
+ case 'Ru' :
148
+ module = import ( 'blockly/msg/ru' ) ;
149
+ break ;
150
+ case 'Lk' :
151
+ module = import ( 'blockly/msg/si' ) ;
152
+ break ;
153
+ case 'Tr' :
154
+ module = import ( 'blockly/msg/tr' ) ;
155
+ break ;
156
+ case 'Ua' :
157
+ module = import ( 'blockly/msg/uk' ) ;
158
+ break ;
159
+ case 'Vn' :
160
+ module = import ( 'blockly/msg/vi' ) ;
161
+ break ;
162
+ case 'Tw' :
163
+ module = import ( 'blockly/msg/zh-hant' ) ;
164
+ break ;
165
+ case 'Cn' :
166
+ module = import ( 'blockly/msg/zh-hans' ) ;
167
+ break ;
168
+ // Complete with all the cases taken from: (last updates June 2022)
169
+ // List of languages in blockly: https://github.com/google/blockly/tree/master/msg/js
170
+ // List of languages in Lab: https://github.com/jupyterlab/language-packs/tree/master/language-packs
171
+ default :
172
+ console . warn ( 'Language not found. Loading english' ) ;
173
+ module = Promise . resolve ( En ) ;
174
+ break ;
78
175
}
79
- else if ( language == 'Fr' ) {
176
+
177
+ module . then ( lang => {
80
178
// @ts -ignore
81
- Blockly . setLocale ( Fr ) ;
82
- console . log ( 'Setting Blockly language to French.' ) ;
83
- }
179
+ Blockly . setLocale ( lang ) ;
180
+ } ) ;
84
181
}
85
182
}
183
+
0 commit comments