umap-project 3.3.2__py3-none-any.whl → 3.4.0__py3-none-any.whl

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.
Files changed (242) hide show
  1. umap/__init__.py +1 -1
  2. umap/context_processors.py +4 -1
  3. umap/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
  4. umap/locale/cs_CZ/LC_MESSAGES/django.po +43 -33
  5. umap/locale/da/LC_MESSAGES/django.mo +0 -0
  6. umap/locale/da/LC_MESSAGES/django.po +43 -33
  7. umap/locale/de/LC_MESSAGES/django.mo +0 -0
  8. umap/locale/de/LC_MESSAGES/django.po +64 -53
  9. umap/locale/el/LC_MESSAGES/django.mo +0 -0
  10. umap/locale/el/LC_MESSAGES/django.po +35 -29
  11. umap/locale/en/LC_MESSAGES/django.po +47 -41
  12. umap/locale/es/LC_MESSAGES/django.mo +0 -0
  13. umap/locale/es/LC_MESSAGES/django.po +43 -33
  14. umap/locale/et/LC_MESSAGES/django.mo +0 -0
  15. umap/locale/et/LC_MESSAGES/django.po +58 -54
  16. umap/locale/eu/LC_MESSAGES/django.mo +0 -0
  17. umap/locale/eu/LC_MESSAGES/django.po +43 -33
  18. umap/locale/fa_IR/LC_MESSAGES/django.mo +0 -0
  19. umap/locale/fa_IR/LC_MESSAGES/django.po +43 -33
  20. umap/locale/fr/LC_MESSAGES/django.mo +0 -0
  21. umap/locale/fr/LC_MESSAGES/django.po +36 -30
  22. umap/locale/gl/LC_MESSAGES/django.mo +0 -0
  23. umap/locale/gl/LC_MESSAGES/django.po +43 -33
  24. umap/locale/hu/LC_MESSAGES/django.mo +0 -0
  25. umap/locale/hu/LC_MESSAGES/django.po +35 -29
  26. umap/locale/is/LC_MESSAGES/django.mo +0 -0
  27. umap/locale/is/LC_MESSAGES/django.po +43 -33
  28. umap/locale/it/LC_MESSAGES/django.mo +0 -0
  29. umap/locale/it/LC_MESSAGES/django.po +43 -33
  30. umap/locale/nl/LC_MESSAGES/django.mo +0 -0
  31. umap/locale/nl/LC_MESSAGES/django.po +35 -29
  32. umap/locale/pl/LC_MESSAGES/django.mo +0 -0
  33. umap/locale/pl/LC_MESSAGES/django.po +114 -103
  34. umap/locale/pt/LC_MESSAGES/django.mo +0 -0
  35. umap/locale/pt/LC_MESSAGES/django.po +43 -33
  36. umap/locale/th_TH/LC_MESSAGES/django.mo +0 -0
  37. umap/locale/th_TH/LC_MESSAGES/django.po +310 -109
  38. umap/locale/zh_TW/LC_MESSAGES/django.mo +0 -0
  39. umap/locale/zh_TW/LC_MESSAGES/django.po +80 -70
  40. umap/management/commands/switch_user.py +2 -2
  41. umap/migrations/0018_datalayer_uuid.py +1 -1
  42. umap/models.py +7 -3
  43. umap/settings/local.py.sample +1 -1
  44. umap/static/umap/base.css +89 -32
  45. umap/static/umap/content.css +129 -33
  46. umap/static/umap/css/bar.css +82 -20
  47. umap/static/umap/css/browser.css +163 -0
  48. umap/static/umap/css/contextmenu.css +15 -0
  49. umap/static/umap/css/dialog.css +36 -16
  50. umap/static/umap/css/form.css +123 -33
  51. umap/static/umap/css/icon.css +46 -3
  52. umap/static/umap/css/panel.css +7 -3
  53. umap/static/umap/css/popup.css +34 -8
  54. umap/static/umap/css/tooltip.css +8 -4
  55. umap/static/umap/img/16-white.svg +26 -8
  56. umap/static/umap/img/16.svg +1 -1
  57. umap/static/umap/img/source/16-white.svg +36 -18
  58. umap/static/umap/img/source/16.svg +1 -1
  59. umap/static/umap/js/components/alerts/alert.css +69 -31
  60. umap/static/umap/js/components/alerts/alert.js +20 -2
  61. umap/static/umap/js/components/base.js +1 -1
  62. umap/static/umap/js/modules/browser.js +69 -61
  63. umap/static/umap/js/modules/caption.js +10 -7
  64. umap/static/umap/js/modules/data/features.js +89 -63
  65. umap/static/umap/js/modules/data/fields.js +446 -0
  66. umap/static/umap/js/modules/data/layer.js +116 -196
  67. umap/static/umap/js/modules/domutils.js +109 -0
  68. umap/static/umap/js/modules/filters.js +780 -0
  69. umap/static/umap/js/modules/form/builder.js +8 -5
  70. umap/static/umap/js/modules/form/fields.js +111 -221
  71. umap/static/umap/js/modules/formatter.js +24 -1
  72. umap/static/umap/js/modules/help.js +4 -3
  73. umap/static/umap/js/modules/i18n.js +1 -1
  74. umap/static/umap/js/modules/importer.js +1 -1
  75. umap/static/umap/js/modules/importers/opendata.js +15 -0
  76. umap/static/umap/js/modules/importers/openrouteservice.js +6 -1
  77. umap/static/umap/js/modules/managers.js +2 -1
  78. umap/static/umap/js/modules/permissions.js +39 -31
  79. umap/static/umap/js/modules/rendering/controls.js +11 -9
  80. umap/static/umap/js/modules/rendering/icon.js +3 -8
  81. umap/static/umap/js/modules/rendering/layers/base.js +3 -3
  82. umap/static/umap/js/modules/rendering/layers/classified.js +18 -11
  83. umap/static/umap/js/modules/rendering/layers/cluster.js +23 -11
  84. umap/static/umap/js/modules/rendering/layers/heat.js +27 -21
  85. umap/static/umap/js/modules/rendering/map.js +1 -0
  86. umap/static/umap/js/modules/rendering/template.js +50 -23
  87. umap/static/umap/js/modules/rendering/ui.js +33 -25
  88. umap/static/umap/js/modules/rules.js +38 -44
  89. umap/static/umap/js/modules/schema.js +3 -6
  90. umap/static/umap/js/modules/share.js +5 -4
  91. umap/static/umap/js/modules/tableeditor.js +50 -38
  92. umap/static/umap/js/modules/templates.js +2 -3
  93. umap/static/umap/js/modules/ui/bar.js +55 -23
  94. umap/static/umap/js/modules/ui/dialog.js +38 -27
  95. umap/static/umap/js/modules/ui/panel.js +23 -8
  96. umap/static/umap/js/modules/ui/tooltip.js +6 -5
  97. umap/static/umap/js/modules/umap.js +158 -51
  98. umap/static/umap/js/modules/utils.js +24 -2
  99. umap/static/umap/js/umap.core.js +1 -110
  100. umap/static/umap/locale/am_ET.js +52 -17
  101. umap/static/umap/locale/am_ET.json +52 -17
  102. umap/static/umap/locale/ar.js +52 -17
  103. umap/static/umap/locale/ar.json +52 -17
  104. umap/static/umap/locale/ast.js +52 -17
  105. umap/static/umap/locale/ast.json +52 -17
  106. umap/static/umap/locale/bg.js +52 -17
  107. umap/static/umap/locale/bg.json +52 -17
  108. umap/static/umap/locale/br.js +48 -22
  109. umap/static/umap/locale/br.json +48 -22
  110. umap/static/umap/locale/ca.js +52 -17
  111. umap/static/umap/locale/ca.json +52 -17
  112. umap/static/umap/locale/cs_CZ.js +52 -17
  113. umap/static/umap/locale/cs_CZ.json +52 -17
  114. umap/static/umap/locale/da.js +54 -17
  115. umap/static/umap/locale/da.json +54 -17
  116. umap/static/umap/locale/de.js +102 -67
  117. umap/static/umap/locale/de.json +102 -67
  118. umap/static/umap/locale/el.js +52 -17
  119. umap/static/umap/locale/el.json +52 -17
  120. umap/static/umap/locale/en.js +54 -16
  121. umap/static/umap/locale/en.json +54 -16
  122. umap/static/umap/locale/en_US.json +52 -17
  123. umap/static/umap/locale/es.js +54 -17
  124. umap/static/umap/locale/es.json +54 -17
  125. umap/static/umap/locale/et.js +91 -56
  126. umap/static/umap/locale/et.json +91 -56
  127. umap/static/umap/locale/eu.js +84 -49
  128. umap/static/umap/locale/eu.json +84 -49
  129. umap/static/umap/locale/fa_IR.js +52 -17
  130. umap/static/umap/locale/fa_IR.json +52 -17
  131. umap/static/umap/locale/fi.js +52 -17
  132. umap/static/umap/locale/fi.json +52 -17
  133. umap/static/umap/locale/fr.js +54 -17
  134. umap/static/umap/locale/fr.json +54 -17
  135. umap/static/umap/locale/gl.js +52 -17
  136. umap/static/umap/locale/gl.json +52 -17
  137. umap/static/umap/locale/he.js +52 -17
  138. umap/static/umap/locale/he.json +52 -17
  139. umap/static/umap/locale/hr.js +52 -17
  140. umap/static/umap/locale/hr.json +52 -17
  141. umap/static/umap/locale/hu.js +59 -24
  142. umap/static/umap/locale/hu.json +59 -24
  143. umap/static/umap/locale/id.js +52 -17
  144. umap/static/umap/locale/id.json +52 -17
  145. umap/static/umap/locale/is.js +52 -17
  146. umap/static/umap/locale/is.json +52 -17
  147. umap/static/umap/locale/it.js +52 -17
  148. umap/static/umap/locale/it.json +52 -17
  149. umap/static/umap/locale/ja.js +52 -17
  150. umap/static/umap/locale/ja.json +52 -17
  151. umap/static/umap/locale/ko.js +52 -17
  152. umap/static/umap/locale/ko.json +52 -17
  153. umap/static/umap/locale/lt.js +52 -17
  154. umap/static/umap/locale/lt.json +52 -17
  155. umap/static/umap/locale/ms.js +52 -17
  156. umap/static/umap/locale/ms.json +52 -17
  157. umap/static/umap/locale/nl.js +52 -17
  158. umap/static/umap/locale/nl.json +52 -17
  159. umap/static/umap/locale/no.js +52 -17
  160. umap/static/umap/locale/no.json +52 -17
  161. umap/static/umap/locale/pl.js +53 -17
  162. umap/static/umap/locale/pl.json +53 -17
  163. umap/static/umap/locale/pl_PL.json +52 -17
  164. umap/static/umap/locale/pt.js +52 -17
  165. umap/static/umap/locale/pt.json +52 -17
  166. umap/static/umap/locale/pt_BR.js +52 -17
  167. umap/static/umap/locale/pt_BR.json +52 -17
  168. umap/static/umap/locale/pt_PT.js +52 -17
  169. umap/static/umap/locale/pt_PT.json +52 -17
  170. umap/static/umap/locale/ro.js +52 -17
  171. umap/static/umap/locale/ro.json +52 -17
  172. umap/static/umap/locale/ru.js +52 -17
  173. umap/static/umap/locale/ru.json +52 -17
  174. umap/static/umap/locale/si.js +1 -1
  175. umap/static/umap/locale/si.json +1 -1
  176. umap/static/umap/locale/sk_SK.js +52 -17
  177. umap/static/umap/locale/sk_SK.json +52 -17
  178. umap/static/umap/locale/sl.js +52 -17
  179. umap/static/umap/locale/sl.json +52 -17
  180. umap/static/umap/locale/sr.js +52 -17
  181. umap/static/umap/locale/sr.json +52 -17
  182. umap/static/umap/locale/sv.js +52 -17
  183. umap/static/umap/locale/sv.json +52 -17
  184. umap/static/umap/locale/th_TH.js +52 -17
  185. umap/static/umap/locale/th_TH.json +52 -17
  186. umap/static/umap/locale/tr.js +52 -17
  187. umap/static/umap/locale/tr.json +52 -17
  188. umap/static/umap/locale/uk_UA.js +52 -17
  189. umap/static/umap/locale/uk_UA.json +52 -17
  190. umap/static/umap/locale/vi.js +52 -17
  191. umap/static/umap/locale/vi.json +52 -17
  192. umap/static/umap/locale/vi_VN.json +52 -17
  193. umap/static/umap/locale/zh.js +52 -17
  194. umap/static/umap/locale/zh.json +52 -17
  195. umap/static/umap/locale/zh_CN.json +52 -17
  196. umap/static/umap/locale/zh_TW.Big5.json +52 -17
  197. umap/static/umap/locale/zh_TW.js +53 -17
  198. umap/static/umap/locale/zh_TW.json +53 -17
  199. umap/static/umap/map.css +63 -226
  200. umap/static/umap/unittests/utils.js +18 -0
  201. umap/static/umap/vars.css +23 -5
  202. umap/templates/umap/components/alerts/alert.html +32 -29
  203. umap/templates/umap/css.html +2 -1
  204. umap/templates/umap/login_popup_end.html +18 -9
  205. umap/templates/umap/user_map_table.html +7 -2
  206. umap/tests/integration/conftest.py +10 -6
  207. umap/tests/integration/test_anonymous_owned_map.py +90 -37
  208. umap/tests/integration/test_basics.py +25 -1
  209. umap/tests/integration/test_browser.py +37 -0
  210. umap/tests/integration/test_cluster.py +110 -0
  211. umap/tests/integration/test_conditional_rules.py +107 -52
  212. umap/tests/integration/test_datalayer.py +9 -16
  213. umap/tests/integration/test_draw_polygon.py +6 -0
  214. umap/tests/integration/test_draw_polyline.py +11 -0
  215. umap/tests/integration/test_edit_marker.py +12 -1
  216. umap/tests/integration/test_export_map.py +19 -0
  217. umap/tests/integration/test_fields.py +541 -0
  218. umap/tests/integration/test_filters.py +616 -0
  219. umap/tests/integration/test_iframe.py +1 -1
  220. umap/tests/integration/test_import.py +38 -42
  221. umap/tests/integration/test_map_preview.py +1 -1
  222. umap/tests/integration/test_picto.py +1 -1
  223. umap/tests/integration/test_popup.py +31 -0
  224. umap/tests/integration/test_remote_data.py +60 -4
  225. umap/tests/integration/test_save.py +1 -1
  226. umap/tests/integration/test_share.py +4 -4
  227. umap/tests/integration/test_tableeditor.py +31 -7
  228. umap/tests/integration/test_websocket_sync.py +71 -20
  229. umap/tests/test_dashboard.py +11 -1
  230. umap/tests/test_statics.py +2 -2
  231. umap/tests/test_utils.py +19 -2
  232. umap/tests/test_views.py +1 -1
  233. umap/urls.py +1 -0
  234. umap/utils.py +8 -1
  235. umap/views.py +5 -0
  236. {umap_project-3.3.2.dist-info → umap_project-3.4.0.dist-info}/METADATA +15 -15
  237. {umap_project-3.3.2.dist-info → umap_project-3.4.0.dist-info}/RECORD +240 -236
  238. umap/static/umap/js/modules/facets.js +0 -164
  239. umap/tests/integration/test_facets_browser.py +0 -279
  240. {umap_project-3.3.2.dist-info → umap_project-3.4.0.dist-info}/WHEEL +0 -0
  241. {umap_project-3.3.2.dist-info → umap_project-3.4.0.dist-info}/entry_points.txt +0 -0
  242. {umap_project-3.3.2.dist-info → umap_project-3.4.0.dist-info}/licenses/LICENSE +0 -0
