iobroker.easee 1.0.7 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,143 +1,143 @@
1
- <html>
2
- <head>
3
- <!-- Load ioBroker scripts and styles-->
4
- <link rel="stylesheet" type="text/css" href="../../css/adapter.css" />
5
- <link rel="stylesheet" type="text/css" href="../../lib/css/materialize.css">
6
-
7
- <script type="text/javascript" src="../../lib/js/jquery-3.2.1.min.js"></script>
8
- <script type="text/javascript" src="../../socket.io/socket.io.js"></script>
9
-
10
- <script type="text/javascript" src="../../js/translate.js"></script>
11
- <script type="text/javascript" src="../../lib/js/materialize.js"></script>
12
- <script type="text/javascript" src="../../js/adapter-settings.js"></script>
13
-
14
- <!-- Load our own files -->
15
- <link rel="stylesheet" type="text/css" href="style.css" />
16
- <script type="text/javascript" src="words.js"></script>
17
-
18
- <script type="text/javascript">
19
- var _secret;
20
-
21
-
22
- // This will be called by the admin adapter when the settings page loads
23
- function load(settings, onChange) {
24
- if (typeof supportsFeature !== 'function' || !supportsFeature('ADAPTER_AUTO_DECRYPT_NATIVE')) {
25
-
26
- if (typeof systemSecret !== 'undefined') {
27
- _secret = systemSecret;
28
- } else {
29
- _secret = (systemConfig && systemConfig.native && systemConfig.native.secret) || 'Zgfr56gFe87jJOM';
30
- }
31
-
32
- if (settings.client_secret) {
33
- settings.client_secret = decrypt(_secret, settings.client_secret);
34
- }
35
- }
36
-
37
- // example: select elements with id=key and class=value and insert value
38
- if (!settings) return;
39
- $('.value').each(function () {
40
- var $key = $(this);
41
- var id = $key.attr('id');
42
- if ($key.attr('type') === 'checkbox') {
43
- // do not call onChange direct, because onChange could expect some arguments
44
- $key.prop('checked', settings[id])
45
- .on('change', () => onChange())
46
- ;
47
- } else {
48
- // do not call onChange direct, because onChange could expect some arguments
49
- $key.val(settings[id])
50
- .on('change', () => onChange())
51
- .on('keyup', () => onChange())
52
- ;
53
- }
54
- });
55
- onChange(false);
56
-
57
- // reinitialize all the Materialize labels on the page if you are dynamically adding inputs:
58
- if (M) M.updateTextFields();
59
- }
60
-
61
- // This will be called by the admin adapter when the user presses the save button
62
- function save(callback) {
63
- // example: select elements with class=value and build settings object
64
- console.log(_secret);
65
- var obj = {};
66
- $('.value').each(function () {
67
- var $this = $(this);
68
- var id = $this.attr('id');
69
- if ($this.attr('type') === 'checkbox') {
70
- obj[id] = $this.prop('checked');
71
- } else {
72
- var value = $this.val();
73
- if (typeof supportsFeature !== 'function' || !supportsFeature('ADAPTER_AUTO_DECRYPT_NATIVE')) {
74
- if (id === 'client_secret') {
75
- value = encrypt(_secret, value);
76
- }
77
- }
78
- obj[id] = value;
79
- }
80
- });
81
- callback(obj);
82
- }
83
- </script>
84
- </head>
85
- <body>
86
-
87
- <div class="m adapter-container">
88
-
89
- <div class="row">
90
- <div class="col s12 m4 l2">
91
- <img src="easee.png" class="logo">
92
- </div>
93
- </div>
94
-
95
- <div class="row">
96
- <div class="col s12 m12">
97
- <p class="translate title">Donate</p>
98
- </div>
99
- <div class="col s12 m2 center">
100
- <form action="https://www.paypal.com/donate" method="post" target="_top">
101
- <input type="hidden" name="hosted_button_id" value="AAFQ3WMM46LT8" />
102
- <input type="image" src="https://www.paypalobjects.com/en_US/DK/i/btn/btn_donateCC_LG.gif" border="0" name="submit" title="PayPal - The safer, easier way to pay online!" alt="Donate with PayPal button" />
103
- <img alt="" border="0" src="https://www.paypal.com/en_DE/i/scr/pixel.gif" width="1" height="1" />
104
- </form>
105
- </div>
106
- <div class="col s10 m10" style="padding-top: 10px">
107
- <p class="translate">donate_desc</p>
108
- </div>
109
- </div>
110
- <div class="row">
111
- <div class="col s12">
112
- <h6 class="title translate">Account settings</h6>
113
- </div>
114
- </div>
115
- <div class="row">
116
- <div class="col s6 input-field">
117
- <input type="text" class="value" id="username" />
118
- <label for="username" class="translate">Username</label>
119
- </div>
120
-
121
- <div class="col s6 input-field">
122
- <input type="password" class="value" id="client_secret" />
123
- <label for="client_secret" class="translate">Password</label>
124
- </div>
125
- </div>
126
- <div class="row">
127
- <div class="col s12">
128
- <h6 class="title translate">Api settings</h6>
129
- </div>
130
- </div>
131
- <div class="row">
132
- <div class="col s6 input-field">
133
- <input type="number" class="value" id="polltime" />
134
- <label for="polltime" class="translate">Poll interval in seconds</label>
135
- </div>
136
- <div class="col s6 input-field">
137
- <input type="checkbox" class="value" id="signalR" />
138
- <label for="option1" class="translate">Use SignalR</label>
139
- </div>
140
- </div>
141
- </div>
142
- </body>
143
- </html>
1
+ <html>
2
+ <head>
3
+ <!-- Load ioBroker scripts and styles-->
4
+ <link rel="stylesheet" type="text/css" href="../../css/adapter.css" />
5
+ <link rel="stylesheet" type="text/css" href="../../lib/css/materialize.css">
6
+
7
+ <script type="text/javascript" src="../../lib/js/jquery-3.2.1.min.js"></script>
8
+ <script type="text/javascript" src="../../socket.io/socket.io.js"></script>
9
+
10
+ <script type="text/javascript" src="../../js/translate.js"></script>
11
+ <script type="text/javascript" src="../../lib/js/materialize.js"></script>
12
+ <script type="text/javascript" src="../../js/adapter-settings.js"></script>
13
+
14
+ <!-- Load our own files -->
15
+ <link rel="stylesheet" type="text/css" href="style.css" />
16
+ <script type="text/javascript" src="words.js"></script>
17
+
18
+ <script type="text/javascript">
19
+ var _secret;
20
+
21
+
22
+ // This will be called by the admin adapter when the settings page loads
23
+ function load(settings, onChange) {
24
+ if (typeof supportsFeature !== 'function' || !supportsFeature('ADAPTER_AUTO_DECRYPT_NATIVE')) {
25
+
26
+ if (typeof systemSecret !== 'undefined') {
27
+ _secret = systemSecret;
28
+ } else {
29
+ _secret = (systemConfig && systemConfig.native && systemConfig.native.secret) || 'Zgfr56gFe87jJOM';
30
+ }
31
+
32
+ if (settings.client_secret) {
33
+ settings.client_secret = decrypt(_secret, settings.client_secret);
34
+ }
35
+ }
36
+
37
+ // example: select elements with id=key and class=value and insert value
38
+ if (!settings) return;
39
+ $('.value').each(function () {
40
+ var $key = $(this);
41
+ var id = $key.attr('id');
42
+ if ($key.attr('type') === 'checkbox') {
43
+ // do not call onChange direct, because onChange could expect some arguments
44
+ $key.prop('checked', settings[id])
45
+ .on('change', () => onChange())
46
+ ;
47
+ } else {
48
+ // do not call onChange direct, because onChange could expect some arguments
49
+ $key.val(settings[id])
50
+ .on('change', () => onChange())
51
+ .on('keyup', () => onChange())
52
+ ;
53
+ }
54
+ });
55
+ onChange(false);
56
+
57
+ // reinitialize all the Materialize labels on the page if you are dynamically adding inputs:
58
+ if (M) M.updateTextFields();
59
+ }
60
+
61
+ // This will be called by the admin adapter when the user presses the save button
62
+ function save(callback) {
63
+ // example: select elements with class=value and build settings object
64
+ console.log(_secret);
65
+ var obj = {};
66
+ $('.value').each(function () {
67
+ var $this = $(this);
68
+ var id = $this.attr('id');
69
+ if ($this.attr('type') === 'checkbox') {
70
+ obj[id] = $this.prop('checked');
71
+ } else {
72
+ var value = $this.val();
73
+ if (typeof supportsFeature !== 'function' || !supportsFeature('ADAPTER_AUTO_DECRYPT_NATIVE')) {
74
+ if (id === 'client_secret') {
75
+ value = encrypt(_secret, value);
76
+ }
77
+ }
78
+ obj[id] = value;
79
+ }
80
+ });
81
+ callback(obj);
82
+ }
83
+ </script>
84
+ </head>
85
+ <body>
86
+
87
+ <div class="m adapter-container">
88
+
89
+ <div class="row">
90
+ <div class="col s12 m4 l2">
91
+ <img src="easee.png" class="logo">
92
+ </div>
93
+ </div>
94
+
95
+ <div class="row">
96
+ <div class="col s12 m12">
97
+ <p class="translate title">Donate</p>
98
+ </div>
99
+ <div class="col s12 m2 center">
100
+ <form action="https://www.paypal.com/donate" method="post" target="_top">
101
+ <input type="hidden" name="hosted_button_id" value="AAFQ3WMM46LT8" />
102
+ <input type="image" src="https://www.paypalobjects.com/en_US/DK/i/btn/btn_donateCC_LG.gif" border="0" name="submit" title="PayPal - The safer, easier way to pay online!" alt="Donate with PayPal button" />
103
+ <img alt="" border="0" src="https://www.paypal.com/en_DE/i/scr/pixel.gif" width="1" height="1" />
104
+ </form>
105
+ </div>
106
+ <div class="col s10 m10" style="padding-top: 10px">
107
+ <p class="translate">donate_desc</p>
108
+ </div>
109
+ </div>
110
+ <div class="row">
111
+ <div class="col s12">
112
+ <h6 class="title translate">Account settings</h6>
113
+ </div>
114
+ </div>
115
+ <div class="row">
116
+ <div class="col s6 input-field">
117
+ <input type="text" class="value" id="username" />
118
+ <label for="username" class="translate">Username</label>
119
+ </div>
120
+
121
+ <div class="col s6 input-field">
122
+ <input type="password" class="value" id="client_secret" />
123
+ <label for="client_secret" class="translate">Password</label>
124
+ </div>
125
+ </div>
126
+ <div class="row">
127
+ <div class="col s12">
128
+ <h6 class="title translate">Api settings</h6>
129
+ </div>
130
+ </div>
131
+ <div class="row">
132
+ <div class="col s6 input-field">
133
+ <input type="number" class="value" id="polltime" />
134
+ <label for="polltime" class="translate">Poll interval in seconds</label>
135
+ </div>
136
+ <div class="col s6 input-field">
137
+ <input type="checkbox" class="value" id="signalR" />
138
+ <label for="option1" class="translate">Use SignalR</label>
139
+ </div>
140
+ </div>
141
+ </div>
142
+ </body>
143
+ </html>
package/admin/style.css CHANGED
@@ -1,32 +1,32 @@
1
- /* You can delete those if you want. I just found them very helpful */
2
- * {
3
- box-sizing: border-box
4
- }
5
- .m {
6
- /* Don't cut off dropdowns! */
7
- overflow: initial;
8
- }
9
- .m.adapter-container,
10
- .m.adapter-container > div.App {
11
- /* Fix layout/scrolling issues with tabs */
12
- height: 100%;
13
- width: 100%;
14
- position: relative;
15
- }
16
- .m .select-wrapper + label {
17
- /* The positioning for dropdown labels is messed up */
18
- transform: none !important;
19
- }
20
-
21
- label > i[title] {
22
- /* Display the help cursor for the tooltip icons and fix their positioning */
23
- cursor: help;
24
- margin-left: 0.25em;
25
- }
26
-
27
- .dropdown-content {
28
- /* Don't wrap text in dropdowns */
29
- white-space: nowrap;
30
- }
31
-
32
- /* Add your styles here */
1
+ /* You can delete those if you want. I just found them very helpful */
2
+ * {
3
+ box-sizing: border-box
4
+ }
5
+ .m {
6
+ /* Don't cut off dropdowns! */
7
+ overflow: initial;
8
+ }
9
+ .m.adapter-container,
10
+ .m.adapter-container > div.App {
11
+ /* Fix layout/scrolling issues with tabs */
12
+ height: 100%;
13
+ width: 100%;
14
+ position: relative;
15
+ }
16
+ .m .select-wrapper + label {
17
+ /* The positioning for dropdown labels is messed up */
18
+ transform: none !important;
19
+ }
20
+
21
+ label > i[title] {
22
+ /* Display the help cursor for the tooltip icons and fix their positioning */
23
+ cursor: help;
24
+ margin-left: 0.25em;
25
+ }
26
+
27
+ .dropdown-content {
28
+ /* Don't wrap text in dropdowns */
29
+ white-space: nowrap;
30
+ }
31
+
32
+ /* Add your styles here */
package/admin/words.js CHANGED
@@ -1,102 +1,102 @@
1
- /* eslint-disable no-unused-vars */
2
- /*global systemDictionary:true */
3
- 'use strict';
4
-
5
- systemDictionary = {
6
- 'easee adapter settings': {
7
- 'en': 'Adapter settings for easee',
8
- 'de': 'Adaptereinstellungen für easee',
9
- 'ru': 'Настройки адаптера для easee',
10
- 'pt': 'Configurações do adaptador para easee',
11
- 'nl': 'Adapterinstellingen voor easee',
12
- 'fr': "Paramètres d'adaptateur pour easee",
13
- 'it': "Impostazioni dell'adattatore per easee",
14
- 'es': 'Ajustes del adaptador para easee',
15
- 'pl': 'Ustawienia adaptera dla easee',
16
- 'zh-cn': 'easee的适配器设置'
17
- },
18
- 'Username': {
19
- 'en': 'Username',
20
- 'de': 'Nutzername',
21
- 'ru': 'имя пользователя',
22
- 'pt': 'nome de usuário',
23
- 'nl': 'gebruikersnaam',
24
- 'fr': "Nom d'utilisateur",
25
- 'it': 'nome utente',
26
- 'es': 'nombre de usuario',
27
- 'pl': 'Nazwa Użytkownika',
28
- 'zh-cn': '用户名'
29
- },
30
- 'Password': {
31
- 'en': 'Password',
32
- 'de': 'Passwort',
33
- 'ru': 'пароль',
34
- 'pt': 'senha',
35
- 'nl': 'wachtwoord',
36
- 'fr': 'le mot de passe',
37
- 'it': "parola d'ordine",
38
- 'es': 'contraseña',
39
- 'pl': 'hasło',
40
- 'zh-cn': '密码'
41
- },
42
- 'Poll interval in seconds': {
43
- 'en': 'Poll interval in seconds',
44
- 'de': 'Abfrageintervall in Sekunden',
45
- 'ru': 'Интервал опроса в секундах',
46
- 'pt': 'Intervalo de enquete em segundos',
47
- 'nl': 'Poll-interval in seconden',
48
- 'fr': "Intervalle d'interrogation en secondes",
49
- 'it': 'Intervallo di polling in secondi',
50
- 'es': 'Intervalo de encuesta en segundos',
51
- 'pl': 'Okres odpytywania w sekundach',
52
- 'zh-cn': '轮询间隔(秒)'
53
- },
54
- 'Api settings': {
55
- 'en': 'Api settings',
56
- 'de': 'API-Einstellungen',
57
- 'ru': 'Настройки API',
58
- 'pt': 'Configurações de API',
59
- 'nl': 'API-instellingen',
60
- 'fr': "Paramètres de l'API",
61
- 'it': 'Impostazioni API',
62
- 'es': 'Configuración de api',
63
- 'pl': 'Ustawienia API',
64
- 'zh-cn': 'api设置'
65
- },
66
- 'Account settings': {
67
- 'en': 'Account settings',
68
- 'de': 'Kontoeinstellungen',
69
- 'ru': 'Настройки учетной записи',
70
- 'pt': 'Configurações de Conta',
71
- 'nl': 'Account instellingen',
72
- 'fr': 'Paramètres du compte',
73
- 'it': "Impostazioni dell'account",
74
- 'es': 'Configuraciones de la cuenta',
75
- 'pl': 'Ustawienia konta',
76
- 'zh-cn': ',帐号设定'
77
- },
78
- 'Use SignalR': {
79
- 'en': 'Use SignalR',
80
- 'de': 'SignalR verwenden',
81
- 'ru': 'Используйте SignalR',
82
- 'pt': 'Use SignalR',
83
- 'nl': 'Gebruik SignalR',
84
- 'fr': 'Utiliser SignalR',
85
- 'it': 'Usa SignalR',
86
- 'es': 'Usar SignalR',
87
- 'pl': 'Użyj SignalR',
88
- 'zh-cn': '使用SignalR'
89
- },
90
- 'donate_desc': {
91
- 'en': "If you like the adapter and want to support the further development, you can thank me with a donation under <a href='https://www.paypal.com/donate?hosted_button_id=AAFQ3WMM46LT8' target='_blank'>PayPal</a>. You are also welcome to send me feature requests for future versions of the adapter.",
92
- 'de': "Wenn Ihnen der Adapter gefällt und Sie die weitere Entwicklung unterstützen möchten, können Sie sich mit einer Spende unter <a href='https://www.paypal.com/donate?hosted_button_id=AAFQ3WMM46LT8' target='_blank'>PayPal</a> bei mir bedanken. Sie können mir auch gerne Funktionsanfragen für zukünftige Versionen des Adapters senden.",
93
- 'ru': "Если вам понравился адаптер и вы хотите поддержать его дальнейшее развитие, вы можете поблагодарить меня, сделав пожертвование в рамках <a href='https://www.paypal.com/donate?hosted_button_id=AAFQ3WMM46LT8' target='_blank'>PayPal</a>. Вы также можете присылать мне запросы функций для будущих версий адаптера.",
94
- 'pt': "Se você gosta do adaptador e deseja apoiar o desenvolvimento posterior, pode me agradecer com uma doação em <a href='https://www.paypal.com/donate?hosted_button_id=AAFQ3WMM46LT8' target='_blank'>PayPal</a>. Você também pode me enviar solicitações de recursos para versões futuras do adaptador.",
95
- 'nl': "Als je de adapter leuk vindt en de verdere ontwikkeling wilt ondersteunen, kun je me bedanken met een donatie onder <a href='https://www.paypal.com/donate?hosted_button_id=AAFQ3WMM46LT8' target='_blank'>PayPal</a>. U kunt mij ook functieverzoeken sturen voor toekomstige versies van de adapter.",
96
- 'fr': "Si vous aimez l'adaptateur et souhaitez soutenir le développement ultérieur, vous pouvez me remercier d'un don sous <a href='https://www.paypal.com/donate?hosted_button_id=AAFQ3WMM46LT8' target='_blank'>PayPal</a>. Vous pouvez également m'envoyer des demandes de fonctionnalités pour les futures versions de l'adaptateur.",
97
- 'it': "Se ti piace l'adattatore e vuoi sostenere l'ulteriore sviluppo, puoi ringraziarmi con una donazione sotto <a href='https://www.paypal.com/donate?hosted_button_id=AAFQ3WMM46LT8' target='_blank'>PayPal</a>. Puoi anche inviarmi richieste di funzionalità per le versioni future dell'adattatore.",
98
- 'es': "Si le gusta el adaptador y desea apoyar el desarrollo posterior, puede agradecerme con una donación en <a href='https://www.paypal.com/donate?hosted_button_id=AAFQ3WMM46LT8' target='_blank'>PayPal</a>. También puede enviarme solicitudes de funciones para futuras versiones del adaptador.",
99
- 'pl': "Jeśli podoba Ci się adapter i chcesz wesprzeć dalszy rozwój, możesz mi podziękować darowizną w ramach <a href='https://www.paypal.com/donate?hosted_button_id=AAFQ3WMM46LT8' target='_blank'>PayPal</a>. Zapraszam również do przesyłania mi próśb o funkcje dotyczące przyszłych wersji adaptera.",
100
- 'zh-cn': "如果您喜欢适配器并希望支持进一步的开发,可以在<a href='https://www.paypal.com/donate?hosted_button_id=AAFQ3WMM46LT8' target='_blank'>PayPal</a>下捐款以表示感谢。也欢迎您向我发送有关适配器将来版本的功能请求。"
101
- }
1
+ /* eslint-disable no-unused-vars */
2
+ /*global systemDictionary:true */
3
+ 'use strict';
4
+
5
+ systemDictionary = {
6
+ 'easee adapter settings': {
7
+ 'en': 'Adapter settings for easee',
8
+ 'de': 'Adaptereinstellungen für easee',
9
+ 'ru': 'Настройки адаптера для easee',
10
+ 'pt': 'Configurações do adaptador para easee',
11
+ 'nl': 'Adapterinstellingen voor easee',
12
+ 'fr': "Paramètres d'adaptateur pour easee",
13
+ 'it': "Impostazioni dell'adattatore per easee",
14
+ 'es': 'Ajustes del adaptador para easee',
15
+ 'pl': 'Ustawienia adaptera dla easee',
16
+ 'zh-cn': 'easee的适配器设置'
17
+ },
18
+ 'Username': {
19
+ 'en': 'Username',
20
+ 'de': 'Nutzername',
21
+ 'ru': 'имя пользователя',
22
+ 'pt': 'nome de usuário',
23
+ 'nl': 'gebruikersnaam',
24
+ 'fr': "Nom d'utilisateur",
25
+ 'it': 'nome utente',
26
+ 'es': 'nombre de usuario',
27
+ 'pl': 'Nazwa Użytkownika',
28
+ 'zh-cn': '用户名'
29
+ },
30
+ 'Password': {
31
+ 'en': 'Password',
32
+ 'de': 'Passwort',
33
+ 'ru': 'пароль',
34
+ 'pt': 'senha',
35
+ 'nl': 'wachtwoord',
36
+ 'fr': 'le mot de passe',
37
+ 'it': "parola d'ordine",
38
+ 'es': 'contraseña',
39
+ 'pl': 'hasło',
40
+ 'zh-cn': '密码'
41
+ },
42
+ 'Poll interval in seconds': {
43
+ 'en': 'Poll interval in seconds',
44
+ 'de': 'Abfrageintervall in Sekunden',
45
+ 'ru': 'Интервал опроса в секундах',
46
+ 'pt': 'Intervalo de enquete em segundos',
47
+ 'nl': 'Poll-interval in seconden',
48
+ 'fr': "Intervalle d'interrogation en secondes",
49
+ 'it': 'Intervallo di polling in secondi',
50
+ 'es': 'Intervalo de encuesta en segundos',
51
+ 'pl': 'Okres odpytywania w sekundach',
52
+ 'zh-cn': '轮询间隔(秒)'
53
+ },
54
+ 'Api settings': {
55
+ 'en': 'Api settings',
56
+ 'de': 'API-Einstellungen',
57
+ 'ru': 'Настройки API',
58
+ 'pt': 'Configurações de API',
59
+ 'nl': 'API-instellingen',
60
+ 'fr': "Paramètres de l'API",
61
+ 'it': 'Impostazioni API',
62
+ 'es': 'Configuración de api',
63
+ 'pl': 'Ustawienia API',
64
+ 'zh-cn': 'api设置'
65
+ },
66
+ 'Account settings': {
67
+ 'en': 'Account settings',
68
+ 'de': 'Kontoeinstellungen',
69
+ 'ru': 'Настройки учетной записи',
70
+ 'pt': 'Configurações de Conta',
71
+ 'nl': 'Account instellingen',
72
+ 'fr': 'Paramètres du compte',
73
+ 'it': "Impostazioni dell'account",
74
+ 'es': 'Configuraciones de la cuenta',
75
+ 'pl': 'Ustawienia konta',
76
+ 'zh-cn': ',帐号设定'
77
+ },
78
+ 'Use SignalR': {
79
+ 'en': 'Use SignalR',
80
+ 'de': 'SignalR verwenden',
81
+ 'ru': 'Используйте SignalR',
82
+ 'pt': 'Use SignalR',
83
+ 'nl': 'Gebruik SignalR',
84
+ 'fr': 'Utiliser SignalR',
85
+ 'it': 'Usa SignalR',
86
+ 'es': 'Usar SignalR',
87
+ 'pl': 'Użyj SignalR',
88
+ 'zh-cn': '使用SignalR'
89
+ },
90
+ 'donate_desc': {
91
+ 'en': "If you like the adapter and want to support the further development, you can thank me with a donation under <a href='https://www.paypal.com/donate?hosted_button_id=AAFQ3WMM46LT8' target='_blank'>PayPal</a>. You are also welcome to send me feature requests for future versions of the adapter.",
92
+ 'de': "Wenn Ihnen der Adapter gefällt und Sie die weitere Entwicklung unterstützen möchten, können Sie sich mit einer Spende unter <a href='https://www.paypal.com/donate?hosted_button_id=AAFQ3WMM46LT8' target='_blank'>PayPal</a> bei mir bedanken. Sie können mir auch gerne Funktionsanfragen für zukünftige Versionen des Adapters senden.",
93
+ 'ru': "Если вам понравился адаптер и вы хотите поддержать его дальнейшее развитие, вы можете поблагодарить меня, сделав пожертвование в рамках <a href='https://www.paypal.com/donate?hosted_button_id=AAFQ3WMM46LT8' target='_blank'>PayPal</a>. Вы также можете присылать мне запросы функций для будущих версий адаптера.",
94
+ 'pt': "Se você gosta do adaptador e deseja apoiar o desenvolvimento posterior, pode me agradecer com uma doação em <a href='https://www.paypal.com/donate?hosted_button_id=AAFQ3WMM46LT8' target='_blank'>PayPal</a>. Você também pode me enviar solicitações de recursos para versões futuras do adaptador.",
95
+ 'nl': "Als je de adapter leuk vindt en de verdere ontwikkeling wilt ondersteunen, kun je me bedanken met een donatie onder <a href='https://www.paypal.com/donate?hosted_button_id=AAFQ3WMM46LT8' target='_blank'>PayPal</a>. U kunt mij ook functieverzoeken sturen voor toekomstige versies van de adapter.",
96
+ 'fr': "Si vous aimez l'adaptateur et souhaitez soutenir le développement ultérieur, vous pouvez me remercier d'un don sous <a href='https://www.paypal.com/donate?hosted_button_id=AAFQ3WMM46LT8' target='_blank'>PayPal</a>. Vous pouvez également m'envoyer des demandes de fonctionnalités pour les futures versions de l'adaptateur.",
97
+ 'it': "Se ti piace l'adattatore e vuoi sostenere l'ulteriore sviluppo, puoi ringraziarmi con una donazione sotto <a href='https://www.paypal.com/donate?hosted_button_id=AAFQ3WMM46LT8' target='_blank'>PayPal</a>. Puoi anche inviarmi richieste di funzionalità per le versioni future dell'adattatore.",
98
+ 'es': "Si le gusta el adaptador y desea apoyar el desarrollo posterior, puede agradecerme con una donación en <a href='https://www.paypal.com/donate?hosted_button_id=AAFQ3WMM46LT8' target='_blank'>PayPal</a>. También puede enviarme solicitudes de funciones para futuras versiones del adaptador.",
99
+ 'pl': "Jeśli podoba Ci się adapter i chcesz wesprzeć dalszy rozwój, możesz mi podziękować darowizną w ramach <a href='https://www.paypal.com/donate?hosted_button_id=AAFQ3WMM46LT8' target='_blank'>PayPal</a>. Zapraszam również do przesyłania mi próśb o funkcje dotyczące przyszłych wersji adaptera.",
100
+ 'zh-cn': "如果您喜欢适配器并希望支持进一步的开发,可以在<a href='https://www.paypal.com/donate?hosted_button_id=AAFQ3WMM46LT8' target='_blank'>PayPal</a>下捐款以表示感谢。也欢迎您向我发送有关适配器将来版本的功能请求。"
101
+ }
102
102
  };