.gitignore CHANGED
@@ -21,5 +21,3 @@ var/
21
 
22
  # vscode
23
  .vscode
24
-
25
- secrets.toml
 
21
 
22
  # vscode
23
  .vscode
 
 
.streamlit/config.toml CHANGED
@@ -25,7 +25,7 @@ gatherUsageStats = false
25
  # - Open the browser
26
 
27
  # Default: whatever value is set in server.port.
28
- serverPort = 8501
29
 
30
  # .streamlit/config.toml
31
  [ui]
 
25
  # - Open the browser
26
 
27
  # Default: whatever value is set in server.port.
28
+ serverPort = 8502
29
 
30
  # .streamlit/config.toml
31
  [ui]
app.py CHANGED
@@ -7,7 +7,7 @@ import folium
7
  import streamlit as st
8
  from huggingface_hub import HfApi
9
  from streamlit_folium import st_folium
10
- from src.components import show_charts, show_dataframes_metrics, show_embed_code, show_donations
11
  from src.text_content import (
12
  CREDITS_TEXT,
13
  LOGO,
@@ -117,9 +117,6 @@ show_embed_code()
117
  # Show metrics
118
  show_dataframes_metrics(len_requests, len_interventions, len_solved_verified_requests, lang)
119
 
120
- # Show charts
121
- show_charts()
122
-
123
  # Verified Requests table
124
  # st.divider()
125
  # st.subheader(_("📝 **Table of verified requests**"))
 
7
  import streamlit as st
8
  from huggingface_hub import HfApi
9
  from streamlit_folium import st_folium
10
+ from src.components import show_dataframes_metrics, show_embed_code, show_donations
11
  from src.text_content import (
12
  CREDITS_TEXT,
13
  LOGO,
 
117
  # Show metrics
118
  show_dataframes_metrics(len_requests, len_interventions, len_solved_verified_requests, lang)
119
 
 
 
 
120
  # Verified Requests table
121
  # st.divider()
122
  # st.subheader(_("📝 **Table of verified requests**"))
locales/ar/LC_MESSAGES/messages.mo CHANGED
Binary files a/locales/ar/LC_MESSAGES/messages.mo and b/locales/ar/LC_MESSAGES/messages.mo differ
 
locales/ar/LC_MESSAGES/messages.po CHANGED
@@ -3,12 +3,12 @@
3
  # This file is distributed under the same license as the PACKAGE package.
4
  # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
  #
6
- #: src/utils.py:69 src/utils.py:70 src/markers.py:226 src/components.py:19
7
  msgid ""
8
  msgstr ""
9
  "Project-Id-Version: \n"
10
  "Report-Msgid-Bugs-To: \n"
11
- "POT-Creation-Date: 2023-09-26 20:34+0200\n"
12
  "PO-Revision-Date: 2023-09-18 21:00+0200\n"
13
  "Last-Translator: \n"
14
  "Language-Team: \n"
@@ -18,91 +18,91 @@ msgstr ""
18
  "Content-Transfer-Encoding: 8bit\n"
19
  "X-Generator: Poedit 3.3.2\n"
20
 
21
- #: app.py:21
22
  msgid "myapplication"
23
  msgstr ""
24
 
25
- #: app.py:23
26
  msgid "HF_TOKEN"
27
  msgstr ""
28
 
29
- #: app.py:30
30
  msgid "wide"
31
  msgstr ""
32
 
33
- #: app.py:31 src/filters.py:40 src/filters.py:62
34
  msgid "collapsed"
35
  msgstr ""
36
 
37
- #: app.py:32
38
  msgid "🤝"
39
  msgstr ""
40
 
41
- #: app.py:33
42
  msgid "Nt3awnou نتعاونو"
43
  msgstr ""
44
 
45
- #: app.py:37
46
  msgid "sleep_time"
47
  msgstr ""
48
 
49
- #: app.py:39
50
  msgid "auto_refresh"
51
  msgstr ""
52
 
53
- #: app.py:42
54
  msgid "Auto Refresh?"
55
  msgstr ""
56
 
57
- #: app.py:44
58
  msgid "Refresh rate in seconds"
59
  msgstr ""
60
 
61
- #: app.py:54 app.py:184 src/components.py:78 src/components.py:162
62
  msgid "ar"
63
  msgstr ""
64
 
65
- #: app.py:54
66
  msgid "العربية"
67
  msgstr ""
68
 
69
- #: app.py:55 src/components.py:101 src/components.py:179
70
  msgid "fr"
71
  msgstr ""
72
 
73
- #: app.py:55
74
  msgid "Français"
75
  msgstr ""
76
 
77
- #: app.py:56 app.py:61 src/components.py:55 src/components.py:146
78
  msgid "en"
79
  msgstr ""
80
 
81
- #: app.py:56
82
  msgid "English"
83
  msgstr ""
84
 
85
- #: app.py:59
86
  msgid "Choose language / اختر اللغة"
87
  msgstr ""
88
 
89
- #: app.py:64
90
  msgid "messages"
91
  msgstr ""
92
 
93
- #: app.py:64
94
  msgid "locales"
95
  msgstr ""
96
 
97
- #: app.py:69
98
  msgid "Markers"
99
  msgstr ""
100
 
101
- #: app.py:112
102
  msgid "map"
103
  msgstr ""
104
 
105
- #: app.py:186
106
  msgid ""
107
  "\n"
108
  " <style>\n"
@@ -117,19 +117,19 @@ msgstr ""
117
  msgid ""
118
  "\n"
119
  " <div style=\"text-align: left;\">\n"
120
- " Nt3awnou نتعاونو is a non-profit organization and a collaborative "
121
- "platform dedicated to aiding individuals impacted by the recent earthquake "
122
- "in Morocco. Our core mission is to streamline and coordinate timely "
123
- "assistance for everyone affected. How do we achieve this? We assist those in "
124
- "need by allowing them to communicate their location and the specific aid "
125
- "they require, either by completing a form or sending a voice message via "
126
- "WhatsApp to the number <b>0602838166</b>. Once we receive and process this "
127
- "information, it can be viewed in our dashboard, which allows NGOs to "
128
- "organize and precisely target their interventions, ensuring swift assistance "
129
- "reaches those in need. Any organization that has taken initiative in a "
130
- "particular area can notify us by completing a dedicated form. This data is "
131
- "also incorporated into the dashboard so that other NGOs can help affected "
132
- "areas that still haven't received help.\n"
133
  " <br>⚠️ Warning : There are still rocks falling down the mountains, making "
134
  "the roads to the affected areas very dangerous. We advise volunteers to "
135
  "donate directly to specialized NGOs.<br>\n"
@@ -156,11 +156,11 @@ msgid ""
156
  "\n"
157
  " <div style=\"text-align: right;-webkit-rtl-ordering: logical;\">\n"
158
  "\n"
159
- " نتعاونو هي منصة تعاونية غير ربحية لمساعدة الأفراد المتضررين من الزلزال "
160
- "الأخير في المغرب. مهمتنا هي تسهيل تقديم المساعدة في الوقت المناسب و بفاعلية "
161
- "و تنظيم لجميع المتضررين. كيفاش؟ كنعاونو الناس لي محتاجين للمساعدة إعلمونا "
162
- "بمكانهم و نوع المساعدة لي محتاجين ليها سواء عن طريق ملأ الاستمارة أو عن طريق "
163
- "إرسال تسجيل صوتي عبر واتساب إلى رقم مخصص<b>0602838166</b>. بعد معالجة هاد "
164
  "المعلومات، كنجمعوهم فخريطة كتمكن الجمعيات من تنظيم و استهداف تدخلاتهم بدقة "
165
  "باش توصل المساعدة للناس لي محتاجين في وقت أسرع. و كل جمعية قامت باللازم في "
166
  "منطقة معينة تقدر تعلمنا عن طريق ملأ استمارة مخصصة لهاد الأمر. هاد المعلومات "
@@ -191,21 +191,21 @@ msgstr ""
191
  msgid ""
192
  "\n"
193
  " <div style=\"text-align: left;\">\n"
194
- " Nt3awnou نتعاونو est une plateforme collaborative à but non-lucratif "
195
- "dédiée à l'aide aux personnes touchées par le récent tremblement de terre au "
196
- "Maroc. Notre mission principale est de rationaliser et de coordonner une "
197
- "assistance rapide pour toutes les personnes touchées. Comment y parvenons-"
198
- "nous ? Nous aidons les personnes dans le besoin en leur permettant de "
199
- "communiquer leur localisation et l'aide spécifique dont elles ont besoin, "
200
- "soit en remplissant un formulaire, soit en envoyant un message vocal via "
201
- "WhatsApp à un numéro <b>0602838166</b>. Une fois reçues et traitées, ces "
202
- "informations peuvent être consultées dans notre tableau de bord, qui permet "
203
- "aux associations d'organiser et de cibler précisément leurs interventions, "
204
- "afin que l'aide parvienne rapidement à ceux qui en ont besoin. Toute "
205
- "organisation ayant pris une initiative dans une zone particulière peut nous "
206
- "en informer en remplissant un formulaire prévu à cet effet. Ces données sont "
207
- "également intégrées au tableau de bord afin que d'autres associations "
208
- "puissent aider les zones touchées qui n'ont pas encore reçu d'aide.\n"
209
  " <br> ⚠️ Avertissement : Il y a encore des chutes de pierres dans les "
210
  "montagnes, ce qui rend les routes vers les zones touchées très dangereuses. "
211
  "Nous conseillons aux volontaires de faire des dons directement aux "
@@ -245,12 +245,15 @@ msgid ""
245
  " <hr>\n"
246
  " <div style=\"text-align: center;\">\n"
247
  " <p>By <b>Moroccans</b> for <b>Moroccans</b> 🤝</p>\n"
 
 
 
248
  " <p>Reach out to us at <a href=\"mailto:nt3awnoumorocco@gmail."
249
  "com\">[email protected]</a></p>\n"
250
  " "
251
  msgstr ""
252
 
253
- #: src/text_content.py:60
254
  msgid ""
255
  "\n"
256
  " <style>\n"
@@ -312,7 +315,7 @@ msgid ""
312
  " # "
313
  msgstr ""
314
 
315
- #: src/text_content.py:105
316
  msgid ""
317
  "**If a request should be reviewed or dropped submit its id here/ إذا كان يجب "
318
  "مراجعة أو حذف طلب، أدخل رقمه هنا:**"
@@ -341,8 +344,7 @@ msgid "warn"
341
  msgstr ""
342
 
343
  #: src/utils.py:28 src/utils.py:29 src/utils.py:57 src/utils.py:58
344
- #: src/utils.py:67 src/markers.py:27 src/components.py:130
345
- #: src/components.py:137
346
  msgid ","
347
  msgstr ""
348
 
@@ -350,9 +352,9 @@ msgstr ""
350
  msgid "Add a latlng column to the dataframe"
351
  msgstr ""
352
 
353
- #: src/utils.py:44 src/utils.py:46 src/markers.py:112 src/markers.py:118
354
- #: src/markers.py:129 src/markers.py:164 src/markers.py:178 src/markers.py:224
355
- #: src/markers.py:240
356
  msgid "latlng"
357
  msgstr ""
358
 
@@ -427,7 +429,7 @@ msgstr ""
427
  msgid "50 to 100 km - Moderate risk area | منطقة خطر معتدلة"
428
  msgstr ""
429
 
430
- #: src/utils.py:98 src/markers.py:8 src/markers.py:219
431
  msgid "orange"
432
  msgstr ""
433
 
@@ -483,7 +485,7 @@ msgstr ""
483
  msgid "#0046C8"
484
  msgstr ""
485
 
486
- #: src/utils.py:140 src/utils.py:144 src/markers.py:55 src/markers.py:140
487
  msgid "Done ✅"
488
  msgstr "تم ✅"
489
 
@@ -491,11 +493,11 @@ msgstr "تم ✅"
491
  msgid "Planned ⏳"
492
  msgstr "مخطط ⏳"
493
 
494
- #: src/utils.py:142 src/utils.py:146 src/markers.py:59
495
  msgid "Partial 📝"
496
  msgstr "جزئي 📝"
497
 
498
- #: src/utils.py:145 src/markers.py:51 src/markers.py:137
499
  msgid "Planned ⌛"
500
  msgstr "مخطط ⌛"
501
 
@@ -511,15 +513,15 @@ msgstr "حالة طوارئ متوسطة 🟠"
511
  msgid "Low Emergency 🟡"
512
  msgstr "حالة طوارئ منخفضة 🟡"
513
 
514
- #: src/utils.py:158 src/markers.py:220
515
  msgid "High"
516
  msgstr ""
517
 
518
- #: src/utils.py:159 src/markers.py:219
519
  msgid "Medium"
520
  msgstr ""
521
 
522
- #: src/utils.py:160 src/markers.py:218 src/markers.py:251
523
  msgid "Low"
524
  msgstr ""
525
 
@@ -735,7 +737,7 @@ msgstr ""
735
  msgid "إغاثة"
736
  msgstr ""
737
 
738
- #: src/markers.py:7 src/markers.py:138 src/markers.py:141 src/markers.py:220
739
  msgid "red"
740
  msgstr ""
741
 
@@ -747,7 +749,7 @@ msgstr ""
747
  msgid "مأوى"
748
  msgstr ""
749
 
750
- #: src/markers.py:9 src/markers.py:208 src/markers.py:218 src/markers.py:265
751
  msgid "beige"
752
  msgstr ""
753
 
@@ -771,7 +773,7 @@ msgstr ""
771
  msgid "bell"
772
  msgstr ""
773
 
774
- #: src/markers.py:16 src/markers.py:138 src/markers.py:141
775
  msgid "heart"
776
  msgstr ""
777
 
@@ -787,156 +789,60 @@ msgstr ""
787
  msgid "Warning"
788
  msgstr ""
789
 
790
- #: src/markers.py:21
791
- msgid "A"
792
- msgstr ""
793
-
794
- #: src/markers.py:35
795
  msgid "Display NGO interventions on the map"
796
  msgstr ""
797
 
798
- #: src/markers.py:38 src/markers.py:80
799
- msgid "K"
800
- msgstr ""
801
-
802
- #: src/markers.py:40 src/markers.py:77
803
- msgid "H"
804
- msgstr ""
805
-
806
- #: src/markers.py:40
807
  msgid "Intervention prévue dans le futur / Planned future intervention"
808
  msgstr ""
809
 
810
- #: src/markers.py:44 src/filters.py:52
811
  msgid "Partiellement satisfait / Partially Served"
812
  msgstr ""
813
 
814
- #: src/markers.py:50 src/markers.py:138
815
  msgid "pink"
816
  msgstr ""
817
 
818
- #: src/markers.py:52 src/filters.py:51
819
  msgid "Critique, Besoin d'aide en urgence / Critical, in urgent need of help"
820
  msgstr ""
821
 
822
- #: src/markers.py:54 src/markers.py:141
823
  msgid "green"
824
  msgstr ""
825
 
826
- #: src/markers.py:58
827
  msgid "darkgreen"
828
  msgstr ""
829
 
830
- #: src/markers.py:71
831
- msgid "B"
832
- msgstr ""
833
-
834
- #: src/markers.py:72
835
- msgid "C"
836
- msgstr ""
837
-
838
- #: src/markers.py:73
839
- msgid "D"
840
- msgstr ""
841
-
842
- #: src/markers.py:74
843
- msgid "E"
844
- msgstr ""
845
-
846
- #: src/markers.py:75
847
- msgid "F"
848
- msgstr ""
849
-
850
- #: src/markers.py:76
851
- msgid "G"
852
- msgstr ""
853
-
854
- #: src/markers.py:78
855
- msgid "I"
856
- msgstr ""
857
-
858
- #: src/markers.py:79
859
- msgid "J"
860
- msgstr ""
861
-
862
- #: src/markers.py:81
863
- msgid "L"
864
- msgstr ""
865
-
866
- #: src/markers.py:82
867
- msgid "M"
868
- msgstr ""
869
-
870
- #: src/markers.py:83
871
- msgid "N"
872
- msgstr ""
873
-
874
- #: src/markers.py:84
875
- msgid "O"
876
- msgstr ""
877
-
878
- #: src/markers.py:85
879
- msgid "P"
880
- msgstr ""
881
-
882
- #: src/markers.py:86
883
- msgid "Q"
884
- msgstr ""
885
-
886
- #: src/markers.py:87
887
- msgid "R"
888
- msgstr ""
889
-
890
- #: src/markers.py:88
891
- msgid "S"
892
- msgstr ""
893
-
894
- #: src/markers.py:89
895
- msgid "T"
896
- msgstr ""
897
-
898
- #: src/markers.py:90
899
- msgid "U"
900
- msgstr ""
901
-
902
- #: src/markers.py:92
903
- msgid ", "
904
- msgstr ""
905
-
906
- #: src/markers.py:93
907
  #, python-brace-format
908
  msgid ""
909
  "\n"
 
 
 
 
910
  " <b>Org:</b> {org}<br>\n"
911
- " <b>Association ID:</b> {association_id}<br>\n"
912
- " <b>Speciality:</b> {speciality}<br>\n"
913
- " <b>Phone 1:</b> {phone_1}<br>\n"
914
- " <b>Phone 2:</b> {phone_2}<br>\n"
915
- " <b>Email:</b> {email}<br>\n"
916
- " <b>Intervention Date:</b> {intervention_date}<br>\n"
917
- " <b>Intervention Status:</b> {intervention_status}<br>\n"
918
- " <b>Help Type:</b> {help_type}<br>\n"
919
- " <b>Current Situation:</b> {current_situation}<br>\n"
920
- " <b>Future Help Type:</b> {future_help_type}<br>\n"
921
- " <b>Douar Name:</b> {full_douar_name}<br>\n"
922
- " <b>Accessibility to Douar:</b> {accessibility_to_douar}<br>\n"
923
- " <b>Type of Accessibility:</b> {type_of_accessibility}<br>\n"
924
  " <b>Population:</b> {population}<br>\n"
925
- " <b>Intervention Additional Info:</b> {intervention_additional_info}"
926
- "<br>\n"
927
- " <b>Any Additional Info:</b> {any_additional_info}<br>\n"
928
  " "
929
  msgstr ""
930
 
931
- #: src/markers.py:133
932
  msgid "Planned"
933
  msgstr "مخطط لها"
934
 
935
- #: src/markers.py:138 src/markers.py:141 src/markers.py:208 src/markers.py:265
936
  msgid "glyphicon"
937
  msgstr ""
938
 
939
- #: src/markers.py:151
940
  #, python-brace-format
941
  msgid ""
942
  "\n"
@@ -951,20 +857,20 @@ msgid ""
951
  " "
952
  msgstr ""
953
 
954
- #: src/markers.py:174
955
  msgid "Display victim requests on the map"
956
  msgstr ""
957
 
958
- #: src/markers.py:176 src/dataframes.py:35
959
  msgid "ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)"
960
  msgstr ""
961
 
962
- #: src/markers.py:179
963
  #, python-brace-format
964
  msgid "https://maps.google.com/?q={long_lat}"
965
  msgstr ""
966
 
967
- #: src/markers.py:186
968
  msgid ""
969
  "\n"
970
  " <b>Request Type:</b> {request_type}<br>\n"
@@ -978,77 +884,77 @@ msgid ""
978
  " "
979
  msgstr ""
980
 
981
- #: src/markers.py:196 src/markers.py:250
982
  msgid "list"
983
  msgstr ""
984
 
985
- #: src/markers.py:203 src/markers.py:204
986
  msgid " لأي جماعة / قيادة / دوار تنتمون ؟"
987
  msgstr ""
988
 
989
- #: src/markers.py:214
990
  msgid "Display verified victim requests on the map"
991
  msgstr ""
992
 
993
- #: src/markers.py:228 src/markers.py:229 src/dataframes.py:38
994
  msgid "Help Details"
995
  msgstr ""
996
 
997
- #: src/markers.py:231
998
  #, python-brace-format
999
  msgid "<b>Request Type:</b> {request_type}<br>"
1000
  msgstr ""
1001
 
1002
- #: src/markers.py:232 src/markers.py:254
1003
  msgid "Location Details"
1004
  msgstr ""
1005
 
1006
- #: src/markers.py:233
1007
  #, python-brace-format
1008
  msgid "<b>Location:</b> {val}<br>"
1009
  msgstr ""
1010
 
1011
- #: src/markers.py:234 src/markers.py:251
1012
  msgid "Emergency Degree"
1013
  msgstr ""
1014
 
1015
- #: src/markers.py:235
1016
  #, python-brace-format
1017
  msgid "<b>Emergency Degree:</b> {val}<br>"
1018
  msgstr ""
1019
 
1020
- #: src/markers.py:236
1021
  msgid "Verification Date"
1022
  msgstr ""
1023
 
1024
- #: src/markers.py:237
1025
  #, python-brace-format
1026
  msgid "<b>Verification Date:</b> {val}<br>"
1027
  msgstr ""
1028
 
1029
- #: src/markers.py:238 src/markers.py:247 src/dataframes.py:31
1030
- #: src/dataframes.py:32 src/dataframes.py:87
1031
  msgid "id"
1032
  msgstr ""
1033
 
1034
- #: src/markers.py:239
1035
  #, python-brace-format
1036
  msgid "<b>Id:</b> {val}<br>"
1037
  msgstr ""
1038
 
1039
- #: src/markers.py:241
1040
  #, python-brace-format
1041
  msgid "https://maps.google.com/?q={val}"
1042
  msgstr ""
1043
 
1044
- #: src/markers.py:243
1045
  #, python-brace-format
1046
  msgid ""
1047
  "<a href=\"{maps_url}\" target=\"_blank\" rel=\"noopener "
1048
  "noreferrer\"><b>Google Maps</b></a><br>"
1049
  msgstr ""
1050
 
1051
- #: src/markers.py:248
1052
  msgid ""
1053
  "<a href='https://docs.google.com/forms/d/"
1054
  "e/1FAIpQLSdyAcOAULumk4A1DsfrwUsGdZ-9G5xOUuD3vHdQOp3nGNAZXw/viewform?"
@@ -1057,63 +963,63 @@ msgid ""
1057
  "solved</b></a><br>"
1058
  msgstr ""
1059
 
1060
- #: src/components.py:11
1061
  msgid "Id review submission form"
1062
  msgstr ""
1063
 
1064
- #: src/components.py:13
1065
  msgid "🔍 Review of requests | مراجعة طلب مساعدة"
1066
  msgstr ""
1067
 
1068
- #: src/components.py:16
1069
  msgid "Enter id / أدخل الرقم"
1070
  msgstr ""
1071
 
1072
- #: src/components.py:17
1073
  msgid "Explain why / أدخل سبب المراجعة"
1074
  msgstr ""
1075
 
1076
- #: src/components.py:18
1077
  msgid "Submit / أرسل"
1078
  msgstr ""
1079
 
1080
- #: src/components.py:20
1081
  msgid "Please enter a reason / الرجاء إدخال سبب"
1082
  msgstr ""
1083
 
1084
- #: src/components.py:22
1085
  msgid ""
1086
  "review_id_{id_to_review}_{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.txt"
1087
  msgstr ""
1088
 
1089
- #: src/components.py:23
1090
  msgid "w"
1091
  msgstr ""
1092
 
1093
- #: src/components.py:24
1094
  #, python-brace-format
1095
  msgid "id: {id_to_review}, explanation: {reason_for_review}\n"
1096
  msgstr ""
1097
 
1098
- #: src/components.py:28
1099
  msgid "nt3awnou/review_requests"
1100
  msgstr ""
1101
 
1102
- #: src/components.py:29
1103
  msgid "dataset"
1104
  msgstr ""
1105
 
1106
- #: src/components.py:31
1107
  msgid ""
1108
  "Submitted at https://huggingface.co/datasets/nt3awnou/review_requests/ تم "
1109
  "الإرسال"
1110
  msgstr ""
1111
 
1112
- #: src/components.py:35
1113
  msgid "💻 For Developers only, embed code for the map"
1114
  msgstr "💻 للمطورين فقط، الكود لتضمين الخريطة"
1115
 
1116
- #: src/components.py:37
1117
  msgid ""
1118
  "\n"
1119
  " <iframe id=\"nt3awnou-map\"\n"
@@ -1132,80 +1038,55 @@ msgid ""
1132
  " "
1133
  msgstr ""
1134
 
1135
- #: src/components.py:50
1136
  msgid "html"
1137
  msgstr ""
1138
 
1139
- #: src/components.py:64
1140
  msgid "# Number of help requests"
1141
  msgstr ""
1142
 
1143
- #: src/components.py:69
1144
  msgid "# Number of interventions"
1145
  msgstr ""
1146
 
1147
- #: src/components.py:75
1148
  msgid "# Number of solved requests"
1149
  msgstr ""
1150
 
1151
- #: src/components.py:87
 
 
 
 
1152
  msgid "# عدد طلبات المساعدة"
1153
  msgstr ""
1154
 
1155
- #: src/components.py:92
1156
  msgid "# عدد التدخلات"
1157
  msgstr ""
1158
 
1159
- #: src/components.py:98
1160
  msgid "# عدد الطلبات المستجاب لها"
1161
  msgstr ""
1162
 
1163
- #: src/components.py:110
1164
  msgid "# Nombre de demandes d'aide"
1165
  msgstr ""
1166
 
1167
- #: src/components.py:115
1168
  msgid "# Nombre d'interventions"
1169
  msgstr ""
1170
 
1171
- #: src/components.py:121
1172
  msgid "# Nombre de demandes résolues"
1173
  msgstr ""
1174
 
1175
- #: src/components.py:125
1176
- msgid "📊 **Charts**"
1177
- msgstr "**الرسوم البيانية** 📊"
1178
-
1179
- #: src/components.py:130 src/components.py:131
1180
- msgid "supplies_category"
1181
- msgstr ""
1182
-
1183
- #: src/components.py:130 src/components.py:137
1184
- msgid "[] '"
1185
- msgstr ""
1186
-
1187
- #: src/components.py:130 src/components.py:137
1188
- msgid "category"
1189
- msgstr ""
1190
-
1191
- # ARABIC TRANSLATION
1192
- #: src/components.py:131
1193
- msgid "Supplies Categories"
1194
- msgstr "أصناف المساعدات"
1195
-
1196
- #: src/components.py:137 src/components.py:138
1197
- msgid "need_category"
1198
- msgstr ""
1199
-
1200
- #: src/components.py:138
1201
- msgid "Needs Categories"
1202
- msgstr "أصناف الاحتياجات"
1203
-
1204
- #: src/components.py:145
1205
  msgid "📝 **Donations**"
1206
  msgstr "**التبرعات** 📝"
1207
 
1208
- #: src/components.py:148
1209
  msgid ""
1210
  "\n"
1211
  " <div style=\"text-align: center;\">\n"
@@ -1222,7 +1103,7 @@ msgid ""
1222
  " "
1223
  msgstr ""
1224
 
1225
- #: src/components.py:164
1226
  msgid ""
1227
  "\n"
1228
  " <div style=\"text-align: center;\">\n"
@@ -1239,7 +1120,7 @@ msgid ""
1239
  " "
1240
  msgstr ""
1241
 
1242
- #: src/components.py:181
1243
  msgid ""
1244
  "\n"
1245
  " <div style=\"text-align: center;\">\n"
@@ -1316,104 +1197,105 @@ msgstr "✅ تمت خدمتها بالكامل"
1316
  msgid "Choose status"
1317
  msgstr ""
1318
 
1319
- #: src/dataframes.py:6
1320
- msgid "VERIFIED_REQUESTS_URL"
1321
- msgstr ""
1322
-
1323
  #: src/dataframes.py:7
1324
- msgid "REQUESTS_URL"
1325
- msgstr ""
1326
-
1327
- #: src/dataframes.py:8
1328
- msgid "INTERVENTIONS_URL"
1329
  msgstr ""
1330
 
1331
  #: src/dataframes.py:9
1332
- msgid "INTERVENTIONS_PROCESSED_URL"
 
 
1333
  msgstr ""
1334
 
1335
- #: src/dataframes.py:10
1336
- msgid "VERIFIED_REQUESTS_PROCESSED_URL"
 
 
1337
  msgstr ""
1338
 
1339
- #: src/dataframes.py:11
1340
  msgid "data/regions.json"
1341
  msgstr ""
1342
 
1343
- #: src/dataframes.py:18 src/dataframes.py:20
1344
  msgid "Automatic Extracted Coordinates"
1345
  msgstr ""
1346
 
1347
- #: src/dataframes.py:24 src/dataframes.py:25
1348
  msgid "Status"
1349
  msgstr ""
1350
 
1351
- #: src/dataframes.py:56
1352
  msgid "Display the dataframe in a table"
1353
  msgstr ""
1354
 
1355
- #: src/dataframes.py:63
1356
  msgid "🔍 Search for information / بحث عن المعلومات"
1357
  msgstr ""
1358
 
1359
- #: src/dataframes.py:63
1360
  #, python-brace-format
1361
  msgid "query_{df_hash}"
1362
  msgstr ""
1363
 
1364
- #: src/dataframes.py:67
1365
  msgid "🔍 Search for an id / بحث عن رقم"
1366
  msgstr ""
1367
 
1368
- #: src/dataframes.py:72
1369
  #, python-brace-format
1370
  msgid "id_{df_hash}"
1371
  msgstr ""
1372
 
1373
- #: src/dataframes.py:76
1374
  msgid "🗓️ Status / حالة"
1375
  msgstr ""
1376
 
1377
- #: src/dataframes.py:76
1378
  msgid "all / الكل"
1379
  msgstr ""
1380
 
1381
- #: src/dataframes.py:76 src/dataframes.py:93
1382
  msgid "Done / تم"
1383
  msgstr ""
1384
 
1385
- #: src/dataframes.py:76 src/dataframes.py:96
1386
  msgid "Planned / مخطط لها"
1387
  msgstr ""
1388
 
1389
- #: src/dataframes.py:76
1390
  #, python-brace-format
1391
  msgid "status_{df_hash}"
1392
  msgstr ""
1393
 
1394
- #: src/dataframes.py:92
1395
- msgid "Intervention status"
 
 
 
1396
  msgstr ""
1397
 
1398
- #: src/dataframes.py:94 src/dataframes.py:97
1399
  msgid "Intervention déjà passée / Past intevention"
1400
  msgstr ""
1401
 
1402
- #: src/dataframes.py:103
1403
  #, python-brace-format
1404
  msgid ""
1405
  "To view the full Google Sheet for advanced filtering go to: {data_url} "
1406
  "**لعرض الورقة كاملة، اذهب إلى**"
1407
  msgstr ""
1408
 
1409
- #: src/dataframes.py:108
1410
  msgid ""
1411
  "We are hiding contact information to protect the privacy of the victims. If "
1412
  "you are an NGO and want to contact the victims, please contact us at "
1413
1414
  msgstr ""
1415
 
1416
- #: src/dataframes.py:111
1417
  msgid ""
1418
  "\n"
1419
  " <div style=\"text-align: left;\">\n"
 
3
  # This file is distributed under the same license as the PACKAGE package.
4
  # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
  #
6
+ #: src/utils.py:69 src/utils.py:70 src/markers.py:195 src/components.py:16
7
  msgid ""
8
  msgstr ""
9
  "Project-Id-Version: \n"
10
  "Report-Msgid-Bugs-To: \n"
11
+ "POT-Creation-Date: 2023-09-19 03:04+0200\n"
12
  "PO-Revision-Date: 2023-09-18 21:00+0200\n"
13
  "Last-Translator: \n"
14
  "Language-Team: \n"
 
18
  "Content-Transfer-Encoding: 8bit\n"
19
  "X-Generator: Poedit 3.3.2\n"
20
 
21
+ #: app.py:22
22
  msgid "myapplication"
23
  msgstr ""
24
 
25
+ #: app.py:24
26
  msgid "HF_TOKEN"
27
  msgstr ""
28
 
29
+ #: app.py:31
30
  msgid "wide"
31
  msgstr ""
32
 
33
+ #: app.py:32 src/filters.py:40 src/filters.py:62
34
  msgid "collapsed"
35
  msgstr ""
36
 
37
+ #: app.py:33
38
  msgid "🤝"
39
  msgstr ""
40
 
41
+ #: app.py:34
42
  msgid "Nt3awnou نتعاونو"
43
  msgstr ""
44
 
45
+ #: app.py:38
46
  msgid "sleep_time"
47
  msgstr ""
48
 
49
+ #: app.py:40
50
  msgid "auto_refresh"
51
  msgstr ""
52
 
53
+ #: app.py:43
54
  msgid "Auto Refresh?"
55
  msgstr ""
56
 
57
+ #: app.py:45
58
  msgid "Refresh rate in seconds"
59
  msgstr ""
60
 
61
+ #: app.py:55 app.py:182 src/components.py:70 src/components.py:126
62
  msgid "ar"
63
  msgstr ""
64
 
65
+ #: app.py:55
66
  msgid "العربية"
67
  msgstr ""
68
 
69
+ #: app.py:56 src/components.py:89 src/components.py:143
70
  msgid "fr"
71
  msgstr ""
72
 
73
+ #: app.py:56
74
  msgid "Français"
75
  msgstr ""
76
 
77
+ #: app.py:57 app.py:62 src/components.py:52 src/components.py:110
78
  msgid "en"
79
  msgstr ""
80
 
81
+ #: app.py:57
82
  msgid "English"
83
  msgstr ""
84
 
85
+ #: app.py:60
86
  msgid "Choose language / اختر اللغة"
87
  msgstr ""
88
 
89
+ #: app.py:65
90
  msgid "messages"
91
  msgstr ""
92
 
93
+ #: app.py:65
94
  msgid "locales"
95
  msgstr ""
96
 
97
+ #: app.py:70
98
  msgid "Markers"
99
  msgstr ""
100
 
101
+ #: app.py:113
102
  msgid "map"
103
  msgstr ""
104
 
105
+ #: app.py:184
106
  msgid ""
107
  "\n"
108
  " <style>\n"
 
117
  msgid ""
118
  "\n"
119
  " <div style=\"text-align: left;\">\n"
120
+ " Nt3awnou نتعاونو is a collaborative platform dedicated to aiding "
121
+ "individuals impacted by the recent earthquake in Morocco. Our core mission "
122
+ "is to streamline and coordinate timely assistance for everyone affected. How "
123
+ "do we achieve this? We assist those in need by allowing them to communicate "
124
+ "their location and the specific aid they require, either by completing a "
125
+ "form or sending a voice message via WhatsApp to the number <b>0652573987</"
126
+ "b>. Once we receive and process this information, it can be viewed in our "
127
+ "dashboard, which allows NGOs to organize and precisely target their "
128
+ "interventions, ensuring swift assistance reaches those in need. Any "
129
+ "organization that has taken initiative in a particular area can notify us by "
130
+ "completing a dedicated form. This data is also incorporated into the "
131
+ "dashboard so that other NGOs can help affected areas that still haven't "
132
+ "received help.\n"
133
  " <br>⚠️ Warning : There are still rocks falling down the mountains, making "
134
  "the roads to the affected areas very dangerous. We advise volunteers to "
135
  "donate directly to specialized NGOs.<br>\n"
 
156
  "\n"
157
  " <div style=\"text-align: right;-webkit-rtl-ordering: logical;\">\n"
158
  "\n"
159
+ " نتعاونو هي منصة تعاونية لمساعدة الأفراد المتضررين من الزلزال الأخير في "
160
+ "المغرب. مهمتنا هي تسهيل تقديم المساعدة في الوقت المناسب و بفاعلية و تنظيم "
161
+ "لجميع المتضررين. كيفاش؟ كنعاونو الناس لي محتاجين للمساعدة إعلمونا بمكانهم و "
162
+ "نوع المساعدة لي محتاجين ليها سواء عن طريق ملأ الاستمارة أو عن طريق إرسال "
163
+ "تسجيل صوتي عبر واتساب إلى رقم مخصص<b>0652573987</b>. بعد معالجة هاد "
164
  "المعلومات، كنجمعوهم فخريطة كتمكن الجمعيات من تنظيم و استهداف تدخلاتهم بدقة "
165
  "باش توصل المساعدة للناس لي محتاجين في وقت أسرع. و كل جمعية قامت باللازم في "
166
  "منطقة معينة تقدر تعلمنا عن طريق ملأ استمارة مخصصة لهاد الأمر. هاد المعلومات "
 
191
  msgid ""
192
  "\n"
193
  " <div style=\"text-align: left;\">\n"
194
+ " Nt3awnou نتعاونو est une plateforme collaborative dédiée à l'aide aux "
195
+ "personnes touchées par le récent tremblement de terre au Maroc. Notre "
196
+ "mission principale est de rationaliser et de coordonner une assistance "
197
+ "rapide pour toutes les personnes touchées. Comment y parvenons-nous ? Nous "
198
+ "aidons les personnes dans le besoin en leur permettant de communiquer leur "
199
+ "localisation et l'aide spécifique dont elles ont besoin, soit en remplissant "
200
+ "un formulaire, soit en envoyant un message vocal via WhatsApp à un numéro "
201
+ "<b>0652573987</b>. Une fois reçues et traitées, ces informations peuvent "
202
+ "être consultées dans notre tableau de bord, qui permet aux associations "
203
+ "d'organiser et de cibler précisément leurs interventions, afin que l'aide "
204
+ "parvienne rapidement à ceux qui en ont besoin. Toute organisation ayant pris "
205
+ "une initiative dans une zone particulière peut nous en informer en "
206
+ "remplissant un formulaire prévu à cet effet. Ces données sont également "
207
+ "intégrées au tableau de bord afin que d'autres associations puissent aider "
208
+ "les zones touchées qui n'ont pas encore reçu d'aide.\n"
209
  " <br> ⚠️ Avertissement : Il y a encore des chutes de pierres dans les "
210
  "montagnes, ce qui rend les routes vers les zones touchées très dangereuses. "
211
  "Nous conseillons aux volontaires de faire des dons directement aux "
 
245
  " <hr>\n"
246
  " <div style=\"text-align: center;\">\n"
247
  " <p>By <b>Moroccans</b> for <b>Moroccans</b> 🤝</p>\n"
248
+ " <p> Special thanks for <a href=\"https://www.annarabic.com/\">Annarabic</"
249
+ "a> and <a href=\"https://summerschool.morocco.ai/\">AI Summer School</a> for "
250
+ "their support</p>\n"
251
  " <p>Reach out to us at <a href=\"mailto:nt3awnoumorocco@gmail."
252
  "com\">[email protected]</a></p>\n"
253
  " "
254
  msgstr ""
255
 
256
+ #: src/text_content.py:61
257
  msgid ""
258
  "\n"
259
  " <style>\n"
 
315
  " # "
316
  msgstr ""
317
 
318
+ #: src/text_content.py:106
319
  msgid ""
320
  "**If a request should be reviewed or dropped submit its id here/ إذا كان يجب "
321
  "مراجعة أو حذف طلب، أدخل رقمه هنا:**"
 
344
  msgstr ""
345
 
346
  #: src/utils.py:28 src/utils.py:29 src/utils.py:57 src/utils.py:58
347
+ #: src/utils.py:67 src/markers.py:26
 
348
  msgid ","
349
  msgstr ""
350
 
 
352
  msgid "Add a latlng column to the dataframe"
353
  msgstr ""
354
 
355
+ #: src/utils.py:44 src/utils.py:46 src/markers.py:81 src/markers.py:87
356
+ #: src/markers.py:98 src/markers.py:133 src/markers.py:147 src/markers.py:193
357
+ #: src/markers.py:209
358
  msgid "latlng"
359
  msgstr ""
360
 
 
429
  msgid "50 to 100 km - Moderate risk area | منطقة خطر معتدلة"
430
  msgstr ""
431
 
432
+ #: src/utils.py:98 src/markers.py:8 src/markers.py:188
433
  msgid "orange"
434
  msgstr ""
435
 
 
485
  msgid "#0046C8"
486
  msgstr ""
487
 
488
+ #: src/utils.py:140 src/utils.py:144 src/markers.py:54 src/markers.py:109
489
  msgid "Done ✅"
490
  msgstr "تم ✅"
491
 
 
493
  msgid "Planned ⏳"
494
  msgstr "مخطط ⏳"
495
 
496
+ #: src/utils.py:142 src/utils.py:146 src/markers.py:58
497
  msgid "Partial 📝"
498
  msgstr "جزئي 📝"
499
 
500
+ #: src/utils.py:145 src/markers.py:50 src/markers.py:106
501
  msgid "Planned ⌛"
502
  msgstr "مخطط ⌛"
503
 
 
513
  msgid "Low Emergency 🟡"
514
  msgstr "حالة طوارئ منخفضة 🟡"
515
 
516
+ #: src/utils.py:158 src/markers.py:189
517
  msgid "High"
518
  msgstr ""
519
 
520
+ #: src/utils.py:159 src/markers.py:188
521
  msgid "Medium"
522
  msgstr ""
523
 
524
+ #: src/utils.py:160 src/markers.py:187 src/markers.py:220
525
  msgid "Low"
526
  msgstr ""
527
 
 
737
  msgid "إغاثة"
738
  msgstr ""
739
 
740
+ #: src/markers.py:7 src/markers.py:107 src/markers.py:110 src/markers.py:189
741
  msgid "red"
742
  msgstr ""
743
 
 
749
  msgid "مأوى"
750
  msgstr ""
751
 
752
+ #: src/markers.py:9 src/markers.py:177 src/markers.py:187 src/markers.py:234
753
  msgid "beige"
754
  msgstr ""
755
 
 
773
  msgid "bell"
774
  msgstr ""
775
 
776
+ #: src/markers.py:16 src/markers.py:107 src/markers.py:110
777
  msgid "heart"
778
  msgstr ""
779
 
 
789
  msgid "Warning"
790
  msgstr ""
791
 
792
+ #: src/markers.py:34
 
 
 
 
793
  msgid "Display NGO interventions on the map"
794
  msgstr ""
795
 
796
+ #: src/markers.py:39
 
 
 
 
 
 
 
 
797
  msgid "Intervention prévue dans le futur / Planned future intervention"
798
  msgstr ""
799
 
800
+ #: src/markers.py:43 src/filters.py:52
801
  msgid "Partiellement satisfait / Partially Served"
802
  msgstr ""
803
 
804
+ #: src/markers.py:49 src/markers.py:107
805
  msgid "pink"
806
  msgstr ""
807
 
808
+ #: src/markers.py:51 src/filters.py:51
809
  msgid "Critique, Besoin d'aide en urgence / Critical, in urgent need of help"
810
  msgstr ""
811
 
812
+ #: src/markers.py:53 src/markers.py:110
813
  msgid "green"
814
  msgstr ""
815
 
816
+ #: src/markers.py:57
817
  msgid "darkgreen"
818
  msgstr ""
819
 
820
+ #: src/markers.py:68
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
821
  #, python-brace-format
822
  msgid ""
823
  "\n"
824
+ " <b>Date:</b> {date}<br>\n"
825
+ " <b>City:</b> {city}<br>\n"
826
+ " <b>Intervention Status:</b> {status}<br>\n"
827
+ " <b>Village Status:</b> {village_status}<br>\n"
828
  " <b>Org:</b> {org}<br>\n"
829
+ " <b>Intervention:</b> {intervention_type}<br>\n"
 
 
 
 
 
 
 
 
 
 
 
 
830
  " <b>Population:</b> {population}<br>\n"
831
+ " <b>Road State:</b> {road_state}<br>\n"
832
+ " <b>Details:</b> {details}<br>\n"
833
+ " <b>Contact:</b> {contact}<br>\n"
834
  " "
835
  msgstr ""
836
 
837
+ #: src/markers.py:102
838
  msgid "Planned"
839
  msgstr "مخطط لها"
840
 
841
+ #: src/markers.py:107 src/markers.py:110 src/markers.py:177 src/markers.py:234
842
  msgid "glyphicon"
843
  msgstr ""
844
 
845
+ #: src/markers.py:120
846
  #, python-brace-format
847
  msgid ""
848
  "\n"
 
857
  " "
858
  msgstr ""
859
 
860
+ #: src/markers.py:143
861
  msgid "Display victim requests on the map"
862
  msgstr ""
863
 
864
+ #: src/markers.py:145 src/dataframes.py:37
865
  msgid "ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)"
866
  msgstr ""
867
 
868
+ #: src/markers.py:148
869
  #, python-brace-format
870
  msgid "https://maps.google.com/?q={long_lat}"
871
  msgstr ""
872
 
873
+ #: src/markers.py:155
874
  msgid ""
875
  "\n"
876
  " <b>Request Type:</b> {request_type}<br>\n"
 
884
  " "
885
  msgstr ""
886
 
887
+ #: src/markers.py:165 src/markers.py:219
888
  msgid "list"
889
  msgstr ""
890
 
891
+ #: src/markers.py:172 src/markers.py:173
892
  msgid " لأي جماعة / قيادة / دوار تنتمون ؟"
893
  msgstr ""
894
 
895
+ #: src/markers.py:183
896
  msgid "Display verified victim requests on the map"
897
  msgstr ""
898
 
899
+ #: src/markers.py:197 src/markers.py:198 src/dataframes.py:40
900
  msgid "Help Details"
901
  msgstr ""
902
 
903
+ #: src/markers.py:200
904
  #, python-brace-format
905
  msgid "<b>Request Type:</b> {request_type}<br>"
906
  msgstr ""
907
 
908
+ #: src/markers.py:201 src/markers.py:223
909
  msgid "Location Details"
910
  msgstr ""
911
 
912
+ #: src/markers.py:202
913
  #, python-brace-format
914
  msgid "<b>Location:</b> {val}<br>"
915
  msgstr ""
916
 
917
+ #: src/markers.py:203 src/markers.py:220
918
  msgid "Emergency Degree"
919
  msgstr ""
920
 
921
+ #: src/markers.py:204
922
  #, python-brace-format
923
  msgid "<b>Emergency Degree:</b> {val}<br>"
924
  msgstr ""
925
 
926
+ #: src/markers.py:205
927
  msgid "Verification Date"
928
  msgstr ""
929
 
930
+ #: src/markers.py:206
931
  #, python-brace-format
932
  msgid "<b>Verification Date:</b> {val}<br>"
933
  msgstr ""
934
 
935
+ #: src/markers.py:207 src/markers.py:216 src/dataframes.py:33
936
+ #: src/dataframes.py:34 src/dataframes.py:89
937
  msgid "id"
938
  msgstr ""
939
 
940
+ #: src/markers.py:208
941
  #, python-brace-format
942
  msgid "<b>Id:</b> {val}<br>"
943
  msgstr ""
944
 
945
+ #: src/markers.py:210
946
  #, python-brace-format
947
  msgid "https://maps.google.com/?q={val}"
948
  msgstr ""
949
 
950
+ #: src/markers.py:212
951
  #, python-brace-format
952
  msgid ""
953
  "<a href=\"{maps_url}\" target=\"_blank\" rel=\"noopener "
954
  "noreferrer\"><b>Google Maps</b></a><br>"
955
  msgstr ""
956
 
957
+ #: src/markers.py:217
958
  msgid ""
959
  "<a href='https://docs.google.com/forms/d/"
960
  "e/1FAIpQLSdyAcOAULumk4A1DsfrwUsGdZ-9G5xOUuD3vHdQOp3nGNAZXw/viewform?"
 
963
  "solved</b></a><br>"
964
  msgstr ""
965
 
966
+ #: src/components.py:8
967
  msgid "Id review submission form"
968
  msgstr ""
969
 
970
+ #: src/components.py:10
971
  msgid "🔍 Review of requests | مراجعة طلب مساعدة"
972
  msgstr ""
973
 
974
+ #: src/components.py:13
975
  msgid "Enter id / أدخل الرقم"
976
  msgstr ""
977
 
978
+ #: src/components.py:14
979
  msgid "Explain why / أدخل سبب المراجعة"
980
  msgstr ""
981
 
982
+ #: src/components.py:15
983
  msgid "Submit / أرسل"
984
  msgstr ""
985
 
986
+ #: src/components.py:17
987
  msgid "Please enter a reason / الرجاء إدخال سبب"
988
  msgstr ""
989
 
990
+ #: src/components.py:19
991
  msgid ""
992
  "review_id_{id_to_review}_{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.txt"
993
  msgstr ""
994
 
995
+ #: src/components.py:20
996
  msgid "w"
997
  msgstr ""
998
 
999
+ #: src/components.py:21
1000
  #, python-brace-format
1001
  msgid "id: {id_to_review}, explanation: {reason_for_review}\n"
1002
  msgstr ""
1003
 
1004
+ #: src/components.py:25
1005
  msgid "nt3awnou/review_requests"
1006
  msgstr ""
1007
 
1008
+ #: src/components.py:26
1009
  msgid "dataset"
1010
  msgstr ""
1011
 
1012
+ #: src/components.py:28
1013
  msgid ""
1014
  "Submitted at https://huggingface.co/datasets/nt3awnou/review_requests/ تم "
1015
  "الإرسال"
1016
  msgstr ""
1017
 
1018
+ #: src/components.py:32
1019
  msgid "💻 For Developers only, embed code for the map"
1020
  msgstr "💻 للمطورين فقط، الكود لتضمين الخريطة"
1021
 
1022
+ #: src/components.py:34
1023
  msgid ""
1024
  "\n"
1025
  " <iframe id=\"nt3awnou-map\"\n"
 
1038
  " "
1039
  msgstr ""
1040
 
1041
+ #: src/components.py:47
1042
  msgid "html"
1043
  msgstr ""
1044
 
1045
+ #: src/components.py:57
1046
  msgid "# Number of help requests"
1047
  msgstr ""
1048
 
1049
+ #: src/components.py:62
1050
  msgid "# Number of interventions"
1051
  msgstr ""
1052
 
1053
+ #: src/components.py:67
1054
  msgid "# Number of solved requests"
1055
  msgstr ""
1056
 
1057
+ #: src/components.py:71
1058
+ msgid "📝 شرح منصة نتعاونو"
1059
+ msgstr ""
1060
+
1061
+ #: src/components.py:76
1062
  msgid "# عدد طلبات المساعدة"
1063
  msgstr ""
1064
 
1065
+ #: src/components.py:81
1066
  msgid "# عدد التدخلات"
1067
  msgstr ""
1068
 
1069
+ #: src/components.py:86
1070
  msgid "# عدد الطلبات المستجاب لها"
1071
  msgstr ""
1072
 
1073
+ #: src/components.py:94
1074
  msgid "# Nombre de demandes d'aide"
1075
  msgstr ""
1076
 
1077
+ #: src/components.py:99
1078
  msgid "# Nombre d'interventions"
1079
  msgstr ""
1080
 
1081
+ #: src/components.py:104
1082
  msgid "# Nombre de demandes résolues"
1083
  msgstr ""
1084
 
1085
+ #: src/components.py:109
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1086
  msgid "📝 **Donations**"
1087
  msgstr "**التبرعات** 📝"
1088
 
1089
+ #: src/components.py:112
1090
  msgid ""
1091
  "\n"
1092
  " <div style=\"text-align: center;\">\n"
 
1103
  " "
1104
  msgstr ""
1105
 
1106
+ #: src/components.py:128
1107
  msgid ""
1108
  "\n"
1109
  " <div style=\"text-align: center;\">\n"
 
1120
  " "
1121
  msgstr ""
1122
 
1123
+ #: src/components.py:145
1124
  msgid ""
1125
  "\n"
1126
  " <div style=\"text-align: center;\">\n"
 
1197
  msgid "Choose status"
1198
  msgstr ""
1199
 
 
 
 
 
1200
  #: src/dataframes.py:7
1201
+ msgid ""
1202
+ "https://docs.google.com/spreadsheets/"
1203
+ "d/1PXcAtI5L95hHSXAiRl3Y4v5O4coG39S86OTfBEcvLTE/edit#gid=0"
 
 
1204
  msgstr ""
1205
 
1206
  #: src/dataframes.py:9
1207
+ msgid ""
1208
+ "https://docs.google.com/spreadsheets/"
1209
+ "d/1gYoBBiBo1L18IVakHkf3t1fOGvHWb23loadyFZUeHJs/edit#gid=966953708"
1210
  msgstr ""
1211
 
1212
+ #: src/dataframes.py:11
1213
+ msgid ""
1214
+ "https://docs.google.com/spreadsheets/"
1215
+ "d/1eXOTqunOWWP8FRdENPs4cU9ulISm4XZWYJJNR1-SrwY/edit#gid=2089222765"
1216
  msgstr ""
1217
 
1218
+ #: src/dataframes.py:13
1219
  msgid "data/regions.json"
1220
  msgstr ""
1221
 
1222
+ #: src/dataframes.py:20 src/dataframes.py:22
1223
  msgid "Automatic Extracted Coordinates"
1224
  msgstr ""
1225
 
1226
+ #: src/dataframes.py:26 src/dataframes.py:27
1227
  msgid "Status"
1228
  msgstr ""
1229
 
1230
+ #: src/dataframes.py:58
1231
  msgid "Display the dataframe in a table"
1232
  msgstr ""
1233
 
1234
+ #: src/dataframes.py:65
1235
  msgid "🔍 Search for information / بحث عن المعلومات"
1236
  msgstr ""
1237
 
1238
+ #: src/dataframes.py:65
1239
  #, python-brace-format
1240
  msgid "query_{df_hash}"
1241
  msgstr ""
1242
 
1243
+ #: src/dataframes.py:69
1244
  msgid "🔍 Search for an id / بحث عن رقم"
1245
  msgstr ""
1246
 
1247
+ #: src/dataframes.py:74
1248
  #, python-brace-format
1249
  msgid "id_{df_hash}"
1250
  msgstr ""
1251
 
1252
+ #: src/dataframes.py:78
1253
  msgid "🗓️ Status / حالة"
1254
  msgstr ""
1255
 
1256
+ #: src/dataframes.py:78
1257
  msgid "all / الكل"
1258
  msgstr ""
1259
 
1260
+ #: src/dataframes.py:78 src/dataframes.py:95
1261
  msgid "Done / تم"
1262
  msgstr ""
1263
 
1264
+ #: src/dataframes.py:78 src/dataframes.py:98
1265
  msgid "Planned / مخطط لها"
1266
  msgstr ""
1267
 
1268
+ #: src/dataframes.py:78
1269
  #, python-brace-format
1270
  msgid "status_{df_hash}"
1271
  msgstr ""
1272
 
1273
+ #: src/dataframes.py:94
1274
+ msgid ""
1275
+ "Pouvez-vous nous préciser si vous êtes déjà intervenus ou si vous prévoyez "
1276
+ "de le faire | Tell us if you already made the intervention, or if you're "
1277
+ "planning to do it"
1278
  msgstr ""
1279
 
1280
+ #: src/dataframes.py:96 src/dataframes.py:99
1281
  msgid "Intervention déjà passée / Past intevention"
1282
  msgstr ""
1283
 
1284
+ #: src/dataframes.py:105
1285
  #, python-brace-format
1286
  msgid ""
1287
  "To view the full Google Sheet for advanced filtering go to: {data_url} "
1288
  "**لعرض الورقة كاملة، اذهب إلى**"
1289
  msgstr ""
1290
 
1291
+ #: src/dataframes.py:110
1292
  msgid ""
1293
  "We are hiding contact information to protect the privacy of the victims. If "
1294
  "you are an NGO and want to contact the victims, please contact us at "
1295
1296
  msgstr ""
1297
 
1298
+ #: src/dataframes.py:113
1299
  msgid ""
1300
  "\n"
1301
  " <div style=\"text-align: left;\">\n"
locales/fr/LC_MESSAGES/messages.mo CHANGED
Binary files a/locales/fr/LC_MESSAGES/messages.mo and b/locales/fr/LC_MESSAGES/messages.mo differ
 
locales/fr/LC_MESSAGES/messages.po CHANGED
@@ -3,12 +3,12 @@
3
  # This file is distributed under the same license as the PACKAGE package.
4
  # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
  #
6
- #: src/utils.py:69 src/utils.py:70 src/markers.py:226 src/components.py:19
7
  msgid ""
8
  msgstr ""
9
  "Project-Id-Version: \n"
10
  "Report-Msgid-Bugs-To: \n"
11
- "POT-Creation-Date: 2023-09-26 20:34+0200\n"
12
  "PO-Revision-Date: 2023-09-18 21:00+0200\n"
13
  "Last-Translator: \n"
14
  "Language-Team: \n"
@@ -18,91 +18,91 @@ msgstr ""
18
  "Content-Transfer-Encoding: 8bit\n"
19
  "X-Generator: Poedit 3.3.2\n"
20
 
21
- #: app.py:21
22
  msgid "myapplication"
23
  msgstr ""
24
 
25
- #: app.py:23
26
  msgid "HF_TOKEN"
27
  msgstr ""
28
 
29
- #: app.py:30
30
  msgid "wide"
31
  msgstr ""
32
 
33
- #: app.py:31 src/filters.py:40 src/filters.py:62
34
  msgid "collapsed"
35
  msgstr ""
36
 
37
- #: app.py:32
38
  msgid "🤝"
39
  msgstr ""
40
 
41
- #: app.py:33
42
  msgid "Nt3awnou نتعاونو"
43
  msgstr ""
44
 
45
- #: app.py:37
46
  msgid "sleep_time"
47
  msgstr ""
48
 
49
- #: app.py:39
50
  msgid "auto_refresh"
51
  msgstr ""
52
 
53
- #: app.py:42
54
  msgid "Auto Refresh?"
55
  msgstr ""
56
 
57
- #: app.py:44
58
  msgid "Refresh rate in seconds"
59
  msgstr ""
60
 
61
- #: app.py:54 app.py:184 src/components.py:78 src/components.py:162
62
  msgid "ar"
63
  msgstr ""
64
 
65
- #: app.py:54
66
  msgid "العربية"
67
  msgstr ""
68
 
69
- #: app.py:55 src/components.py:101 src/components.py:179
70
  msgid "fr"
71
  msgstr ""
72
 
73
- #: app.py:55
74
  msgid "Français"
75
  msgstr ""
76
 
77
- #: app.py:56 app.py:61 src/components.py:55 src/components.py:146
78
  msgid "en"
79
  msgstr ""
80
 
81
- #: app.py:56
82
  msgid "English"
83
  msgstr ""
84
 
85
- #: app.py:59
86
  msgid "Choose language / اختر اللغة"
87
  msgstr ""
88
 
89
- #: app.py:64
90
  msgid "messages"
91
  msgstr ""
92
 
93
- #: app.py:64
94
  msgid "locales"
95
  msgstr ""
96
 
97
- #: app.py:69
98
  msgid "Markers"
99
  msgstr ""
100
 
101
- #: app.py:112
102
  msgid "map"
103
  msgstr ""
104
 
105
- #: app.py:186
106
  msgid ""
107
  "\n"
108
  " <style>\n"
@@ -117,19 +117,19 @@ msgstr ""
117
  msgid ""
118
  "\n"
119
  " <div style=\"text-align: left;\">\n"
120
- " Nt3awnou نتعاونو is a non-profit organization and a collaborative "
121
- "platform dedicated to aiding individuals impacted by the recent earthquake "
122
- "in Morocco. Our core mission is to streamline and coordinate timely "
123
- "assistance for everyone affected. How do we achieve this? We assist those in "
124
- "need by allowing them to communicate their location and the specific aid "
125
- "they require, either by completing a form or sending a voice message via "
126
- "WhatsApp to the number <b>0602838166</b>. Once we receive and process this "
127
- "information, it can be viewed in our dashboard, which allows NGOs to "
128
- "organize and precisely target their interventions, ensuring swift assistance "
129
- "reaches those in need. Any organization that has taken initiative in a "
130
- "particular area can notify us by completing a dedicated form. This data is "
131
- "also incorporated into the dashboard so that other NGOs can help affected "
132
- "areas that still haven't received help.\n"
133
  " <br>⚠️ Warning : There are still rocks falling down the mountains, making "
134
  "the roads to the affected areas very dangerous. We advise volunteers to "
135
  "donate directly to specialized NGOs.<br>\n"
@@ -156,11 +156,11 @@ msgid ""
156
  "\n"
157
  " <div style=\"text-align: right;-webkit-rtl-ordering: logical;\">\n"
158
  "\n"
159
- " نتعاونو هي منصة تعاونية غير ربحية لمساعدة الأفراد المتضررين من الزلزال "
160
- "الأخير في المغرب. مهمتنا هي تسهيل تقديم المساعدة في الوقت المناسب و بفاعلية "
161
- "و تنظيم لجميع المتضررين. كيفاش؟ كنعاونو الناس لي محتاجين للمساعدة إعلمونا "
162
- "بمكانهم و نوع المساعدة لي محتاجين ليها سواء عن طريق ملأ الاستمارة أو عن طريق "
163
- "إرسال تسجيل صوتي عبر واتساب إلى رقم مخصص<b>0602838166</b>. بعد معالجة هاد "
164
  "المعلومات، كنجمعوهم فخريطة كتمكن الجمعيات من تنظيم و استهداف تدخلاتهم بدقة "
165
  "باش توصل المساعدة للناس لي محتاجين في وقت أسرع. و كل جمعية قامت باللازم في "
166
  "منطقة معينة تقدر تعلمنا عن طريق ملأ استمارة مخصصة لهاد الأمر. هاد المعلومات "
@@ -191,21 +191,21 @@ msgstr ""
191
  msgid ""
192
  "\n"
193
  " <div style=\"text-align: left;\">\n"
194
- " Nt3awnou نتعاونو est une plateforme collaborative à but non-lucratif "
195
- "dédiée à l'aide aux personnes touchées par le récent tremblement de terre au "
196
- "Maroc. Notre mission principale est de rationaliser et de coordonner une "
197
- "assistance rapide pour toutes les personnes touchées. Comment y parvenons-"
198
- "nous ? Nous aidons les personnes dans le besoin en leur permettant de "
199
- "communiquer leur localisation et l'aide spécifique dont elles ont besoin, "
200
- "soit en remplissant un formulaire, soit en envoyant un message vocal via "
201
- "WhatsApp à un numéro <b>0602838166</b>. Une fois reçues et traitées, ces "
202
- "informations peuvent être consultées dans notre tableau de bord, qui permet "
203
- "aux associations d'organiser et de cibler précisément leurs interventions, "
204
- "afin que l'aide parvienne rapidement à ceux qui en ont besoin. Toute "
205
- "organisation ayant pris une initiative dans une zone particulière peut nous "
206
- "en informer en remplissant un formulaire prévu à cet effet. Ces données sont "
207
- "également intégrées au tableau de bord afin que d'autres associations "
208
- "puissent aider les zones touchées qui n'ont pas encore reçu d'aide.\n"
209
  " <br> ⚠️ Avertissement : Il y a encore des chutes de pierres dans les "
210
  "montagnes, ce qui rend les routes vers les zones touchées très dangereuses. "
211
  "Nous conseillons aux volontaires de faire des dons directement aux "
@@ -245,12 +245,15 @@ msgid ""
245
  " <hr>\n"
246
  " <div style=\"text-align: center;\">\n"
247
  " <p>By <b>Moroccans</b> for <b>Moroccans</b> 🤝</p>\n"
 
 
 
248
  " <p>Reach out to us at <a href=\"mailto:nt3awnoumorocco@gmail."
249
  "com\">[email protected]</a></p>\n"
250
  " "
251
  msgstr ""
252
 
253
- #: src/text_content.py:60
254
  msgid ""
255
  "\n"
256
  " <style>\n"
@@ -312,7 +315,7 @@ msgid ""
312
  " # "
313
  msgstr ""
314
 
315
- #: src/text_content.py:105
316
  msgid ""
317
  "**If a request should be reviewed or dropped submit its id here/ إذا كان يجب "
318
  "مراجعة أو حذف طلب، أدخل رقمه هنا:**"
@@ -341,8 +344,7 @@ msgid "warn"
341
  msgstr ""
342
 
343
  #: src/utils.py:28 src/utils.py:29 src/utils.py:57 src/utils.py:58
344
- #: src/utils.py:67 src/markers.py:27 src/components.py:130
345
- #: src/components.py:137
346
  msgid ","
347
  msgstr ""
348
 
@@ -350,9 +352,9 @@ msgstr ""
350
  msgid "Add a latlng column to the dataframe"
351
  msgstr ""
352
 
353
- #: src/utils.py:44 src/utils.py:46 src/markers.py:112 src/markers.py:118
354
- #: src/markers.py:129 src/markers.py:164 src/markers.py:178 src/markers.py:224
355
- #: src/markers.py:240
356
  msgid "latlng"
357
  msgstr ""
358
 
@@ -427,7 +429,7 @@ msgstr ""
427
  msgid "50 to 100 km - Moderate risk area | منطقة خطر معتدلة"
428
  msgstr ""
429
 
430
- #: src/utils.py:98 src/markers.py:8 src/markers.py:219
431
  msgid "orange"
432
  msgstr ""
433
 
@@ -483,7 +485,7 @@ msgstr ""
483
  msgid "#0046C8"
484
  msgstr ""
485
 
486
- #: src/utils.py:140 src/utils.py:144 src/markers.py:55 src/markers.py:140
487
  msgid "Done ✅"
488
  msgstr "Terminé ✅"
489
 
@@ -491,11 +493,11 @@ msgstr "Terminé ✅"
491
  msgid "Planned ⏳"
492
  msgstr "Prévu ⏳"
493
 
494
- #: src/utils.py:142 src/utils.py:146 src/markers.py:59
495
  msgid "Partial 📝"
496
  msgstr "Partiel 📝"
497
 
498
- #: src/utils.py:145 src/markers.py:51 src/markers.py:137
499
  msgid "Planned ⌛"
500
  msgstr "Prévu ⌛"
501
 
@@ -511,15 +513,15 @@ msgstr "Urgence moyenne 🟠"
511
  msgid "Low Emergency 🟡"
512
  msgstr "Urgence faible 🟡"
513
 
514
- #: src/utils.py:158 src/markers.py:220
515
  msgid "High"
516
  msgstr ""
517
 
518
- #: src/utils.py:159 src/markers.py:219
519
  msgid "Medium"
520
  msgstr ""
521
 
522
- #: src/utils.py:160 src/markers.py:218 src/markers.py:251
523
  msgid "Low"
524
  msgstr ""
525
 
@@ -724,7 +726,7 @@ msgstr ""
724
  msgid "إغاثة"
725
  msgstr ""
726
 
727
- #: src/markers.py:7 src/markers.py:138 src/markers.py:141 src/markers.py:220
728
  msgid "red"
729
  msgstr ""
730
 
@@ -736,7 +738,7 @@ msgstr ""
736
  msgid "مأوى"
737
  msgstr ""
738
 
739
- #: src/markers.py:9 src/markers.py:208 src/markers.py:218 src/markers.py:265
740
  msgid "beige"
741
  msgstr ""
742
 
@@ -760,7 +762,7 @@ msgstr ""
760
  msgid "bell"
761
  msgstr ""
762
 
763
- #: src/markers.py:16 src/markers.py:138 src/markers.py:141
764
  msgid "heart"
765
  msgstr ""
766
 
@@ -776,156 +778,60 @@ msgstr ""
776
  msgid "Warning"
777
  msgstr ""
778
 
779
- #: src/markers.py:21
780
- msgid "A"
781
- msgstr ""
782
-
783
- #: src/markers.py:35
784
  msgid "Display NGO interventions on the map"
785
  msgstr ""
786
 
787
- #: src/markers.py:38 src/markers.py:80
788
- msgid "K"
789
- msgstr ""
790
-
791
- #: src/markers.py:40 src/markers.py:77
792
- msgid "H"
793
- msgstr ""
794
-
795
- #: src/markers.py:40
796
  msgid "Intervention prévue dans le futur / Planned future intervention"
797
  msgstr ""
798
 
799
- #: src/markers.py:44 src/filters.py:52
800
  msgid "Partiellement satisfait / Partially Served"
801
  msgstr ""
802
 
803
- #: src/markers.py:50 src/markers.py:138
804
  msgid "pink"
805
  msgstr ""
806
 
807
- #: src/markers.py:52 src/filters.py:51
808
  msgid "Critique, Besoin d'aide en urgence / Critical, in urgent need of help"
809
  msgstr ""
810
 
811
- #: src/markers.py:54 src/markers.py:141
812
  msgid "green"
813
  msgstr ""
814
 
815
- #: src/markers.py:58
816
  msgid "darkgreen"
817
  msgstr ""
818
 
819
- #: src/markers.py:71
820
- msgid "B"
821
- msgstr ""
822
-
823
- #: src/markers.py:72
824
- msgid "C"
825
- msgstr ""
826
-
827
- #: src/markers.py:73
828
- msgid "D"
829
- msgstr ""
830
-
831
- #: src/markers.py:74
832
- msgid "E"
833
- msgstr ""
834
-
835
- #: src/markers.py:75
836
- msgid "F"
837
- msgstr ""
838
-
839
- #: src/markers.py:76
840
- msgid "G"
841
- msgstr ""
842
-
843
- #: src/markers.py:78
844
- msgid "I"
845
- msgstr ""
846
-
847
- #: src/markers.py:79
848
- msgid "J"
849
- msgstr ""
850
-
851
- #: src/markers.py:81
852
- msgid "L"
853
- msgstr ""
854
-
855
- #: src/markers.py:82
856
- msgid "M"
857
- msgstr ""
858
-
859
- #: src/markers.py:83
860
- msgid "N"
861
- msgstr ""
862
-
863
- #: src/markers.py:84
864
- msgid "O"
865
- msgstr ""
866
-
867
- #: src/markers.py:85
868
- msgid "P"
869
- msgstr ""
870
-
871
- #: src/markers.py:86
872
- msgid "Q"
873
- msgstr ""
874
-
875
- #: src/markers.py:87
876
- msgid "R"
877
- msgstr ""
878
-
879
- #: src/markers.py:88
880
- msgid "S"
881
- msgstr ""
882
-
883
- #: src/markers.py:89
884
- msgid "T"
885
- msgstr ""
886
-
887
- #: src/markers.py:90
888
- msgid "U"
889
- msgstr ""
890
-
891
- #: src/markers.py:92
892
- msgid ", "
893
- msgstr ""
894
-
895
- #: src/markers.py:93
896
  #, python-brace-format
897
  msgid ""
898
  "\n"
 
 
 
 
899
  " <b>Org:</b> {org}<br>\n"
900
- " <b>Association ID:</b> {association_id}<br>\n"
901
- " <b>Speciality:</b> {speciality}<br>\n"
902
- " <b>Phone 1:</b> {phone_1}<br>\n"
903
- " <b>Phone 2:</b> {phone_2}<br>\n"
904
- " <b>Email:</b> {email}<br>\n"
905
- " <b>Intervention Date:</b> {intervention_date}<br>\n"
906
- " <b>Intervention Status:</b> {intervention_status}<br>\n"
907
- " <b>Help Type:</b> {help_type}<br>\n"
908
- " <b>Current Situation:</b> {current_situation}<br>\n"
909
- " <b>Future Help Type:</b> {future_help_type}<br>\n"
910
- " <b>Douar Name:</b> {full_douar_name}<br>\n"
911
- " <b>Accessibility to Douar:</b> {accessibility_to_douar}<br>\n"
912
- " <b>Type of Accessibility:</b> {type_of_accessibility}<br>\n"
913
  " <b>Population:</b> {population}<br>\n"
914
- " <b>Intervention Additional Info:</b> {intervention_additional_info}"
915
- "<br>\n"
916
- " <b>Any Additional Info:</b> {any_additional_info}<br>\n"
917
  " "
918
  msgstr ""
919
 
920
- #: src/markers.py:133
921
  msgid "Planned"
922
  msgstr "Prévu"
923
 
924
- #: src/markers.py:138 src/markers.py:141 src/markers.py:208 src/markers.py:265
925
  msgid "glyphicon"
926
  msgstr ""
927
 
928
- #: src/markers.py:151
929
  #, python-brace-format
930
  msgid ""
931
  "\n"
@@ -940,20 +846,20 @@ msgid ""
940
  " "
941
  msgstr ""
942
 
943
- #: src/markers.py:174
944
  msgid "Display victim requests on the map"
945
  msgstr ""
946
 
947
- #: src/markers.py:176 src/dataframes.py:35
948
  msgid "ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)"
949
  msgstr ""
950
 
951
- #: src/markers.py:179
952
  #, python-brace-format
953
  msgid "https://maps.google.com/?q={long_lat}"
954
  msgstr ""
955
 
956
- #: src/markers.py:186
957
  msgid ""
958
  "\n"
959
  " <b>Request Type:</b> {request_type}<br>\n"
@@ -967,77 +873,77 @@ msgid ""
967
  " "
968
  msgstr ""
969
 
970
- #: src/markers.py:196 src/markers.py:250
971
  msgid "list"
972
  msgstr ""
973
 
974
- #: src/markers.py:203 src/markers.py:204
975
  msgid " لأي جماعة / قيادة / دوار تنتمون ؟"
976
  msgstr ""
977
 
978
- #: src/markers.py:214
979
  msgid "Display verified victim requests on the map"
980
  msgstr ""
981
 
982
- #: src/markers.py:228 src/markers.py:229 src/dataframes.py:38
983
  msgid "Help Details"
984
  msgstr ""
985
 
986
- #: src/markers.py:231
987
  #, python-brace-format
988
  msgid "<b>Request Type:</b> {request_type}<br>"
989
  msgstr ""
990
 
991
- #: src/markers.py:232 src/markers.py:254
992
  msgid "Location Details"
993
  msgstr ""
994
 
995
- #: src/markers.py:233
996
  #, python-brace-format
997
  msgid "<b>Location:</b> {val}<br>"
998
  msgstr ""
999
 
1000
- #: src/markers.py:234 src/markers.py:251
1001
  msgid "Emergency Degree"
1002
  msgstr ""
1003
 
1004
- #: src/markers.py:235
1005
  #, python-brace-format
1006
  msgid "<b>Emergency Degree:</b> {val}<br>"
1007
  msgstr ""
1008
 
1009
- #: src/markers.py:236
1010
  msgid "Verification Date"
1011
  msgstr ""
1012
 
1013
- #: src/markers.py:237
1014
  #, python-brace-format
1015
  msgid "<b>Verification Date:</b> {val}<br>"
1016
  msgstr ""
1017
 
1018
- #: src/markers.py:238 src/markers.py:247 src/dataframes.py:31
1019
- #: src/dataframes.py:32 src/dataframes.py:87
1020
  msgid "id"
1021
  msgstr ""
1022
 
1023
- #: src/markers.py:239
1024
  #, python-brace-format
1025
  msgid "<b>Id:</b> {val}<br>"
1026
  msgstr ""
1027
 
1028
- #: src/markers.py:241
1029
  #, python-brace-format
1030
  msgid "https://maps.google.com/?q={val}"
1031
  msgstr ""
1032
 
1033
- #: src/markers.py:243
1034
  #, python-brace-format
1035
  msgid ""
1036
  "<a href=\"{maps_url}\" target=\"_blank\" rel=\"noopener "
1037
  "noreferrer\"><b>Google Maps</b></a><br>"
1038
  msgstr ""
1039
 
1040
- #: src/markers.py:248
1041
  msgid ""
1042
  "<a href='https://docs.google.com/forms/d/"
1043
  "e/1FAIpQLSdyAcOAULumk4A1DsfrwUsGdZ-9G5xOUuD3vHdQOp3nGNAZXw/viewform?"
@@ -1046,63 +952,63 @@ msgid ""
1046
  "solved</b></a><br>"
1047
  msgstr ""
1048
 
1049
- #: src/components.py:11
1050
  msgid "Id review submission form"
1051
  msgstr ""
1052
 
1053
- #: src/components.py:13
1054
  msgid "🔍 Review of requests | مراجعة طلب مساعدة"
1055
  msgstr ""
1056
 
1057
- #: src/components.py:16
1058
  msgid "Enter id / أدخل الرقم"
1059
  msgstr ""
1060
 
1061
- #: src/components.py:17
1062
  msgid "Explain why / أدخل سبب المراجعة"
1063
  msgstr ""
1064
 
1065
- #: src/components.py:18
1066
  msgid "Submit / أرسل"
1067
  msgstr ""
1068
 
1069
- #: src/components.py:20
1070
  msgid "Please enter a reason / الرجاء إدخال سبب"
1071
  msgstr ""
1072
 
1073
- #: src/components.py:22
1074
  msgid ""
1075
  "review_id_{id_to_review}_{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.txt"
1076
  msgstr ""
1077
 
1078
- #: src/components.py:23
1079
  msgid "w"
1080
  msgstr ""
1081
 
1082
- #: src/components.py:24
1083
  #, python-brace-format
1084
  msgid "id: {id_to_review}, explanation: {reason_for_review}\n"
1085
  msgstr ""
1086
 
1087
- #: src/components.py:28
1088
  msgid "nt3awnou/review_requests"
1089
  msgstr ""
1090
 
1091
- #: src/components.py:29
1092
  msgid "dataset"
1093
  msgstr ""
1094
 
1095
- #: src/components.py:31
1096
  msgid ""
1097
  "Submitted at https://huggingface.co/datasets/nt3awnou/review_requests/ تم "
1098
  "الإرسال"
1099
  msgstr ""
1100
 
1101
- #: src/components.py:35
1102
  msgid "💻 For Developers only, embed code for the map"
1103
  msgstr "💻 Pour les développeurs uniquement, code d'intégration de la carte"
1104
 
1105
- #: src/components.py:37
1106
  msgid ""
1107
  "\n"
1108
  " <iframe id=\"nt3awnou-map\"\n"
@@ -1121,79 +1027,55 @@ msgid ""
1121
  " "
1122
  msgstr ""
1123
 
1124
- #: src/components.py:50
1125
  msgid "html"
1126
  msgstr ""
1127
 
1128
- #: src/components.py:64
1129
  msgid "# Number of help requests"
1130
  msgstr ""
1131
 
1132
- #: src/components.py:69
1133
  msgid "# Number of interventions"
1134
  msgstr ""
1135
 
1136
- #: src/components.py:75
1137
  msgid "# Number of solved requests"
1138
  msgstr ""
1139
 
1140
- #: src/components.py:87
 
 
 
 
1141
  msgid "# عدد طلبات المساعدة"
1142
  msgstr ""
1143
 
1144
- #: src/components.py:92
1145
  msgid "# عدد التدخلات"
1146
  msgstr ""
1147
 
1148
- #: src/components.py:98
1149
  msgid "# عدد الطلبات المستجاب لها"
1150
  msgstr ""
1151
 
1152
- #: src/components.py:110
1153
  msgid "# Nombre de demandes d'aide"
1154
  msgstr ""
1155
 
1156
- #: src/components.py:115
1157
  msgid "# Nombre d'interventions"
1158
  msgstr ""
1159
 
1160
- #: src/components.py:121
1161
  msgid "# Nombre de demandes résolues"
1162
  msgstr ""
1163
 
1164
- #: src/components.py:125
1165
- msgid "📊 **Charts**"
1166
- msgstr "📊 **Graphiques**"
1167
-
1168
- #: src/components.py:130 src/components.py:131
1169
- msgid "supplies_category"
1170
- msgstr ""
1171
-
1172
- #: src/components.py:130 src/components.py:137
1173
- msgid "[] '"
1174
- msgstr ""
1175
-
1176
- #: src/components.py:130 src/components.py:137
1177
- msgid "category"
1178
- msgstr ""
1179
-
1180
- #: src/components.py:131
1181
- msgid "Supplies Categories"
1182
- msgstr "Catégories d'aides fournies"
1183
-
1184
- #: src/components.py:137 src/components.py:138
1185
- msgid "need_category"
1186
- msgstr ""
1187
-
1188
- #: src/components.py:138
1189
- msgid "Needs Categories"
1190
- msgstr "Catégories de besoins"
1191
-
1192
- #: src/components.py:145
1193
  msgid "📝 **Donations**"
1194
  msgstr "📝 **Donations**"
1195
 
1196
- #: src/components.py:148
1197
  msgid ""
1198
  "\n"
1199
  " <div style=\"text-align: center;\">\n"
@@ -1210,7 +1092,7 @@ msgid ""
1210
  " "
1211
  msgstr ""
1212
 
1213
- #: src/components.py:164
1214
  msgid ""
1215
  "\n"
1216
  " <div style=\"text-align: center;\">\n"
@@ -1227,7 +1109,7 @@ msgid ""
1227
  " "
1228
  msgstr ""
1229
 
1230
- #: src/components.py:181
1231
  msgid ""
1232
  "\n"
1233
  " <div style=\"text-align: center;\">\n"
@@ -1304,104 +1186,105 @@ msgstr "✅ Entièrement servi"
1304
  msgid "Choose status"
1305
  msgstr ""
1306
 
1307
- #: src/dataframes.py:6
1308
- msgid "VERIFIED_REQUESTS_URL"
1309
- msgstr ""
1310
-
1311
  #: src/dataframes.py:7
1312
- msgid "REQUESTS_URL"
1313
- msgstr ""
1314
-
1315
- #: src/dataframes.py:8
1316
- msgid "INTERVENTIONS_URL"
1317
  msgstr ""
1318
 
1319
  #: src/dataframes.py:9
1320
- msgid "INTERVENTIONS_PROCESSED_URL"
 
 
1321
  msgstr ""
1322
 
1323
- #: src/dataframes.py:10
1324
- msgid "VERIFIED_REQUESTS_PROCESSED_URL"
 
 
1325
  msgstr ""
1326
 
1327
- #: src/dataframes.py:11
1328
  msgid "data/regions.json"
1329
  msgstr ""
1330
 
1331
- #: src/dataframes.py:18 src/dataframes.py:20
1332
  msgid "Automatic Extracted Coordinates"
1333
  msgstr ""
1334
 
1335
- #: src/dataframes.py:24 src/dataframes.py:25
1336
  msgid "Status"
1337
  msgstr ""
1338
 
1339
- #: src/dataframes.py:56
1340
  msgid "Display the dataframe in a table"
1341
  msgstr ""
1342
 
1343
- #: src/dataframes.py:63
1344
  msgid "🔍 Search for information / بحث عن المعلومات"
1345
  msgstr ""
1346
 
1347
- #: src/dataframes.py:63
1348
  #, python-brace-format
1349
  msgid "query_{df_hash}"
1350
  msgstr ""
1351
 
1352
- #: src/dataframes.py:67
1353
  msgid "🔍 Search for an id / بحث عن رقم"
1354
  msgstr ""
1355
 
1356
- #: src/dataframes.py:72
1357
  #, python-brace-format
1358
  msgid "id_{df_hash}"
1359
  msgstr ""
1360
 
1361
- #: src/dataframes.py:76
1362
  msgid "🗓️ Status / حالة"
1363
  msgstr ""
1364
 
1365
- #: src/dataframes.py:76
1366
  msgid "all / الكل"
1367
  msgstr ""
1368
 
1369
- #: src/dataframes.py:76 src/dataframes.py:93
1370
  msgid "Done / تم"
1371
  msgstr ""
1372
 
1373
- #: src/dataframes.py:76 src/dataframes.py:96
1374
  msgid "Planned / مخطط لها"
1375
  msgstr ""
1376
 
1377
- #: src/dataframes.py:76
1378
  #, python-brace-format
1379
  msgid "status_{df_hash}"
1380
  msgstr ""
1381
 
1382
- #: src/dataframes.py:92
1383
- msgid "Intervention status"
 
 
 
1384
  msgstr ""
1385
 
1386
- #: src/dataframes.py:94 src/dataframes.py:97
1387
  msgid "Intervention déjà passée / Past intevention"
1388
  msgstr ""
1389
 
1390
- #: src/dataframes.py:103
1391
  #, python-brace-format
1392
  msgid ""
1393
  "To view the full Google Sheet for advanced filtering go to: {data_url} "
1394
  "**لعرض الورقة كاملة، اذهب إلى**"
1395
  msgstr ""
1396
 
1397
- #: src/dataframes.py:108
1398
  msgid ""
1399
  "We are hiding contact information to protect the privacy of the victims. If "
1400
  "you are an NGO and want to contact the victims, please contact us at "
1401
1402
  msgstr ""
1403
 
1404
- #: src/dataframes.py:111
1405
  msgid ""
1406
  "\n"
1407
  " <div style=\"text-align: left;\">\n"
 
3
  # This file is distributed under the same license as the PACKAGE package.
4
  # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
  #
6
+ #: src/utils.py:69 src/utils.py:70 src/markers.py:195 src/components.py:16
7
  msgid ""
8
  msgstr ""
9
  "Project-Id-Version: \n"
10
  "Report-Msgid-Bugs-To: \n"
11
+ "POT-Creation-Date: 2023-09-19 03:04+0200\n"
12
  "PO-Revision-Date: 2023-09-18 21:00+0200\n"
13
  "Last-Translator: \n"
14
  "Language-Team: \n"
 
18
  "Content-Transfer-Encoding: 8bit\n"
19
  "X-Generator: Poedit 3.3.2\n"
20
 
21
+ #: app.py:22
22
  msgid "myapplication"
23
  msgstr ""
24
 
25
+ #: app.py:24
26
  msgid "HF_TOKEN"
27
  msgstr ""
28
 
29
+ #: app.py:31
30
  msgid "wide"
31
  msgstr ""
32
 
33
+ #: app.py:32 src/filters.py:40 src/filters.py:62
34
  msgid "collapsed"
35
  msgstr ""
36
 
37
+ #: app.py:33
38
  msgid "🤝"
39
  msgstr ""
40
 
41
+ #: app.py:34
42
  msgid "Nt3awnou نتعاونو"
43
  msgstr ""
44
 
45
+ #: app.py:38
46
  msgid "sleep_time"
47
  msgstr ""
48
 
49
+ #: app.py:40
50
  msgid "auto_refresh"
51
  msgstr ""
52
 
53
+ #: app.py:43
54
  msgid "Auto Refresh?"
55
  msgstr ""
56
 
57
+ #: app.py:45
58
  msgid "Refresh rate in seconds"
59
  msgstr ""
60
 
61
+ #: app.py:55 app.py:182 src/components.py:70 src/components.py:126
62
  msgid "ar"
63
  msgstr ""
64
 
65
+ #: app.py:55
66
  msgid "العربية"
67
  msgstr ""
68
 
69
+ #: app.py:56 src/components.py:89 src/components.py:143
70
  msgid "fr"
71
  msgstr ""
72
 
73
+ #: app.py:56
74
  msgid "Français"
75
  msgstr ""
76
 
77
+ #: app.py:57 app.py:62 src/components.py:52 src/components.py:110
78
  msgid "en"
79
  msgstr ""
80
 
81
+ #: app.py:57
82
  msgid "English"
83
  msgstr ""
84
 
85
+ #: app.py:60
86
  msgid "Choose language / اختر اللغة"
87
  msgstr ""
88
 
89
+ #: app.py:65
90
  msgid "messages"
91
  msgstr ""
92
 
93
+ #: app.py:65
94
  msgid "locales"
95
  msgstr ""
96
 
97
+ #: app.py:70
98
  msgid "Markers"
99
  msgstr ""
100
 
101
+ #: app.py:113
102
  msgid "map"
103
  msgstr ""
104
 
105
+ #: app.py:184
106
  msgid ""
107
  "\n"
108
  " <style>\n"
 
117
  msgid ""
118
  "\n"
119
  " <div style=\"text-align: left;\">\n"
120
+ " Nt3awnou نتعاونو is a collaborative platform dedicated to aiding "
121
+ "individuals impacted by the recent earthquake in Morocco. Our core mission "
122
+ "is to streamline and coordinate timely assistance for everyone affected. How "
123
+ "do we achieve this? We assist those in need by allowing them to communicate "
124
+ "their location and the specific aid they require, either by completing a "
125
+ "form or sending a voice message via WhatsApp to the number <b>0652573987</"
126
+ "b>. Once we receive and process this information, it can be viewed in our "
127
+ "dashboard, which allows NGOs to organize and precisely target their "
128
+ "interventions, ensuring swift assistance reaches those in need. Any "
129
+ "organization that has taken initiative in a particular area can notify us by "
130
+ "completing a dedicated form. This data is also incorporated into the "
131
+ "dashboard so that other NGOs can help affected areas that still haven't "
132
+ "received help.\n"
133
  " <br>⚠️ Warning : There are still rocks falling down the mountains, making "
134
  "the roads to the affected areas very dangerous. We advise volunteers to "
135
  "donate directly to specialized NGOs.<br>\n"
 
156
  "\n"
157
  " <div style=\"text-align: right;-webkit-rtl-ordering: logical;\">\n"
158
  "\n"
159
+ " نتعاونو هي منصة تعاونية لمساعدة الأفراد المتضررين من الزلزال الأخير في "
160
+ "المغرب. مهمتنا هي تسهيل تقديم المساعدة في الوقت المناسب و بفاعلية و تنظيم "
161
+ "لجميع المتضررين. كيفاش؟ كنعاونو الناس لي محتاجين للمساعدة إعلمونا بمكانهم و "
162
+ "نوع المساعدة لي محتاجين ليها سواء عن طريق ملأ الاستمارة أو عن طريق إرسال "
163
+ "تسجيل صوتي عبر واتساب إلى رقم مخصص<b>0652573987</b>. بعد معالجة هاد "
164
  "المعلومات، كنجمعوهم فخريطة كتمكن الجمعيات من تنظيم و استهداف تدخلاتهم بدقة "
165
  "باش توصل المساعدة للناس لي محتاجين في وقت أسرع. و كل جمعية قامت باللازم في "
166
  "منطقة معينة تقدر تعلمنا عن طريق ملأ استمارة مخصصة لهاد الأمر. هاد المعلومات "
 
191
  msgid ""
192
  "\n"
193
  " <div style=\"text-align: left;\">\n"
194
+ " Nt3awnou نتعاونو est une plateforme collaborative dédiée à l'aide aux "
195
+ "personnes touchées par le récent tremblement de terre au Maroc. Notre "
196
+ "mission principale est de rationaliser et de coordonner une assistance "
197
+ "rapide pour toutes les personnes touchées. Comment y parvenons-nous ? Nous "
198
+ "aidons les personnes dans le besoin en leur permettant de communiquer leur "
199
+ "localisation et l'aide spécifique dont elles ont besoin, soit en remplissant "
200
+ "un formulaire, soit en envoyant un message vocal via WhatsApp à un numéro "
201
+ "<b>0652573987</b>. Une fois reçues et traitées, ces informations peuvent "
202
+ "être consultées dans notre tableau de bord, qui permet aux associations "
203
+ "d'organiser et de cibler précisément leurs interventions, afin que l'aide "
204
+ "parvienne rapidement à ceux qui en ont besoin. Toute organisation ayant pris "
205
+ "une initiative dans une zone particulière peut nous en informer en "
206
+ "remplissant un formulaire prévu à cet effet. Ces données sont également "
207
+ "intégrées au tableau de bord afin que d'autres associations puissent aider "
208
+ "les zones touchées qui n'ont pas encore reçu d'aide.\n"
209
  " <br> ⚠️ Avertissement : Il y a encore des chutes de pierres dans les "
210
  "montagnes, ce qui rend les routes vers les zones touchées très dangereuses. "
211
  "Nous conseillons aux volontaires de faire des dons directement aux "
 
245
  " <hr>\n"
246
  " <div style=\"text-align: center;\">\n"
247
  " <p>By <b>Moroccans</b> for <b>Moroccans</b> 🤝</p>\n"
248
+ " <p> Special thanks for <a href=\"https://www.annarabic.com/\">Annarabic</"
249
+ "a> and <a href=\"https://summerschool.morocco.ai/\">AI Summer School</a> for "
250
+ "their support</p>\n"
251
  " <p>Reach out to us at <a href=\"mailto:nt3awnoumorocco@gmail."
252
  "com\">[email protected]</a></p>\n"
253
  " "
254
  msgstr ""
255
 
256
+ #: src/text_content.py:61
257
  msgid ""
258
  "\n"
259
  " <style>\n"
 
315
  " # "
316
  msgstr ""
317
 
318
+ #: src/text_content.py:106
319
  msgid ""
320
  "**If a request should be reviewed or dropped submit its id here/ إذا كان يجب "
321
  "مراجعة أو حذف طلب، أدخل رقمه هنا:**"
 
344
  msgstr ""
345
 
346
  #: src/utils.py:28 src/utils.py:29 src/utils.py:57 src/utils.py:58
347
+ #: src/utils.py:67 src/markers.py:26
 
348
  msgid ","
349
  msgstr ""
350
 
 
352
  msgid "Add a latlng column to the dataframe"
353
  msgstr ""
354
 
355
+ #: src/utils.py:44 src/utils.py:46 src/markers.py:81 src/markers.py:87
356
+ #: src/markers.py:98 src/markers.py:133 src/markers.py:147 src/markers.py:193
357
+ #: src/markers.py:209
358
  msgid "latlng"
359
  msgstr ""
360
 
 
429
  msgid "50 to 100 km - Moderate risk area | منطقة خطر معتدلة"
430
  msgstr ""
431
 
432
+ #: src/utils.py:98 src/markers.py:8 src/markers.py:188
433
  msgid "orange"
434
  msgstr ""
435
 
 
485
  msgid "#0046C8"
486
  msgstr ""
487
 
488
+ #: src/utils.py:140 src/utils.py:144 src/markers.py:54 src/markers.py:109
489
  msgid "Done ✅"
490
  msgstr "Terminé ✅"
491
 
 
493
  msgid "Planned ⏳"
494
  msgstr "Prévu ⏳"
495
 
496
+ #: src/utils.py:142 src/utils.py:146 src/markers.py:58
497
  msgid "Partial 📝"
498
  msgstr "Partiel 📝"
499
 
500
+ #: src/utils.py:145 src/markers.py:50 src/markers.py:106
501
  msgid "Planned ⌛"
502
  msgstr "Prévu ⌛"
503
 
 
513
  msgid "Low Emergency 🟡"
514
  msgstr "Urgence faible 🟡"
515
 
516
+ #: src/utils.py:158 src/markers.py:189
517
  msgid "High"
518
  msgstr ""
519
 
520
+ #: src/utils.py:159 src/markers.py:188
521
  msgid "Medium"
522
  msgstr ""
523
 
524
+ #: src/utils.py:160 src/markers.py:187 src/markers.py:220
525
  msgid "Low"
526
  msgstr ""
527
 
 
726
  msgid "إغاثة"
727
  msgstr ""
728
 
729
+ #: src/markers.py:7 src/markers.py:107 src/markers.py:110 src/markers.py:189
730
  msgid "red"
731
  msgstr ""
732
 
 
738
  msgid "مأوى"
739
  msgstr ""
740
 
741
+ #: src/markers.py:9 src/markers.py:177 src/markers.py:187 src/markers.py:234
742
  msgid "beige"
743
  msgstr ""
744
 
 
762
  msgid "bell"
763
  msgstr ""
764
 
765
+ #: src/markers.py:16 src/markers.py:107 src/markers.py:110
766
  msgid "heart"
767
  msgstr ""
768
 
 
778
  msgid "Warning"
779
  msgstr ""
780
 
781
+ #: src/markers.py:34
 
 
 
 
782
  msgid "Display NGO interventions on the map"
783
  msgstr ""
784
 
785
+ #: src/markers.py:39
 
 
 
 
 
 
 
 
786
  msgid "Intervention prévue dans le futur / Planned future intervention"
787
  msgstr ""
788
 
789
+ #: src/markers.py:43 src/filters.py:52
790
  msgid "Partiellement satisfait / Partially Served"
791
  msgstr ""
792
 
793
+ #: src/markers.py:49 src/markers.py:107
794
  msgid "pink"
795
  msgstr ""
796
 
797
+ #: src/markers.py:51 src/filters.py:51
798
  msgid "Critique, Besoin d'aide en urgence / Critical, in urgent need of help"
799
  msgstr ""
800
 
801
+ #: src/markers.py:53 src/markers.py:110
802
  msgid "green"
803
  msgstr ""
804
 
805
+ #: src/markers.py:57
806
  msgid "darkgreen"
807
  msgstr ""
808
 
809
+ #: src/markers.py:68
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
810
  #, python-brace-format
811
  msgid ""
812
  "\n"
813
+ " <b>Date:</b> {date}<br>\n"
814
+ " <b>City:</b> {city}<br>\n"
815
+ " <b>Intervention Status:</b> {status}<br>\n"
816
+ " <b>Village Status:</b> {village_status}<br>\n"
817
  " <b>Org:</b> {org}<br>\n"
818
+ " <b>Intervention:</b> {intervention_type}<br>\n"
 
 
 
 
 
 
 
 
 
 
 
 
819
  " <b>Population:</b> {population}<br>\n"
820
+ " <b>Road State:</b> {road_state}<br>\n"
821
+ " <b>Details:</b> {details}<br>\n"
822
+ " <b>Contact:</b> {contact}<br>\n"
823
  " "
824
  msgstr ""
825
 
826
+ #: src/markers.py:102
827
  msgid "Planned"
828
  msgstr "Prévu"
829
 
830
+ #: src/markers.py:107 src/markers.py:110 src/markers.py:177 src/markers.py:234
831
  msgid "glyphicon"
832
  msgstr ""
833
 
834
+ #: src/markers.py:120
835
  #, python-brace-format
836
  msgid ""
837
  "\n"
 
846
  " "
847
  msgstr ""
848
 
849
+ #: src/markers.py:143
850
  msgid "Display victim requests on the map"
851
  msgstr ""
852
 
853
+ #: src/markers.py:145 src/dataframes.py:37
854
  msgid "ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)"
855
  msgstr ""
856
 
857
+ #: src/markers.py:148
858
  #, python-brace-format
859
  msgid "https://maps.google.com/?q={long_lat}"
860
  msgstr ""
861
 
862
+ #: src/markers.py:155
863
  msgid ""
864
  "\n"
865
  " <b>Request Type:</b> {request_type}<br>\n"
 
873
  " "
874
  msgstr ""
875
 
876
+ #: src/markers.py:165 src/markers.py:219
877
  msgid "list"
878
  msgstr ""
879
 
880
+ #: src/markers.py:172 src/markers.py:173
881
  msgid " لأي جماعة / قيادة / دوار تنتمون ؟"
882
  msgstr ""
883
 
884
+ #: src/markers.py:183
885
  msgid "Display verified victim requests on the map"
886
  msgstr ""
887
 
888
+ #: src/markers.py:197 src/markers.py:198 src/dataframes.py:40
889
  msgid "Help Details"
890
  msgstr ""
891
 
892
+ #: src/markers.py:200
893
  #, python-brace-format
894
  msgid "<b>Request Type:</b> {request_type}<br>"
895
  msgstr ""
896
 
897
+ #: src/markers.py:201 src/markers.py:223
898
  msgid "Location Details"
899
  msgstr ""
900
 
901
+ #: src/markers.py:202
902
  #, python-brace-format
903
  msgid "<b>Location:</b> {val}<br>"
904
  msgstr ""
905
 
906
+ #: src/markers.py:203 src/markers.py:220
907
  msgid "Emergency Degree"
908
  msgstr ""
909
 
910
+ #: src/markers.py:204
911
  #, python-brace-format
912
  msgid "<b>Emergency Degree:</b> {val}<br>"
913
  msgstr ""
914
 
915
+ #: src/markers.py:205
916
  msgid "Verification Date"
917
  msgstr ""
918
 
919
+ #: src/markers.py:206
920
  #, python-brace-format
921
  msgid "<b>Verification Date:</b> {val}<br>"
922
  msgstr ""
923
 
924
+ #: src/markers.py:207 src/markers.py:216 src/dataframes.py:33
925
+ #: src/dataframes.py:34 src/dataframes.py:89
926
  msgid "id"
927
  msgstr ""
928
 
929
+ #: src/markers.py:208
930
  #, python-brace-format
931
  msgid "<b>Id:</b> {val}<br>"
932
  msgstr ""
933
 
934
+ #: src/markers.py:210
935
  #, python-brace-format
936
  msgid "https://maps.google.com/?q={val}"
937
  msgstr ""
938
 
939
+ #: src/markers.py:212
940
  #, python-brace-format
941
  msgid ""
942
  "<a href=\"{maps_url}\" target=\"_blank\" rel=\"noopener "
943
  "noreferrer\"><b>Google Maps</b></a><br>"
944
  msgstr ""
945
 
946
+ #: src/markers.py:217
947
  msgid ""
948
  "<a href='https://docs.google.com/forms/d/"
949
  "e/1FAIpQLSdyAcOAULumk4A1DsfrwUsGdZ-9G5xOUuD3vHdQOp3nGNAZXw/viewform?"
 
952
  "solved</b></a><br>"
953
  msgstr ""
954
 
955
+ #: src/components.py:8
956
  msgid "Id review submission form"
957
  msgstr ""
958
 
959
+ #: src/components.py:10
960
  msgid "🔍 Review of requests | مراجعة طلب مساعدة"
961
  msgstr ""
962
 
963
+ #: src/components.py:13
964
  msgid "Enter id / أدخل الرقم"
965
  msgstr ""
966
 
967
+ #: src/components.py:14
968
  msgid "Explain why / أدخل سبب المراجعة"
969
  msgstr ""
970
 
971
+ #: src/components.py:15
972
  msgid "Submit / أرسل"
973
  msgstr ""
974
 
975
+ #: src/components.py:17
976
  msgid "Please enter a reason / الرجاء إدخال سبب"
977
  msgstr ""
978
 
979
+ #: src/components.py:19
980
  msgid ""
981
  "review_id_{id_to_review}_{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.txt"
982
  msgstr ""
983
 
984
+ #: src/components.py:20
985
  msgid "w"
986
  msgstr ""
987
 
988
+ #: src/components.py:21
989
  #, python-brace-format
990
  msgid "id: {id_to_review}, explanation: {reason_for_review}\n"
991
  msgstr ""
992
 
993
+ #: src/components.py:25
994
  msgid "nt3awnou/review_requests"
995
  msgstr ""
996
 
997
+ #: src/components.py:26
998
  msgid "dataset"
999
  msgstr ""
1000
 
1001
+ #: src/components.py:28
1002
  msgid ""
1003
  "Submitted at https://huggingface.co/datasets/nt3awnou/review_requests/ تم "
1004
  "الإرسال"
1005
  msgstr ""
1006
 
1007
+ #: src/components.py:32
1008
  msgid "💻 For Developers only, embed code for the map"
1009
  msgstr "💻 Pour les développeurs uniquement, code d'intégration de la carte"
1010
 
1011
+ #: src/components.py:34
1012
  msgid ""
1013
  "\n"
1014
  " <iframe id=\"nt3awnou-map\"\n"
 
1027
  " "
1028
  msgstr ""
1029
 
1030
+ #: src/components.py:47
1031
  msgid "html"
1032
  msgstr ""
1033
 
1034
+ #: src/components.py:57
1035
  msgid "# Number of help requests"
1036
  msgstr ""
1037
 
1038
+ #: src/components.py:62
1039
  msgid "# Number of interventions"
1040
  msgstr ""
1041
 
1042
+ #: src/components.py:67
1043
  msgid "# Number of solved requests"
1044
  msgstr ""
1045
 
1046
+ #: src/components.py:71
1047
+ msgid "📝 شرح منصة نتعاونو"
1048
+ msgstr ""
1049
+
1050
+ #: src/components.py:76
1051
  msgid "# عدد طلبات المساعدة"
1052
  msgstr ""
1053
 
1054
+ #: src/components.py:81
1055
  msgid "# عدد التدخلات"
1056
  msgstr ""
1057
 
1058
+ #: src/components.py:86
1059
  msgid "# عدد الطلبات المستجاب لها"
1060
  msgstr ""
1061
 
1062
+ #: src/components.py:94
1063
  msgid "# Nombre de demandes d'aide"
1064
  msgstr ""
1065
 
1066
+ #: src/components.py:99
1067
  msgid "# Nombre d'interventions"
1068
  msgstr ""
1069
 
1070
+ #: src/components.py:104
1071
  msgid "# Nombre de demandes résolues"
1072
  msgstr ""
1073
 
1074
+ #: src/components.py:109
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1075
  msgid "📝 **Donations**"
1076
  msgstr "📝 **Donations**"
1077
 
1078
+ #: src/components.py:112
1079
  msgid ""
1080
  "\n"
1081
  " <div style=\"text-align: center;\">\n"
 
1092
  " "
1093
  msgstr ""
1094
 
1095
+ #: src/components.py:128
1096
  msgid ""
1097
  "\n"
1098
  " <div style=\"text-align: center;\">\n"
 
1109
  " "
1110
  msgstr ""
1111
 
1112
+ #: src/components.py:145
1113
  msgid ""
1114
  "\n"
1115
  " <div style=\"text-align: center;\">\n"
 
1186
  msgid "Choose status"
1187
  msgstr ""
1188
 
 
 
 
 
1189
  #: src/dataframes.py:7
1190
+ msgid ""
1191
+ "https://docs.google.com/spreadsheets/"
1192
+ "d/1PXcAtI5L95hHSXAiRl3Y4v5O4coG39S86OTfBEcvLTE/edit#gid=0"
 
 
1193
  msgstr ""
1194
 
1195
  #: src/dataframes.py:9
1196
+ msgid ""
1197
+ "https://docs.google.com/spreadsheets/"
1198
+ "d/1gYoBBiBo1L18IVakHkf3t1fOGvHWb23loadyFZUeHJs/edit#gid=966953708"
1199
  msgstr ""
1200
 
1201
+ #: src/dataframes.py:11
1202
+ msgid ""
1203
+ "https://docs.google.com/spreadsheets/"
1204
+ "d/1eXOTqunOWWP8FRdENPs4cU9ulISm4XZWYJJNR1-SrwY/edit#gid=2089222765"
1205
  msgstr ""
1206
 
1207
+ #: src/dataframes.py:13
1208
  msgid "data/regions.json"
1209
  msgstr ""
1210
 
1211
+ #: src/dataframes.py:20 src/dataframes.py:22
1212
  msgid "Automatic Extracted Coordinates"
1213
  msgstr ""
1214
 
1215
+ #: src/dataframes.py:26 src/dataframes.py:27
1216
  msgid "Status"
1217
  msgstr ""
1218
 
1219
+ #: src/dataframes.py:58
1220
  msgid "Display the dataframe in a table"
1221
  msgstr ""
1222
 
1223
+ #: src/dataframes.py:65
1224
  msgid "🔍 Search for information / بحث عن المعلومات"
1225
  msgstr ""
1226
 
1227
+ #: src/dataframes.py:65
1228
  #, python-brace-format
1229
  msgid "query_{df_hash}"
1230
  msgstr ""
1231
 
1232
+ #: src/dataframes.py:69
1233
  msgid "🔍 Search for an id / بحث عن رقم"
1234
  msgstr ""
1235
 
1236
+ #: src/dataframes.py:74
1237
  #, python-brace-format
1238
  msgid "id_{df_hash}"
1239
  msgstr ""
1240
 
1241
+ #: src/dataframes.py:78
1242
  msgid "🗓️ Status / حالة"
1243
  msgstr ""
1244
 
1245
+ #: src/dataframes.py:78
1246
  msgid "all / الكل"
1247
  msgstr ""
1248
 
1249
+ #: src/dataframes.py:78 src/dataframes.py:95
1250
  msgid "Done / تم"
1251
  msgstr ""
1252
 
1253
+ #: src/dataframes.py:78 src/dataframes.py:98
1254
  msgid "Planned / مخطط لها"
1255
  msgstr ""
1256
 
1257
+ #: src/dataframes.py:78
1258
  #, python-brace-format
1259
  msgid "status_{df_hash}"
1260
  msgstr ""
1261
 
1262
+ #: src/dataframes.py:94
1263
+ msgid ""
1264
+ "Pouvez-vous nous préciser si vous êtes déjà intervenus ou si vous prévoyez "
1265
+ "de le faire | Tell us if you already made the intervention, or if you're "
1266
+ "planning to do it"
1267
  msgstr ""
1268
 
1269
+ #: src/dataframes.py:96 src/dataframes.py:99
1270
  msgid "Intervention déjà passée / Past intevention"
1271
  msgstr ""
1272
 
1273
+ #: src/dataframes.py:105
1274
  #, python-brace-format
1275
  msgid ""
1276
  "To view the full Google Sheet for advanced filtering go to: {data_url} "
1277
  "**لعرض الورقة كاملة، اذهب إلى**"
1278
  msgstr ""
1279
 
1280
+ #: src/dataframes.py:110
1281
  msgid ""
1282
  "We are hiding contact information to protect the privacy of the victims. If "
1283
  "you are an NGO and want to contact the victims, please contact us at "
1284
1285
  msgstr ""
1286
 
1287
+ #: src/dataframes.py:113
1288
  msgid ""
1289
  "\n"
1290
  " <div style=\"text-align: left;\">\n"
messages.pot CHANGED
@@ -3,13 +3,13 @@
3
  # This file is distributed under the same license as the PACKAGE package.
4
  # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
  #
6
- #: src/utils.py:69 src/utils.py:70 src/markers.py:226 src/components.py:19
7
  #, fuzzy
8
  msgid ""
9
  msgstr ""
10
  "Project-Id-Version: PACKAGE VERSION\n"
11
  "Report-Msgid-Bugs-To: \n"
12
- "POT-Creation-Date: 2023-09-26 20:34+0200\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
15
  "Language-Team: LANGUAGE <[email protected]>\n"
@@ -18,91 +18,91 @@ msgstr ""
18
  "Content-Type: text/plain; charset=UTF-8\n"
19
  "Content-Transfer-Encoding: 8bit\n"
20
 
21
- #: app.py:21
22
  msgid "myapplication"
23
  msgstr ""
24
 
25
- #: app.py:23
26
  msgid "HF_TOKEN"
27
  msgstr ""
28
 
29
- #: app.py:30
30
  msgid "wide"
31
  msgstr ""
32
 
33
- #: app.py:31 src/filters.py:40 src/filters.py:62
34
  msgid "collapsed"
35
  msgstr ""
36
 
37
- #: app.py:32
38
  msgid "🤝"
39
  msgstr ""
40
 
41
- #: app.py:33
42
  msgid "Nt3awnou نتعاونو"
43
  msgstr ""
44
 
45
- #: app.py:37
46
  msgid "sleep_time"
47
  msgstr ""
48
 
49
- #: app.py:39
50
  msgid "auto_refresh"
51
  msgstr ""
52
 
53
- #: app.py:42
54
  msgid "Auto Refresh?"
55
  msgstr ""
56
 
57
- #: app.py:44
58
  msgid "Refresh rate in seconds"
59
  msgstr ""
60
 
61
- #: app.py:54 app.py:184 src/components.py:78 src/components.py:162
62
  msgid "ar"
63
  msgstr ""
64
 
65
- #: app.py:54
66
  msgid "العربية"
67
  msgstr ""
68
 
69
- #: app.py:55 src/components.py:101 src/components.py:179
70
  msgid "fr"
71
  msgstr ""
72
 
73
- #: app.py:55
74
  msgid "Français"
75
  msgstr ""
76
 
77
- #: app.py:56 app.py:61 src/components.py:55 src/components.py:146
78
  msgid "en"
79
  msgstr ""
80
 
81
- #: app.py:56
82
  msgid "English"
83
  msgstr ""
84
 
85
- #: app.py:59
86
  msgid "Choose language / اختر اللغة"
87
  msgstr ""
88
 
89
- #: app.py:64
90
  msgid "messages"
91
  msgstr ""
92
 
93
- #: app.py:64
94
  msgid "locales"
95
  msgstr ""
96
 
97
- #: app.py:69
98
  msgid "Markers"
99
  msgstr ""
100
 
101
- #: app.py:112
102
  msgid "map"
103
  msgstr ""
104
 
105
- #: app.py:186
106
  msgid ""
107
  "\n"
108
  " <style>\n"
@@ -117,19 +117,19 @@ msgstr ""
117
  msgid ""
118
  "\n"
119
  " <div style=\"text-align: left;\">\n"
120
- " Nt3awnou نتعاونو is a non-profit organization and a collaborative "
121
- "platform dedicated to aiding individuals impacted by the recent earthquake "
122
- "in Morocco. Our core mission is to streamline and coordinate timely "
123
- "assistance for everyone affected. How do we achieve this? We assist those in "
124
- "need by allowing them to communicate their location and the specific aid "
125
- "they require, either by completing a form or sending a voice message via "
126
- "WhatsApp to the number <b>0602838166</b>. Once we receive and process this "
127
- "information, it can be viewed in our dashboard, which allows NGOs to "
128
- "organize and precisely target their interventions, ensuring swift assistance "
129
- "reaches those in need. Any organization that has taken initiative in a "
130
- "particular area can notify us by completing a dedicated form. This data is "
131
- "also incorporated into the dashboard so that other NGOs can help affected "
132
- "areas that still haven't received help.\n"
133
  " <br>⚠️ Warning : There are still rocks falling down the mountains, making "
134
  "the roads to the affected areas very dangerous. We advise volunteers to "
135
  "donate directly to specialized NGOs.<br>\n"
@@ -156,11 +156,11 @@ msgid ""
156
  "\n"
157
  " <div style=\"text-align: right;-webkit-rtl-ordering: logical;\">\n"
158
  "\n"
159
- " نتعاونو هي منصة تعاونية غير ربحية لمساعدة الأفراد المتضررين من الزلزال "
160
- "الأخير في المغرب. مهمتنا هي تسهيل تقديم المساعدة في الوقت المناسب و بفاعلية "
161
- "و تنظيم لجميع المتضررين. كيفاش؟ كنعاونو الناس لي محتاجين للمساعدة إعلمونا "
162
- "بمكانهم و نوع المساعدة لي محتاجين ليها سواء عن طريق ملأ الاستمارة أو عن طريق "
163
- "إرسال تسجيل صوتي عبر واتساب إلى رقم مخصص<b>0602838166</b>. بعد معالجة هاد "
164
  "المعلومات، كنجمعوهم فخريطة كتمكن الجمعيات من تنظيم و استهداف تدخلاتهم بدقة "
165
  "باش توصل المساعدة للناس لي محتاجين في وقت أسرع. و كل جمعية قامت باللازم في "
166
  "منطقة معينة تقدر تعلمنا عن طريق ملأ استمارة مخصصة لهاد الأمر. هاد المعلومات "
@@ -191,21 +191,21 @@ msgstr ""
191
  msgid ""
192
  "\n"
193
  " <div style=\"text-align: left;\">\n"
194
- " Nt3awnou نتعاونو est une plateforme collaborative à but non-lucratif "
195
- "dédiée à l'aide aux personnes touchées par le récent tremblement de terre au "
196
- "Maroc. Notre mission principale est de rationaliser et de coordonner une "
197
- "assistance rapide pour toutes les personnes touchées. Comment y parvenons-"
198
- "nous ? Nous aidons les personnes dans le besoin en leur permettant de "
199
- "communiquer leur localisation et l'aide spécifique dont elles ont besoin, "
200
- "soit en remplissant un formulaire, soit en envoyant un message vocal via "
201
- "WhatsApp à un numéro <b>0602838166</b>. Une fois reçues et traitées, ces "
202
- "informations peuvent être consultées dans notre tableau de bord, qui permet "
203
- "aux associations d'organiser et de cibler précisément leurs interventions, "
204
- "afin que l'aide parvienne rapidement à ceux qui en ont besoin. Toute "
205
- "organisation ayant pris une initiative dans une zone particulière peut nous "
206
- "en informer en remplissant un formulaire prévu à cet effet. Ces données sont "
207
- "également intégrées au tableau de bord afin que d'autres associations "
208
- "puissent aider les zones touchées qui n'ont pas encore reçu d'aide.\n"
209
  " <br> ⚠️ Avertissement : Il y a encore des chutes de pierres dans les "
210
  "montagnes, ce qui rend les routes vers les zones touchées très dangereuses. "
211
  "Nous conseillons aux volontaires de faire des dons directement aux "
@@ -245,12 +245,15 @@ msgid ""
245
  " <hr>\n"
246
  " <div style=\"text-align: center;\">\n"
247
  " <p>By <b>Moroccans</b> for <b>Moroccans</b> 🤝</p>\n"
 
 
 
248
  " <p>Reach out to us at <a href=\"mailto:nt3awnoumorocco@gmail."
249
  "com\">[email protected]</a></p>\n"
250
  " "
251
  msgstr ""
252
 
253
- #: src/text_content.py:60
254
  msgid ""
255
  "\n"
256
  " <style>\n"
@@ -312,7 +315,7 @@ msgid ""
312
  " # "
313
  msgstr ""
314
 
315
- #: src/text_content.py:105
316
  msgid ""
317
  "**If a request should be reviewed or dropped submit its id here/ إذا كان يجب "
318
  "مراجعة أو حذف طلب، أدخل رقمه هنا:**"
@@ -339,8 +342,7 @@ msgid "warn"
339
  msgstr ""
340
 
341
  #: src/utils.py:28 src/utils.py:29 src/utils.py:57 src/utils.py:58
342
- #: src/utils.py:67 src/markers.py:27 src/components.py:130
343
- #: src/components.py:137
344
  msgid ","
345
  msgstr ""
346
 
@@ -348,9 +350,9 @@ msgstr ""
348
  msgid "Add a latlng column to the dataframe"
349
  msgstr ""
350
 
351
- #: src/utils.py:44 src/utils.py:46 src/markers.py:112 src/markers.py:118
352
- #: src/markers.py:129 src/markers.py:164 src/markers.py:178 src/markers.py:224
353
- #: src/markers.py:240
354
  msgid "latlng"
355
  msgstr ""
356
 
@@ -425,7 +427,7 @@ msgstr ""
425
  msgid "50 to 100 km - Moderate risk area | منطقة خطر معتدلة"
426
  msgstr ""
427
 
428
- #: src/utils.py:98 src/markers.py:8 src/markers.py:219
429
  msgid "orange"
430
  msgstr ""
431
 
@@ -481,7 +483,7 @@ msgstr ""
481
  msgid "#0046C8"
482
  msgstr ""
483
 
484
- #: src/utils.py:140 src/utils.py:144 src/markers.py:55 src/markers.py:140
485
  msgid "Done ✅"
486
  msgstr ""
487
 
@@ -489,11 +491,11 @@ msgstr ""
489
  msgid "Planned ⏳"
490
  msgstr ""
491
 
492
- #: src/utils.py:142 src/utils.py:146 src/markers.py:59
493
  msgid "Partial 📝"
494
  msgstr ""
495
 
496
- #: src/utils.py:145 src/markers.py:51 src/markers.py:137
497
  msgid "Planned ⌛"
498
  msgstr ""
499
 
@@ -509,15 +511,15 @@ msgstr ""
509
  msgid "Low Emergency 🟡"
510
  msgstr ""
511
 
512
- #: src/utils.py:158 src/markers.py:220
513
  msgid "High"
514
  msgstr ""
515
 
516
- #: src/utils.py:159 src/markers.py:219
517
  msgid "Medium"
518
  msgstr ""
519
 
520
- #: src/utils.py:160 src/markers.py:218 src/markers.py:251
521
  msgid "Low"
522
  msgstr ""
523
 
@@ -710,7 +712,7 @@ msgstr ""
710
  msgid "إغاثة"
711
  msgstr ""
712
 
713
- #: src/markers.py:7 src/markers.py:138 src/markers.py:141 src/markers.py:220
714
  msgid "red"
715
  msgstr ""
716
 
@@ -722,7 +724,7 @@ msgstr ""
722
  msgid "مأوى"
723
  msgstr ""
724
 
725
- #: src/markers.py:9 src/markers.py:208 src/markers.py:218 src/markers.py:265
726
  msgid "beige"
727
  msgstr ""
728
 
@@ -746,7 +748,7 @@ msgstr ""
746
  msgid "bell"
747
  msgstr ""
748
 
749
- #: src/markers.py:16 src/markers.py:138 src/markers.py:141
750
  msgid "heart"
751
  msgstr ""
752
 
@@ -762,156 +764,60 @@ msgstr ""
762
  msgid "Warning"
763
  msgstr ""
764
 
765
- #: src/markers.py:21
766
- msgid "A"
767
- msgstr ""
768
-
769
- #: src/markers.py:35
770
  msgid "Display NGO interventions on the map"
771
  msgstr ""
772
 
773
- #: src/markers.py:38 src/markers.py:80
774
- msgid "K"
775
- msgstr ""
776
-
777
- #: src/markers.py:40 src/markers.py:77
778
- msgid "H"
779
- msgstr ""
780
-
781
- #: src/markers.py:40
782
  msgid "Intervention prévue dans le futur / Planned future intervention"
783
  msgstr ""
784
 
785
- #: src/markers.py:44 src/filters.py:52
786
  msgid "Partiellement satisfait / Partially Served"
787
  msgstr ""
788
 
789
- #: src/markers.py:50 src/markers.py:138
790
  msgid "pink"
791
  msgstr ""
792
 
793
- #: src/markers.py:52 src/filters.py:51
794
  msgid "Critique, Besoin d'aide en urgence / Critical, in urgent need of help"
795
  msgstr ""
796
 
797
- #: src/markers.py:54 src/markers.py:141
798
  msgid "green"
799
  msgstr ""
800
 
801
- #: src/markers.py:58
802
  msgid "darkgreen"
803
  msgstr ""
804
 
805
- #: src/markers.py:71
806
- msgid "B"
807
- msgstr ""
808
-
809
- #: src/markers.py:72
810
- msgid "C"
811
- msgstr ""
812
-
813
- #: src/markers.py:73
814
- msgid "D"
815
- msgstr ""
816
-
817
- #: src/markers.py:74
818
- msgid "E"
819
- msgstr ""
820
-
821
- #: src/markers.py:75
822
- msgid "F"
823
- msgstr ""
824
-
825
- #: src/markers.py:76
826
- msgid "G"
827
- msgstr ""
828
-
829
- #: src/markers.py:78
830
- msgid "I"
831
- msgstr ""
832
-
833
- #: src/markers.py:79
834
- msgid "J"
835
- msgstr ""
836
-
837
- #: src/markers.py:81
838
- msgid "L"
839
- msgstr ""
840
-
841
- #: src/markers.py:82
842
- msgid "M"
843
- msgstr ""
844
-
845
- #: src/markers.py:83
846
- msgid "N"
847
- msgstr ""
848
-
849
- #: src/markers.py:84
850
- msgid "O"
851
- msgstr ""
852
-
853
- #: src/markers.py:85
854
- msgid "P"
855
- msgstr ""
856
-
857
- #: src/markers.py:86
858
- msgid "Q"
859
- msgstr ""
860
-
861
- #: src/markers.py:87
862
- msgid "R"
863
- msgstr ""
864
-
865
- #: src/markers.py:88
866
- msgid "S"
867
- msgstr ""
868
-
869
- #: src/markers.py:89
870
- msgid "T"
871
- msgstr ""
872
-
873
- #: src/markers.py:90
874
- msgid "U"
875
- msgstr ""
876
-
877
- #: src/markers.py:92
878
- msgid ", "
879
- msgstr ""
880
-
881
- #: src/markers.py:93
882
  #, python-brace-format
883
  msgid ""
884
  "\n"
 
 
 
 
885
  " <b>Org:</b> {org}<br>\n"
886
- " <b>Association ID:</b> {association_id}<br>\n"
887
- " <b>Speciality:</b> {speciality}<br>\n"
888
- " <b>Phone 1:</b> {phone_1}<br>\n"
889
- " <b>Phone 2:</b> {phone_2}<br>\n"
890
- " <b>Email:</b> {email}<br>\n"
891
- " <b>Intervention Date:</b> {intervention_date}<br>\n"
892
- " <b>Intervention Status:</b> {intervention_status}<br>\n"
893
- " <b>Help Type:</b> {help_type}<br>\n"
894
- " <b>Current Situation:</b> {current_situation}<br>\n"
895
- " <b>Future Help Type:</b> {future_help_type}<br>\n"
896
- " <b>Douar Name:</b> {full_douar_name}<br>\n"
897
- " <b>Accessibility to Douar:</b> {accessibility_to_douar}<br>\n"
898
- " <b>Type of Accessibility:</b> {type_of_accessibility}<br>\n"
899
  " <b>Population:</b> {population}<br>\n"
900
- " <b>Intervention Additional Info:</b> {intervention_additional_info}"
901
- "<br>\n"
902
- " <b>Any Additional Info:</b> {any_additional_info}<br>\n"
903
  " "
904
  msgstr ""
905
 
906
- #: src/markers.py:133
907
  msgid "Planned"
908
  msgstr ""
909
 
910
- #: src/markers.py:138 src/markers.py:141 src/markers.py:208 src/markers.py:265
911
  msgid "glyphicon"
912
  msgstr ""
913
 
914
- #: src/markers.py:151
915
  #, python-brace-format
916
  msgid ""
917
  "\n"
@@ -926,20 +832,20 @@ msgid ""
926
  " "
927
  msgstr ""
928
 
929
- #: src/markers.py:174
930
  msgid "Display victim requests on the map"
931
  msgstr ""
932
 
933
- #: src/markers.py:176 src/dataframes.py:35
934
  msgid "ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)"
935
  msgstr ""
936
 
937
- #: src/markers.py:179
938
  #, python-brace-format
939
  msgid "https://maps.google.com/?q={long_lat}"
940
  msgstr ""
941
 
942
- #: src/markers.py:186
943
  msgid ""
944
  "\n"
945
  " <b>Request Type:</b> {request_type}<br>\n"
@@ -953,77 +859,77 @@ msgid ""
953
  " "
954
  msgstr ""
955
 
956
- #: src/markers.py:196 src/markers.py:250
957
  msgid "list"
958
  msgstr ""
959
 
960
- #: src/markers.py:203 src/markers.py:204
961
  msgid " لأي جماعة / قيادة / دوار تنتمون ؟"
962
  msgstr ""
963
 
964
- #: src/markers.py:214
965
  msgid "Display verified victim requests on the map"
966
  msgstr ""
967
 
968
- #: src/markers.py:228 src/markers.py:229 src/dataframes.py:38
969
  msgid "Help Details"
970
  msgstr ""
971
 
972
- #: src/markers.py:231
973
  #, python-brace-format
974
  msgid "<b>Request Type:</b> {request_type}<br>"
975
  msgstr ""
976
 
977
- #: src/markers.py:232 src/markers.py:254
978
  msgid "Location Details"
979
  msgstr ""
980
 
981
- #: src/markers.py:233
982
  #, python-brace-format
983
  msgid "<b>Location:</b> {val}<br>"
984
  msgstr ""
985
 
986
- #: src/markers.py:234 src/markers.py:251
987
  msgid "Emergency Degree"
988
  msgstr ""
989
 
990
- #: src/markers.py:235
991
  #, python-brace-format
992
  msgid "<b>Emergency Degree:</b> {val}<br>"
993
  msgstr ""
994
 
995
- #: src/markers.py:236
996
  msgid "Verification Date"
997
  msgstr ""
998
 
999
- #: src/markers.py:237
1000
  #, python-brace-format
1001
  msgid "<b>Verification Date:</b> {val}<br>"
1002
  msgstr ""
1003
 
1004
- #: src/markers.py:238 src/markers.py:247 src/dataframes.py:31
1005
- #: src/dataframes.py:32 src/dataframes.py:87
1006
  msgid "id"
1007
  msgstr ""
1008
 
1009
- #: src/markers.py:239
1010
  #, python-brace-format
1011
  msgid "<b>Id:</b> {val}<br>"
1012
  msgstr ""
1013
 
1014
- #: src/markers.py:241
1015
  #, python-brace-format
1016
  msgid "https://maps.google.com/?q={val}"
1017
  msgstr ""
1018
 
1019
- #: src/markers.py:243
1020
  #, python-brace-format
1021
  msgid ""
1022
  "<a href=\"{maps_url}\" target=\"_blank\" rel=\"noopener "
1023
  "noreferrer\"><b>Google Maps</b></a><br>"
1024
  msgstr ""
1025
 
1026
- #: src/markers.py:248
1027
  msgid ""
1028
  "<a href='https://docs.google.com/forms/d/"
1029
  "e/1FAIpQLSdyAcOAULumk4A1DsfrwUsGdZ-9G5xOUuD3vHdQOp3nGNAZXw/viewform?"
@@ -1032,63 +938,63 @@ msgid ""
1032
  "solved</b></a><br>"
1033
  msgstr ""
1034
 
1035
- #: src/components.py:11
1036
  msgid "Id review submission form"
1037
  msgstr ""
1038
 
1039
- #: src/components.py:13
1040
  msgid "🔍 Review of requests | مراجعة طلب مساعدة"
1041
  msgstr ""
1042
 
1043
- #: src/components.py:16
1044
  msgid "Enter id / أدخل الرقم"
1045
  msgstr ""
1046
 
1047
- #: src/components.py:17
1048
  msgid "Explain why / أدخل سبب المراجعة"
1049
  msgstr ""
1050
 
1051
- #: src/components.py:18
1052
  msgid "Submit / أرسل"
1053
  msgstr ""
1054
 
1055
- #: src/components.py:20
1056
  msgid "Please enter a reason / الرجاء إدخال سبب"
1057
  msgstr ""
1058
 
1059
- #: src/components.py:22
1060
  msgid ""
1061
  "review_id_{id_to_review}_{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.txt"
1062
  msgstr ""
1063
 
1064
- #: src/components.py:23
1065
  msgid "w"
1066
  msgstr ""
1067
 
1068
- #: src/components.py:24
1069
  #, python-brace-format
1070
  msgid "id: {id_to_review}, explanation: {reason_for_review}\n"
1071
  msgstr ""
1072
 
1073
- #: src/components.py:28
1074
  msgid "nt3awnou/review_requests"
1075
  msgstr ""
1076
 
1077
- #: src/components.py:29
1078
  msgid "dataset"
1079
  msgstr ""
1080
 
1081
- #: src/components.py:31
1082
  msgid ""
1083
  "Submitted at https://huggingface.co/datasets/nt3awnou/review_requests/ تم "
1084
  "الإرسال"
1085
  msgstr ""
1086
 
1087
- #: src/components.py:35
1088
  msgid "💻 For Developers only, embed code for the map"
1089
  msgstr ""
1090
 
1091
- #: src/components.py:37
1092
  msgid ""
1093
  "\n"
1094
  " <iframe id=\"nt3awnou-map\"\n"
@@ -1107,79 +1013,55 @@ msgid ""
1107
  " "
1108
  msgstr ""
1109
 
1110
- #: src/components.py:50
1111
  msgid "html"
1112
  msgstr ""
1113
 
1114
- #: src/components.py:64
1115
  msgid "# Number of help requests"
1116
  msgstr ""
1117
 
1118
- #: src/components.py:69
1119
  msgid "# Number of interventions"
1120
  msgstr ""
1121
 
1122
- #: src/components.py:75
1123
  msgid "# Number of solved requests"
1124
  msgstr ""
1125
 
1126
- #: src/components.py:87
 
 
 
 
1127
  msgid "# عدد طلبات المساعدة"
1128
  msgstr ""
1129
 
1130
- #: src/components.py:92
1131
  msgid "# عدد التدخلات"
1132
  msgstr ""
1133
 
1134
- #: src/components.py:98
1135
  msgid "# عدد الطلبات المستجاب لها"
1136
  msgstr ""
1137
 
1138
- #: src/components.py:110
1139
  msgid "# Nombre de demandes d'aide"
1140
  msgstr ""
1141
 
1142
- #: src/components.py:115
1143
  msgid "# Nombre d'interventions"
1144
  msgstr ""
1145
 
1146
- #: src/components.py:121
1147
  msgid "# Nombre de demandes résolues"
1148
  msgstr ""
1149
 
1150
- #: src/components.py:125
1151
- msgid "📊 **Charts**"
1152
- msgstr ""
1153
-
1154
- #: src/components.py:130 src/components.py:131
1155
- msgid "supplies_category"
1156
- msgstr ""
1157
-
1158
- #: src/components.py:130 src/components.py:137
1159
- msgid "[] '"
1160
- msgstr ""
1161
-
1162
- #: src/components.py:130 src/components.py:137
1163
- msgid "category"
1164
- msgstr ""
1165
-
1166
- #: src/components.py:131
1167
- msgid "Supplies Categories"
1168
- msgstr ""
1169
-
1170
- #: src/components.py:137 src/components.py:138
1171
- msgid "need_category"
1172
- msgstr ""
1173
-
1174
- #: src/components.py:138
1175
- msgid "Needs Categories"
1176
- msgstr ""
1177
-
1178
- #: src/components.py:145
1179
  msgid "📝 **Donations**"
1180
  msgstr ""
1181
 
1182
- #: src/components.py:148
1183
  msgid ""
1184
  "\n"
1185
  " <div style=\"text-align: center;\">\n"
@@ -1196,7 +1078,7 @@ msgid ""
1196
  " "
1197
  msgstr ""
1198
 
1199
- #: src/components.py:164
1200
  msgid ""
1201
  "\n"
1202
  " <div style=\"text-align: center;\">\n"
@@ -1213,7 +1095,7 @@ msgid ""
1213
  " "
1214
  msgstr ""
1215
 
1216
- #: src/components.py:181
1217
  msgid ""
1218
  "\n"
1219
  " <div style=\"text-align: center;\">\n"
@@ -1290,104 +1172,105 @@ msgstr ""
1290
  msgid "Choose status"
1291
  msgstr ""
1292
 
1293
- #: src/dataframes.py:6
1294
- msgid "VERIFIED_REQUESTS_URL"
1295
- msgstr ""
1296
-
1297
  #: src/dataframes.py:7
1298
- msgid "REQUESTS_URL"
1299
- msgstr ""
1300
-
1301
- #: src/dataframes.py:8
1302
- msgid "INTERVENTIONS_URL"
1303
  msgstr ""
1304
 
1305
  #: src/dataframes.py:9
1306
- msgid "INTERVENTIONS_PROCESSED_URL"
 
 
1307
  msgstr ""
1308
 
1309
- #: src/dataframes.py:10
1310
- msgid "VERIFIED_REQUESTS_PROCESSED_URL"
 
 
1311
  msgstr ""
1312
 
1313
- #: src/dataframes.py:11
1314
  msgid "data/regions.json"
1315
  msgstr ""
1316
 
1317
- #: src/dataframes.py:18 src/dataframes.py:20
1318
  msgid "Automatic Extracted Coordinates"
1319
  msgstr ""
1320
 
1321
- #: src/dataframes.py:24 src/dataframes.py:25
1322
  msgid "Status"
1323
  msgstr ""
1324
 
1325
- #: src/dataframes.py:56
1326
  msgid "Display the dataframe in a table"
1327
  msgstr ""
1328
 
1329
- #: src/dataframes.py:63
1330
  msgid "🔍 Search for information / بحث عن المعلومات"
1331
  msgstr ""
1332
 
1333
- #: src/dataframes.py:63
1334
  #, python-brace-format
1335
  msgid "query_{df_hash}"
1336
  msgstr ""
1337
 
1338
- #: src/dataframes.py:67
1339
  msgid "🔍 Search for an id / بحث عن رقم"
1340
  msgstr ""
1341
 
1342
- #: src/dataframes.py:72
1343
  #, python-brace-format
1344
  msgid "id_{df_hash}"
1345
  msgstr ""
1346
 
1347
- #: src/dataframes.py:76
1348
  msgid "🗓️ Status / حالة"
1349
  msgstr ""
1350
 
1351
- #: src/dataframes.py:76
1352
  msgid "all / الكل"
1353
  msgstr ""
1354
 
1355
- #: src/dataframes.py:76 src/dataframes.py:93
1356
  msgid "Done / تم"
1357
  msgstr ""
1358
 
1359
- #: src/dataframes.py:76 src/dataframes.py:96
1360
  msgid "Planned / مخطط لها"
1361
  msgstr ""
1362
 
1363
- #: src/dataframes.py:76
1364
  #, python-brace-format
1365
  msgid "status_{df_hash}"
1366
  msgstr ""
1367
 
1368
- #: src/dataframes.py:92
1369
- msgid "Intervention status"
 
 
 
1370
  msgstr ""
1371
 
1372
- #: src/dataframes.py:94 src/dataframes.py:97
1373
  msgid "Intervention déjà passée / Past intevention"
1374
  msgstr ""
1375
 
1376
- #: src/dataframes.py:103
1377
  #, python-brace-format
1378
  msgid ""
1379
  "To view the full Google Sheet for advanced filtering go to: {data_url} "
1380
  "**لعرض الورقة كاملة، اذهب إلى**"
1381
  msgstr ""
1382
 
1383
- #: src/dataframes.py:108
1384
  msgid ""
1385
  "We are hiding contact information to protect the privacy of the victims. If "
1386
  "you are an NGO and want to contact the victims, please contact us at "
1387
1388
  msgstr ""
1389
 
1390
- #: src/dataframes.py:111
1391
  msgid ""
1392
  "\n"
1393
  " <div style=\"text-align: left;\">\n"
 
3
  # This file is distributed under the same license as the PACKAGE package.
4
  # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
  #
6
+ #: src/utils.py:69 src/utils.py:70 src/markers.py:195 src/components.py:16
7
  #, fuzzy
8
  msgid ""
9
  msgstr ""
10
  "Project-Id-Version: PACKAGE VERSION\n"
11
  "Report-Msgid-Bugs-To: \n"
12
+ "POT-Creation-Date: 2023-09-19 03:04+0200\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
15
  "Language-Team: LANGUAGE <[email protected]>\n"
 
18
  "Content-Type: text/plain; charset=UTF-8\n"
19
  "Content-Transfer-Encoding: 8bit\n"
20
 
21
+ #: app.py:22
22
  msgid "myapplication"
23
  msgstr ""
24
 
25
+ #: app.py:24
26
  msgid "HF_TOKEN"
27
  msgstr ""
28
 
29
+ #: app.py:31
30
  msgid "wide"
31
  msgstr ""
32
 
33
+ #: app.py:32 src/filters.py:40 src/filters.py:62
34
  msgid "collapsed"
35
  msgstr ""
36
 
37
+ #: app.py:33
38
  msgid "🤝"
39
  msgstr ""
40
 
41
+ #: app.py:34
42
  msgid "Nt3awnou نتعاونو"
43
  msgstr ""
44
 
45
+ #: app.py:38
46
  msgid "sleep_time"
47
  msgstr ""
48
 
49
+ #: app.py:40
50
  msgid "auto_refresh"
51
  msgstr ""
52
 
53
+ #: app.py:43
54
  msgid "Auto Refresh?"
55
  msgstr ""
56
 
57
+ #: app.py:45
58
  msgid "Refresh rate in seconds"
59
  msgstr ""
60
 
61
+ #: app.py:55 app.py:182 src/components.py:70 src/components.py:126
62
  msgid "ar"
63
  msgstr ""
64
 
65
+ #: app.py:55
66
  msgid "العربية"
67
  msgstr ""
68
 
69
+ #: app.py:56 src/components.py:89 src/components.py:143
70
  msgid "fr"
71
  msgstr ""
72
 
73
+ #: app.py:56
74
  msgid "Français"
75
  msgstr ""
76
 
77
+ #: app.py:57 app.py:62 src/components.py:52 src/components.py:110
78
  msgid "en"
79
  msgstr ""
80
 
81
+ #: app.py:57
82
  msgid "English"
83
  msgstr ""
84
 
85
+ #: app.py:60
86
  msgid "Choose language / اختر اللغة"
87
  msgstr ""
88
 
89
+ #: app.py:65
90
  msgid "messages"
91
  msgstr ""
92
 
93
+ #: app.py:65
94
  msgid "locales"
95
  msgstr ""
96
 
97
+ #: app.py:70
98
  msgid "Markers"
99
  msgstr ""
100
 
101
+ #: app.py:113
102
  msgid "map"
103
  msgstr ""
104
 
105
+ #: app.py:184
106
  msgid ""
107
  "\n"
108
  " <style>\n"
 
117
  msgid ""
118
  "\n"
119
  " <div style=\"text-align: left;\">\n"
120
+ " Nt3awnou نتعاونو is a collaborative platform dedicated to aiding "
121
+ "individuals impacted by the recent earthquake in Morocco. Our core mission "
122
+ "is to streamline and coordinate timely assistance for everyone affected. How "
123
+ "do we achieve this? We assist those in need by allowing them to communicate "
124
+ "their location and the specific aid they require, either by completing a "
125
+ "form or sending a voice message via WhatsApp to the number <b>0652573987</"
126
+ "b>. Once we receive and process this information, it can be viewed in our "
127
+ "dashboard, which allows NGOs to organize and precisely target their "
128
+ "interventions, ensuring swift assistance reaches those in need. Any "
129
+ "organization that has taken initiative in a particular area can notify us by "
130
+ "completing a dedicated form. This data is also incorporated into the "
131
+ "dashboard so that other NGOs can help affected areas that still haven't "
132
+ "received help.\n"
133
  " <br>⚠️ Warning : There are still rocks falling down the mountains, making "
134
  "the roads to the affected areas very dangerous. We advise volunteers to "
135
  "donate directly to specialized NGOs.<br>\n"
 
156
  "\n"
157
  " <div style=\"text-align: right;-webkit-rtl-ordering: logical;\">\n"
158
  "\n"
159
+ " نتعاونو هي منصة تعاونية لمساعدة الأفراد المتضررين من الزلزال الأخير في "
160
+ "المغرب. مهمتنا هي تسهيل تقديم المساعدة في الوقت المناسب و بفاعلية و تنظيم "
161
+ "لجميع المتضررين. كيفاش؟ كنعاونو الناس لي محتاجين للمساعدة إعلمونا بمكانهم و "
162
+ "نوع المساعدة لي محتاجين ليها سواء عن طريق ملأ الاستمارة أو عن طريق إرسال "
163
+ "تسجيل صوتي عبر واتساب إلى رقم مخصص<b>0652573987</b>. بعد معالجة هاد "
164
  "المعلومات، كنجمعوهم فخريطة كتمكن الجمعيات من تنظيم و استهداف تدخلاتهم بدقة "
165
  "باش توصل المساعدة للناس لي محتاجين في وقت أسرع. و كل جمعية قامت باللازم في "
166
  "منطقة معينة تقدر تعلمنا عن طريق ملأ استمارة مخصصة لهاد الأمر. هاد المعلومات "
 
191
  msgid ""
192
  "\n"
193
  " <div style=\"text-align: left;\">\n"
194
+ " Nt3awnou نتعاونو est une plateforme collaborative dédiée à l'aide aux "
195
+ "personnes touchées par le récent tremblement de terre au Maroc. Notre "
196
+ "mission principale est de rationaliser et de coordonner une assistance "
197
+ "rapide pour toutes les personnes touchées. Comment y parvenons-nous ? Nous "
198
+ "aidons les personnes dans le besoin en leur permettant de communiquer leur "
199
+ "localisation et l'aide spécifique dont elles ont besoin, soit en remplissant "
200
+ "un formulaire, soit en envoyant un message vocal via WhatsApp à un numéro "
201
+ "<b>0652573987</b>. Une fois reçues et traitées, ces informations peuvent "
202
+ "être consultées dans notre tableau de bord, qui permet aux associations "
203
+ "d'organiser et de cibler précisément leurs interventions, afin que l'aide "
204
+ "parvienne rapidement à ceux qui en ont besoin. Toute organisation ayant pris "
205
+ "une initiative dans une zone particulière peut nous en informer en "
206
+ "remplissant un formulaire prévu à cet effet. Ces données sont également "
207
+ "intégrées au tableau de bord afin que d'autres associations puissent aider "
208
+ "les zones touchées qui n'ont pas encore reçu d'aide.\n"
209
  " <br> ⚠️ Avertissement : Il y a encore des chutes de pierres dans les "
210
  "montagnes, ce qui rend les routes vers les zones touchées très dangereuses. "
211
  "Nous conseillons aux volontaires de faire des dons directement aux "
 
245
  " <hr>\n"
246
  " <div style=\"text-align: center;\">\n"
247
  " <p>By <b>Moroccans</b> for <b>Moroccans</b> 🤝</p>\n"
248
+ " <p> Special thanks for <a href=\"https://www.annarabic.com/\">Annarabic</"
249
+ "a> and <a href=\"https://summerschool.morocco.ai/\">AI Summer School</a> for "
250
+ "their support</p>\n"
251
  " <p>Reach out to us at <a href=\"mailto:nt3awnoumorocco@gmail."
252
  "com\">[email protected]</a></p>\n"
253
  " "
254
  msgstr ""
255
 
256
+ #: src/text_content.py:61
257
  msgid ""
258
  "\n"
259
  " <style>\n"
 
315
  " # "
316
  msgstr ""
317
 
318
+ #: src/text_content.py:106
319
  msgid ""
320
  "**If a request should be reviewed or dropped submit its id here/ إذا كان يجب "
321
  "مراجعة أو حذف طلب، أدخل رقمه هنا:**"
 
342
  msgstr ""
343
 
344
  #: src/utils.py:28 src/utils.py:29 src/utils.py:57 src/utils.py:58
345
+ #: src/utils.py:67 src/markers.py:26
 
346
  msgid ","
347
  msgstr ""
348
 
 
350
  msgid "Add a latlng column to the dataframe"
351
  msgstr ""
352
 
353
+ #: src/utils.py:44 src/utils.py:46 src/markers.py:81 src/markers.py:87
354
+ #: src/markers.py:98 src/markers.py:133 src/markers.py:147 src/markers.py:193
355
+ #: src/markers.py:209
356
  msgid "latlng"
357
  msgstr ""
358
 
 
427
  msgid "50 to 100 km - Moderate risk area | منطقة خطر معتدلة"
428
  msgstr ""
429
 
430
+ #: src/utils.py:98 src/markers.py:8 src/markers.py:188
431
  msgid "orange"
432
  msgstr ""
433
 
 
483
  msgid "#0046C8"
484
  msgstr ""
485
 
486
+ #: src/utils.py:140 src/utils.py:144 src/markers.py:54 src/markers.py:109
487
  msgid "Done ✅"
488
  msgstr ""
489
 
 
491
  msgid "Planned ⏳"
492
  msgstr ""
493
 
494
+ #: src/utils.py:142 src/utils.py:146 src/markers.py:58
495
  msgid "Partial 📝"
496
  msgstr ""
497
 
498
+ #: src/utils.py:145 src/markers.py:50 src/markers.py:106
499
  msgid "Planned ⌛"
500
  msgstr ""
501
 
 
511
  msgid "Low Emergency 🟡"
512
  msgstr ""
513
 
514
+ #: src/utils.py:158 src/markers.py:189
515
  msgid "High"
516
  msgstr ""
517
 
518
+ #: src/utils.py:159 src/markers.py:188
519
  msgid "Medium"
520
  msgstr ""
521
 
522
+ #: src/utils.py:160 src/markers.py:187 src/markers.py:220
523
  msgid "Low"
524
  msgstr ""
525
 
 
712
  msgid "إغاثة"
713
  msgstr ""
714
 
715
+ #: src/markers.py:7 src/markers.py:107 src/markers.py:110 src/markers.py:189
716
  msgid "red"
717
  msgstr ""
718
 
 
724
  msgid "مأوى"
725
  msgstr ""
726
 
727
+ #: src/markers.py:9 src/markers.py:177 src/markers.py:187 src/markers.py:234
728
  msgid "beige"
729
  msgstr ""
730
 
 
748
  msgid "bell"
749
  msgstr ""
750
 
751
+ #: src/markers.py:16 src/markers.py:107 src/markers.py:110
752
  msgid "heart"
753
  msgstr ""
754
 
 
764
  msgid "Warning"
765
  msgstr ""
766
 
767
+ #: src/markers.py:34
 
 
 
 
768
  msgid "Display NGO interventions on the map"
769
  msgstr ""
770
 
771
+ #: src/markers.py:39
 
 
 
 
 
 
 
 
772
  msgid "Intervention prévue dans le futur / Planned future intervention"
773
  msgstr ""
774
 
775
+ #: src/markers.py:43 src/filters.py:52
776
  msgid "Partiellement satisfait / Partially Served"
777
  msgstr ""
778
 
779
+ #: src/markers.py:49 src/markers.py:107
780
  msgid "pink"
781
  msgstr ""
782
 
783
+ #: src/markers.py:51 src/filters.py:51
784
  msgid "Critique, Besoin d'aide en urgence / Critical, in urgent need of help"
785
  msgstr ""
786
 
787
+ #: src/markers.py:53 src/markers.py:110
788
  msgid "green"
789
  msgstr ""
790
 
791
+ #: src/markers.py:57
792
  msgid "darkgreen"
793
  msgstr ""
794
 
795
+ #: src/markers.py:68
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
796
  #, python-brace-format
797
  msgid ""
798
  "\n"
799
+ " <b>Date:</b> {date}<br>\n"
800
+ " <b>City:</b> {city}<br>\n"
801
+ " <b>Intervention Status:</b> {status}<br>\n"
802
+ " <b>Village Status:</b> {village_status}<br>\n"
803
  " <b>Org:</b> {org}<br>\n"
804
+ " <b>Intervention:</b> {intervention_type}<br>\n"
 
 
 
 
 
 
 
 
 
 
 
 
805
  " <b>Population:</b> {population}<br>\n"
806
+ " <b>Road State:</b> {road_state}<br>\n"
807
+ " <b>Details:</b> {details}<br>\n"
808
+ " <b>Contact:</b> {contact}<br>\n"
809
  " "
810
  msgstr ""
811
 
812
+ #: src/markers.py:102
813
  msgid "Planned"
814
  msgstr ""
815
 
816
+ #: src/markers.py:107 src/markers.py:110 src/markers.py:177 src/markers.py:234
817
  msgid "glyphicon"
818
  msgstr ""
819
 
820
+ #: src/markers.py:120
821
  #, python-brace-format
822
  msgid ""
823
  "\n"
 
832
  " "
833
  msgstr ""
834
 
835
+ #: src/markers.py:143
836
  msgid "Display victim requests on the map"
837
  msgstr ""
838
 
839
+ #: src/markers.py:145 src/dataframes.py:37
840
  msgid "ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)"
841
  msgstr ""
842
 
843
+ #: src/markers.py:148
844
  #, python-brace-format
845
  msgid "https://maps.google.com/?q={long_lat}"
846
  msgstr ""
847
 
848
+ #: src/markers.py:155
849
  msgid ""
850
  "\n"
851
  " <b>Request Type:</b> {request_type}<br>\n"
 
859
  " "
860
  msgstr ""
861
 
862
+ #: src/markers.py:165 src/markers.py:219
863
  msgid "list"
864
  msgstr ""
865
 
866
+ #: src/markers.py:172 src/markers.py:173
867
  msgid " لأي جماعة / قيادة / دوار تنتمون ؟"
868
  msgstr ""
869
 
870
+ #: src/markers.py:183
871
  msgid "Display verified victim requests on the map"
872
  msgstr ""
873
 
874
+ #: src/markers.py:197 src/markers.py:198 src/dataframes.py:40
875
  msgid "Help Details"
876
  msgstr ""
877
 
878
+ #: src/markers.py:200
879
  #, python-brace-format
880
  msgid "<b>Request Type:</b> {request_type}<br>"
881
  msgstr ""
882
 
883
+ #: src/markers.py:201 src/markers.py:223
884
  msgid "Location Details"
885
  msgstr ""
886
 
887
+ #: src/markers.py:202
888
  #, python-brace-format
889
  msgid "<b>Location:</b> {val}<br>"
890
  msgstr ""
891
 
892
+ #: src/markers.py:203 src/markers.py:220
893
  msgid "Emergency Degree"
894
  msgstr ""
895
 
896
+ #: src/markers.py:204
897
  #, python-brace-format
898
  msgid "<b>Emergency Degree:</b> {val}<br>"
899
  msgstr ""
900
 
901
+ #: src/markers.py:205
902
  msgid "Verification Date"
903
  msgstr ""
904
 
905
+ #: src/markers.py:206
906
  #, python-brace-format
907
  msgid "<b>Verification Date:</b> {val}<br>"
908
  msgstr ""
909
 
910
+ #: src/markers.py:207 src/markers.py:216 src/dataframes.py:33
911
+ #: src/dataframes.py:34 src/dataframes.py:89
912
  msgid "id"
913
  msgstr ""
914
 
915
+ #: src/markers.py:208
916
  #, python-brace-format
917
  msgid "<b>Id:</b> {val}<br>"
918
  msgstr ""
919
 
920
+ #: src/markers.py:210
921
  #, python-brace-format
922
  msgid "https://maps.google.com/?q={val}"
923
  msgstr ""
924
 
925
+ #: src/markers.py:212
926
  #, python-brace-format
927
  msgid ""
928
  "<a href=\"{maps_url}\" target=\"_blank\" rel=\"noopener "
929
  "noreferrer\"><b>Google Maps</b></a><br>"
930
  msgstr ""
931
 
932
+ #: src/markers.py:217
933
  msgid ""
934
  "<a href='https://docs.google.com/forms/d/"
935
  "e/1FAIpQLSdyAcOAULumk4A1DsfrwUsGdZ-9G5xOUuD3vHdQOp3nGNAZXw/viewform?"
 
938
  "solved</b></a><br>"
939
  msgstr ""
940
 
941
+ #: src/components.py:8
942
  msgid "Id review submission form"
943
  msgstr ""
944
 
945
+ #: src/components.py:10
946
  msgid "🔍 Review of requests | مراجعة طلب مساعدة"
947
  msgstr ""
948
 
949
+ #: src/components.py:13
950
  msgid "Enter id / أدخل الرقم"
951
  msgstr ""
952
 
953
+ #: src/components.py:14
954
  msgid "Explain why / أدخل سبب المراجعة"
955
  msgstr ""
956
 
957
+ #: src/components.py:15
958
  msgid "Submit / أرسل"
959
  msgstr ""
960
 
961
+ #: src/components.py:17
962
  msgid "Please enter a reason / الرجاء إدخال سبب"
963
  msgstr ""
964
 
965
+ #: src/components.py:19
966
  msgid ""
967
  "review_id_{id_to_review}_{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.txt"
968
  msgstr ""
969
 
970
+ #: src/components.py:20
971
  msgid "w"
972
  msgstr ""
973
 
974
+ #: src/components.py:21
975
  #, python-brace-format
976
  msgid "id: {id_to_review}, explanation: {reason_for_review}\n"
977
  msgstr ""
978
 
979
+ #: src/components.py:25
980
  msgid "nt3awnou/review_requests"
981
  msgstr ""
982
 
983
+ #: src/components.py:26
984
  msgid "dataset"
985
  msgstr ""
986
 
987
+ #: src/components.py:28
988
  msgid ""
989
  "Submitted at https://huggingface.co/datasets/nt3awnou/review_requests/ تم "
990
  "الإرسال"
991
  msgstr ""
992
 
993
+ #: src/components.py:32
994
  msgid "💻 For Developers only, embed code for the map"
995
  msgstr ""
996
 
997
+ #: src/components.py:34
998
  msgid ""
999
  "\n"
1000
  " <iframe id=\"nt3awnou-map\"\n"
 
1013
  " "
1014
  msgstr ""
1015
 
1016
+ #: src/components.py:47
1017
  msgid "html"
1018
  msgstr ""
1019
 
1020
+ #: src/components.py:57
1021
  msgid "# Number of help requests"
1022
  msgstr ""
1023
 
1024
+ #: src/components.py:62
1025
  msgid "# Number of interventions"
1026
  msgstr ""
1027
 
1028
+ #: src/components.py:67
1029
  msgid "# Number of solved requests"
1030
  msgstr ""
1031
 
1032
+ #: src/components.py:71
1033
+ msgid "📝 شرح منصة نتعاونو"
1034
+ msgstr ""
1035
+
1036
+ #: src/components.py:76
1037
  msgid "# عدد طلبات المساعدة"
1038
  msgstr ""
1039
 
1040
+ #: src/components.py:81
1041
  msgid "# عدد التدخلات"
1042
  msgstr ""
1043
 
1044
+ #: src/components.py:86
1045
  msgid "# عدد الطلبات المستجاب لها"
1046
  msgstr ""
1047
 
1048
+ #: src/components.py:94
1049
  msgid "# Nombre de demandes d'aide"
1050
  msgstr ""
1051
 
1052
+ #: src/components.py:99
1053
  msgid "# Nombre d'interventions"
1054
  msgstr ""
1055
 
1056
+ #: src/components.py:104
1057
  msgid "# Nombre de demandes résolues"
1058
  msgstr ""
1059
 
1060
+ #: src/components.py:109
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1061
  msgid "📝 **Donations**"
1062
  msgstr ""
1063
 
1064
+ #: src/components.py:112
1065
  msgid ""
1066
  "\n"
1067
  " <div style=\"text-align: center;\">\n"
 
1078
  " "
1079
  msgstr ""
1080
 
1081
+ #: src/components.py:128
1082
  msgid ""
1083
  "\n"
1084
  " <div style=\"text-align: center;\">\n"
 
1095
  " "
1096
  msgstr ""
1097
 
1098
+ #: src/components.py:145
1099
  msgid ""
1100
  "\n"
1101
  " <div style=\"text-align: center;\">\n"
 
1172
  msgid "Choose status"
1173
  msgstr ""
1174
 
 
 
 
 
1175
  #: src/dataframes.py:7
1176
+ msgid ""
1177
+ "https://docs.google.com/spreadsheets/"
1178
+ "d/1PXcAtI5L95hHSXAiRl3Y4v5O4coG39S86OTfBEcvLTE/edit#gid=0"
 
 
1179
  msgstr ""
1180
 
1181
  #: src/dataframes.py:9
1182
+ msgid ""
1183
+ "https://docs.google.com/spreadsheets/"
1184
+ "d/1gYoBBiBo1L18IVakHkf3t1fOGvHWb23loadyFZUeHJs/edit#gid=966953708"
1185
  msgstr ""
1186
 
1187
+ #: src/dataframes.py:11
1188
+ msgid ""
1189
+ "https://docs.google.com/spreadsheets/"
1190
+ "d/1eXOTqunOWWP8FRdENPs4cU9ulISm4XZWYJJNR1-SrwY/edit#gid=2089222765"
1191
  msgstr ""
1192
 
1193
+ #: src/dataframes.py:13
1194
  msgid "data/regions.json"
1195
  msgstr ""
1196
 
1197
+ #: src/dataframes.py:20 src/dataframes.py:22
1198
  msgid "Automatic Extracted Coordinates"
1199
  msgstr ""
1200
 
1201
+ #: src/dataframes.py:26 src/dataframes.py:27
1202
  msgid "Status"
1203
  msgstr ""
1204
 
1205
+ #: src/dataframes.py:58
1206
  msgid "Display the dataframe in a table"
1207
  msgstr ""
1208
 
1209
+ #: src/dataframes.py:65
1210
  msgid "🔍 Search for information / بحث عن المعلومات"
1211
  msgstr ""
1212
 
1213
+ #: src/dataframes.py:65
1214
  #, python-brace-format
1215
  msgid "query_{df_hash}"
1216
  msgstr ""
1217
 
1218
+ #: src/dataframes.py:69
1219
  msgid "🔍 Search for an id / بحث عن رقم"
1220
  msgstr ""
1221
 
1222
+ #: src/dataframes.py:74
1223
  #, python-brace-format
1224
  msgid "id_{df_hash}"
1225
  msgstr ""
1226
 
1227
+ #: src/dataframes.py:78
1228
  msgid "🗓️ Status / حالة"
1229
  msgstr ""
1230
 
1231
+ #: src/dataframes.py:78
1232
  msgid "all / الكل"
1233
  msgstr ""
1234
 
1235
+ #: src/dataframes.py:78 src/dataframes.py:95
1236
  msgid "Done / تم"
1237
  msgstr ""
1238
 
1239
+ #: src/dataframes.py:78 src/dataframes.py:98
1240
  msgid "Planned / مخطط لها"
1241
  msgstr ""
1242
 
1243
+ #: src/dataframes.py:78
1244
  #, python-brace-format
1245
  msgid "status_{df_hash}"
1246
  msgstr ""
1247
 
1248
+ #: src/dataframes.py:94
1249
+ msgid ""
1250
+ "Pouvez-vous nous préciser si vous êtes déjà intervenus ou si vous prévoyez "
1251
+ "de le faire | Tell us if you already made the intervention, or if you're "
1252
+ "planning to do it"
1253
  msgstr ""
1254
 
1255
+ #: src/dataframes.py:96 src/dataframes.py:99
1256
  msgid "Intervention déjà passée / Past intevention"
1257
  msgstr ""
1258
 
1259
+ #: src/dataframes.py:105
1260
  #, python-brace-format
1261
  msgid ""
1262
  "To view the full Google Sheet for advanced filtering go to: {data_url} "
1263
  "**لعرض الورقة كاملة، اذهب إلى**"
1264
  msgstr ""
1265
 
1266
+ #: src/dataframes.py:110
1267
  msgid ""
1268
  "We are hiding contact information to protect the privacy of the victims. If "
1269
  "you are an NGO and want to contact the victims, please contact us at "
1270
1271
  msgstr ""
1272
 
1273
+ #: src/dataframes.py:113
1274
  msgid ""
1275
  "\n"
1276
  " <div style=\"text-align: left;\">\n"
requirements.txt CHANGED
@@ -1,3 +1,2 @@
1
- folium==0.14.0
2
- streamlit_folium
3
- plotly
 
1
+ folium
2
+ streamlit_folium
 
src/components.py CHANGED
@@ -2,22 +2,7 @@ import streamlit as st
2
  from datetime import datetime
3
  from huggingface_hub import HfApi
4
  from src.text_content import REVIEW_TEXT, INTRO_TEXT_AR, INTRO_TEXT_EN, INTRO_TEXT_FR
5
- from src.dataframes import INTERVENTIONS_PROCESSED_URL, VERIFIED_REQUESTS_PROCESSED_URL
6
- from src.utils import parse_gg_sheet
7
 
8
- import plotly.express as px
9
-
10
- PIE_CHART_COLOR_MAP = {
11
- "REFUGE / SHELTER": "#83C9FD",
12
- "COUVERTURES / COVERS": "#FFABAB",
13
- "OTHER": "#7FEFA5",
14
- "SECOURS / RESCUE": "#FFD171",
15
- "KITCHEN TOOLS / USTENSILES DE CUISINE": "#FF8718",
16
- "ALIMENTATION ET EAU / FOOD AND WATER": "#0068C7",
17
- "ASSISTANCE MÉDICALE / MEDICAL ASSISTANCE": "#2CB09E",
18
- "VÊTEMENTS / CLOTHES": "#FF2B2B",
19
- "PHARMACEUTICALS / MEDICAMENTS": "#6D40BD"
20
- }
21
 
22
  def id_review_submission(api: HfApi):
23
  """Id review submission form"""
@@ -63,14 +48,11 @@ def show_embed_code():
63
  )
64
 
65
 
66
- def show_dataframes_metrics(len_requests, len_interventions, len_solved_verified_requests, lang, show_col_3=False):
67
  if lang == "en":
68
  # with st.expander("📝 Nt3awnou Platform Description"):
69
  st.markdown(INTRO_TEXT_EN, unsafe_allow_html=True)
70
- if show_col_3:
71
- col1, col2, col3 = st.columns([1, 1, 1])
72
- else:
73
- col1, col2 = st.columns([1, 1])
74
  with col1:
75
  st.metric(
76
  "# Number of help requests",
@@ -81,19 +63,15 @@ def show_dataframes_metrics(len_requests, len_interventions, len_solved_verified
81
  "# Number of interventions",
82
  len_interventions + len_solved_verified_requests,
83
  )
84
- if show_col_3:
85
- with col3:
86
- st.metric(
87
- "# Number of solved requests",
88
- len_solved_verified_requests,
89
- )
90
  elif lang == "ar":
91
  # with st.expander("📝 شرح منصة نتعاونو"):
92
  st.markdown(INTRO_TEXT_AR, unsafe_allow_html=True)
93
- if show_col_3:
94
- col1, col2, col3 = st.columns([1, 1, 1])
95
- else:
96
- col1, col2 = st.columns([1, 1])
97
  with col1:
98
  st.metric(
99
  "# عدد طلبات المساعدة",
@@ -104,19 +82,15 @@ def show_dataframes_metrics(len_requests, len_interventions, len_solved_verified
104
  "# عدد التدخلات",
105
  len_interventions + len_solved_verified_requests,
106
  )
107
- if show_col_3:
108
- with col3:
109
- st.metric(
110
- "# عدد الطلبات المستجاب لها",
111
- len_solved_verified_requests,
112
- )
113
  elif lang == "fr":
114
  # with st.expander("📝 Description de la plateforme Nt3awnou"):
115
  st.markdown(INTRO_TEXT_FR, unsafe_allow_html=True)
116
- if show_col_3:
117
- col1, col2, col3 = st.columns([1, 1, 1])
118
- else:
119
- col1, col2 = st.columns([1, 1])
120
  with col1:
121
  st.metric(
122
  "# Nombre de demandes d'aide",
@@ -127,91 +101,15 @@ def show_dataframes_metrics(len_requests, len_interventions, len_solved_verified
127
  "# Nombre d'interventions",
128
  len_interventions + len_solved_verified_requests,
129
  )
130
- if show_col_3:
131
- with col3:
132
- st.metric(
133
- "# Nombre de demandes résolues",
134
- len_solved_verified_requests,
135
- )
136
-
137
-
138
- @st.cache_data(ttl=60 * 60 * 24)
139
- def cached_parse_gg_sheet(url):
140
- return parse_gg_sheet(url)
141
-
142
-
143
- def show_charts():
144
- st.subheader(_("📊 **Charts**"))
145
- col1, col2 = st.columns([1, 1])
146
-
147
- # interventions_categories
148
- interventions_processed_df = cached_parse_gg_sheet(INTERVENTIONS_PROCESSED_URL)
149
- supply_data = (
150
- interventions_processed_df["supplies_category"]
151
- .str.split(",")
152
- .explode()
153
- .str.strip("[] '")
154
- .dropna()
155
- .astype("category")
156
- )
157
- interv_fig = px.pie(supply_data, names="supplies_category", color='supplies_category', color_discrete_map=PIE_CHART_COLOR_MAP)
158
- interv_fig.update_layout(
159
- autosize=True,
160
- legend=dict(
161
- orientation="h",
162
- # entrywidth=40,
163
- yanchor="bottom",
164
- y=1.02,
165
- xanchor="right",
166
- x=1,
167
- font=dict(
168
- # family="Courier",
169
- # size=10,
170
- # color="black"
171
- ),
172
- itemwidth=100,
173
- ),
174
- )
175
- with col1:
176
- st.subheader(_("Supplies Categories"))
177
- st.plotly_chart(interv_fig, use_container_width=True)
178
-
179
- # requests_categories
180
- requests_processed_df = cached_parse_gg_sheet(VERIFIED_REQUESTS_PROCESSED_URL)
181
- need_data = (
182
- requests_processed_df["need_category"].str.split(",").explode().str.strip("[] '").dropna().astype("category")
183
- )
184
- req_fig = px.pie(need_data, names="need_category", color='need_category', color_discrete_map=PIE_CHART_COLOR_MAP)
185
- req_fig.update_layout(
186
- autosize=True,
187
- legend=dict(
188
- orientation="h",
189
- # entrywidth=40,
190
- yanchor="bottom",
191
- y=1.02,
192
- xanchor="right",
193
- x=1,
194
- font=dict(
195
- # family="Courier",
196
- # size=10,
197
- # color="black"
198
- ),
199
- itemwidth=100,
200
- ),
201
- )
202
- with col2:
203
- st.subheader(_("Needs Categories"))
204
- st.plotly_chart(req_fig, use_container_width=True)
205
-
206
 
207
  def show_donations(lang):
208
  st.subheader(_("📝 **Donations**"))
209
  if lang == "en":
210
- st.markdown(
211
- """
212
- <b>Notice:</b> We are not responsible for the donations collection. This is the official bank account dedicated to tackle the consequences of the earthquake.""",
213
- unsafe_allow_html=True,
214
- )
215
  st.markdown(
216
  """
217
  <div style="text-align: center;">
@@ -228,12 +126,6 @@ def show_donations(lang):
228
  unsafe_allow_html=True,
229
  )
230
  elif lang == "ar":
231
- st.markdown(
232
- """
233
- <b>ملاحظة:</b> نحن لسنا مسؤولين عن جمع التبرعات. هذا هو الحساب البنكي الرسمي المخصص لمواجهة عواقب الزلزال.
234
- """,
235
- unsafe_allow_html=True,
236
- )
237
  st.markdown(
238
  """
239
  <div style="text-align: center;">
@@ -251,12 +143,6 @@ def show_donations(lang):
251
  unsafe_allow_html=True,
252
  )
253
  elif lang == "fr":
254
- st.markdown(
255
- """
256
- <b>Remarque:</b> Nous ne sommes pas responsables de la collecte des dons. Ceci est le compte bancaire officiel dédié à la lutte contre les conséquences du séisme.
257
- """,
258
- unsafe_allow_html=True,
259
- )
260
  st.markdown(
261
  """
262
  <div style="text-align: center;">
@@ -271,4 +157,4 @@ def show_donations(lang):
271
  <br>
272
  """,
273
  unsafe_allow_html=True,
274
- )
 
2
  from datetime import datetime
3
  from huggingface_hub import HfApi
4
  from src.text_content import REVIEW_TEXT, INTRO_TEXT_AR, INTRO_TEXT_EN, INTRO_TEXT_FR
 
 
5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
 
7
  def id_review_submission(api: HfApi):
8
  """Id review submission form"""
 
48
  )
49
 
50
 
51
+ def show_dataframes_metrics(len_requests, len_interventions, len_solved_verified_requests, lang):
52
  if lang == "en":
53
  # with st.expander("📝 Nt3awnou Platform Description"):
54
  st.markdown(INTRO_TEXT_EN, unsafe_allow_html=True)
55
+ col1, col2, col3 = st.columns([1, 1, 1])
 
 
 
56
  with col1:
57
  st.metric(
58
  "# Number of help requests",
 
63
  "# Number of interventions",
64
  len_interventions + len_solved_verified_requests,
65
  )
66
+ with col3:
67
+ st.metric(
68
+ "# Number of solved requests",
69
+ len_solved_verified_requests,
70
+ )
 
71
  elif lang == "ar":
72
  # with st.expander("📝 شرح منصة نتعاونو"):
73
  st.markdown(INTRO_TEXT_AR, unsafe_allow_html=True)
74
+ col1, col2, col3 = st.columns([1, 1, 1])
 
 
 
75
  with col1:
76
  st.metric(
77
  "# عدد طلبات المساعدة",
 
82
  "# عدد التدخلات",
83
  len_interventions + len_solved_verified_requests,
84
  )
85
+ with col3:
86
+ st.metric(
87
+ "# عدد الطلبات المستجاب لها",
88
+ len_solved_verified_requests,
89
+ )
 
90
  elif lang == "fr":
91
  # with st.expander("📝 Description de la plateforme Nt3awnou"):
92
  st.markdown(INTRO_TEXT_FR, unsafe_allow_html=True)
93
+ col1, col2, col3 = st.columns([1, 1, 1])
 
 
 
94
  with col1:
95
  st.metric(
96
  "# Nombre de demandes d'aide",
 
101
  "# Nombre d'interventions",
102
  len_interventions + len_solved_verified_requests,
103
  )
104
+ with col3:
105
+ st.metric(
106
+ "# Nombre de demandes résolues",
107
+ len_solved_verified_requests,
108
+ )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
109
 
110
  def show_donations(lang):
111
  st.subheader(_("📝 **Donations**"))
112
  if lang == "en":
 
 
 
 
 
113
  st.markdown(
114
  """
115
  <div style="text-align: center;">
 
126
  unsafe_allow_html=True,
127
  )
128
  elif lang == "ar":
 
 
 
 
 
 
129
  st.markdown(
130
  """
131
  <div style="text-align: center;">
 
143
  unsafe_allow_html=True,
144
  )
145
  elif lang == "fr":
 
 
 
 
 
 
146
  st.markdown(
147
  """
148
  <div style="text-align: center;">
 
157
  <br>
158
  """,
159
  unsafe_allow_html=True,
160
+ )
src/data_analysis.py DELETED
@@ -1,242 +0,0 @@
1
- """
2
- This file contains some functions used to analyze the data from requests and interventions.
3
- """
4
-
5
- import re
6
- import datetime as dt
7
- import pandas as pd
8
- import plotly.express as px
9
- import plotly.graph_objects as go
10
- from torch import Tensor
11
- from transformers import AutoModel, AutoTokenizer
12
- import torch.nn.functional as F
13
-
14
-
15
- SUPPLIES_TAGS = {
16
- 'alimentation': 'ALIMENTATION ET EAU / FOOD AND WATER / الغذاء والماء',
17
- 'eau': 'ALIMENTATION ET EAU / FOOD AND WATER / الغذاء والماء',
18
- 'food': 'ALIMENTATION ET EAU / FOOD AND WATER / الغذاء والماء',
19
- 'water': 'ALIMENTATION ET EAU / FOOD AND WATER / الغذاء والماء',
20
- 'nourriture': 'ALIMENTATION ET EAU / FOOD AND WATER / الغذاء والماء',
21
- 'medical': 'ASSISTANCE MÉDICALE / MEDICAL ASSISTANCE / المساعدة الطبية',
22
- 'médical': 'ASSISTANCE MÉDICALE / MEDICAL ASSISTANCE / المساعدة الطبية',
23
- 'doctor': 'ASSISTANCE MÉDICALE / MEDICAL ASSISTANCE / المساعدة الطبية',
24
- 'vêtements': 'VÊTEMENTS / CLOTHES / الملابس',
25
- 'clothes': 'VÊTEMENTS / CLOTHES / الملابس',
26
- 'secours': 'SECOURS / RESCUE / الإنقاذ',
27
- 'rescue': 'SECOURS / RESCUE / الإنقاذ',
28
- 'refuge': 'REFUGE / SHELTER / المأوى',
29
- 'shelter': 'REFUGE / SHELTER / المأوى',
30
- 'couvertures': 'COUVERTURES / COVERS / البطانيات',
31
- 'covers': 'COUVERTURES / COVERS / البطانيات',
32
- 'pharmaceuticals': 'PHARMACEUTICALS / MEDICAMENTS / الأدوية',
33
- 'medicaments': 'PHARMACEUTICALS / MEDICAMENTS / الأدوية',
34
- 'pharmacy': 'PHARMACEUTICALS / MEDICAMENTS / الأدوية',
35
- 'medicine': 'PHARMACEUTICALS / MEDICAMENTS / الأدوية',
36
- 'blankets': 'COUVERTURES / COVERS / البطانيات',
37
- 'tents': 'REFUGE / SHELTER / المأوى',
38
- 'couches': 'PHARMACEUTICALS / MEDICAMENTS / الأدوية'
39
- }
40
-
41
- SUPPLIES_NEEDS_CATEGORIES = ['ALIMENTATION ET EAU / FOOD AND WATER / الغذاء والماء',
42
- 'ASSISTANCE MÉDICALE / MEDICAL ASSISTANCE / المساعدة الطبية',
43
- 'VÊTEMENTS / CLOTHES / الملابس',
44
- 'SECOURS / RESCUE / الإنقاذ',
45
- 'REFUGE / SHELTER / المأوى',
46
- 'COUVERTURES / COVERS / البطانيات',
47
- # 'KITCHEN TOOLS / USTENSILES DE CUISINE / أدوات المطبخ',
48
- 'PHARMACEUTICALS / MEDICAMENTS / الأدوية',
49
- 'OTHER']
50
-
51
- TRANSLATION_DICT = {
52
- 'أغطية': 'covers',
53
- 'أسرة': 'beds',
54
- 'وسادات': 'pillows',
55
- 'مصابح': 'lamps',
56
- 'خيام': 'tents',
57
- 'ألعاب أطفال': 'toys',
58
- 'قليل من المواد الغذائية': 'food',
59
- 'افرشة': 'covers',
60
- 'جلباب': 'clothes',
61
- 'ملابس': 'clothes',
62
- 'لديهم كل شيء': 'unknown'
63
- }
64
-
65
-
66
- def clean_text(text):
67
- """
68
- remove special characters from text
69
- """
70
- pattern = re.compile(r'[\u200e\xa0()\u200f]')
71
- cleaned_text = pattern.sub('', text)
72
- return cleaned_text
73
-
74
-
75
- def contains_arabic(text):
76
- """
77
- check if the text contains arabic characters
78
- """
79
- arabic_pattern = re.compile(r'[\u0600-\u06FF]+')
80
- if type(text)!=str:
81
- return False
82
- return arabic_pattern.search(text) is not None
83
-
84
-
85
- def arabic_to_latin_punctuation(text):
86
- """
87
- replace arabic punctuation with latin punctuation
88
- """
89
- punctuation_mapping = {
90
- '،': ',',
91
- '؛': ';',
92
- 'ـ': '_',
93
- '؟': '?',
94
- '٪': '%',
95
- '٫': '.',
96
- }
97
-
98
- for arabic_punct, latin_punct in punctuation_mapping.items():
99
- text = text.replace(arabic_punct, latin_punct)
100
-
101
- return text
102
-
103
-
104
- def plot_timeline(df: pd.DataFrame, today: dt.datetime, date_col: str):
105
- """Plot the timeline of requests and interventions.
106
- """
107
- df_past = df[df[date_col]<=today.date()]
108
- df_future = df[df[date_col]>today.date()]
109
-
110
- count_past = (df_past
111
- .groupby(date_col)
112
- .size()
113
- .rename('count')
114
- .reset_index())
115
- past_date_range = pd.date_range(start=min(count_past[date_col]),
116
- end=today.date(),
117
- freq='D')
118
- count_past = (count_past
119
- .set_index(date_col)
120
- .reindex(past_date_range, fill_value=0)
121
- .reset_index())
122
-
123
- if len(df_future)>0:
124
- count_future = df_future.groupby(date_col).size().rename('count').reset_index()
125
- future_date_range = pd.date_range(start=today.date()+dt.timedelta(days=1),
126
- end=max(count_future[date_col]),
127
- freq='D')
128
- count_future = (count_future
129
- .set_index(date_col)
130
- .reindex(future_date_range, fill_value=0)
131
- .reset_index())
132
- else:
133
- count_future = pd.DataFrame()
134
-
135
- bridge_date = today.date()
136
- bridge_data = pd.DataFrame(
137
- {'index': bridge_date, 'form_date':count_past.iloc[-1]['count']}, index=[0])
138
- count_future = pd.concat([bridge_data, count_future], ignore_index=True)
139
-
140
- # Plot
141
- fig = go.Figure()
142
- # past
143
- fig.add_trace(go.Scatter(x=count_past['index'],
144
- y=count_past['count'],
145
- mode='lines',
146
- name='Past Interventions',
147
- line=dict(color='blue')))
148
- # future
149
- fig.add_trace(go.Scatter(x=count_future['index'],
150
- y=count_future['count'],
151
- mode='lines',
152
- name='Future Interventions',
153
- line=dict(color='orange')))
154
-
155
- fig.add_vline(x=today.date(), line_dash="dash", line_color="black")
156
-
157
- fig.update_layout(yaxis_title="#", xaxis_title='date')
158
- return fig
159
-
160
-
161
- def classify_supplies_rule_based(text: pd.DataFrame, keep_raw: bool = False):
162
- """ Classifies text into supplies categories from SUPPLIES_TAGS
163
- using a rule-based approach."""
164
- classes = []
165
- lowercase_text = text.lower() # case-insensitive matching
166
-
167
- for keyword, category in SUPPLIES_TAGS.items():
168
- if keyword in lowercase_text:
169
- classes.append(category)
170
-
171
- if keep_raw:
172
- classes.append(lowercase_text)
173
-
174
- elif not classes:
175
- classes.append('OTHER')
176
-
177
- return list(set(classes))
178
-
179
-
180
- def classify_multilingual_field_e5(df: pd.DataFrame,
181
- field_to_tag: str = 'supplies',
182
- categories: list = SUPPLIES_NEEDS_CATEGORIES):
183
- """
184
- Tag supplies/requests into categories using multilingual-e5-large model.
185
- Returns a dataframe with a new column containing the list of predicted categories.
186
- Requires CUDA
187
- """
188
- def average_pool(last_hidden_states: Tensor, attention_mask: Tensor) -> Tensor:
189
- last_hidden = last_hidden_states.masked_fill(
190
- ~attention_mask[..., None].bool(), 0.0)
191
- return last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None]
192
-
193
- tokenizer = AutoTokenizer.from_pretrained('intfloat/multilingual-e5-large')
194
- model = AutoModel.from_pretrained('intfloat/multilingual-e5-large')
195
- model.cuda()
196
-
197
- # classify ar supplies
198
- processed_df = df.copy()
199
- values_to_classify = processed_df[field_to_tag]
200
-
201
- mapped_inputs = dict()
202
-
203
- for text in values_to_classify:
204
- gt = [f"{s}" for s in categories]
205
- qr = [f"{v}" for v in re.split("\.|,| و", text)]
206
- input_texts = qr + gt
207
-
208
- # Tokenize the input texts
209
- batch_dict = tokenizer(
210
- input_texts, max_length=512, padding=True, truncation=True, return_tensors='pt')
211
- batch_dict = {k: v.cuda() for k, v in batch_dict.items()}
212
-
213
- outputs = model(**batch_dict)
214
- embeddings = average_pool(outputs.last_hidden_state, batch_dict['attention_mask'])
215
-
216
- # normalize embeddings
217
- embeddings = F.normalize(embeddings, p=2, dim=1)
218
- scores = (embeddings[:len(qr)] @ embeddings[len(qr):].T) * 100
219
-
220
- mapped_inputs[text] = list(
221
- set([categories[int(scores[i,:].argmax())] for i in range(len(qr))]))
222
-
223
- processed_df.loc[values_to_classify.index, f'{field_to_tag}_category'] = list(
224
- mapped_inputs.values())
225
-
226
- return processed_df
227
-
228
-
229
- def plot_categories_share(raw_df: pd.DataFrame,
230
- today: dt.datetime,
231
- field: str = 'supplies'):
232
- """
233
- Plot the share of each category of requests/supplies.
234
- """
235
- df = raw_df[[field, f'{field}_category']].explode(f'{field}_category')
236
- pie_data = df.groupby(f'{field}_category', as_index=False).size().rename('n')
237
- fig = px.pie(pie_data,
238
- names=f'{field}_category',
239
- values='n',
240
- title=f'# per {field} category up till {today.date()}',
241
- labels={f'{field}_category': f'{field}', 'n': '%'})
242
- return fig
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
src/dataframes.py CHANGED
@@ -1,15 +1,17 @@
 
1
  import streamlit as st
2
  from src.utils import add_latlng_col, parse_gg_sheet, parse_json_file, is_request_in_list
3
  import pandas as pd
4
 
5
- VERIFIED_REQUESTS_URL = st.secrets["VERIFIED_REQUESTS_URL"]
6
- REQUESTS_URL = st.secrets["REQUESTS_URL"]
7
- INTERVENTIONS_URL = st.secrets["INTERVENTIONS_URL"]
8
- INTERVENTIONS_PROCESSED_URL = st.secrets["INTERVENTIONS_PROCESSED_URL"]
9
- VERIFIED_REQUESTS_PROCESSED_URL = st.secrets["VERIFIED_REQUESTS_PROCESSED_URL"]
 
 
10
  DOUARS_URL = "data/regions.json"
11
 
12
-
13
  def load_data(show_unverified, selected_options, options):
14
  df = parse_gg_sheet(REQUESTS_URL)
15
  if show_unverified:
@@ -32,9 +34,7 @@ def load_data(show_unverified, selected_options, options):
32
  verified_df["id"] = verified_df.index # Needed to display request id
33
  # keep rows with at least one request in selected_options
34
  filtered_df = df[
35
- df["ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)"].apply(
36
- lambda x: is_request_in_list(x, selected_options, options)
37
- )
38
  ]
39
  filtered_verified_df = verified_df[
40
  verified_df["Help Details"].apply(lambda x: is_request_in_list(x, selected_options, options))
@@ -53,6 +53,7 @@ def load_data(show_unverified, selected_options, options):
53
  )
54
 
55
 
 
56
  def display_dataframe(df, drop_cols, data_url, search_id=True, status=False, for_help_requests=False, show_link=True):
57
  """Display the dataframe in a table"""
58
  col_1, col_2 = st.columns([1, 1])
@@ -116,3 +117,4 @@ def display_dataframe(df, drop_cols, data_url, search_id=True, status=False, for
116
  """,
117
  unsafe_allow_html=True,
118
  )
 
 
1
+
2
  import streamlit as st
3
  from src.utils import add_latlng_col, parse_gg_sheet, parse_json_file, is_request_in_list
4
  import pandas as pd
5
 
6
+ VERIFIED_REQUESTS_URL = (
7
+ "https://docs.google.com/spreadsheets/d/1PXcAtI5L95hHSXAiRl3Y4v5O4coG39S86OTfBEcvLTE/edit#gid=0"
8
+ )
9
+ REQUESTS_URL = "https://docs.google.com/spreadsheets/d/1gYoBBiBo1L18IVakHkf3t1fOGvHWb23loadyFZUeHJs/edit#gid=966953708"
10
+ INTERVENTIONS_URL = (
11
+ "https://docs.google.com/spreadsheets/d/1eXOTqunOWWP8FRdENPs4cU9ulISm4XZWYJJNR1-SrwY/edit#gid=2089222765"
12
+ )
13
  DOUARS_URL = "data/regions.json"
14
 
 
15
  def load_data(show_unverified, selected_options, options):
16
  df = parse_gg_sheet(REQUESTS_URL)
17
  if show_unverified:
 
34
  verified_df["id"] = verified_df.index # Needed to display request id
35
  # keep rows with at least one request in selected_options
36
  filtered_df = df[
37
+ df["ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)"].apply(lambda x: is_request_in_list(x, selected_options, options))
 
 
38
  ]
39
  filtered_verified_df = verified_df[
40
  verified_df["Help Details"].apply(lambda x: is_request_in_list(x, selected_options, options))
 
53
  )
54
 
55
 
56
+
57
  def display_dataframe(df, drop_cols, data_url, search_id=True, status=False, for_help_requests=False, show_link=True):
58
  """Display the dataframe in a table"""
59
  col_1, col_2 = st.columns([1, 1])
 
117
  """,
118
  unsafe_allow_html=True,
119
  )
120
+
src/filters.py CHANGED
@@ -1,9 +1,9 @@
1
- import streamlit as st
2
 
 
3
 
4
  def show_requests_filters():
5
  HEADERS_MAPPING = {
6
- "إغاثة": _("Rescue"),
7
  "مساعدة طبية": _("Medical Assistance"),
8
  "مأوى": _("Shelter"),
9
  "طعام وماء": _("Food & Water"),
@@ -39,10 +39,9 @@ def show_requests_filters():
39
  format_func=lambda x: HEADERS_MAPPING[x],
40
  label_visibility="collapsed",
41
  )
42
-
43
  return selected_options, options, show_unverified, show_interventions
44
 
45
-
46
  def show_interventions_filters():
47
  st.markdown(
48
  _("👉 **State of villages visited by NGOs**"),
 
 
1
 
2
+ import streamlit as st
3
 
4
  def show_requests_filters():
5
  HEADERS_MAPPING = {
6
+ "إغاثة" : _("Rescue"),
7
  "مساعدة طبية": _("Medical Assistance"),
8
  "مأوى": _("Shelter"),
9
  "طعام وماء": _("Food & Water"),
 
39
  format_func=lambda x: HEADERS_MAPPING[x],
40
  label_visibility="collapsed",
41
  )
42
+
43
  return selected_options, options, show_unverified, show_interventions
44
 
 
45
  def show_interventions_filters():
46
  st.markdown(
47
  _("👉 **State of villages visited by NGOs**"),
src/fuzzy_matching.py DELETED
@@ -1,258 +0,0 @@
1
- """
2
- Problem:
3
- Nt3awnou's platform collects raw data filled manually by users (people in need).
4
- Among this data is the user's localisation.
5
- The localisation is a text input that is not standardized:
6
- i.e. a user can input a single or multiple locations
7
- (either douars/provinces/communes/regions or all combined),
8
- in arabic or latin, with misspellings etc.
9
- This doesn't help in visualization or in statistics
10
- where localisations can be redundant because they were written in different manners.
11
-
12
- Examples
13
- ```
14
- دوار تجكَالت
15
- ابرداتن ازكور
16
- خزامة
17
- Tansgharte
18
- دوار امندار
19
- Douar Essour Tidrara Aghwatim Tahnaouet Al Haouz
20
- دوار تكاديرت
21
- Douar Essour tidrara- aghouatine- Tahanaout-El Haouz
22
- ```
23
- Solution:
24
- We collected a reference dataset that contains all douar names (arabic and latin)
25
- with their corresponding regions, communes and provinces.
26
- We developed methods using fuzzy matching and phonetics
27
- to map the user's localisation to the closest match in the reference dataset
28
-
29
- """
30
-
31
- from typing import Tuple
32
- from pyphonetics import RefinedSoundex, Metaphone
33
- import math
34
- import difflib
35
- import re
36
-
37
-
38
- EPICENTER_LOCATION = [31.12210171476489, -8.42945837915193]
39
- certainty_threshold = 1
40
-
41
-
42
- def extract_ngrams(text, n):
43
- """
44
- A function that returns a list of n-grams from a text
45
- """
46
- ngrams = []
47
-
48
- if n < 1 or n > len(text):
49
- return ngrams # Return an empty list if n is invalid
50
-
51
- # Iterate through the text and extract n-grams
52
- for i in range(len(text) - n + 1):
53
- ngram = text[i:i + n]
54
- ngrams.append(' '.join(ngram))
55
-
56
- return ngrams
57
-
58
-
59
- def get_phonetics_distance(w1, w2):
60
- """
61
- A function that calculates levenhstein distance between phonetics
62
- representation of two words: add error term to the score
63
- """
64
- rs = RefinedSoundex()
65
- mt = Metaphone()
66
- d1 = mt.distance(w1, w2, metric='levenshtein')
67
- d2 = rs.distance(w1, w2, metric='levenshtein')
68
- res = (d1 + d2) / 2 + 0.05
69
- return res
70
-
71
-
72
- def get_top_n_phonetics_matches(
73
- w: str, ref_words: list, threshold=1, top_n=1) -> list[Tuple]:
74
- """
75
- A function that returns the top_n closest words to w from ref_words
76
- for which distance <= threshold
77
- using phonetical representation
78
- """
79
- if not w:
80
- return list()
81
- distances = {x: get_phonetics_distance(w, x) for x in ref_words}
82
- selected_words = {x: d for x, d in distances.items() if d<=threshold}
83
- sorted_d = dict(sorted(selected_words.items(), key=lambda item: item[1]))
84
-
85
- return list(sorted_d.items())[:top_n]
86
-
87
-
88
- def get_geometric_distance(lat1: float, lon1: float, lat2: float, lon2: float) -> float:
89
- """
90
- A function that returns the distance between two points on earth
91
- using the haversine formula
92
- """
93
- dlon = math.radians(lon2 - lon1)
94
- dlat = math.radians(lat2 - lat1)
95
- a0 = (math.sin(dlat / 2)) ** 2 + math.cos(math.radians(lat1))
96
- a = a0 * math.cos(math.radians(lat2)) * (math.sin(dlon / 2)) ** 2
97
- c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))
98
- distance = 6371 * c
99
- return distance
100
-
101
-
102
- def are_village_names_similar(village_a: str, village_b: str) -> float:
103
- """
104
- A function that returns True if the two villages
105
- are similar using strict fuzzy matching
106
- """
107
- if difflib.SequenceMatcher(None, village_a, village_b).ratio() >= 0.90:
108
- return True
109
- return False
110
-
111
-
112
- def get_uncertainty_range(input_dict: dict, threshold: float) -> list:
113
- """
114
- A function that returns a list of tuples of the closest matches
115
- """
116
- if len(input_dict)<=1:
117
- return input_dict
118
-
119
- # sort by distance
120
- sorted_items = sorted(input_dict.items(), key=lambda item: item[1][1])
121
- data = {key: value for key, value in sorted_items}
122
-
123
- # Iterate through the keys in the dictionary
124
- keys = list(data.keys())
125
- min_key = keys[0]
126
- min_value = data[min_key][1]
127
-
128
- # Initialize a list to store the result tuples
129
- result = {f"{min_key}":data[min_key]}
130
-
131
- for j in range(1, len(keys)):
132
- key2 = keys[j]
133
- value2 = data[key2][1]
134
-
135
- # Calculate the absolute difference between the float values
136
- difference = abs(min_value - value2)
137
-
138
- # If the difference is less than the threshold, add the tuple to the result
139
- if difference <= threshold:
140
- result[key2] = data[key2]
141
- else:
142
- break
143
-
144
- return result
145
-
146
-
147
- def match_word(w, ref_dict, select_one_match=False):
148
- """
149
- A function that returns the closest match of w from ref_dict
150
- using phonetical representation and fuzzy matching
151
- """
152
- w = w.strip().upper()
153
-
154
- if len(w)==0:
155
- return {}
156
-
157
- else:
158
- closest_ref_w = dict()
159
- use_phonetics = True
160
-
161
- for category, names in ref_dict.items():
162
- # check exact matching
163
- if w in names:
164
- use_phonetics = False
165
- closest_ref_w[category] = (w, 0)
166
- break
167
-
168
- # check textual similarity (fuzzy matching)
169
- sim = list(map(lambda x:are_village_names_similar(w,x), names))
170
- similar_names = [names[i] for i in range(len(names)) if sim[i]==True]
171
- if similar_names:
172
- use_phonetics = False
173
- closest_ref_w[category] = (similar_names[0], 0.01) if select_one_match else list(map(lambda x:(x, 0.01), similar_names))
174
-
175
- # if no similar name was found check phonetical similarity
176
- else:
177
- res = get_top_n_phonetics_matches(w, names, threshold=2, top_n=1)
178
- if res:
179
- closest_ref_w[category] = res[0] # get closest match
180
-
181
- if closest_ref_w and use_phonetics:
182
- if not select_one_match:
183
- closest_ref_w = get_uncertainty_range(closest_ref_w, certainty_threshold)
184
- else:
185
- k, v = min(closest_ref_w.items(), key=lambda x: x[1][1])
186
- closest_ref_w = {k: v}
187
-
188
- return closest_ref_w
189
-
190
-
191
- def parse_and_map_localisation(text: str, ref_dict: dict, select_one_match: bool=True):
192
- """
193
- A function that parses text containing users localisation
194
- and returns the closest matches per categoty from ref_dict
195
- Example:
196
- input = COMMUNE MZODA : DOUARS : TOUKHRIBIN –TLAKEMT - COMMUNE IMINDOUNITE : DOUAR AZARZO
197
- output = {'commune_fr': ('IMINDOUNIT', 0.01), 'nom_fr': ('TOUKHRIBINE', 0.01)}
198
- """
199
- toxic = r"\bدوار|مصلى|\(|\)|douars?|communes?|cercles?|provinces?|villes?|regions?|caidate?|and|جماعة|\b|:|-|\d"
200
- text = re.sub(toxic, '', text.lower())
201
- regex_pattern = r"\|| |\.|,|/|et |و "
202
- tokens = re.split(regex_pattern, text.replace('-', ' '))
203
- filtered_tokens = [s for s in tokens if s.strip() != '']
204
-
205
- ngrams_mapping = {}
206
-
207
- for n in range(1, len(filtered_tokens)+1):
208
-
209
- # generate ngrams
210
- ngrams = extract_ngrams(filtered_tokens, n)
211
-
212
- # init dict with ngram mapping
213
- mapping_ngram = {}
214
-
215
- # generate a mapping for the ngram with argmin matches
216
- for tok in ngrams:
217
- res = match_word(tok, ref_dict, select_one_match=select_one_match)
218
- if not res:
219
- continue
220
-
221
- min_k, min_v = min(res.items(), key=lambda x:x[1][1])
222
-
223
- # if min_k in previous tokens, then choose the min, else add it to mapping
224
- if min_k in mapping_ngram:
225
- saved_match, saved_distance = mapping_ngram[min_k]
226
-
227
- if saved_distance > min_v[1]:
228
- mapping_ngram[min_k] = min_v
229
-
230
- else:
231
- continue
232
-
233
- else:
234
- mapping_ngram[min_k] = min_v
235
-
236
- ngrams_mapping[n] = mapping_ngram
237
-
238
-
239
- # first squeeze dict s.t. one match remains per category
240
- categories = ref_dict.keys()
241
- result = {}
242
- for _, inner_dict in ngrams_mapping.items():
243
- for k in categories:
244
- # Check if the key exists in the inner dictionary
245
- if k in inner_dict:
246
- current_match, current_val = inner_dict[k]
247
- if k in result:
248
- previous_match, previous_val = result[k]
249
- if current_val < previous_val:
250
- result[k] = (current_match, current_val)
251
- else:
252
- result[k] = (current_match, current_val)
253
-
254
- # then, discard matches with a high distance from min (set 0.5+min_d as threshold)
255
- thresh = min(result.values(), key=lambda x:x[1])[1] + 0.5
256
- output = {k: v_d for k, v_d in result.items() if v_d[1]<=thresh}
257
-
258
- return output
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
src/map_utils.py CHANGED
@@ -2,8 +2,7 @@ from branca.element import Template, MacroElement
2
 
3
 
4
  def get_legend_macro(show_unverified):
5
- labels_unverified_requests = _(
6
- """
7
  <li><span style='background:#CE3C28;opacity:0.7;'></span>Rescue</li>
8
  <li><span style='background:#ED922E;opacity:0.7;'></span>Medical Assistance</li>
9
  <li><span style='background:#FFCA92;opacity:0.7;'></span>Shelter</li>
@@ -12,20 +11,17 @@ def get_legend_macro(show_unverified):
12
  <li><span style='background:#6EAA25;opacity:0.7;'></span>Done</li>
13
  <li><span style='background:#023020;opacity:0.7;'></span>Partial</li>
14
  <li><span style='background:#FF91E8;opacity:0.7;'></span>Planned</li>
15
- """
16
- )
17
- labels_verified = _(
18
- """
19
  <li><span style='background:#CE3C28;opacity:0.7;'></span>High Emergency</li>
20
  <li><span style='background:#ED922E;opacity:0.7;'></span>Medium Emergency</li>
21
  <li><span style='background:#FFCA92;opacity:0.7;'></span>Low Emergency</li>
22
  <li><span style='background:#6EAA25;opacity:0.7;'></span>Done</li>
23
  <li><span style='background:#023020;opacity:0.7;'></span>Partial</li>
24
  <li><span style='background:#FF91E8;opacity:0.7;'></span>Planned</li>
25
- """
26
- )
27
 
28
- template_1 = """
29
  {% macro html(this, kwargs) %}
30
 
31
  <!doctype html>
@@ -66,7 +62,7 @@ def get_legend_macro(show_unverified):
66
  <ul class='legend-labels'>
67
 
68
  """
69
- template_2 = """
70
  </ul>
71
  </div>
72
  </div>
@@ -122,11 +118,8 @@ def get_legend_macro(show_unverified):
122
  </style>
123
  {% endmacro %}"""
124
 
125
- legend_macro = MacroElement()
126
- legend_macro._template = Template(
127
- template_1 + (labels_unverified_requests if show_unverified else labels_verified) + template_2
128
- )
129
- return legend_macro
130
-
131
 
132
- __all__ = ["get_legend_macro"]
 
2
 
3
 
4
  def get_legend_macro(show_unverified):
5
+ labels_unverified_requests=_("""
 
6
  <li><span style='background:#CE3C28;opacity:0.7;'></span>Rescue</li>
7
  <li><span style='background:#ED922E;opacity:0.7;'></span>Medical Assistance</li>
8
  <li><span style='background:#FFCA92;opacity:0.7;'></span>Shelter</li>
 
11
  <li><span style='background:#6EAA25;opacity:0.7;'></span>Done</li>
12
  <li><span style='background:#023020;opacity:0.7;'></span>Partial</li>
13
  <li><span style='background:#FF91E8;opacity:0.7;'></span>Planned</li>
14
+ """)
15
+ labels_verified=_("""
 
 
16
  <li><span style='background:#CE3C28;opacity:0.7;'></span>High Emergency</li>
17
  <li><span style='background:#ED922E;opacity:0.7;'></span>Medium Emergency</li>
18
  <li><span style='background:#FFCA92;opacity:0.7;'></span>Low Emergency</li>
19
  <li><span style='background:#6EAA25;opacity:0.7;'></span>Done</li>
20
  <li><span style='background:#023020;opacity:0.7;'></span>Partial</li>
21
  <li><span style='background:#FF91E8;opacity:0.7;'></span>Planned</li>
22
+ """)
 
23
 
24
+ template_1 = """
25
  {% macro html(this, kwargs) %}
26
 
27
  <!doctype html>
 
62
  <ul class='legend-labels'>
63
 
64
  """
65
+ template_2 = """
66
  </ul>
67
  </div>
68
  </div>
 
118
  </style>
119
  {% endmacro %}"""
120
 
121
+ legend_macro = MacroElement()
122
+ legend_macro._template = Template(template_1 + (labels_unverified_requests if show_unverified else labels_verified) + template_2)
123
+ return legend_macro
 
 
 
124
 
125
+ __all__ = ["get_legend_macro"]
src/markers.py CHANGED
@@ -18,8 +18,7 @@ ICON_MAPPING = {
18
  "طعام وماء": "cutlery", # cutlery (fork and knife) for food & water
19
  "مخاطر (تسرب الغاز، تلف في الخدمات العامة...)": "Warning" # warning triangle for dangers
20
  }
21
- def numcol(x):
22
- return ord(x) - ord("A")
23
 
24
  def marker_request(request):
25
  # in case of multiple requests we use the first one for the marker's icon
@@ -83,7 +82,7 @@ def display_interventions(interventions_df, selected_statuses, map_obj, interven
83
  douar_name = row[interventions_df.columns[numcol("M")]]
84
  commune = row[interventions_df.columns[numcol("N")]]
85
  caidat = row[interventions_df.columns[numcol("O")]]
86
- row[interventions_df.columns[numcol("P")]]
87
  accessibility_to_douar = row[interventions_df.columns[numcol("Q")]]
88
  type_of_accessibility = row[interventions_df.columns[numcol("R")]]
89
  population = row[interventions_df.columns[numcol("S")]]
 
18
  "طعام وماء": "cutlery", # cutlery (fork and knife) for food & water
19
  "مخاطر (تسرب الغاز، تلف في الخدمات العامة...)": "Warning" # warning triangle for dangers
20
  }
21
+ numcol = lambda x: ord(x) - ord("A")
 
22
 
23
  def marker_request(request):
24
  # in case of multiple requests we use the first one for the marker's icon
 
82
  douar_name = row[interventions_df.columns[numcol("M")]]
83
  commune = row[interventions_df.columns[numcol("N")]]
84
  caidat = row[interventions_df.columns[numcol("O")]]
85
+ google_maps_link = row[interventions_df.columns[numcol("P")]]
86
  accessibility_to_douar = row[interventions_df.columns[numcol("Q")]]
87
  type_of_accessibility = row[interventions_df.columns[numcol("R")]]
88
  population = row[interventions_df.columns[numcol("S")]]
src/text_content.py CHANGED
@@ -1,6 +1,7 @@
 
1
  INTRO_TEXT_EN = """
2
  <div style="text-align: left;">
3
- Nt3awnou نتعاونو is a non-profit organization and a collaborative platform dedicated to aiding individuals impacted by the recent earthquake in Morocco. Our core mission is to streamline and coordinate timely assistance for everyone affected. How do we achieve this? We assist those in need by allowing them to communicate their location and the specific aid they require, either by completing a form or sending a voice message via WhatsApp to the number <b>0602838166</b>. Once we receive and process this information, it can be viewed in our dashboard, which allows NGOs to organize and precisely target their interventions, ensuring swift assistance reaches those in need. Any organization that has taken initiative in a particular area can notify us by completing a dedicated form. This data is also incorporated into the dashboard so that other NGOs can help affected areas that still haven't received help.
4
  <br>⚠️ Warning : There are still rocks falling down the mountains, making the roads to the affected areas very dangerous. We advise volunteers to donate directly to specialized NGOs.<br>
5
  <br>
6
  <b>✉️ You can contact us via email at </b><a href="mailto:[email protected]">[email protected]</a> or via Instagram <a href="https://www.instagram.com/nt3awnou_morocco/">@nt3awnou_morocco</a> <br>
@@ -14,7 +15,7 @@ INTRO_TEXT_EN = """
14
  INTRO_TEXT_AR = """
15
  <div style="text-align: right;-webkit-rtl-ordering: logical;">
16
 
17
- نتعاونو هي منصة تعاونية غير ربحية لمساعدة الأفراد المتضررين من الزلزال الأخير في المغرب. مهمتنا هي تسهيل تقديم المساعدة في الوقت المناسب و بفاعلية و تنظيم لجميع المتضررين. كيفاش؟ كنعاونو الناس لي محتاجين للمساعدة إعلمونا بمكانهم و نوع المساعدة لي محتاجين ليها سواء عن طريق ملأ الاستمارة أو عن طريق إرسال تسجيل صوتي عبر واتساب إلى رقم مخصص<b>0602838166</b>. بعد معالجة هاد المعلومات، كنجمعوهم فخريطة كتمكن الجمعيات من تنظيم و استهداف تدخلاتهم بدقة باش توصل المساعدة للناس لي محتاجين في وقت أسرع. و كل جمعية قامت باللازم في منطقة معينة تقدر تعلمنا عن طريق ملأ استمارة مخصصة لهاد الأمر. هاد المعلومات كذلك كتضاف للخريطة باش باقي الجمعيات يتاجهو لمناطق أخرى مازال ماوصلاتهم مساعدة.
18
  <br> تحذير : نظرا لخطورة الطرقان بسبب الحجر اللي كيطيح من الجبال، ننصح المتطوعين اللي بغاو ي��اعدو المناطق المتضررة يتبرعو عن طريق الجمعيات المختصة⚠️
19
  <br>
20
  <br>
@@ -27,10 +28,10 @@ INTRO_TEXT_AR = """
27
  </div>
28
  <br>
29
  """
30
-
31
  INTRO_TEXT_FR = """
32
  <div style="text-align: left;">
33
- Nt3awnou نتعاونو est une plateforme collaborative à but non-lucratif dédiée à l'aide aux personnes touchées par le récent tremblement de terre au Maroc. Notre mission principale est de rationaliser et de coordonner une assistance rapide pour toutes les personnes touchées. Comment y parvenons-nous ? Nous aidons les personnes dans le besoin en leur permettant de communiquer leur localisation et l'aide spécifique dont elles ont besoin, soit en remplissant un formulaire, soit en envoyant un message vocal via WhatsApp à un numéro <b>0602838166</b>. Une fois reçues et traitées, ces informations peuvent être consultées dans notre tableau de bord, qui permet aux associations d'organiser et de cibler précisément leurs interventions, afin que l'aide parvienne rapidement à ceux qui en ont besoin. Toute organisation ayant pris une initiative dans une zone particulière peut nous en informer en remplissant un formulaire prévu à cet effet. Ces données sont également intégrées au tableau de bord afin que d'autres associations puissent aider les zones touchées qui n'ont pas encore reçu d'aide.
34
  <br> ⚠️ Avertissement : Il y a encore des chutes de pierres dans les montagnes, ce qui rend les routes vers les zones touchées très dangereuses. Nous conseillons aux volontaires de faire des dons directement aux associations spécialisées.
35
  <br>
36
  <br>
@@ -53,6 +54,7 @@ CREDITS_TEXT = """
53
  <hr>
54
  <div style="text-align: center;">
55
  <p>By <b>Moroccans</b> for <b>Moroccans</b> 🤝</p>
 
56
  <p>Reach out to us at <a href="mailto:[email protected]">[email protected]</a></p>
57
  """
58
 
 
1
+
2
  INTRO_TEXT_EN = """
3
  <div style="text-align: left;">
4
+ Nt3awnou نتعاونو is a non-profit organization and a collaborative platform dedicated to aiding individuals impacted by the recent earthquake in Morocco. Our core mission is to streamline and coordinate timely assistance for everyone affected. How do we achieve this? We assist those in need by allowing them to communicate their location and the specific aid they require, either by completing a form or sending a voice message via WhatsApp to the number <b>0652573987</b>. Once we receive and process this information, it can be viewed in our dashboard, which allows NGOs to organize and precisely target their interventions, ensuring swift assistance reaches those in need. Any organization that has taken initiative in a particular area can notify us by completing a dedicated form. This data is also incorporated into the dashboard so that other NGOs can help affected areas that still haven't received help.
5
  <br>⚠️ Warning : There are still rocks falling down the mountains, making the roads to the affected areas very dangerous. We advise volunteers to donate directly to specialized NGOs.<br>
6
  <br>
7
  <b>✉️ You can contact us via email at </b><a href="mailto:[email protected]">[email protected]</a> or via Instagram <a href="https://www.instagram.com/nt3awnou_morocco/">@nt3awnou_morocco</a> <br>
 
15
  INTRO_TEXT_AR = """
16
  <div style="text-align: right;-webkit-rtl-ordering: logical;">
17
 
18
+ نتعاونو هي منصة تعاونية غير ربحية لمساعدة الأفراد المتضررين من الزلزال الأخير في المغرب. مهمتنا هي تسهيل تقديم المساعدة في الوقت المناسب و بفاعلية و تنظيم لجميع المتضررين. كيفاش؟ كنعاونو الناس لي محتاجين للمساعدة إعلمونا بمكانهم و نوع المساعدة لي محتاجين ليها سواء عن طريق ملأ الاستمارة أو عن طريق إرسال تسجيل صوتي عبر واتساب إلى رقم مخصص<b>0652573987</b>. بعد معالجة هاد المعلومات، كنجمعوهم فخريطة كتمكن الجمعيات من تنظيم و استهداف تدخلاتهم بدقة باش توصل المساعدة للناس لي محتاجين في وقت أسرع. و كل جمعية قامت باللازم في منطقة معينة تقدر تعلمنا عن طريق ملأ استمارة مخصصة لهاد الأمر. هاد المعلومات كذلك كتضاف للخريطة باش باقي الجمعيات يتاجهو لمناطق أخرى مازال ماوصلاتهم مساعدة.
19
  <br> تحذير : نظرا لخطورة الطرقان بسبب الحجر اللي كيطيح من الجبال، ننصح المتطوعين اللي بغاو ي��اعدو المناطق المتضررة يتبرعو عن طريق الجمعيات المختصة⚠️
20
  <br>
21
  <br>
 
28
  </div>
29
  <br>
30
  """
31
+
32
  INTRO_TEXT_FR = """
33
  <div style="text-align: left;">
34
+ Nt3awnou نتعاونو est une plateforme collaborative à but non-lucratif dédiée à l'aide aux personnes touchées par le récent tremblement de terre au Maroc. Notre mission principale est de rationaliser et de coordonner une assistance rapide pour toutes les personnes touchées. Comment y parvenons-nous ? Nous aidons les personnes dans le besoin en leur permettant de communiquer leur localisation et l'aide spécifique dont elles ont besoin, soit en remplissant un formulaire, soit en envoyant un message vocal via WhatsApp à un numéro <b>0652573987</b>. Une fois reçues et traitées, ces informations peuvent être consultées dans notre tableau de bord, qui permet aux associations d'organiser et de cibler précisément leurs interventions, afin que l'aide parvienne rapidement à ceux qui en ont besoin. Toute organisation ayant pris une initiative dans une zone particulière peut nous en informer en remplissant un formulaire prévu à cet effet. Ces données sont également intégrées au tableau de bord afin que d'autres associations puissent aider les zones touchées qui n'ont pas encore reçu d'aide.
35
  <br> ⚠️ Avertissement : Il y a encore des chutes de pierres dans les montagnes, ce qui rend les routes vers les zones touchées très dangereuses. Nous conseillons aux volontaires de faire des dons directement aux associations spécialisées.
36
  <br>
37
  <br>
 
54
  <hr>
55
  <div style="text-align: center;">
56
  <p>By <b>Moroccans</b> for <b>Moroccans</b> 🤝</p>
57
+ <p> Special thanks for <a href="https://www.annarabic.com/">Annarabic</a> and <a href="https://summerschool.morocco.ai/">AI Summer School</a> for their support</p>
58
  <p>Reach out to us at <a href="mailto:[email protected]">[email protected]</a></p>
59
  """
60