Binary file
@@ -15,7 +15,7 @@ msgid ""
15
15
  msgstr ""
16
16
  "Project-Id-Version: uMap\n"
17
17
  "Report-Msgid-Bugs-To: \n"
18
- "POT-Creation-Date: 2025-06-10 09:19+0000\n"
18
+ "POT-Creation-Date: 2025-10-14 15:28+0000\n"
19
19
  "PO-Revision-Date: 2013-11-22 14:00+0000\n"
20
20
  "Last-Translator: Supaplex <bejokeup@gmail.com>, 2019,2023-2025\n"
21
21
  "Language-Team: Chinese (Taiwan) (http://app.transifex.com/openstreetmap/umap/language/zh_TW/)\n"
@@ -159,11 +159,11 @@ msgstr "設定"
159
159
 
160
160
  #: models.py:243
161
161
  msgid "save as template"
162
- msgstr ""
162
+ msgstr "儲存為模版"
163
163
 
164
164
  #: models.py:244
165
165
  msgid "This map is a template map."
166
- msgstr ""
166
+ msgstr "這份地圖是模版地圖"
167
167
 
168
168
  #: models.py:420
169
169
  msgid "Clone of"
@@ -183,87 +183,87 @@ msgstr "載入此圖層時顯示"
183
183
 
