├── .gitignore
├── README.md
├── config
├── de_DE
│ └── default.xml
├── en_EN
│ └── default.xml
├── es_ES
│ └── default.xml
├── fr_FR
│ └── default.xml
├── it_IT
│ └── default.xml
├── nl_NL
│ └── default.xml
├── pt_BR
│ └── default.xml
├── pt_PT
│ └── default.xml
├── yue_Hant
│ └── default.xml
└── zh_Hant
│ └── default.xml
├── convert.sh
├── google2ubuntu-gui.desktop
├── google2ubuntu-manager.py
├── google2ubuntu.1.gz
├── google2ubuntu.desktop
├── google2ubuntu.py
├── i18n
├── de_DE
│ └── LC_MESSAGES
│ │ ├── google2ubuntu.mo
│ │ └── google2ubuntu.po
├── en_EN
│ └── LC_MESSAGES
│ │ ├── google2ubuntu.mo
│ │ └── google2ubuntu.po
├── es_ES
│ └── LC_MESSAGES
│ │ ├── google2ubuntu.mo
│ │ └── google2ubuntu.po
├── fr_FR
│ └── LC_MESSAGES
│ │ ├── google2ubuntu.mo
│ │ └── google2ubuntu.po
├── google2ubuntu.pot
├── it_IT
│ └── LC_MESSAGES
│ │ ├── google2ubuntu.mo
│ │ └── google2ubuntu.po
├── nl_NL
│ └── LC_MESSAGES
│ │ ├── google2ubuntu.mo
│ │ └── google2ubuntu.po
├── pt_BR
│ └── LC_MESSAGES
│ │ ├── google2ubuntu.mo
│ │ └── google2ubuntu.po
├── pt_PT
│ └── LC_MESSAGES
│ │ ├── google2ubuntu.mo
│ │ └── google2ubuntu.po
├── yue_Hant
│ └── LC_MESSAGES
│ │ ├── google2ubuntu.mo
│ │ └── google2ubuntu.po
├── zh_CN
│ ├── README.md
│ └── fallback
├── zh_HK
│ ├── README.md
│ └── fallback
├── zh_Hans
│ └── .placeholder
├── zh_Hant
│ └── LC_MESSAGES
│ │ ├── google2ubuntu.mo
│ │ └── google2ubuntu.po
├── zh_MO
│ ├── README.md
│ └── fallback
├── zh_MY
│ ├── README.md
│ └── fallback
├── zh_SG
│ ├── README.md
│ └── fallback
└── zh_TW
│ ├── README.md
│ └── fallback
├── librairy
├── ArgsWindow.py
├── Googletts.py
├── HelpWindow.py
├── MainWindow.py
├── SetupWindow.py
├── add_window.py
├── basicCommands.py
├── externalWindow.py
├── interface.py
├── internalWindow.py
├── localehelper.py
├── moduleSelection.py
├── osd.py
├── stringParser.py
└── workWithModule.py
├── listen.sh
├── listener.py
├── modules
├── google.sh
├── goto.py
├── meaning.py
├── weather.sh
├── wikipedia.sh
└── youtube.sh
├── record.sh
└── resources
├── Waiting
├── wait-0.png
├── wait-1.png
├── wait-10.png
├── wait-11.png
├── wait-12.png
├── wait-13.png
├── wait-14.png
├── wait-15.png
├── wait-16.png
├── wait-17.png
├── wait-2.png
├── wait-3.png
├── wait-4.png
├── wait-5.png
├── wait-6.png
├── wait-7.png
├── wait-8.png
└── wait-9.png
├── error.png
├── icons.png
└── sound.wav
/.gitignore:
--------------------------------------------------------------------------------
1 | *.py[cod]
2 |
3 | doc
4 | _*
5 | conf.py
6 | *.rst
7 | archive/
8 | createdeb.py
9 | *.tar.gz
10 | *.deb
11 | # sound files
12 | voix.flac
13 |
14 | # configuration files
15 | google2ubuntu.conf
16 |
17 | # C extensions
18 | *.so
19 |
20 | # Packages
21 | *.egg
22 | *.egg-info
23 | dist
24 | build
25 | eggs
26 | parts
27 | bin
28 | var
29 | sdist
30 | develop-eggs
31 | .installed.cfg
32 | lib
33 | lib64
34 | __pycache__
35 |
36 | # Installer logs
37 | pip-log.txt
38 |
39 | # Unit test / coverage reports
40 | .coverage
41 | .tox
42 | nosetests.xml
43 |
44 |
45 | # Mr Developer
46 | .mr.developer.cfg
47 | .project
48 | .pydevproject
49 |
--------------------------------------------------------------------------------
/config/de_DE/default.xml:
--------------------------------------------------------------------------------
1 | wie spättimeBatteriestandpowerLadestandpowerFenster schließenxdotool key "Alt+F4"Fenster versteckenxdotool key "Alt+F9"Fenster wechselnxdotool key "Alt+Tab"nächstes Fensterxdotool key "Alt+Tab"Eingabexdotool key "Return"Enterxdotool key "Return"Tabulatorxdotool key "Tab"Menüxdotool key "Alt+F1"zeige Menüxdotool key "Alt+F1"öffne Browserexo-open --launch WebBrowseröffne Dateimanagerexo-open --launch FileManageröffne Terminalexo-open --launch TerminalEmulatoröffne Bilderxdg-open ~/Bilderöffne Musikxdg-open ~/Musiköffne Dokumentexdg-open ~/Dokumenteöffne Downloadsxdg-open ~/Downloadskopierenxdotool key "Ctrl+c"einfügenxdotool key "Ctrl+v"ausschneidenxdotool key "Ctrl+x"googlegoogle/google.shWikipediawikipedia/wikipedia.shyoutubeyoutube/youtube.shMailprogramm öffnenexo-open --launch MailReader;wie ist das Wetterweather/weather.sh
--------------------------------------------------------------------------------
/config/en_EN/default.xml:
--------------------------------------------------------------------------------
1 |
2 | what timetime power levelpower how many batterypower close windowxdotool key "Alt+F4" hide windowxdotool key "Alt+F9" switch windowxdotool key "Alt+Tab" other windowxdotool key "Alt+Tab" returnxdotool key "Return" returnxdotool key "Return" tabulationxdotool key "Tab" menuxdotool key "Alt+F1" show menuxdotool key "Alt+F1" open web browserexo-open --launch WebBrowser open web browserexo-open --launch WebBrowser open file managerexo-open --launch FileManager open terminalexo-open --launch TerminalEmulator open picturesxdg-open ~/Images open musicsxdg-open ~/Music open documentsxdg-open ~/Documents open downloadsxdg-open ~/Downloads copyxdotool key "Ctrl+c" pastexdotool key "Ctrl+v" cutxdotool key "Ctrl+x" googlegoogle.shgoogle 1meaningmeaning.pymeaning 1weather inweather.sh in 1wikipediawikipedia.shwikipedia 1youtubeyoutube.shyoutube 1
3 |
--------------------------------------------------------------------------------
/config/es_ES/default.xml:
--------------------------------------------------------------------------------
1 |
2 | qué hora eshora cuál nivel bateríabateria cantidad batería quedabateria cerrar ventanaxdotool key "Alt+F4" minimizar ventanaxdotool key "Alt+F9" cambiar ventanaxdotool key "Alt+Tab" entrarxdotool key "Return" entradaxdotool key "Return" tabulaciónxdotool key "Tab" menúxdotool key "Alt+F1" muestra menúxdotool key "Alt+F1" abre navegadorexo-open --launch WebBrowser abre el explorador archivosexo-open --launch FileManager abre consolaexo-open --launch TerminalEmulator abre fotosxdg-open ~/Imagenes abre músicaxdg-open ~/Música abre documentosxdg-open ~/Documentos copiaxdotool key "Ctrl+c" copiarxdotool key "Ctrl+c" pastarxdotool key "Ctrl+v" googlegoogle.shgoogle 1significadomeaning.pysignificafo 1tiempo enweather.sh en 1wikipediawikipedia.shwikipedia 1youtubeyoutube.shyoutube 1
3 |
--------------------------------------------------------------------------------
/config/fr_FR/default.xml:
--------------------------------------------------------------------------------
1 |
2 | quelle heureheure quel niveau batteriebatterie combien batterie restebatterie fermer fenêtrexdotool key "Alt+F4" réduire fenêtrexdotool key "Alt+F9" changer fenêtrexdotool key "Alt+Tab" change fenêtrexdotool key "Alt+Tab" entrerxdotool key "Return" entréexdotool key "Return" tabulationxdotool key "Tab" menuxdotool key "Alt+F1" montre menuxdotool key "Alt+F1" ouvre navigateurexo-open --launch WebBrowser ouvrir navigateurexo-open --launch WebBrowser ouvre navigateur fichierexo-open --launch FileManager ouvre consoleexo-open --launch TerminalEmulator ouvre imagesxdg-open ~/Images ouvre musiquexdg-open ~/Musique ouvre documentsxdg-open ~/Documents ouvre téléchargementsxdg-open ~/Téléchargements copierxdotool key "Ctrl+c" collerxdotool key "Ctrl+v" couperxdotool key "Ctrl+x" googlegoogle.shgoogle 1définitionmeaning.pydefinition 1météoweather.sh a 1wikipédiawikipedia.shwikipedia 1youtubeyoutube.shyoutube 1
3 |
--------------------------------------------------------------------------------
/config/it_IT/default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | orario
5 | orario
6 |
7 |
8 |
9 |
10 | stato batteria
11 | batteria
12 |
13 |
14 |
15 |
16 | quanta batteria
17 | batteria
18 |
19 |
20 |
21 |
22 | chiudi finestra
23 | xdotool key "Alt+F4"
24 |
25 |
26 |
27 |
28 | nascondi finestra
29 | xdotool key "Alt+F9"
30 |
31 |
32 |
33 |
34 | cambia finestra
35 | xdotool key "Alt+Tab"
36 |
37 |
38 |
39 |
40 | altra finestra
41 | xdotool key "Alt+Tab"
42 |
43 |
44 |
45 |
46 | invia
47 | xdotool key "Return"
48 |
49 |
50 |
51 |
52 | invio
53 | xdotool key "Return"
54 |
55 |
56 |
57 |
58 | tab
59 | xdotool key "Tab"
60 |
61 |
62 |
63 |
64 | menu
65 | xdotool key "Alt+F1"
66 |
67 |
68 |
69 |
70 | apri menu
71 | xdotool key "Alt+F1"
72 |
73 |
74 |
75 |
76 | apri browser
77 | exo-open --launch WebBrowser
78 |
79 |
80 |
81 |
82 | apri internet
83 | exo-open --launch WebBrowser
84 |
85 |
86 |
87 |
88 | apri file manager
89 | exo-open --launch FileManager
90 |
91 |
92 |
93 |
94 | apri terminale
95 | exo-open --launch TerminalEmulator
96 |
97 |
98 |
99 |
100 | apri immagini
101 | xdg-open ~/Immagini
102 |
103 |
104 |
105 |
106 | apri musica
107 | xdg-open ~/Music
108 |
109 |
110 |
111 |
112 | apri documenti
113 | xdg-open ~/Documenti
114 |
115 |
116 |
117 |
118 | apri download
119 | xdg-open ~/Downloads
120 |
121 |
122 |
123 |
124 | copia
125 | xdotool key "Ctrl+c"
126 |
127 |
128 |
129 |
130 | incolla
131 | xdotool key "Ctrl+v"
132 |
133 |
134 |
135 |
136 | taglia
137 | xdotool key "Ctrl+x"
138 |
139 |
140 |
141 |
142 | google
143 | google.sh
144 | google
145 | 1
146 |
147 |
148 | meaning
149 | meaning.py
150 | meaning
151 | 1
152 |
153 |
154 | weather in
155 | weather.sh
156 | in
157 | 1
158 |
159 |
160 | wikipedia
161 | wikipedia.sh
162 | wikipedia
163 | 1
164 |
165 |
166 | youtube
167 | youtube.sh
168 | youtube
169 | 1
170 |
171 |
--------------------------------------------------------------------------------
/config/nl_NL/default.xml:
--------------------------------------------------------------------------------
1 | open mail lezerexo-open --launch MailReader tijdtijd Batterijstatusbatterij Oplaadstatusbatterij Venster sluitenxdotool key "Alt+F4" Venster verbergenxdotool key "Alt+F9" Venster wisselenxdotool key "Alt+Tab" volgend vensterxdotool key "Alt+Tab" Volgende regelxdotool key "Return" Enterxdotool key "Return" Tabtoetsxdotool key "Tab" Menuxdotool key "Alt+F1" toon Menuxdotool key "Alt+F1" open Browserexo-open --launch WebBrowser open bestandsmanagerexo-open --launch FileManager open Terminalexo-open --launch TerminalEmulator open afbeeldingenxdg-open ~/Afbeeldingen open Muziekxdg-open ~/Muziek open Documentenxdg-open ~/Documenten open Downloadsxdg-open ~/Downloads kopiërenxdotool key "Ctrl+c" plakkenxdotool key "Ctrl+v" knippenxdotool key "Ctrl+x" googlegoogle.sh Wikipediawikipedia.sh youtubeyoutube.sh Mailprogramma openenexo-open --launch MailReader; Hoe is het weerweather.sh
2 |
--------------------------------------------------------------------------------
/config/pt_BR/default.xml:
--------------------------------------------------------------------------------
1 |
2 | que horas sãohora nível de bateriabateria bateria restantebateria fechar janelaxdotool key "Alt+F4" minimizar janelaxdotool key "Alt+F9" mudar janelaxdotool key "Alt+Tab" outra janelaxdotool key "Alt+Tab" entrarxdotool key "Return" entradaxdotool key "Return" tabulaçãoxdotool key "Tab" menuxdotool key "Alt+F1" mostrar menuxdotool key "Alt+F1" abrir navegadorexo-open --launch WebBrowser abrir navegadorexo-open --launch WebBrowser abrir gerenciador de arquivosexo-open --launch FileManager abrir terminalexe-open --launch TerminalEmulator abrir imagensxdg-open ~/Imagens abrir músicaxdg-open ~/Música abrir Documentosxdg-open ~/Documentos abrir downloadsxdg-open ~/Downloads copiarxdotool key "Ctrl+c" colarxdotool key "Ctrl+v" cortarxdotool key "Ctrl+x" googlegoogle.shgoogle 1meaningmeaning.py 1weather inweather.sh in 1 name="modules">wikipediawikipedia.shwikipedia 1youtubeyoutube.shyoutube 1
3 |
--------------------------------------------------------------------------------
/config/pt_PT/default.xml:
--------------------------------------------------------------------------------
1 |
2 | que horas sãohora nível de bateriabateria bateria restantebateria fechar janelaxdotool key "Alt+F4" minimizar janelaxdotool key "Alt+F9" mudar janelaxdotool key "Alt+Tab" outra janelaxdotool key "Alt+Tab" entrarxdotool key "Return" entradaxdotool key "Return" tabulaçãoxdotool key "Tab" menuxdotool key "Alt+F1" mostrar menuxdotool key "Alt+F1" abrir navegadorexo-open --launch WebBrowser abrir navegadorexo-open --launch WebBrowser abrir gestor de ficheirosexo-open --launch FileManager abrir terminalexe-open --launch TerminalEmulator abrir imagensxdg-open ~/Imagens abrir músicaxdg-open ~/Música abrir Documentosxdg-open ~/Documentos abrir transferênciasxdg-open ~/Transferências copiarxdotool key "Ctrl+c" colarxdotool key "Ctrl+v" cortarxdotool key "Ctrl+x" googlegoogle.shgoogle 1meaningmeaning.py 1weather inweather.sh in 1 name="modules">wikipediawikipedia.shwikipedia 1youtubeyoutube.shyoutube 1
3 |
--------------------------------------------------------------------------------
/config/yue_Hant/default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 時間
5 | 時間
6 |
7 |
8 |
9 |
10 | 時辰
11 | 時間
12 |
13 |
14 |
15 |
16 | 咩時辰
17 | 時間
18 |
19 |
20 |
21 |
22 | 幾點
23 | 時間
24 |
25 |
26 |
27 |
28 | 而家幾點
29 | 時間
30 |
31 |
32 |
33 |
34 | 而家幾多點鐘
35 | 時間
36 |
37 |
38 |
39 |
40 | 電源
41 | 電源
42 |
43 |
44 |
45 |
46 | 電池
47 | 電源
48 |
49 |
50 |
51 |
52 | 電量
53 | 電源
54 |
55 |
56 |
57 |
58 | 剪貼簿
59 | 剪貼簿
60 |
61 |
62 |
63 |
64 | 開始口述
65 | 口述模式
66 |
67 |
68 |
69 |
70 | 口述開始
71 | 口述模式
72 |
73 |
74 |
75 |
76 | 結束口述
77 | 離開口述模式
78 |
79 |
80 |
81 |
82 | 口述結束
83 | 離開口述模式
84 |
85 |
86 |
87 |
88 | 關閉視窗
89 | xdotool key "Alt+F4"
90 |
91 |
92 |
93 |
94 | 隱藏視窗
95 | xdotool key "Alt+F9"
96 |
97 |
98 |
99 |
100 | 切換視窗
101 | xdotool key "Alt+Tab"
102 |
103 |
104 |
105 |
106 | 其他視窗
107 | xdotool key "Alt+Tab"
108 |
109 |
110 |
111 |
112 | Enter
113 | xdotool key "Return"
114 |
115 |
116 |
117 |
118 | 輸入
119 | xdotool key "Return"
120 |
121 |
122 |
123 |
124 | 回車
125 | xdotool key "Return"
126 |
127 |
128 |
129 |
130 | Tab
131 | xdotool key "Tab"
132 |
133 |
134 |
135 |
136 | 選單
137 | xdotool key "Alt+F1"
138 |
139 |
140 |
141 |
142 | 顯示選單
143 | xdotool key "Alt+F1"
144 |
145 |
146 |
147 |
148 | 開啟瀏覽器
149 | exo-open --launch WebBrowser
150 |
151 |
152 |
153 |
154 | 閱讀郵件
155 | exo-open --launch MailReader;
156 |
157 |
158 |
159 |
160 | 開啟檔案總管
161 | exo-open --launch FileManager
162 |
163 |
164 |
165 |
166 | 開啟終端機
167 | exo-open --launch TerminalEmulator
168 |
169 |
170 |
171 |
172 | 開啟圖片
173 | xdg-open ~/圖片
174 |
175 |
176 |
177 |
178 | 開啟音樂
179 | xdg-open ~/音樂
180 |
181 |
182 |
183 |
184 | 開啟文件
185 | xdg-open ~/文件
186 |
187 |
188 |
189 |
190 | 開啟下載
191 | xdg-open ~/下載
192 |
193 |
194 |
195 |
196 | 複製
197 | xdotool key "Ctrl+c"
198 |
199 |
200 |
201 |
202 | 貼上
203 | xdotool key "Ctrl+v"
204 |
205 |
206 |
207 |
208 | 剪下
209 | xdotool key "Ctrl+x"
210 |
211 |
212 |
213 |
214 | google
215 | google.sh
216 | google
217 | 1
218 |
219 |
220 | 搜尋
221 | google.sh
222 | 搜尋
223 | 1
224 |
225 |
226 | 瀏覽
227 | goto.py
228 | 瀏覽
229 |
230 |
231 |
232 | 前往
233 | goto.py
234 | 前往
235 |
236 |
237 |
238 | 定義
239 | meaning.py
240 | 定義
241 | 1
242 |
243 |
244 | wiki
245 | wikipedia.sh
246 | wiki
247 | 1
248 |
249 |
250 | 維基百科
251 | wikipedia.sh
252 | 維基百科
253 | 1
254 |
255 |
256 | youtube
257 | youtube.sh
258 | youtube
259 | 1
260 |
261 |
262 | 天氣
263 | weather.sh
264 | 天氣
265 | 1
266 |
267 |
268 | 咩天氣
269 | weather.sh
270 | 天氣
271 | 1
272 |
273 |
274 | 天氣點
275 | weather.sh
276 | 天氣
277 | 1
278 |
279 |
280 | 天氣如何
281 | weather.sh
282 | 天氣
283 | 1
284 |
285 |
286 |
--------------------------------------------------------------------------------
/config/zh_Hant/default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 時間
5 | 時間
6 |
7 |
8 |
9 |
10 | 什麼時間
11 | 時間
12 |
13 |
14 |
15 |
16 | 時辰
17 | 時間
18 |
19 |
20 |
21 |
22 | 什麼時辰
23 | 時間
24 |
25 |
26 |
27 |
28 | 幾點鐘
29 | 時間
30 |
31 |
32 |
33 |
34 | 現在幾點鐘
35 | 時間
36 |
37 |
38 |
39 |
40 | 電源
41 | 電源
42 |
43 |
44 |
45 |
46 | 電池
47 | 電源
48 |
49 |
50 |
51 |
52 | 電量
53 | 電源
54 |
55 |
56 |
57 |
58 | 剪貼簿
59 | 剪貼簿
60 |
61 |
62 |
63 |
64 | 開始口述
65 | 口述模式
66 |
67 |
68 |
69 |
70 | 口述開始
71 | 口述模式
72 |
73 |
74 |
75 |
76 | 結束口述
77 | 離開口述模式
78 |
79 |
80 |
81 |
82 | 口述結束
83 | 離開口述模式
84 |
85 |
86 |
87 |
88 | 關閉視窗
89 | xdotool key "Alt+F4"
90 |
91 |
92 |
93 |
94 | 隱藏視窗
95 | xdotool key "Alt+F9"
96 |
97 |
98 |
99 |
100 | 切換視窗
101 | xdotool key "Alt+Tab"
102 |
103 |
104 |
105 |
106 | 其他視窗
107 | xdotool key "Alt+Tab"
108 |
109 |
110 |
111 |
112 | 輸入
113 | xdotool key "Return"
114 |
115 |
116 |
117 |
118 | Tab
119 | xdotool key "Tab"
120 |
121 |
122 |
123 |
124 | 選單
125 | xdotool key "Alt+F1"
126 |
127 |
128 |
129 |
130 | 顯示選單
131 | xdotool key "Alt+F1"
132 |
133 |
134 |
135 |
136 | 開啟瀏覽器
137 | exo-open --launch WebBrowser
138 |
139 |
140 |
141 |
142 | 閱讀郵件
143 | exo-open --launch MailReader;
144 |
145 |
146 |
147 |
148 | 開啟檔案總管
149 | exo-open --launch FileManager
150 |
151 |
152 |
153 |
154 | 開啟終端機
155 | exo-open --launch TerminalEmulator
156 |
157 |
158 |
159 |
160 | 開啟圖片
161 | xdg-open ~/圖片
162 |
163 |
164 |
165 |
166 | 開啟音樂
167 | xdg-open ~/音樂
168 |
169 |
170 |
171 |
172 | 開啟文件
173 | xdg-open ~/文件
174 |
175 |
176 |
177 |
178 | 開啟下載
179 | xdg-open ~/下載
180 |
181 |
182 |
183 |
184 | 複製
185 | xdotool key "Ctrl+c"
186 |
187 |
188 |
189 |
190 | 貼上
191 | xdotool key "Ctrl+v"
192 |
193 |
194 |
195 |
196 | 剪下
197 | xdotool key "Ctrl+x"
198 |
199 |
200 |
201 |
202 | google
203 | google.sh
204 | google
205 | 1
206 |
207 |
208 | 搜尋
209 | google.sh
210 | 搜尋
211 | 1
212 |
213 |
214 | 瀏覽
215 | goto.py
216 | 瀏覽
217 |
218 |
219 |
220 | 前往
221 | goto.py
222 | 前往
223 |
224 |
225 |
226 | 定義
227 | meaning.py
228 | 定義
229 | 1
230 |
231 |
232 | wiki
233 | wikipedia.sh
234 | wiki
235 | 1
236 |
237 |
238 | 維基百科
239 | wikipedia.sh
240 | 維基百科
241 | 1
242 |
243 |
244 | youtube
245 | youtube.sh
246 | youtube
247 | 1
248 |
249 |
250 | 天氣
251 | weather.sh
252 | 天氣
253 | 1
254 |
255 |
256 | 天氣怎麼樣
257 | weather.sh
258 | 天氣
259 | 1
260 |
261 |
262 | 天氣如何
263 | weather.sh
264 | 天氣
265 | 1
266 |
267 |
268 |
--------------------------------------------------------------------------------
/convert.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | PID=$1
3 | rate=$(sox --i /tmp/voix_$PID.flac | grep "Sample Rate" | awk '{print $4}')
4 | if [ $rate != "16000" ]; then
5 | sox /tmp/voix_"$PID".flac /tmp/voix_"$PID"_.flac rate 16k
6 | mv /tmp/voix_"$PID"_.flac /tmp/voix_"$PID".flac
7 | fi
8 |
9 | exit 0
10 |
--------------------------------------------------------------------------------
/google2ubuntu-gui.desktop:
--------------------------------------------------------------------------------
1 | [Desktop Entry]
2 | Type=Application
3 | Encoding=UTF-8
4 | Name=google2ubuntu-manager
5 | GenericName=google2ubuntu-manager
6 | Comment=google2ubuntu manager
7 | Icon=/usr/share/google2ubuntu/resources/icons.png
8 | Exec=/usr/share/google2ubuntu/google2ubuntu-manager.py
9 | Terminal=false
10 | StartupNotify=false
11 | Categories=Application
12 |
--------------------------------------------------------------------------------
/google2ubuntu-manager.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 | from gi.repository import Gtk
4 | from gi.repository import Notify
5 | from gi.repository import Gdk
6 | from gi.repository import Gio
7 | from os.path import expanduser
8 | import os
9 | import sys
10 | import subprocess
11 | import gettext
12 | import xml.etree.ElementTree as ET
13 |
14 | sys.path.append(os.path.dirname(os.path.abspath(__file__))+'/librairy')
15 | from MainWindow import *
16 | from localehelper import LocaleHelper
17 |
18 | localeHelper = LocaleHelper()
19 | lang = localeHelper.getLocale()
20 |
21 | t=gettext.translation('google2ubuntu',os.path.dirname(os.path.abspath(__file__))+'/i18n/',languages=[lang])
22 | t.install()
23 |
24 | #keep the old way for the moment
25 | #gettext.install('google2ubuntu',os.path.dirname(os.path.abspath(__file__))+'/i18n/')
26 |
27 | # application principale
28 | class MyApplication(Gtk.Application):
29 | def __init__(self):
30 | Gtk.Application.__init__(self)
31 |
32 | def do_activate(self):
33 | win = MainWindow(self)
34 | win.show_all()
35 | localeHelper = LocaleHelper()
36 | lang = localeHelper.getLocale()
37 |
38 | t=gettext.translation('google2ubuntu',os.path.dirname(os.path.abspath(__file__))+'/i18n/',languages=[lang])
39 | t.install()
40 |
41 | def do_startup(self):
42 | Gtk.Application.do_startup(self)
43 |
44 |
45 | app = MyApplication()
46 | exit_status = app.run(sys.argv)
47 | sys.exit(exit_status)
48 |
--------------------------------------------------------------------------------
/google2ubuntu.1.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/google2ubuntu.1.gz
--------------------------------------------------------------------------------
/google2ubuntu.desktop:
--------------------------------------------------------------------------------
1 | [Desktop Entry]
2 | Type=Application
3 | Encoding=UTF-8
4 | Name=google2ubuntu
5 | GenericName=google2ubuntu
6 | Comment=Utiliser la reconnaissance vocale de Google
7 | Icon=/usr/share/google2ubuntu/resources/icons.png
8 | Exec=/usr/share/google2ubuntu/google2ubuntu.py
9 | Terminal=false
10 | StartupNotify=false
11 | Categories=Application
12 |
--------------------------------------------------------------------------------
/google2ubuntu.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 | from subprocess import *
4 | from os.path import expanduser
5 | import sys, subprocess, os, json, urllib2, unicodedata, time, gettext, locale
6 |
7 | sys.path.append(os.path.dirname(os.path.abspath(__file__))+'/librairy')
8 | from interface import interface
9 | from localehelper import LocaleHelper
10 |
11 | localeHelper = LocaleHelper()
12 | lang = localeHelper.getLocale()
13 |
14 | t=gettext.translation('google2ubuntu',os.path.dirname(os.path.abspath(__file__))+'/i18n/',languages=[lang])
15 | t.install()
16 |
17 |
18 | # pause media player if necessary
19 | config = expanduser('~')+'/.config/google2ubuntu/google2ubuntu.conf'
20 | paused = False
21 | haskey = False
22 | key = ''
23 |
24 | try:
25 | with open(config,"r") as f:
26 | for line in f.readlines():
27 | line = line.strip('\n')
28 | field = line.split('=')
29 | if field[0] == 'pause' and field[1].replace('"','') != '':
30 | os.system(field[1].replace('"','')+' &')
31 | paused = True
32 | elif field[0] == 'play':
33 | play_command = field[1].replace('"','')
34 | elif field[0] == 'key' and field[1].replace('"','') != '':
35 | key = field[1].replace('"','')
36 | haskey = True
37 |
38 | except Exception:
39 | print 'Error reading google2ubuntu.conf file'
40 |
41 | if haskey == True:
42 | # launch the recognition
43 | g2u = interface(key)
44 |
45 | # restore media player state
46 | if paused:
47 | os.system(play_command+' &')
48 |
--------------------------------------------------------------------------------
/i18n/de_DE/LC_MESSAGES/google2ubuntu.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/i18n/de_DE/LC_MESSAGES/google2ubuntu.mo
--------------------------------------------------------------------------------
/i18n/de_DE/LC_MESSAGES/google2ubuntu.po:
--------------------------------------------------------------------------------
1 | # English translations for google package.
2 | # Copyright (C) 2014 THE google'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the google package.
4 | # Adrian Stöckl , 2014.
5 | #
6 | msgid ""
7 | msgstr ""
8 | "Project-Id-Version: google 2ubuntu-master\n"
9 | "Report-Msgid-Bugs-To: \n"
10 | "POT-Creation-Date: 2014-02-13 13:54+0100\n"
11 | "PO-Revision-Date: 2014-02-06 09:52+0100\n"
12 | "Last-Translator: Adrian Stöckl \n"
13 | "Language-Team: Deutsch\n"
14 | "Language: de_DE\n"
15 | "MIME-Version: 1.0\n"
16 | "Content-Type: text/plain; charset=UTF-8\n"
17 | "Content-Transfer-Encoding: 8bit\n"
18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
19 |
20 | #: librairy/add_window.py:41
21 | msgid "list of commands"
22 | msgstr "Liste der Kommandos"
23 |
24 | #: librairy/add_window.py:54
25 | msgid "Keys"
26 | msgstr "Schlüssel"
27 |
28 | #: librairy/add_window.py:70
29 | msgid "Commands"
30 | msgstr "Kommandos"
31 |
32 | #: librairy/add_window.py:78 librairy/osd.py:35 librairy/osd.py:40
33 | msgid "Ready"
34 | msgstr "Bereit"
35 |
36 | #: librairy/add_window.py:145 librairy/add_window.py:444
37 | #: librairy/add_window.py:446 librairy/add_window.py:476
38 | msgid "key sentence"
39 | msgstr "Schlüssel-Satz"
40 |
41 | #: librairy/add_window.py:145 librairy/add_window.py:205
42 | #: librairy/add_window.py:444 librairy/stringParser.py:75
43 | msgid "external"
44 | msgstr "extern"
45 |
46 | #: librairy/add_window.py:210 librairy/add_window.py:411
47 | #: librairy/add_window.py:415 librairy/add_window.py:426
48 | #: librairy/add_window.py:548 librairy/stringParser.py:66
49 | msgid "modules"
50 | msgstr "module"
51 |
52 | #: librairy/add_window.py:242
53 | msgid "External commands"
54 | msgstr "externe Kommandos"
55 |
56 | #: librairy/add_window.py:246
57 | msgid "Internal commands"
58 | msgstr "interne Kommandos"
59 |
60 | #: librairy/add_window.py:250
61 | msgid "Module"
62 | msgstr "Modul"
63 |
64 | #: librairy/add_window.py:257
65 | msgid "Add"
66 | msgstr "Hinzufügen"
67 |
68 | #: librairy/add_window.py:267
69 | msgid "Add a new command"
70 | msgstr "Füge neues Kommando hinzu"
71 |
72 | #: librairy/add_window.py:272 librairy/add_window.py:284
73 | #: librairy/add_window.py:505
74 | msgid "Remove"
75 | msgstr "Entfernen"
76 |
77 | #: librairy/add_window.py:274 librairy/add_window.py:294
78 | msgid "Remove this command"
79 | msgstr "Entferne dieses Kommando"
80 |
81 | #: librairy/add_window.py:277
82 | msgid "Clean up"
83 | msgstr "Aufräumen"
84 |
85 | #: librairy/add_window.py:279 librairy/add_window.py:526
86 | msgid "Remove all commands"
87 | msgstr "Entferne alle Kommandos"
88 |
89 | #: librairy/add_window.py:299
90 | msgid "Try"
91 | msgstr "Versuche"
92 |
93 | #: librairy/add_window.py:302
94 | msgid "Try this command"
95 | msgstr "Versuche dieses Kommando"
96 |
97 | #: librairy/add_window.py:309 librairy/add_window.py:312
98 | #: librairy/ArgsWindow.py:27
99 | msgid "Module setup"
100 | msgstr "Modulsetup"
101 |
102 | #: librairy/add_window.py:318
103 | msgid "Setup"
104 | msgstr "Setup"
105 |
106 | #: librairy/add_window.py:322
107 | msgid "Open setup window"
108 | msgstr "Setup Fenster öffnen"
109 |
110 | #: librairy/add_window.py:339
111 | msgid "Help"
112 | msgstr "Hilfe"
113 |
114 | #: librairy/add_window.py:343
115 | msgid "Display help message"
116 | msgstr "Zeige Hilfe"
117 |
118 | #: librairy/add_window.py:363
119 | msgid "All"
120 | msgstr "alles"
121 |
122 | #: librairy/add_window.py:364
123 | msgid "External"
124 | msgstr "extern"
125 |
126 | #: librairy/add_window.py:365
127 | msgid "Internal"
128 | msgstr "intern"
129 |
130 | #: librairy/add_window.py:366
131 | msgid "Modules"
132 | msgstr "Module"
133 |
134 | #: librairy/add_window.py:370
135 | msgid "What type of command to add"
136 | msgstr "Welcher Typ von Kommando soll hinzugefügt werden"
137 |
138 | #: librairy/add_window.py:411 librairy/add_window.py:413
139 | #: librairy/add_window.py:446 librairy/add_window.py:548
140 | #: librairy/stringParser.py:28 librairy/stringParser.py:71
141 | msgid "internal"
142 | msgstr "intern"
143 |
144 | #: librairy/add_window.py:444
145 | msgid "your command"
146 | msgstr "ihr Kommando"
147 |
148 | #: librairy/add_window.py:446
149 | msgid "word"
150 | msgstr "Wort"
151 |
152 | #: librairy/add_window.py:454
153 | msgid "Error, you must choose a file"
154 | msgstr "Fehler, wählen sie eine Datei"
155 |
156 | #: librairy/add_window.py:485
157 | msgid "Error, args file missing"
158 | msgstr "Fehler, args fehlen"
159 |
160 | #: librairy/add_window.py:635
161 | msgid "Save commands"
162 | msgstr "Speichere Kommandos"
163 |
164 | #: librairy/ArgsWindow.py:35
165 | msgid "Linking word"
166 | msgstr "Verbinde Wort"
167 |
168 | #: librairy/ArgsWindow.py:39
169 | msgid "Word to separate call and parameter"
170 | msgstr "Wort um Aufruf und Parameter zu trennen"
171 |
172 | #: librairy/ArgsWindow.py:41 librairy/ArgsWindow.py:42
173 | msgid "Replace space by plus"
174 | msgstr "Ersetze Leerzeichen mit Plus"
175 |
176 | #: librairy/ArgsWindow.py:45 librairy/ArgsWindow.py:46
177 | msgid "Go"
178 | msgstr "Los"
179 |
180 | #: librairy/basicCommands.py:28
181 | msgid "time"
182 | msgstr "Zeit"
183 |
184 | #: librairy/basicCommands.py:30
185 | msgid "power"
186 | msgstr "Spannung"
187 |
188 | #: librairy/basicCommands.py:32
189 | msgid "clipboard"
190 | msgstr "Ablage"
191 |
192 | #: librairy/basicCommands.py:34
193 | msgid "dictation mode"
194 | msgstr "Diktatmodus"
195 |
196 | #: librairy/basicCommands.py:37 librairy/stringParser.py:28
197 | msgid "exit dictation mode"
198 | msgstr "Diktatmodus verlassen"
199 |
200 | #: librairy/basicCommands.py:55
201 | msgid "Nothing in the clipboard"
202 | msgstr "Nichts in der Ablage"
203 |
204 | #: librairy/basicCommands.py:66
205 | msgid "it is"
206 | msgstr "es ist"
207 |
208 | #: librairy/basicCommands.py:66
209 | msgid "hour"
210 | msgstr "Stunde"
211 |
212 | #: librairy/basicCommands.py:66
213 | msgid "minute"
214 | msgstr "Minute"
215 |
216 | #: librairy/basicCommands.py:85
217 | msgid "Charging"
218 | msgstr "Lädt"
219 |
220 | #: librairy/basicCommands.py:85
221 | msgid "before charging"
222 | msgstr "vor dem laden"
223 |
224 | #: librairy/basicCommands.py:87
225 | msgid "Discharging"
226 | msgstr "Entlädt"
227 |
228 | #: librairy/basicCommands.py:87
229 | msgid "remaining"
230 | msgstr "verbleibend"
231 |
232 | #: librairy/basicCommands.py:89
233 | msgid "battery is not plugged"
234 | msgstr "Batterie ist nicht eingesteckt"
235 |
236 | #: librairy/HelpWindow.py:28
237 | msgid "Help Google2Ubuntu"
238 | msgstr "Hilfe Google2Ubuntu"
239 |
240 | #: librairy/interface.py:94
241 | msgid "unable to translate"
242 | msgstr "übersetzung nicht möglich"
243 |
244 | #: librairy/moduleSelection.py:18
245 | msgid "Choose a file"
246 | msgstr "Wähle eine Datei"
247 |
248 | #: librairy/osd.py:49
249 | msgid "Error"
250 | msgstr "Fehler"
251 |
252 | #: librairy/osd.py:61
253 | msgid "Recognition result"
254 | msgstr "Erkanntes Ergebnis"
255 |
256 | #: librairy/osd.py:71
257 | msgid "Calling command"
258 | msgstr "Aufrufendes Kommando"
259 |
260 | #: librairy/osd.py:78
261 | msgid "Information"
262 | msgstr "Information"
263 |
264 | #: librairy/osd.py:84
265 | msgid "Performing recording"
266 | msgstr "Führe Aufnahme aus"
267 |
268 | #: librairy/osd.py:85
269 | msgid "Please speak"
270 | msgstr "Sprechen sie bitte"
271 |
272 | #: librairy/osd.py:95
273 | msgid "Done"
274 | msgstr "Fertig"
275 |
276 | #: librairy/SetupWindow.py:27
277 | msgid "Setup window"
278 | msgstr "Setupfenster"
279 |
280 | #: librairy/SetupWindow.py:82
281 | msgid "Select your language"
282 | msgstr "Wählen sie ihre Sprache"
283 |
284 | #: librairy/SetupWindow.py:85
285 | msgid "Set the recording time (seconds)"
286 | msgstr "Wählen sie die Aufnahmedauer"
287 |
288 | #: librairy/SetupWindow.py:88
289 | msgid "Set the music player's play command"
290 | msgstr "Wählen sie das Kommando zum abspielen von Musik"
291 |
292 | #: librairy/SetupWindow.py:91
293 | msgid "Set the music player's pause command"
294 | msgstr "Wählen sie das Kommando zum pausieren der Musik"
295 |
296 | #: librairy/SetupWindow.py:100
297 | msgid "Change the recording time"
298 | msgstr "Ändern sie die Aufnahmedauer"
299 |
300 | #: librairy/SetupWindow.py:104
301 | msgid "Set the play command"
302 | msgstr "Wählen sie das Play-Kommando"
303 |
304 | #: librairy/SetupWindow.py:109
305 | msgid "Set the pause command"
306 | msgstr "Wählen sie das Pause-Kommando"
307 |
308 | #: librairy/SetupWindow.py:174
309 | msgid "What language to choose"
310 | msgstr "Welche Sprache wählen sie"
311 |
312 | #: librairy/stringParser.py:84
313 | msgid "Setup file missing"
314 | msgstr "Setup-Datei fehlt"
315 |
316 | #: librairy/workWithModule.py:55
317 | msgid "you didn't say the linking word"
318 | msgstr "sie haben das Verbindungswort nicht gesagt"
319 |
320 | #: librairy/workWithModule.py:59
321 | msgid "args file missing"
322 | msgstr "args-Datei fehlt"
323 |
--------------------------------------------------------------------------------
/i18n/en_EN/LC_MESSAGES/google2ubuntu.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/i18n/en_EN/LC_MESSAGES/google2ubuntu.mo
--------------------------------------------------------------------------------
/i18n/en_EN/LC_MESSAGES/google2ubuntu.po:
--------------------------------------------------------------------------------
1 | # French translations for google package
2 | # Traductions françaises du paquet google.
3 | # Copyright (C) 2014 THE google'S COPYRIGHT HOLDER
4 | # This file is distributed under the same license as the google package.
5 | # benoit , 2014.
6 | #
7 | msgid ""
8 | msgstr ""
9 | "Project-Id-Version: google 2ubuntu\n"
10 | "Report-Msgid-Bugs-To: \n"
11 | "POT-Creation-Date: 2014-02-15 14:54+0100\n"
12 | "PO-Revision-Date: 2014-02-02 09:47+0100\n"
13 | "Last-Translator: benoit \n"
14 | "Language-Team: French\n"
15 | "Language: fr\n"
16 | "MIME-Version: 1.0\n"
17 | "Content-Type: text/plain; charset=UTF-8\n"
18 | "Content-Transfer-Encoding: 8bit\n"
19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n"
20 |
21 | #: listener.py:22
22 | msgid "ok start"
23 | msgstr "ok start"
24 |
25 | #: listener.py:76
26 | msgid "Cannot connect to Google Translate"
27 | msgstr "Cannot connect to Google Translate"
28 |
29 | #: listener.py:78
30 | msgid "Phrase parsing failed"
31 | msgstr "Phrase parsing failed"
32 |
33 | #: listener.py:80
34 | msgid "Error processing value returned by Google Translate"
35 | msgstr "Error processing value returned by Google Translate"
36 |
37 | #: librairy/add_window.py:44
38 | msgid "list of commands"
39 | msgstr "list of commands"
40 |
41 | #: librairy/add_window.py:57
42 | msgid "Keys"
43 | msgstr "Keys"
44 |
45 | #: librairy/add_window.py:73
46 | msgid "Commands"
47 | msgstr "Commands"
48 |
49 | #: librairy/add_window.py:81 librairy/osd.py:35 librairy/osd.py:40
50 | msgid "Ready"
51 | msgstr "Ready"
52 |
53 | #: librairy/add_window.py:153 librairy/add_window.py:504
54 | #: librairy/ArgsWindow.py:35 librairy/ArgsWindow.py:48
55 | #: librairy/externalWindow.py:20 librairy/internalWindow.py:22
56 | msgid "key sentence"
57 | msgstr "key sentence"
58 |
59 | #: librairy/add_window.py:153 librairy/add_window.py:217
60 | #: librairy/add_window.py:429 librairy/externalWindow.py:59
61 | #: librairy/stringParser.py:75
62 | msgid "external"
63 | msgstr "external"
64 |
65 | #: librairy/add_window.py:245
66 | msgid "External commands"
67 | msgstr "External commands"
68 |
69 | #: librairy/add_window.py:249
70 | msgid "Internal commands"
71 | msgstr "Internal commands"
72 |
73 | #: librairy/add_window.py:253
74 | msgid "Module"
75 | msgstr "Module"
76 |
77 | #: librairy/add_window.py:260
78 | msgid "Add"
79 | msgstr "Add"
80 |
81 | #: librairy/add_window.py:270
82 | msgid "Add a new command"
83 | msgstr "Add a new command"
84 |
85 | #: librairy/add_window.py:275 librairy/add_window.py:287
86 | #: librairy/add_window.py:540
87 | msgid "Remove"
88 | msgstr "Remove"
89 |
90 | #: librairy/add_window.py:277 librairy/add_window.py:297
91 | msgid "Remove this command"
92 | msgstr "Remove this command"
93 |
94 | #: librairy/add_window.py:280
95 | msgid "Clean up"
96 | msgstr "Clean up"
97 |
98 | #: librairy/add_window.py:282 librairy/add_window.py:561
99 | msgid "Remove all commands"
100 | msgstr "Remove all commands"
101 |
102 | #: librairy/add_window.py:302
103 | msgid "Try"
104 | msgstr "Try"
105 |
106 | #: librairy/add_window.py:305
107 | msgid "Try this command"
108 | msgstr "Try this command"
109 |
110 | #: librairy/add_window.py:312
111 | msgid "Edit"
112 | msgstr "Edit"
113 |
114 | #: librairy/add_window.py:315
115 | msgid "Edit this command"
116 | msgstr "Edit this command"
117 |
118 | #: librairy/add_window.py:337
119 | msgid "Help"
120 | msgstr "Help"
121 |
122 | #: librairy/add_window.py:341
123 | msgid "Display help message"
124 | msgstr "Display help message"
125 |
126 | #: librairy/add_window.py:361
127 | msgid "All"
128 | msgstr "All"
129 |
130 | #: librairy/add_window.py:362
131 | msgid "External"
132 | msgstr "External"
133 |
134 | #: librairy/add_window.py:363
135 | msgid "Internal"
136 | msgstr "Internal"
137 |
138 | #: librairy/add_window.py:364
139 | msgid "Modules"
140 | msgstr "Modules"
141 |
142 | #: librairy/add_window.py:368
143 | msgid "What type of command to add"
144 | msgstr "What type of command to add"
145 |
146 | #: librairy/add_window.py:409 librairy/add_window.py:413
147 | #: librairy/add_window.py:425 librairy/add_window.py:583
148 | #: librairy/stringParser.py:66
149 | msgid "modules"
150 | msgstr "modules"
151 |
152 | #: librairy/add_window.py:409 librairy/add_window.py:411
153 | #: librairy/add_window.py:433 librairy/add_window.py:583
154 | #: librairy/internalWindow.py:60 librairy/stringParser.py:28
155 | #: librairy/stringParser.py:71
156 | msgid "internal"
157 | msgstr "internal"
158 |
159 | #: librairy/add_window.py:471
160 | msgid "Error, you must choose a file"
161 | msgstr "Error, you must choose a file"
162 |
163 | #: librairy/add_window.py:518
164 | msgid "Error, args file missing"
165 | msgstr "Error, args file missing"
166 |
167 | #: librairy/add_window.py:670
168 | msgid "Save commands"
169 | msgstr "Save commands"
170 |
171 | #: librairy/ArgsWindow.py:40
172 | msgid "Linking word"
173 | msgstr "Linking word"
174 |
175 | #: librairy/ArgsWindow.py:51
176 | msgid "Word to separate call and parameter"
177 | msgstr "Word to separate call and parameter"
178 |
179 | #: librairy/ArgsWindow.py:53 librairy/ArgsWindow.py:54
180 | msgid "Replace space by plus"
181 | msgstr "Replace space by plus"
182 |
183 | #: librairy/ArgsWindow.py:57 librairy/ArgsWindow.py:58
184 | msgid "Go"
185 | msgstr "Go"
186 |
187 | #: librairy/basicCommands.py:28 librairy/internalWindow.py:80
188 | #: librairy/internalWindow.py:81
189 | msgid "time"
190 | msgstr "time"
191 |
192 | #: librairy/basicCommands.py:30 librairy/internalWindow.py:82
193 | #: librairy/internalWindow.py:83
194 | msgid "power"
195 | msgstr "power"
196 |
197 | #: librairy/basicCommands.py:32 librairy/internalWindow.py:84
198 | #: librairy/internalWindow.py:85
199 | msgid "clipboard"
200 | msgstr "clipboard"
201 |
202 | #: librairy/basicCommands.py:34 librairy/internalWindow.py:86
203 | #: librairy/internalWindow.py:87
204 | msgid "dictation mode"
205 | msgstr "dictation mode"
206 |
207 | #: librairy/basicCommands.py:37 librairy/internalWindow.py:88
208 | #: librairy/internalWindow.py:89 librairy/stringParser.py:28
209 | msgid "exit dictation mode"
210 | msgstr "exit dictation mode"
211 |
212 | #: librairy/basicCommands.py:55
213 | msgid "Nothing in the clipboard"
214 | msgstr "Nothing in the clipboard"
215 |
216 | #: librairy/basicCommands.py:66
217 | msgid "it is"
218 | msgstr "it is"
219 |
220 | #: librairy/basicCommands.py:66
221 | msgid "hour"
222 | msgstr "hour"
223 |
224 | #: librairy/basicCommands.py:66
225 | msgid "minute"
226 | msgstr "minute"
227 |
228 | #: librairy/basicCommands.py:85
229 | msgid "Charging"
230 | msgstr "Charging"
231 |
232 | #: librairy/basicCommands.py:85
233 | msgid "before charging"
234 | msgstr "before charging"
235 |
236 | #: librairy/basicCommands.py:87
237 | msgid "Discharging"
238 | msgstr "Discharging"
239 |
240 | #: librairy/basicCommands.py:87
241 | msgid "remaining"
242 | msgstr "remaining"
243 |
244 | #: librairy/basicCommands.py:89
245 | msgid "battery is not plugged"
246 | msgstr "battery is not plugged"
247 |
248 | #: librairy/externalWindow.py:24 librairy/internalWindow.py:26
249 | msgid "your command"
250 | msgstr "your command"
251 |
252 | #: librairy/HelpWindow.py:28
253 | msgid "Help Google2Ubuntu"
254 | msgstr "Help Google2Ubuntu"
255 |
256 | #: librairy/interface.py:95
257 | msgid "unable to translate"
258 | msgstr "unable to translate"
259 |
260 | #: librairy/internalWindow.py:99
261 | msgid "Which internal command to choose"
262 | msgstr "Which internal command to choose"
263 |
264 | #: librairy/MainWindow.py:33
265 | msgid "Setup"
266 | msgstr "Setup"
267 |
268 | #: librairy/MainWindow.py:35
269 | msgid "Open setup window"
270 | msgstr "Open setup window"
271 |
272 | #: librairy/moduleSelection.py:18
273 | msgid "Choose a file"
274 | msgstr "Choose a file"
275 |
276 | #: librairy/osd.py:49
277 | msgid "Error"
278 | msgstr "Error"
279 |
280 | #: librairy/osd.py:61
281 | msgid "Recognition result"
282 | msgstr "Recognition result"
283 |
284 | #: librairy/osd.py:71
285 | msgid "Calling command"
286 | msgstr "Calling command"
287 |
288 | #: librairy/osd.py:78
289 | msgid "Information"
290 | msgstr "Information"
291 |
292 | #: librairy/osd.py:84
293 | msgid "Performing recording"
294 | msgstr "Performing recording"
295 |
296 | #: librairy/osd.py:85
297 | msgid "Please speak"
298 | msgstr "Please speak"
299 |
300 | #: librairy/osd.py:95
301 | msgid "Done"
302 | msgstr "Done"
303 |
304 | #: librairy/SetupWindow.py:27
305 | msgid "Select your language"
306 | msgstr "Select your language"
307 |
308 | #: librairy/SetupWindow.py:31
309 | msgid "Set the recording time (seconds)"
310 | msgstr "Set the recording time (seconds)"
311 |
312 | #: librairy/SetupWindow.py:34
313 | msgid "Set the music player's play command"
314 | msgstr "Set the music player's play command"
315 |
316 | #: librairy/SetupWindow.py:37
317 | msgid "Set the music player's pause command"
318 | msgstr "Set the music player's pause command"
319 |
320 | #: librairy/SetupWindow.py:40
321 | msgid "Hotword mode"
322 | msgstr "Hotword mode"
323 |
324 | #: librairy/SetupWindow.py:43
325 | msgid "Set the noise threshold"
326 | msgstr "Set the noise threshold"
327 |
328 | #: librairy/SetupWindow.py:46
329 | msgid "Set the hotword"
330 | msgstr "Set the hotword"
331 |
332 | #: librairy/SetupWindow.py:55
333 | msgid "Change the recording time"
334 | msgstr "Change the recording time"
335 |
336 | #: librairy/SetupWindow.py:59
337 | msgid "Set the play command"
338 | msgstr "Set the play command"
339 |
340 | #: librairy/SetupWindow.py:64
341 | msgid "Set the pause command"
342 | msgstr "Set the pause command"
343 |
344 | #: librairy/SetupWindow.py:72
345 | msgid "Put the hotword mode ON or OFF"
346 | msgstr "Put the hotword mode ON or OFF"
347 |
348 | #: librairy/SetupWindow.py:78
349 | #, python-format
350 | msgid "Set the sound level in % under which sound is considerated as noise"
351 | msgstr "Set the sound level in % under which sound is considerated as noise"
352 |
353 | #: librairy/SetupWindow.py:82
354 | msgid "Set the hotword to start effective recording"
355 | msgstr "Set the hotword to start effective recording"
356 |
357 | #: librairy/SetupWindow.py:216
358 | msgid "What language to choose"
359 | msgstr "What language to choose"
360 |
361 | #: librairy/stringParser.py:84
362 | msgid "Setup file missing"
363 | msgstr "Setup file missing"
364 |
365 | #: librairy/workWithModule.py:55
366 | msgid "you didn't say the linking word"
367 | msgstr "you didn't say th linking word"
368 |
369 | #: librairy/workWithModule.py:59
370 | msgid "args file missing"
371 | msgstr "args file missing"
372 |
373 | #~ msgid "Module setup"
374 | #~ msgstr "Module setup"
375 |
376 | #~ msgid "word"
377 | #~ msgstr "word"
378 |
379 | #~ msgid "Setup window"
380 | #~ msgstr "Setup window"
381 |
382 | #~ msgid "Set the music palyer's pause command"
383 | #~ msgstr "Set the music player's pause command"
384 |
385 | #~ msgid "between"
386 | #~ msgstr "between"
387 |
388 | #~ msgid "and"
389 | #~ msgstr "and"
390 |
391 | #~ msgid "Performing recognition"
392 | #~ msgstr "Performing recognition"
393 |
394 | #~ msgid "Please wait"
395 | #~ msgstr "Please wait"
396 |
--------------------------------------------------------------------------------
/i18n/es_ES/LC_MESSAGES/google2ubuntu.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/i18n/es_ES/LC_MESSAGES/google2ubuntu.mo
--------------------------------------------------------------------------------
/i18n/es_ES/LC_MESSAGES/google2ubuntu.po:
--------------------------------------------------------------------------------
1 | # French translations for google package
2 | # Traductions françaises du paquet google.
3 | # Copyright (C) 2014 THE google'S COPYRIGHT HOLDER
4 | # This file is distributed under the same license as the google package.
5 | # benoit , 2014.
6 | #
7 | msgid ""
8 | msgstr ""
9 | "Project-Id-Version: google 2ubuntu\n"
10 | "Report-Msgid-Bugs-To: \n"
11 | "POT-Creation-Date: 2014-02-15 14:54+0100\n"
12 | "PO-Revision-Date: 2014-02-06 18:32+0100\n"
13 | "Last-Translator: benoit \n"
14 | "Language-Team: French\n"
15 | "Language: fr\n"
16 | "MIME-Version: 1.0\n"
17 | "Content-Type: text/plain; charset=UTF-8\n"
18 | "Content-Transfer-Encoding: 8bit\n"
19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n"
20 |
21 | #: listener.py:22
22 | msgid "ok start"
23 | msgstr "ok inicio"
24 |
25 | #: listener.py:76
26 | msgid "Cannot connect to Google Translate"
27 | msgstr "no se puede conectar a traductor Google"
28 |
29 | #: listener.py:78
30 | msgid "Phrase parsing failed"
31 | msgstr "Análisis Frase fallado"
32 |
33 | #: listener.py:80
34 | msgid "Error processing value returned by Google Translate"
35 | msgstr "Error al procesar el valor devuelto por el traductor de Google"
36 |
37 | #: librairy/add_window.py:44
38 | msgid "list of commands"
39 | msgstr "lista de ordenes"
40 |
41 | #: librairy/add_window.py:57
42 | msgid "Keys"
43 | msgstr "clave"
44 |
45 | #: librairy/add_window.py:73
46 | msgid "Commands"
47 | msgstr "ordenes"
48 |
49 | #: librairy/add_window.py:81 librairy/osd.py:35 librairy/osd.py:40
50 | msgid "Ready"
51 | msgstr "Listo"
52 |
53 | #: librairy/add_window.py:153 librairy/add_window.py:504
54 | #: librairy/ArgsWindow.py:35 librairy/ArgsWindow.py:48
55 | #: librairy/externalWindow.py:20 librairy/internalWindow.py:22
56 | msgid "key sentence"
57 | msgstr "su sentencia"
58 |
59 | #: librairy/add_window.py:153 librairy/add_window.py:217
60 | #: librairy/add_window.py:429 librairy/externalWindow.py:59
61 | #: librairy/stringParser.py:75
62 | msgid "external"
63 | msgstr "externas"
64 |
65 | #: librairy/add_window.py:245
66 | msgid "External commands"
67 | msgstr "Ordenes externas"
68 |
69 | #: librairy/add_window.py:249
70 | msgid "Internal commands"
71 | msgstr "Ordenes internas"
72 |
73 | #: librairy/add_window.py:253
74 | msgid "Module"
75 | msgstr "Módulo"
76 |
77 | #: librairy/add_window.py:260
78 | msgid "Add"
79 | msgstr "Agregar"
80 |
81 | #: librairy/add_window.py:270
82 | msgid "Add a new command"
83 | msgstr "Agregar nueva orden"
84 |
85 | #: librairy/add_window.py:275 librairy/add_window.py:287
86 | #: librairy/add_window.py:540
87 | msgid "Remove"
88 | msgstr "Eliminar"
89 |
90 | #: librairy/add_window.py:277 librairy/add_window.py:297
91 | msgid "Remove this command"
92 | msgstr "Eliminar esta orden"
93 |
94 | #: librairy/add_window.py:280
95 | msgid "Clean up"
96 | msgstr "Limpiar"
97 |
98 | #: librairy/add_window.py:282 librairy/add_window.py:561
99 | msgid "Remove all commands"
100 | msgstr "Eliminar todas las ordenes"
101 |
102 | #: librairy/add_window.py:302
103 | msgid "Try"
104 | msgstr "Intentar"
105 |
106 | #: librairy/add_window.py:305
107 | msgid "Try this command"
108 | msgstr "Intentar esta orden"
109 |
110 | #: librairy/add_window.py:312
111 | msgid "Edit"
112 | msgstr "Editar"
113 |
114 | #: librairy/add_window.py:315
115 | msgid "Edit this command"
116 | msgstr "Editar este orden"
117 |
118 | #: librairy/add_window.py:337
119 | msgid "Help"
120 | msgstr "Ayuda"
121 |
122 | #: librairy/add_window.py:341
123 | msgid "Display help message"
124 | msgstr "Mostrar la ayuda"
125 |
126 | #: librairy/add_window.py:361
127 | msgid "All"
128 | msgstr "Todas"
129 |
130 | #: librairy/add_window.py:362
131 | msgid "External"
132 | msgstr "Externas"
133 |
134 | #: librairy/add_window.py:363
135 | msgid "Internal"
136 | msgstr "Internas"
137 |
138 | #: librairy/add_window.py:364
139 | msgid "Modules"
140 | msgstr "Módulos"
141 |
142 | #: librairy/add_window.py:368
143 | msgid "What type of command to add"
144 | msgstr "Que type de orden agregar"
145 |
146 | #: librairy/add_window.py:409 librairy/add_window.py:413
147 | #: librairy/add_window.py:425 librairy/add_window.py:583
148 | #: librairy/stringParser.py:66
149 | msgid "modules"
150 | msgstr "módulos"
151 |
152 | #: librairy/add_window.py:409 librairy/add_window.py:411
153 | #: librairy/add_window.py:433 librairy/add_window.py:583
154 | #: librairy/internalWindow.py:60 librairy/stringParser.py:28
155 | #: librairy/stringParser.py:71
156 | msgid "internal"
157 | msgstr "internas"
158 |
159 | #: librairy/add_window.py:471
160 | msgid "Error, you must choose a file"
161 | msgstr "Error, debe seleccionar un archivo"
162 |
163 | #: librairy/add_window.py:518
164 | msgid "Error, args file missing"
165 | msgstr "Error, archivo args ausente"
166 |
167 | #: librairy/add_window.py:670
168 | msgid "Save commands"
169 | msgstr "Salvar ordenes"
170 |
171 | #: librairy/ArgsWindow.py:40
172 | msgid "Linking word"
173 | msgstr "Palabra para vincular"
174 |
175 | #: librairy/ArgsWindow.py:51
176 | msgid "Word to separate call and parameter"
177 | msgstr "Palabra que permite separar los parametros y la llamade del modulo"
178 |
179 | #: librairy/ArgsWindow.py:53 librairy/ArgsWindow.py:54
180 | msgid "Replace space by plus"
181 | msgstr "Substituir los espacios por adicion"
182 |
183 | #: librairy/ArgsWindow.py:57 librairy/ArgsWindow.py:58
184 | msgid "Go"
185 | msgstr "Continuar"
186 |
187 | #: librairy/basicCommands.py:28 librairy/internalWindow.py:80
188 | #: librairy/internalWindow.py:81
189 | msgid "time"
190 | msgstr "hora"
191 |
192 | #: librairy/basicCommands.py:30 librairy/internalWindow.py:82
193 | #: librairy/internalWindow.py:83
194 | msgid "power"
195 | msgstr "bateria"
196 |
197 | #: librairy/basicCommands.py:32 librairy/internalWindow.py:84
198 | #: librairy/internalWindow.py:85
199 | msgid "clipboard"
200 | msgstr "portapapeles"
201 |
202 | #: librairy/basicCommands.py:34 librairy/internalWindow.py:86
203 | #: librairy/internalWindow.py:87
204 | msgid "dictation mode"
205 | msgstr "modo dictado"
206 |
207 | #: librairy/basicCommands.py:37 librairy/internalWindow.py:88
208 | #: librairy/internalWindow.py:89 librairy/stringParser.py:28
209 | msgid "exit dictation mode"
210 | msgstr "salgar del modo dictado"
211 |
212 | #: librairy/basicCommands.py:55
213 | msgid "Nothing in the clipboard"
214 | msgstr "el portapapeles est vacio"
215 |
216 | #: librairy/basicCommands.py:66
217 | msgid "it is"
218 | msgstr "es"
219 |
220 | #: librairy/basicCommands.py:66
221 | msgid "hour"
222 | msgstr "hora"
223 |
224 | #: librairy/basicCommands.py:66
225 | msgid "minute"
226 | msgstr "minuta"
227 |
228 | #: librairy/basicCommands.py:85
229 | msgid "Charging"
230 | msgstr "Cargando"
231 |
232 | #: librairy/basicCommands.py:85
233 | msgid "before charging"
234 | msgstr "antes de cargando"
235 |
236 | #: librairy/basicCommands.py:87
237 | msgid "Discharging"
238 | msgstr "Descargando"
239 |
240 | #: librairy/basicCommands.py:87
241 | msgid "remaining"
242 | msgstr "queda"
243 |
244 | #: librairy/basicCommands.py:89
245 | msgid "battery is not plugged"
246 | msgstr "la bateria no esta"
247 |
248 | #: librairy/externalWindow.py:24 librairy/internalWindow.py:26
249 | msgid "your command"
250 | msgstr "su orden"
251 |
252 | #: librairy/HelpWindow.py:28
253 | msgid "Help Google2Ubuntu"
254 | msgstr "Ayuda de google2ubuntu"
255 |
256 | #: librairy/interface.py:95
257 | msgid "unable to translate"
258 | msgstr "imposible de traducir"
259 |
260 | #: librairy/internalWindow.py:99
261 | msgid "Which internal command to choose"
262 | msgstr "que orden interno eligir"
263 |
264 | #: librairy/MainWindow.py:33
265 | msgid "Setup"
266 | msgstr "Configuración"
267 |
268 | #: librairy/MainWindow.py:35
269 | msgid "Open setup window"
270 | msgstr "Abrir la ventana de configuración"
271 |
272 | #: librairy/moduleSelection.py:18
273 | msgid "Choose a file"
274 | msgstr "Elige une archivo"
275 |
276 | #: librairy/osd.py:49
277 | msgid "Error"
278 | msgstr "Error"
279 |
280 | #: librairy/osd.py:61
281 | msgid "Recognition result"
282 | msgstr "Resultado del reconocimiento"
283 |
284 | #: librairy/osd.py:71
285 | msgid "Calling command"
286 | msgstr "orden de llamada"
287 |
288 | #: librairy/osd.py:78
289 | msgid "Information"
290 | msgstr "Información"
291 |
292 | #: librairy/osd.py:84
293 | msgid "Performing recording"
294 | msgstr "Registro en cursos"
295 |
296 | #: librairy/osd.py:85
297 | msgid "Please speak"
298 | msgstr "Por favor, hable"
299 |
300 | #: librairy/osd.py:95
301 | msgid "Done"
302 | msgstr "terminado"
303 |
304 | #: librairy/SetupWindow.py:27
305 | msgid "Select your language"
306 | msgstr "Elija su idioma"
307 |
308 | #: librairy/SetupWindow.py:31
309 | msgid "Set the recording time (seconds)"
310 | msgstr "Ajuste el tiempo de grabación (segundos)"
311 |
312 | #: librairy/SetupWindow.py:34
313 | msgid "Set the music player's play command"
314 | msgstr "Ajustar el control de pausa del jugador de medios"
315 |
316 | #: librairy/SetupWindow.py:37
317 | msgid "Set the music player's pause command"
318 | msgstr "Ajustar el control de la reproducción del reproductor multimedia"
319 |
320 | #: librairy/SetupWindow.py:40
321 | msgid "Hotword mode"
322 | msgstr "Modo de palabras clave"
323 |
324 | #: librairy/SetupWindow.py:43
325 | msgid "Set the noise threshold"
326 | msgstr "Ajuste el umbral de ruido"
327 |
328 | #: librairy/SetupWindow.py:46
329 | msgid "Set the hotword"
330 | msgstr "Establezca la palabra clave"
331 |
332 | #: librairy/SetupWindow.py:55
333 | msgid "Change the recording time"
334 | msgstr "Cambiar el tiempo de grabación"
335 |
336 | #: librairy/SetupWindow.py:59
337 | msgid "Set the play command"
338 | msgstr "Ajustar el control de reproducción"
339 |
340 | #: librairy/SetupWindow.py:64
341 | msgid "Set the pause command"
342 | msgstr "Ajustar el control de pausa"
343 |
344 | #: librairy/SetupWindow.py:72
345 | msgid "Put the hotword mode ON or OFF"
346 | msgstr "Ponga el modo de palabra clave ON u OFF"
347 |
348 | #: librairy/SetupWindow.py:78
349 | #, python-format
350 | msgid "Set the sound level in % under which sound is considerated as noise"
351 | msgstr "Ajuste el nivel de sonido en% en virtud del cual el sonido es considerar que es el ruido"
352 |
353 | #: librairy/SetupWindow.py:82
354 | msgid "Set the hotword to start effective recording"
355 | msgstr "Ajuste el hotword para iniciar la grabación efectiva"
356 |
357 | #: librairy/SetupWindow.py:216
358 | msgid "What language to choose"
359 | msgstr "Qué idioma para elegir"
360 |
361 | #: librairy/stringParser.py:84
362 | msgid "Setup file missing"
363 | msgstr "El archivo de configuración ausente"
364 |
365 | #: librairy/workWithModule.py:55
366 | msgid "you didn't say the linking word"
367 | msgstr "no has dicho la palabra de enlace"
368 |
369 | #: librairy/workWithModule.py:59
370 | msgid "args file missing"
371 | msgstr "args archivo ausente"
372 |
373 | #~ msgid "Module setup"
374 | #~ msgstr "Módulo confiuguracion"
375 |
376 | #~ msgid "word"
377 | #~ msgstr "palabra"
378 |
379 | #~ msgid "Setup window"
380 | #~ msgstr "Ventana de configuración"
381 |
--------------------------------------------------------------------------------
/i18n/fr_FR/LC_MESSAGES/google2ubuntu.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/i18n/fr_FR/LC_MESSAGES/google2ubuntu.mo
--------------------------------------------------------------------------------
/i18n/google2ubuntu.pot:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | #, fuzzy
7 | msgid ""
8 | msgstr ""
9 | "Project-Id-Version: PACKAGE VERSION\n"
10 | "Report-Msgid-Bugs-To: \n"
11 | "POT-Creation-Date: 2014-08-03 10:14+0200\n"
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13 | "Last-Translator: FULL NAME \n"
14 | "Language-Team: LANGUAGE \n"
15 | "Language: \n"
16 | "MIME-Version: 1.0\n"
17 | "Content-Type: text/plain; charset=CHARSET\n"
18 | "Content-Transfer-Encoding: 8bit\n"
19 |
20 | #: listener.py:22 librairy/SetupWindow.py:23
21 | msgid "ok start"
22 | msgstr ""
23 |
24 | #: listener.py:76
25 | msgid "Cannot connect to Google Translate"
26 | msgstr ""
27 |
28 | #: listener.py:78
29 | msgid "Phrase parsing failed"
30 | msgstr ""
31 |
32 | #: listener.py:80
33 | msgid "Error processing value returned by Google Translate"
34 | msgstr ""
35 |
36 | #: librairy/add_window.py:44
37 | msgid "list of commands"
38 | msgstr ""
39 |
40 | #: librairy/add_window.py:57
41 | msgid "Keys"
42 | msgstr ""
43 |
44 | #: librairy/add_window.py:73
45 | msgid "Commands"
46 | msgstr ""
47 |
48 | #: librairy/add_window.py:81 librairy/osd.py:35 librairy/osd.py:40
49 | msgid "Ready"
50 | msgstr ""
51 |
52 | #: librairy/add_window.py:158 librairy/ArgsWindow.py:35
53 | #: librairy/ArgsWindow.py:52 librairy/externalWindow.py:20
54 | #: librairy/internalWindow.py:22
55 | msgid "key sentence"
56 | msgstr ""
57 |
58 | #: librairy/add_window.py:158 librairy/add_window.py:222
59 | #: librairy/add_window.py:433 librairy/externalWindow.py:59
60 | #: librairy/stringParser.py:79
61 | msgid "external"
62 | msgstr ""
63 |
64 | #: librairy/add_window.py:250
65 | msgid "External commands"
66 | msgstr ""
67 |
68 | #: librairy/add_window.py:254
69 | msgid "Internal commands"
70 | msgstr ""
71 |
72 | #: librairy/add_window.py:258
73 | msgid "Module"
74 | msgstr ""
75 |
76 | #: librairy/add_window.py:265
77 | msgid "Add"
78 | msgstr ""
79 |
80 | #: librairy/add_window.py:275
81 | msgid "Add a new command"
82 | msgstr ""
83 |
84 | #: librairy/add_window.py:280 librairy/add_window.py:292
85 | #: librairy/add_window.py:526
86 | msgid "Remove"
87 | msgstr ""
88 |
89 | #: librairy/add_window.py:282 librairy/add_window.py:302
90 | msgid "Remove this command"
91 | msgstr ""
92 |
93 | #: librairy/add_window.py:285
94 | msgid "Clean up"
95 | msgstr ""
96 |
97 | #: librairy/add_window.py:287 librairy/add_window.py:547
98 | msgid "Remove all commands"
99 | msgstr ""
100 |
101 | #: librairy/add_window.py:307
102 | msgid "Try"
103 | msgstr ""
104 |
105 | #: librairy/add_window.py:310
106 | msgid "Try this command"
107 | msgstr ""
108 |
109 | #: librairy/add_window.py:317
110 | msgid "Edit"
111 | msgstr ""
112 |
113 | #: librairy/add_window.py:320
114 | msgid "Edit this command"
115 | msgstr ""
116 |
117 | #: librairy/add_window.py:342
118 | msgid "Help"
119 | msgstr ""
120 |
121 | #: librairy/add_window.py:346
122 | msgid "Display help message"
123 | msgstr ""
124 |
125 | #: librairy/add_window.py:366
126 | msgid "All"
127 | msgstr ""
128 |
129 | #: librairy/add_window.py:367
130 | msgid "External"
131 | msgstr ""
132 |
133 | #: librairy/add_window.py:368
134 | msgid "Internal"
135 | msgstr ""
136 |
137 | #: librairy/add_window.py:369
138 | msgid "Modules"
139 | msgstr ""
140 |
141 | #: librairy/add_window.py:373
142 | msgid "What type of command to add"
143 | msgstr ""
144 |
145 | #: librairy/add_window.py:414 librairy/add_window.py:418
146 | #: librairy/add_window.py:431 librairy/add_window.py:569
147 | #: librairy/stringParser.py:69
148 | msgid "modules"
149 | msgstr ""
150 |
151 | #: librairy/add_window.py:414 librairy/add_window.py:416
152 | #: librairy/add_window.py:435 librairy/add_window.py:569
153 | #: librairy/internalWindow.py:60 librairy/stringParser.py:28
154 | #: librairy/stringParser.py:75
155 | msgid "internal"
156 | msgstr ""
157 |
158 | #: librairy/add_window.py:476
159 | msgid "Error, you must choose a file"
160 | msgstr ""
161 |
162 | #: librairy/add_window.py:663
163 | msgid "Save commands"
164 | msgstr ""
165 |
166 | #: librairy/ArgsWindow.py:40
167 | msgid "Linking word"
168 | msgstr ""
169 |
170 | #: librairy/ArgsWindow.py:44 librairy/ArgsWindow.py:57
171 | msgid "Replace space by plus"
172 | msgstr ""
173 |
174 | #: librairy/ArgsWindow.py:55
175 | msgid "Word to separate call and parameter"
176 | msgstr ""
177 |
178 | #: librairy/ArgsWindow.py:61 librairy/ArgsWindow.py:62
179 | msgid "Go"
180 | msgstr ""
181 |
182 | #: librairy/basicCommands.py:28 librairy/internalWindow.py:80
183 | #: librairy/internalWindow.py:81
184 | msgid "time"
185 | msgstr ""
186 |
187 | #: librairy/basicCommands.py:30 librairy/internalWindow.py:82
188 | #: librairy/internalWindow.py:83
189 | msgid "power"
190 | msgstr ""
191 |
192 | #: librairy/basicCommands.py:32 librairy/internalWindow.py:84
193 | #: librairy/internalWindow.py:85
194 | msgid "clipboard"
195 | msgstr ""
196 |
197 | #: librairy/basicCommands.py:34 librairy/internalWindow.py:86
198 | #: librairy/internalWindow.py:87
199 | msgid "dictation mode"
200 | msgstr ""
201 |
202 | #: librairy/basicCommands.py:37 librairy/internalWindow.py:88
203 | #: librairy/internalWindow.py:89 librairy/stringParser.py:28
204 | msgid "exit dictation mode"
205 | msgstr ""
206 |
207 | #: librairy/basicCommands.py:55
208 | msgid "Nothing in the clipboard"
209 | msgstr ""
210 |
211 | #: librairy/basicCommands.py:66
212 | msgid "it is"
213 | msgstr ""
214 |
215 | #: librairy/basicCommands.py:66
216 | msgid "hour"
217 | msgstr ""
218 |
219 | #: librairy/basicCommands.py:66
220 | msgid "minute"
221 | msgstr ""
222 |
223 | #: librairy/basicCommands.py:85
224 | msgid "Charging"
225 | msgstr ""
226 |
227 | #: librairy/basicCommands.py:85
228 | msgid "before charging"
229 | msgstr ""
230 |
231 | #: librairy/basicCommands.py:87
232 | msgid "Discharging"
233 | msgstr ""
234 |
235 | #: librairy/basicCommands.py:87
236 | msgid "remaining"
237 | msgstr ""
238 |
239 | #: librairy/basicCommands.py:89
240 | msgid "battery is not plugged"
241 | msgstr ""
242 |
243 | #: librairy/externalWindow.py:24 librairy/internalWindow.py:26
244 | msgid "your command"
245 | msgstr ""
246 |
247 | #: librairy/HelpWindow.py:30
248 | msgid "Help Google2Ubuntu"
249 | msgstr ""
250 |
251 | #: librairy/interface.py:92
252 | msgid "unable to translate"
253 | msgstr ""
254 |
255 | #: librairy/internalWindow.py:99
256 | msgid "Which internal command to choose"
257 | msgstr ""
258 |
259 | #: librairy/MainWindow.py:33
260 | msgid "Setup"
261 | msgstr ""
262 |
263 | #: librairy/MainWindow.py:35
264 | msgid "Open setup window"
265 | msgstr ""
266 |
267 | #: librairy/moduleSelection.py:18
268 | msgid "Choose a file"
269 | msgstr ""
270 |
271 | #: librairy/osd.py:49
272 | msgid "Error"
273 | msgstr ""
274 |
275 | #: librairy/osd.py:61
276 | msgid "Recognition result"
277 | msgstr ""
278 |
279 | #: librairy/osd.py:71
280 | msgid "Calling command"
281 | msgstr ""
282 |
283 | #: librairy/osd.py:78
284 | msgid "Information"
285 | msgstr ""
286 |
287 | #: librairy/osd.py:84
288 | msgid "Performing recording"
289 | msgstr ""
290 |
291 | #: librairy/osd.py:85
292 | msgid "Please speak"
293 | msgstr ""
294 |
295 | #: librairy/osd.py:95
296 | msgid "Done"
297 | msgstr ""
298 |
299 | #: librairy/SetupWindow.py:28
300 | msgid "Set Google Api Key"
301 | msgstr ""
302 |
303 | #: librairy/SetupWindow.py:31
304 | msgid "Select your language"
305 | msgstr ""
306 |
307 | #: librairy/SetupWindow.py:35
308 | msgid "Set the recording time (seconds)"
309 | msgstr ""
310 |
311 | #: librairy/SetupWindow.py:38
312 | msgid "Set the music player's play command"
313 | msgstr ""
314 |
315 | #: librairy/SetupWindow.py:41
316 | msgid "Set the music player's pause command"
317 | msgstr ""
318 |
319 | #: librairy/SetupWindow.py:44
320 | msgid "Hotword mode"
321 | msgstr ""
322 |
323 | #: librairy/SetupWindow.py:47
324 | msgid "Set the noise threshold"
325 | msgstr ""
326 |
327 | #: librairy/SetupWindow.py:50
328 | msgid "Set the hotword"
329 | msgstr ""
330 |
331 | #: librairy/SetupWindow.py:59
332 | msgid "Change the recording time"
333 | msgstr ""
334 |
335 | #: librairy/SetupWindow.py:63
336 | msgid "Set the Google Api Key"
337 | msgstr ""
338 |
339 | #: librairy/SetupWindow.py:67
340 | msgid "Set the play command"
341 | msgstr ""
342 |
343 | #: librairy/SetupWindow.py:72
344 | msgid "Set the pause command"
345 | msgstr ""
346 |
347 | #: librairy/SetupWindow.py:80
348 | msgid "Put the hotword mode ON or OFF"
349 | msgstr ""
350 |
351 | #: librairy/SetupWindow.py:86
352 | #, python-format
353 | msgid "Set the sound level in % under which sound is considerated as noise"
354 | msgstr ""
355 |
356 | #: librairy/SetupWindow.py:90
357 | msgid "Set the hotword to start effective recording"
358 | msgstr ""
359 |
360 | #: librairy/SetupWindow.py:229
361 | msgid "What language to choose"
362 | msgstr ""
363 |
364 | #: librairy/stringParser.py:88
365 | msgid "Setup file missing"
366 | msgstr ""
367 |
368 | #: librairy/workWithModule.py:48
369 | msgid "you didn't say the linking word"
370 | msgstr ""
371 |
372 | #: librairy/workWithModule.py:52
373 | msgid "args file missing"
374 | msgstr ""
375 |
--------------------------------------------------------------------------------
/i18n/it_IT/LC_MESSAGES/google2ubuntu.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/i18n/it_IT/LC_MESSAGES/google2ubuntu.mo
--------------------------------------------------------------------------------
/i18n/it_IT/LC_MESSAGES/google2ubuntu.po:
--------------------------------------------------------------------------------
1 | # Italian translations for google package
2 | # Traduzioni italiane per il pacchetto google..
3 | # Copyright (C) 2014 THE google'S COPYRIGHT HOLDER
4 | # This file is distributed under the same license as the google package.
5 | #
6 | # Mte90 , 2014.
7 | msgid ""
8 | msgstr ""
9 | "Project-Id-Version: google 2ubuntu\n"
10 | "Report-Msgid-Bugs-To: \n"
11 | "POT-Creation-Date: 2014-02-15 14:54+0100\n"
12 | "PO-Revision-Date: 2014-03-01 12:19+0100\n"
13 | "Last-Translator: \n"
14 | "Language-Team: it \n"
15 | "Language: it\n"
16 | "MIME-Version: 1.0\n"
17 | "Content-Type: text/plain; charset=UTF-8\n"
18 | "Content-Transfer-Encoding: 8bit\n"
19 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
20 | "X-Generator: Poedit 1.5.4\n"
21 |
22 | #: listener.py:22
23 | msgid "ok start"
24 | msgstr "ok inizia"
25 |
26 | #: listener.py:76
27 | msgid "Cannot connect to Google Translate"
28 | msgstr "Non è stato possibile connettersi a Google Translate"
29 |
30 | #: listener.py:78
31 | msgid "Phrase parsing failed"
32 | msgstr "Parsing della frase fallito"
33 |
34 | #: listener.py:80
35 | msgid "Error processing value returned by Google Translate"
36 | msgstr "Errore durante l'analisi del valore fornito da Google Translate"
37 |
38 | #: librairy/add_window.py:44
39 | msgid "list of commands"
40 | msgstr "lista dei comandi"
41 |
42 | #: librairy/add_window.py:57
43 | msgid "Keys"
44 | msgstr "Tasti"
45 |
46 | #: librairy/add_window.py:73
47 | msgid "Commands"
48 | msgstr "Comandi"
49 |
50 | #: librairy/add_window.py:81 librairy/osd.py:35 librairy/osd.py:40
51 | msgid "Ready"
52 | msgstr "Pronto"
53 |
54 | #: librairy/add_window.py:153 librairy/add_window.py:504
55 | #: librairy/ArgsWindow.py:35 librairy/ArgsWindow.py:48
56 | #: librairy/externalWindow.py:20 librairy/internalWindow.py:22
57 | msgid "key sentence"
58 | msgstr "frase chiave"
59 |
60 | #: librairy/add_window.py:153 librairy/add_window.py:217
61 | #: librairy/add_window.py:429 librairy/externalWindow.py:59
62 | #: librairy/stringParser.py:75
63 | msgid "external"
64 | msgstr "esterno"
65 |
66 | #: librairy/add_window.py:245
67 | msgid "External commands"
68 | msgstr "Comando esterno"
69 |
70 | #: librairy/add_window.py:249
71 | msgid "Internal commands"
72 | msgstr "Comando interno"
73 |
74 | #: librairy/add_window.py:253
75 | msgid "Module"
76 | msgstr "Modulo"
77 |
78 | #: librairy/add_window.py:260
79 | msgid "Add"
80 | msgstr "Aggiungi"
81 |
82 | #: librairy/add_window.py:270
83 | msgid "Add a new command"
84 | msgstr "Aggiungi un nuovo comando"
85 |
86 | #: librairy/add_window.py:275 librairy/add_window.py:287
87 | #: librairy/add_window.py:540
88 | msgid "Remove"
89 | msgstr "Rimuovi"
90 |
91 | #: librairy/add_window.py:277 librairy/add_window.py:297
92 | msgid "Remove this command"
93 | msgstr "Rimuovi questo comando"
94 |
95 | #: librairy/add_window.py:280
96 | msgid "Clean up"
97 | msgstr "Pulisci"
98 |
99 | #: librairy/add_window.py:282 librairy/add_window.py:561
100 | msgid "Remove all commands"
101 | msgstr "Rimuovi tutti i comandi"
102 |
103 | #: librairy/add_window.py:302
104 | msgid "Try"
105 | msgstr "Prova"
106 |
107 | #: librairy/add_window.py:305
108 | msgid "Try this command"
109 | msgstr "Prova questo comando"
110 |
111 | #: librairy/add_window.py:312
112 | msgid "Edit"
113 | msgstr "Modifica"
114 |
115 | #: librairy/add_window.py:315
116 | msgid "Edit this command"
117 | msgstr "Modifica questo comando"
118 |
119 | #: librairy/add_window.py:337
120 | msgid "Help"
121 | msgstr "Aiuto"
122 |
123 | #: librairy/add_window.py:341
124 | msgid "Display help message"
125 | msgstr "Mostra messaggi d'aiuto"
126 |
127 | #: librairy/add_window.py:361
128 | msgid "All"
129 | msgstr "Tutti"
130 |
131 | #: librairy/add_window.py:362
132 | msgid "External"
133 | msgstr "Esterni"
134 |
135 | #: librairy/add_window.py:363
136 | msgid "Internal"
137 | msgstr "Interni"
138 |
139 | #: librairy/add_window.py:364
140 | msgid "Modules"
141 | msgstr "Moduli"
142 |
143 | #: librairy/add_window.py:368
144 | msgid "What type of command to add"
145 | msgstr "Tipo di comando da aggiungere"
146 |
147 | #: librairy/add_window.py:409 librairy/add_window.py:413
148 | #: librairy/add_window.py:425 librairy/add_window.py:583
149 | #: librairy/stringParser.py:66
150 | msgid "modules"
151 | msgstr "moduli"
152 |
153 | #: librairy/add_window.py:409 librairy/add_window.py:411
154 | #: librairy/add_window.py:433 librairy/add_window.py:583
155 | #: librairy/internalWindow.py:60 librairy/stringParser.py:28
156 | #: librairy/stringParser.py:71
157 | msgid "internal"
158 | msgstr "interno"
159 |
160 | #: librairy/add_window.py:471
161 | msgid "Error, you must choose a file"
162 | msgstr "Errore devi scegliere un file"
163 |
164 | #: librairy/add_window.py:518
165 | msgid "Error, args file missing"
166 | msgstr "Errore file mancante"
167 |
168 | #: librairy/add_window.py:670
169 | msgid "Save commands"
170 | msgstr "Salva i comandi"
171 |
172 | #: librairy/ArgsWindow.py:40
173 | msgid "Linking word"
174 | msgstr "Parola collegata"
175 |
176 | #: librairy/ArgsWindow.py:51
177 | msgid "Word to separate call and parameter"
178 | msgstr "Parola per separare chiamata e parametro"
179 |
180 | #: librairy/ArgsWindow.py:53 librairy/ArgsWindow.py:54
181 | msgid "Replace space by plus"
182 | msgstr "Sostituisci spazio con un +"
183 |
184 | #: librairy/ArgsWindow.py:57 librairy/ArgsWindow.py:58
185 | msgid "Go"
186 | msgstr "Vai"
187 |
188 | #: librairy/basicCommands.py:28 librairy/internalWindow.py:80
189 | #: librairy/internalWindow.py:81
190 | msgid "time"
191 | msgstr "orario"
192 |
193 | #: librairy/basicCommands.py:30 librairy/internalWindow.py:82
194 | #: librairy/internalWindow.py:83
195 | msgid "power"
196 | msgstr "batteria"
197 |
198 | #: librairy/basicCommands.py:32 librairy/internalWindow.py:84
199 | #: librairy/internalWindow.py:85
200 | msgid "clipboard"
201 | msgstr "appunti"
202 |
203 | #: librairy/basicCommands.py:34 librairy/internalWindow.py:86
204 | #: librairy/internalWindow.py:87
205 | msgid "dictation mode"
206 | msgstr "modalità dettatura"
207 |
208 | #: librairy/basicCommands.py:37 librairy/internalWindow.py:88
209 | #: librairy/internalWindow.py:89 librairy/stringParser.py:28
210 | msgid "exit dictation mode"
211 | msgstr "esci dalla modalità dettatura"
212 |
213 | #: librairy/basicCommands.py:55
214 | msgid "Nothing in the clipboard"
215 | msgstr "Appunti vuoto"
216 |
217 | #: librairy/basicCommands.py:66
218 | msgid "it is"
219 | msgstr "sono le"
220 |
221 | #: librairy/basicCommands.py:66
222 | msgid "hour"
223 | msgstr "e"
224 |
225 | #: librairy/basicCommands.py:66
226 | msgid "minute"
227 | msgstr " "
228 |
229 | #: librairy/basicCommands.py:85
230 | msgid "Charging"
231 | msgstr "Caricamento"
232 |
233 | #: librairy/basicCommands.py:85
234 | msgid "before charging"
235 | msgstr "prima del caricamento"
236 |
237 | #: librairy/basicCommands.py:87
238 | msgid "Discharging"
239 | msgstr "Caricamento annullato"
240 |
241 | #: librairy/basicCommands.py:87
242 | msgid "remaining"
243 | msgstr "rimasto"
244 |
245 | #: librairy/basicCommands.py:89
246 | msgid "battery is not plugged"
247 | msgstr "batteria non inserita"
248 |
249 | #: librairy/externalWindow.py:24 librairy/internalWindow.py:26
250 | msgid "your command"
251 | msgstr "comando"
252 |
253 | #: librairy/HelpWindow.py:28
254 | msgid "Help Google2Ubuntu"
255 | msgstr "Aiuta Google2Ubuntu"
256 |
257 | #: librairy/interface.py:95
258 | msgid "unable to translate"
259 | msgstr "rilevazione non possibile"
260 |
261 | #: librairy/internalWindow.py:99
262 | msgid "Which internal command to choose"
263 | msgstr "Comando interno da scegliere"
264 |
265 | #: librairy/MainWindow.py:33
266 | msgid "Setup"
267 | msgstr "Impostazioni"
268 |
269 | #: librairy/MainWindow.py:35
270 | msgid "Open setup window"
271 | msgstr "Apri le impostazioni"
272 |
273 | #: librairy/moduleSelection.py:18
274 | msgid "Choose a file"
275 | msgstr "Scegli un file"
276 |
277 | #: librairy/osd.py:49
278 | msgid "Error"
279 | msgstr "Errore"
280 |
281 | #: librairy/osd.py:61
282 | msgid "Recognition result"
283 | msgstr "Risultato riconoscimento"
284 |
285 | #: librairy/osd.py:71
286 | msgid "Calling command"
287 | msgstr "Esecuzione del comando"
288 |
289 | #: librairy/osd.py:78
290 | msgid "Information"
291 | msgstr "Informazioni"
292 |
293 | #: librairy/osd.py:84
294 | msgid "Performing recording"
295 | msgstr "Avvio della registrazione "
296 |
297 | #: librairy/osd.py:85
298 | msgid "Please speak"
299 | msgstr "Parla"
300 |
301 | #: librairy/osd.py:95
302 | msgid "Done"
303 | msgstr "Effettuato"
304 |
305 | #: librairy/SetupWindow.py:27
306 | msgid "Select your language"
307 | msgstr "Seleziona la lingua"
308 |
309 | #: librairy/SetupWindow.py:31
310 | msgid "Set the recording time (seconds)"
311 | msgstr "Imposta il tempo per la registrazione (in secondi)"
312 |
313 | #: librairy/SetupWindow.py:34
314 | msgid "Set the music player's play command"
315 | msgstr "Imposta il comando per avviare la musica del tuo player"
316 |
317 | #: librairy/SetupWindow.py:37
318 | msgid "Set the music player's pause command"
319 | msgstr "Imposta il comando per mettere in pausa il tuo player"
320 |
321 | #: librairy/SetupWindow.py:40
322 | msgid "Hotword mode"
323 | msgstr "Modalità Parola Chiave"
324 |
325 | #: librairy/SetupWindow.py:43
326 | msgid "Set the noise threshold"
327 | msgstr "Imposta il livello di rumore"
328 |
329 | #: librairy/SetupWindow.py:46
330 | msgid "Set the hotword"
331 | msgstr "Imposta la parola chiave"
332 |
333 | #: librairy/SetupWindow.py:55
334 | msgid "Change the recording time"
335 | msgstr "Cambia il tempo per la registrazione"
336 |
337 | #: librairy/SetupWindow.py:59
338 | msgid "Set the play command"
339 | msgstr "Imposta il comando play"
340 |
341 | #: librairy/SetupWindow.py:64
342 | msgid "Set the pause command"
343 | msgstr "Imposta il comando pausa"
344 |
345 | #: librairy/SetupWindow.py:72
346 | msgid "Put the hotword mode ON or OFF"
347 | msgstr "Imposta la parola chiave On o OFF"
348 |
349 | #: librairy/SetupWindow.py:78
350 | #, python-format
351 | msgid "Set the sound level in % under which sound is considerated as noise"
352 | msgstr "Imposta il volume in percentuale quel livello sarà considerato rumore"
353 |
354 | #: librairy/SetupWindow.py:82
355 | msgid "Set the hotword to start effective recording"
356 | msgstr "Imposta la parola chiave per avviare la registrazione"
357 |
358 | #: librairy/SetupWindow.py:216
359 | msgid "What language to choose"
360 | msgstr "Scegli la lingua"
361 |
362 | #: librairy/stringParser.py:84
363 | msgid "Setup file missing"
364 | msgstr "File di configurazione mancante"
365 |
366 | #: librairy/workWithModule.py:55
367 | msgid "you didn't say the linking word"
368 | msgstr "non hai detto la parola collegata"
369 |
370 | #: librairy/workWithModule.py:59
371 | msgid "args file missing"
372 | msgstr "file mancante"
373 |
374 | #~ msgid "Module setup"
375 | #~ msgstr "Configurazione modulo"
376 |
377 | #~ msgid "word"
378 | #~ msgstr "parola"
379 |
380 | #~ msgid "Setup window"
381 | #~ msgstr "Finestra delle impostazioni"
382 |
--------------------------------------------------------------------------------
/i18n/nl_NL/LC_MESSAGES/google2ubuntu.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/i18n/nl_NL/LC_MESSAGES/google2ubuntu.mo
--------------------------------------------------------------------------------
/i18n/nl_NL/LC_MESSAGES/google2ubuntu.po:
--------------------------------------------------------------------------------
1 | # English translations for google package.
2 | # Copyright (C) 2014 THE google'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the google package.
4 | # Frank Claessen , 2014.
5 | #
6 | msgid ""
7 | msgstr ""
8 | "Project-Id-Version: google 2ubuntu-master\n"
9 | "Report-Msgid-Bugs-To: \n"
10 | "POT-Creation-Date: 2014-02-15 14:54+0100\n"
11 | "PO-Revision-Date: 2014-02-20 11:05+0100\n"
12 | "Last-Translator: Frank Claessen \n"
13 | "Language-Team: English\n"
14 | "Language: en_US\n"
15 | "MIME-Version: 1.0\n"
16 | "Content-Type: text/plain; charset=UTF-8\n"
17 | "Content-Transfer-Encoding: 8bit\n"
18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
19 |
20 | #: listener.py:22
21 | msgid "ok start"
22 | msgstr "ok start"
23 |
24 | #: listener.py:76
25 | msgid "Cannot connect to Google Translate"
26 | msgstr "Geen connectie met Google Translate"
27 |
28 | #: listener.py:78
29 | msgid "Phrase parsing failed"
30 | msgstr "Ontleden van de zin mislukt"
31 |
32 | #: listener.py:80
33 | msgid "Error processing value returned by Google Translate"
34 | msgstr "Fout verwerking van de waarde door Google Translate teruggegeven"
35 |
36 | #: librairy/add_window.py:44
37 | msgid "list of commands"
38 | msgstr "lijst met commando's"
39 |
40 | #: librairy/add_window.py:57
41 | msgid "Keys"
42 | msgstr "Sleutels"
43 |
44 | #: librairy/add_window.py:73
45 | msgid "Commands"
46 | msgstr "Commando's"
47 |
48 | #: librairy/add_window.py:81 librairy/osd.py:35 librairy/osd.py:40
49 | msgid "Ready"
50 | msgstr "Klaar"
51 |
52 | #: librairy/add_window.py:153 librairy/add_window.py:504
53 | #: librairy/ArgsWindow.py:35 librairy/ArgsWindow.py:48
54 | #: librairy/externalWindow.py:20 librairy/internalWindow.py:22
55 | msgid "key sentence"
56 | msgstr "sleutel zin"
57 |
58 | #: librairy/add_window.py:153 librairy/add_window.py:217
59 | #: librairy/add_window.py:429 librairy/externalWindow.py:59
60 | #: librairy/stringParser.py:75
61 | msgid "external"
62 | msgstr "extern"
63 |
64 | #: librairy/add_window.py:245
65 | msgid "External commands"
66 | msgstr "Externe commando's"
67 |
68 | #: librairy/add_window.py:249
69 | msgid "Internal commands"
70 | msgstr "Interne commando's"
71 |
72 | #: librairy/add_window.py:253
73 | msgid "Module"
74 | msgstr "Module"
75 |
76 | #: librairy/add_window.py:260
77 | msgid "Add"
78 | msgstr "Toevoegen"
79 |
80 | #: librairy/add_window.py:270
81 | msgid "Add a new command"
82 | msgstr "Voeg nieuw commando toe"
83 |
84 | #: librairy/add_window.py:275 librairy/add_window.py:287
85 | #: librairy/add_window.py:540
86 | msgid "Remove"
87 | msgstr "Verwijderen"
88 |
89 | #: librairy/add_window.py:277 librairy/add_window.py:297
90 | msgid "Remove this command"
91 | msgstr "Verwijder dit commando"
92 |
93 | #: librairy/add_window.py:280
94 | msgid "Clean up"
95 | msgstr "Ruim op"
96 |
97 | #: librairy/add_window.py:282 librairy/add_window.py:561
98 | msgid "Remove all commands"
99 | msgstr "Verwijder alle commando's"
100 |
101 | #: librairy/add_window.py:302
102 | msgid "Try"
103 | msgstr "Probeer"
104 |
105 | #: librairy/add_window.py:305
106 | msgid "Try this command"
107 | msgstr "Probeer dit commando"
108 |
109 | #: librairy/add_window.py:312
110 | msgid "Edit"
111 | msgstr "Wijzigen"
112 |
113 | #: librairy/add_window.py:315
114 | msgid "Edit this command"
115 | msgstr "Wijzig dit commando"
116 |
117 | #: librairy/add_window.py:337
118 | msgid "Help"
119 | msgstr "Help"
120 |
121 | #: librairy/add_window.py:341
122 | msgid "Display help message"
123 | msgstr "Toon help boodschap"
124 |
125 | #: librairy/add_window.py:361
126 | msgid "All"
127 | msgstr "Alles"
128 |
129 | #: librairy/add_window.py:362
130 | msgid "External"
131 | msgstr "Extern"
132 |
133 | #: librairy/add_window.py:363
134 | msgid "Internal"
135 | msgstr "Intern"
136 |
137 | #: librairy/add_window.py:364
138 | msgid "Modules"
139 | msgstr "Modules"
140 |
141 | #: librairy/add_window.py:368
142 | msgid "What type of command to add"
143 | msgstr "Welk type commando toe te voegen"
144 |
145 | #: librairy/add_window.py:409 librairy/add_window.py:413
146 | #: librairy/add_window.py:425 librairy/add_window.py:583
147 | #: librairy/stringParser.py:66
148 | msgid "modules"
149 | msgstr "modules"
150 |
151 | #: librairy/add_window.py:409 librairy/add_window.py:411
152 | #: librairy/add_window.py:433 librairy/add_window.py:583
153 | #: librairy/internalWindow.py:60 librairy/stringParser.py:28
154 | #: librairy/stringParser.py:71
155 | msgid "internal"
156 | msgstr "intern"
157 |
158 | #: librairy/add_window.py:471
159 | msgid "Error, you must choose a file"
160 | msgstr "Fout, u moet een bestand kiezen"
161 |
162 | #: librairy/add_window.py:518
163 | msgid "Error, args file missing"
164 | msgstr ""
165 |
166 | #: librairy/add_window.py:670
167 | msgid "Save commands"
168 | msgstr "Save commando's"
169 |
170 | #: librairy/ArgsWindow.py:40
171 | msgid "Linking word"
172 | msgstr "Verbindingswoord"
173 |
174 | #: librairy/ArgsWindow.py:51
175 | msgid "Word to separate call and parameter"
176 | msgstr "Woord tussen aanroep en parameter"
177 |
178 | #: librairy/ArgsWindow.py:53 librairy/ArgsWindow.py:54
179 | msgid "Replace space by plus"
180 | msgstr "Vervang spatie door plusteken"
181 |
182 | #: librairy/ArgsWindow.py:57 librairy/ArgsWindow.py:58
183 | msgid "Go"
184 | msgstr "Ga"
185 |
186 | #: librairy/basicCommands.py:28 librairy/internalWindow.py:80
187 | #: librairy/internalWindow.py:81
188 | msgid "time"
189 | msgstr "tijd"
190 |
191 | #: librairy/basicCommands.py:30 librairy/internalWindow.py:82
192 | #: librairy/internalWindow.py:83
193 | msgid "power"
194 | msgstr "batterij"
195 |
196 | #: librairy/basicCommands.py:32 librairy/internalWindow.py:84
197 | #: librairy/internalWindow.py:85
198 | msgid "clipboard"
199 | msgstr "klembord"
200 |
201 | #: librairy/basicCommands.py:34 librairy/internalWindow.py:86
202 | #: librairy/internalWindow.py:87
203 | msgid "dictation mode"
204 | msgstr "dictee modus"
205 |
206 | #: librairy/basicCommands.py:37 librairy/internalWindow.py:88
207 | #: librairy/internalWindow.py:89 librairy/stringParser.py:28
208 | msgid "exit dictation mode"
209 | msgstr "einde dictee modus"
210 |
211 | #: librairy/basicCommands.py:55
212 | msgid "Nothing in the clipboard"
213 | msgstr "Niets op het klembord"
214 |
215 | #: librairy/basicCommands.py:66
216 | msgid "it is"
217 | msgstr "het is"
218 |
219 | #: librairy/basicCommands.py:66
220 | msgid "hour"
221 | msgstr "uur"
222 |
223 | #: librairy/basicCommands.py:66
224 | msgid "minute"
225 | msgstr "minuut"
226 |
227 | #: librairy/basicCommands.py:85
228 | msgid "Charging"
229 | msgstr "Aan het opladen"
230 |
231 | #: librairy/basicCommands.py:85
232 | msgid "before charging"
233 | msgstr "voor het opladen"
234 |
235 | #: librairy/basicCommands.py:87
236 | msgid "Discharging"
237 | msgstr "Aan het ontladen"
238 |
239 | #: librairy/basicCommands.py:87
240 | msgid "remaining"
241 | msgstr "resterend"
242 |
243 | #: librairy/basicCommands.py:89
244 | msgid "battery is not plugged"
245 | msgstr "Stroom is niet aangesloten"
246 |
247 | #: librairy/externalWindow.py:24 librairy/internalWindow.py:26
248 | msgid "your command"
249 | msgstr "uw commando"
250 |
251 | #: librairy/HelpWindow.py:28
252 | msgid "Help Google2Ubuntu"
253 | msgstr "Help Google2Ubuntu"
254 |
255 | #: librairy/interface.py:95
256 | msgid "unable to translate"
257 | msgstr "kan niet worden vertaald"
258 |
259 | #: librairy/internalWindow.py:99
260 | msgid "Which internal command to choose"
261 | msgstr "Te kiezen intern commando"
262 |
263 | #: librairy/MainWindow.py:33
264 | msgid "Setup"
265 | msgstr "Setup"
266 |
267 | #: librairy/MainWindow.py:35
268 | msgid "Open setup window"
269 | msgstr "geopend installatievenster"
270 |
271 | #: librairy/moduleSelection.py:18
272 | msgid "Choose a file"
273 | msgstr "Kies een bestand"
274 |
275 | #: librairy/osd.py:49
276 | msgid "Error"
277 | msgstr "Fout"
278 |
279 | #: librairy/osd.py:61
280 | msgid "Recognition result"
281 | msgstr "Resultaat herkenning"
282 |
283 | #: librairy/osd.py:71
284 | msgid "Calling command"
285 | msgstr "Aanroepend commando"
286 |
287 | #: librairy/osd.py:78
288 | msgid "Information"
289 | msgstr "Informatie"
290 |
291 | #: librairy/osd.py:84
292 | msgid "Performing recording"
293 | msgstr "Opname wordt uitgevoerd"
294 |
295 | #: librairy/osd.py:85
296 | msgid "Please speak"
297 | msgstr "Spreek aub in"
298 |
299 | #: librairy/osd.py:95
300 | msgid "Done"
301 | msgstr "Klaar"
302 |
303 | #: librairy/SetupWindow.py:27
304 | msgid "Select your language"
305 | msgstr "Selecteer uw taal"
306 |
307 | #: librairy/SetupWindow.py:31
308 | msgid "Set the recording time (seconds)"
309 | msgstr "Stel de opnametijd in (seconden)"
310 |
311 | #: librairy/SetupWindow.py:34
312 | msgid "Set the music player's play command"
313 | msgstr "Vul het play-commando van de muziekspeler in"
314 |
315 | #: librairy/SetupWindow.py:37
316 | msgid "Set the music player's pause command"
317 | msgstr "Vul het pauze-commando van de muziekspeler in"
318 |
319 | #: librairy/SetupWindow.py:40
320 | msgid "Hotword mode"
321 | msgstr "Hotword modus"
322 |
323 | #: librairy/SetupWindow.py:43
324 | msgid "Set the noise threshold"
325 | msgstr "Stel de geluidsdrempel in"
326 |
327 | #: librairy/SetupWindow.py:46
328 | msgid "Set the hotword"
329 | msgstr "Stel het hotword in"
330 |
331 | #: librairy/SetupWindow.py:55
332 | msgid "Change the recording time"
333 | msgstr "Verander de opname tijd"
334 |
335 | #: librairy/SetupWindow.py:59
336 | msgid "Set the play command"
337 | msgstr "Stel het play-commando in"
338 |
339 | #: librairy/SetupWindow.py:64
340 | msgid "Set the pause command"
341 | msgstr "Stel het pauze-commando in"
342 |
343 | #: librairy/SetupWindow.py:72
344 | msgid "Put the hotword mode ON or OFF"
345 | msgstr "Zet de hotword-modus AAN of UIT"
346 |
347 | #: librairy/SetupWindow.py:78
348 | #, python-format
349 | msgid "Set the sound level in % under which sound is considerated as noise"
350 | msgstr "Stel het geluidsniveau in % waaronder geluid als ruis wordt gezien"
351 |
352 | #: librairy/SetupWindow.py:82
353 | msgid "Set the hotword to start effective recording"
354 | msgstr "Stel het hotword in om het opnemen te starten"
355 |
356 | #: librairy/SetupWindow.py:216
357 | msgid "What language to choose"
358 | msgstr "Welke taal te kiezen"
359 |
360 | #: librairy/stringParser.py:84
361 | msgid "Setup file missing"
362 | msgstr "Setup-bestand ontbreekt"
363 |
364 | #: librairy/workWithModule.py:55
365 | msgid "you didn't say the linking word"
366 | msgstr "U hebt het verbindingswoord niet uitgesproken"
367 |
368 | #: librairy/workWithModule.py:59
369 | msgid "args file missing"
370 | msgstr "args-bestand ontbreekt"
371 |
--------------------------------------------------------------------------------
/i18n/pt_BR/LC_MESSAGES/google2ubuntu.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/i18n/pt_BR/LC_MESSAGES/google2ubuntu.mo
--------------------------------------------------------------------------------
/i18n/pt_BR/LC_MESSAGES/google2ubuntu.po:
--------------------------------------------------------------------------------
1 | # Portuguese translations for PACKAGE package
2 | # Traduções portuguesas para o pacote PACKAGE.
3 | # Copyright (C) 2014 THE PACKAGE'S COPYRIGHT HOLDER
4 | # This file is distributed under the same license as the PACKAGE package.
5 | # leor , 2014.
6 | #
7 | msgid ""
8 | msgstr ""
9 | "Project-Id-Version: google 2ubuntu\n"
10 | "Report-Msgid-Bugs-To: \n"
11 | "POT-Creation-Date: 2014-02-15 14:54+0100\n"
12 | "PO-Revision-Date: 2014-02-16 04:43+0100\n"
13 | "Last-Translator: leor \n"
14 | "Language-Team: Brazilian\n"
15 | "Language: br\n"
16 | "MIME-Version: 1.0\n"
17 | "Content-Type: text/plain; charset=UTF-8\n"
18 | "Content-Transfer-Encoding: 8bit\n"
19 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
20 |
21 | #: listener.py:22
22 | msgid "ok start"
23 | msgstr "ok começar"
24 |
25 | #: listener.py:76
26 | msgid "Cannot connect to Google Translate"
27 | msgstr "Incapaz de ligar ao Google Tradutor"
28 |
29 | #: listener.py:78
30 | msgid "Phrase parsing failed"
31 | msgstr "Análise da frase falhou"
32 |
33 | #: listener.py:80
34 | msgid "Error processing value returned by Google Translate"
35 | msgstr "Erro a processar valor retornado pelo Google Tradutor"
36 |
37 | #: librairy/add_window.py:44
38 | msgid "list of commands"
39 | msgstr "lista de comandos"
40 |
41 | #: librairy/add_window.py:57
42 | msgid "Keys"
43 | msgstr "Chave"
44 |
45 | #: librairy/add_window.py:73
46 | msgid "Commands"
47 | msgstr "Comandos"
48 |
49 | #: librairy/add_window.py:81
50 | #: librairy/osd.py:35
51 | #: librairy/osd.py:40
52 | msgid "Ready"
53 | msgstr "Pronto"
54 |
55 | #: librairy/add_window.py:153
56 | #: librairy/add_window.py:504
57 | #: librairy/ArgsWindow.py:35
58 | #: librairy/ArgsWindow.py:48
59 | #: librairy/externalWindow.py:20
60 | #: librairy/internalWindow.py:22
61 | msgid "key sentence"
62 | msgstr "frase-chave"
63 |
64 | #: librairy/add_window.py:153
65 | #: librairy/add_window.py:217
66 | #: librairy/add_window.py:429
67 | #: librairy/externalWindow.py:59
68 | #: librairy/stringParser.py:75
69 | msgid "external"
70 | msgstr "externo"
71 |
72 | #: librairy/add_window.py:245
73 | msgid "External commands"
74 | msgstr "Comandos externos"
75 |
76 | #: librairy/add_window.py:249
77 | msgid "Internal commands"
78 | msgstr "Comandos internos"
79 |
80 | #: librairy/add_window.py:253
81 | msgid "Module"
82 | msgstr "Módulo"
83 |
84 | #: librairy/add_window.py:260
85 | msgid "Add"
86 | msgstr "Adicionar"
87 |
88 | #: librairy/add_window.py:270
89 | msgid "Add a new command"
90 | msgstr "Adicionar novo comando"
91 |
92 | #: librairy/add_window.py:275
93 | #: librairy/add_window.py:287
94 | #: librairy/add_window.py:540
95 | msgid "Remove"
96 | msgstr "Remover"
97 |
98 | #: librairy/add_window.py:277
99 | #: librairy/add_window.py:297
100 | msgid "Remove this command"
101 | msgstr "Remover este comando"
102 |
103 | #: librairy/add_window.py:280
104 | msgid "Clean up"
105 | msgstr "Limpar"
106 |
107 | #: librairy/add_window.py:282
108 | #: librairy/add_window.py:561
109 | msgid "Remove all commands"
110 | msgstr "Remover todos os comandos"
111 |
112 | #: librairy/add_window.py:302
113 | msgid "Try"
114 | msgstr "Tentar"
115 |
116 | #: librairy/add_window.py:305
117 | msgid "Try this command"
118 | msgstr "Tentar este comando"
119 |
120 | #: librairy/add_window.py:312
121 | msgid "Edit"
122 | msgstr "Editar"
123 |
124 | #: librairy/add_window.py:315
125 | msgid "Edit this command"
126 | msgstr "Editar este comando"
127 |
128 | #: librairy/add_window.py:337
129 | msgid "Help"
130 | msgstr "Ajuda"
131 |
132 | #: librairy/add_window.py:341
133 | msgid "Display help message"
134 | msgstr "Mostrar mensagem de ajuda"
135 |
136 | #: librairy/add_window.py:361
137 | msgid "All"
138 | msgstr "Todos"
139 |
140 | #: librairy/add_window.py:362
141 | msgid "External"
142 | msgstr "Externo"
143 |
144 | #: librairy/add_window.py:363
145 | msgid "Internal"
146 | msgstr "Interno"
147 |
148 | #: librairy/add_window.py:364
149 | msgid "Modules"
150 | msgstr "Módulos"
151 |
152 | #: librairy/add_window.py:368
153 | msgid "What type of command to add"
154 | msgstr "Tipo de comando a adicionar"
155 |
156 | #: librairy/add_window.py:409
157 | #: librairy/add_window.py:413
158 | #: librairy/add_window.py:425
159 | #: librairy/add_window.py:583
160 | #: librairy/stringParser.py:66
161 | msgid "modules"
162 | msgstr "módulos"
163 |
164 | #: librairy/add_window.py:409
165 | #: librairy/add_window.py:411
166 | #: librairy/add_window.py:433
167 | #: librairy/add_window.py:583
168 | #: librairy/internalWindow.py:60
169 | #: librairy/stringParser.py:28
170 | #: librairy/stringParser.py:71
171 | msgid "internal"
172 | msgstr "Interno"
173 |
174 | #: librairy/add_window.py:471
175 | msgid "Error, you must choose a file"
176 | msgstr "Erro, deve escolher um ficheiro"
177 |
178 | #: librairy/add_window.py:518
179 | msgid "Error, args file missing"
180 | msgstr "Erro, ficheiro de argumento em falta"
181 |
182 | #: librairy/add_window.py:670
183 | msgid "Save commands"
184 | msgstr "Guardar comandos"
185 |
186 | #: librairy/ArgsWindow.py:40
187 | msgid "Linking word"
188 | msgstr "lingando palavras"
189 |
190 | #: librairy/ArgsWindow.py:51
191 | msgid "Word to separate call and parameter"
192 | msgstr "Palavra para separar chamada e parâmetro"
193 |
194 | #: librairy/ArgsWindow.py:53
195 | #: librairy/ArgsWindow.py:54
196 | msgid "Replace space by plus"
197 | msgstr "Substituir espaço por mais"
198 |
199 | #: librairy/ArgsWindow.py:57
200 | #: librairy/ArgsWindow.py:58
201 | msgid "Go"
202 | msgstr "Ir"
203 |
204 | #: librairy/basicCommands.py:28
205 | #: librairy/internalWindow.py:80
206 | #: librairy/internalWindow.py:81
207 | msgid "time"
208 | msgstr "tempo"
209 |
210 | #: librairy/basicCommands.py:30
211 | #: librairy/internalWindow.py:82
212 | #: librairy/internalWindow.py:83
213 | msgid "power"
214 | msgstr "bateria"
215 |
216 | #: librairy/basicCommands.py:32
217 | #: librairy/internalWindow.py:84
218 | #: librairy/internalWindow.py:85
219 | msgid "clipboard"
220 | msgstr "Área de transferência"
221 |
222 | #: librairy/basicCommands.py:34
223 | #: librairy/internalWindow.py:86
224 | #: librairy/internalWindow.py:87
225 | msgid "dictation mode"
226 | msgstr "modo de ditar"
227 |
228 | #: librairy/basicCommands.py:37
229 | #: librairy/internalWindow.py:88
230 | #: librairy/internalWindow.py:89
231 | #: librairy/stringParser.py:28
232 | msgid "exit dictation mode"
233 | msgstr "sair do modo de ditar"
234 |
235 | #: librairy/basicCommands.py:55
236 | msgid "Nothing in the clipboard"
237 | msgstr "Nada na área de transferência"
238 |
239 | #: librairy/basicCommands.py:66
240 | msgid "it is"
241 | msgstr "é"
242 |
243 | #: librairy/basicCommands.py:66
244 | msgid "hour"
245 | msgstr "hora"
246 |
247 | #: librairy/basicCommands.py:66
248 | msgid "minute"
249 | msgstr "minuto"
250 |
251 | #: librairy/basicCommands.py:85
252 | msgid "Charging"
253 | msgstr "Em carga"
254 |
255 | #: librairy/basicCommands.py:85
256 | msgid "before charging"
257 | msgstr "antes de carregar"
258 |
259 | #: librairy/basicCommands.py:87
260 | msgid "Discharging"
261 | msgstr "m descarga"
262 |
263 | #: librairy/basicCommands.py:87
264 | msgid "remaining"
265 | msgstr "restante"
266 |
267 | #: librairy/basicCommands.py:89
268 | msgid "battery is not plugged"
269 | msgstr "a bateria não está ligada"
270 |
271 | #: librairy/externalWindow.py:24
272 | #: librairy/internalWindow.py:26
273 | msgid "your command"
274 | msgstr "O seu comando"
275 |
276 | #: librairy/HelpWindow.py:28
277 | msgid "Help Google2Ubuntu"
278 | msgstr "Ajuda Google2Ubuntu"
279 |
280 | #: librairy/interface.py:95
281 | msgid "unable to translate"
282 | msgstr "incapaz de traduzir"
283 |
284 | #: librairy/internalWindow.py:99
285 | msgid "Which internal command to choose"
286 | msgstr "Qual o comando interno a escolher"
287 |
288 | #: librairy/MainWindow.py:33
289 | msgid "Setup"
290 | msgstr "Configurações"
291 |
292 | #: librairy/MainWindow.py:35
293 | msgid "Open setup window"
294 | msgstr "Abrir janela de configurações"
295 |
296 | #: librairy/moduleSelection.py:18
297 | msgid "Choose a file"
298 | msgstr "Escolha um ficheiro"
299 |
300 | #: librairy/osd.py:49
301 | msgid "Error"
302 | msgstr "Erro"
303 |
304 | #: librairy/osd.py:61
305 | msgid "Recognition result"
306 | msgstr "Resultado do reconhecimento"
307 |
308 | #: librairy/osd.py:71
309 | msgid "Calling command"
310 | msgstr "Commando de chamada"
311 |
312 | #: librairy/osd.py:78
313 | msgid "Information"
314 | msgstr "Informação"
315 |
316 | #: librairy/osd.py:84
317 | msgid "Performing recording"
318 | msgstr "Gravação em curso"
319 |
320 | #: librairy/osd.py:85
321 | msgid "Please speak"
322 | msgstr "Por favor fale"
323 |
324 | #: librairy/osd.py:95
325 | msgid "Done"
326 | msgstr "Pronto"
327 |
328 | #: librairy/SetupWindow.py:27
329 | msgid "Select your language"
330 | msgstr "Selecione o seu idioma"
331 |
332 | #: librairy/SetupWindow.py:31
333 | msgid "Set the recording time (seconds)"
334 | msgstr "Difinir o tempo de gravação (segundos)"
335 |
336 | #: librairy/SetupWindow.py:34
337 | msgid "Set the music player's play command"
338 | msgstr "Definir o comando do player de audio para reproduzir"
339 |
340 | #: librairy/SetupWindow.py:37
341 | msgid "Set the music player's pause command"
342 | msgstr "Definir o comando do player de audio para pausa"
343 |
344 | #: librairy/SetupWindow.py:40
345 | msgid "Hotword mode"
346 | msgstr "Modo de palavra-chave"
347 |
348 | #: librairy/SetupWindow.py:43
349 | msgid "Set the noise threshold"
350 | msgstr "Definir o limite de ruido"
351 |
352 | #: librairy/SetupWindow.py:46
353 | msgid "Set the hotword"
354 | msgstr "Definir a palavra-chave"
355 |
356 | #: librairy/SetupWindow.py:55
357 | msgid "Change the recording time"
358 | msgstr "Mudar o tempo de gravação"
359 |
360 | #: librairy/SetupWindow.py:59
361 | msgid "Set the play command"
362 | msgstr "Mudar o comando para reproduzir"
363 |
364 | #: librairy/SetupWindow.py:64
365 | msgid "Set the pause command"
366 | msgstr "Mudar o comando para pausa"
367 |
368 | #: librairy/SetupWindow.py:72
369 | msgid "Put the hotword mode ON or OFF"
370 | msgstr "Definir o modo de palavra-chave como ON ou OFF"
371 |
372 | #: librairy/SetupWindow.py:78
373 | #, python-format
374 | msgid "Set the sound level in % under which sound is considerated as noise"
375 | msgstr "Definir o lnível do som em % que será considerado como ruido"
376 |
377 | #: librairy/SetupWindow.py:82
378 | msgid "Set the hotword to start effective recording"
379 | msgstr "Definir a palavra-chave para começar uma gravação efectiva"
380 |
381 | #: librairy/SetupWindow.py:216
382 | msgid "What language to choose"
383 | msgstr "Qual idioma a escolher"
384 |
385 | #: librairy/stringParser.py:84
386 | msgid "Setup file missing"
387 | msgstr "Ficheiro de configuração em falta"
388 |
389 | #: librairy/workWithModule.py:55
390 | msgid "you didn't say the linking word"
391 | msgstr "Não disse a palavra de ligação"
392 |
393 | #: librairy/workWithModule.py:59
394 | msgid "args file missing"
395 | msgstr "Ficheiro de argumento em falta"
396 |
397 | #~ msgid "Module setup"
398 | #~ msgstr "Módulo de cofigurações"
399 |
400 | #~ msgid "word"
401 | #~ msgstr "palavra"
402 |
403 | #~ msgid "Setup window"
404 | #~ msgstr "Janela de configurações"
405 |
--------------------------------------------------------------------------------
/i18n/pt_PT/LC_MESSAGES/google2ubuntu.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/i18n/pt_PT/LC_MESSAGES/google2ubuntu.mo
--------------------------------------------------------------------------------
/i18n/yue_Hant/LC_MESSAGES/google2ubuntu.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/i18n/yue_Hant/LC_MESSAGES/google2ubuntu.mo
--------------------------------------------------------------------------------
/i18n/yue_Hant/LC_MESSAGES/google2ubuntu.po:
--------------------------------------------------------------------------------
1 | # Chinese translations for google package.
2 | # Copyright (C) 2014 THE google'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the google package.
4 | # Ladios Jonquil , 2014.
5 | #
6 | msgid ""
7 | msgstr ""
8 | "Project-Id-Version: google 2ubuntu\n"
9 | "Report-Msgid-Bugs-To: \n"
10 | "POT-Creation-Date: 2014-02-15 14:54+0100\n"
11 | "PO-Revision-Date: 2014-02-12 04:52+0800\n"
12 | "Last-Translator: Ladios Jonquil \n"
13 | "Language-Team: Chinese (Hong Kong)\n"
14 | "Language: yue_Hant\n"
15 | "MIME-Version: 1.0\n"
16 | "Content-Type: text/plain; charset=UTF-8\n"
17 | "Content-Transfer-Encoding: 8bit\n"
18 |
19 | #: listener.py:22
20 | msgid "ok start"
21 | msgstr "ok 開始"
22 |
23 | #: listener.py:76
24 | msgid "Cannot connect to Google Translate"
25 | msgstr "無法連線至 Google 翻譯"
26 |
27 | #: listener.py:78
28 | msgid "Phrase parsing failed"
29 | msgstr "片語剖析失則"
30 |
31 | #: listener.py:80
32 | msgid "Error processing value returned by Google Translate"
33 | msgstr "處理 Google 翻譯結果時發生錯誤"
34 |
35 | #: librairy/add_window.py:44
36 | msgid "list of commands"
37 | msgstr "命令列表"
38 |
39 | #: librairy/add_window.py:57
40 | msgid "Keys"
41 | msgstr "語音鍵"
42 |
43 | #: librairy/add_window.py:73
44 | msgid "Commands"
45 | msgstr "系統指令"
46 |
47 | #: librairy/add_window.py:81 librairy/osd.py:35 librairy/osd.py:40
48 | msgid "Ready"
49 | msgstr "就緒"
50 |
51 | #: librairy/add_window.py:153 librairy/add_window.py:504
52 | #: librairy/ArgsWindow.py:35 librairy/ArgsWindow.py:48
53 | #: librairy/externalWindow.py:20 librairy/internalWindow.py:22
54 | msgid "key sentence"
55 | msgstr "指令語句"
56 |
57 | #: librairy/add_window.py:153 librairy/add_window.py:217
58 | #: librairy/add_window.py:429 librairy/externalWindow.py:59
59 | #: librairy/stringParser.py:75
60 | msgid "external"
61 | msgstr "外部"
62 |
63 | #: librairy/add_window.py:245
64 | msgid "External commands"
65 | msgstr "外部指令"
66 |
67 | #: librairy/add_window.py:249
68 | msgid "Internal commands"
69 | msgstr "內部指令"
70 |
71 | #: librairy/add_window.py:253
72 | msgid "Module"
73 | msgstr "模組"
74 |
75 | #: librairy/add_window.py:260
76 | msgid "Add"
77 | msgstr "新增"
78 |
79 | #: librairy/add_window.py:270
80 | msgid "Add a new command"
81 | msgstr "新增指令"
82 |
83 | #: librairy/add_window.py:275 librairy/add_window.py:287
84 | #: librairy/add_window.py:540
85 | msgid "Remove"
86 | msgstr "移除"
87 |
88 | #: librairy/add_window.py:277 librairy/add_window.py:297
89 | msgid "Remove this command"
90 | msgstr "移除這指令"
91 |
92 | #: librairy/add_window.py:280
93 | msgid "Clean up"
94 | msgstr "清理"
95 |
96 | #: librairy/add_window.py:282 librairy/add_window.py:561
97 | msgid "Remove all commands"
98 | msgstr "移除所有指令"
99 |
100 | #: librairy/add_window.py:302
101 | msgid "Try"
102 | msgstr "試試看"
103 |
104 | #: librairy/add_window.py:305
105 | msgid "Try this command"
106 | msgstr "試一下這指令"
107 |
108 | #: librairy/add_window.py:312
109 | msgid "Edit"
110 | msgstr "編輯"
111 |
112 | #: librairy/add_window.py:315
113 | msgid "Edit this command"
114 | msgstr "編輯這指令"
115 |
116 | #: librairy/add_window.py:337
117 | msgid "Help"
118 | msgstr "幫助"
119 |
120 | #: librairy/add_window.py:341
121 | msgid "Display help message"
122 | msgstr "顯示幫助信息"
123 |
124 | #: librairy/add_window.py:361
125 | msgid "All"
126 | msgstr "全部"
127 |
128 | #: librairy/add_window.py:362
129 | msgid "External"
130 | msgstr "外部"
131 |
132 | #: librairy/add_window.py:363
133 | msgid "Internal"
134 | msgstr "內部"
135 |
136 | #: librairy/add_window.py:364
137 | msgid "Modules"
138 | msgstr "模組"
139 |
140 | #: librairy/add_window.py:368
141 | msgid "What type of command to add"
142 | msgstr "要新增的指令"
143 |
144 | #: librairy/add_window.py:409 librairy/add_window.py:413
145 | #: librairy/add_window.py:425 librairy/add_window.py:583
146 | #: librairy/stringParser.py:66
147 | msgid "modules"
148 | msgstr "模組"
149 |
150 | #: librairy/add_window.py:409 librairy/add_window.py:411
151 | #: librairy/add_window.py:433 librairy/add_window.py:583
152 | #: librairy/internalWindow.py:60 librairy/stringParser.py:28
153 | #: librairy/stringParser.py:71
154 | msgid "internal"
155 | msgstr "內部"
156 |
157 | #: librairy/add_window.py:471
158 | msgid "Error, you must choose a file"
159 | msgstr "錯誤,您必須選擇一個檔案"
160 |
161 | #: librairy/add_window.py:518
162 | msgid "Error, args file missing"
163 | msgstr "錯誤,欠缺參數檔"
164 |
165 | #: librairy/add_window.py:670
166 | msgid "Save commands"
167 | msgstr "儲存指令"
168 |
169 | #: librairy/ArgsWindow.py:40
170 | msgid "Linking word"
171 | msgstr "連結詞語"
172 |
173 | #: librairy/ArgsWindow.py:51
174 | msgid "Word to separate call and parameter"
175 | msgstr "分割命令與參數的詞語"
176 |
177 | #: librairy/ArgsWindow.py:53 librairy/ArgsWindow.py:54
178 | msgid "Replace space by plus"
179 | msgstr "將空白置換為加號"
180 |
181 | #: librairy/ArgsWindow.py:57 librairy/ArgsWindow.py:58
182 | msgid "Go"
183 | msgstr "前往"
184 |
185 | #: librairy/basicCommands.py:28 librairy/internalWindow.py:80
186 | #: librairy/internalWindow.py:81
187 | msgid "time"
188 | msgstr "時間"
189 |
190 | #: librairy/basicCommands.py:30 librairy/internalWindow.py:82
191 | #: librairy/internalWindow.py:83
192 | msgid "power"
193 | msgstr "電源"
194 |
195 | #: librairy/basicCommands.py:32 librairy/internalWindow.py:84
196 | #: librairy/internalWindow.py:85
197 | msgid "clipboard"
198 | msgstr "剪貼簿"
199 |
200 | #: librairy/basicCommands.py:34 librairy/internalWindow.py:86
201 | #: librairy/internalWindow.py:87
202 | msgid "dictation mode"
203 | msgstr "口述模式"
204 |
205 | #: librairy/basicCommands.py:37 librairy/internalWindow.py:88
206 | #: librairy/internalWindow.py:89 librairy/stringParser.py:28
207 | msgid "exit dictation mode"
208 | msgstr "離開口述模式"
209 |
210 | #: librairy/basicCommands.py:55
211 | msgid "Nothing in the clipboard"
212 | msgstr "無嘢喺剪貼簿入面"
213 |
214 | #: librairy/basicCommands.py:66
215 | msgid "it is"
216 | msgstr "現在係"
217 |
218 | #: librairy/basicCommands.py:66
219 | msgid "hour"
220 | msgstr "時"
221 |
222 | #: librairy/basicCommands.py:66
223 | msgid "minute"
224 | msgstr "分"
225 |
226 | #: librairy/basicCommands.py:85
227 | msgid "Charging"
228 | msgstr "充緊電"
229 |
230 | #: librairy/basicCommands.py:85
231 | msgid "before charging"
232 | msgstr "後會充滿"
233 |
234 | #: librairy/basicCommands.py:87
235 | msgid "Discharging"
236 | msgstr "放緊電"
237 |
238 | #: librairy/basicCommands.py:87
239 | msgid "remaining"
240 | msgstr "後會用晒"
241 |
242 | #: librairy/basicCommands.py:89
243 | msgid "battery is not plugged"
244 | msgstr "冇插入電池"
245 |
246 | #: librairy/externalWindow.py:24 librairy/internalWindow.py:26
247 | msgid "your command"
248 | msgstr "您的指令"
249 |
250 | #: librairy/HelpWindow.py:28
251 | msgid "Help Google2Ubuntu"
252 | msgstr "幫助 Google2Ubuntu"
253 |
254 | #: librairy/interface.py:95
255 | msgid "unable to translate"
256 | msgstr "無法翻譯"
257 |
258 | #: librairy/internalWindow.py:99
259 | msgid "Which internal command to choose"
260 | msgstr "要選擇的內部指令"
261 |
262 | #: librairy/MainWindow.py:33
263 | msgid "Setup"
264 | msgstr "設定"
265 |
266 | #: librairy/MainWindow.py:35
267 | msgid "Open setup window"
268 | msgstr "開啟設定視窗"
269 |
270 | #: librairy/moduleSelection.py:18
271 | msgid "Choose a file"
272 | msgstr "選擇一個檔案"
273 |
274 | #: librairy/osd.py:49
275 | msgid "Error"
276 | msgstr "錯誤"
277 |
278 | #: librairy/osd.py:61
279 | msgid "Recognition result"
280 | msgstr "辨認結果"
281 |
282 | #: librairy/osd.py:71
283 | msgid "Calling command"
284 | msgstr "正在呼叫指令"
285 |
286 | #: librairy/osd.py:78
287 | msgid "Information"
288 | msgstr "資訊"
289 |
290 | #: librairy/osd.py:84
291 | msgid "Performing recording"
292 | msgstr "正在錄音"
293 |
294 | #: librairy/osd.py:85
295 | msgid "Please speak"
296 | msgstr "請說話"
297 |
298 | #: librairy/osd.py:95
299 | msgid "Done"
300 | msgstr "完成"
301 |
302 | #: librairy/SetupWindow.py:27
303 | msgid "Select your language"
304 | msgstr "選擇您的語言"
305 |
306 | #: librairy/SetupWindow.py:31
307 | msgid "Set the recording time (seconds)"
308 | msgstr "設定錄音時間(秒)"
309 |
310 | #: librairy/SetupWindow.py:34
311 | msgid "Set the music player's play command"
312 | msgstr "設定音樂播放器的播放指令"
313 |
314 | #: librairy/SetupWindow.py:37
315 | msgid "Set the music player's pause command"
316 | msgstr "設定音樂播放器的暫停指令"
317 |
318 | #: librairy/SetupWindow.py:40
319 | msgid "Hotword mode"
320 | msgstr "字詞偵測模式"
321 |
322 | #: librairy/SetupWindow.py:43
323 | msgid "Set the noise threshold"
324 | msgstr "設定噪音閾值"
325 |
326 | #: librairy/SetupWindow.py:46
327 | msgid "Set the hotword"
328 | msgstr "設定偵測字詞"
329 |
330 | #: librairy/SetupWindow.py:55
331 | msgid "Change the recording time"
332 | msgstr "變更錄音時間"
333 |
334 | #: librairy/SetupWindow.py:59
335 | msgid "Set the play command"
336 | msgstr "設定播放指令"
337 |
338 | #: librairy/SetupWindow.py:64
339 | msgid "Set the pause command"
340 | msgstr "設定暫停指令"
341 |
342 | #: librairy/SetupWindow.py:72
343 | msgid "Put the hotword mode ON or OFF"
344 | msgstr "開關字詞偵測模式"
345 |
346 | #: librairy/SetupWindow.py:78
347 | #, python-format
348 | msgid "Set the sound level in % under which sound is considerated as noise"
349 | msgstr "設定將低於這聲浪水平 % 的聲音判斷為噪音"
350 |
351 | #: librairy/SetupWindow.py:82
352 | msgid "Set the hotword to start effective recording"
353 | msgstr "設定使錄音生效的偵測字詞"
354 |
355 | #: librairy/SetupWindow.py:216
356 | msgid "What language to choose"
357 | msgstr "要選擇的語言"
358 |
359 | #: librairy/stringParser.py:84
360 | msgid "Setup file missing"
361 | msgstr "欠缺設定檔"
362 |
363 | #: librairy/workWithModule.py:55
364 | msgid "you didn't say the linking word"
365 | msgstr "您沒有說出連結詞語"
366 |
367 | #: librairy/workWithModule.py:59
368 | msgid "args file missing"
369 | msgstr "欠缺參數檔"
370 |
371 | #~ msgid "Module setup"
372 | #~ msgstr "模組設定"
373 |
374 | #~ msgid "word"
375 | #~ msgstr "詞語"
376 |
377 | #~ msgid "Setup window"
378 | #~ msgstr "設定視窗"
379 |
--------------------------------------------------------------------------------
/i18n/zh_CN/README.md:
--------------------------------------------------------------------------------
1 | Suggestion for zh_CN translators
2 | ================================
3 |
4 | If you want to update Simplified Chinese translations, please update `i18n/zh_Hans/LC_MESSAGES/google2ubuntu.po` and `config/zh_Hans/default.xml`.
5 |
--------------------------------------------------------------------------------
/i18n/zh_CN/fallback:
--------------------------------------------------------------------------------
1 | zh_Hans
2 |
--------------------------------------------------------------------------------
/i18n/zh_HK/README.md:
--------------------------------------------------------------------------------
1 | Suggestion for zh_HK translators
2 | ================================
3 |
4 | If you want to update Cantonese (Traditional Chinese) translations, please update `i18n/yue_Hant/LC_MESSAGES/google2ubuntu.po` and `config/yue_Hant/default.xml`.
5 |
--------------------------------------------------------------------------------
/i18n/zh_HK/fallback:
--------------------------------------------------------------------------------
1 | yue_Hant
2 |
--------------------------------------------------------------------------------
/i18n/zh_Hans/.placeholder:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/i18n/zh_Hans/.placeholder
--------------------------------------------------------------------------------
/i18n/zh_Hant/LC_MESSAGES/google2ubuntu.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/i18n/zh_Hant/LC_MESSAGES/google2ubuntu.mo
--------------------------------------------------------------------------------
/i18n/zh_Hant/LC_MESSAGES/google2ubuntu.po:
--------------------------------------------------------------------------------
1 | # Chinese translations for google package.
2 | # Copyright (C) 2014 THE google'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the google package.
4 | # Ladios Jonquil , 2014.
5 | #
6 | msgid ""
7 | msgstr ""
8 | "Project-Id-Version: google 2ubuntu\n"
9 | "Report-Msgid-Bugs-To: \n"
10 | "POT-Creation-Date: 2014-02-15 14:54+0100\n"
11 | "PO-Revision-Date: 2014-02-12 04:52+0800\n"
12 | "Last-Translator: Ladios Jonquil \n"
13 | "Language-Team: Chinese (traditional)\n"
14 | "Language: zh_Hant\n"
15 | "MIME-Version: 1.0\n"
16 | "Content-Type: text/plain; charset=UTF-8\n"
17 | "Content-Transfer-Encoding: 8bit\n"
18 |
19 | #: listener.py:22
20 | msgid "ok start"
21 | msgstr "ok 開始"
22 |
23 | #: listener.py:76
24 | msgid "Cannot connect to Google Translate"
25 | msgstr "無法連線至 Google 翻譯"
26 |
27 | #: listener.py:78
28 | msgid "Phrase parsing failed"
29 | msgstr "片語剖析失則"
30 |
31 | #: listener.py:80
32 | msgid "Error processing value returned by Google Translate"
33 | msgstr "處理 Google 翻譯結果時發生錯誤"
34 |
35 | #: librairy/add_window.py:44
36 | msgid "list of commands"
37 | msgstr "命令列表"
38 |
39 | #: librairy/add_window.py:57
40 | msgid "Keys"
41 | msgstr "語音鍵"
42 |
43 | #: librairy/add_window.py:73
44 | msgid "Commands"
45 | msgstr "系統指令"
46 |
47 | #: librairy/add_window.py:81 librairy/osd.py:35 librairy/osd.py:40
48 | msgid "Ready"
49 | msgstr "就緒"
50 |
51 | #: librairy/add_window.py:153 librairy/add_window.py:504
52 | #: librairy/ArgsWindow.py:35 librairy/ArgsWindow.py:48
53 | #: librairy/externalWindow.py:20 librairy/internalWindow.py:22
54 | msgid "key sentence"
55 | msgstr "指令語句"
56 |
57 | #: librairy/add_window.py:153 librairy/add_window.py:217
58 | #: librairy/add_window.py:429 librairy/externalWindow.py:59
59 | #: librairy/stringParser.py:75
60 | msgid "external"
61 | msgstr "外部"
62 |
63 | #: librairy/add_window.py:245
64 | msgid "External commands"
65 | msgstr "外部指令"
66 |
67 | #: librairy/add_window.py:249
68 | msgid "Internal commands"
69 | msgstr "內部指令"
70 |
71 | #: librairy/add_window.py:253
72 | msgid "Module"
73 | msgstr "模組"
74 |
75 | #: librairy/add_window.py:260
76 | msgid "Add"
77 | msgstr "新增"
78 |
79 | #: librairy/add_window.py:270
80 | msgid "Add a new command"
81 | msgstr "新增指令"
82 |
83 | #: librairy/add_window.py:275 librairy/add_window.py:287
84 | #: librairy/add_window.py:540
85 | msgid "Remove"
86 | msgstr "移除"
87 |
88 | #: librairy/add_window.py:277 librairy/add_window.py:297
89 | msgid "Remove this command"
90 | msgstr "移除這指令"
91 |
92 | #: librairy/add_window.py:280
93 | msgid "Clean up"
94 | msgstr "清理"
95 |
96 | #: librairy/add_window.py:282 librairy/add_window.py:561
97 | msgid "Remove all commands"
98 | msgstr "移除所有指令"
99 |
100 | #: librairy/add_window.py:302
101 | msgid "Try"
102 | msgstr "試試看"
103 |
104 | #: librairy/add_window.py:305
105 | msgid "Try this command"
106 | msgstr "試一下這指令"
107 |
108 | #: librairy/add_window.py:312
109 | msgid "Edit"
110 | msgstr "編輯"
111 |
112 | #: librairy/add_window.py:315
113 | msgid "Edit this command"
114 | msgstr "編輯這指令"
115 |
116 | #: librairy/add_window.py:337
117 | msgid "Help"
118 | msgstr "幫助"
119 |
120 | #: librairy/add_window.py:341
121 | msgid "Display help message"
122 | msgstr "顯示幫助信息"
123 |
124 | #: librairy/add_window.py:361
125 | msgid "All"
126 | msgstr "全部"
127 |
128 | #: librairy/add_window.py:362
129 | msgid "External"
130 | msgstr "外部"
131 |
132 | #: librairy/add_window.py:363
133 | msgid "Internal"
134 | msgstr "內部"
135 |
136 | #: librairy/add_window.py:364
137 | msgid "Modules"
138 | msgstr "模組"
139 |
140 | #: librairy/add_window.py:368
141 | msgid "What type of command to add"
142 | msgstr "要新增的指令"
143 |
144 | #: librairy/add_window.py:409 librairy/add_window.py:413
145 | #: librairy/add_window.py:425 librairy/add_window.py:583
146 | #: librairy/stringParser.py:66
147 | msgid "modules"
148 | msgstr "模組"
149 |
150 | #: librairy/add_window.py:409 librairy/add_window.py:411
151 | #: librairy/add_window.py:433 librairy/add_window.py:583
152 | #: librairy/internalWindow.py:60 librairy/stringParser.py:28
153 | #: librairy/stringParser.py:71
154 | msgid "internal"
155 | msgstr "內部"
156 |
157 | #: librairy/add_window.py:471
158 | msgid "Error, you must choose a file"
159 | msgstr "錯誤,您必須選擇一個檔案"
160 |
161 | #: librairy/add_window.py:518
162 | msgid "Error, args file missing"
163 | msgstr "錯誤,欠缺參數檔"
164 |
165 | #: librairy/add_window.py:670
166 | msgid "Save commands"
167 | msgstr "儲存指令"
168 |
169 | #: librairy/ArgsWindow.py:40
170 | msgid "Linking word"
171 | msgstr "連結詞語"
172 |
173 | #: librairy/ArgsWindow.py:51
174 | msgid "Word to separate call and parameter"
175 | msgstr "分割命令與參數的詞語"
176 |
177 | #: librairy/ArgsWindow.py:53 librairy/ArgsWindow.py:54
178 | msgid "Replace space by plus"
179 | msgstr "將空白置換為加號"
180 |
181 | #: librairy/ArgsWindow.py:57 librairy/ArgsWindow.py:58
182 | msgid "Go"
183 | msgstr "前往"
184 |
185 | #: librairy/basicCommands.py:28 librairy/internalWindow.py:80
186 | #: librairy/internalWindow.py:81
187 | msgid "time"
188 | msgstr "時間"
189 |
190 | #: librairy/basicCommands.py:30 librairy/internalWindow.py:82
191 | #: librairy/internalWindow.py:83
192 | msgid "power"
193 | msgstr "電源"
194 |
195 | #: librairy/basicCommands.py:32 librairy/internalWindow.py:84
196 | #: librairy/internalWindow.py:85
197 | msgid "clipboard"
198 | msgstr "剪貼簿"
199 |
200 | #: librairy/basicCommands.py:34 librairy/internalWindow.py:86
201 | #: librairy/internalWindow.py:87
202 | msgid "dictation mode"
203 | msgstr "口述模式"
204 |
205 | #: librairy/basicCommands.py:37 librairy/internalWindow.py:88
206 | #: librairy/internalWindow.py:89 librairy/stringParser.py:28
207 | msgid "exit dictation mode"
208 | msgstr "離開口述模式"
209 |
210 | #: librairy/basicCommands.py:55
211 | msgid "Nothing in the clipboard"
212 | msgstr "剪貼簿為空白"
213 |
214 | #: librairy/basicCommands.py:66
215 | msgid "it is"
216 | msgstr "現在是"
217 |
218 | #: librairy/basicCommands.py:66
219 | msgid "hour"
220 | msgstr "時"
221 |
222 | #: librairy/basicCommands.py:66
223 | msgid "minute"
224 | msgstr "分"
225 |
226 | #: librairy/basicCommands.py:85
227 | msgid "Charging"
228 | msgstr "正在充電"
229 |
230 | #: librairy/basicCommands.py:85
231 | msgid "before charging"
232 | msgstr "後完成充電"
233 |
234 | #: librairy/basicCommands.py:87
235 | msgid "Discharging"
236 | msgstr "放電中"
237 |
238 | #: librairy/basicCommands.py:87
239 | msgid "remaining"
240 | msgstr "後會用盡"
241 |
242 | #: librairy/basicCommands.py:89
243 | msgid "battery is not plugged"
244 | msgstr "沒有插入電池"
245 |
246 | #: librairy/externalWindow.py:24 librairy/internalWindow.py:26
247 | msgid "your command"
248 | msgstr "您的指令"
249 |
250 | #: librairy/HelpWindow.py:28
251 | msgid "Help Google2Ubuntu"
252 | msgstr "幫助 Google2Ubuntu"
253 |
254 | #: librairy/interface.py:95
255 | msgid "unable to translate"
256 | msgstr "無法翻譯"
257 |
258 | #: librairy/internalWindow.py:99
259 | msgid "Which internal command to choose"
260 | msgstr "要選擇的內部指令"
261 |
262 | #: librairy/MainWindow.py:33
263 | msgid "Setup"
264 | msgstr "設定"
265 |
266 | #: librairy/MainWindow.py:35
267 | msgid "Open setup window"
268 | msgstr "開啟設定視窗"
269 |
270 | #: librairy/moduleSelection.py:18
271 | msgid "Choose a file"
272 | msgstr "選擇一個檔案"
273 |
274 | #: librairy/osd.py:49
275 | msgid "Error"
276 | msgstr "錯誤"
277 |
278 | #: librairy/osd.py:61
279 | msgid "Recognition result"
280 | msgstr "辨認結果"
281 |
282 | #: librairy/osd.py:71
283 | msgid "Calling command"
284 | msgstr "正在呼叫指令"
285 |
286 | #: librairy/osd.py:78
287 | msgid "Information"
288 | msgstr "資訊"
289 |
290 | #: librairy/osd.py:84
291 | msgid "Performing recording"
292 | msgstr "正在錄音"
293 |
294 | #: librairy/osd.py:85
295 | msgid "Please speak"
296 | msgstr "請說話"
297 |
298 | #: librairy/osd.py:95
299 | msgid "Done"
300 | msgstr "完成"
301 |
302 | #: librairy/SetupWindow.py:27
303 | msgid "Select your language"
304 | msgstr "選擇您的語言"
305 |
306 | #: librairy/SetupWindow.py:31
307 | msgid "Set the recording time (seconds)"
308 | msgstr "設定錄音時間(秒)"
309 |
310 | #: librairy/SetupWindow.py:34
311 | msgid "Set the music player's play command"
312 | msgstr "設定音樂播放器的播放指令"
313 |
314 | #: librairy/SetupWindow.py:37
315 | msgid "Set the music player's pause command"
316 | msgstr "設定音樂播放器的暫停指令"
317 |
318 | #: librairy/SetupWindow.py:40
319 | msgid "Hotword mode"
320 | msgstr "字詞偵測模式"
321 |
322 | #: librairy/SetupWindow.py:43
323 | msgid "Set the noise threshold"
324 | msgstr "設定噪音閾值"
325 |
326 | #: librairy/SetupWindow.py:46
327 | msgid "Set the hotword"
328 | msgstr "設定偵測字詞"
329 |
330 | #: librairy/SetupWindow.py:55
331 | msgid "Change the recording time"
332 | msgstr "變更錄音時間"
333 |
334 | #: librairy/SetupWindow.py:59
335 | msgid "Set the play command"
336 | msgstr "設定播放指令"
337 |
338 | #: librairy/SetupWindow.py:64
339 | msgid "Set the pause command"
340 | msgstr "設定暫停指令"
341 |
342 | #: librairy/SetupWindow.py:72
343 | msgid "Put the hotword mode ON or OFF"
344 | msgstr "開關字詞偵測模式"
345 |
346 | #: librairy/SetupWindow.py:78
347 | #, python-format
348 | msgid "Set the sound level in % under which sound is considerated as noise"
349 | msgstr "設定將低於這聲浪水平 % 的聲音判斷為噪音"
350 |
351 | #: librairy/SetupWindow.py:82
352 | msgid "Set the hotword to start effective recording"
353 | msgstr "設定使錄音生效的偵測字詞"
354 |
355 | #: librairy/SetupWindow.py:216
356 | msgid "What language to choose"
357 | msgstr "要選擇的語言"
358 |
359 | #: librairy/stringParser.py:84
360 | msgid "Setup file missing"
361 | msgstr "欠缺設定檔"
362 |
363 | #: librairy/workWithModule.py:55
364 | msgid "you didn't say the linking word"
365 | msgstr "您沒有說出連結詞語"
366 |
367 | #: librairy/workWithModule.py:59
368 | msgid "args file missing"
369 | msgstr "欠缺參數檔"
370 |
371 | #~ msgid "Module setup"
372 | #~ msgstr "模組設定"
373 |
374 | #~ msgid "word"
375 | #~ msgstr "詞語"
376 |
377 | #~ msgid "Setup window"
378 | #~ msgstr "設定視窗"
379 |
--------------------------------------------------------------------------------
/i18n/zh_MO/README.md:
--------------------------------------------------------------------------------
1 | Suggestion for zh_MO translators
2 | ================================
3 |
4 | If you want to update Cantonese (Traditional Chinese) translations, please update `i18n/yue_Hant/LC_MESSAGES/google2ubuntu.po` and `config/yue_Hant/default.xml`.
5 |
--------------------------------------------------------------------------------
/i18n/zh_MO/fallback:
--------------------------------------------------------------------------------
1 | yue_Hant
2 |
--------------------------------------------------------------------------------
/i18n/zh_MY/README.md:
--------------------------------------------------------------------------------
1 | Suggestion for zh_MY translators
2 | ================================
3 |
4 | If you want to update Simplified Chinese translations, please update `i18n/zh_Hans/LC_MESSAGES/google2ubuntu.po` and `config/zh_Hans/default.xml`.
5 |
--------------------------------------------------------------------------------
/i18n/zh_MY/fallback:
--------------------------------------------------------------------------------
1 | zh_Hans
2 |
--------------------------------------------------------------------------------
/i18n/zh_SG/README.md:
--------------------------------------------------------------------------------
1 | Suggestion for zh_SG translators
2 | ================================
3 |
4 | If you want to update Simplified Chinese translations, please update `i18n/zh_Hans/LC_MESSAGES/google2ubuntu.po` and `config/zh_Hans/default.xml`.
5 |
--------------------------------------------------------------------------------
/i18n/zh_SG/fallback:
--------------------------------------------------------------------------------
1 | zh_Hans
2 |
--------------------------------------------------------------------------------
/i18n/zh_TW/README.md:
--------------------------------------------------------------------------------
1 | Suggestion for zh_TW translators
2 | ================================
3 |
4 | If you want to update Traditional Chinese translations, please update `i18n/zh_Hant/LC_MESSAGES/google2ubuntu.po` and `config/zh_Hant/default.xml`.
5 |
--------------------------------------------------------------------------------
/i18n/zh_TW/fallback:
--------------------------------------------------------------------------------
1 | zh_Hant
2 |
--------------------------------------------------------------------------------
/librairy/ArgsWindow.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 | from gi.repository import Gtk
4 | from gi.repository import Notify
5 | from gi.repository import Gdk
6 | from gi.repository import Gio
7 | from os.path import expanduser
8 | import os, sys, subprocess, gettext
9 | import xml.etree.ElementTree as ET
10 |
11 | # gère l'apparition de la fenêtre d'assistance de création de module
12 | class ArgsWindow():
13 | """
14 | @description: Display a window to help the user create a config for a
15 | module
16 |
17 | @param module
18 | module's folder
19 |
20 | @param name
21 | module's name
22 |
23 | @param store
24 | a Gtk.Listore in which we will append a new line for this module
25 | """
26 | def __init__(self,module,name,store,iter=None):
27 | self.grid = Gtk.Grid()
28 | self.grid.set_border_width(5)
29 | self.grid.set_row_spacing(5)
30 | self.grid.set_vexpand(True)
31 | self.grid.set_hexpand(True)
32 | self.grid.set_column_spacing(2)
33 | self.grid.set_column_homogeneous(False)
34 |
35 | label1 = Gtk.Label(_('key sentence'))
36 | label1.set_justify(Gtk.Justification.LEFT)
37 | label1.set_halign(Gtk.Align.START)
38 | label1.set_hexpand(True)
39 |
40 | label2 = Gtk.Label(_("Linking word"))
41 | label2.set_justify(Gtk.Justification.LEFT)
42 | label2.set_halign(Gtk.Align.START)
43 |
44 | label3 = Gtk.Label(_("Replace space by plus"))
45 | label3.set_justify(Gtk.Justification.LEFT)
46 | label3.set_halign(Gtk.Align.START)
47 |
48 | ll = Gtk.Label()
49 | ll.set_vexpand(True)
50 |
51 | self.entry1 = Gtk.Entry()
52 | self.entry1.set_tooltip_text(_('key sentence'))
53 |
54 | self.entry2 = Gtk.Entry()
55 | self.entry2.set_tooltip_text(_("Word to separate call and parameter"))
56 | self.checkbutton = Gtk.Switch()
57 | self.checkbutton.set_tooltip_text(_("Replace space by plus"))
58 | self.checkbutton.set_active(False)
59 |
60 | button = Gtk.Button()
61 | button.set_label(_("Go"))
62 | button.set_tooltip_text(_("Go"))
63 | image = Gtk.Image()
64 | image.set_from_stock(Gtk.STOCK_APPLY, Gtk.IconSize.BUTTON)
65 | button.set_image(image)
66 |
67 | button_cancel = Gtk.Button.new_from_stock(Gtk.STOCK_CANCEL)
68 | button_cancel.connect("clicked",self.do_destroy)
69 |
70 | print module, name
71 | if iter is None:
72 | button.connect("clicked",self.do_clicked,module,name,store)
73 | else:
74 | self.entry1.set_text(store[iter][0])
75 | linker = store[iter][3]
76 | spacebyplus = store[iter][4]
77 | self.entry2.set_text(linker)
78 |
79 | if spacebyplus == '1':
80 | self.checkbutton.set_active(True)
81 | button.connect("clicked",self.do_modify,store[iter][3],store,iter)
82 |
83 | self.grid.attach(label1,0,0,11,1)
84 | self.grid.attach(self.entry1,11,0,4,1)
85 | self.grid.attach(label2,0,1,11,1)
86 | self.grid.attach(self.entry2,11,1,4,1)
87 | self.grid.attach(label3,0,2,14,1)
88 | self.grid.attach(self.checkbutton,14,2,1,1)
89 | self.grid.attach(ll,0,3,15,1)
90 | self.grid.attach(button_cancel,13,4,1,1)
91 | self.grid.attach(button,14,4,1,1)
92 | self.grid.show_all()
93 |
94 | def do_destroy(self,button):
95 | self.grid.destroy()
96 |
97 | def get_grid(self):
98 | return self.grid
99 |
100 | def do_clicked(self,button,module,name,store):
101 | """
102 | @description: callback function called when the user want to finish
103 | the configuration of the module. If everything is ok then the config
104 | file is written at the right place
105 | """
106 | key = self.entry1.get_text()
107 | linker = self.entry2.get_text()
108 | if self.checkbutton.get_active():
109 | spacebyplus='1'
110 | else:
111 | spacebyplus='0'
112 |
113 | if linker is not '':
114 | try:
115 | # folder = name.split('.')[0]
116 | module_path=expanduser('~')+'/.config/google2ubuntu/modules/'
117 |
118 | os.system('cp '+module+' '+module_path)
119 | print 'key', key
120 | print 'name', name
121 | print 'module', module_path+name
122 | print 'linker', linker
123 | print 'spacebyplus', spacebyplus
124 | store.append([key,name,'modules',linker,spacebyplus])
125 | #save the store
126 | self.saveTree(store)
127 | except IOError:
128 | "Unable to open the file"
129 |
130 | self.grid.destroy()
131 |
132 | def do_modify(self,button,argsfile,store,iter):
133 | if self.checkbutton.get_active():
134 | spacebyplus = 1
135 | else:
136 | spacebyplus = 0
137 |
138 | # modifying the store
139 | store[iter][0] = self.entry1.get_text()
140 | store[iter][3] = self.entry2.get_text()
141 | store[iter][4] = str(spacebyplus)
142 |
143 | #save the store
144 | self.saveTree(store)
145 | self.grid.destroy()
146 |
147 | def saveTree(self,store):
148 | """
149 | @description: save the treeview in the google2ubuntu.xml file
150 |
151 | @param: store
152 | the listStore attach to the treeview
153 | """
154 | # if there is still an entry in the model
155 | config = expanduser('~') +'/.config/google2ubuntu/google2ubuntu.xml'
156 | try:
157 | if not os.path.exists(os.path.dirname(config)):
158 | os.makedirs(os.path.dirname(config))
159 |
160 | root = ET.Element("data")
161 | if len(store) != 0:
162 | for i in range(len(store)):
163 | iter = store.get_iter(i)
164 | if store[iter][0] != '' and store[iter][1] != '':
165 | for s in store[iter][0].split('|'):
166 | s = s.lower()
167 | s = s.replace('*',' ')
168 | Type = ET.SubElement(root, "entry")
169 | Type.set("name",unicode(store[iter][2],"utf-8"))
170 | Key = ET.SubElement(Type, "key")
171 | Key.text = unicode(s,"utf-8")
172 | Command = ET.SubElement(Type, "command")
173 | Command.text = unicode(store[iter][1],"utf-8")
174 | Linker = ET.SubElement(Type, "linker")
175 | Spacebyplus = ET.SubElement(Type, "spacebyplus")
176 | if store[iter][3] is not None or store[iter][4] is not None:
177 | Linker.text = unicode(store[iter][3],"utf-8")
178 | Spacebyplus.text = unicode(store[iter][4],"utf-8")
179 |
180 | tree = ET.ElementTree(root).write(config,encoding="utf-8",xml_declaration=True)
181 |
182 | except IOError:
183 | print "Unable to write the file"
184 |
--------------------------------------------------------------------------------
/librairy/Googletts.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 | from os.path import expanduser
4 | from localehelper import LocaleHelper
5 | import urllib, urllib2, time, re, unicodedata, os, sys, locale
6 |
7 | class tts():
8 | """
9 | @description: Let google2ubuntu to use the Google tts API
10 |
11 | @param: the text to read to the user
12 | """
13 | def __init__(self,text):
14 | # need to put this line
15 | locale.setlocale(locale.LC_ALL, '')
16 |
17 | # make the program able to switch language
18 | p = os.path.dirname(os.path.abspath(__file__)).strip('librairy')
19 | localeHelper = LocaleHelper()
20 | lc = localeHelper.getLocale()
21 | text = unicodedata.normalize('NFKD', unicode(text,"utf-8"))
22 | text=text.encode("utf8")
23 | text = text.replace('\n',' ')
24 | text_list = re.split('(\,|\.)', text)
25 | combined_text = []
26 | output=open('/tmp/tts.mp3',"w")
27 |
28 | for idx, val in enumerate(text_list):
29 | if idx % 2 == 0:
30 | combined_text.append(val)
31 | else:
32 | joined_text = ''.join((combined_text.pop(),val))
33 | if len(joined_text) < 100:
34 | combined_text.append(joined_text)
35 | else:
36 | subparts = re.split('( )', joined_text)
37 | temp_string = ""
38 | temp_array = []
39 | for part in subparts:
40 | temp_string = temp_string + part
41 | if len(temp_string) > 80:
42 | temp_array.append(temp_string)
43 | temp_string = ""
44 | #append final part
45 | temp_array.append(temp_string)
46 | combined_text.extend(temp_array)
47 | #download chunks and write them to the output file
48 | for idx, val in enumerate(combined_text):
49 | mp3url = "http://translate.google.com/translate_tts?ie=UTF-8&tl=%s&q=%s&total=%s&idx=%s" % (lc, urllib.quote(val), len(combined_text), idx)
50 | print mp3url
51 | headers = {"Host":"translate.google.com",
52 | "Referer":"http://www.gstatic.com/translate/sound_player2.swf",
53 | "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.163 Safari/535.19"}
54 | req = urllib2.Request(mp3url, '', headers)
55 | sys.stdout.write('.')
56 | sys.stdout.flush()
57 | if len(val) > 0:
58 | try:
59 | response = urllib2.urlopen(req)
60 | output.write(response.read())
61 | time.sleep(.5)
62 | except urllib2.HTTPError as e:
63 | print ('%s' % e)
64 | output.close()
65 |
66 |
67 | os.system("play /tmp/tts.mp3 &")
68 |
--------------------------------------------------------------------------------
/librairy/HelpWindow.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 | from gi.repository import Gtk
4 | from gi.repository import Notify
5 | from gi.repository import Gdk
6 | from gi.repository import Gio
7 | from os.path import expanduser
8 | import os, sys, subprocess, gettext
9 |
10 | # gère l'apparition de le fenêtre d'aide
11 | class HelpWindow():
12 | """
13 | @description: Diaplay an help window
14 | """
15 | def __init__(self):
16 | #a Gtk.AboutDialog
17 | self.aboutdialog = Gtk.AboutDialog()
18 |
19 | # lists of authors and documenters (will be used later)
20 | authors = ["Franquet Benoit"]
21 | documenters = ["Franquet Benoit"]
22 | translators = "Franquet Benoit \n"
23 | translators += "Tectas\n"
24 | translators += "Daniele Scasciafratte \n"
25 | translators += "Leor \n"
26 | translators += "Ladios\n"
27 | translators += "Franck Claessen"
28 |
29 | # we fill in the aboutdialog
30 | self.aboutdialog.set_program_name(_("Help Google2Ubuntu"))
31 | self.aboutdialog.set_copyright("Copyright \xc2\xa9 2014 Franquet Benoit")
32 | self.aboutdialog.set_authors(authors)
33 | self.aboutdialog.set_translator_credits(translators)
34 | self.aboutdialog.set_documenters(documenters)
35 | self.aboutdialog.set_version("1.1.1")
36 | self.aboutdialog.set_license_type (Gtk.License.GPL_3_0,)
37 | self.aboutdialog.set_website("https://github.com/benoitfragit/google2ubuntu")
38 | self.aboutdialog.set_website_label("https://github.com/benoitfragit/google2ubuntu")
39 |
40 | # we do not want to show the title, which by default would be "About AboutDialog Example"
41 | # we have to reset the title of the messagedialog window after setting the program name
42 | self.aboutdialog.set_title("")
43 |
44 | # to close the aboutdialog when "close" is clicked we connect the
45 | # "response" signal to on_close
46 | self.aboutdialog.connect("response", self.on_close)
47 | # show the aboutdialog
48 | self.aboutdialog.show()
49 |
50 | # destroy the aboutdialog
51 | def on_close(self, action, parameter):
52 | """
53 | @description: function called when the user wants to close the window
54 |
55 | @param: action
56 | the window to close
57 | """
58 | action.destroy()
59 |
--------------------------------------------------------------------------------
/librairy/MainWindow.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 | from gi.repository import Gtk
4 | from gi.repository import Notify
5 | from gi.repository import Gdk
6 | from gi.repository import Gio
7 | from os.path import expanduser
8 | from add_window import add_window
9 | from SetupWindow import *
10 | import os
11 | import sys
12 | import subprocess
13 | import gettext
14 |
15 | # Classe MyWindow gere l'apparition de la fenetre principale
16 | class MainWindow(Gtk.ApplicationWindow):
17 | """
18 | @description: This class display the main window that the user will
19 | see when he wants to manage his commands
20 | """
21 | def __init__(self,app):
22 | Gtk.Window.__init__(self, title="google2ubuntu-manager",application=app)
23 | self.set_default_size(800, 400)
24 | self.set_resizable(True)
25 | self.set_border_width(0)
26 | self.get_focus()
27 | self.set_position(Gtk.WindowPosition.CENTER)
28 | path = os.path.dirname(os.path.abspath(__file__)).strip('librairy')
29 | self.set_default_icon_from_file(path+'/resources/icons.png')
30 |
31 | # get two button to switch between view
32 | button_config = Gtk.ToolButton.new_from_stock(Gtk.STOCK_PREFERENCES)
33 | button_config.set_label(_("Setup"))
34 | button_config.set_is_important(True)
35 | button_config.set_tooltip_text(_('Open setup window'))
36 | button_config.show()
37 | button_config.connect("clicked",self.change_page,1)
38 |
39 | button_back = Gtk.Button.new_from_stock(Gtk.STOCK_OK)
40 | button_back.connect("clicked",self.change_page,0)
41 | button_cancel = Gtk.Button.new_from_stock(Gtk.STOCK_CANCEL)
42 | button_cancel.connect("clicked",self.change_page,0)
43 |
44 | # get the main view
45 | content = add_window(button_config)
46 | label_main = Gtk.Label("main")
47 | config = SetupWindow(button_back,button_cancel)
48 | label_config = Gtk.Label("config")
49 |
50 | # create a Gtk.Notebook to store both page
51 | self.notebook = Gtk.Notebook.new()
52 | self.notebook.set_show_tabs(False)
53 | self.notebook.append_page(content.get_grid(),label_main)
54 | self.notebook.append_page(config.getGrid(),label_config)
55 |
56 | # show
57 | self.add(self.notebook)
58 | self.show_all()
59 |
60 | def change_page(self,button,page):
61 | self.notebook.set_current_page(page)
62 |
--------------------------------------------------------------------------------
/librairy/SetupWindow.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 | from gi.repository import Gtk
4 | from gi.repository import Notify
5 | from gi.repository import Gdk
6 | from gi.repository import Gio
7 | from os.path import expanduser
8 | from localehelper import LocaleHelper
9 | import os, sys, gettext
10 |
11 | class SetupWindow():
12 | def __init__(self,button_back, button_cancel):
13 | # class variables
14 | localeHelper = LocaleHelper('en_EN')
15 | self.locale = localeHelper.getLocale()
16 | self.recording_time = 5
17 | self.player_pause = ''
18 | self.player_play = ''
19 | self.dictation = False
20 | self.config = expanduser('~')+'/.config/google2ubuntu/google2ubuntu.conf'
21 | self.threshold = 5
22 | self.key = ''
23 | self.hotword = _('ok start')
24 |
25 | # looking for the configuration file
26 | self.__loadconfig()
27 |
28 | label0=Gtk.Label(_('Set Google Api Key'))
29 | label0.set_justify(Gtk.Justification.LEFT)
30 | label0.set_halign(Gtk.Align.START)
31 | label1=Gtk.Label(_('Select your language'))
32 | label1.set_justify(Gtk.Justification.LEFT)
33 | label1.set_halign(Gtk.Align.START)
34 | label1.set_hexpand(True)
35 | label2=Gtk.Label(_('Set the recording time (seconds)'))
36 | label2.set_justify(Gtk.Justification.LEFT)
37 | label2.set_halign(Gtk.Align.START)
38 | label3=Gtk.Label(_("Set the music player's play command"))
39 | label3.set_justify(Gtk.Justification.LEFT)
40 | label3.set_halign(Gtk.Align.START)
41 | label4=Gtk.Label(_("Set the music player's pause command"))
42 | label4.set_justify(Gtk.Justification.LEFT)
43 | label4.set_halign(Gtk.Align.START)
44 | label5=Gtk.Label(_('Hotword mode'))
45 | label5.set_justify(Gtk.Justification.LEFT)
46 | label5.set_halign(Gtk.Align.START)
47 | label6=Gtk.Label(_('Set the noise threshold'))
48 | label6.set_justify(Gtk.Justification.LEFT)
49 | label6.set_halign(Gtk.Align.START)
50 | label7 = Gtk.Label(_('Set the hotword'))
51 | label7.set_justify(Gtk.Justification.LEFT)
52 | label7.set_halign(Gtk.Align.START)
53 |
54 | combo = self.__get_combobox()
55 |
56 | self.scale = Gtk.Scale.new_with_range(Gtk.Orientation.HORIZONTAL,1,10,1)
57 | self.scale.set_value(self.recording_time)
58 | self.scale.connect("value-changed", self.scale_moved)
59 | self.scale.set_tooltip_text(_('Change the recording time'))
60 |
61 | self.entry0 = Gtk.Entry()
62 | self.entry0.set_text(self.key)
63 | self.entry0.set_tooltip_text(_('Set the Google Api Key'));
64 |
65 | self.entry1 = Gtk.Entry()
66 | self.entry1.set_text(self.player_play)
67 | self.entry1.set_tooltip_text(_('Set the play command'))
68 |
69 |
70 | self.entry2 = Gtk.Entry()
71 | self.entry2.set_text(self.player_pause)
72 | self.entry2.set_tooltip_text(_('Set the pause command'))
73 |
74 | switch_active = Gtk.Switch()
75 | switch_active.set_active(False)
76 | switch_active.set_hexpand(False)
77 | if os.path.exists('/tmp/hotword'):
78 | switch_active.set_active(True)
79 |
80 | switch_active.set_tooltip_text(_('Put the hotword mode ON or OFF'))
81 | switch_active.connect("notify::active", self.active_hotword)
82 |
83 | self.scale_threshold = Gtk.Scale.new_with_range(Gtk.Orientation.HORIZONTAL,1,20,0.5)
84 | self.scale_threshold.set_value(self.threshold)
85 | self.scale_threshold.connect("value-changed",self.threshold_changed)
86 | self.scale_threshold.set_tooltip_text(_('Set the sound level in % under which sound is considerated as noise'))
87 |
88 | self.entry3 = Gtk.Entry()
89 | self.entry3.set_text(self.hotword)
90 | self.entry3.set_tooltip_text(_('Set the hotword to start effective recording'))
91 |
92 | button_back.connect("clicked",self.on_clicked)
93 |
94 | # an invisble widget to fill the window
95 | ll = Gtk.Label()
96 | ll.set_vexpand(True)
97 |
98 | self.grid = Gtk.Grid()
99 | self.grid.set_border_width(10)
100 | self.grid.set_row_spacing(15)
101 | self.grid.set_vexpand(True)
102 | self.grid.set_hexpand(True)
103 | self.grid.set_column_spacing(2)
104 | self.grid.set_column_homogeneous(False)
105 | self.grid.attach(label1,0,0,14,1)
106 | self.grid.attach(combo,14,0,1,1)
107 | self.grid.attach(label2,0,1,11,1)
108 | self.grid.attach(self.scale, 11,1,4,1)
109 | self.grid.attach(label3,0,2,11,1)
110 | self.grid.attach(self.entry1,11,2,4,1)
111 | self.grid.attach(label4,0,3,11,1)
112 | self.grid.attach(self.entry2,11,3,4,1)
113 | self.grid.attach(label5,0,4,14,1)
114 | self.grid.attach(switch_active,14,4,1,1)
115 | self.grid.attach(label7,0,5,11,1)
116 | self.grid.attach(self.entry3,11,5,4,1)
117 | self.grid.attach(label6,0,6,11,1)
118 | self.grid.attach(self.scale_threshold,11,6,4,1)
119 | self.grid.attach(label0, 0, 7, 11, 1)
120 | self.grid.attach(self.entry0, 11, 7, 4, 1)
121 | self.grid.attach(ll,0,8,15,1)
122 | self.grid.attach(button_cancel,13,9,1,1)
123 | self.grid.attach(button_back,14,9,1,1)
124 |
125 | # load the config
126 | def __loadconfig(self):
127 | # if a config file is available
128 | if os.path.exists(self.config):
129 | try:
130 | # here we load
131 | with open(self.config,"r") as f:
132 | for line in f.readlines():
133 | line = line.strip('\n')
134 | #get the field
135 | field = line.split('=')
136 | if len(field) >= 2:
137 | if field[0] == 'recording':
138 | self.recording_time=int(field[1])
139 | elif field[0] == 'pause':
140 | self.player_pause = field[1].replace('"','')
141 | elif field[0] == 'play':
142 | self.player_play = field[1].replace('"','')
143 | elif field[0] == 'hotword':
144 | self.hotword = field[1].replace('"','')
145 | elif field[0] == 'threshold':
146 | self.threshold = int(field[1])
147 | elif field[0] == 'key':
148 | self.key = field[1].replace('"','')
149 |
150 | # here we check mode
151 | if os.path.exists('/tmp/g2u_dictation'):
152 | self.dictation = True
153 | except Exception:
154 | print 'Config file', self.config
155 | print 'missing...'
156 |
157 | # record the config
158 | def __recordconfig(self):
159 | try:
160 | with open(self.config, "w") as f:
161 | f.write('recording='+str(self.recording_time)+'\n')
162 | f.write('pause="'+self.entry2.get_text()+'"\n')
163 | f.write('play="'+self.entry1.get_text()+'"\n')
164 | f.write('locale='+self.locale+'\n')
165 | f.write('hotword="'+self.entry3.get_text()+'"\n')
166 | f.write('threshold='+str(self.threshold)+'\n')
167 | f.write('key="'+self.entry0.get_text()+'"\n')
168 | f.close()
169 | except Exception:
170 | print 'Config file', self.config
171 | print 'Unable to write'
172 |
173 | # get the grid
174 | def getGrid(self):
175 | return self.grid
176 |
177 | def scale_moved(self,event):
178 | self.recording_time = int(self.scale.get_value())
179 | self.__recordconfig()
180 |
181 | def threshold_changed(self,event):
182 | self.threshold = int(self.scale_threshold.get_value())
183 | self.__recordconfig()
184 |
185 | def active_hotword(self,button,active):
186 | if button.get_active():
187 | p = os.path.dirname(os.path.abspath(__file__)).strip('librairy')
188 | os.system('bash '+p + 'listen.sh &')
189 | else:
190 | if os.path.exists('/tmp/hotword'):
191 | os.remove('/tmp/hotword')
192 |
193 | def dictation_state(self,button,active):
194 | if button.get_active() :
195 | f=open('/tmp/g2u_dictation',"w")
196 | f.close()
197 | else:
198 | if os.path.exists('/tmp/g2u_dictation'):
199 | os.remove('/tmp/g2u_dictation')
200 |
201 | def on_clicked(self,button):
202 | self.__recordconfig()
203 | #self.w.destroy()
204 |
205 | # return a combobox to add to the toolbar
206 | def __get_combobox(self):
207 | """
208 | @description: get the combobox of the toolbar
209 |
210 | @return: a Gtk.Combobox
211 | """
212 | # the data in the model, of type string
213 | locale_path = os.path.dirname(os.path.abspath(__file__))+'/../i18n'
214 | listmodel = Gtk.ListStore(str)
215 | # append the data in the model
216 | selected=0
217 | i=0
218 | self.LANG = {}
219 | for language in os.listdir(locale_path):
220 | if os.path.isdir(locale_path+'/'+language+'/LC_MESSAGES'):
221 | listmodel.append([language])
222 | self.LANG[i] = language
223 | if language == self.locale:
224 | selected = i
225 | i+=1
226 |
227 | # a combobox to see the data stored in the model
228 | combobox = Gtk.ComboBox(model=listmodel)
229 | combobox.set_tooltip_text(_("What language to choose")+'?')
230 |
231 | # a cellrenderer to render the text
232 | cell = Gtk.CellRendererText()
233 |
234 | # pack the cell into the beginning of the combobox, allocating
235 | # no more space than needed
236 | combobox.pack_start(cell, False)
237 | # associate a property ("text") of the cellrenderer (cell) to a column (column 0)
238 | # in the model used by the combobox
239 | combobox.add_attribute(cell, "text", 0)
240 |
241 | # the first row is the active one by default at the beginning
242 | combobox.set_active(selected)
243 |
244 | # connect the signal emitted when a row is selected to the callback function
245 | combobox.connect("changed", self.on_combochanged)
246 | return combobox
247 |
248 | def on_combochanged(self,combo):
249 | self.locale = str(self.LANG[combo.get_active()])
250 | self.__recordconfig()
251 |
--------------------------------------------------------------------------------
/librairy/basicCommands.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 | from gi.repository import Gtk
4 | from gi.repository import Gdk
5 | from subprocess import *
6 | from Googletts import tts
7 | import os, gettext, time, subprocess
8 |
9 | # Permet de faire appel aux fonctions basiques
10 | class basicCommands():
11 | """
12 | @description: Called when the user wants to start an internal command
13 | for the moment there is 3 internal commands:
14 |
15 | * time
16 | * clipboard
17 | * hour
18 |
19 | @param text
20 | name of the function to launch
21 |
22 | @param PID
23 | the program's pid to synchronize osd notification
24 | """
25 | def __init__(self,text,PID):
26 | # suivant le paramètre reçu, on exécute une action
27 | self.pid = PID
28 | if text == _('time'):
29 | self.getTime()
30 | elif text == _('power'):
31 | self.getPower()
32 | elif text == _('clipboard'):
33 | self.read_clipboard()
34 | elif text == _('dictation mode'):
35 | f=open('/tmp/g2u_dictation',"w")
36 | f.close()
37 | elif text == _('exit dictation mode'):
38 | os.remove('/tmp/g2u_dictation')
39 | else:
40 | print "no action found"
41 |
42 | def read_clipboard(self):
43 | """
44 | @description: A function to make google2ubuntu reads the selected
45 | text
46 | """
47 | clipboard = Gtk.Clipboard.get(Gdk.SELECTION_PRIMARY)
48 |
49 | text = clipboard.wait_for_text()
50 | if text != None:
51 | text=text.replace("'",' ')
52 | print "read:", text
53 | tts(text)
54 | else:
55 | tts(_('Nothing in the clipboard'))
56 |
57 | def getTime(self):
58 | """
59 | @description: a function that let google2ubuntu read and display
60 | the current timme
61 | """
62 | var=time.strftime('%H:%M',time.localtime())
63 | hour=var.split(':')[0]
64 | minute=var.split(':')[1]
65 |
66 | message = _('it is')+' '+hour+' '+_('hour')+' '+minute+' '+_('minute')
67 | os.system('echo "'+var+'" > /tmp/g2u_display_'+self.pid)
68 | print message
69 | tts(message)
70 |
71 | def getPower(self):
72 | """
73 | @description: a function that let google2ubuntu read and display
74 | the current power state
75 | """
76 | command = "acpi -b"
77 | process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
78 | output,error = process.communicate()
79 | #parsing output
80 | if output.count('Battery') > 0:
81 | pcent = output.split(' ')[3]
82 | rtime = output.split(' ')[4]
83 |
84 | if output.count('Charging') > 0:
85 | message = _('Charging')+': '+pcent+'\n'+rtime+' '+_('before charging')
86 | else:
87 | message = _('Discharging')+': '+pcent+'\n'+rtime+' '+_('remaining')
88 | else:
89 | message = _('battery is not plugged')
90 |
91 | os.system('echo "'+message+'" > /tmp/g2u_display_'+self.pid)
92 | tts(message)
93 |
--------------------------------------------------------------------------------
/librairy/externalWindow.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 | from gi.repository import Gtk
4 | from gi.repository import Notify
5 | from gi.repository import Gdk
6 | from gi.repository import Gio
7 | from os.path import expanduser
8 | import os, sys, subprocess, gettext, locale
9 | import xml.etree.ElementTree as ET
10 |
11 | class externalWindow():
12 | def __init__(self,store,iter=None):
13 | self.grid = Gtk.Grid()
14 | self.grid.set_border_width(5)
15 | self.grid.set_row_spacing(5)
16 | self.grid.set_vexpand(True)
17 | self.grid.set_hexpand(True)
18 | self.grid.set_column_spacing(2)
19 | self.grid.set_column_homogeneous(False)
20 | label1 = Gtk.Label(_('key sentence'))
21 | label1.set_hexpand(True)
22 | label1.set_justify(Gtk.Justification.LEFT)
23 | label1.set_halign(Gtk.Align.START)
24 | label2 = Gtk.Label(_('your command'))
25 | label2.set_justify(Gtk.Justification.LEFT)
26 | label2.set_halign(Gtk.Align.START)
27 | ll = Gtk.Label()
28 | ll.set_vexpand(True)
29 | self.entry1 = Gtk.Entry()
30 | self.entry2 = Gtk.Entry()
31 |
32 | if iter is not None:
33 | self.entry1.set_text(store[iter][0])
34 | self.entry2.set_text(store[iter][1])
35 |
36 | button = Gtk.Button.new_from_stock(Gtk.STOCK_OK)
37 | button.connect("clicked",self.button_clicked,store,iter)
38 | button_cancel = Gtk.Button.new_from_stock(Gtk.STOCK_CANCEL)
39 | button_cancel.connect("clicked",self.do_destroy)
40 |
41 | self.grid.attach(label1,0,0,11,1)
42 | self.grid.attach(self.entry1,11,0,4,1)
43 | self.grid.attach(label2,0,1,11,1)
44 | self.grid.attach(self.entry2,11,1,4,1)
45 | self.grid.attach(ll,0,2,15,1)
46 | self.grid.attach(button_cancel,13,3,1,1)
47 | self.grid.attach(button,14,3,1,1)
48 | self.grid.show_all()
49 |
50 | def do_destroy(self,button):
51 | self.grid.destroy()
52 |
53 | def get_grid(self):
54 | return self.grid
55 |
56 | def button_clicked(self,button,store,iter):
57 | if iter is None:
58 | if self.entry1.get_text() is not '' and self.entry2.get_text() is not '':
59 | store.append([self.entry1.get_text(),self.entry2.get_text(),_('external'), ' ',' '])
60 | self.saveTree(store)
61 | elif iter is not None:
62 | store[iter][0] = str(self.entry1.get_text())
63 | store[iter][1] = str(self.entry2.get_text())
64 | self.saveTree(store)
65 |
66 | self.grid.destroy()
67 |
68 | def saveTree(self,store):
69 | """
70 | @description: save the treeview in the google2ubuntu.xml file
71 |
72 | @param: store
73 | the listStore attach to the treeview
74 | """
75 | # if there is still an entry in the model
76 | config = expanduser('~') +'/.config/google2ubuntu/google2ubuntu.xml'
77 | try:
78 | if not os.path.exists(os.path.dirname(config)):
79 | os.makedirs(os.path.dirname(config))
80 |
81 | root = ET.Element("data")
82 | if len(store) != 0:
83 | for i in range(len(store)):
84 | iter = store.get_iter(i)
85 | if store[iter][0] != '' and store[iter][1] != '':
86 | for s in store[iter][0].split('|'):
87 | s = s.lower()
88 | s = s.replace('*',' ')
89 | Type = ET.SubElement(root, "entry")
90 | Type.set("name",unicode(store[iter][2],"utf-8"))
91 | Key = ET.SubElement(Type, "key")
92 | Key.text = unicode(s,"utf-8")
93 | Command = ET.SubElement(Type, "command")
94 | Command.text = unicode(store[iter][1],"utf-8")
95 | Linker = ET.SubElement(Type, "linker")
96 | Spacebyplus = ET.SubElement(Type, "spacebyplus")
97 | if store[iter][3] is not None and store[iter][4] is not None:
98 | Linker.text = unicode(store[iter][3],"utf-8")
99 | Spacebyplus.text = unicode(store[iter][4],"utf-8")
100 |
101 |
102 | tree = ET.ElementTree(root).write(config,encoding="utf-8",xml_declaration=True)
103 |
104 | except IOError:
105 | print "Unable to write the file"
106 |
--------------------------------------------------------------------------------
/librairy/interface.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 | from subprocess import *
4 | from os.path import expanduser
5 | import sys, subprocess, os, json, urllib2, unicodedata, time, gettext, locale
6 |
7 | from Googletts import tts
8 | from stringParser import stringParser
9 | from localehelper import LocaleHelper
10 |
11 | # La classe interface permet de lancer l'enregistrement et de communiquer
12 | # avec Google
13 | class interface():
14 | """
15 | @description: This class start the osd server, then start recording your voice before
16 | asking Google for the translation. Then, the result is parsing in order to
17 | execute the associated action
18 | """
19 | def __init__(self, key):
20 | # make the program able to switch language
21 | self.p = os.path.dirname(os.path.abspath(__file__)).strip('librairy')
22 |
23 | localeHelper = LocaleHelper('en_EN')
24 |
25 | self.lang = localeHelper.getLocale()
26 | # this line can be remove if we modify the config/en_EN to config/en
27 | #self.lang = self.lang+'_'+self.lang.upper()
28 |
29 | # Initialisation des notifications
30 | self.PID = str(os.getpid())
31 | os.system('rm /tmp/g2u_*_'+self.PID+' 2>/dev/null')
32 | os.system('python '+self.p+'librairy/osd.py '+self.PID+' &')
33 |
34 | # on joue un son pour signaler le démarrage
35 | os.system('play '+self.p+'resources/sound.wav &')
36 | os.system('> /tmp/g2u_start_'+self.PID)
37 |
38 | # On lance le script d'enregistrement pour acquérir la voix pdt 5s
39 | command =self.p+'record.sh ' + self.PID
40 | p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
41 | output,error = p.communicate()
42 | # return to 16kHz
43 | os.system(self.p+'convert.sh '+self.PID)
44 | self.sendto(key)
45 |
46 | def sendto(self, key):
47 | """
48 | @function: Send the flac file to Google and start the parser
49 | """
50 | # lecture du fichier audio
51 | filename='/tmp/voix_'+self.PID+'.flac'
52 | f = open(filename)
53 | data = f.read()
54 | f.close()
55 |
56 | # suppression du fichier audio
57 | if os.path.exists('/tmp/voix_'+self.PID+'.flac'):
58 | os.system('rm /tmp/voix_'+self.PID+'.flac')
59 |
60 | # fichier de configuration
61 | config = expanduser('~') + '/.config/google2ubuntu/google2ubuntu.xml'
62 | default = self.p +'config/'+self.lang+'/default.xml'
63 |
64 | if os.path.exists(config):
65 | config_file = config
66 | else:
67 | if os.path.exists(expanduser('~') +'/.config/google2ubuntu') == False:
68 | os.makedirs(expanduser('~') +'/.config/google2ubuntu')
69 | if os.path.exists(expanduser('~') +'/.config/google2ubuntu/modules') == False:
70 | os.system('cp -r '+self.p+'/modules '+expanduser('~') +'/.config/google2ubuntu')
71 | if os.path.exists(default) == False:
72 | default = self.p+'config/en_EN/default.xml'
73 |
74 | config_file = default
75 |
76 | print 'config file:', config_file
77 | print key
78 | try:
79 | # envoie une requête à Google
80 | #req = urllib2.Request('https://www.google.com/speech-api/v2/recognize?output=json&lang='+self.lang+'&key=AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw&client=chromium', data=data, headers={'Content-type': 'audio/x-flac; rate=16000'})
81 | req = urllib2.Request('https://www.google.com/speech-api/v2/recognize?output=json&lang='+self.lang+'&key='+key+'&client=chromium', data=data, headers={'Content-type': 'audio/x-flac; rate=16000'})
82 | # retour de la requête
83 | ret = urllib2.urlopen(req)
84 | response = ret.read()
85 | response = response.split('\n', 1)[1]
86 | text = response.split('"transcript":"',2)[1].split('"',2)[0]
87 | # parsing du retour
88 | #text=json.load(response)
89 | os.system('echo "'+text.encode("utf-8")+'" > /tmp/g2u_result_'+self.PID)
90 |
91 | # parsing du résultat pour trouver l'action
92 | sp = stringParser(text,config_file,self.PID)
93 | except Exception:
94 | message = _('unable to translate')
95 | os.system('echo "'+message+'" > /tmp/g2u_error_'+self.PID)
96 | sys.exit(1)
97 |
--------------------------------------------------------------------------------
/librairy/internalWindow.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 | from gi.repository import Gtk
4 | from gi.repository import Notify
5 | from gi.repository import Gdk
6 | from gi.repository import Gio
7 | from os.path import expanduser
8 | import os, sys, subprocess, gettext, locale
9 | import xml.etree.ElementTree as ET
10 |
11 | class internalWindow():
12 | def __init__(self,store,iter=None):
13 | self.grid = Gtk.Grid()
14 | self.grid.set_border_width(5)
15 | self.grid.set_row_spacing(5)
16 | self.grid.set_vexpand(True)
17 | self.grid.set_hexpand(True)
18 | self.grid.set_column_spacing(2)
19 | self.grid.set_column_homogeneous(False)
20 | self.grid.set_row_homogeneous(False)
21 |
22 | label1 = Gtk.Label(_('key sentence'))
23 | label1.set_justify(Gtk.Justification.LEFT)
24 | label1.set_halign(Gtk.Align.START)
25 | label1.set_hexpand(True)
26 | label2 = Gtk.Label(_('your command'))
27 | label2.set_justify(Gtk.Justification.LEFT)
28 | label2.set_halign(Gtk.Align.START)
29 | ll = Gtk.Label()
30 | ll.set_vexpand(True)
31 | self.entry1 = Gtk.Entry()
32 | if iter is not None:
33 | self.entry1.set_text(store[iter][0])
34 |
35 | self.combo = self.__get_combobox(store,iter)
36 | button = Gtk.Button.new_from_stock(Gtk.STOCK_OK)
37 | button.connect("clicked",self.button_clicked,store,iter)
38 | button_cancel = Gtk.Button.new_from_stock(Gtk.STOCK_CANCEL)
39 | button_cancel.connect("clicked",self.do_destroy)
40 |
41 |
42 | self.grid.attach(label1,0,0,11,1)
43 | self.grid.attach(self.entry1,11,0,4,1)
44 | self.grid.attach(label2,0,1,11,1)
45 | self.grid.attach(self.combo,11,1,4,1)
46 | self.grid.attach(ll,0,2,15,1)
47 | self.grid.attach(button_cancel,13,3,1,1)
48 | self.grid.attach(button,14,3,1,1)
49 | self.grid.show_all()
50 |
51 | def do_destroy(self,button):
52 | self.grid.destroy()
53 |
54 | def get_grid(self):
55 | return self.grid
56 |
57 | def button_clicked(self,button,store,iter):
58 | if iter is None:
59 | if self.entry1.get_text() is not '':
60 | store.append([self.entry1.get_text(),str(self.dic[self.combo.get_active()]),_('internal'),' ',' '])
61 | self.saveTree(store)
62 | else:
63 | store[iter][0] = str(self.entry1.get_text())
64 | store[iter][1] = str(self.dic[self.combo.get_active()])
65 | self.saveTree(store)
66 |
67 | self.grid.destroy()
68 |
69 | # return a combobox to add to the toolbar
70 | def __get_combobox(self,store,iter):
71 | """
72 | @description: get the combobox of the toolbar
73 |
74 | @return: a Gtk.Combobox
75 | """
76 | # the data in the model, of type string
77 | listmodel = Gtk.ListStore(str)
78 | # append the data in the model
79 | self.dic = {}
80 | self.dic[0] = _('time')
81 | listmodel.append([_('time')])
82 | self.dic[1] = _('power')
83 | listmodel.append([_('power')])
84 | self.dic[2] = _('clipboard')
85 | listmodel.append([_('clipboard')])
86 | self.dic[3] = _('dictation mode')
87 | listmodel.append([_('dictation mode')])
88 | self.dic[4] = _('exit dictation mode')
89 | listmodel.append([_('exit dictation mode')])
90 |
91 | selected = 0
92 | if iter is not None:
93 | for i in range(len(self.dic)):
94 | if self.dic[i] == store[iter][1]:
95 | selected = i
96 |
97 | # a combobox to see the data stored in the model
98 | combobox = Gtk.ComboBox(model=listmodel)
99 | combobox.set_tooltip_text(_("Which internal command to choose")+'?')
100 |
101 | # a cellrenderer to render the text
102 | cell = Gtk.CellRendererText()
103 |
104 | # pack the cell into the beginning of the combobox, allocating
105 | # no more space than needed
106 | combobox.pack_start(cell, False)
107 | # associate a property ("text") of the cellrenderer (cell) to a column (column 0)
108 | # in the model used by the combobox
109 | combobox.add_attribute(cell, "text", 0)
110 |
111 | # the first row is the active one by default at the beginning
112 | combobox.set_active(selected)
113 |
114 | return combobox
115 |
116 | def saveTree(self,store):
117 | """
118 | @description: save the treeview in the google2ubuntu.xml file
119 |
120 | @param: store
121 | the listStore attach to the treeview
122 | """
123 | # if there is still an entry in the model
124 | config = expanduser('~') +'/.config/google2ubuntu/google2ubuntu.xml'
125 | try:
126 | if not os.path.exists(os.path.dirname(config)):
127 | os.makedirs(os.path.dirname(config))
128 |
129 | root = ET.Element("data")
130 | if len(store) != 0:
131 | for i in range(len(store)):
132 | iter = store.get_iter(i)
133 | if store[iter][0] != '' and store[iter][1] != '':
134 | for s in store[iter][0].split('|'):
135 | s = s.lower()
136 | s = s.replace('*',' ')
137 | Type = ET.SubElement(root, "entry")
138 | Type.set("name",unicode(store[iter][2],"utf-8"))
139 | Key = ET.SubElement(Type, "key")
140 | Key.text = unicode(s,"utf-8")
141 | Command = ET.SubElement(Type, "command")
142 | Command.text = unicode(store[iter][1],"utf-8")
143 | Linker = ET.SubElement(Type, "linker")
144 | Spacebyplus = ET.SubElement(Type, "spacebyplus")
145 | if store[iter][3] is not None and store[iter][4] is not None:
146 | Linker.text = unicode(store[iter][3],"utf-8")
147 | Spacebyplus.text = unicode(store[iter][4],"utf-8")
148 |
149 | tree = ET.ElementTree(root).write(config,encoding="utf-8",xml_declaration=True)
150 |
151 | except IOError:
152 | print "Unable to write the file"
153 |
--------------------------------------------------------------------------------
/librairy/localehelper.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 | from os.path import expanduser
4 | import locale
5 | import os
6 |
7 | RELATIVE_LOCALE_CONFIG_PATH = '/.config/google2ubuntu/google2ubuntu.conf'
8 |
9 | class LocaleHelper:
10 | def __init__(self, defaultLocale='en_EN', languageFolder=os.path.dirname(os.path.abspath(__file__)) + '/../i18n/'):
11 | systemLocale = locale.getlocale()
12 |
13 | self.__systemLocale = None
14 |
15 | if systemLocale is not None and len(systemLocale) > 0:
16 | if systemLocale[0] is not None and len(systemLocale[0]) > 0:
17 | self.__systemLocale = systemLocale[0]
18 |
19 | self.__languageFolder = languageFolder
20 | self.__defaultLocale = defaultLocale
21 | self.__localeConfPath = expanduser('~') + RELATIVE_LOCALE_CONFIG_PATH
22 |
23 | def __getSystemLocale(self):
24 | if self.__checkIfLocalePresent(self.__systemLocale):
25 | return self.__systemLocale
26 | else:
27 | fallback = self.__getLocaleFallbackValue(self.__systemLocale)
28 | if self.__checkIfLocalePresent(fallback):
29 | return fallback
30 | else:
31 | return self.__defaultLocale
32 |
33 | def __readSingleLine(self, filePath):
34 | fileHandle = None
35 | line = None
36 | try:
37 | fileHandle = open(filePath, 'r')
38 | line = fileHandle.readline().strip('\n')
39 | except:
40 | pass
41 | finally:
42 | if fileHandle:
43 | fileHandle.close()
44 | return line
45 |
46 | def __getLocaleConfigValue(self):
47 | fileHandle = None
48 | lc = None
49 | try:
50 | fileHandle = open(self.__localeConfPath, 'r')
51 | for ligne in fileHandle.readlines():
52 | ligne = ligne.strip('\n')
53 | field=ligne.split('=')
54 | if field[0] == 'locale':
55 | lc = field[1]
56 |
57 | except:
58 | pass
59 | finally:
60 | if fileHandle:
61 | fileHandle.close()
62 | if self.__checkIfLocalePresent(lc):
63 | return lc
64 | else:
65 | return self.__getSystemLocale()
66 |
67 | def __getLocaleFallbackValue(self, lang):
68 | if lang is not None and lang != '':
69 | return self.__readSingleLine(self.__languageFolder + lang + '/fallback')
70 | return None
71 |
72 | def __checkIfLocalePresent(self, lang):
73 | if lang is not None:
74 | if lang.strip() != '' and os.path.isdir(self.__languageFolder + lang + '/LC_MESSAGES') == True:
75 | return True
76 |
77 | return False
78 |
79 | def getFormatedLocaleString(self, localeString, longFormat=True):
80 | if localeString is None:
81 | return None
82 | elif localeString.strip() == '':
83 | return None
84 |
85 | localeString = localeString.replace(' ', '')
86 |
87 | if '_' not in localeString and longFormat == True:
88 | localeString = localeString + '_' + localeString.upper()
89 | elif '_' in localeString and longFormat == False:
90 | localeString = localeString.split('_')[0]
91 |
92 | return localeString
93 |
94 | def getLocale(self, longFormat=True):
95 | return self.getFormatedLocaleString(self.__getLocaleConfigValue(), longFormat)
96 |
--------------------------------------------------------------------------------
/librairy/moduleSelection.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 | from gi.repository import Gtk
4 | from gi.repository import Notify
5 | from gi.repository import Gdk
6 | from gi.repository import Gio
7 | from os.path import expanduser
8 | import os, sys, subprocess, gettext
9 |
10 | # gère l'apparition de la fenêtre de choix du module
11 | class moduleSelection():
12 | """
13 | @description: This class display an fileChooserDialog when the user
14 | wants to add a new module from the menu of the main window
15 | """
16 | def __init__(self):
17 | w=Gtk.Window()
18 | dialog = Gtk.FileChooserDialog(_("Choose a file"), w,Gtk.FileChooserAction.OPEN,(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
19 | dialog.set_default_size(800, 400)
20 |
21 | response = dialog.run()
22 | self.module = '-1'
23 | if response == Gtk.ResponseType.OK:
24 | self.module=dialog.get_filename()
25 | elif response == Gtk.ResponseType.CANCEL:
26 | print("Cancel clicked")
27 |
28 | dialog.destroy()
29 |
30 | def getModule(self):
31 | """
32 | @description: return the module selected
33 |
34 | @return: return the path to the executable of the module
35 | """
36 | return self.module
37 |
--------------------------------------------------------------------------------
/librairy/osd.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 | from gi.repository import Gtk
4 | from gi.repository import Gdk
5 | from gi.repository import Notify
6 | from os.path import expanduser
7 | from localehelper import LocaleHelper
8 | import time, os, gettext, sys, locale
9 |
10 | path = os.path.dirname(os.path.abspath(__file__)).strip('librairy')
11 | localeHelper = LocaleHelper()
12 | lang = localeHelper.getLocale()
13 | t=gettext.translation('google2ubuntu',path+'i18n/',languages=[lang])
14 | t.install()
15 |
16 | #keep the old way for the moment
17 | #gettext.install('google2ubuntu',path+'/i18n/')
18 | RESULT = False
19 | path += 'resources'
20 |
21 |
22 | if len(sys.argv) >= 2:
23 | PID = sys.argv[1]
24 | # nom des fichiers
25 | start='/tmp/g2u_start_'+PID
26 | stop='/tmp/g2u_stop_'+PID
27 | result='/tmp/g2u_result_'+PID
28 | cmd='/tmp/g2u_cmd_'+PID
29 | error='/tmp/g2u_error_'+PID
30 | display='/tmp/g2u_display_'+PID
31 |
32 |
33 | # initialisation
34 | Notify.init("google2ubuntu")
35 | n = Notify.Notification.new('google2ubuntu',_('Ready'),path+"/icons.png")
36 | n.set_urgency(Notify.Urgency.CRITICAL)
37 | n.show()
38 |
39 | while os.path.exists(start) == False:
40 | n.update('google2ubuntu',_('Ready'), path+"/icons.png")
41 | n.show()
42 | time.sleep(0.5)
43 |
44 | i = 0
45 | delay=0.1
46 | while os.path.exists(stop) == False:
47 | if os.path.exists(error):
48 | f = open(error,"r")
49 | title = _('Error')
50 | body = f.readline().rstrip('\n')
51 | f.close
52 | n.update(title, body,icon = path+"/error.png")
53 | n.show()
54 | time.sleep(2)
55 | n.close()
56 | os.system('rm /tmp/g2u_*_'+PID+' 2>/dev/null')
57 | sys.exit(1)
58 |
59 | if os.path.exists(result) and RESULT == False:
60 | f = open(result,"r")
61 | title=_('Recognition result')
62 | body = f.readline().rstrip('\n')
63 | icon = path+"/icons.png"
64 | f.close()
65 | delay = 2
66 | RESULT = True
67 | elif os.path.exists(cmd) and RESULT == True:
68 | if os.path.exists(result):
69 | os.system('rm '+result)
70 | f = open(cmd,"r")
71 | title = _('Calling command')
72 | body = f.readline().rstrip('\n')
73 | icon = path+"/icons.png"
74 | delay = 2
75 | f.close()
76 | elif os.path.exists(display):
77 | f = open(display,"r")
78 | title = _('Information')
79 | body = f.readline().rstrip('\n')
80 | f.close
81 | icon = path+"/icons.png"
82 | delay=3
83 | else:
84 | title = _('Performing recording')
85 | body = _('Please speak')
86 | icon = path+"/Waiting/wait-"+str(i)+".png"
87 |
88 | n.update(title, body, icon)
89 | n.show()
90 | time.sleep(delay)
91 | i += 1;
92 | if i > 17:
93 | i = 0
94 |
95 | n.update("google2ubuntu",_('Done'),path+"/icons.png")
96 | n.show()
97 | time.sleep(1)
98 | n.close()
99 | os.system('rm /tmp/g2u_*_'+PID+' 2>/dev/null')
100 |
--------------------------------------------------------------------------------
/librairy/stringParser.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 | from os.path import expanduser
4 | from workWithModule import workWithModule
5 | from basicCommands import basicCommands
6 | from Googletts import tts
7 | import xml.etree.ElementTree as ET
8 | import os, gettext, time, sys, subprocess
9 |
10 | # Permet d'exécuter la commande associée à un mot prononcé
11 | class stringParser():
12 | """
13 | @description: This class parses the text retrieve by Google in order
14 | to distinguish external commands, internal commands and modules
15 | """
16 | def __init__(self,text,File,PID):
17 | # read configuration files
18 | self.pid=PID
19 | try:
20 | max = 0
21 | text=text.lower()
22 | tree = ET.parse(File)
23 | root = tree.getroot()
24 | tp = ''
25 | # si le mode dictée est activé
26 | if os.path.exists('/tmp/g2u_dictation'):
27 | for entry in root.findall('entry'):
28 | if entry.get('name') == _('internal') and entry.find('command').text == unicode(_('exit dictation mode'),"utf8"):
29 | score = 0
30 | Type=entry.get('name')
31 | Key=entry.find('key').text
32 | Command=entry.find('command').text
33 | key=Key.split(' ')
34 | for j in range(len(key)):
35 | score += text.count(key[j])
36 |
37 | if score == len(key):
38 | do = Command
39 | tp = Type
40 | else:
41 | do = text
42 | else:
43 | for entry in root.findall('entry'):
44 | score = 0
45 | Type=entry.get('name')
46 | Key=entry.find('key').text
47 | Command=entry.find('command').text
48 | Linker = entry.find('linker').text
49 | Spacebyplus = entry.find('spacebyplus').text
50 |
51 | key=Key.split(' ')
52 | for j in range(len(key)):
53 | score += text.count(key[j])
54 |
55 | if max < score:
56 | max = score
57 | do = Command
58 | tp = Type
59 | linker = Linker
60 | spacebyplus = Spacebyplus
61 |
62 | do = do.encode('utf8')
63 | tp = tp.encode('utf8')
64 |
65 | print 'key', tp
66 | print 'command', do
67 |
68 | os.system('echo "'+do+'" > /tmp/g2u_cmd_'+self.pid)
69 | if _('modules') in tp:
70 | # si on trouve le mot "modules", on instancie une classe workWithModule et on lui passe
71 | # le dossier ie weather, search,...; le nom du module ie weather.sh, search.sh et le texte prononcé
72 | linker = linker.encode('utf8')
73 | spacebyplus = spacebyplus.encode('utf8')
74 | wm = workWithModule(do,text,linker,spacebyplus,self.pid)
75 | elif _('internal') in tp:
76 | # on execute une commande intene, la commande est configurée
77 | # ainsi interne/batterie, on envoie batterie à la fonction
78 | b = basicCommands(do,self.pid)
79 | elif _('external') in tp:
80 | os.system(do+' &')
81 | else:
82 | os.system('xdotool type "'+do+'"')
83 |
84 | os.system('> /tmp/g2u_stop_'+self.pid)
85 |
86 |
87 | except Exception as e:
88 | message = _('Setup file missing')
89 | os.system('echo "'+message+'" > /tmp/g2u_error_'+self.pid)
90 | sys.exit(1)
91 |
--------------------------------------------------------------------------------
/librairy/workWithModule.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 | from os.path import expanduser
4 | from subprocess import *
5 | from Googletts import tts
6 | import os, gettext, time, subprocess, unicodedata
7 |
8 | gettext.install('google2ubuntu',os.path.dirname(os.path.abspath(__file__))+'/i18n/')
9 |
10 | # Permet de faire appel aux modules
11 | class workWithModule():
12 | """
13 | @description: This class allows you to call external modules. If a call
14 | for an external module is detected by the parser then this class check
15 | the module's config file before extracting modules's parameter from the
16 | text you have pronounced
17 | """
18 | def __init__(self,module_name,text,linker,plus,PID):
19 | self.pid = PID
20 |
21 | try:
22 | # on utilise un mot de liaison pour séparer l'appel du module
23 | # des arguments à lui envoyer
24 | # ex: Quelle est la météo à Paris
25 | # Quelle est la météo à Issy les moulineaux
26 | #
27 | # Le mot de liaison peut être " à "
28 | sentence=text.lower()
29 | # oblige to put this .encode('ASCII', 'ignore') for french
30 | print sentence
31 | sentence = unicodedata.normalize('NFKD', sentence)
32 | print sentence
33 | sentence=sentence.encode('ASCII', 'ignore')
34 | print sentence
35 | sentence=sentence.lower()
36 |
37 | if sentence.count(linker) > 0:
38 | param =(sentence.split(linker,1)[1]).encode("utf-8")
39 |
40 | # on regarde si l'utilisateur veut transformer les ' ' en +
41 | if plus == '1':
42 | param=param.replace(' ','+')
43 | print param
44 | # commande qui sera exécutée
45 | execute = expanduser('~')+'/.config/google2ubuntu/modules/'+module_name+' '+'"'+param+'" &'
46 | os.system(execute)
47 | else:
48 | message=_("you didn't say the linking word")
49 | os.system('echo "'+message+'" > /tmp/g2u_error_'+self.pid)
50 |
51 | except IOError:
52 | message = _('args file missing')
53 | os.system('echo "'+message+'" > /tmp/g2u_error_'+self.pid)
54 | sys.exit(1)
55 |
--------------------------------------------------------------------------------
/listen.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # Okay Google hotword activation script
3 | # Josh Chen, 14 Feb 2014
4 | # Feel free to modify as you need
5 | # configuration file
6 | CONFIGURATION="$HOME/.config/google2ubuntu/google2ubuntu.conf"
7 | BASEDIR=$(dirname $0)
8 | cd $BASEDIR
9 |
10 | # default recording time
11 | threshold=5
12 |
13 | > "/tmp/hotword"
14 | while [ -f "/tmp/hotword" ]; do
15 | # load the config every time, let the user setup the treshold and the hotword
16 | if [ -f "$CONFIGURATION" ];
17 | then
18 | {
19 | # load the configuration
20 | . "$CONFIGURATION"
21 |
22 | # small security test
23 | if [ "$threshold" = "" ];
24 | then
25 | threshold=5
26 | fi
27 | }
28 | fi
29 |
30 | # Initialize
31 | killall rec 2>/dev/null
32 | rm /tmp/pingvox.flac 2>/dev/null
33 | touch /tmp/pingvox.flac
34 |
35 | # If voice detected, record for 2.5s interval
36 | # Listen and record only when sound levels are over 17% (on razor optimal alsamixer settings seem to be 100 Internal mic, 28 Internal mic B)
37 |
38 | # >> MIC CONFIGURATION HERE <<
39 | ( rec /tmp/pingvox.flac rate 16000 silence 1 0.1 "$threshold"% ) & pid=$!
40 |
41 | while [ "$(stat -c%s /tmp/pingvox.flac)" == "0" ]; do
42 | if [ ! -f "/tmp/hotword" ]; then
43 | {
44 | killall rec
45 | exit 0
46 | }
47 | fi
48 | done
49 | ( sleep 2s && kill -HUP $pid ) 2>/dev/null & watcher=$!
50 | wait $pid 2>/dev/null && pkill -HUP -P $watcher
51 |
52 | echo
53 | echo 'Voice detected, launching listener.py'
54 |
55 | # Call script that checks for hotword
56 | python listener.py
57 | wait
58 |
59 | done
60 |
61 | exit 0;
62 |
--------------------------------------------------------------------------------
/listener.py:
--------------------------------------------------------------------------------
1 | # Okay Google hotword activation script
2 | # Josh Chen, 14 Feb 2014
3 | # Feel free to modify as you need
4 |
5 | #!/usr/bin/env python
6 | # -*- coding: utf-8 -*-
7 | from subprocess import *
8 | from os.path import expanduser
9 | import sys, subprocess, os, json, urllib2, unicodedata, time, gettext, locale, gettext
10 |
11 | p = os.path.dirname(os.path.abspath(__file__))
12 |
13 | sys.path.append( p +'/librairy')
14 | from localehelper import LocaleHelper
15 |
16 | localeHelper = LocaleHelper()
17 | lang = localeHelper.getLocale()
18 |
19 | t=gettext.translation('google2ubuntu',p +'/i18n/',languages=[lang])
20 | t.install()
21 |
22 | hotword = _('ok start')
23 | config_file = expanduser('~') + '/.config/google2ubuntu/google2ubuntu.conf'
24 | try:
25 | if os.path.exists(config_file):
26 | f=open(config_file,'r')
27 | for line in f.readlines():
28 | line = line.strip('\n')
29 | field = line.split('=')
30 | if field[0] == 'hotword':
31 | hotword = field[1].replace('"','')
32 | f.close()
33 | except Exception:
34 | print "Error loading", config_file
35 | sys.exit(1)
36 |
37 |
38 | # lecture du fichier audio
39 | filename='/tmp/pingvox.flac'
40 | f = open(filename)
41 | data = f.read()
42 | f.close()
43 |
44 | try:
45 | # Send request to Google
46 | fail = 'req'
47 | req = urllib2.Request('https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang='+lang, data=data, headers={'Content-type': 'audio/x-flac; rate=16000'})
48 |
49 | fail = 'ret'
50 | # Return request
51 | ret = urllib2.urlopen(req)
52 |
53 | # Google translate API sometimes returns lists of phrases. We'll join them all up into a single phrase again
54 | phrase = ''
55 | t = ret.read().split('\n')
56 | t.remove('')
57 | for i in t:
58 | s = json.loads(i)
59 | if len(s['hypotheses']) > 0:
60 | phrase = phrase + s['hypotheses'][0]['utterance'] + ' '
61 | print "Recognition: "+phrase
62 |
63 | fail = 'parse'
64 | # Parse
65 | #text=json.loads(d)['hypotheses'][0]['utterance']
66 |
67 | print "hotword:", hotword
68 | print "detected:", phrase
69 | if phrase.lower().count(hotword.lower()) > 0:
70 | os.system('python ' + p + '/google2ubuntu.py')
71 |
72 | except Exception:
73 | os.system('echo Fail:'+fail) # for debugging
74 | #message = _('unable to translate')
75 | if fail == 'req':
76 | message = _('Cannot connect to Google Translate')
77 | elif fail == 'parse':
78 | message = _('Phrase parsing failed')
79 | elif fail == 'ret':
80 | message = _('Error processing value returned by Google Translate')
81 |
82 | print message
83 | sys.exit(1)
84 |
--------------------------------------------------------------------------------
/modules/google.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | CONTENU="$1"
3 | CONTENU=$(echo $CONTENU | sed "s/ /+/g")
4 | echo $CONTENU
5 | xdg-open http://www.google.com/search?q="$CONTENU" &
6 |
7 | exit 0
8 |
--------------------------------------------------------------------------------
/modules/goto.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 |
4 | import sys,os, re
5 |
6 | if len(sys.argv) >= 2:
7 | web = sys.argv[1]
8 | web = web.replace(' ','+')
9 | web = web.lower()
10 |
11 | url = 'www.'+web
12 | os.system('xdg-open '+url+' &')
13 |
--------------------------------------------------------------------------------
/modules/meaning.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 | from subprocess import *
4 | from os.path import expanduser
5 | import sys, subprocess, os, json, unicodedata, time, locale
6 | from urllib2 import urlopen
7 |
8 | locale.setlocale(locale.LC_ALL, '')
9 | lang = locale.getdefaultlocale()[0]
10 | lang=lang.split('_')[0]
11 |
12 | sys.path.append('/usr/share/google2ubuntu/librairy')
13 | from Googletts import tts
14 |
15 | if len(sys.argv) >= 2:
16 | null = None
17 | keyword = sys.argv[1]
18 | #keyword = keyword.replace(' ','+')
19 | print keyword
20 | data = urlopen("http://www.google.com/dictionary/json?callback=dict_api.callbacks.id100&q="+keyword+"&sl="+lang+"&tl="+lang+"&restrict=pr%2Cde&client=te").read()[25:-1]
21 |
22 | d = eval('('+data+')')
23 | if d[1] == 200:
24 | result = d[0]
25 |
26 | if 'webDefinitions' in result:
27 | webd = result.get('webDefinitions')[0]
28 | entries = webd.get('entries')
29 | entry=entries[0]
30 | for term in entry.get('terms'):
31 | if term.get('type') == 'text':
32 | tts(term.get('text'))
33 |
--------------------------------------------------------------------------------
/modules/weather.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | xdg-open "https://www.google.com/#q=weather+$1&hl=${LANG%%.*}&safe=off" &
4 |
5 | exit 0
6 |
--------------------------------------------------------------------------------
/modules/wikipedia.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | CONTENU="$1"
3 | CONTENU=$(echo $CONTENU | sed "s/ /+/g")
4 | xdg-open http://en.wikipedia.org/w/index.php?search="$CONTENU" &
5 |
6 | exit 0
7 |
--------------------------------------------------------------------------------
/modules/youtube.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | CONTENU="$1"
3 | CONTENU=$(echo $CONTENU | sed "s/ /+/g")
4 | echo $CONTENU
5 | xdg-open http://www.youtube.com/results?search_query="$CONTENU" &
6 |
7 | exit 0
8 |
--------------------------------------------------------------------------------
/record.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # configuration file
3 | CONFIGURATION="$HOME/.config/google2ubuntu/google2ubuntu.conf"
4 |
5 | # default recording time
6 | recording=5
7 | if [ -f "$CONFIGURATION" ];
8 | then
9 | {
10 | # load the configuration
11 | . "$CONFIGURATION"
12 |
13 | # small security test
14 | if [ "$recording" = "" ];
15 | then
16 | recording=5
17 | fi
18 | }
19 | fi
20 |
21 | # get the pid
22 | PID=$1
23 | # kill the previous instance of rec to cascade commands
24 | killall rec 2>/dev/null
25 |
26 | # record during fixed seconds
27 | ( rec -r 16000 -d /tmp/voix_$PID.flac ) & pid=$!
28 | ( sleep "$recording"s && kill -HUP $pid ) 2>/dev/null & watcher=$!
29 | wait $pid 2>/dev/null && pkill -HUP -P $watcher
30 |
31 | exit 0;
32 |
--------------------------------------------------------------------------------
/resources/Waiting/wait-0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/resources/Waiting/wait-0.png
--------------------------------------------------------------------------------
/resources/Waiting/wait-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/resources/Waiting/wait-1.png
--------------------------------------------------------------------------------
/resources/Waiting/wait-10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/resources/Waiting/wait-10.png
--------------------------------------------------------------------------------
/resources/Waiting/wait-11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/resources/Waiting/wait-11.png
--------------------------------------------------------------------------------
/resources/Waiting/wait-12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/resources/Waiting/wait-12.png
--------------------------------------------------------------------------------
/resources/Waiting/wait-13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/resources/Waiting/wait-13.png
--------------------------------------------------------------------------------
/resources/Waiting/wait-14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/resources/Waiting/wait-14.png
--------------------------------------------------------------------------------
/resources/Waiting/wait-15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/resources/Waiting/wait-15.png
--------------------------------------------------------------------------------
/resources/Waiting/wait-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/resources/Waiting/wait-16.png
--------------------------------------------------------------------------------
/resources/Waiting/wait-17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/resources/Waiting/wait-17.png
--------------------------------------------------------------------------------
/resources/Waiting/wait-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/resources/Waiting/wait-2.png
--------------------------------------------------------------------------------
/resources/Waiting/wait-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/resources/Waiting/wait-3.png
--------------------------------------------------------------------------------
/resources/Waiting/wait-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/resources/Waiting/wait-4.png
--------------------------------------------------------------------------------
/resources/Waiting/wait-5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/resources/Waiting/wait-5.png
--------------------------------------------------------------------------------
/resources/Waiting/wait-6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/resources/Waiting/wait-6.png
--------------------------------------------------------------------------------
/resources/Waiting/wait-7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/resources/Waiting/wait-7.png
--------------------------------------------------------------------------------
/resources/Waiting/wait-8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/resources/Waiting/wait-8.png
--------------------------------------------------------------------------------
/resources/Waiting/wait-9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/resources/Waiting/wait-9.png
--------------------------------------------------------------------------------
/resources/error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/resources/error.png
--------------------------------------------------------------------------------
/resources/icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/resources/icons.png
--------------------------------------------------------------------------------
/resources/sound.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benoitfragit/google2ubuntu/fb58b7b71f9311155c214d29986273090fc24aa1/resources/sound.wav
--------------------------------------------------------------------------------