184
184
  #: settings/base.py:283
185
185
  msgid "uMap user documentation"
186
- msgstr ""
186
+ msgstr "uMap使用者說明文件"
187
187
 
188
188
  #: settings/base.py:288
189
189
  msgid "Video tutorials"
190
- msgstr ""
190
+ msgstr "影片教學"
191
191
 
192
192
  #: settings/base.py:293
193
193
  msgid "OpenStreetMap.org forum"
194
- msgstr ""
194
+ msgstr "OpenStreetMap.org 論壇"
195
195
 
196
196
  #: settings/base.py:298
197
197
  msgid "OpenStreetMap France forum"
198
- msgstr ""
198
+ msgstr "OpenStreetMap 法國論壇"
199
199
 
200
200
  #: settings/base.py:318
201
201
  msgid "Art and Culture"
202
- msgstr ""
202
+ msgstr "藝術與文化"
203
203
 
204
204
  #: settings/base.py:319
205
205
  msgid "Cycling"
206
- msgstr ""
206
+ msgstr "單車"
207
207
 
208
208
  #: settings/base.py:320
209
209
  msgid "Business"
210
- msgstr ""
210
+ msgstr "商家"
211
211
 
212
212
  #: settings/base.py:321
213
213
  msgid "Environment"
214
- msgstr ""
214
+ msgstr "環境"
215
215
 
216
216
  #: settings/base.py:322
217
217
  msgid "Education"
218
- msgstr ""
218
+ msgstr "教育"
219
219
 
220
220
  #: settings/base.py:323
221
221
  msgid "Food and Agriculture"
222
- msgstr ""
222
+ msgstr "食物與農業"
223
223
 
224
224
  #: settings/base.py:324
225
225
  msgid "Geopolitics"
226
- msgstr ""
226
+ msgstr "地緣政治"
227
227
 
228
228
  #: settings/base.py:325
229
229
  msgid "Health"
230
- msgstr ""
230
+ msgstr "健康"
231
231
 
232
232
  #: settings/base.py:326
233
233
  msgid "Hiking"
234
- msgstr ""
234
+ msgstr "登山"
235
235
 
236
236
  #: settings/base.py:327
237
237
  msgid "History"
238
- msgstr ""
238
+ msgstr "歷史"
239
239
 
240
240
  #: settings/base.py:328
241
241
  msgid "Public sector"
242
- msgstr ""
242
+ msgstr "公共部門"
243
243
 
244
244
  #: settings/base.py:329
245
245
  msgid "Science"
246
- msgstr ""
246
+ msgstr "科學"
247
247
 
248
248
  #: settings/base.py:330
249
249
  msgid "Shopping"
250
- msgstr ""
250
+ msgstr "購物"
251
251
 
252
252
  #: settings/base.py:331
253
253
  msgid "Sport and Leisure"
254
- msgstr ""
254
+ msgstr "運動與休閒"
255
255
 
256
256
  #: settings/base.py:332
257
257
  msgid "Travel"
258
- msgstr ""
258
+ msgstr "旅遊"
259
259
 
260
260
  #: settings/base.py:333
261
261
  msgid "Transports"
262
- msgstr ""
262
+ msgstr "交通運輸"
263
263
 
264
264
  #: settings/base.py:334
265
265
  msgid "Tourism"
266
- msgstr ""
266
+ msgstr "遊客"
267
267
 
268
268
  #: templates/403.html:8
269
269
  msgid ""
@@ -332,7 +332,7 @@ msgstr "瀏覽 %(current_user)s 已打心號的地圖"
332
332
  msgid "%(current_user)s has no starred maps yet."
333
333
  msgstr "%(current_user)s 沒有任何打心號的地圖。"
334
334
 
335
- #: templates/base.html:13
335
+ #: templates/base.html:16
336
336
  msgid ""
337
337
  "uMap lets you create maps with OpenStreetMap layers in a minute and embed "
338
338
  "them in your site."
@@ -416,48 +416,54 @@ msgid "Play with the demo"
416
416
  msgstr "播放展示"
417
417
 
418
418
  #: templates/umap/components/alerts/alert.html:17
419
- #: templates/umap/components/alerts/alert.html:66
420
- #: templates/umap/components/alerts/alert.html:94
419
+ #: templates/umap/components/alerts/alert.html:69
420
+ #: templates/umap/components/alerts/alert.html:97
421
421
  msgid "Close"
422
422
  msgstr "關閉"
423
423
 
424
424
  #: templates/umap/components/alerts/alert.html:32
425
425
  #, python-format
426
426
  msgid ""
427
- "Pro-tip: to easily find back your maps, <a href=\"%(login_url)s\" "
428
- "target=\"_blank\">create an account</a> or <a href=\"%(login_url)s\" "
429
- "target=\"_blank\">log in</a>."
430
- msgstr "進階技巧:要輕易找到你先前的地圖,<a href=\"%(login_url)s\" target=\"_blank\">創建帳號</a>或是<a href=\"%(login_url)s\" target=\"_blank\">登入</a>。"
427
+ "Oops, I didn't mean it, I want to <a href=\"%(login_url)s\" "
428
+ "class=\"login\">create an account</a> or <a href=\"%(login_url)s\" "
429
+ "class=\"login\">log in</a> (no worry, we'll attach the map to your account)."
430
+ msgstr ""
431
431
 
432
- #: templates/umap/components/alerts/alert.html:37
432
+ #: templates/umap/components/alerts/alert.html:35
433
+ msgid ""
434
+ "Yes, I want to continue editing anonymously, I will save the secret edit "
435
+ "link to be able to edit this map later or on another device"
436
+ msgstr ""
437
+
438
+ #: templates/umap/components/alerts/alert.html:39
433
439
  msgid "Here is your secret link to edit the map, please keep it safe:"
434
440
  msgstr "這裡是編輯地圖的祕密連結,請好好保管:"
435
441
 
436
- #: templates/umap/components/alerts/alert.html:41
442
+ #: templates/umap/components/alerts/alert.html:43
437
443
  msgid "Copy link"
438
444
  msgstr "複製連結"
439
445
 
440
- #: templates/umap/components/alerts/alert.html:48
446
+ #: templates/umap/components/alerts/alert.html:50
441
447
  msgid "Enter your email address to receive the secret link:"
442
448
  msgstr "輸入你的電子郵件來取得祕密連結:"
443
449
 
444
- #: templates/umap/components/alerts/alert.html:54
450
+ #: templates/umap/components/alerts/alert.html:56
445
451
  msgid "Email"
446
452
  msgstr "電子郵件"
447
453
 
448
- #: templates/umap/components/alerts/alert.html:57
454
+ #: templates/umap/components/alerts/alert.html:59
449
455
  msgid "Send me the link"
450
456
  msgstr "寄送連結"
451
457
 
452
- #: templates/umap/components/alerts/alert.html:81
458
+ #: templates/umap/components/alerts/alert.html:84
453
459
  msgid "See their edits in another tab"
454
460
  msgstr "在其他頁籤察看他們的編輯"
455
461
 
456
- #: templates/umap/components/alerts/alert.html:84
462
+ #: templates/umap/components/alerts/alert.html:87
457
463
  msgid "Keep your changes and loose theirs"
458
464
  msgstr "保留你的變動並且丟棄他們的"
459
465
 
460
- #: templates/umap/components/alerts/alert.html:87
466
+ #: templates/umap/components/alerts/alert.html:90
461
467
  msgid "Keep their changes and loose yours"
462
468
  msgstr "保留他們的變動並且丟棄自己的"
463
469
 
@@ -508,11 +514,11 @@ msgstr "我的地圖"
508
514
  #: templates/umap/dashboard_menu.html:11
509
515
  #, python-format
510
516
  msgid "My Templates (%(count)s)"
511
- msgstr ""
517
+ msgstr "我的模版 (%(count)s)"
512
518
 
513
519
  #: templates/umap/dashboard_menu.html:13 templates/umap/user_templates.html:6
514
520
  msgid "My Templates"
515
- msgstr ""
521
+ msgstr "我的模版"
516
522
 
517
523
  #: templates/umap/dashboard_menu.html:17
518
524
  msgid "My profile"
@@ -536,19 +542,19 @@ msgstr "您已登入,繼續中..."
536
542
 
537
543
  #: templates/umap/map_list.html:15
538
544
  msgid "template"
539
- msgstr ""
545
+ msgstr "模版"
540
546
 
541
- #: templates/umap/map_list.html:18 views.py:458
547
+ #: templates/umap/map_list.html:18 views.py:459
542
548
  msgid "by"
543
549
  msgstr "由"
544
550
 
545
551
  #: templates/umap/map_list.html:22
546
552
  msgid "See the template"
547
- msgstr ""
553
+ msgstr "檢視模版"
548
554
 
549
555
  #: templates/umap/map_list.html:22
550
556
  msgid "See the map"
551
- msgstr ""
557
+ msgstr "檢視地圖"
552
558
 
553
559
  #: templates/umap/map_list.html:28
554
560
  msgid "More"
@@ -714,7 +720,7 @@ msgstr "找不到地圖。"
714
720
 
715
721
  #: templates/umap/search.html:36
716
722
  msgid "Latest created maps in category"
717
- msgstr ""
723
+ msgstr "這個類別最新的地圖"
718
724
 
719
725
  #: templates/umap/search.html:43
720
726
  msgid "Latest created maps"
@@ -724,9 +730,9 @@ msgstr "最新創建地圖"
724
730
  msgid "Search maps"
725
731
  msgstr "搜尋地圖"
726
732
 
727
- #: templates/umap/search_bar.html:14
733
+ #: templates/umap/search_bar.html:14 templates/umap/user_map_table.html:15
728
734
  msgid "Any category"
729
- msgstr ""
735
+ msgstr "任何類別"
730
736
 
731
737
  #: templates/umap/search_bar.html:19
732
738
  msgid "Search"
@@ -769,7 +775,7 @@ msgstr "搜尋我的地圖"
769
775
 
770
776
  #: templates/umap/user_dashboard.html:11
771
777
  msgid "Map’s name"
772
- msgstr ""
778
+ msgstr "地圖的名稱"
773
779
 
774
780
  #: templates/umap/user_dashboard.html:12
775
781
  #, python-format
@@ -794,93 +800,97 @@ msgstr "新的團隊"
794
800
 
795
801
  #: templates/umap/user_templates.html:10
796
802
  msgid "Search my templates"
797
- msgstr ""
803
+ msgstr "搜尋我的模版"
798
804
 
799
805
  #: templates/umap/user_templates.html:11
800
806
  msgid "Template’s name"
801
- msgstr ""
807
+ msgstr "模版名稱"
802
808
 
803
809
  #: templates/umap/user_templates.html:12
804
810
  #, python-format
805
811
  msgid "Download %(count)s templates"
806
- msgstr ""
812
+ msgstr "下載%(count)s模版"
807
813
 
808
814
  #: templates/umap/user_templates.html:15
809
815
  msgid "You have no template yet."
810
- msgstr ""
816
+ msgstr "你仍沒有模版。"
811
817
 
812
818
  #: templates/umap/user_templates.html:16
813
819
  msgid "Create a template"
814
- msgstr ""
820
+ msgstr "新建模版"
815
821
 
816
822
  #: templates/umap/user_templates.html:17
817
823
  msgid "No template found."
818
- msgstr ""
824
+ msgstr "沒有找到模版"
819
825
 
820
- #: views.py:233
826
+ #: views.py:235
821
827
  msgid "Cannot delete a team with more than one member"
822
828
  msgstr "無法刪除超過一位成員的團隊"
823
829
 
824
- #: views.py:237
830
+ #: views.py:239
825
831
  #, python-format
826
832
  msgid "Team “%(name)s” has been deleted"
827
833
  msgstr "已經刪除團隊 \"%(name)s\" "
828
834
 
829
- #: views.py:463
835
+ #: views.py:464
830
836
  msgid "View the map"
831
837
  msgstr "檢視地圖"
832
838
 
833
- #: views.py:864
839
+ #: views.py:872
834
840
  msgid "See full screen"
835
841
  msgstr "檢視全螢幕"
836
842
 
837
- #: views.py:1007
843
+ #: views.py:1015
838
844
  msgid "Map editors updated with success!"
839
845
  msgstr "地圖編輯者更新完成"
840
846
 
841
- #: views.py:1043
847
+ #: views.py:1051
842
848
  #, python-format
843
849
  msgid "The uMap edit link for your map: %(map_name)s"
844
850
  msgstr "你的地圖 uMap 編輯連結:%(map_name)s"
845
851
 
846
- #: views.py:1046
852
+ #: views.py:1054
847
853
  #, python-format
848
854
  msgid "Here is your secret edit link: %(link)s"
849
855
  msgstr "這是你的祕密編輯連結:%(link)s"
850
856
 
851
- #: views.py:1053
857
+ #: views.py:1061
852
858
  #, python-format
853
859
  msgid "Can't send email to %(email)s"
854
860
  msgstr "無法傳送電子郵件到%(email)s"
855
861
 
856
- #: views.py:1056
862
+ #: views.py:1064
857
863
  #, python-format
858
864
  msgid "Email sent to %(email)s"
859
865
  msgstr "電子郵件寄至 %(email)s"
860
866
 
861
- #: views.py:1067
867
+ #: views.py:1075
862
868
  msgid "Only its owner can delete the map."
863
869
  msgstr "只有擁有者可以刪除此地圖"
864
870
 
865
- #: views.py:1073
871
+ #: views.py:1081
866
872
  msgid "Map successfully deleted."
867
873
  msgstr "成功刪除地圖"
868
874
 
869
- #: views.py:1099
875
+ #: views.py:1107
870
876
  #, python-format
871
877
  msgid ""
872
878
  "Your map has been cloned! If you want to edit this map from another "
873
879
  "computer, please use this link: %(anonymous_url)s"
874
880
  msgstr "您的地圖已複製完成!如果您想在不同的機器編輯這個地圖,請使用這個連結:%(anonymous_url)s"
875
881
 
876
- #: views.py:1104
882
+ #: views.py:1112
877
883
  msgid "Congratulations, your map has been cloned!"
878
884
  msgstr "恭喜,您的地圖已被複製!"
879
885
 
880
- #: views.py:1358
886
+ #: views.py:1366
881
887
  msgid "Layer successfully deleted."
882
888
  msgstr "圖層已刪除"
883
889
 
884
- #: views.py:1380
890
+ #: views.py:1388
885
891
  msgid "Permissions updated with success!"
886
892
  msgstr "權限更新完成"
893
+
894
+ #: views.py:1405
895
+ msgid "Generic"
896
+ msgstr "一般"
@@ -23,7 +23,7 @@ class Command(BaseCommand):
23
23
  def handle(self, *args, **options):
24
24
  old = User.objects.get(username=options["old"])
25
25
  new = User.objects.get(username=options["new"])
26
- print(f"Replacing usre {old} by user {new}")
26
+ print(f"Replacing user {old} by user {new}")
27
27
  owned_maps = old.owned_maps.all()
28
28
  print(f"Replacing owner of {len(owned_maps)} maps")
29
29
  if not options["dry_run"]:
@@ -40,7 +40,7 @@ class Command(BaseCommand):
40
40
  mm.save()
41
41
 
42
42
  teams = old.teams.all()
43
- print(f"Replacing editor of {len(teams)} maps")
43
+ print(f"Replacing team member of {len(teams)} teams")
44
44
  if not options["dry_run"]:
45
45
  for team in teams:
46
46
  team.users.remove(old)
@@ -57,6 +57,6 @@ class Migration(migrations.Migration):
57
57
  ),
58
58
  ),
59
59
  # When applying the migration backwards, we need to drop the pk index
60
- # Before addding a new one.
60
+ # Before adding a new one.
61
61
  migrations.RunSQL(migrations.RunSQL.noop, reverse_sql=drop_index),
62
62
  ]
umap/models.py CHANGED
@@ -13,7 +13,7 @@ from django.utils.functional import classproperty
13
13
  from django.utils.translation import gettext_lazy as _
14
14
 
15
15
  from .managers import PrivateManager, PublicManager
16
- from .utils import _urls_for_js
16
+ from .utils import _urls_for_js, normalize_string
17
17
 
18
18
 
19
19
  # Did not find a clean way to do this in Django
@@ -289,7 +289,7 @@ class Map(NamedModel):
289
289
  self.save()
290
290
 
291
291
  def delete(self, **kwargs):
292
- # Explicitely call datalayers.delete, so we can deal with removing files
292
+ # Explicitly call datalayers.delete, so we can deal with removing files
293
293
  # (the cascade delete would not call the model delete method)
294
294
  # Use datalayer_set so to get also the deleted ones.
295
295
  for datalayer in self.datalayer_set.all():
@@ -438,7 +438,11 @@ class Map(NamedModel):
438
438
  "iconUrl": {
439
439
  "default": "%sumap/img/marker.svg" % settings.STATIC_URL,
440
440
  },
441
- "tags": {"choices": sorted(settings.UMAP_TAGS, key=lambda i: i[0])},
441
+ "tags": {
442
+ "choices": sorted(
443
+ settings.UMAP_TAGS, key=lambda i: normalize_string(i[1])
444
+ )
445
+ },
442
446
  }
443
447
 
444
448
 
@@ -59,7 +59,7 @@ SOCIAL_AUTH_REDIRECT_IS_HTTPS = True
59
59
  SOCIAL_AUTH_RAISE_EXCEPTIONS = False
60
60
  SOCIAL_AUTH_BACKEND_ERROR_URL = "/"
61
61
 
62
- # If you want to add a playgroud map, add its primary key
62
+ # If you want to add a playground map, add its primary key
63
63
  # UMAP_DEMO_PK = 204
64
64
  # If you want to add a showcase map on the home page, add its primary key
65
65
  # UMAP_SHOWCASE_PK = 1156