Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
test-ihssane
#22
by
Ihssanehatim
- opened
- .gitignore +0 -2
- .streamlit/config.toml +1 -1
- app.py +388 -126
- data/Besoin important en électricité.csv +0 -1390
- data/Besoin moins important en électricité.csv +0 -0
- data/regions.json +0 -0
- locales/ar/LC_MESSAGES/messages.mo +0 -0
- locales/ar/LC_MESSAGES/messages.po +0 -1443
- locales/fr/LC_MESSAGES/messages.mo +0 -0
- locales/fr/LC_MESSAGES/messages.po +0 -1416
- messages.pot +0 -1399
- parse_xgettext.bash +0 -15
- requirements.txt +2 -3
- src/components.py +0 -274
- src/data_analysis.py +0 -242
- src/dataframes.py +0 -118
- src/filters.py +0 -65
- src/fuzzy_matching.py +0 -258
- src/map_utils.py +93 -122
- src/markers.py +0 -269
- src/text_content.py +33 -42
- src/utils.py +40 -98
.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 =
|
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
@@ -1,27 +1,30 @@
|
|
1 |
import os
|
2 |
import time
|
3 |
-
from
|
4 |
-
from src.filters import show_requests_filters, show_interventions_filters
|
5 |
|
6 |
import folium
|
|
|
7 |
import streamlit as st
|
8 |
from huggingface_hub import HfApi
|
9 |
from streamlit_folium import st_folium
|
10 |
-
|
11 |
from src.text_content import (
|
|
|
12 |
CREDITS_TEXT,
|
|
|
|
|
|
|
|
|
|
|
13 |
LOGO,
|
|
|
14 |
SLOGAN,
|
15 |
)
|
16 |
-
from src.utils import init_map
|
17 |
-
from src.map_utils import get_legend_macro
|
18 |
-
from src.dataframes import load_data
|
19 |
-
import gettext
|
20 |
-
|
21 |
-
gettext.install("myapplication")
|
22 |
|
23 |
TOKEN = os.environ.get("HF_TOKEN", None)
|
24 |
-
|
|
|
25 |
api = HfApi(TOKEN)
|
26 |
|
27 |
|
@@ -41,136 +44,407 @@ if "auto_refresh" not in st.session_state:
|
|
41 |
|
42 |
auto_refresh = st.sidebar.checkbox("Auto Refresh?", st.session_state.auto_refresh)
|
43 |
if auto_refresh:
|
44 |
-
number = st.sidebar.number_input(
|
|
|
|
|
45 |
st.session_state.sleep_time = number
|
46 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
# Logo and Title
|
48 |
st.markdown(LOGO, unsafe_allow_html=True)
|
49 |
# st.title("Nt3awnou نتعاونو")
|
50 |
st.markdown(SLOGAN, unsafe_allow_html=True)
|
51 |
|
52 |
-
#
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
# multiple option (NOT in sidebar)
|
59 |
-
lang = st.selectbox("Choose language / اختر اللغة", list(lang_options.keys()), format_func=lambda x: lang_options[x])
|
60 |
-
|
61 |
-
if lang == "en":
|
62 |
-
_ = gettext.gettext
|
63 |
-
else:
|
64 |
-
localizator = gettext.translation("messages", localedir="locales", languages=[lang])
|
65 |
-
localizator.install()
|
66 |
-
|
67 |
-
# Initialize map
|
68 |
-
m, emergency_fgs, intervention_fgs = init_map()
|
69 |
fg = folium.FeatureGroup(name="Markers")
|
70 |
|
71 |
# Selection of requests
|
72 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
|
74 |
-
# Load data
|
75 |
-
(
|
76 |
-
df,
|
77 |
-
filtered_df,
|
78 |
-
interventions_df,
|
79 |
-
verified_df,
|
80 |
-
filtered_verified_df,
|
81 |
-
solved_verified_requests,
|
82 |
-
douar_df,
|
83 |
-
len_requests,
|
84 |
-
len_interventions,
|
85 |
-
len_solved_verified_requests,
|
86 |
-
) = load_data(show_unverified, selected_options, options)
|
87 |
|
88 |
# Selection of interventions
|
89 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
90 |
|
91 |
-
# Add interventions markers to map
|
92 |
if show_interventions:
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
#
|
101 |
-
|
102 |
-
|
103 |
-
# Add legend
|
104 |
-
legend_macro = get_legend_macro(show_unverified)
|
105 |
-
# delete old legend
|
106 |
-
for child in m.get_root()._children:
|
107 |
-
pass # TODO: fix this
|
108 |
-
# if child.startswith("macro_element"):
|
109 |
-
# m.get_root()._children.remove(child)
|
110 |
-
m.get_root().add_child(legend_macro)
|
111 |
-
# add_village_names(douar_df, m)
|
112 |
st_folium(m, use_container_width=True, returned_objects=[], feature_group_to_add=fg, key="map")
|
113 |
|
114 |
# Embed code
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
#
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
|
|
|
|
|
|
|
|
139 |
|
140 |
# Requests table
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
#
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
|
166 |
# Submit an id for review
|
167 |
-
|
168 |
-
|
169 |
|
170 |
|
171 |
# Donations can be made to the gouvernmental fund under the name
|
172 |
st.divider()
|
173 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
174 |
|
175 |
# Credits
|
176 |
st.markdown(
|
@@ -180,15 +454,3 @@ st.markdown(
|
|
180 |
if auto_refresh:
|
181 |
time.sleep(number)
|
182 |
st.experimental_rerun()
|
183 |
-
|
184 |
-
if lang == "ar":
|
185 |
-
st.markdown(
|
186 |
-
"""
|
187 |
-
<style>
|
188 |
-
body {
|
189 |
-
text-align: right;
|
190 |
-
}
|
191 |
-
</style>
|
192 |
-
""",
|
193 |
-
unsafe_allow_html=True,
|
194 |
-
)
|
|
|
1 |
import os
|
2 |
import time
|
3 |
+
from datetime import datetime
|
|
|
4 |
|
5 |
import folium
|
6 |
+
import pandas as pd
|
7 |
import streamlit as st
|
8 |
from huggingface_hub import HfApi
|
9 |
from streamlit_folium import st_folium
|
10 |
+
|
11 |
from src.text_content import (
|
12 |
+
COLOR_MAPPING,
|
13 |
CREDITS_TEXT,
|
14 |
+
HEADERS_MAPPING,
|
15 |
+
ICON_MAPPING,
|
16 |
+
INTRO_TEXT_AR,
|
17 |
+
INTRO_TEXT_EN,
|
18 |
+
INTRO_TEXT_FR,
|
19 |
LOGO,
|
20 |
+
REVIEW_TEXT,
|
21 |
SLOGAN,
|
22 |
)
|
23 |
+
from src.utils import add_latlng_col, init_map, parse_gg_sheet, is_request_in_list, marker_request
|
|
|
|
|
|
|
|
|
|
|
24 |
|
25 |
TOKEN = os.environ.get("HF_TOKEN", None)
|
26 |
+
REQUESTS_URL = "https://docs.google.com/spreadsheets/d/1gYoBBiBo1L18IVakHkf3t1fOGvHWb23loadyFZUeHJs/edit#gid=966953708"
|
27 |
+
INTERVENTIONS_URL = "https://docs.google.com/spreadsheets/d/1eXOTqunOWWP8FRdENPs4cU9ulISm4XZWYJJNR1-SrwY/edit#gid=2089222765"
|
28 |
api = HfApi(TOKEN)
|
29 |
|
30 |
|
|
|
44 |
|
45 |
auto_refresh = st.sidebar.checkbox("Auto Refresh?", st.session_state.auto_refresh)
|
46 |
if auto_refresh:
|
47 |
+
number = st.sidebar.number_input(
|
48 |
+
"Refresh rate in seconds", value=st.session_state.sleep_time
|
49 |
+
)
|
50 |
st.session_state.sleep_time = number
|
51 |
|
52 |
+
|
53 |
+
# Streamlit functions
|
54 |
+
def display_interventions(interventions_df):
|
55 |
+
"""Display NGO interventions on the map"""
|
56 |
+
for index, row in interventions_df.iterrows():
|
57 |
+
village_status = row[interventions_df.columns[7]]
|
58 |
+
if (
|
59 |
+
row[interventions_df.columns[5]]
|
60 |
+
== "Intervention prévue dans le futur / Planned future intervention"
|
61 |
+
):
|
62 |
+
# future intervention
|
63 |
+
color_mk = "pink"
|
64 |
+
status = "Planned ⌛"
|
65 |
+
elif (
|
66 |
+
row[interventions_df.columns[5]]
|
67 |
+
!= "Intervention prévue dans le futur / Planned future intervention"
|
68 |
+
and village_status
|
69 |
+
!= "Critique, Besoin d'aide en urgence / Critical, in urgent need of help"
|
70 |
+
):
|
71 |
+
# past intervention and village not in a critical condition
|
72 |
+
color_mk = "green"
|
73 |
+
status = "Done ✅"
|
74 |
+
|
75 |
+
else:
|
76 |
+
color_mk = "darkgreen"
|
77 |
+
status = "Partial ⚠️"
|
78 |
+
|
79 |
+
intervention_type = row[interventions_df.columns[6]].split("/")[0].strip()
|
80 |
+
org = row[interventions_df.columns[1]]
|
81 |
+
city = row[interventions_df.columns[9]]
|
82 |
+
date = row[interventions_df.columns[4]]
|
83 |
+
population = row[interventions_df.columns[11]]
|
84 |
+
intervention_info = f"<b>Intervention Status:</b> {status}<br><b>Village Status:</b> {village_status.split('/')[0]}<br><b>Org:</b> {org}<br><b>Intervention:</b> {intervention_type}<br><b>Population:</b> {population}<br><b>📅 Date:</b> {date}"
|
85 |
+
if row["latlng"] is None:
|
86 |
+
continue
|
87 |
+
|
88 |
+
fg.add_child(folium.Marker(
|
89 |
+
location=row["latlng"],
|
90 |
+
tooltip=city,
|
91 |
+
popup=folium.Popup(intervention_info, max_width=300),
|
92 |
+
icon=folium.Icon(color=color_mk),
|
93 |
+
))
|
94 |
+
|
95 |
+
|
96 |
+
def show_requests(filtered_df):
|
97 |
+
"""Display victim requests on the map"""
|
98 |
+
for index, row in filtered_df.iterrows():
|
99 |
+
request_type = row["ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)"]
|
100 |
+
displayed_request = marker_request(request_type)
|
101 |
+
long_lat = row[
|
102 |
+
"هل يمكنك تقديم الإحداثيات الدقيقة للموقع؟ (ادا كنت لا توجد بعين المكان) متلاً \n31.01837503440344, -6.781405948842175"
|
103 |
+
]
|
104 |
+
maps_url = f"https://maps.google.com/?q={long_lat}"
|
105 |
+
# we display all requests in popup text and use the first one for the icon/color
|
106 |
+
display_text = f'<b>Request Type:</b> {request_type}<br><b>Id:</b> {row["id"]}<br><a href="{maps_url}" target="_blank" rel="noopener noreferrer"><b>Google Maps</b></a>'
|
107 |
+
icon_name = ICON_MAPPING.get(displayed_request, "info-sign")
|
108 |
+
if row["latlng"] is None:
|
109 |
+
continue
|
110 |
+
|
111 |
+
fg.add_child(folium.Marker(
|
112 |
+
location=row["latlng"],
|
113 |
+
tooltip=row[" لأي جماعة / قيادة / دوار تنتمون ؟"]
|
114 |
+
if not pd.isna(row[" لأي جماعة / قيادة / دوار تنتمون ؟"])
|
115 |
+
else None,
|
116 |
+
popup=folium.Popup(display_text, max_width=300),
|
117 |
+
icon=folium.Icon(
|
118 |
+
color=COLOR_MAPPING.get(displayed_request, "blue"), icon=icon_name
|
119 |
+
),
|
120 |
+
))
|
121 |
+
|
122 |
+
|
123 |
+
def display_google_sheet_tables(data_url):
|
124 |
+
"""Display the google sheet tables for requests and interventions"""
|
125 |
+
st.markdown(
|
126 |
+
f"""<iframe src="{data_url}" width="100%" height="600px"></iframe>""",
|
127 |
+
unsafe_allow_html=True,
|
128 |
+
)
|
129 |
+
|
130 |
+
|
131 |
+
def display_dataframe(df, drop_cols, data_url, search_id=True, status=False, for_help_requests=False):
|
132 |
+
"""Display the dataframe in a table"""
|
133 |
+
col_1, col_2 = st.columns([1, 1])
|
134 |
+
|
135 |
+
with col_1:
|
136 |
+
query = st.text_input(
|
137 |
+
"🔍 Search for information / بحث عن المعلومات",
|
138 |
+
key=f"search_requests_{int(search_id)}",
|
139 |
+
)
|
140 |
+
with col_2:
|
141 |
+
if search_id:
|
142 |
+
id_number = st.number_input(
|
143 |
+
"🔍 Search for an id / بحث عن رقم",
|
144 |
+
min_value=0,
|
145 |
+
max_value=len(filtered_df),
|
146 |
+
value=0,
|
147 |
+
step=1,
|
148 |
+
)
|
149 |
+
if status:
|
150 |
+
selected_status = st.selectbox(
|
151 |
+
"🗓️ Status / حالة",
|
152 |
+
["all / الكل", "Done / تم", "Planned / مخطط لها"],
|
153 |
+
key="status",
|
154 |
+
)
|
155 |
+
|
156 |
+
if query:
|
157 |
+
# Filtering the dataframe based on the query
|
158 |
+
mask = df.apply(lambda row: row.astype(str).str.contains(query).any(), axis=1)
|
159 |
+
display_df = df[mask]
|
160 |
+
else:
|
161 |
+
display_df = df
|
162 |
+
|
163 |
+
display_df = display_df.drop(drop_cols, axis=1)
|
164 |
+
|
165 |
+
if search_id and id_number:
|
166 |
+
display_df = display_df[display_df["id"] == id_number]
|
167 |
+
|
168 |
+
if status:
|
169 |
+
target = "Pouvez-vous nous préciser si vous êtes déjà intervenus ou si vous prévoyez de le faire | Tell us if you already made the intervention, or if you're planning to do it"
|
170 |
+
if selected_status == "Done / تم":
|
171 |
+
display_df = display_df[
|
172 |
+
display_df[target] == "Intervention déjà passée / Past intevention"
|
173 |
+
]
|
174 |
+
|
175 |
+
elif selected_status == "Planned / مخطط لها":
|
176 |
+
display_df = display_df[
|
177 |
+
display_df[target] != "Intervention déjà passée / Past intevention"
|
178 |
+
]
|
179 |
+
|
180 |
+
st.dataframe(display_df, height=500)
|
181 |
+
st.markdown(
|
182 |
+
f"To view the full Google Sheet for advanced filtering go to: {data_url} **لعرض الورقة كاملة، اذهب إلى**"
|
183 |
+
)
|
184 |
+
# if we want to check hidden contact information
|
185 |
+
if for_help_requests:
|
186 |
+
st.markdown(
|
187 |
+
"We are hiding contact information to protect the privacy of the victims. If you are an NGO and want to contact the victims, please contact us at nt3awnoumorocco@gmail.com",
|
188 |
+
)
|
189 |
+
st.markdown(
|
190 |
+
"""
|
191 |
+
<div style="text-align: left;">
|
192 |
+
<a href="mailto:nt3awnoumorocco@gmail.com">nt3awnoumorocco@gmail.com</a> نحن نخفي معلومات الاتصال لحماية خصوصية الضحايا. إذا كنت جمعية وتريد الاتصال بالضحايا، يرجى الاتصال بنا على
|
193 |
+
</div>
|
194 |
+
""",
|
195 |
+
unsafe_allow_html=True,
|
196 |
+
)
|
197 |
+
|
198 |
+
|
199 |
+
def id_review_submission():
|
200 |
+
"""Id review submission form"""
|
201 |
+
# collapse the text
|
202 |
+
with st.expander("🔍 Review of requests | مراجعة طلب مساعدة"):
|
203 |
+
st.markdown(REVIEW_TEXT)
|
204 |
+
|
205 |
+
id_to_review = st.number_input(
|
206 |
+
"Enter id / أدخل الرقم", min_value=0, max_value=len(df), value=0, step=1
|
207 |
+
)
|
208 |
+
reason_for_review = st.text_area("Explain why / أدخل سبب المراجعة")
|
209 |
+
if st.button("Submit / أرسل"):
|
210 |
+
if reason_for_review == "":
|
211 |
+
st.error("Please enter a reason / الرجاء إدخال سبب")
|
212 |
+
else:
|
213 |
+
filename = f"review_id_{id_to_review}_{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.txt"
|
214 |
+
with open(filename, "w") as f:
|
215 |
+
f.write(f"id: {id_to_review}, explanation: {reason_for_review}\n")
|
216 |
+
api.upload_file(
|
217 |
+
path_or_fileobj=filename,
|
218 |
+
path_in_repo=filename,
|
219 |
+
repo_id="nt3awnou/review_requests",
|
220 |
+
repo_type="dataset",
|
221 |
+
)
|
222 |
+
st.success(
|
223 |
+
"Submitted at https://huggingface.co/datasets/nt3awnou/review_requests/ تم الإرسال"
|
224 |
+
)
|
225 |
+
|
226 |
+
|
227 |
# Logo and Title
|
228 |
st.markdown(LOGO, unsafe_allow_html=True)
|
229 |
# st.title("Nt3awnou نتعاونو")
|
230 |
st.markdown(SLOGAN, unsafe_allow_html=True)
|
231 |
|
232 |
+
# Load data and initialize map with plugins
|
233 |
+
df = parse_gg_sheet(REQUESTS_URL)
|
234 |
+
df = add_latlng_col(df, process_column=15)
|
235 |
+
interventions_df = parse_gg_sheet(INTERVENTIONS_URL)
|
236 |
+
interventions_df = add_latlng_col(interventions_df, process_column=12)
|
237 |
+
m = init_map()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
238 |
fg = folium.FeatureGroup(name="Markers")
|
239 |
|
240 |
# Selection of requests
|
241 |
+
options = [
|
242 |
+
"إغاثة",
|
243 |
+
"مساعدة طبية",
|
244 |
+
"مأوى",
|
245 |
+
"طعام وماء",
|
246 |
+
"مخاطر (تسرب الغاز، تلف في الخدمات العامة...)",
|
247 |
+
]
|
248 |
+
selected_options = []
|
249 |
+
|
250 |
+
|
251 |
+
st.markdown(
|
252 |
+
"👉 **Choose request type | Choissisez le type de demande | اختر نوع الطلب**"
|
253 |
+
)
|
254 |
+
col1, col2, col3, col4, col5 = st.columns([2, 3, 2, 3, 4])
|
255 |
+
cols = [col1, col2, col3, col4, col5]
|
256 |
+
|
257 |
+
for i, option in enumerate(options):
|
258 |
+
checked = cols[i].checkbox(HEADERS_MAPPING[option], value=True)
|
259 |
+
if checked:
|
260 |
+
selected_options.append(option)
|
261 |
+
|
262 |
+
df["id"] = df.index
|
263 |
+
# keep rows with at least one request in selected_options
|
264 |
+
filtered_df = df[df["ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)"].apply(
|
265 |
+
lambda x: is_request_in_list(x, selected_options)
|
266 |
+
)]
|
267 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
268 |
|
269 |
# Selection of interventions
|
270 |
+
show_interventions = st.checkbox(
|
271 |
+
"Display Interventions | Afficher les interventions | عرض عمليات المساعدة",
|
272 |
+
value=True,
|
273 |
+
)
|
274 |
+
|
275 |
+
# Categories of villages
|
276 |
+
st.markdown(
|
277 |
+
"👉 **State of villages visited by NGOs| Etat de villages visités par les ONGs | وضعية القرى التي زارتها الجمعيات**",
|
278 |
+
unsafe_allow_html=True,
|
279 |
+
)
|
280 |
+
|
281 |
+
|
282 |
+
# use checkboxes
|
283 |
+
col_1, col_2, col_3 = st.columns([1, 1, 1])
|
284 |
+
|
285 |
+
critical_villages = col_1.checkbox(
|
286 |
+
"🚨 Critical, in urgent need of help / وضع حرج، في حاجة عاجلة للمساعدة",
|
287 |
+
value=True,
|
288 |
+
)
|
289 |
+
partially_satisfied_villages = col_2.checkbox(
|
290 |
+
"⚠️ Partially served / مساعدة جزئية، بحاجة للمزيد من التدخلات",
|
291 |
+
value=True,
|
292 |
+
)
|
293 |
+
fully_satisfied_villages = col_3.checkbox(
|
294 |
+
"✅ Fully served / تمت المساعدة بشكل كامل",
|
295 |
+
value=True,
|
296 |
+
)
|
297 |
+
|
298 |
+
selected_village_types = []
|
299 |
+
|
300 |
+
if critical_villages:
|
301 |
+
selected_village_types.append(
|
302 |
+
"🚨 Critical, in urgent need of help / وضع حرج، في حاجة عاجلة للمساعدة"
|
303 |
+
)
|
304 |
+
|
305 |
+
if partially_satisfied_villages:
|
306 |
+
selected_village_types.append(
|
307 |
+
"⚠️ Partially served / مساعدة جزئية، بحاجة للمزيد من التدخلات"
|
308 |
+
)
|
309 |
+
|
310 |
+
if fully_satisfied_villages:
|
311 |
+
selected_village_types.append("✅ Fully served / تمت المساعدة بشكل كامل")
|
312 |
+
|
313 |
+
status_mapping = {
|
314 |
+
"🚨 Critical, in urgent need of help / وضع حرج، في حاجة عاجلة للمساعدة": "Critique, Besoin d'aide en urgence / Critical, in urgent need of help",
|
315 |
+
"⚠️ Partially served / مساعدة جزئية، بحاجة للمزيد من التدخلات": "Partiellement satisfait / Partially Served",
|
316 |
+
"✅ Fully served / تمت المساعدة بشكل كامل": "Entièrement satisfait / Fully served",
|
317 |
+
}
|
318 |
+
selected_statuses = [status_mapping[status] for status in selected_village_types]
|
319 |
|
|
|
320 |
if show_interventions:
|
321 |
+
interventions_df = interventions_df.loc[
|
322 |
+
interventions_df[
|
323 |
+
"Etat de la région actuel | Current situation of the area "
|
324 |
+
].isin(selected_statuses)
|
325 |
+
]
|
326 |
+
display_interventions(interventions_df)
|
327 |
+
|
328 |
+
# Show requests
|
329 |
+
show_requests(filtered_df)
|
330 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
331 |
st_folium(m, use_container_width=True, returned_objects=[], feature_group_to_add=fg, key="map")
|
332 |
|
333 |
# Embed code
|
334 |
+
with st.expander("📝 Embed code | Code à intégrer | كود للتضمين"):
|
335 |
+
st.code(
|
336 |
+
"""
|
337 |
+
<iframe id="nt3awnou-map"
|
338 |
+
src="https://nt3awnou-embed-rescue-map.hf.space/?embed=true" width="1200" height="720"
|
339 |
+
frameborder="0"
|
340 |
+
width="850"
|
341 |
+
height="450"
|
342 |
+
title="Nt3awno Rescue Map">
|
343 |
+
</iframe>
|
344 |
+
<script src="https://cdn.jsdelivr.net/npm/iframe-resizer@4.3.4/js/iframeResizer.min.js"></script>
|
345 |
+
<script>
|
346 |
+
iFrameResize({}, "#nt3awnou-map");
|
347 |
+
</script>
|
348 |
+
""",
|
349 |
+
language="html",
|
350 |
+
)
|
351 |
+
|
352 |
+
|
353 |
+
tab_ar, tab_en, tab_fr = st.tabs(["العربية", "English", "Français"])
|
354 |
+
|
355 |
+
|
356 |
+
with tab_en:
|
357 |
+
st.markdown(INTRO_TEXT_EN, unsafe_allow_html=True)
|
358 |
+
with tab_ar:
|
359 |
+
st.markdown(INTRO_TEXT_AR, unsafe_allow_html=True)
|
360 |
+
with tab_fr:
|
361 |
+
st.markdown(INTRO_TEXT_FR, unsafe_allow_html=True)
|
362 |
|
363 |
# Requests table
|
364 |
+
st.divider()
|
365 |
+
st.subheader("📝 **Table of requests / جدول الطلبات**")
|
366 |
+
drop_cols = [
|
367 |
+
"(عند الامكان) رقم هاتف شخص موجود في عين المكان",
|
368 |
+
"الرجاء الضغط على الرابط التالي لمعرفة موقعك إذا كان متاحا",
|
369 |
+
"GeoStamp",
|
370 |
+
"GeoCode",
|
371 |
+
"GeoAddress",
|
372 |
+
"Status",
|
373 |
+
"id",
|
374 |
+
]
|
375 |
+
display_dataframe(filtered_df, drop_cols, REQUESTS_URL, search_id=True, for_help_requests=True)
|
376 |
+
|
377 |
+
# Interventions table
|
378 |
+
st.divider()
|
379 |
+
st.subheader("📝 **Table of interventions / جدول التدخلات**")
|
380 |
+
display_dataframe(
|
381 |
+
interventions_df,
|
382 |
+
[], # We show NGOs contact information
|
383 |
+
INTERVENTIONS_URL,
|
384 |
+
search_id=False,
|
385 |
+
status=True,
|
386 |
+
for_help_requests=False,
|
387 |
+
)
|
388 |
|
389 |
# Submit an id for review
|
390 |
+
st.divider()
|
391 |
+
id_review_submission()
|
392 |
|
393 |
|
394 |
# Donations can be made to the gouvernmental fund under the name
|
395 |
st.divider()
|
396 |
+
st.subheader("📝 **Donations / التبرعات / Dons**")
|
397 |
+
tab_ar, tab_en, tab_fr = st.tabs(["العربية", "English", "Français"])
|
398 |
+
with tab_en:
|
399 |
+
st.markdown(
|
400 |
+
"""
|
401 |
+
<div style="text-align: center;">
|
402 |
+
<h4>The official bank account dedicated to tackle the consequences of the earthquake is:</h4>
|
403 |
+
<b>Account number:</b>
|
404 |
+
<h2>126</h2>
|
405 |
+
<b>RIB:</b> 001-810-0078000201106203-18
|
406 |
+
<br>
|
407 |
+
<b>For the money transfers coming from outside Morocco</b>
|
408 |
+
<br>
|
409 |
+
<b>IBAN:</b> MA64001810007800020110620318
|
410 |
+
<br>
|
411 |
+
""",
|
412 |
+
unsafe_allow_html=True,
|
413 |
+
)
|
414 |
+
with tab_ar:
|
415 |
+
st.markdown(
|
416 |
+
"""
|
417 |
+
<div style="text-align: center;">
|
418 |
+
<h4>الحساب البنكي الرسمي المخصص لمواجهة عواقب الزلزال</h4>
|
419 |
+
<b>رقم الحساب</b>
|
420 |
+
<h2>126</h2>
|
421 |
+
<b>RIB:</b> 001-810-0078000201106203-18
|
422 |
+
<br>
|
423 |
+
<b>للتحويلات القادمة من خارج المغرب</b>
|
424 |
+
<br>
|
425 |
+
<b>IBAN:</b> MA64001810007800020110620318
|
426 |
+
<br>
|
427 |
+
</div>
|
428 |
+
""",
|
429 |
+
unsafe_allow_html=True,
|
430 |
+
)
|
431 |
+
with tab_fr:
|
432 |
+
st.markdown(
|
433 |
+
"""
|
434 |
+
<div style="text-align: center;">
|
435 |
+
<h4>Le compte bancaire officiel dédié à la lutte contre les conséquences du séisme est le suivant:</h4>
|
436 |
+
<b>Numéro de compte:</b>
|
437 |
+
<h2>126</h2>
|
438 |
+
<b>RIB:</b> 001-810-0078000201106203-18
|
439 |
+
<br>
|
440 |
+
<b>Pour les transferts d'argent en provenance de l'étranger</b>
|
441 |
+
<br>
|
442 |
+
<b>IBAN:</b> MA64001810007800020110620318
|
443 |
+
<br>
|
444 |
+
""",
|
445 |
+
unsafe_allow_html=True,
|
446 |
+
)
|
447 |
+
|
448 |
|
449 |
# Credits
|
450 |
st.markdown(
|
|
|
454 |
if auto_refresh:
|
455 |
time.sleep(number)
|
456 |
st.experimental_rerun()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
data/Besoin important en électricité.csv
DELETED
@@ -1,1390 +0,0 @@
|
|
1 |
-
,Name,Coordinates,Longitude,Latitude
|
2 |
-
0,TOUGUE EL KHEIR,"-8.255905133,31.16346786,0",-8.255905133,31.16346786
|
3 |
-
1,IGHRMANE,"-8.435080813,31.15671296,0",-8.435080813,31.15671296
|
4 |
-
2,AMAGDOULE,"-8.184268261,30.99088146,0",-8.184268261,30.99088146
|
5 |
-
3,DOU GOUJ,"-8.196455588,30.98722757,0",-8.196455588,30.98722757
|
6 |
-
4,IMLIL,"-7.921740545,31.13727905,0",-7.921740545,31.13727905
|
7 |
-
5,AIT OGHAYNE,"-7.576223523,31.38778664,0",-7.576223523,31.38778664
|
8 |
-
6,TASSA,"-8.751217379,30.94754419,0",-8.751217379,30.94754419
|
9 |
-
7,TANAWTE,"-8.906358152,30.96582792,0",-8.906358152,30.96582792
|
10 |
-
8,WANZIDE,"-8.793312362,31.03653584,0",-8.793312362,31.03653584
|
11 |
-
9,TAGHRATE,"-8.569657372,30.99689613,0",-8.569657372,30.99689613
|
12 |
-
10,TAMAGOUNSI,"-8.470841453,31.05008373,0",-8.470841453,31.05008373
|
13 |
-
11,ADASSIL,"-8.495085665,31.11166768,0",-8.495085665,31.11166768
|
14 |
-
12,SLAMT,"-8.252172077,31.17738092,0",-8.252172077,31.17738092
|
15 |
-
13,TIGOURRAMINE,"-8.129594032,31.07342339,0",-8.129594032,31.07342339
|
16 |
-
14,TAZGZAOUTE,"-8.375323506,30.98376055,0",-8.375323506,30.98376055
|
17 |
-
15,TAWRIRTE,"-8.362413167,30.99378338,0",-8.362413167,30.99378338
|
18 |
-
16,AMASSINE,"-7.722989857,31.39389329,0",-7.722989857,31.39389329
|
19 |
-
17,ISSOU QAN,"-8.622166881,30.97584479,0",-8.622166881,30.97584479
|
20 |
-
18,IMINIGHZAR,"-8.420192467,31.12606843,0",-8.420192467,31.12606843
|
21 |
-
19,IWNARNE (SOUK),"-8.48862263,31.11307663,0",-8.48862263,31.11307663
|
22 |
-
20,TAGOUMATE,"-8.526412951,31.01178906,0",-8.526412951,31.01178906
|
23 |
-
21,TIZINE SAGDALE,"-7.664356971,31.37012305,0",-7.664356971,31.37012305
|
24 |
-
22,TAOURIRTE,"-7.667103935,31.36568841,0",-7.667103935,31.36568841
|
25 |
-
23,AIT SOUKA,"-7.909901495,31.1409879,0",-7.909901495,31.1409879
|
26 |
-
24,MEZZIKENE,"-7.925906953,31.13703904,0",-7.925906953,31.13703904
|
27 |
-
25,AGUERSIOUAL,"-7.924804504,31.16046652,0",-7.924804504,31.16046652
|
28 |
-
26,IMSKAR,"-7.938962116,31.20489761,0",-7.938962116,31.20489761
|
29 |
-
27,OUAOUSSAFL,"-7.946694593,31.17825491,0",-7.946694593,31.17825491
|
30 |
-
28,TINITINE,"-7.947450547,31.18972961,0",-7.947450547,31.18972961
|
31 |
-
29,AGUINANE,"-7.977445748,31.13762602,0",-7.977445748,31.13762602
|
32 |
-
30,OUDKINTE,"-7.825762253,31.3364155,0",-7.825762253,31.3364155
|
33 |
-
31,IGOUDMANE,"-7.56380545,31.38382321,0",-7.56380545,31.38382321
|
34 |
-
32,AWOULA,"-8.78905947,31.03744237,0",-8.78905947,31.03744237
|
35 |
-
33,ARGUE,"-8.406493268,30.99004383,0",-8.406493268,30.99004383
|
36 |
-
34,WAWDID,"-8.39690382,30.98577107,0",-8.39690382,30.98577107
|
37 |
-
35,ARAMD,"-7.916838203,31.12623339,0",-7.916838203,31.12623339
|
38 |
-
36,MESREF EL BORJ,"-7.797492255,31.37361429,0",-7.797492255,31.37361429
|
39 |
-
37,TISSAKHTE,"-8.897832707,31.08975931,0",-8.897832707,31.08975931
|
40 |
-
38,TAFRAOUTE,"-7.321471795,31.36691498,0",-7.321471795,31.36691498
|
41 |
-
39,AFANSOU,"-8.730790682,30.93376534,0",-8.730790682,30.93376534
|
42 |
-
40,IGHIL NOUAFFANE,"-7.70469748,31.39443969,0",-7.70469748,31.39443969
|
43 |
-
41,TINAGRAT,"-8.683391262,30.94318734,0",-8.683391262,30.94318734
|
44 |
-
42,TIGHZA,"-7.701553804,31.39854002,0",-7.701553804,31.39854002
|
45 |
-
43,ALOUSS,"-7.866442548,31.32389831,0",-7.866442548,31.32389831
|
46 |
-
44,AMASLANE,"-8.067533606,31.0646947,0",-8.067533606,31.0646947
|
47 |
-
45,AIT BOUJANOWI,"-7.796391695,31.37216577,0",-7.796391695,31.37216577
|
48 |
-
46,IGRI OU FELLA,"-7.813008904,31.34357838,0",-7.813008904,31.34357838
|
49 |
-
47,TIZI WADO,"-8.023400925,31.2417962,0",-8.023400925,31.2417962
|
50 |
-
48,IGHRAME,"-8.529616906,31.01510206,0",-8.529616906,31.01510206
|
51 |
-
49,TABYA,"-8.978759699,31.02496869,0",-8.978759699,31.02496869
|
52 |
-
50,TASSOUAKTE,"-8.24420994,30.95635278,0",-8.24420994,30.95635278
|
53 |
-
51,TAGADDOTE,"-8.806111636,31.08063665,0",-8.806111636,31.08063665
|
54 |
-
52,TAGADIRTE,"-8.81077752,31.07242193,0",-8.81077752,31.07242193
|
55 |
-
53,IMELALEN,"-8.939218394,30.94616266,0",-8.939218394,30.94616266
|
56 |
-
54,TIJDINE,"-8.878980277,31.03968941,0",-8.878980277,31.03968941
|
57 |
-
55,TOUG EL KHEIR,"-7.715514115,31.30855798,0",-7.715514115,31.30855798
|
58 |
-
56,MAJOU,"-8.08388093,30.94383411,0",-8.08388093,30.94383411
|
59 |
-
57,TINFITE,"-8.091366913,30.95623069,0",-8.091366913,30.95623069
|
60 |
-
58,TOUG EL KHIR,"-8.139299889,31.06321117,0",-8.139299889,31.06321117
|
61 |
-
59,AIT ALI,"-8.50057833,31.0693806,0",-8.50057833,31.0693806
|
62 |
-
60,AMOUTOU,"-7.657691221,31.36382514,0",-7.657691221,31.36382514
|
63 |
-
61,IZNAGUEN,"-7.67714153,31.37929169,0",-7.67714153,31.37929169
|
64 |
-
62,AIT KATTOF,"-8.530783687,31.00508888,0",-8.530783687,31.00508888
|
65 |
-
63,TARGUA,"-8.499325152,31.07282962,0",-8.499325152,31.07282962
|
66 |
-
64,TADDART,"-8.913765124,30.99298386,0",-8.913765124,30.99298386
|
67 |
-
65,DR ASNI (QDIM),"-7.978191324,31.22880218,0",-7.978191324,31.22880218
|
68 |
-
66,TAMGOUNSI,"-7.986894007,31.23903469,0",-7.986894007,31.23903469
|
69 |
-
67,TAGADIRTE NAIT ALI,"-7.95653987,31.19648339,0",-7.95653987,31.19648339
|
70 |
-
68,TIGAMMA NIGRANE,"-8.256376354,30.94171727,0",-8.256376354,30.94171727
|
71 |
-
69,OUAN CHKRIR,"-8.714342264,31.02986998,0",-8.714342264,31.02986998
|
72 |
-
70,,"-8.761011479,31.04186461,0",-8.761011479,31.04186461
|
73 |
-
71,TALBORJTE,"-8.765730562,31.08177837,0",-8.765730562,31.08177837
|
74 |
-
72,,"-7.809987067,31.19459338,0",-7.809987067,31.19459338
|
75 |
-
73,IMI OU GHLAD,"-7.955988692,31.19223786,0",-7.955988692,31.19223786
|
76 |
-
74,TABRADJOTE,"-8.707056639,31.10564021,0",-8.707056639,31.10564021
|
77 |
-
75,AIT AMAR,"-7.824404703,31.26181513,0",-7.824404703,31.26181513
|
78 |
-
76,TIKHFIST,"-7.800453274,31.2558691,0",-7.800453274,31.2558691
|
79 |
-
77,AIT BAHAMMOU,"-8.717520696,30.94145209,0",-8.717520696,30.94145209
|
80 |
-
78,VILLAGE DE MINE TIWBA,"-8.719418848,30.91357251,0",-8.719418848,30.91357251
|
81 |
-
79,AIN AMRANE,"-7.68131772,31.2205741,0",-7.68131772,31.2205741
|
82 |
-
80,AGADIR NIJANATEN,"-8.489665519,30.89512945,0",-8.489665519,30.89512945
|
83 |
-
81,IGHIR,"-8.078673662,30.97766979,0",-8.078673662,30.97766979
|
84 |
-
82,TAJGALTE,"-8.097185022,31.01378482,0",-8.097185022,31.01378482
|
85 |
-
83,TIKENTAFINE,"-8.037813654,30.99883154,0",-8.037813654,30.99883154
|
86 |
-
84,ALLOUSSE,"-8.525231264,31.01015155,0",-8.525231264,31.01015155
|
87 |
-
85,OUSSARTK,"-7.888659813,31.19590092,0",-7.888659813,31.19590092
|
88 |
-
86,TISSILI,"-7.908590146,31.22311679,0",-7.908590146,31.22311679
|
89 |
-
87,MAGHDIR,"-8.742511216,31.06830184,0",-8.742511216,31.06830184
|
90 |
-
88,IZIDE,"-8.971735193,30.94323187,0",-8.971735193,30.94323187
|
91 |
-
89,IBALOULENE,"-8.90367629,30.93811305,0",-8.90367629,30.93811305
|
92 |
-
90,AFELLA IZDATEN,"-8.888442672,30.9978175,0",-8.888442672,30.9978175
|
93 |
-
91,TAGENZA IGOUNTAR,"-8.807022044,31.0338402,0",-8.807022044,31.0338402
|
94 |
-
92,TANAMARTE,"-8.826939422,31.03136705,0",-8.826939422,31.03136705
|
95 |
-
93,TAOURIRTE,"-6.574053556,31.28226736,0",-6.574053556,31.28226736
|
96 |
-
94,TAMESSOULTE,"-8.488252609,31.02006195,0",-8.488252609,31.02006195
|
97 |
-
95,ARG,"-8.583847816,31.01179676,0",-8.583847816,31.01179676
|
98 |
-
96,ASSOUL,"-8.270563474,31.09124227,0",-8.270563474,31.09124227
|
99 |
-
97,IMZAINE,"-8.260691371,31.1316045,0",-8.260691371,31.1316045
|
100 |
-
98,AZENDOU,"-8.934217628,31.06170544,0",-8.934217628,31.06170544
|
101 |
-
99,MAJDID,"-8.491661558,31.11891134,0",-8.491661558,31.11891134
|
102 |
-
100,AIT IRGHIT,"-8.19238706,31.17476694,0",-8.19238706,31.17476694
|
103 |
-
101,ASSIF ZAGZAWNE,"-8.051928309,31.12024311,0",-8.051928309,31.12024311
|
104 |
-
102,TAGHBARTE,"-8.1186277,30.96766146,0",-8.1186277,30.96766146
|
105 |
-
103,TIGDIDE NIZDARENE,"-8.065643552,30.92865332,0",-8.065643552,30.92865332
|
106 |
-
104,TAGHZIRTE,"-8.046469356,30.92799191,0",-8.046469356,30.92799191
|
107 |
-
105,IJOKAKE,"-8.151115813,30.99130542,0",-8.151115813,30.99130542
|
108 |
-
106,TAMGGOUCHTE,"-7.141522835,31.15044949,0",-7.141522835,31.15044949
|
109 |
-
107,AMZZI,"-8.20384213,31.19582085,0",-8.20384213,31.19582085
|
110 |
-
108,TIKSITE,"-8.489155698,31.05817965,0",-8.489155698,31.05817965
|
111 |
-
109,AKMFARGA,"-8.921630344,30.99767676,0",-8.921630344,30.99767676
|
112 |
-
110,AGHBALOU,"-8.242517414,30.94022172,0",-8.242517414,30.94022172
|
113 |
-
111,CHIKER,"-7.720390422,31.22549755,0",-7.720390422,31.22549755
|
114 |
-
112,INA FGANE,"-8.151372916,30.9822627,0",-8.151372916,30.9822627
|
115 |
-
113,TASGA NWARG,"-8.161421348,30.97883229,0",-8.161421348,30.97883229
|
116 |
-
114,IMI NOUGARZI,"-8.163958152,31.00005896,0",-8.163958152,31.00005896
|
117 |
-
115,TARWATE,"-8.187861922,30.98759707,0",-8.187861922,30.98759707
|
118 |
-
116,TIZIRTE,"-8.187818552,31.13201448,0",-8.187818552,31.13201448
|
119 |
-
117,ASSAMRANE,"-7.591277471,31.38555915,0",-7.591277471,31.38555915
|
120 |
-
118,OURAKEN,"-7.920639689,31.27056233,0",-7.920639689,31.27056233
|
121 |
-
119,OUTGHAL,"-7.930793659,31.30550092,0",-7.930793659,31.30550092
|
122 |
-
120,TAFILALTE,"-7.713545096,31.38607287,0",-7.713545096,31.38607287
|
123 |
-
121,TIFNI,"-8.353597408,30.94153044,0",-8.353597408,30.94153044
|
124 |
-
122,IJJIKEN,"-7.905476447,31.32052027,0",-7.905476447,31.32052027
|
125 |
-
123,OUKHRIBENE,"-7.887577351,31.33126967,0",-7.887577351,31.33126967
|
126 |
-
124,TAMAHANTE,"-7.879657495,31.33328055,0",-7.879657495,31.33328055
|
127 |
-
125,AMAGDOUL,"-7.717890232,31.34680011,0",-7.717890232,31.34680011
|
128 |
-
126,TAWNGHASTE,"-8.534981297,31.06333369,0",-8.534981297,31.06333369
|
129 |
-
127,EL HADDAD,"-7.782551126,31.37667699,0",-7.782551126,31.37667699
|
130 |
-
128,AMKCHOUD,"-6.591443137,31.21359242,0",-6.591443137,31.21359242
|
131 |
-
129,TAGRAGRA,"-6.713868019,31.27692212,0",-6.713868019,31.27692212
|
132 |
-
130,TIGHIRTE TOUDOUTE,"-6.591865773,31.26670986,0",-6.591865773,31.26670986
|
133 |
-
131,TIGHFART,"-7.653835545,31.25367277,0",-7.653835545,31.25367277
|
134 |
-
132,TAKHAFSATE,"-8.063128004,31.15851028,0",-8.063128004,31.15851028
|
135 |
-
133,IGHIL,"-8.25496601,30.94903779,0",-8.25496601,30.94903779
|
136 |
-
134,AGADIR,"-8.423931441,31.11772917,0",-8.423931441,31.11772917
|
137 |
-
135,TALAT NYAKOUB,"-8.18609615,30.98264123,0",-8.18609615,30.98264123
|
138 |
-
136,AGARD NOU WARTANE,"-7.769123661,31.1898963,0",-7.769123661,31.1898963
|
139 |
-
137,TIZI OUSSAME,"-7.9738955,31.11902021,0",-7.9738955,31.11902021
|
140 |
-
138,TAHLIWINE,"-7.981495079,31.13976822,0",-7.981495079,31.13976822
|
141 |
-
139,AGADIR NIMARGHSEN,"-8.34119211,30.99428923,0",-8.34119211,30.99428923
|
142 |
-
140,AGOURGUINE,"-8.210481794,30.95938619,0",-8.210481794,30.95938619
|
143 |
-
141,BIOUGRA,"-8.85454592,31.04562362,0",-8.85454592,31.04562362
|
144 |
-
142,AIT OUAKRIM,"-8.846545392,31.0543903,0",-8.846545392,31.0543903
|
145 |
-
143,EL KATTAJARTE,"-8.858167918,31.07063878,0",-8.858167918,31.07063878
|
146 |
-
144,TAMAZGOURTE,"-8.685685303,31.04383076,0",-8.685685303,31.04383076
|
147 |
-
145,AIT BOUJMAA,"-8.222531324,30.94950981,0",-8.222531324,30.94950981
|
148 |
-
146,AIT MARGANE,"-7.664406404,31.27732256,0",-7.664406404,31.27732256
|
149 |
-
147,TIZI YANE,"-7.986185147,31.13787727,0",-7.986185147,31.13787727
|
150 |
-
148,DAR EL AASKAR,"-8.131289948,30.97208424,0",-8.131289948,30.97208424
|
151 |
-
149,AIT ALI OUBDIR,"-7.572436703,31.37038386,0",-7.572436703,31.37038386
|
152 |
-
150,AIT WAYIRRI,"-7.586704325,31.36921719,0",-7.586704325,31.36921719
|
153 |
-
151,IGHRISSE,"-7.134396853,31.29971148,0",-7.134396853,31.29971148
|
154 |
-
152,AT AGRALIOUNE,"-6.558645635,31.23697078,0",-6.558645635,31.23697078
|
155 |
-
153,TIZI OUSSOUL,"-8.271719531,31.08633853,0",-8.271719531,31.08633853
|
156 |
-
154,INFAGUE,"-8.258189743,31.14683124,0",-8.258189743,31.14683124
|
157 |
-
155,AYNAGHDE,"-8.264684467,31.13651009,0",-8.264684467,31.13651009
|
158 |
-
156,TIMICHI,"-7.768290383,31.19409736,0",-7.768290383,31.19409736
|
159 |
-
157,IMIN TADERTE,"-7.666196613,31.25052962,0",-7.666196613,31.25052962
|
160 |
-
158,TIL IWA,"-8.498261502,31.15189144,0",-8.498261502,31.15189144
|
161 |
-
159,AMASGUINE,"-8.093673278,31.13138194,0",-8.093673278,31.13138194
|
162 |
-
160,AGADIR NAIT SLIMANE,"-7.790425723,31.37275221,0",-7.790425723,31.37275221
|
163 |
-
161,AGHALLA,"-8.379023522,31.00149934,0",-8.379023522,31.00149934
|
164 |
-
162,WIZAMMARNE,"-8.424340636,30.89790753,0",-8.424340636,30.89790753
|
165 |
-
163,DOU ANAMAR,"-8.25663632,31.14251934,0",-8.25663632,31.14251934
|
166 |
-
164,ADOUZE,"-8.265609154,31.12606139,0",-8.265609154,31.12606139
|
167 |
-
165,TINZARTE,"-8.008483393,31.19039234,0",-8.008483393,31.19039234
|
168 |
-
166,IMITAZAKHTE,"-6.679107629,31.28762664,0",-6.679107629,31.28762664
|
169 |
-
167,ANZELFI,"-8.54142639,31.0428742,0",-8.54142639,31.0428742
|
170 |
-
168,IMIRGHENE,"-7.274854704,31.24935118,0",-7.274854704,31.24935118
|
171 |
-
169,IMAGDAL,"-8.119632896,31.12302789,0",-8.119632896,31.12302789
|
172 |
-
170,TAWITE,"-8.075970003,31.09290085,0",-8.075970003,31.09290085
|
173 |
-
171,AMLOUGUI,"-7.649426842,31.23570758,0",-7.649426842,31.23570758
|
174 |
-
172,TASAMOUTE,"-8.109871191,31.02576739,0",-8.109871191,31.02576739
|
175 |
-
173,AMSSED,"-8.311672788,30.93709876,0",-8.311672788,30.93709876
|
176 |
-
174,ANFGAYNE,"-7.694702248,31.231803,0",-7.694702248,31.231803
|
177 |
-
175,TAGADIRTE,"-8.701881729,31.10208624,0",-8.701881729,31.10208624
|
178 |
-
176,ZINIT LALLA AAZIZA,"-8.700591256,31.0812321,0",-8.700591256,31.0812321
|
179 |
-
177,TAMTDJIT,"-8.655328517,31.05886225,0",-8.655328517,31.05886225
|
180 |
-
178,AIT IHLA,"-8.361156722,31.11029123,0",-8.361156722,31.11029123
|
181 |
-
179,TLATE,"-8.35817683,31.10664588,0",-8.35817683,31.10664588
|
182 |
-
180,WINIMADSEN,"-7.48798433,31.30994744,0",-7.48798433,31.30994744
|
183 |
-
181,ASSOULE,"-8.285985146,30.92565576,0",-8.285985146,30.92565576
|
184 |
-
182,WASSANTOTE,"-8.18424076,31.09273558,0",-8.18424076,31.09273558
|
185 |
-
183,AIT AYOUBE,"-8.022010242,30.99507123,0",-8.022010242,30.99507123
|
186 |
-
184,TAGNITE,"-8.675968143,31.04095368,0",-8.675968143,31.04095368
|
187 |
-
185,TADDARTE,"-7.979404181,31.14226911,0",-7.979404181,31.14226911
|
188 |
-
186,,"-8.167152366,30.99464682,0",-8.167152366,30.99464682
|
189 |
-
187,ADRAG,"-8.253195535,30.97733592,0",-8.253195535,30.97733592
|
190 |
-
188,ANABDOUR,"-8.244241981,30.97126033,0",-8.244241981,30.97126033
|
191 |
-
189,MZOUZITE,"-8.243059132,30.96860948,0",-8.243059132,30.96860948
|
192 |
-
190,AIT BARRIHI,"-8.195323317,30.99222315,0",-8.195323317,30.99222315
|
193 |
-
191,ALANOU MAZGHNI,"-8.123760765,31.02343567,0",-8.123760765,31.02343567
|
194 |
-
192,IGRAMNE-IMI NOUAKA,"-6.121369893,31.45712817,0",-6.121369893,31.45712817
|
195 |
-
193,IGRI FOUDENE,"-7.718579809,31.29225575,0",-7.718579809,31.29225575
|
196 |
-
194,AKRDA,"-8.040496688,30.99251415,0",-8.040496688,30.99251415
|
197 |
-
195,AIT MOUSSA,"-8.046781385,30.98907614,0",-8.046781385,30.98907614
|
198 |
-
196,TIGHARGHISTE,"-8.061533719,30.99127805,0",-8.061533719,30.99127805
|
199 |
-
197,ASSAKA,"-7.673208952,31.36643128,0",-7.673208952,31.36643128
|
200 |
-
198,TIZANGHIRINE,"-9.003674741,30.99520662,0",-9.003674741,30.99520662
|
201 |
-
199,ANARNI,"-8.316482209,31.11751002,0",-8.316482209,31.11751002
|
202 |
-
200,AZGOUR,"-8.312961466,31.13806145,0",-8.312961466,31.13806145
|
203 |
-
201,TAGOUDJA,"-7.510471158,31.37311654,0",-7.510471158,31.37311654
|
204 |
-
202,AIT TAGGOUME,"-7.523740779,31.36439845,0",-7.523740779,31.36439845
|
205 |
-
203,ADOUZ,"-8.435303451,30.91718644,0",-8.435303451,30.91718644
|
206 |
-
204,ASSOUL,"-8.350141876,30.90541249,0",-8.350141876,30.90541249
|
207 |
-
205,TADRART,"-7.734595102,31.207539,0",-7.734595102,31.207539
|
208 |
-
206,AGARD,"-7.648576947,31.27464029,0",-7.648576947,31.27464029
|
209 |
-
207,ASSAKA CHORFA,"-9.002771254,30.89973399,0",-9.002771254,30.89973399
|
210 |
-
208,ISLI,"-9.017260332,30.94970088,0",-9.017260332,30.94970088
|
211 |
-
209,TINDRI,"-8.60659665,31.00737725,0",-8.60659665,31.00737725
|
212 |
-
210,IGARNTIQURI,"-8.556631674,31.03931448,0",-8.556631674,31.03931448
|
213 |
-
211,IGRI NAIT HAMOU,"-7.714289853,31.28922589,0",-7.714289853,31.28922589
|
214 |
-
212,IMI NOUAGUE,"-6.507219911,31.31164693,0",-6.507219911,31.31164693
|
215 |
-
213,IMAOUNINE,"-7.241029231,31.28750314,0",-7.241029231,31.28750314
|
216 |
-
214,IHANDAGHENE,"-7.268670136,31.27913073,0",-7.268670136,31.27913073
|
217 |
-
215,TARGA,"-8.062095344,31.08941826,0",-8.062095344,31.08941826
|
218 |
-
216,TIGMATINE,"-8.871173133,31.09140265,0",-8.871173133,31.09140265
|
219 |
-
217,TAJOUGJITE,"-7.142724853,31.22045065,0",-7.142724853,31.22045065
|
220 |
-
218,IDAISSA,"-7.976416621,31.13454988,0",-7.976416621,31.13454988
|
221 |
-
219,IMIN IGHZARN AISSA,"-8.578943436,31.01448801,0",-8.578943436,31.01448801
|
222 |
-
220,TIMCHOUJTE,"-7.244350955,31.31050637,0",-7.244350955,31.31050637
|
223 |
-
221,TISSAYNE,"-8.934728699,31.06655367,0",-8.934728699,31.06655367
|
224 |
-
222,TAFRAOUTE,"-7.353618262,31.33674876,0",-7.353618262,31.33674876
|
225 |
-
223,AIT AOUASSI,"-7.349719343,31.33044408,0",-7.349719343,31.33044408
|
226 |
-
224,AGHBARANE,"-8.221073745,30.93873929,0",-8.221073745,30.93873929
|
227 |
-
225,AIT HSSAYNE,"-8.204087436,31.1389183,0",-8.204087436,31.1389183
|
228 |
-
226,TAGADIRTE NSIDI BEL QAS,"-7.767797703,31.25054841,0",-7.767797703,31.25054841
|
229 |
-
227,TISSILI NIGUADJI,"-7.693606161,31.40108034,0",-7.693606161,31.40108034
|
230 |
-
228,IZRAFEN,"-7.48918297,31.37080542,0",-7.48918297,31.37080542
|
231 |
-
229,ALLA NOUMARZI,"-8.157178044,30.97631353,0",-8.157178044,30.97631353
|
232 |
-
230,ASSAKA,"-7.134585047,31.21211585,0",-7.134585047,31.21211585
|
233 |
-
231,ANMITER,"-7.139775998,31.29199649,0",-7.139775998,31.29199649
|
234 |
-
232,TIMICHA,"-6.561634821,31.28603622,0",-6.561634821,31.28603622
|
235 |
-
233,EL HRTE,"-6.575098237,31.26301918,0",-6.575098237,31.26301918
|
236 |
-
234,ABGALZI,"-7.145792711,31.28018313,0",-7.145792711,31.28018313
|
237 |
-
235,IRGHEF,"-7.707368088,31.28349504,0",-7.707368088,31.28349504
|
238 |
-
236,AGNI,"-8.205291681,30.95571866,0",-8.205291681,30.95571866
|
239 |
-
237,TOUZZONTANE,"-8.212883175,30.95485707,0",-8.212883175,30.95485707
|
240 |
-
238,TIZI OU CHEG,"-7.676960537,31.28703604,0",-7.676960537,31.28703604
|
241 |
-
239,TOUROURTE,"-8.056901283,31.16782859,0",-8.056901283,31.16782859
|
242 |
-
240,AGUERZGA,"-6.119495917,31.49592185,0",-6.119495917,31.49592185
|
243 |
-
241,AOUSSIR,"-8.881594834,31.07956008,0",-8.881594834,31.07956008
|
244 |
-
242,ANSSA,"-8.492597726,30.98931298,0",-8.492597726,30.98931298
|
245 |
-
243,AWRIR,"-7.622404978,31.35916276,0",-7.622404978,31.35916276
|
246 |
-
244,WIGRANE,"-7.660595608,31.25863387,0",-7.660595608,31.25863387
|
247 |
-
245,ANRAZE,"-8.065444555,31.17173905,0",-8.065444555,31.17173905
|
248 |
-
246,AMESLOH,"-8.476795995,30.99161301,0",-8.476795995,30.99161301
|
249 |
-
247,TADDARATE,"-8.47021036,31.00998295,0",-8.47021036,31.00998295
|
250 |
-
248,TIGNARINE,"-8.480516854,31.10976709,0",-8.480516854,31.10976709
|
251 |
-
249,TIDRITE,"-5.842127606,31.64396077,0",-5.842127606,31.64396077
|
252 |
-
250,TARBAT,"-6.462074345,31.36227777,0",-6.462074345,31.36227777
|
253 |
-
251,TILFITINE,"-8.277117657,31.11776133,0",-8.277117657,31.11776133
|
254 |
-
252,TALAT NWARGUE,"-8.263895065,31.10196698,0",-8.263895065,31.10196698
|
255 |
-
253,TAGADIRTE EL BOOR,"-8.102563032,31.1560508,0",-8.102563032,31.1560508
|
256 |
-
254,TIZGUI,"-8.482122674,31.08812898,0",-8.482122674,31.08812898
|
257 |
-
255,IFAZDADNE,"-8.305709411,30.90635243,0",-8.305709411,30.90635243
|
258 |
-
256,AZAGHAR NADWAQ,"-8.065171121,31.12666314,0",-8.065171121,31.12666314
|
259 |
-
257,ILKRI,"-7.680245366,31.2246257,0",-7.680245366,31.2246257
|
260 |
-
258,IMASKARE,"-8.887233104,31.04004434,0",-8.887233104,31.04004434
|
261 |
-
259,BOUYZGARNE,"-7.71194699,31.24320063,0",-7.71194699,31.24320063
|
262 |
-
260,AGHELLA,"-8.863216279,31.08876411,0",-8.863216279,31.08876411
|
263 |
-
261,TALATANE,"-7.780461806,31.24592653,0",-7.780461806,31.24592653
|
264 |
-
262,IGRI LAKHMASS,"-7.775336615,31.27872173,0",-7.775336615,31.27872173
|
265 |
-
263,IZAHANE,"-7.657292989,31.27715731,0",-7.657292989,31.27715731
|
266 |
-
264,TIZGUI,"-8.177063418,31.18367261,0",-8.177063418,31.18367261
|
267 |
-
265,IGG,"-8.424342966,30.91197724,0",-8.424342966,30.91197724
|
268 |
-
266,IDGHAGHE,"-7.526584836,30.7003679,0",-7.526584836,30.7003679
|
269 |
-
267,KSAR AIT OUNIR,"-5.811146752,31.70253532,0",-5.811146752,31.70253532
|
270 |
-
268,AMASSINE,"-6.509539818,31.41636243,0",-6.509539818,31.41636243
|
271 |
-
269,TAOUJGALTE,"-6.34405063,31.39520221,0",-6.34405063,31.39520221
|
272 |
-
270,TARGA NAADA,"-6.503814061,31.26888738,0",-6.503814061,31.26888738
|
273 |
-
271,AGOUNSANE,"-7.800232094,31.34798036,0",-7.800232094,31.34798036
|
274 |
-
272,TINZARE,"-6.624488168,31.31027386,0",-6.624488168,31.31027386
|
275 |
-
273,AGRALIOUNE,"-6.555343101,31.22680537,0",-6.555343101,31.22680537
|
276 |
-
274,TAKOUCHT,"-7.819242968,31.28802923,0",-7.819242968,31.28802923
|
277 |
-
275,ANRAR,"-7.7767339,31.35555849,0",-7.7767339,31.35555849
|
278 |
-
276,TIMICHA,"-7.63908262,31.11996205,0",-7.63908262,31.11996205
|
279 |
-
277,AZALAGUE,"-7.641372612,31.12128054,0",-7.641372612,31.12128054
|
280 |
-
278,AIT IAZZA,"-5.777975403,31.78833057,0",-5.777975403,31.78833057
|
281 |
-
279,TIGHANIMINE,"-6.132570734,31.52703232,0",-6.132570734,31.52703232
|
282 |
-
280,TOURCHT,"-7.634188719,31.24043522,0",-7.634188719,31.24043522
|
283 |
-
281,TAROZOTE,"-7.502136185,31.36823721,0",-7.502136185,31.36823721
|
284 |
-
282,IHIYALEN,"-7.517931412,31.38141983,0",-7.517931412,31.38141983
|
285 |
-
283,AMSKARE-FOUKANI,"-6.266939777,31.50218915,0",-6.266939777,31.50218915
|
286 |
-
284,AIT BARKA,"-7.659018163,31.23353635,0",-7.659018163,31.23353635
|
287 |
-
285,IHOUDIGUENE,"-5.782133016,31.79529304,0",-5.782133016,31.79529304
|
288 |
-
286,IKIS,"-8.394850979,30.92661821,0",-8.394850979,30.92661821
|
289 |
-
287,OUDDIF,"-8.304477477,30.9976719,0",-8.304477477,30.9976719
|
290 |
-
288,ARG,"-8.269316678,30.90817692,0",-8.269316678,30.90817692
|
291 |
-
289,IGROUKA,"-7.641844734,31.37701613,0",-7.641844734,31.37701613
|
292 |
-
290,ASGUINE,"-7.761773298,31.3366744,0",-7.761773298,31.3366744
|
293 |
-
291,ANINS,"-7.692906923,31.31879063,0",-7.692906923,31.31879063
|
294 |
-
292,IMINTGHLI,"-8.801087341,31.09106256,0",-8.801087341,31.09106256
|
295 |
-
293,IKISS,"-7.507785488,31.32512731,0",-7.507785488,31.32512731
|
296 |
-
294,CHAABAT ELMA,"-7.787736965,31.3720564,0",-7.787736965,31.3720564
|
297 |
-
295,TILIOUINE,"-6.562538396,31.29226808,0",-6.562538396,31.29226808
|
298 |
-
296,AZADALE,"-6.601113902,31.31452611,0",-6.601113902,31.31452611
|
299 |
-
297,BOUDJAME,"-5.783355194,31.77381534,0",-5.783355194,31.77381534
|
300 |
-
298,TAMSSLITE,"-6.460035903,31.43563737,0",-6.460035903,31.43563737
|
301 |
-
299,INKZDAME,"-8.004535496,31.00475544,0",-8.004535496,31.00475544
|
302 |
-
300,ATKI,"-8.032025678,30.9931675,0",-8.032025678,30.9931675
|
303 |
-
301,OURMARE,"-8.252416876,31.08642563,0",-8.252416876,31.08642563
|
304 |
-
302,TAMZARITE,"-6.547114664,31.41003957,0",-6.547114664,31.41003957
|
305 |
-
303,LAMKIK,"-6.443690553,31.37387911,0",-6.443690553,31.37387911
|
306 |
-
304,ASSAKA,"-6.432129548,31.39334157,0",-6.432129548,31.39334157
|
307 |
-
305,TIZGUI,"-6.476920363,31.40622175,0",-6.476920363,31.40622175
|
308 |
-
306,ASSAKA,"-6.483024781,31.41801641,0",-6.483024781,31.41801641
|
309 |
-
307,TADAFALTE,"-8.321145313,30.97903581,0",-8.321145313,30.97903581
|
310 |
-
308,TAGADIRTE,"-8.310292123,30.98004249,0",-8.310292123,30.98004249
|
311 |
-
309,TAMZANDIRT,"-7.751230364,31.33215256,0",-7.751230364,31.33215256
|
312 |
-
310,ANMID,"-7.607920302,30.85848983,0",-7.607920302,30.85848983
|
313 |
-
311,AZAL,"-8.264922194,30.94655686,0",-8.264922194,30.94655686
|
314 |
-
312,IMALLAHNE,"-7.672856622,31.3860914,0",-7.672856622,31.3860914
|
315 |
-
313,AMJGAGE,"-6.209971614,31.45239865,0",-6.209971614,31.45239865
|
316 |
-
314,TAGDOURT,"-7.620397609,30.84283446,0",-7.620397609,30.84283446
|
317 |
-
315,TALJORFTE,"-7.728949362,31.30692128,0",-7.728949362,31.30692128
|
318 |
-
316,AIT IGHMOURE,"-7.538210307,30.70168846,0",-7.538210307,30.70168846
|
319 |
-
317,AGRD NOUZROU,"-6.558541747,31.28850738,0",-6.558541747,31.28850738
|
320 |
-
318,AMOUGAR,"-5.846609784,31.62470485,0",-5.846609784,31.62470485
|
321 |
-
319,AIT QUALLA,"-7.656339369,30.90544675,0",-7.656339369,30.90544675
|
322 |
-
320,AL MDOUNE,"-6.20235902,31.42763569,0",-6.20235902,31.42763569
|
323 |
-
321,ZRIJT,"-8.441443251,30.91375831,0",-8.441443251,30.91375831
|
324 |
-
322,TANAMMARE,"-8.398497315,30.9107806,0",-8.398497315,30.9107806
|
325 |
-
323,AIT HSSAINE,"-8.151179364,31.20399903,0",-8.151179364,31.20399903
|
326 |
-
324,TICHKI,"-7.629171133,31.34976701,0",-7.629171133,31.34976701
|
327 |
-
325,TEZ GUI,"-8.039204879,31.07330568,0",-8.039204879,31.07330568
|
328 |
-
326,AIT YAAZZA,"-5.887769437,31.68758446,0",-5.887769437,31.68758446
|
329 |
-
327,TICHKI,"-6.305032532,31.50476453,0",-6.305032532,31.50476453
|
330 |
-
328,AIT MOUSSA OU DAOUD,"-6.296860707,31.41044965,0",-6.296860707,31.41044965
|
331 |
-
329,AIT TOUKHSSINE,"-5.792466322,31.77932095,0",-5.792466322,31.77932095
|
332 |
-
330,,"-5.822449187,31.69079439,0",-5.822449187,31.69079439
|
333 |
-
331,AMSSKAR,"-6.38208111,31.44339569,0",-6.38208111,31.44339569
|
334 |
-
332,TITADRI,"-7.330541129,31.37025263,0",-7.330541129,31.37025263
|
335 |
-
333,IGUINE,"-7.649034385,31.37278854,0",-7.649034385,31.37278854
|
336 |
-
334,ZAOUIT,"-8.195121207,31.19290153,0",-8.195121207,31.19290153
|
337 |
-
335,TIMSLAH,"-8.341765942,31.00029908,0",-8.341765942,31.00029908
|
338 |
-
336,TABOUYDANTE,"-5.876448445,31.68864413,0",-5.876448445,31.68864413
|
339 |
-
337,KSSAR AIT BOU YAKNIFENE,"-5.880910957,31.68190672,0",-5.880910957,31.68190672
|
340 |
-
338,CENTRE MSEMRIR,"-5.819558695,31.69511553,0",-5.819558695,31.69511553
|
341 |
-
339,ZAOUITE,"-7.522361715,31.35499748,0",-7.522361715,31.35499748
|
342 |
-
340,TIZI TIGARTE,"-8.303259489,30.99599767,0",-8.303259489,30.99599767
|
343 |
-
341,AIT ALIOU YAKKOU,"-5.763268987,31.83493978,0",-5.763268987,31.83493978
|
344 |
-
342,TANAGHRAMT,"-7.879417183,30.90181545,0",-7.879417183,30.90181545
|
345 |
-
343,TIMYALINE,"-7.880210879,30.90518988,0",-7.880210879,30.90518988
|
346 |
-
344,ANZI,"-8.197385544,30.83917524,0",-8.197385544,30.83917524
|
347 |
-
345,TIFSSTE,"-7.132420159,31.11779137,0",-7.132420159,31.11779137
|
348 |
-
346,TAOURIRTE NAIT SALAH,"-8.290143915,30.97411976,0",-8.290143915,30.97411976
|
349 |
-
347,TASSILA,"-8.266727192,30.97711903,0",-8.266727192,30.97711903
|
350 |
-
348,AIT MOUSSA OU ICHOU,"-5.747017292,31.83553539,0",-5.747017292,31.83553539
|
351 |
-
349,ABRACHE,"-6.681216456,31.25899907,0",-6.681216456,31.25899907
|
352 |
-
350,AIT SAID OU DAOUD,"-5.888790157,31.57765321,0",-5.888790157,31.57765321
|
353 |
-
351,AGARZAGA,"-6.882608642,31.21876174,0",-6.882608642,31.21876174
|
354 |
-
352,ASSAISS,"-7.609851014,30.57216873,0",-7.609851014,30.57216873
|
355 |
-
353,TINIDER,"-7.666679065,30.61749972,0",-7.666679065,30.61749972
|
356 |
-
354,IMOUZZAR,"-7.384296298,31.32519478,0",-7.384296298,31.32519478
|
357 |
-
355,GHASSAT,"-8.335186603,30.99921225,0",-8.335186603,30.99921225
|
358 |
-
356,IMOULDIGHENE,"-7.959453166,30.95113726,0",-7.959453166,30.95113726
|
359 |
-
357,,"-7.527966123,30.61390767,0",-7.527966123,30.61390767
|
360 |
-
358,AIT TOUMERT,"-6.243369405,31.41574114,0",-6.243369405,31.41574114
|
361 |
-
359,IGUENTOURNE,"-8.938717662,30.6912082,0",-8.938717662,30.6912082
|
362 |
-
360,AMAGDOUL,"-8.925222424,30.66929851,0",-8.925222424,30.66929851
|
363 |
-
361,TIMSSALE,"-6.694552474,31.23457144,0",-6.694552474,31.23457144
|
364 |
-
362,TAGADIRTE AIT WAHI,"-7.947583505,30.9210867,0",-7.947583505,30.9210867
|
365 |
-
363,TAGHIYA,"-6.808894536,31.26166383,0",-6.808894536,31.26166383
|
366 |
-
364,TIGLIANE,"-8.89478025,30.72539073,0",-8.89478025,30.72539073
|
367 |
-
365,TAGADIRET,"-8.886693656,30.72955695,0",-8.886693656,30.72955695
|
368 |
-
366,TAGNIT,"-8.199316694,30.87943334,0",-8.199316694,30.87943334
|
369 |
-
367,ASGAWR,"-7.756406851,30.71787208,0",-7.756406851,30.71787208
|
370 |
-
368,AIT TABOU LMANTE,"-5.864282929,31.68225821,0",-5.864282929,31.68225821
|
371 |
-
369,AIT TAFKIRTE,"-5.799661316,31.74693731,0",-5.799661316,31.74693731
|
372 |
-
370,TAWRIRT,"-8.203877152,30.88183484,0",-8.203877152,30.88183484
|
373 |
-
371,TILIOUINE,"-6.987594943,31.25630831,0",-6.987594943,31.25630831
|
374 |
-
372,AGDIME,"-6.853643978,31.30609377,0",-6.853643978,31.30609377
|
375 |
-
373,EL HOUANTE,"-6.85985786,31.2648211,0",-6.85985786,31.2648211
|
376 |
-
374,ZAOUTE,"-7.945659986,30.97287352,0",-7.945659986,30.97287352
|
377 |
-
375,TAMMASTE,"-7.662227195,31.05596146,0",-7.662227195,31.05596146
|
378 |
-
376,AIT BEN HAMMOU,"-5.89440563,31.57443673,0",-5.89440563,31.57443673
|
379 |
-
377,AWFOUR,"-8.848306639,30.75556169,0",-8.848306639,30.75556169
|
380 |
-
378,WALLOUSS,"-7.764813203,30.75665998,0",-7.764813203,30.75665998
|
381 |
-
379,,"-5.800934219,31.74152475,0",-5.800934219,31.74152475
|
382 |
-
380,TASSALLATE,"-7.627445074,31.3775513,0",-7.627445074,31.3775513
|
383 |
-
381,IKAMACHENE,"-8.881199254,30.72921941,0",-8.881199254,30.72921941
|
384 |
-
382,AGHALLA,"-7.8837366,30.89122112,0",-7.8837366,30.89122112
|
385 |
-
383,TANAJMCHT,"-8.151772777,30.85684235,0",-8.151772777,30.85684235
|
386 |
-
384,AIT DAOUD,"-6.26684104,31.40875615,0",-6.26684104,31.40875615
|
387 |
-
385,AMSKARE-ELTHTANI,"-6.230746416,31.4875726,0",-6.230746416,31.4875726
|
388 |
-
386,TAGHZOUTE,"-5.809855758,31.72648804,0",-5.809855758,31.72648804
|
389 |
-
387,ZAOUIAT SIDI IDDAR,"-7.69174931,31.06980356,0",-7.69174931,31.06980356
|
390 |
-
388,TAMGUIMGANTE,"-7.381864596,31.34207263,0",-7.381864596,31.34207263
|
391 |
-
389,IMIDER,"-6.686775913,31.21099313,0",-6.686775913,31.21099313
|
392 |
-
390,EL KERRAKER,"-8.454871666,30.68850249,0",-8.454871666,30.68850249
|
393 |
-
391,TAMDDAKHTE,"-7.144840326,31.08841797,0",-7.144840326,31.08841797
|
394 |
-
392,ASKAWN,"-7.78182368,30.74016769,0",-7.78182368,30.74016769
|
395 |
-
393,IMAGHOUDENEJ,"-7.682126165,31.06082178,0",-7.682126165,31.06082178
|
396 |
-
394,BAAKADE,"-7.685716157,31.05355428,0",-7.685716157,31.05355428
|
397 |
-
395,ANSSGHA,"-7.199113119,31.13741376,0",-7.199113119,31.13741376
|
398 |
-
396,SDIW,"-8.235739081,30.81751283,0",-8.235739081,30.81751283
|
399 |
-
397,AOUZLIDA,"-8.908769399,30.71410763,0",-8.908769399,30.71410763
|
400 |
-
398,TANOUZAKTE,"-8.819116057,30.9100969,0",-8.819116057,30.9100969
|
401 |
-
399,TANDILTE,"-8.007614533,30.85936924,0",-8.007614533,30.85936924
|
402 |
-
400,TIZGUI NIBARAGHNE,"-7.945922161,30.90710765,0",-7.945922161,30.90710765
|
403 |
-
401,ANMITERE,"-7.904631515,30.99124262,0",-7.904631515,30.99124262
|
404 |
-
402,AIT SAWAL,"-8.197984999,30.88738233,0",-8.197984999,30.88738233
|
405 |
-
403,BOUGADIR,"-8.630610581,30.70615098,0",-8.630610581,30.70615098
|
406 |
-
404,MEZDOURT,"-7.800690578,30.71758595,0",-7.800690578,30.71758595
|
407 |
-
405,TIFKILTE,"-7.921046416,30.88452468,0",-7.921046416,30.88452468
|
408 |
-
406,TAZIRTE,"-8.775818842,30.87767967,0",-8.775818842,30.87767967
|
409 |
-
407,TESSFFEDRARTE,"-7.645428403,30.57160162,0",-7.645428403,30.57160162
|
410 |
-
408,AIT AICHT,"-7.621116272,30.55955648,0",-7.621116272,30.55955648
|
411 |
-
409,TISSLITE,"-7.597444479,30.55429253,0",-7.597444479,30.55429253
|
412 |
-
410,FERME AIT YOUB EL AOUMARI HAJ Med,"-8.415410138,30.68949467,0",-8.415410138,30.68949467
|
413 |
-
411,IDGOU WANOUDINE,"-7.830881041,31.02212679,0",-7.830881041,31.02212679
|
414 |
-
412,AIT ABDESSLAM,"-5.808145999,31.75516944,0",-5.808145999,31.75516944
|
415 |
-
413,,"-5.802036392,31.73764392,0",-5.802036392,31.73764392
|
416 |
-
414,TIZGUINE,"-5.869412138,31.59690225,0",-5.869412138,31.59690225
|
417 |
-
415,TALMODAT,"-8.569451299,30.86561961,0",-8.569451299,30.86561961
|
418 |
-
416,AKHFERGA,"-8.832855006,30.87295993,0",-8.832855006,30.87295993
|
419 |
-
417,AIT IBOURK,"-8.327818985,30.85038146,0",-8.327818985,30.85038146
|
420 |
-
418,TAKALIT,"-8.329152945,30.84511839,0",-8.329152945,30.84511839
|
421 |
-
419,TIZIRTNOUDBDI,"-8.472046968,30.84961712,0",-8.472046968,30.84961712
|
422 |
-
420,AGUERD OURIGH,"-8.582792805,30.79763493,0",-8.582792805,30.79763493
|
423 |
-
421,TIGHINMIMT,"-8.584455427,30.79324401,0",-8.584455427,30.79324401
|
424 |
-
422,TIZA-YRHE,"-8.595599282,30.79109193,0",-8.595599282,30.79109193
|
425 |
-
423,AL KHOUMS,"-8.579016064,30.82294241,0",-8.579016064,30.82294241
|
426 |
-
424,RKAT,"-7.816862779,30.7878928,0",-7.816862779,30.7878928
|
427 |
-
425,AIT OUZAGHAR,"-7.791460939,30.81381739,0",-7.791460939,30.81381739
|
428 |
-
426,ANNOUMSSE,"-8.788839295,30.87556701,0",-8.788839295,30.87556701
|
429 |
-
427,IGHAZRA,"-8.643017916,30.74872935,0",-8.643017916,30.74872935
|
430 |
-
428,TIRAZAT,"-8.595247967,30.75262692,0",-8.595247967,30.75262692
|
431 |
-
429,IMINTFARKI,"-8.618869079,30.75029522,0",-8.618869079,30.75029522
|
432 |
-
430,AIT BELOUAH,"-8.752385605,30.65092821,0",-8.752385605,30.65092821
|
433 |
-
431,ARG,"-8.955168704,30.80643911,0",-8.955168704,30.80643911
|
434 |
-
432,TAOURIRTE IMOUCHA,"-8.867737505,30.86905652,0",-8.867737505,30.86905652
|
435 |
-
433,ASSAKA,"-8.91282953,30.8971422,0",-8.91282953,30.8971422
|
436 |
-
434,AGLAGAL,"-7.76476813,30.69129018,0",-7.76476813,30.69129018
|
437 |
-
435,AGUERD NOUDRAR,"-7.757166229,30.69023965,0",-7.757166229,30.69023965
|
438 |
-
436,TAKOUCHT,"-8.603375344,30.77826858,0",-8.603375344,30.77826858
|
439 |
-
437,TATRARAT,"-6.435979226,31.37640463,0",-6.435979226,31.37640463
|
440 |
-
438,IKOUCHOUDEN,"-7.810788121,30.77672478,0",-7.810788121,30.77672478
|
441 |
-
439,ILEMERZEN,"-7.823503006,30.80488341,0",-7.823503006,30.80488341
|
442 |
-
440,OUZLINE,"-7.28147163,31.30065138,0",-7.28147163,31.30065138
|
443 |
-
441,IGHILAN ADBDI,"-8.484478269,30.83504176,0",-8.484478269,30.83504176
|
444 |
-
442,IMI NOULAOUNE,"-6.506134637,31.37691833,0",-6.506134637,31.37691833
|
445 |
-
443,FARNAT TAOUINAKHT,"-8.485791943,30.77488045,0",-8.485791943,30.77488045
|
446 |
-
444,TINISKTE,"-8.144569317,31.113591,0",-8.144569317,31.113591
|
447 |
-
445,ADOUZ,"-8.183960487,30.86197654,0",-8.183960487,30.86197654
|
448 |
-
446,AIT YAHIA,"-8.257623929,30.84433189,0",-8.257623929,30.84433189
|
449 |
-
447,TALBOURINE,"-8.421629944,30.80069862,0",-8.421629944,30.80069862
|
450 |
-
448,AZAENE,"-8.610499678,30.70795003,0",-8.610499678,30.70795003
|
451 |
-
449,TAZELFTE,"-7.147408952,31.09841069,0",-7.147408952,31.09841069
|
452 |
-
450,AGUERD,"-8.762439227,30.77371202,0",-8.762439227,30.77371202
|
453 |
-
451,TAGANTOURTE,"-8.759656094,30.79795227,0",-8.759656094,30.79795227
|
454 |
-
452,IMOULASS,"-8.754958456,30.74281282,0",-8.754958456,30.74281282
|
455 |
-
453,TIRAKHT,"-8.755493446,30.73671007,0",-8.755493446,30.73671007
|
456 |
-
454,ASDERM,"-8.38636388,30.76145258,0",-8.38636388,30.76145258
|
457 |
-
455,OUZIGHIMT,"-8.588565128,30.77712713,0",-8.588565128,30.77712713
|
458 |
-
456,IFASFASS,"-8.63714647,30.74690271,0",-8.63714647,30.74690271
|
459 |
-
457,IGHEBLI,"-7.932619008,30.90228266,0",-7.932619008,30.90228266
|
460 |
-
458,TAGOUNSSIM,"-8.549138911,30.70883558,0",-8.549138911,30.70883558
|
461 |
-
459,IMOUREKHSANE,"-7.865672085,30.9169487,0",-7.865672085,30.9169487
|
462 |
-
460,AMGUERNIS,"-8.553794608,30.86876174,0",-8.553794608,30.86876174
|
463 |
-
461,TITBIRINE,"-8.554268198,30.86437507,0",-8.554268198,30.86437507
|
464 |
-
462,AGARDE,"-8.182037107,31.1332386,0",-8.182037107,31.1332386
|
465 |
-
463,AIT AMLOUCHE,"-5.811800541,31.74495977,0",-5.811800541,31.74495977
|
466 |
-
464,AIT OUAATIK,"-5.800731952,31.75635665,0",-5.800731952,31.75635665
|
467 |
-
465,IFRANE,"-8.820574903,30.75352712,0",-8.820574903,30.75352712
|
468 |
-
466,,"-8.766850821,30.72686082,0",-8.766850821,30.72686082
|
469 |
-
467,AGUERD OUSGUINE,"-8.767145739,30.73643085,0",-8.767145739,30.73643085
|
470 |
-
468,TAMSOULT,"-7.942552746,30.96699576,0",-7.942552746,30.96699576
|
471 |
-
469,TASSOUANTE,"-7.937216627,30.97408784,0",-7.937216627,30.97408784
|
472 |
-
470,ALMDAD,"-8.310710124,30.76448039,0",-8.310710124,30.76448039
|
473 |
-
471,TAMIJARCHT,"-8.302608514,30.7914501,0",-8.302608514,30.7914501
|
474 |
-
472,AMGHAZ,"-8.317951789,30.77429776,0",-8.317951789,30.77429776
|
475 |
-
473,AIT OUMGHAR,"-8.884564933,30.73201756,0",-8.884564933,30.73201756
|
476 |
-
474,TANZINRIT,"-8.513195119,30.75180242,0",-8.513195119,30.75180242
|
477 |
-
475,,"-8.541490603,30.7364508,0",-8.541490603,30.7364508
|
478 |
-
476,IGOURZANE,"-7.818114538,30.81078939,0",-7.818114538,30.81078939
|
479 |
-
477,TIRKNIT,"-8.45009892,30.82258425,0",-8.45009892,30.82258425
|
480 |
-
478,BUREAU DES EAUX ET FORETS,"-8.4455527,30.68231957,0",-8.4455527,30.68231957
|
481 |
-
479,FERMAT EL FASSI PRES DU DOUAR OULAD AMRANE,"-8.452421991,30.66732962,0",-8.452421991,30.66732962
|
482 |
-
480,TALMOUDAAT,"-7.806956411,30.89324192,0",-7.806956411,30.89324192
|
483 |
-
481,TIZGUI,"-7.806830274,30.90103568,0",-7.806830274,30.90103568
|
484 |
-
482,ZAOUIAT BOU INCHIBIKENE,"-8.54941558,30.70032408,0",-8.54941558,30.70032408
|
485 |
-
483,INDARMASS,"-8.54220451,30.7221921,0",-8.54220451,30.7221921
|
486 |
-
484,TIKFELT,"-8.722743606,30.76342809,0",-8.722743606,30.76342809
|
487 |
-
485,IDWAMGHAR,"-7.820295831,30.80721099,0",-7.820295831,30.80721099
|
488 |
-
486,TARGA,"-7.932835889,30.97202419,0",-7.932835889,30.97202419
|
489 |
-
487,AZAR,"-8.965981567,30.8325616,0",-8.965981567,30.8325616
|
490 |
-
488,AMSKRAR,"-8.344054924,30.82712525,0",-8.344054924,30.82712525
|
491 |
-
489,,"-8.648334951,30.68129831,0",-8.648334951,30.68129831
|
492 |
-
490,WAWARG,"-7.923174319,30.98241656,0",-7.923174319,30.98241656
|
493 |
-
491,TISSWAIK,"-7.730897189,30.8234764,0",-7.730897189,30.8234764
|
494 |
-
492,AGDZ,"-7.815615943,30.74139918,0",-7.815615943,30.74139918
|
495 |
-
493,AIT TOUGDA,"-7.790395185,30.80279245,0",-7.790395185,30.80279245
|
496 |
-
494,AIT TIYOUGA,"-8.393363749,30.84861434,0",-8.393363749,30.84861434
|
497 |
-
495,TADMANTE,"-7.784747386,30.76229142,0",-7.784747386,30.76229142
|
498 |
-
496,TALMERSELTE,"-7.813176069,31.00818682,0",-7.813176069,31.00818682
|
499 |
-
497,IZAROUALENE,"-8.871658014,30.73576255,0",-8.871658014,30.73576255
|
500 |
-
498,ITORRA,"-8.956211539,30.7455058,0",-8.956211539,30.7455058
|
501 |
-
499,TANOUTE,"-8.834599707,30.90320047,0",-8.834599707,30.90320047
|
502 |
-
500,AIT DDYA,"-7.574460469,30.57790584,0",-7.574460469,30.57790584
|
503 |
-
501,TIMITARE,"-7.850853086,30.78919204,0",-7.850853086,30.78919204
|
504 |
-
502,AIT HAMMOU,"-5.903878302,31.56838855,0",-5.903878302,31.56838855
|
505 |
-
503,TILLOUTE,"-5.85176342,31.6234145,0",-5.85176342,31.6234145
|
506 |
-
504,TAMANNOUT NOUFELLA,"-7.603880345,30.60415703,0",-7.603880345,30.60415703
|
507 |
-
505,AIT AMRANE,"-7.578220237,30.59381345,0",-7.578220237,30.59381345
|
508 |
-
506,AGOULZI,"-7.572403098,30.58983434,0",-7.572403098,30.58983434
|
509 |
-
507,AGUERD NOUZAGHAR,"-7.820739744,30.82955591,0",-7.820739744,30.82955591
|
510 |
-
508,AMAZZER,"-7.81893493,30.84133263,0",-7.81893493,30.84133263
|
511 |
-
509,AIT MERHOUCH,"-8.438238369,30.80710931,0",-8.438238369,30.80710931
|
512 |
-
510,TAGUENZA,"-8.807073414,30.87551007,0",-8.807073414,30.87551007
|
513 |
-
511,IGHIL,"-8.81733012,30.7610419,0",-8.81733012,30.7610419
|
514 |
-
512,AIT IFRANE,"-8.884265911,30.73589552,0",-8.884265911,30.73589552
|
515 |
-
513,IKISS,"-7.889390228,30.95270649,0",-7.889390228,30.95270649
|
516 |
-
514,AGADIR,"-7.8368164,31.01085191,0",-7.8368164,31.01085191
|
517 |
-
515,ILEMSSANE,"-7.836797742,30.81324563,0",-7.836797742,30.81324563
|
518 |
-
516,ID WASKIOUIDE,"-7.785849147,30.75382085,0",-7.785849147,30.75382085
|
519 |
-
517,TAWARDA,"-8.118515403,30.86703651,0",-8.118515403,30.86703651
|
520 |
-
518,TAKHAZNIT,"-8.620628211,30.77263308,0",-8.620628211,30.77263308
|
521 |
-
519,TAGOUNITE AFEKHAR,"-7.836808851,30.98972237,0",-7.836808851,30.98972237
|
522 |
-
520,AIT BEN YOUSSEF,"-8.605889427,30.66959105,0",-8.605889427,30.66959105
|
523 |
-
521,AKOUCHTIM,"-7.735235669,30.81551173,0",-7.735235669,30.81551173
|
524 |
-
522,IKACHANEN,"-8.8459234,30.93416814,0",-8.8459234,30.93416814
|
525 |
-
523,TIKCHIDERNE,"-7.766870029,31.03412592,0",-7.766870029,31.03412592
|
526 |
-
524,TALOUSTE,"-7.494700542,30.63500691,0",-7.494700542,30.63500691
|
527 |
-
525,WAWDIRNAT,"-8.431702241,30.80227715,0",-8.431702241,30.80227715
|
528 |
-
526,AMMADDANS,"-8.239451146,30.81262803,0",-8.239451146,30.81262803
|
529 |
-
527,TAMSOULTE,"-7.766640775,31.03257926,0",-7.766640775,31.03257926
|
530 |
-
528,AIT SADDEN,"-7.641380906,30.60288001,0",-7.641380906,30.60288001
|
531 |
-
529,TALAIOUNINE,"-8.754866761,30.66771507,0",-8.754866761,30.66771507
|
532 |
-
530,AIT MAADE,"-7.92230646,30.87650864,0",-7.92230646,30.87650864
|
533 |
-
531,TINSAMLAL,"-8.219098098,30.88172457,0",-8.219098098,30.88172457
|
534 |
-
532,AGNI,"-8.973937105,30.77574828,0",-8.973937105,30.77574828
|
535 |
-
533,TAMJJIRCHT,"-7.78243101,30.80973959,0",-7.78243101,30.80973959
|
536 |
-
534,ARMD,"-8.44233477,30.81919047,0",-8.44233477,30.81919047
|
537 |
-
535,AFELLA NOUZEGROUZE,"-8.027801881,30.86409957,0",-8.027801881,30.86409957
|
538 |
-
536,ARGHANE,"-8.204435538,30.88465368,0",-8.204435538,30.88465368
|
539 |
-
537,TAFILALT,"-8.976056085,30.79583021,0",-8.976056085,30.79583021
|
540 |
-
538,ADGHIGH,"-7.788831091,30.71192424,0",-7.788831091,30.71192424
|
541 |
-
539,OULAD AMER BEN ALI,"-8.513929646,30.62833394,0",-8.513929646,30.62833394
|
542 |
-
540,SIDI JAAFAR,"-6.523482797,31.26094675,0",-6.523482797,31.26094675
|
543 |
-
541,MGOUNTE,"-8.878252894,30.85004941,0",-8.878252894,30.85004941
|
544 |
-
542,AIT DAOUD,"-8.606458577,30.67650199,0",-8.606458577,30.67650199
|
545 |
-
543,BOUZOUGGAR,"-8.521814335,30.75193169,0",-8.521814335,30.75193169
|
546 |
-
544,AGOUJGALE,"-8.837669225,30.95456154,0",-8.837669225,30.95456154
|
547 |
-
545,TISSALE,"-8.626809086,30.85858292,0",-8.626809086,30.85858292
|
548 |
-
546,AMANE N-OULILI,"-8.336798501,30.76581498,0",-8.336798501,30.76581498
|
549 |
-
547,ANROZ,"-7.770804497,30.79985099,0",-7.770804497,30.79985099
|
550 |
-
548,TALMESTE,"-7.766250524,31.02173797,0",-7.766250524,31.02173797
|
551 |
-
549,OULAD AMRANE,"-8.426711211,30.67771642,0",-8.426711211,30.67771642
|
552 |
-
550,AFENSSOU,"-8.783648105,30.7070996,0",-8.783648105,30.7070996
|
553 |
-
551,MAGAT,"-8.416312875,30.85561983,0",-8.416312875,30.85561983
|
554 |
-
552,IFGHI,"-8.420335107,30.83778853,0",-8.420335107,30.83778853
|
555 |
-
553,AGUELMOUSSE,"-7.407680932,31.26484514,0",-7.407680932,31.26484514
|
556 |
-
554,AMAGHLOU,"-8.658584896,30.83817677,0",-8.658584896,30.83817677
|
557 |
-
555,TAMSOULT,"-8.608230566,30.8483082,0",-8.608230566,30.8483082
|
558 |
-
556,IHERFACH,"-8.62871585,30.82780329,0",-8.62871585,30.82780329
|
559 |
-
557,AZROU,"-7.763354336,31.01832251,0",-7.763354336,31.01832251
|
560 |
-
558,TIWRAR,"-7.759653433,31.03369852,0",-7.759653433,31.03369852
|
561 |
-
559,TEZZIR,"-7.755934806,31.02288592,0",-7.755934806,31.02288592
|
562 |
-
560,TAOURIRTE NOUMZIL,"-7.751523945,31.01559477,0",-7.751523945,31.01559477
|
563 |
-
561,,"-8.447254032,30.67739793,0",-8.447254032,30.67739793
|
564 |
-
562,OULAD FARESS,"-8.455642046,30.70263469,0",-8.455642046,30.70263469
|
565 |
-
563,ASSAKA,"-7.562672188,30.60210807,0",-7.562672188,30.60210807
|
566 |
-
564,TAGMOUTE,"-8.660391396,30.83004675,0",-8.660391396,30.83004675
|
567 |
-
565,ANNEZIGH,"-8.695404924,30.82720328,0",-8.695404924,30.82720328
|
568 |
-
566,TIMLILT,"-8.114425009,30.86001307,0",-8.114425009,30.86001307
|
569 |
-
567,AMSOUZARTE,"-7.83329748,31.01584663,0",-7.83329748,31.01584663
|
570 |
-
568,BOUSNOUSS,"-8.287052391,30.84385828,0",-8.287052391,30.84385828
|
571 |
-
569,BARKOUSSE,"-8.818105714,30.95152313,0",-8.818105714,30.95152313
|
572 |
-
570,AIT SAID,"-8.76977872,30.65467345,0",-8.76977872,30.65467345
|
573 |
-
571,TIGANZIOUINE,"-8.67032237,30.76594085,0",-8.67032237,30.76594085
|
574 |
-
572,AZGOUR,"-7.65942489,30.5451051,0",-7.65942489,30.5451051
|
575 |
-
573,AIT TACHRIFT,"-8.109758686,30.8643923,0",-8.109758686,30.8643923
|
576 |
-
574,AGADIRANE,"-8.066177132,30.89795236,0",-8.066177132,30.89795236
|
577 |
-
575,TAMADGHOUST,"-8.1561478,30.90891373,0",-8.1561478,30.90891373
|
578 |
-
576,IZAMRANE,"-8.133006882,30.86020781,0",-8.133006882,30.86020781
|
579 |
-
577,TIZQUI,"-8.140647061,30.88007341,0",-8.140647061,30.88007341
|
580 |
-
578,TASQUINT,"-8.682200392,30.7522616,0",-8.682200392,30.7522616
|
581 |
-
579,ABOUZIANE,"-8.508182197,30.78750081,0",-8.508182197,30.78750081
|
582 |
-
580,TIMGDAL,"-7.802959254,30.86064181,0",-7.802959254,30.86064181
|
583 |
-
581,ISWAL,"-7.753452728,31.0200754,0",-7.753452728,31.0200754
|
584 |
-
582,SINS,"-8.53704677,30.69877031,0",-8.53704677,30.69877031
|
585 |
-
583,AMECHTAKATE,"-8.753106931,30.77948216,0",-8.753106931,30.77948216
|
586 |
-
584,IFRI,"-7.793674698,30.75010439,0",-7.793674698,30.75010439
|
587 |
-
585,TIZLIYI,"-7.784529801,30.75683148,0",-7.784529801,30.75683148
|
588 |
-
586,TANFACHET,"-8.825767728,30.72640329,0",-8.825767728,30.72640329
|
589 |
-
587,AIT OUABDI,"-8.343358005,30.81060241,0",-8.343358005,30.81060241
|
590 |
-
588,AGUERSAFN,"-8.424566874,30.8032225,0",-8.424566874,30.8032225
|
591 |
-
589,AZROU TAOUINAKHT,"-8.485829954,30.78574688,0",-8.485829954,30.78574688
|
592 |
-
590,BOUTIZI,"-7.780092278,30.79674692,0",-7.780092278,30.79674692
|
593 |
-
591,IGOUMRANE,"-7.776318736,30.82277249,0",-7.776318736,30.82277249
|
594 |
-
592,ID LAHCEN OUALI,"-7.76714927,30.81895777,0",-7.76714927,30.81895777
|
595 |
-
593,,"-8.482902784,30.78232238,0",-8.482902784,30.78232238
|
596 |
-
594,TANMAGUELTE,"-7.975941326,30.86228443,0",-7.975941326,30.86228443
|
597 |
-
595,TIZZIRT,"-8.820204161,30.73000633,0",-8.820204161,30.73000633
|
598 |
-
596,,"-8.430659189,30.75048344,0",-8.430659189,30.75048344
|
599 |
-
597,ID MARMOUCH,"-7.817390616,30.77992918,0",-7.817390616,30.77992918
|
600 |
-
598,ICHABBANE,"-8.675853893,30.61821068,0",-8.675853893,30.61821068
|
601 |
-
599,IKHFUSS,"-8.394759971,30.84062527,0",-8.394759971,30.84062527
|
602 |
-
600,ALAGOU,"-8.399095217,30.83773104,0",-8.399095217,30.83773104
|
603 |
-
601,AIT YOUSSEF,"-8.444322551,30.76733788,0",-8.444322551,30.76733788
|
604 |
-
602,EL HANOUANE,"-8.801155132,30.65572313,0",-8.801155132,30.65572313
|
605 |
-
603,BOUYAKHFAOUN,"-8.515377795,30.75483048,0",-8.515377795,30.75483048
|
606 |
-
604,TIZKI,"-8.512932605,30.81795217,0",-8.512932605,30.81795217
|
607 |
-
605,ARG,"-7.718020039,30.57937891,0",-7.718020039,30.57937891
|
608 |
-
606,TIMZAKINE,"-7.838338816,31.03416072,0",-7.838338816,31.03416072
|
609 |
-
607,MISSOUR,"-7.84584607,31.05524786,0",-7.84584607,31.05524786
|
610 |
-
608,ASGUINE,"-8.921085631,30.88739261,0",-8.921085631,30.88739261
|
611 |
-
609,ISMIR,"-8.894599667,30.89827143,0",-8.894599667,30.89827143
|
612 |
-
610,TIOUNA,"-8.902342589,30.86009281,0",-8.902342589,30.86009281
|
613 |
-
611,TAKERKOUTE,"-8.916081213,30.85630779,0",-8.916081213,30.85630779
|
614 |
-
612,ARAZ,"-8.548686658,30.68005203,0",-8.548686658,30.68005203
|
615 |
-
613,TAGADIRT ACHBAROU,"-8.470716771,30.75026538,0",-8.470716771,30.75026538
|
616 |
-
614,AWSAGHMELT,"-8.665689532,30.85249729,0",-8.665689532,30.85249729
|
617 |
-
615,AIT AMER,"-8.666783032,30.83250784,0",-8.666783032,30.83250784
|
618 |
-
616,IDAGHASSANE,"-8.337387621,30.83577383,0",-8.337387621,30.83577383
|
619 |
-
617,IMIL LAKHNEG,"-8.526485897,30.66297172,0",-8.526485897,30.66297172
|
620 |
-
618,TAKOUCHT,"-8.095662048,30.85586059,0",-8.095662048,30.85586059
|
621 |
-
619,IRHIL,"-8.626349962,30.84606731,0",-8.626349962,30.84606731
|
622 |
-
620,IGUIANE,"-8.624447525,30.77545333,0",-8.624447525,30.77545333
|
623 |
-
621,AMANDAR,"-8.582156228,30.84614716,0",-8.582156228,30.84614716
|
624 |
-
622,AFZA,"-8.515184117,30.78607592,0",-8.515184117,30.78607592
|
625 |
-
623,TAGMOUTE,"-7.68849627,30.56813232,0",-7.68849627,30.56813232
|
626 |
-
624,TAKHFAKHT,"-8.279814304,30.8397742,0",-8.279814304,30.8397742
|
627 |
-
625,AIT MANCEUR,"-8.790533595,30.76472826,0",-8.790533595,30.76472826
|
628 |
-
626,ISSOULANE,"-8.803244945,30.74870429,0",-8.803244945,30.74870429
|
629 |
-
627,TADERT,"-8.878196512,30.70795722,0",-8.878196512,30.70795722
|
630 |
-
628,TAMSOULT,"-8.9227615,30.70459061,0",-8.9227615,30.70459061
|
631 |
-
629,AIT CHERIF,"-8.680323848,30.61295786,0",-8.680323848,30.61295786
|
632 |
-
630,TAMSOULT,"-8.766473029,30.75084415,0",-8.766473029,30.75084415
|
633 |
-
631,TIWTAGHRANE,"-7.908860179,30.96459632,0",-7.908860179,30.96459632
|
634 |
-
632,ASKAWN CENTRE,"-7.773965955,30.74185522,0",-7.773965955,30.74185522
|
635 |
-
633,TASLOUMTE,"-7.770214719,31.02791912,0",-7.770214719,31.02791912
|
636 |
-
634,ANDOSS,"-7.809892708,31.01732452,0",-7.809892708,31.01732452
|
637 |
-
635,ZAOUIAT LOUSSTA,"-8.436648261,30.74601327,0",-8.436648261,30.74601327
|
638 |
-
636,TITTALLE,"-7.718676793,30.78184553,0",-7.718676793,30.78184553
|
639 |
-
637,ID MENDIL,"-7.835546219,30.77276575,0",-7.835546219,30.77276575
|
640 |
-
638,SIDI MOUSSA,"-8.65574084,30.61707787,0",-8.65574084,30.61707787
|
641 |
-
639,AIT ADDI,"-8.37236571,30.76573876,0",-8.37236571,30.76573876
|
642 |
-
640,MANSOUR,"-7.781064836,30.85566439,0",-7.781064836,30.85566439
|
643 |
-
641,TIZQUI,"-8.78292385,30.68613287,0",-8.78292385,30.68613287
|
644 |
-
642,ANNELIF,"-8.678193037,30.84303127,0",-8.678193037,30.84303127
|
645 |
-
643,FIYIL,"-8.668380267,30.83936448,0",-8.668380267,30.83936448
|
646 |
-
644,AGHOFZLI,"-7.892100132,30.86888353,0",-7.892100132,30.86888353
|
647 |
-
645,TAWZENTE,"-7.812573623,30.75487709,0",-7.812573623,30.75487709
|
648 |
-
646,TARGANT,"-8.672761023,30.75228323,0",-8.672761023,30.75228323
|
649 |
-
647,IMLIL,"-8.689314024,30.81868353,0",-8.689314024,30.81868353
|
650 |
-
648,FALGHOUSS,"-8.665655533,30.80949405,0",-8.665655533,30.80949405
|
651 |
-
649,TAGOUNITE,"-7.828314515,31.02596595,0",-7.828314515,31.02596595
|
652 |
-
650,TAZOULT,"-7.772050068,30.78209908,0",-7.772050068,30.78209908
|
653 |
-
651,AIN AGOURAM,"-8.462579137,30.75630687,0",-8.462579137,30.75630687
|
654 |
-
652,TAWRIRT ACHBAROU,"-8.476577726,30.75586097,0",-8.476577726,30.75586097
|
655 |
-
653,IMITJAR,"-8.34454647,30.82074625,0",-8.34454647,30.82074625
|
656 |
-
654,TALA,"-7.919673976,30.89077558,0",-7.919673976,30.89077558
|
657 |
-
655,TAKATERTE,"-7.865196546,30.95303022,0",-7.865196546,30.95303022
|
658 |
-
656,AIT MAALA,"-8.421766105,30.75711824,0",-8.421766105,30.75711824
|
659 |
-
657,AMZAOUROU,"-8.678226188,30.77276148,0",-8.678226188,30.77276148
|
660 |
-
658,AIT SIDI BELLA,"-8.620717372,30.6147536,0",-8.620717372,30.6147536
|
661 |
-
659,AIT SOUMMANE,"-8.568939315,30.62039051,0",-8.568939315,30.62039051
|
662 |
-
660,OULAD SALEM,"-8.574138985,30.62325676,0",-8.574138985,30.62325676
|
663 |
-
661,AIT IGRANE,"-7.858382313,31.02145462,0",-7.858382313,31.02145462
|
664 |
-
662,TIMINOUNE,"-8.786778727,30.67291139,0",-8.786778727,30.67291139
|
665 |
-
663,TAFRAOUTENE,"-8.884398819,30.70206918,0",-8.884398819,30.70206918
|
666 |
-
664,MSSOUNA,"-8.366592985,30.80482173,0",-8.366592985,30.80482173
|
667 |
-
665,TOUKHRIBINE,"-8.374561665,30.77183516,0",-8.374561665,30.77183516
|
668 |
-
666,TAWRIRT,"-8.907718431,30.644456,0",-8.907718431,30.644456
|
669 |
-
667,AWARGOUT,"-7.733616933,30.58736359,0",-7.733616933,30.58736359
|
670 |
-
668,TINIGHASS,"-8.792157955,30.77291732,0",-8.792157955,30.77291732
|
671 |
-
669,KALTATE,"-8.794538764,30.7762237,0",-8.794538764,30.7762237
|
672 |
-
670,AIT ZAOUIT,"-8.881481003,30.66597763,0",-8.881481003,30.66597763
|
673 |
-
671,AGUERD,"-8.680682688,30.73180289,0",-8.680682688,30.73180289
|
674 |
-
672,AARABEN,"-7.757149102,30.82967621,0",-7.757149102,30.82967621
|
675 |
-
673,TAZODA,"-8.099013234,30.87663571,0",-8.099013234,30.87663571
|
676 |
-
674,ACHDIRT,"-8.095382556,30.88038706,0",-8.095382556,30.88038706
|
677 |
-
675,TASSWALT,"-7.824038402,30.96955266,0",-7.824038402,30.96955266
|
678 |
-
676,TAGOUDACHTE,"-8.296131457,30.81807404,0",-8.296131457,30.81807404
|
679 |
-
677,IFARGANNE,"-7.879158665,30.86093442,0",-7.879158665,30.86093442
|
680 |
-
678,IGHIL IAZZA,"-8.555008769,30.67704621,0",-8.555008769,30.67704621
|
681 |
-
679,IDA OUGATLLA,"-8.625588382,30.63609549,0",-8.625588382,30.63609549
|
682 |
-
680,BOURRAMDANE,"-7.887095487,30.87579489,0",-7.887095487,30.87579489
|
683 |
-
681,TIRST,"-8.28116577,30.84346661,0",-8.28116577,30.84346661
|
684 |
-
682,AIT HAMMOU,"-8.371497576,30.76823111,0",-8.371497576,30.76823111
|
685 |
-
683,AIT HADDOU,"-8.305876286,30.82247561,0",-8.305876286,30.82247561
|
686 |
-
684,TIOULI,"-8.302425784,30.81981693,0",-8.302425784,30.81981693
|
687 |
-
685,IBARZIZANE,"-8.04651615,30.86025566,0",-8.04651615,30.86025566
|
688 |
-
686,OUILZANE,"-8.28268338,30.77858023,0",-8.28268338,30.77858023
|
689 |
-
687,WAOUNZOURTE,"-7.829574456,31.00013943,0",-7.829574456,31.00013943
|
690 |
-
688,AIT ZEMMOURI,"-8.622517504,30.68355053,0",-8.622517504,30.68355053
|
691 |
-
689,TAZIAT,"-8.57827625,30.66433331,0",-8.57827625,30.66433331
|
692 |
-
690,OULAD ZEKRI,"-8.451611752,30.69857029,0",-8.451611752,30.69857029
|
693 |
-
691,AIT YASSINE,"-8.141771287,30.902215,0",-8.141771287,30.902215
|
694 |
-
692,IKRAMNIWN,"-8.121296086,30.86979666,0",-8.121296086,30.86979666
|
695 |
-
693,AFOUYIGH,"-8.149957937,30.87408138,0",-8.149957937,30.87408138
|
696 |
-
694,OUAGHARDA,"-8.70600322,30.83091852,0",-8.70600322,30.83091852
|
697 |
-
695,TAMAKADOUTE,"-8.681484332,30.80657601,0",-8.681484332,30.80657601
|
698 |
-
696,ALAGJANE,"-8.676580157,30.80331784,0",-8.676580157,30.80331784
|
699 |
-
697,TACHKNINE,"-8.672817065,30.77050005,0",-8.672817065,30.77050005
|
700 |
-
698,TAYZELTE,"-7.950665948,30.94900505,0",-7.950665948,30.94900505
|
701 |
-
699,SOUK LARBAA ASSAISS,"-7.609553631,30.57619509,0",-7.609553631,30.57619509
|
702 |
-
700,LMOUDAA,"-7.760619303,31.01607691,0",-7.760619303,31.01607691
|
703 |
-
701,TIOUGHZA,"-7.758523561,30.67107544,0",-7.758523561,30.67107544
|
704 |
-
702,,"-8.741943847,30.6230532,0",-8.741943847,30.6230532
|
705 |
-
703,IMANARANE,"-8.659952537,30.82485445,0",-8.659952537,30.82485445
|
706 |
-
704,TANZAD,"-8.419633185,30.83400016,0",-8.419633185,30.83400016
|
707 |
-
705,ANAMER,"-8.102381148,30.85718057,0",-8.102381148,30.85718057
|
708 |
-
706,TAMSOULT IGHANJAWN,"-8.12703651,30.85878245,0",-8.12703651,30.85878245
|
709 |
-
707,AIT HSAYN,"-8.113776027,30.86449161,0",-8.113776027,30.86449161
|
710 |
-
708,TALMAKANTE,"-8.933805569,30.85050119,0",-8.933805569,30.85050119
|
711 |
-
709,TILMASLANE,"-8.139416153,30.86230833,0",-8.139416153,30.86230833
|
712 |
-
710,TARGA OU FELLA,"-8.634547523,30.93168171,0",-8.634547523,30.93168171
|
713 |
-
711,TIFRITE,"-8.969451742,31.00932107,0",-8.969451742,31.00932107
|
714 |
-
712,,"-8.416444776,30.84957394,0",-8.416444776,30.84957394
|
715 |
-
713,ASSARAR,"-7.770901101,31.00749756,0",-7.770901101,31.00749756
|
716 |
-
714,IGHALMISS,"-8.829926796,30.94519718,0",-8.829926796,30.94519718
|
717 |
-
715,TAGADIRTE,"-8.419561799,31.13148395,0",-8.419561799,31.13148395
|
718 |
-
716,TIZGHOUINE,"-7.852474901,30.93661435,0",-7.852474901,30.93661435
|
719 |
-
717,IMI NMOUMENE,"-7.853583926,30.94773809,0",-7.853583926,30.94773809
|
720 |
-
718,TOUGALKHIR,"-8.554100938,30.83842235,0",-8.554100938,30.83842235
|
721 |
-
719,ASSAISS ADBDI,"-8.481828081,30.83761659,0",-8.481828081,30.83761659
|
722 |
-
720,IGOUZOULNE,"-8.143579382,30.86376509,0",-8.143579382,30.86376509
|
723 |
-
721,AIT NACER,"-8.656399447,30.75956176,0",-8.656399447,30.75956176
|
724 |
-
722,AMGDOUL,"-8.280794134,30.85863548,0",-8.280794134,30.85863548
|
725 |
-
723,TIZIRT HAGUIRA,"-8.306771462,30.81751204,0",-8.306771462,30.81751204
|
726 |
-
724,AIT WALLALE,"-7.873926364,30.83714508,0",-7.873926364,30.83714508
|
727 |
-
725,AGARDE NOUGADIR,"-7.896592942,30.84467775,0",-7.896592942,30.84467775
|
728 |
-
726,IMZILNE,"-7.879156848,30.8578324,0",-7.879156848,30.8578324
|
729 |
-
727,ANMID,"-7.807872151,30.9512982,0",-7.807872151,30.9512982
|
730 |
-
728,TIZI OUNRARE,"-8.10559323,30.85797449,0",-8.10559323,30.85797449
|
731 |
-
729,TAZOUDOUTE,"-8.661550742,30.81156206,0",-8.661550742,30.81156206
|
732 |
-
730,ZAOUIAT IMI MADGHAR,"-8.770221337,30.62296989,0",-8.770221337,30.62296989
|
733 |
-
731,MARKAZ TAFINGOULT,"-8.383612557,30.76319796,0",-8.383612557,30.76319796
|
734 |
-
732,IMGHIR,"-8.701598468,30.82937031,0",-8.701598468,30.82937031
|
735 |
-
733,AGUERD,"-8.426100227,30.8043926,0",-8.426100227,30.8043926
|
736 |
-
734,ADAD,"-7.764506056,31.03065496,0",-7.764506056,31.03065496
|
737 |
-
735,AMATITRE,"-8.618177346,30.80840455,0",-8.618177346,30.80840455
|
738 |
-
736,TASDOUTE,"-8.60699504,30.84209064,0",-8.60699504,30.84209064
|
739 |
-
737,KORMATE,"-8.853300921,30.86083426,0",-8.853300921,30.86083426
|
740 |
-
738,AMDROUSS,"-8.850931966,30.86306335,0",-8.850931966,30.86306335
|
741 |
-
739,AIT MZIL,"-7.7193207,30.63162798,0",-7.7193207,30.63162798
|
742 |
-
740,TASQUINTE,"-8.844482254,30.74786,0",-8.844482254,30.74786
|
743 |
-
741,IKHOUDAMNE,"-8.695035134,30.78825907,0",-8.695035134,30.78825907
|
744 |
-
742,MELLIZ,"-8.780013217,30.75435329,0",-8.780013217,30.75435329
|
745 |
-
743,TISSOHITE,"-8.984206179,31.0117157,0",-8.984206179,31.0117157
|
746 |
-
744,AGNI,"-8.928461469,30.9905847,0",-8.928461469,30.9905847
|
747 |
-
745,ANAMRA,"-8.929983645,30.99920795,0",-8.929983645,30.99920795
|
748 |
-
746,TADDARINE,"-7.897203761,30.86029264,0",-7.897203761,30.86029264
|
749 |
-
747,IGUIDI,"-7.901965217,30.83679358,0",-7.901965217,30.83679358
|
750 |
-
748,ARGUE,"-8.446003727,31.11383186,0",-8.446003727,31.11383186
|
751 |
-
749,TALMODAATE,"-8.686291987,30.99608889,0",-8.686291987,30.99608889
|
752 |
-
750,ZAOUIAT SIDI ALI OU FAR,"-7.805399316,31.27233976,0",-7.805399316,31.27233976
|
753 |
-
751,TINZAROUINE,"-8.277289854,31.07998221,0",-8.277289854,31.07998221
|
754 |
-
752,AIT DAOUD,"-8.377107784,31.10567172,0",-8.377107784,31.10567172
|
755 |
-
753,TICHAKJI,"-8.620661487,30.85536455,0",-8.620661487,30.85536455
|
756 |
-
754,TAZAGUATA,"-8.288437698,31.06067135,0",-8.288437698,31.06067135
|
757 |
-
755,ISGANE,"-8.011622823,31.25946714,0",-8.011622823,31.25946714
|
758 |
-
756,EL MAKHZENE,"-8.100998648,30.96333928,0",-8.100998648,30.96333928
|
759 |
-
757,TAMALOUTE,"-8.273912635,31.07857906,0",-8.273912635,31.07857906
|
760 |
-
758,IGHAZ,"-8.496555631,31.13572248,0",-8.496555631,31.13572248
|
761 |
-
759,TIDARGUINE,"-8.488820617,31.12684783,0",-8.488820617,31.12684783
|
762 |
-
760,TAZELLOUMT,"-8.599616573,30.80801347,0",-8.599616573,30.80801347
|
763 |
-
761,TAZLIDA,"-8.554778663,30.81809384,0",-8.554778663,30.81809384
|
764 |
-
762,LAMDINATE,"-8.370053336,31.10758472,0",-8.370053336,31.10758472
|
765 |
-
763,ANAMROU,"-8.348844087,31.09716621,0",-8.348844087,31.09716621
|
766 |
-
764,BOUY SSOUFA,"-8.93053512,31.03158033,0",-8.93053512,31.03158033
|
767 |
-
765,WAWOURST,"-8.970785881,31.03656446,0",-8.970785881,31.03656446
|
768 |
-
766,TAMJLOUJTE,"-8.800104991,30.87275975,0",-8.800104991,30.87275975
|
769 |
-
767,AMESKERDAD,"-8.815944122,31.0619515,0",-8.815944122,31.0619515
|
770 |
-
768,ZAOUIAT ASSATIF,"-8.65277217,31.00216805,0",-8.65277217,31.00216805
|
771 |
-
769,TADDARTE,"-8.677518502,31.11511545,0",-8.677518502,31.11511545
|
772 |
-
770,MIAL,"-7.760509629,30.77810512,0",-7.760509629,30.77810512
|
773 |
-
771,ASAYSSE,"-8.493440138,31.14993005,0",-8.493440138,31.14993005
|
774 |
-
772,TALAT NYASSINE,"-8.171714515,30.98098712,0",-8.171714515,30.98098712
|
775 |
-
773,TIMSALE,"-8.273288069,30.93001636,0",-8.273288069,30.93001636
|
776 |
-
774,AMALOU,"-7.716771226,30.67367429,0",-7.716771226,30.67367429
|
777 |
-
775,,"-8.541077105,30.71560193,0",-8.541077105,30.71560193
|
778 |
-
776,TIFERKI,"-8.612519038,30.7517269,0",-8.612519038,30.7517269
|
779 |
-
777,ZAOUIAT IHCHACH,"-8.525314557,30.68335589,0",-8.525314557,30.68335589
|
780 |
-
778,ASSAGHMOU,"-6.554517641,31.32738576,0",-6.554517641,31.32738576
|
781 |
-
779,OUKHRIBNE,"-8.258969788,31.00815331,0",-8.258969788,31.00815331
|
782 |
-
780,IGNANE,"-7.80811385,31.24283792,0",-7.80811385,31.24283792
|
783 |
-
781,OURZDDINE,"-8.273201503,30.99556156,0",-8.273201503,30.99556156
|
784 |
-
782,TIGARTE,"-8.320412858,30.99328775,0",-8.320412858,30.99328775
|
785 |
-
783,TIMIZAR,"-8.259279529,30.99419337,0",-8.259279529,30.99419337
|
786 |
-
784,ARKTE,"-8.133489792,31.02687825,0",-8.133489792,31.02687825
|
787 |
-
785,TIZGUINE,"-8.949837525,30.88842182,0",-8.949837525,30.88842182
|
788 |
-
786,TYLNIF,"-7.414893163,31.37296089,0",-7.414893163,31.37296089
|
789 |
-
787,ADOUZE,"-8.637555948,31.11373766,0",-8.637555948,31.11373766
|
790 |
-
788,TAWLOUST,"-8.819198953,30.74919171,0",-8.819198953,30.74919171
|
791 |
-
789,TAJACHT,"-8.774230777,30.72850374,0",-8.774230777,30.72850374
|
792 |
-
790,TAKATERTE,"-7.844741914,31.02083782,0",-7.844741914,31.02083782
|
793 |
-
791,TIKHTE,"-8.431537401,31.14360073,0",-8.431537401,31.14360073
|
794 |
-
792,TIGHOULA,"-8.427949635,31.13879617,0",-8.427949635,31.13879617
|
795 |
-
793,IMHIL,"-7.864641545,31.02173327,0",-7.864641545,31.02173327
|
796 |
-
794,ANKOUTOUFE,"-8.809328293,30.91474832,0",-8.809328293,30.91474832
|
797 |
-
795,IZAGAGHANE,"-7.75960686,31.19223723,0",-7.75960686,31.19223723
|
798 |
-
796,ANAMMAR,"-7.303789269,31.36330597,0",-7.303789269,31.36330597
|
799 |
-
797,TIRKHTE,"-8.35746037,30.98977207,0",-8.35746037,30.98977207
|
800 |
-
798,SRANINE,"-8.536308581,30.63315591,0",-8.536308581,30.63315591
|
801 |
-
799,WANDGHICH,"-8.953462921,31.02599734,0",-8.953462921,31.02599734
|
802 |
-
800,AGROUTANE,"-8.86417695,31.09525689,0",-8.86417695,31.09525689
|
803 |
-
801,IKKISS,"-8.71028431,30.8973328,0",-8.71028431,30.8973328
|
804 |
-
802,AGADIR OU MLIL,"-8.151401359,31.00063347,0",-8.151401359,31.00063347
|
805 |
-
803,TOUKHRIBINE,"-8.167756571,30.9707511,0",-8.167756571,30.9707511
|
806 |
-
804,GOUGTEN,"-8.248029848,30.94512466,0",-8.248029848,30.94512466
|
807 |
-
805,YOUSSRANE,"-8.884531698,30.69497624,0",-8.884531698,30.69497624
|
808 |
-
806,MEGDEL,"-8.759819518,30.78440965,0",-8.759819518,30.78440965
|
809 |
-
807,AL KHOMS,"-8.754458156,30.75938586,0",-8.754458156,30.75938586
|
810 |
-
808,TAMATERT,"-7.709870278,31.20008437,0",-7.709870278,31.20008437
|
811 |
-
809,OURTI OUMGHAR,"-8.790983736,30.7711374,0",-8.790983736,30.7711374
|
812 |
-
810,TANAZZATE,"-8.290354708,30.89885586,0",-8.290354708,30.89885586
|
813 |
-
811,AIT MAKRAZE,"-8.280156551,30.91613547,0",-8.280156551,30.91613547
|
814 |
-
812,AIT WAGARYANE,"-8.648206071,31.11369262,0",-8.648206071,31.11369262
|
815 |
-
813,ZAOUIAT AMERNE,"-8.736339639,31.07405942,0",-8.736339639,31.07405942
|
816 |
-
814,TANSMAGHTE,"-8.69003216,31.01436756,0",-8.69003216,31.01436756
|
817 |
-
815,TASSALLI,"-8.699419464,30.98061639,0",-8.699419464,30.98061639
|
818 |
-
816,AFRA,"-7.419398588,31.34015623,0",-7.419398588,31.34015623
|
819 |
-
817,TAMASSITE,"-7.975660506,31.24008525,0",-7.975660506,31.24008525
|
820 |
-
818,AMCHOUDE,"-8.911464013,30.89006253,0",-8.911464013,30.89006253
|
821 |
-
819,TATOULA,"-7.298149064,31.358533,0",-7.298149064,31.358533
|
822 |
-
820,IAABASSENE,"-7.780559024,31.18278206,0",-7.780559024,31.18278206
|
823 |
-
821,GWAMANE,"-7.831026862,31.25628017,0",-7.831026862,31.25628017
|
824 |
-
822,TAMDGHOUSTE,"-8.955508146,30.94177924,0",-8.955508146,30.94177924
|
825 |
-
823,AMSKRAJANE,"-8.302834653,30.98124669,0",-8.302834653,30.98124669
|
826 |
-
824,ZAOUIT SIDI LAHCEN,"-8.6773466,30.93647782,0",-8.6773466,30.93647782
|
827 |
-
825,IZAMRANE,"-7.686748493,31.3882663,0",-7.686748493,31.3882663
|
828 |
-
826,AREG,"-8.874270209,31.04914822,0",-8.874270209,31.04914822
|
829 |
-
827,TAWRIRTE,"-8.190862909,31.06739224,0",-8.190862909,31.06739224
|
830 |
-
828,AIT HARBE,"-7.986265145,31.1446148,0",-7.986265145,31.1446148
|
831 |
-
829,AGNI,"-8.07070321,31.16970488,0",-8.07070321,31.16970488
|
832 |
-
830,ZAOUIAT TAMAROUTE,"-8.886735068,31.03479086,0",-8.886735068,31.03479086
|
833 |
-
831,ARBAN TAMTARGUA,"-8.194105037,30.87995967,0",-8.194105037,30.87995967
|
834 |
-
832,ASSGHMAR AIT OUGROURE,"-6.813248106,31.23215164,0",-6.813248106,31.23215164
|
835 |
-
833,TIGROOUTE,"-7.884910108,30.89736519,0",-7.884910108,30.89736519
|
836 |
-
834,AIT ZOUIL,"-6.429111551,31.38072652,0",-6.429111551,31.38072652
|
837 |
-
835,IMIN-TISLIT,"-8.075694949,30.88709176,0",-8.075694949,30.88709176
|
838 |
-
836,AIT ALI OU AISSA,"-6.591261421,31.22107668,0",-6.591261421,31.22107668
|
839 |
-
837,DERB WIRGANE,"-8.080224319,31.17469106,0",-8.080224319,31.17469106
|
840 |
-
838,TIZI MLIL,"-8.180858442,31.10129147,0",-8.180858442,31.10129147
|
841 |
-
839,TIGARSALTE,"-8.212775992,31.0979576,0",-8.212775992,31.0979576
|
842 |
-
840,WAWGMOUTE,"-7.984176193,31.1457902,0",-7.984176193,31.1457902
|
843 |
-
841,AIT HDINE,"-7.867851489,30.83702575,0",-7.867851489,30.83702575
|
844 |
-
842,TAGADIRTE,"-8.950700562,30.91411879,0",-8.950700562,30.91411879
|
845 |
-
843,TAZA TOURTE,"-8.13447132,31.20521796,0",-8.13447132,31.20521796
|
846 |
-
844,TINZZIMINE,"-8.467324628,31.0530976,0",-8.467324628,31.0530976
|
847 |
-
845,LMATMOUR,"-8.390498857,30.75326095,0",-8.390498857,30.75326095
|
848 |
-
846,ZAOUIAT LALLA RKIA,"-8.513915518,30.78140989,0",-8.513915518,30.78140989
|
849 |
-
847,ZAOUIAT SIDI IGUERBZIZ,"-8.475913343,30.77035253,0",-8.475913343,30.77035253
|
850 |
-
848,IGHEL MELLEN,"-8.652247446,30.93585199,0",-8.652247446,30.93585199
|
851 |
-
849,TAJAGALTE,"-8.85538881,31.06077075,0",-8.85538881,31.06077075
|
852 |
-
850,ISFIL,"-7.688631339,31.39775559,0",-7.688631339,31.39775559
|
853 |
-
851,AMASLANE,"-8.963107998,30.91039837,0",-8.963107998,30.91039837
|
854 |
-
852,TADARNOUTE,"-8.790964456,30.76257859,0",-8.790964456,30.76257859
|
855 |
-
853,TAGOUYAMTE,"-7.576074986,30.60987289,0",-7.576074986,30.60987289
|
856 |
-
854,TIGUIRTE,"-6.944282307,31.28503098,0",-6.944282307,31.28503098
|
857 |
-
855,BOUMARDOULE,"-5.858187178,31.61243525,0",-5.858187178,31.61243525
|
858 |
-
856,TABOUTABT,"-8.379109978,30.75999037,0",-8.379109978,30.75999037
|
859 |
-
857,ANAMMER,"-8.195128846,31.06945857,0",-8.195128846,31.06945857
|
860 |
-
858,AGUENZANE,"-8.888088818,30.69277203,0",-8.888088818,30.69277203
|
861 |
-
859,LAARAB,"-7.986319002,31.25439836,0",-7.986319002,31.25439836
|
862 |
-
860,TARGA,"-8.132978378,31.03451084,0",-8.132978378,31.03451084
|
863 |
-
861,TINOUALINE,"-8.681152772,31.08717565,0",-8.681152772,31.08717565
|
864 |
-
862,AZARZOU,"-8.475234392,31.00612302,0",-8.475234392,31.00612302
|
865 |
-
863,AGOUMMADANE,"-8.880184418,30.67293264,0",-8.880184418,30.67293264
|
866 |
-
864,AGARZRA,"-8.476857931,31.05668181,0",-8.476857931,31.05668181
|
867 |
-
865,SIDI ALI OUBRAHIM,"-8.24483031,30.80132808,0",-8.24483031,30.80132808
|
868 |
-
866,TALAT N-DARAMMANE,"-8.117978414,30.8582559,0",-8.117978414,30.8582559
|
869 |
-
867,TAMAROUT,"-8.219481271,30.89562217,0",-8.219481271,30.89562217
|
870 |
-
868,TOUKARINE,"-7.708805774,30.63100918,0",-7.708805774,30.63100918
|
871 |
-
869,ZAOUIAT SIDI MOUSSA,"-8.145254122,30.87754303,0",-8.145254122,30.87754303
|
872 |
-
870,IGARWATE,"-8.525550188,31.07463073,0",-8.525550188,31.07463073
|
873 |
-
871,OUZALA,"-8.576441639,30.62705583,0",-8.576441639,30.62705583
|
874 |
-
872,FOUMAZIR,"-8.815609366,31.07662729,0",-8.815609366,31.07662729
|
875 |
-
873,TOGL KHIR,"-8.789411741,31.05472785,0",-8.789411741,31.05472785
|
876 |
-
874,AMDRASS,"-6.485717415,31.44878533,0",-6.485717415,31.44878533
|
877 |
-
875,AGLI,"-8.190465955,30.84926417,0",-8.190465955,30.84926417
|
878 |
-
876,ZAOUIAT SITTI FADMA,"-7.693840988,31.21947232,0",-7.693840988,31.21947232
|
879 |
-
877,AIT SLIMANE,"-7.50548827,31.3807069,0",-7.50548827,31.3807069
|
880 |
-
878,AIT ACHA,"-7.584006568,31.37454198,0",-7.584006568,31.37454198
|
881 |
-
879,IGHREM,"-8.101674906,30.88205935,0",-8.101674906,30.88205935
|
882 |
-
880,MENZANIT,"-8.618412974,30.84627884,0",-8.618412974,30.84627884
|
883 |
-
881,ADEQUI,"-8.616249969,30.82670154,0",-8.616249969,30.82670154
|
884 |
-
882,ZAOUIAT EL MADAADANE,"-8.621882743,30.77091309,0",-8.621882743,30.77091309
|
885 |
-
883,TISSALDAY,"-7.851362322,31.06084514,0",-7.851362322,31.06084514
|
886 |
-
884,AIT SOUAL,"-6.454567075,31.36680908,0",-6.454567075,31.36680908
|
887 |
-
885,TIGUEMI IGRANE,"-7.762212184,31.02267351,0",-7.762212184,31.02267351
|
888 |
-
886,ANSSA,"-7.485359387,31.27525189,0",-7.485359387,31.27525189
|
889 |
-
887,TANAMARTE,"-8.494792221,31.03047121,0",-8.494792221,31.03047121
|
890 |
-
888,TALATTANE,"-7.718772196,30.81963384,0",-7.718772196,30.81963384
|
891 |
-
889,TAOURMATE,"-8.903859912,30.72127631,0",-8.903859912,30.72127631
|
892 |
-
890,,"-7.519539921,31.2935098,0",-7.519539921,31.2935098
|
893 |
-
891,HLAWTE,"-7.603923948,31.35347425,0",-7.603923948,31.35347425
|
894 |
-
892,TINGLIANE,"-8.351696805,30.82561319,0",-8.351696805,30.82561319
|
895 |
-
893,TIZGUI OU FELLA,"-8.958751704,30.97486651,0",-8.958751704,30.97486651
|
896 |
-
894,AIT JEDDI,"-8.536661824,30.6703099,0",-8.536661824,30.6703099
|
897 |
-
895,AMSSOULE,"-6.686187887,31.2450304,0",-6.686187887,31.2450304
|
898 |
-
896,IMERGUENEG,"-8.26587853,30.81601745,0",-8.26587853,30.81601745
|
899 |
-
897,TIGUICHT,"-8.135905166,30.8785214,0",-8.135905166,30.8785214
|
900 |
-
898,TALAT NBITALJANE,"-8.666198726,30.79566199,0",-8.666198726,30.79566199
|
901 |
-
899,TAHANDOURT,"-8.524166275,30.74387147,0",-8.524166275,30.74387147
|
902 |
-
900,TILEKANT,"-8.512711186,30.75985941,0",-8.512711186,30.75985941
|
903 |
-
901,,"-7.781446674,31.00363835,0",-7.781446674,31.00363835
|
904 |
-
902,TALAT NAAMRANE,"-7.768774735,31.03089624,0",-7.768774735,31.03089624
|
905 |
-
903,FERMAT CHRAIRE DE TAOUFIKIMED,"-8.46020514,30.66274081,0",-8.46020514,30.66274081
|
906 |
-
904,TAMALLA,"-8.63724801,30.65614635,0",-8.63724801,30.65614635
|
907 |
-
905,TALADDAMTE,"-8.554330347,31.0541071,0",-8.554330347,31.0541071
|
908 |
-
906,KSAR AIT ISFOULE,"-5.850854651,31.67284892,0",-5.850854651,31.67284892
|
909 |
-
907,TAMASKA,"-8.878090139,30.66814077,0",-8.878090139,30.66814077
|
910 |
-
908,TAGHZIRTE,"-7.555827769,31.2555692,0",-7.555827769,31.2555692
|
911 |
-
909,MENDOU,"-7.806619395,30.7868168,0",-7.806619395,30.7868168
|
912 |
-
910,TIZARATINE,"-8.596855958,30.80177322,0",-8.596855958,30.80177322
|
913 |
-
911,AGHFERGA,"-8.572274303,30.86117126,0",-8.572274303,30.86117126
|
914 |
-
912,TIZNIRINE,"-8.58579006,30.75093771,0",-8.58579006,30.75093771
|
915 |
-
913,EL MAKHZEN,"-8.555496871,30.71991553,0",-8.555496871,30.71991553
|
916 |
-
914,IMZILNE,"-6.579369782,31.27812549,0",-6.579369782,31.27812549
|
917 |
-
915,TAMSSOULTE,"-6.672768549,31.26438508,0",-6.672768549,31.26438508
|
918 |
-
916,TILMI,"-5.77179039,31.81856482,0",-5.77179039,31.81856482
|
919 |
-
917,MATOUS,"-7.599848724,31.36684253,0",-7.599848724,31.36684253
|
920 |
-
918,ASNI CENTRE,"-7.980755801,31.25007002,0",-7.980755801,31.25007002
|
921 |
-
919,IDSIAR,"-8.089226552,31.02322412,0",-8.089226552,31.02322412
|
922 |
-
920,ASSELIOUME,"-7.67577861,31.38398932,0",-7.67577861,31.38398932
|
923 |
-
921,TAGNIT,"-8.94369314,30.68290876,0",-8.94369314,30.68290876
|
924 |
-
922,IGOURDANE,"-7.801084561,30.87970597,0",-7.801084561,30.87970597
|
925 |
-
923,TICHKI,"-7.791062174,30.87080582,0",-7.791062174,30.87080582
|
926 |
-
924,AMARCHIH,"-8.651823257,30.80840589,0",-8.651823257,30.80840589
|
927 |
-
925,TISSOUGANE,"-8.673052116,30.77466949,0",-8.673052116,30.77466949
|
928 |
-
926,ZAOUIAT TAFILALT,"-8.674181438,30.74797879,0",-8.674181438,30.74797879
|
929 |
-
927,,"-7.140587326,31.09715261,0",-7.140587326,31.09715261
|
930 |
-
928,IHNACHE,"-7.586250868,31.38250184,0",-7.586250868,31.38250184
|
931 |
-
929,ANABDOUR,"-8.912298888,30.69404523,0",-8.912298888,30.69404523
|
932 |
-
930,IRKOUNT,"-8.362578059,30.82823295,0",-8.362578059,30.82823295
|
933 |
-
931,ZWALIL,"-8.418494985,31.12394625,0",-8.418494985,31.12394625
|
934 |
-
932,IZARRANE,"-8.279254207,30.97932378,0",-8.279254207,30.97932378
|
935 |
-
933,OUTAKHERRI,"-8.155777662,31.01394514,0",-8.155777662,31.01394514
|
936 |
-
934,TAGADIRTE,"-7.823274222,30.82045176,0",-7.823274222,30.82045176
|
937 |
-
935,AIT MELLOUL,"-7.793886445,30.79541048,0",-7.793886445,30.79541048
|
938 |
-
936,TASQUA IGRANE,"-8.810319553,30.75324889,0",-8.810319553,30.75324889
|
939 |
-
937,TIGHZANILA,"-7.124141772,31.30770252,0",-7.124141772,31.30770252
|
940 |
-
938,TIMMOUNTOUTE,"-7.255598675,31.20737343,0",-7.255598675,31.20737343
|
941 |
-
939,AGUERR ZRANE,"-7.840354035,31.02236922,0",-7.840354035,31.02236922
|
942 |
-
940,ALMKAL,"-7.82166775,30.99072047,0",-7.82166775,30.99072047
|
943 |
-
941,AIT ATTOU OU MOUSSA,"-5.742045883,31.86359902,0",-5.742045883,31.86359902
|
944 |
-
942,AIT BOULEMANE,"-5.814804192,31.74970059,0",-5.814804192,31.74970059
|
945 |
-
943,IHOUKARNE,"-7.646094698,30.53179514,0",-7.646094698,30.53179514
|
946 |
-
944,IFRKHANE,"-6.591948022,31.25473752,0",-6.591948022,31.25473752
|
947 |
-
945,TAMANNOUT NIZDDAR,"-7.618267876,30.59075751,0",-7.618267876,30.59075751
|
948 |
-
946,TIZGUI NOUHAKKI,"-7.779149851,30.8132668,0",-7.779149851,30.8132668
|
949 |
-
947,ISSOUMARE,"-6.127917228,31.4596125,0",-6.127917228,31.4596125
|
950 |
-
948,ASSISF OU GADIR,"-8.857832353,30.75314274,0",-8.857832353,30.75314274
|
951 |
-
949,AGOUNSA,"-8.855047137,30.76411796,0",-8.855047137,30.76411796
|
952 |
-
950,AMSSAKROU,"-7.900695779,31.17074254,0",-7.900695779,31.17074254
|
953 |
-
951,AGHRI,"-8.43099275,30.84948974,0",-8.43099275,30.84948974
|
954 |
-
952,ARG,"-7.697229034,30.63413331,0",-7.697229034,30.63413331
|
955 |
-
953,,"-7.729688968,31.37858506,0",-7.729688968,31.37858506
|
956 |
-
954,ACHAHHOUDE,"-7.133585846,31.14976153,0",-7.133585846,31.14976153
|
957 |
-
955,TOUAZA,"-6.275683798,31.40965128,0",-6.275683798,31.40965128
|
958 |
-
956,ASSENDOU,"-6.521875046,31.39521531,0",-6.521875046,31.39521531
|
959 |
-
957,TAZOULTE,"-7.505035591,30.63401289,0",-7.505035591,30.63401289
|
960 |
-
958,TLATE NASSE,"-8.127224921,31.09029758,0",-8.127224921,31.09029758
|
961 |
-
959,IGHREM,"-8.09890851,31.01712851,0",-8.09890851,31.01712851
|
962 |
-
960,IFASFASS,"-8.45566095,30.76200132,0",-8.45566095,30.76200132
|
963 |
-
961,OUAGJDITE,"-7.846447107,31.32695421,0",-7.846447107,31.32695421
|
964 |
-
962,AGOUNI,"-8.574529235,30.63227347,0",-8.574529235,30.63227347
|
965 |
-
963,AMZILE-FOUKANI,"-6.224681235,31.42209392,0",-6.224681235,31.42209392
|
966 |
-
964,ATOUGHA,"-7.655217859,30.63190551,0",-7.655217859,30.63190551
|
967 |
-
965,TAM GUISTE,"-7.867464688,31.15505329,0",-7.867464688,31.15505329
|
968 |
-
966,IGHIL,"-7.844734288,30.77309417,0",-7.844734288,30.77309417
|
969 |
-
967,,"-8.731264355,30.66396782,0",-8.731264355,30.66396782
|
970 |
-
968,AMZAOUROU,"-8.794264451,30.66998642,0",-8.794264451,30.66998642
|
971 |
-
969,AIT LAHSENE,"-8.339404804,30.84505899,0",-8.339404804,30.84505899
|
972 |
-
970,TAMSOULT,"-8.479873388,30.84219388,0",-8.479873388,30.84219388
|
973 |
-
971,BOU GHAZIR,"-8.349229862,30.90822156,0",-8.349229862,30.90822156
|
974 |
-
972,IMERGUENE,"-8.604504225,30.83554561,0",-8.604504225,30.83554561
|
975 |
-
973,KSAR AKDIM,"-5.815093264,31.70079925,0",-5.815093264,31.70079925
|
976 |
-
974,KSAR OUATAB,"-5.816328146,31.70429989,0",-5.816328146,31.70429989
|
977 |
-
975,OUITKRAZENE,"-8.801134639,30.72488992,0",-8.801134639,30.72488992
|
978 |
-
976,TALATANE,"-8.897867157,30.89660018,0",-8.897867157,30.89660018
|
979 |
-
977,AIT YAHIA,"-8.816243575,30.95322736,0",-8.816243575,30.95322736
|
980 |
-
978,ID AMER OU ALI,"-7.658957988,30.70175556,0",-7.658957988,30.70175556
|
981 |
-
979,TAMALOUTE,"-7.738509801,30.72474797,0",-7.738509801,30.72474797
|
982 |
-
980,TIGHARMTE,"-7.652342099,31.09313716,0",-7.652342099,31.09313716
|
983 |
-
981,TINGHARDA,"-7.887954027,30.86373864,0",-7.887954027,30.86373864
|
984 |
-
982,TAGADIRTE,"-7.85885622,31.34072948,0",-7.85885622,31.34072948
|
985 |
-
983,AKHFEROU OU FELLA,"-8.766684021,30.73077974,0",-8.766684021,30.73077974
|
986 |
-
984,TAMAROUTE,"-8.246204386,30.93108922,0",-8.246204386,30.93108922
|
987 |
-
985,IGHIL NOUKALEF,"-7.702217757,31.39123958,0",-7.702217757,31.39123958
|
988 |
-
986,TAGHWACHT,"-8.579850773,30.76786903,0",-8.579850773,30.76786903
|
989 |
-
987,OUANSKRA,"-7.85917232,31.15363432,0",-7.85917232,31.15363432
|
990 |
-
988,AMGHRAOUNE,"-8.159159338,31.01256041,0",-8.159159338,31.01256041
|
991 |
-
989,TADDARTE,"-7.653831081,31.37792202,0",-7.653831081,31.37792202
|
992 |
-
990,AFZA,"-7.751084002,31.02159135,0",-7.751084002,31.02159135
|
993 |
-
991,MZGAMMATE,"-7.815647148,30.98365327,0",-7.815647148,30.98365327
|
994 |
-
992,TIMSSALE AIT YAHIA OUALI,"-7.142541081,31.27349516,0",-7.142541081,31.27349516
|
995 |
-
993,AMARZWAST,"-7.860685777,31.26159963,0",-7.860685777,31.26159963
|
996 |
-
994,TISSEKHT NAIT WADIF,"-7.813674872,30.73947231,0",-7.813674872,30.73947231
|
997 |
-
995,TAWRIRT,"-8.680623929,30.84863857,0",-8.680623929,30.84863857
|
998 |
-
996,AMZAOUROU,"-7.884992338,30.88216855,0",-7.884992338,30.88216855
|
999 |
-
997,ASSARAGUE,"-7.825421848,30.96380752,0",-7.825421848,30.96380752
|
1000 |
-
998,ASSIF ZIMER,"-7.738246008,30.69607153,0",-7.738246008,30.69607153
|
1001 |
-
999,TAGHOUGALTE,"-7.987482473,30.88666597,0",-7.987482473,30.88666597
|
1002 |
-
1000,TAMMAJOUTE,"-7.97507081,30.89908704,0",-7.97507081,30.89908704
|
1003 |
-
1001,OUKHRIBENE,"-8.953104694,30.88688285,0",-8.953104694,30.88688285
|
1004 |
-
1002,TAMSALLOUMT,"-8.155746099,30.88350905,0",-8.155746099,30.88350905
|
1005 |
-
1003,AFFALLA NOUFRA,"-8.065345024,30.89351571,0",-8.065345024,30.89351571
|
1006 |
-
1004,BOUGHIOUL,"-8.641682786,30.62484232,0",-8.641682786,30.62484232
|
1007 |
-
1005,ZAOUIAT SIDI ABDELLAH OU MOUSSA,"-8.445809017,30.7019543,0",-8.445809017,30.7019543
|
1008 |
-
1006,LAMKAYAT,"-8.393299154,30.89916656,0",-8.393299154,30.89916656
|
1009 |
-
1007,TANFGUIKHTE,"-8.383759959,30.99359686,0",-8.383759959,30.99359686
|
1010 |
-
1008,TAWYALT,"-8.427497165,30.8058547,0",-8.427497165,30.8058547
|
1011 |
-
1009,AIT TATLALENE,"-7.211779114,31.30413322,0",-7.211779114,31.30413322
|
1012 |
-
1010,,"-7.866496824,31.16181017,0",-7.866496824,31.16181017
|
1013 |
-
1011,RBAT,"-6.199965128,31.42120928,0",-6.199965128,31.42120928
|
1014 |
-
1012,IZLANE,"-8.878162032,30.66621764,0",-8.878162032,30.66621764
|
1015 |
-
1013,ANDIL,"-8.665063451,30.82140643,0",-8.665063451,30.82140643
|
1016 |
-
1014,IMI NEMSSOUNTE,"-7.874846698,30.83488991,0",-7.874846698,30.83488991
|
1017 |
-
1015,AZQUER,"-8.711494788,30.75545747,0",-8.711494788,30.75545747
|
1018 |
-
1016,,"-8.831807748,30.72353503,0",-8.831807748,30.72353503
|
1019 |
-
1017,ANFID,"-7.633762054,31.1173614,0",-7.633762054,31.1173614
|
1020 |
-
1018,ZAOUIAT SIDI BOUZAID,"-8.562048309,30.6989748,0",-8.562048309,30.6989748
|
1021 |
-
1019,KSAR AIT OURIR,"-5.811407484,31.69977526,0",-5.811407484,31.69977526
|
1022 |
-
1020,AGADIR LAKHMASS,"-7.777354396,31.29856999,0",-7.777354396,31.29856999
|
1023 |
-
1021,TILEMSINE,"-7.594675333,30.85293396,0",-7.594675333,30.85293396
|
1024 |
-
1022,TADDARTE,"-7.711929724,31.38988281,0",-7.711929724,31.38988281
|
1025 |
-
1023,TINEGHLAT,"-8.523047647,30.7905266,0",-8.523047647,30.7905266
|
1026 |
-
1024,ZARWOUNE,"-7.534424102,31.26051975,0",-7.534424102,31.26051975
|
1027 |
-
1025,IMIOURMARE,"-8.264395089,31.0950131,0",-8.264395089,31.0950131
|
1028 |
-
1026,TIZOUAL,"-7.794281223,31.01106882,0",-7.794281223,31.01106882
|
1029 |
-
1027,OUGOUGNE,"-7.881414223,30.89421759,0",-7.881414223,30.89421759
|
1030 |
-
1028,AIT OUNABGUI,"-5.889226585,31.69326181,0",-5.889226585,31.69326181
|
1031 |
-
1029,IZHAGUENE,"-5.770655733,31.81149212,0",-5.770655733,31.81149212
|
1032 |
-
1030,AGHLLA,"-8.349724102,30.84322944,0",-8.349724102,30.84322944
|
1033 |
-
1031,AIT YOUBE,"-6.271504631,31.40313875,0",-6.271504631,31.40313875
|
1034 |
-
1032,AITBENAAMER,"-7.385890851,31.37057892,0",-7.385890851,31.37057892
|
1035 |
-
1033,AIT OUZKRI,"-8.247228578,31.18470182,0",-8.247228578,31.18470182
|
1036 |
-
1034,TIZGUE,"-8.253905647,31.173974,0",-8.253905647,31.173974
|
1037 |
-
1035,TIN GHORINE,"-7.880658403,31.15735466,0",-7.880658403,31.15735466
|
1038 |
-
1036,TAMMASTE,"-7.352098981,31.33357149,0",-7.352098981,31.33357149
|
1039 |
-
1037,TANAZRAR,"-8.68532412,30.82046062,0",-8.68532412,30.82046062
|
1040 |
-
1038,AL JAMAANE,"-7.788052951,31.28932274,0",-7.788052951,31.28932274
|
1041 |
-
1039,ARGUE,"-7.868657422,30.99295521,0",-7.868657422,30.99295521
|
1042 |
-
1040,AIT MAALA TAMTMAZER,"-8.29230166,30.84913489,0",-8.29230166,30.84913489
|
1043 |
-
1041,TOULGUINE,"-8.330514439,31.16115856,0",-8.330514439,31.16115856
|
1044 |
-
1042,WAKHAFAMANE,"-8.157667909,31.11273462,0",-8.157667909,31.11273462
|
1045 |
-
1043,AIT CHARRAH,"-8.183103879,31.12976865,0",-8.183103879,31.12976865
|
1046 |
-
1044,IGUER NKOURISSE,"-8.136027925,31.05107317,0",-8.136027925,31.05107317
|
1047 |
-
1045,TAMZMAMANE,"-8.377048856,30.9906389,0",-8.377048856,30.9906389
|
1048 |
-
1046,IGOUNANE,"-8.768267258,30.80777828,0",-8.768267258,30.80777828
|
1049 |
-
1047,IGUARDANE,"-8.252813214,31.15693113,0",-8.252813214,31.15693113
|
1050 |
-
1048,TALMITARTE,"-7.836545699,30.95607216,0",-7.836545699,30.95607216
|
1051 |
-
1049,IMASKER,"-8.622014672,30.84381085,0",-8.622014672,30.84381085
|
1052 |
-
1050,IMZINE,"-8.625459558,30.77250419,0",-8.625459558,30.77250419
|
1053 |
-
1051,ADDAYA,"-8.644771106,30.7431898,0",-8.644771106,30.7431898
|
1054 |
-
1052,IGLI IZDAR,"-7.900900771,30.85490486,0",-7.900900771,30.85490486
|
1055 |
-
1053,TIRIRTE,"-7.925277403,30.96524702,0",-7.925277403,30.96524702
|
1056 |
-
1054,TADOUST,"-8.528820264,30.66891724,0",-8.528820264,30.66891724
|
1057 |
-
1055,ASLOUNE,"-8.350078543,30.99265653,0",-8.350078543,30.99265653
|
1058 |
-
1056,TAGHADIRT,"-7.847805401,31.15559583,0",-7.847805401,31.15559583
|
1059 |
-
1057,TAMENSSASSARE,"-7.507448916,30.66067019,0",-7.507448916,30.66067019
|
1060 |
-
1058,LARBAA,"-7.759785236,31.02436211,0",-7.759785236,31.02436211
|
1061 |
-
1059,TALAYNTE,"-8.130392657,31.05350916,0",-8.130392657,31.05350916
|
1062 |
-
1060,WANAFSIOUINE,"-7.833024656,31.04908479,0",-7.833024656,31.04908479
|
1063 |
-
1061,TACHAKCHTE,"-8.358491236,31.0141512,0",-8.358491236,31.0141512
|
1064 |
-
1062,AMSIWI,"-8.483874121,30.89398748,0",-8.483874121,30.89398748
|
1065 |
-
1063,TIZGUI,"-7.579100938,30.62727265,0",-7.579100938,30.62727265
|
1066 |
-
1064,IMSLANE,"-8.02976889,30.96863201,0",-8.02976889,30.96863201
|
1067 |
-
1065,,"-8.052055038,30.93506628,0",-8.052055038,30.93506628
|
1068 |
-
1066,SAMGHORTE,"-8.221033074,31.09821673,0",-8.221033074,31.09821673
|
1069 |
-
1067,TIZGUI OU BLAIDE,"-8.305054114,31.1662448,0",-8.305054114,31.1662448
|
1070 |
-
1068,IDA OU BLAL,"-8.548226621,30.7568287,0",-8.548226621,30.7568287
|
1071 |
-
1069,ANMITER,"-7.785836845,31.19820911,0",-7.785836845,31.19820911
|
1072 |
-
1070,TIMGUIST,"-7.777624451,31.19634098,0",-7.777624451,31.19634098
|
1073 |
-
1071,MCHADIL,"-8.279865442,30.92566626,0",-8.279865442,30.92566626
|
1074 |
-
1072,ATNIRITE,"-8.318230215,31.10595865,0",-8.318230215,31.10595865
|
1075 |
-
1073,OURIZE,"-7.403671897,31.37366939,0",-7.403671897,31.37366939
|
1076 |
-
1074,TAJELTE OUFELLA,"-8.842420955,30.85780877,0",-8.842420955,30.85780877
|
1077 |
-
1075,TAGMOUTE,"-8.27878908,30.93485502,0",-8.27878908,30.93485502
|
1078 |
-
1076,WARTI,"-8.207318309,31.06286332,0",-8.207318309,31.06286332
|
1079 |
-
1077,TAFZA,"-7.778858284,31.35797931,0",-7.778858284,31.35797931
|
1080 |
-
1078,TISGOUANE,"-7.849614993,31.01944075,0",-7.849614993,31.01944075
|
1081 |
-
1079,ZAOUIAT IGUERD IGHIL,"-8.368220727,30.76133157,0",-8.368220727,30.76133157
|
1082 |
-
1080,IFRI,"-8.281515119,30.81944241,0",-8.281515119,30.81944241
|
1083 |
-
1081,TABIA,"-8.97005424,30.89318087,0",-8.97005424,30.89318087
|
1084 |
-
1082,ZT TASSAFT,"-8.219969197,30.95556705,0",-8.219969197,30.95556705
|
1085 |
-
1083,EL HNAINE,"-8.148859761,31.01612257,0",-8.148859761,31.01612257
|
1086 |
-
1084,WAFADNA,"-7.516367178,31.37662177,0",-7.516367178,31.37662177
|
1087 |
-
1085,IGOURDANE,"-7.761718841,31.02940168,0",-7.761718841,31.02940168
|
1088 |
-
1086,TOUGHOUTE,"-7.642019791,31.08421485,0",-7.642019791,31.08421485
|
1089 |
-
1087,TAKOUCHTAMTE,"-7.645199151,30.58458833,0",-7.645199151,30.58458833
|
1090 |
-
1088,AIT WALMANE,"-7.55297816,30.5850168,0",-7.55297816,30.5850168
|
1091 |
-
1089,ANFAG,"-8.182256363,31.19929698,0",-8.182256363,31.19929698
|
1092 |
-
1090,TAJGALTE,"-8.381544656,30.7890684,0",-8.381544656,30.7890684
|
1093 |
-
1091,AMASSINE,"-7.788771105,31.31035099,0",-7.788771105,31.31035099
|
1094 |
-
1092,TASDMERTE,"-8.713552212,30.74097964,0",-8.713552212,30.74097964
|
1095 |
-
1093,TOUGOUKHT,"-8.509409379,30.7818957,0",-8.509409379,30.7818957
|
1096 |
-
1094,TAAYATE,"-7.306867834,31.35289511,0",-7.306867834,31.35289511
|
1097 |
-
1095,AMASSINE,"-7.583427866,30.80910337,0",-7.583427866,30.80910337
|
1098 |
-
1096,AGRILAOUN,"-7.595054199,30.85643598,0",-7.595054199,30.85643598
|
1099 |
-
1097,IZOUKANNANE,"-7.863444528,30.83675491,0",-7.863444528,30.83675491
|
1100 |
-
1098,TIMITARE,"-7.895987828,30.83303057,0",-7.895987828,30.83303057
|
1101 |
-
1099,TARKOUT,"-8.623065499,30.85651811,0",-8.623065499,30.85651811
|
1102 |
-
1100,TAGADIRT NTAFINGOULT,"-8.387274004,30.76496523,0",-8.387274004,30.76496523
|
1103 |
-
1101,IGHIRA,"-8.289034161,30.85252278,0",-8.289034161,30.85252278
|
1104 |
-
1102,TIZINTZOUGUARTE,"-7.677747475,31.39773439,0",-7.677747475,31.39773439
|
1105 |
-
1103,AZEMOUR,"-8.0889346,31.10585421,0",-8.0889346,31.10585421
|
1106 |
-
1104,MARIGUA,"-8.034298096,31.18603267,0",-8.034298096,31.18603267
|
1107 |
-
1105,TASSA OUIRGANE,"-8.028928418,31.16490604,0",-8.028928418,31.16490604
|
1108 |
-
1106,TIZI ZOUGGARTE,"-7.98486225,31.13325836,0",-7.98486225,31.13325836
|
1109 |
-
1107,ISKALEN,"-8.274215239,30.93349365,0",-8.274215239,30.93349365
|
1110 |
-
1108,TIZOUDA,"-6.566513487,31.28777261,0",-6.566513487,31.28777261
|
1111 |
-
1109,,"-7.268103547,31.28935547,0",-7.268103547,31.28935547
|
1112 |
-
1110,ARGUE,"-7.31897905,31.25768101,0",-7.31897905,31.25768101
|
1113 |
-
1111,AGADIR INMZAL,"-8.01226333,30.99830307,0",-8.01226333,30.99830307
|
1114 |
-
1112,,"-7.128783104,31.16287699,0",-7.128783104,31.16287699
|
1115 |
-
1113,TIOURASSINE,"-7.151024878,31.276392,0",-7.151024878,31.276392
|
1116 |
-
1114,ASQAOUR,"-7.666538215,31.23207043,0",-7.666538215,31.23207043
|
1117 |
-
1115,TIMSALE,"-8.72311326,31.11377428,0",-8.72311326,31.11377428
|
1118 |
-
1116,OUSSIKIS,"-8.722636639,31.00100768,0",-8.722636639,31.00100768
|
1119 |
-
1117,IMLIL,"-8.44059058,30.8956513,0",-8.44059058,30.8956513
|
1120 |
-
1118,TARZIRINE,"-6.446998908,31.39339822,0",-6.446998908,31.39339822
|
1121 |
-
1119,ADARDORE,"-8.278826713,31.07331629,0",-8.278826713,31.07331629
|
1122 |
-
1120,IGHRAME,"-8.049421766,31.07403881,0",-8.049421766,31.07403881
|
1123 |
-
1121,AIT HIMMI,"-7.769384787,30.76931125,0",-7.769384787,30.76931125
|
1124 |
-
1122,TAOUSS,"-8.270408058,30.94106967,0",-8.270408058,30.94106967
|
1125 |
-
1123,TIJGHICHTE,"-8.090516303,30.97012018,0",-8.090516303,30.97012018
|
1126 |
-
1124,TAGHZOUTE,"-8.86167312,30.92147071,0",-8.86167312,30.92147071
|
1127 |
-
1125,TIZZA,"-8.778384523,30.91685174,0",-8.778384523,30.91685174
|
1128 |
-
1126,AMASSA,"-8.827305619,30.86723276,0",-8.827305619,30.86723276
|
1129 |
-
1127,KAIKTE,"-8.854311896,30.86235732,0",-8.854311896,30.86235732
|
1130 |
-
1128,CASLAB,"-8.554969238,30.6821786,0",-8.554969238,30.6821786
|
1131 |
-
1129,AGADAL,"-8.505855459,30.64672204,0",-8.505855459,30.64672204
|
1132 |
-
1130,TIZI OU HAMMOU,"-8.672132358,30.65647704,0",-8.672132358,30.65647704
|
1133 |
-
1131,AZROU,"-7.948510748,30.95529105,0",-7.948510748,30.95529105
|
1134 |
-
1132,TIZA GHARINE,"-8.227230432,30.9784861,0",-8.227230432,30.9784861
|
1135 |
-
1133,OUKONE,"-8.321640621,30.92250039,0",-8.321640621,30.92250039
|
1136 |
-
1134,AGHBALOU,"-7.736195822,31.31128286,0",-7.736195822,31.31128286
|
1137 |
-
1135,TIMSKRINE NOUGHBALOU,"-7.744861464,31.29959822,0",-7.744861464,31.29959822
|
1138 |
-
1136,IGHRAME,"-8.140787629,31.10647004,0",-8.140787629,31.10647004
|
1139 |
-
1137,TAHT DOUM,"-7.786930155,31.36979025,0",-7.786930155,31.36979025
|
1140 |
-
1138,TAOURIRTE,"-7.768692283,31.3622727,0",-7.768692283,31.3622727
|
1141 |
-
1139,TIZOUNTE,"-8.733934173,30.61596999,0",-8.733934173,30.61596999
|
1142 |
-
1140,AIT MOUSSA,"-8.684398529,30.6151917,0",-8.684398529,30.6151917
|
1143 |
-
1141,AMASSINE,"-6.352287312,31.46784763,0",-6.352287312,31.46784763
|
1144 |
-
1142,ASNI,"-7.722904353,31.30025445,0",-7.722904353,31.30025445
|
1145 |
-
1143,AIT ZEITOUNE,"-8.090523673,31.01967796,0",-8.090523673,31.01967796
|
1146 |
-
1144,AIT TIGGA,"-7.50916525,30.70265639,0",-7.50916525,30.70265639
|
1147 |
-
1145,TARZOUTE,"-6.182124767,31.58319127,0",-6.182124767,31.58319127
|
1148 |
-
1146,AMNDAL,"-8.455834326,30.92044875,0",-8.455834326,30.92044875
|
1149 |
-
1147,IMIMGOUNTE,"-8.878117358,30.86477123,0",-8.878117358,30.86477123
|
1150 |
-
1148,IGUIDARE,"-8.93418851,30.88343752,0",-8.93418851,30.88343752
|
1151 |
-
1149,TAMSKSITE,"-7.784895996,30.76632806,0",-7.784895996,30.76632806
|
1152 |
-
1150,ZAOUIAT BOUSKOUR,"-5.874946395,31.58722353,0",-5.874946395,31.58722353
|
1153 |
-
1151,CHRAIRE,"-8.473098203,30.67956532,0",-8.473098203,30.67956532
|
1154 |
-
1152,TAMSOULT SOUAL,"-8.384537946,30.84188812,0",-8.384537946,30.84188812
|
1155 |
-
1153,DOU ISKLE,"-8.281119969,30.78456043,0",-8.281119969,30.78456043
|
1156 |
-
1154,TIFERT,"-8.348545465,30.77150791,0",-8.348545465,30.77150791
|
1157 |
-
1155,IFOURIRNE,"-8.239360155,30.96880451,0",-8.239360155,30.96880451
|
1158 |
-
1156,AIT ALI OU AISSA,"-5.805654987,31.74442094,0",-5.805654987,31.74442094
|
1159 |
-
1157,ZAOUIAT TABGOURT,"-8.504916237,30.76003295,0",-8.504916237,30.76003295
|
1160 |
-
1158,TOUDMA,"-8.511039179,30.79006977,0",-8.511039179,30.79006977
|
1161 |
-
1159,AIT ALI OU MOUSSA,"-6.713909371,31.28931362,0",-6.713909371,31.28931362
|
1162 |
-
1160,DOU TOURIRTE,"-8.2099922,30.96515158,0",-8.2099922,30.96515158
|
1163 |
-
1161,AIT HAMMOU OU SAID,"-5.886799673,31.58053002,0",-5.886799673,31.58053002
|
1164 |
-
1162,TALTA,"-8.59210513,30.81453443,0",-8.59210513,30.81453443
|
1165 |
-
1163,TAMOUMANT,"-8.432311395,30.76544848,0",-8.432311395,30.76544848
|
1166 |
-
1164,ARTATAYNE,"-8.260379808,30.93435354,0",-8.260379808,30.93435354
|
1167 |
-
1165,IMIN-TALA,"-8.267106325,31.12908466,0",-8.267106325,31.12908466
|
1168 |
-
1166,TIZI NAIT IAZZA,"-7.759485597,31.0201294,0",-7.759485597,31.0201294
|
1169 |
-
1167,MEGDOUT,"-8.615360527,30.83983913,0",-8.615360527,30.83983913
|
1170 |
-
1168,IGU-N-CHEIKH,"-8.970366751,30.71664921,0",-8.970366751,30.71664921
|
1171 |
-
1169,MEZWADDE,"-7.680960146,30.58284438,0",-7.680960146,30.58284438
|
1172 |
-
1170,AMZZARKO,"-7.844190994,30.94630487,0",-7.844190994,30.94630487
|
1173 |
-
1171,AIT ZAKRI,"-8.147941401,30.89227205,0",-8.147941401,30.89227205
|
1174 |
-
1172,TARGA N-TAHMIT,"-8.121739332,30.86129159,0",-8.121739332,30.86129159
|
1175 |
-
1173,TIFLTE AIT ITFAOU,"-6.569327984,31.22192304,0",-6.569327984,31.22192304
|
1176 |
-
1174,SOUGUANE,"-7.674757924,31.35292724,0",-7.674757924,31.35292724
|
1177 |
-
1175,TALMSAWT,"-8.983864001,30.83212691,0",-8.983864001,30.83212691
|
1178 |
-
1176,AIT OTHMANE,"-8.394214123,31.15230581,0",-8.394214123,31.15230581
|
1179 |
-
1177,DOU OUZROU,"-8.384798614,31.16122428,0",-8.384798614,31.16122428
|
1180 |
-
1178,AMZILE-EL THTANI,"-6.216339059,31.41118898,0",-6.216339059,31.41118898
|
1181 |
-
1179,,"-8.440953168,30.7417746,0",-8.440953168,30.7417746
|
1182 |
-
1180,SGOUR,"-7.725390911,31.34344593,0",-7.725390911,31.34344593
|
1183 |
-
1181,INADENE,"-8.142890016,31.03496329,0",-8.142890016,31.03496329
|
1184 |
-
1182,ASSAKA,"-7.757436309,30.82348482,0",-7.757436309,30.82348482
|
1185 |
-
1183,TOUZOUMTANE,"-8.554749801,30.72392121,0",-8.554749801,30.72392121
|
1186 |
-
1184,TIZGUINE,"-6.122658746,31.44590271,0",-6.122658746,31.44590271
|
1187 |
-
1185,IMOUZROU AGOUMADANE,"-8.660537921,30.70827751,0",-8.660537921,30.70827751
|
1188 |
-
1186,TASSAWANTE,"-8.190784156,30.98427393,0",-8.190784156,30.98427393
|
1189 |
-
1187,TAGADIRTE NOUMIOSSE,"-8.206342921,30.96425316,0",-8.206342921,30.96425316
|
1190 |
-
1188,TAWRIRT,"-8.478844194,30.89339406,0",-8.478844194,30.89339406
|
1191 |
-
1189,BOULAHBAK ALMODAA,"-8.284362292,30.97790124,0",-8.284362292,30.97790124
|
1192 |
-
1190,KMA,"-8.572750589,30.78808645,0",-8.572750589,30.78808645
|
1193 |
-
1191,AIT BOUBKER,"-8.156259267,31.20036942,0",-8.156259267,31.20036942
|
1194 |
-
1192,OUALGGO,"-8.913054003,31.05772976,0",-8.913054003,31.05772976
|
1195 |
-
1193,TAMSSOULTE,"-8.909818734,30.90664695,0",-8.909818734,30.90664695
|
1196 |
-
1194,TIWARDIWINE,"-7.749685121,31.19756148,0",-7.749685121,31.19756148
|
1197 |
-
1195,TAKIOUTE,"-7.759387461,31.25608754,0",-7.759387461,31.25608754
|
1198 |
-
1196,TARGAN-OUFRA,"-8.073309302,30.89513461,0",-8.073309302,30.89513461
|
1199 |
-
1197,,"-7.655022221,31.05874848,0",-7.655022221,31.05874848
|
1200 |
-
1198,AMANZAL,"-7.722004072,31.16501314,0",-7.722004072,31.16501314
|
1201 |
-
1199,TASGUINTE,"-8.852447506,30.87473043,0",-8.852447506,30.87473043
|
1202 |
-
1200,TAMZRITE(IGAARNANE),"-6.932188378,31.32049578,0",-6.932188378,31.32049578
|
1203 |
-
1201,MATATE,"-7.941973385,31.1571317,0",-7.941973385,31.1571317
|
1204 |
-
1202,IKISS,"-7.888535763,31.16571636,0",-7.888535763,31.16571636
|
1205 |
-
1203,,"-7.62864398,31.117373,0",-7.62864398,31.117373
|
1206 |
-
1204,ALMS,"-8.847901233,31.06072957,0",-8.847901233,31.06072957
|
1207 |
-
1205,TANSGHARTE,"-7.975198036,31.22398614,0",-7.975198036,31.22398614
|
1208 |
-
1206,AGADIR ISMIR,"-7.885976308,31.24368611,0",-7.885976308,31.24368611
|
1209 |
-
1207,TAWRIRTE,"-7.677449997,31.04819033,0",-7.677449997,31.04819033
|
1210 |
-
1208,TAOURIRT,"-8.668507596,30.80170554,0",-8.668507596,30.80170554
|
1211 |
-
1209,TAGHIGHOUCHT,"-7.839242749,30.82135697,0",-7.839242749,30.82135697
|
1212 |
-
1210,BOUSGUINE,"-8.880485407,30.68613694,0",-8.880485407,30.68613694
|
1213 |
-
1211,TALATAN,"-8.945127385,30.6957643,0",-8.945127385,30.6957643
|
1214 |
-
1212,AIT ABDI,"-5.80835748,31.73194902,0",-5.80835748,31.73194902
|
1215 |
-
1213,AIT TAMGOUNTE,"-5.808371243,31.75063616,0",-5.808371243,31.75063616
|
1216 |
-
1214,TALATE NOUGNARE,"-7.840406197,30.77715819,0",-7.840406197,30.77715819
|
1217 |
-
1215,TIMZRITE,"-7.691569684,31.06189362,0",-7.691569684,31.06189362
|
1218 |
-
1216,TIFIXTE,"-8.372543688,30.76258703,0",-8.372543688,30.76258703
|
1219 |
-
1217,AIT WAHOU,"-7.769915684,30.81291618,0",-7.769915684,30.81291618
|
1220 |
-
1218,AIT KHLIFA,"-6.239173771,31.41869442,0",-6.239173771,31.41869442
|
1221 |
-
1219,TIGHARMITE,"-5.81043302,31.69695899,0",-5.81043302,31.69695899
|
1222 |
-
1220,AIT HAMD,"-8.244660365,31.1717558,0",-8.244660365,31.1717558
|
1223 |
-
1221,,"-5.827455725,31.6857457,0",-5.827455725,31.6857457
|
1224 |
-
1222,IGRANE TAOUINAKHT,"-8.490359557,30.78197858,0",-8.490359557,30.78197858
|
1225 |
-
1223,AWFOUR,"-8.590554562,30.97436252,0",-8.590554562,30.97436252
|
1226 |
-
1224,ASSAKA,"-8.019946561,30.8574795,0",-8.019946561,30.8574795
|
1227 |
-
1225,ASSALDA,"-7.96566162,31.25750632,0",-7.96566162,31.25750632
|
1228 |
-
1226,ANARGHI,"-8.409552743,30.91825352,0",-8.409552743,30.91825352
|
1229 |
-
1227,TADDARTE,"-7.394210121,31.35851969,0",-7.394210121,31.35851969
|
1230 |
-
1228,AMTSITANE,"-7.374244559,31.32579136,0",-7.374244559,31.32579136
|
1231 |
-
1229,TADDART,"-8.581872069,30.86294844,0",-8.581872069,30.86294844
|
1232 |
-
1230,ARGHANE,"-8.233639046,30.97889547,0",-8.233639046,30.97889547
|
1233 |
-
1231,TINMAL,"-8.224761565,30.9828638,0",-8.224761565,30.9828638
|
1234 |
-
1232,IGHOUNANE,"-7.144038714,31.28626564,0",-7.144038714,31.28626564
|
1235 |
-
1233,HLOUTE,"-7.893104962,30.85458789,0",-7.893104962,30.85458789
|
1236 |
-
1234,AMASSKRA,"-7.427239593,31.36345706,0",-7.427239593,31.36345706
|
1237 |
-
1235,WANITARNE,"-7.830358257,30.77787467,0",-7.830358257,30.77787467
|
1238 |
-
1236,AKOUCHTIM,"-7.63398087,31.10523316,0",-7.63398087,31.10523316
|
1239 |
-
1237,AGDIM,"-8.097196299,30.86031737,0",-8.097196299,30.86031737
|
1240 |
-
1238,AIT ATTOU OU YAKKOU,"-5.766323932,31.83002296,0",-5.766323932,31.83002296
|
1241 |
-
1239,AIT FARS,"-7.129636042,31.13476059,0",-7.129636042,31.13476059
|
1242 |
-
1240,TAKOURDMI,"-8.180289964,30.89070325,0",-8.180289964,30.89070325
|
1243 |
-
1241,AMAZER,"-7.789014314,31.26708014,0",-7.789014314,31.26708014
|
1244 |
-
1242,AIT CHAOUIT,"-7.78334498,31.37174569,0",-7.78334498,31.37174569
|
1245 |
-
1243,EL HAJEB,"-7.801005955,31.37213789,0",-7.801005955,31.37213789
|
1246 |
-
1244,TAMARRISTE,"-8.850167421,30.75888182,0",-8.850167421,30.75888182
|
1247 |
-
1245,YABOURA,"-7.758709685,31.30015096,0",-7.758709685,31.30015096
|
1248 |
-
1246,TIMLILTE,"-8.207328561,30.97436753,0",-8.207328561,30.97436753
|
1249 |
-
1247,ASSAKA,"-8.776877967,30.72197209,0",-8.776877967,30.72197209
|
1250 |
-
1248,AGADIR LJAMA,"-8.426123711,30.79949494,0",-8.426123711,30.79949494
|
1251 |
-
1249,TAWART,"-8.668687592,30.83516217,0",-8.668687592,30.83516217
|
1252 |
-
1250,OUSRAINE,"-7.76935945,31.00978226,0",-7.76935945,31.00978226
|
1253 |
-
1251,TIHLATE,"-8.910630813,30.68631916,0",-8.910630813,30.68631916
|
1254 |
-
1252,AIT BOUKHZIR,"-8.327804337,30.85346616,0",-8.327804337,30.85346616
|
1255 |
-
1253,AIT AMAROU BRAHIM,"-5.877661961,31.58341416,0",-5.877661961,31.58341416
|
1256 |
-
1254,AGHBALOU,"-7.709711291,30.8276792,0",-7.709711291,30.8276792
|
1257 |
-
1255,WAWZRAKT,"-8.571089722,30.85692721,0",-8.571089722,30.85692721
|
1258 |
-
1256,ILOUKOUSSEN,"-7.847847114,30.82578191,0",-7.847847114,30.82578191
|
1259 |
-
1257,AIT CHERIF,"-8.756217748,30.66308701,0",-8.756217748,30.66308701
|
1260 |
-
1258,AZGARANE,"-8.880704155,30.70018251,0",-8.880704155,30.70018251
|
1261 |
-
1259,TOUKOUNTE,"-7.762131366,31.02676934,0",-7.762131366,31.02676934
|
1262 |
-
1260,ABANE,"-7.763510404,30.78739706,0",-7.763510404,30.78739706
|
1263 |
-
1261,TIMALIZEN,"-7.749794147,31.35110332,0",-7.749794147,31.35110332
|
1264 |
-
1262,TAMKZDART,"-6.420828035,31.43241781,0",-6.420828035,31.43241781
|
1265 |
-
1263,TIGHLI,"-6.465245175,31.46423623,0",-6.465245175,31.46423623
|
1266 |
-
1264,TOUYALINE,"-8.49260213,30.89962716,0",-8.49260213,30.89962716
|
1267 |
-
1265,TAOURIRTE,"-7.836814113,30.80149583,0",-7.836814113,30.80149583
|
1268 |
-
1266,TARGANIZRANE,"-8.364279586,30.84087135,0",-8.364279586,30.84087135
|
1269 |
-
1267,TANSSIFTE,"-6.587786239,31.24278325,0",-6.587786239,31.24278325
|
1270 |
-
1268,ICHAHRINE,"-7.852841061,30.8395675,0",-7.852841061,30.8395675
|
1271 |
-
1269,ALOUSSE,"-8.33303087,30.99048964,0",-8.33303087,30.99048964
|
1272 |
-
1270,WANLAKHTE,"-8.99768451,31.01303846,0",-8.99768451,31.01303846
|
1273 |
-
1271,TAZAITE,"-8.845478496,30.75261187,0",-8.845478496,30.75261187
|
1274 |
-
1272,IARME-AKDIME,"-6.11833479,31.45110777,0",-6.11833479,31.45110777
|
1275 |
-
1273,ANNAMAR,"-7.667543866,31.27473869,0",-7.667543866,31.27473869
|
1276 |
-
1274,TASGUINTE,"-7.969154802,30.90944826,0",-7.969154802,30.90944826
|
1277 |
-
1275,IDAGH,"-7.317362809,31.36008041,0",-7.317362809,31.36008041
|
1278 |
-
1276,AIT MAAROUF,"-7.573579734,30.58373669,0",-7.573579734,30.58373669
|
1279 |
-
1277,AIT ZMLAL,"-8.706871813,30.95287075,0",-8.706871813,30.95287075
|
1280 |
-
1278,TAWRIRTE,"-8.507359206,31.11334486,0",-8.507359206,31.11334486
|
1281 |
-
1279,TAGADIRT NID AMMOU,"-7.888437538,30.96251975,0",-7.888437538,30.96251975
|
1282 |
-
1280,ANGOUKHTE,"-8.533503572,30.99674362,0",-8.533503572,30.99674362
|
1283 |
-
1281,TAMANGROUTE,"-6.694180579,31.24112915,0",-6.694180579,31.24112915
|
1284 |
-
1282,IOUACODEN,"-7.537383597,31.36217518,0",-7.537383597,31.36217518
|
1285 |
-
1283,ISSOUKTAY,"-7.743639515,31.31833703,0",-7.743639515,31.31833703
|
1286 |
-
1284,TANBDANT,"-8.449489577,30.81415813,0",-8.449489577,30.81415813
|
1287 |
-
1285,AZROU MELLENE,"-8.583254097,30.9829239,0",-8.583254097,30.9829239
|
1288 |
-
1286,TIQUI,"-7.940799129,30.95012338,0",-7.940799129,30.95012338
|
1289 |
-
1287,IMINTALAT,"-8.139429279,31.20141668,0",-8.139429279,31.20141668
|
1290 |
-
1288,TAKOULTIMT,"-8.340586013,30.78458892,0",-8.340586013,30.78458892
|
1291 |
-
1289,TAGHZOUTE,"-8.207607178,31.10293891,0",-8.207607178,31.10293891
|
1292 |
-
1290,IMLIL,"-7.821125723,30.99780155,0",-7.821125723,30.99780155
|
1293 |
-
1291,AGUERS AFENE,"-8.702112247,30.9575207,0",-8.702112247,30.9575207
|
1294 |
-
1292,MTILI,"-8.746621817,30.93833734,0",-8.746621817,30.93833734
|
1295 |
-
1293,OUZAGA,"-8.720092691,30.92029184,0",-8.720092691,30.92029184
|
1296 |
-
1294,RARKTOU,"-8.659869793,30.93108458,0",-8.659869793,30.93108458
|
1297 |
-
1295,AZERBZANE,"-7.799051184,30.76500186,0",-7.799051184,30.76500186
|
1298 |
-
1296,TOURBIHINE,"-8.993894031,30.83088204,0",-8.993894031,30.83088204
|
1299 |
-
1297,TAGHRA,"-6.533855177,31.40376072,0",-6.533855177,31.40376072
|
1300 |
-
1298,IHARRAY,"-7.557370045,31.37330376,0",-7.557370045,31.37330376
|
1301 |
-
1299,AGHBALOU AIT LQAQ,"-7.810742407,31.24143288,0",-7.810742407,31.24143288
|
1302 |
-
1300,TAMMAST,"-8.792798077,30.76606268,0",-8.792798077,30.76606268
|
1303 |
-
1301,ASSAKA,"-8.76607308,30.76725223,0",-8.76607308,30.76725223
|
1304 |
-
1302,IGHARMANE,"-7.729985536,31.30314035,0",-7.729985536,31.30314035
|
1305 |
-
1303,TIZGUI OU ZADAR,"-8.990740765,30.9642687,0",-8.990740765,30.9642687
|
1306 |
-
1304,OULAD MELLOUK,"-8.528658117,30.63958592,0",-8.528658117,30.63958592
|
1307 |
-
1305,AFRA,"-8.761804008,30.73010398,0",-8.761804008,30.73010398
|
1308 |
-
1306,MOURGH,"-8.928806186,30.6558274,0",-8.928806186,30.6558274
|
1309 |
-
1307,BOUSKANE,"-8.792477613,30.74035777,0",-8.792477613,30.74035777
|
1310 |
-
1308,IGLI OUFELLA(souk),"-7.899685626,30.85706716,0",-7.899685626,30.85706716
|
1311 |
-
1309,ASSIF LAHLOU,"-8.677606617,30.92529322,0",-8.677606617,30.92529322
|
1312 |
-
1310,MINE ZGOUNDIR,"-7.755240903,30.75952497,0",-7.755240903,30.75952497
|
1313 |
-
1311,TAGADIRTE NAIT ZNIRT,"-7.783523639,31.36503153,0",-7.783523639,31.36503153
|
1314 |
-
1312,AGADIRNE,"-8.166505546,30.9681913,0",-8.166505546,30.9681913
|
1315 |
-
1313,AIT YOUB,"-8.274628352,30.80338258,0",-8.274628352,30.80338258
|
1316 |
-
1314,TAFANTANE,"-7.85348655,31.34534785,0",-7.85348655,31.34534785
|
1317 |
-
1315,IMIDALE,"-8.132545735,31.10809915,0",-8.132545735,31.10809915
|
1318 |
-
1316,TAMSOULT,"-8.37074986,31.00313632,0",-8.37074986,31.00313632
|
1319 |
-
1317,TAGADIRT,"-8.68048652,30.77086926,0",-8.68048652,30.77086926
|
1320 |
-
1318,IGUIDI,"-8.101972502,31.02325618,0",-8.101972502,31.02325618
|
1321 |
-
1319,FATERAWAT,"-7.574152617,30.58718831,0",-7.574152617,30.58718831
|
1322 |
-
1320,OURIGHE,"-8.156413549,31.1056829,0",-8.156413549,31.1056829
|
1323 |
-
1321,TIZ GHOURINE,"-7.696836561,31.07143593,0",-7.696836561,31.07143593
|
1324 |
-
1322,IMZILEN,"-7.645751216,30.6071984,0",-7.645751216,30.6071984
|
1325 |
-
1323,TALLOUZT,"-8.788312791,30.76677482,0",-8.788312791,30.76677482
|
1326 |
-
1324,TACHAKOUCHTE,"-7.760110164,30.63649912,0",-7.760110164,30.63649912
|
1327 |
-
1325,TIGGRTE,"-7.128734274,31.1388537,0",-7.128734274,31.1388537
|
1328 |
-
1326,AGADIR HAJ HAMMOU,"-8.535736461,30.63769777,0",-8.535736461,30.63769777
|
1329 |
-
1327,,"-7.887465972,30.87028648,0",-7.887465972,30.87028648
|
1330 |
-
1328,TAGNIT,"-7.654822842,31.27497547,0",-7.654822842,31.27497547
|
1331 |
-
1329,IZAGGUENE,"-7.916750384,30.97766233,0",-7.916750384,30.97766233
|
1332 |
-
1330,AIT EL KADI,"-8.198364614,30.88479428,0",-8.198364614,30.88479428
|
1333 |
-
1331,AIT TADRART,"-8.242892808,30.84519318,0",-8.242892808,30.84519318
|
1334 |
-
1332,AZMOU,"-8.486762354,31.13220827,0",-8.486762354,31.13220827
|
1335 |
-
1333,AGUERD OU MZLOU,"-8.976756097,30.99075111,0",-8.976756097,30.99075111
|
1336 |
-
1334,IKAKREN,"-8.975409217,30.83199098,0",-8.975409217,30.83199098
|
1337 |
-
1335,AIT LHAROUACH,"-9.001158406,30.95116432,0",-9.001158406,30.95116432
|
1338 |
-
1336,TINOUMARTINE,"-8.895115452,30.96286952,0",-8.895115452,30.96286952
|
1339 |
-
1337,TIMESKERTE,"-8.775657219,31.06094823,0",-8.775657219,31.06094823
|
1340 |
-
1338,TIGOUMANE SKARATE,"-8.80297169,31.08490154,0",-8.80297169,31.08490154
|
1341 |
-
1339,IMIGHZER,"-8.703155314,30.62228187,0",-8.703155314,30.62228187
|
1342 |
-
1340,ZAOUIAT TAKRART,"-9.013343266,30.98179804,0",-9.013343266,30.98179804
|
1343 |
-
1341,TAADADATE TAKDIMTE,"-5.832104527,31.68103102,0",-5.832104527,31.68103102
|
1344 |
-
1342,AIT HMID,"-8.612713692,30.68280181,0",-8.612713692,30.68280181
|
1345 |
-
1343,TIGHARMINE,"-7.60042568,31.36080717,0",-7.60042568,31.36080717
|
1346 |
-
1344,ISLANE,"-8.855657962,30.76642752,0",-8.855657962,30.76642752
|
1347 |
-
1345,AITIFERD,"-7.742386301,30.82171242,0",-7.742386301,30.82171242
|
1348 |
-
1346,IMOUZEZ,"-8.427052779,30.79605365,0",-8.427052779,30.79605365
|
1349 |
-
1347,ASSAISS,"-8.334410604,30.85409967,0",-8.334410604,30.85409967
|
1350 |
-
1348,BENTAFFOU,"-8.74444328,30.60552442,0",-8.74444328,30.60552442
|
1351 |
-
1349,TOURAB,"-8.566708091,31.04105367,0",-8.566708091,31.04105367
|
1352 |
-
1350,ARG,"-7.920435643,31.18676712,0",-7.920435643,31.18676712
|
1353 |
-
1351,WIYGUITE,"-8.217118556,30.94741728,0",-8.217118556,30.94741728
|
1354 |
-
1352,IFGHANE,"-7.921887937,31.23991509,0",-7.921887937,31.23991509
|
1355 |
-
1353,ANAMMAR,"-8.417641715,31.129538,0",-8.417641715,31.129538
|
1356 |
-
1354,AMOUTOU,"-7.652805401,31.35679943,0",-7.652805401,31.35679943
|
1357 |
-
1355,AMARZGANE,"-8.278817786,30.97377741,0",-8.278817786,30.97377741
|
1358 |
-
1356,AKHOUTRIR,"-8.783897658,30.69567462,0",-8.783897658,30.69567462
|
1359 |
-
1357,TAZALTE,"-8.245333426,30.97631238,0",-8.245333426,30.97631238
|
1360 |
-
1358,TIKIWTE,"-8.175063949,30.99996735,0",-8.175063949,30.99996735
|
1361 |
-
1359,,"-8.410303531,30.85816857,0",-8.410303531,30.85816857
|
1362 |
-
1360,TASSILI,"-8.690317118,30.82411293,0",-8.690317118,30.82411293
|
1363 |
-
1361,AIT OUBLAL,"-8.420373544,30.82273538,0",-8.420373544,30.82273538
|
1364 |
-
1362,IZNOUNA,"-8.466505147,31.0488362,0",-8.466505147,31.0488362
|
1365 |
-
1363,WIDRARANE,"-8.386534006,30.89543756,0",-8.386534006,30.89543756
|
1366 |
-
1364,AIT MOUSSI,"-7.773707163,31.25447367,0",-7.773707163,31.25447367
|
1367 |
-
1365,TADMENKALT,"-7.712944132,31.2737114,0",-7.712944132,31.2737114
|
1368 |
-
1366,AMASSINE,"-8.762204403,31.06992032,0",-8.762204403,31.06992032
|
1369 |
-
1367,CENTRE OUKAIMDEN,"-7.857505737,31.20842298,0",-7.857505737,31.20842298
|
1370 |
-
1368,FIGRI,"-8.682495596,30.81711914,0",-8.682495596,30.81711914
|
1371 |
-
1369,IGHIL,"-8.290349188,30.98677929,0",-8.290349188,30.98677929
|
1372 |
-
1370,OURTANE,"-8.906837581,30.9056637,0",-8.906837581,30.9056637
|
1373 |
-
1371,AWRA,"-7.68241959,31.05149585,0",-7.68241959,31.05149585
|
1374 |
-
1372,ANROUYE,"-7.946610622,30.91369434,0",-7.946610622,30.91369434
|
1375 |
-
1373,AIT CHOU,"-7.76867439,31.26465544,0",-7.76867439,31.26465544
|
1376 |
-
1374,AKHBACHEN,"-7.761295415,31.24920488,0",-7.761295415,31.24920488
|
1377 |
-
1375,ALGJI,"-7.784416467,31.36855876,0",-7.784416467,31.36855876
|
1378 |
-
1376,LAKHMISS,"-7.770976744,31.38661745,0",-7.770976744,31.38661745
|
1379 |
-
1377,AKHLIJ,"-7.774981442,31.37270305,0",-7.774981442,31.37270305
|
1380 |
-
1378,OUCHFILANE,"-8.109471344,31.20456661,0",-8.109471344,31.20456661
|
1381 |
-
1379,AWRIR,"-7.755690071,31.26360918,0",-7.755690071,31.26360918
|
1382 |
-
1380,ZAOUIA AIT MECHKOUR,"-7.715145342,31.29957275,0",-7.715145342,31.29957275
|
1383 |
-
1381,ADARDORE,"-8.738182485,31.05655476,0",-8.738182485,31.05655476
|
1384 |
-
1382,AGADIR NAIT BOULMANE,"-7.691144323,31.21866644,0",-7.691144323,31.21866644
|
1385 |
-
1383,KATTO,"-8.274515871,31.08431501,0",-8.274515871,31.08431501
|
1386 |
-
1384,IMI ISLI,"-8.262478891,31.14818448,0",-8.262478891,31.14818448
|
1387 |
-
1385,AZARFSANE,"-7.993244912,31.16665457,0",-7.993244912,31.16665457
|
1388 |
-
1386,IBAACHENE,"-7.718844855,31.20794009,0",-7.718844855,31.20794009
|
1389 |
-
1387,ANFLI,"-7.740261343,31.20070176,0",-7.740261343,31.20070176
|
1390 |
-
1388,TAMSSOULTE,"-7.703611486,31.38737985,0",-7.703611486,31.38737985
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
data/Besoin moins important en électricité.csv
DELETED
The diff for this file is too large to render.
See raw diff
|
|
data/regions.json
DELETED
The diff for this file is too large to render.
See raw diff
|
|
locales/ar/LC_MESSAGES/messages.mo
DELETED
Binary file (4.76 kB)
|
|
locales/ar/LC_MESSAGES/messages.po
DELETED
@@ -1,1443 +0,0 @@
|
|
1 |
-
# SOME DESCRIPTIVE TITLE.
|
2 |
-
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
3 |
-
# This file is distributed under the same license as the PACKAGE package.
|
4 |
-
# FIRST AUTHOR <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"
|
15 |
-
"Language: ar\n"
|
16 |
-
"MIME-Version: 1.0\n"
|
17 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
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"
|
109 |
-
" body {\n"
|
110 |
-
" text-align: right;\n"
|
111 |
-
" }\n"
|
112 |
-
" </style>\n"
|
113 |
-
" "
|
114 |
-
msgstr ""
|
115 |
-
|
116 |
-
#: src/text_content.py:2
|
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"
|
136 |
-
" <br> \n"
|
137 |
-
" <b>✉️ You can contact us via email at </b><a href=\"mailto:"
|
138 |
-
"nt3awnoumorocco@gmail.com\">nt3awnoumorocco@gmail.com</a> or via Instagram "
|
139 |
-
"<a href=\"https://www.instagram.com/nt3awnou_morocco/\">@nt3awnou_morocco</"
|
140 |
-
"a> <br>\n"
|
141 |
-
" <b>📝 Help us report more people in need by filling this form </b><a "
|
142 |
-
"href=\"https://forms.gle/nZNCUVog9ka2Vdqu6\">https://forms.gle/"
|
143 |
-
"nZNCUVog9ka2Vdqu6</a> <br>\n"
|
144 |
-
" <b>📝 NGOs can report their interventions by filling this form </b><a "
|
145 |
-
"href=\"https://forms.gle/PsNSuHHjTTgwQMmVA\">https://forms.gle/"
|
146 |
-
"PsNSuHHjTTgwQMmVA</a> <br>\n"
|
147 |
-
" <b>❗️ Our team is working day and night to verify the data. Please reach "
|
148 |
-
"out to us if you can help us verify the data. </b>\n"
|
149 |
-
" </div>\n"
|
150 |
-
" <br> \n"
|
151 |
-
" "
|
152 |
-
msgstr ""
|
153 |
-
|
154 |
-
#: src/text_content.py:15
|
155 |
-
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 |
-
"منطقة معينة تقدر تعلمنا عن طريق ملأ استمارة مخصصة لهاد الأمر. هاد المعلومات "
|
167 |
-
"كذلك كتضاف للخريطة باش باقي الجمعيات يتاجهو لمناطق أخرى مازال ماوصلاتهم "
|
168 |
-
"مساعدة.\n"
|
169 |
-
" <br> تحذير : نظرا لخطورة الطرقان بسبب الحجر اللي كيطيح من الجبال، ننصح "
|
170 |
-
"المتطوعين اللي بغاو يساعدو المناطق المتضررة يتبرعو عن طريق الجمعيات "
|
171 |
-
"المختصة⚠️ \n"
|
172 |
-
" <br> \n"
|
173 |
-
" <br> \n"
|
174 |
-
" nt3awnoumorocco@gmail.com <b>المتطوعين ليبغاو يعاونوا يقدرو يتصلوا معنا "
|
175 |
-
"عبر البريد ✉️ </b>\n"
|
176 |
-
" <br>\n"
|
177 |
-
" <b> <a href=\"https://www.instagram.com/nt3awnou_morocco/"
|
178 |
-
"\">@nt3awnou_morocco</a> أو عبر الانستغرام </b> \n"
|
179 |
-
" https://forms.gle/nZNCUVog9ka2Vdqu6 <b>: ساعدونا نبلغو الناس ليمحتاجين "
|
180 |
-
"فهاد الاستمارة 📝 </b><br>\n"
|
181 |
-
" https://forms.gle/PsNSuHHjTTgwQMmVA <b>: الجمعيات لي عندهم تدخلات يقدرو "
|
182 |
-
"يبلغونا عبر هاد الاستمار ة📝</b><br>\n"
|
183 |
-
" <b> فريقنا يعمل ليلا نهارا للتحقق من البيانات. يرجى التواصل معنا إذا كنت "
|
184 |
-
"تستطيع مساعدتنا في التحقق من البيانات❗️</b>\n"
|
185 |
-
" </div>\n"
|
186 |
-
" <br> \n"
|
187 |
-
" "
|
188 |
-
msgstr ""
|
189 |
-
|
190 |
-
#: src/text_content.py:32
|
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 "
|
212 |
-
"associations spécialisées.\n"
|
213 |
-
" <br> \n"
|
214 |
-
" <br> \n"
|
215 |
-
" <b>✉️ Vous pouvez nous contacter par courrier électronique à l'adresse "
|
216 |
-
"suivante </b><a href=\"mailto:nt3awnoumorocco@gmail."
|
217 |
-
"com\">nt3awnoumorocco@gmail.com</a> ou via Instagram <a href=\"https://www."
|
218 |
-
"instagram.com/nt3awnou_morocco/\">@nt3awnou_morocco</a> <br>\n"
|
219 |
-
" <b>📝 Aidez-nous à signaler plus de personnes dans le besoin en "
|
220 |
-
"remplissant ce formulaire : </b><a href=\"https://forms.gle/"
|
221 |
-
"nZNCUVog9ka2Vdqu6\">https://forms.gle/nZNCUVog9ka2Vdqu6</a> <br>\n"
|
222 |
-
" <b>📝 Les associations peuvent signaler leurs interventions en "
|
223 |
-
"remplissant ce formulaire : </b><a href=\"https://forms.gle/"
|
224 |
-
"PsNSuHHjTTgwQMmVA\">https://forms.gle/PsNSuHHjTTgwQMmVA</a> <br> \n"
|
225 |
-
" <b>❗️Notre équipe travaille jour et nuit pour vérifier les données. "
|
226 |
-
"Veuillez nous contacter si vous pouvez nous aider à vérifier les données. </"
|
227 |
-
"b>\n"
|
228 |
-
" </div>\n"
|
229 |
-
" <br> \n"
|
230 |
-
" "
|
231 |
-
msgstr ""
|
232 |
-
|
233 |
-
#: src/text_content.py:46
|
234 |
-
msgid ""
|
235 |
-
"\n"
|
236 |
-
" <div style=\"text-align: center;\">\n"
|
237 |
-
" <h4>وَمَنْ أَحْيَاهَا فَكَأَنَّمَا أَحْيَا النَّاسَ جَمِيعاً</h4>\n"
|
238 |
-
" </div>\n"
|
239 |
-
" "
|
240 |
-
msgstr ""
|
241 |
-
|
242 |
-
#: src/text_content.py:53
|
243 |
-
msgid ""
|
244 |
-
"\n"
|
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\">nt3awnoumorocco@gmail.com</a></p>\n"
|
250 |
-
" "
|
251 |
-
msgstr ""
|
252 |
-
|
253 |
-
#: src/text_content.py:60
|
254 |
-
msgid ""
|
255 |
-
"\n"
|
256 |
-
" <style>\n"
|
257 |
-
" .block-container {\n"
|
258 |
-
" padding-top: 1rem;\n"
|
259 |
-
" padding-bottom: 0rem;\n"
|
260 |
-
" }\n"
|
261 |
-
" '''\n"
|
262 |
-
" [data-testid=\"metric-container\"] {\n"
|
263 |
-
" width: fit-content;\n"
|
264 |
-
" margin: auto;\n"
|
265 |
-
" }\n"
|
266 |
-
"\n"
|
267 |
-
" [data-testid=\"metric-container\"] > div {\n"
|
268 |
-
" width: fit-content;\n"
|
269 |
-
" margin: auto;\n"
|
270 |
-
" }\n"
|
271 |
-
"\n"
|
272 |
-
" [data-testid=\"metric-container\"] label {\n"
|
273 |
-
" width: fit-content;\n"
|
274 |
-
" margin: auto;\n"
|
275 |
-
" }\n"
|
276 |
-
" '''\n"
|
277 |
-
" </style>\n"
|
278 |
-
" <div class=\"block-container\">\n"
|
279 |
-
" <div style=\"text-align: center; margin-bottom: 0.5rem; width: fit-"
|
280 |
-
"content; margin: auto;\">\n"
|
281 |
-
" <img src=\"https://i.imgur.com/ngJZ4Gh.png\" alt=\"Nt3awnou "
|
282 |
-
"logo\" width=\"fit-content\" height=\"150\" style=\"margin-top: 1rem; margin-"
|
283 |
-
"bottom: 1rem;\">\n"
|
284 |
-
" </div>\n"
|
285 |
-
" <div style=\"text-align: center\">\n"
|
286 |
-
" <a href=\"https://www.instagram.com/nt3awnou_morocco/\" "
|
287 |
-
"style=\"margin-right: 0.5rem; text-decoration: none;\">\n"
|
288 |
-
" <img src=\"https://upload.wikimedia.org/wikipedia/commons/"
|
289 |
-
"thumb/a/a5/Instagram_icon.png/2048px-Instagram_icon.png\" alt=\"Instagram "
|
290 |
-
"logo\" width=\"30\" height=\"30\">\n"
|
291 |
-
" </a>\n"
|
292 |
-
" <a href=\"https://www.facebook.com/nt3awnou.morocco\" "
|
293 |
-
"style=\"margin-right: 0.5rem; text-decoration: none;\">\n"
|
294 |
-
" <img src=\"https://i0.wp.com/www.lestudioled.com/wp-content/"
|
295 |
-
"uploads/2016/05/facebook-logo-png-transparent-background.png\" "
|
296 |
-
"alt=\"Instagram logo\" width=\"30\" height=\"30\">\n"
|
297 |
-
" </a>\n"
|
298 |
-
" <a href=\"https://www.linkedin.com/in/nt3awnou-"
|
299 |
-
"morocco-01062a290\" style=\"margin-right: 0.5rem; text-decoration: none;\">\n"
|
300 |
-
" <img src=\"https://upload.wikimedia.org/wikipedia/commons/"
|
301 |
-
"thumb/c/ca/LinkedIn_logo_initials.png/600px-LinkedIn_logo_initials.png?"
|
302 |
-
"20140125013055\" alt=\"LinkedIn logo\" width=\"30\" height=\"30\">\n"
|
303 |
-
" </a>\n"
|
304 |
-
" <a href=\"https://linktr.ee/nt3awnou\">\n"
|
305 |
-
" <img src=\"https://seeklogo.com/images/L/linktree-"
|
306 |
-
"logo-6FC3ADB679-seeklogo.com.png\" alt=\"Linktree logo\" width=\"30\" "
|
307 |
-
"height=\"30\">\n"
|
308 |
-
" </a>\n"
|
309 |
-
" </div>\n"
|
310 |
-
" </div>\n"
|
311 |
-
"\n"
|
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 |
-
"مراجعة أو حذف طلب، أدخل رقمه هنا:**"
|
319 |
-
msgstr ""
|
320 |
-
"**Si une demande doit être réexaminée ou supprimée, veuillez indiquer son "
|
321 |
-
"numéro d’identification ici.**"
|
322 |
-
|
323 |
-
#: src/utils.py:9
|
324 |
-
msgid "black"
|
325 |
-
msgstr ""
|
326 |
-
|
327 |
-
#: src/utils.py:13
|
328 |
-
msgid "Parsing Google Sheet:"
|
329 |
-
msgstr ""
|
330 |
-
|
331 |
-
#: src/utils.py:14
|
332 |
-
msgid "edit#gid="
|
333 |
-
msgstr ""
|
334 |
-
|
335 |
-
#: src/utils.py:14
|
336 |
-
msgid "export?format=csv&gid="
|
337 |
-
msgstr ""
|
338 |
-
|
339 |
-
#: src/utils.py:15
|
340 |
-
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 |
-
|
349 |
-
#: src/utils.py:42
|
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 |
-
|
359 |
-
#: src/utils.py:48
|
360 |
-
msgid ""
|
361 |
-
"process_column should be a string or an integer, got {type(process_column)}"
|
362 |
-
msgstr ""
|
363 |
-
|
364 |
-
#: src/utils.py:59 src/utils.py:62 src/utils.py:63 src/utils.py:64
|
365 |
-
msgid "."
|
366 |
-
msgstr ""
|
367 |
-
|
368 |
-
#: src/utils.py:69 src/utils.py:70
|
369 |
-
msgid "[^\\d\\.\\-]"
|
370 |
-
msgstr ""
|
371 |
-
|
372 |
-
#: src/utils.py:74
|
373 |
-
#, python-brace-format
|
374 |
-
msgid "Error parsing latlng: {latlng} Reason: {e}"
|
375 |
-
msgstr ""
|
376 |
-
|
377 |
-
#: src/utils.py:80
|
378 |
-
msgid "star"
|
379 |
-
msgstr ""
|
380 |
-
|
381 |
-
#: src/utils.py:81 src/utils.py:82
|
382 |
-
msgid "#b3334f"
|
383 |
-
msgstr ""
|
384 |
-
|
385 |
-
#: src/utils.py:83
|
386 |
-
msgid "white"
|
387 |
-
msgstr ""
|
388 |
-
|
389 |
-
#: src/utils.py:88
|
390 |
-
msgid "Epicenter مركز الزلزال"
|
391 |
-
msgstr ""
|
392 |
-
|
393 |
-
#: src/utils.py:94
|
394 |
-
msgid ""
|
395 |
-
"Danger distances - earthquake magnitude 7 | مسافات الخطر - قوة الزلازل 7"
|
396 |
-
msgstr ""
|
397 |
-
|
398 |
-
#: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
|
399 |
-
#: src/utils.py:106
|
400 |
-
msgid "radius"
|
401 |
-
msgstr ""
|
402 |
-
|
403 |
-
#: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
|
404 |
-
#: src/utils.py:109 src/utils.py:110
|
405 |
-
msgid "fill_opacity"
|
406 |
-
msgstr ""
|
407 |
-
|
408 |
-
#: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
|
409 |
-
#: src/utils.py:108
|
410 |
-
msgid "weight"
|
411 |
-
msgstr ""
|
412 |
-
|
413 |
-
#: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
|
414 |
-
#: src/utils.py:111
|
415 |
-
msgid "fill_color"
|
416 |
-
msgstr ""
|
417 |
-
|
418 |
-
#: src/utils.py:97
|
419 |
-
msgid "yellow"
|
420 |
-
msgstr ""
|
421 |
-
|
422 |
-
#: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
|
423 |
-
msgid "tooltip"
|
424 |
-
msgstr ""
|
425 |
-
|
426 |
-
#: src/utils.py:97
|
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 |
-
|
434 |
-
#: src/utils.py:98
|
435 |
-
msgid "30 to 50 km - High risk zone | منطقة عالية المخاطر"
|
436 |
-
msgstr ""
|
437 |
-
|
438 |
-
#: src/utils.py:99
|
439 |
-
msgid "#FF0000"
|
440 |
-
msgstr ""
|
441 |
-
|
442 |
-
#: src/utils.py:99
|
443 |
-
msgid "10 to 30 km - Very high risk zone | منطقة شديدة الخطورة"
|
444 |
-
msgstr ""
|
445 |
-
|
446 |
-
#: src/utils.py:100
|
447 |
-
msgid "#8B0000"
|
448 |
-
msgstr ""
|
449 |
-
|
450 |
-
#: src/utils.py:100
|
451 |
-
msgid "0 to 10km - direct impact zone | منطقة التأثير المباشر"
|
452 |
-
msgstr ""
|
453 |
-
|
454 |
-
#: src/utils.py:117
|
455 |
-
msgid "🔵 All the Villages / جميع القرى"
|
456 |
-
msgstr ""
|
457 |
-
|
458 |
-
#: src/utils.py:120
|
459 |
-
msgid "lat"
|
460 |
-
msgstr ""
|
461 |
-
|
462 |
-
#: src/utils.py:121
|
463 |
-
msgid "lng"
|
464 |
-
msgstr ""
|
465 |
-
|
466 |
-
#: src/utils.py:123
|
467 |
-
msgid "name"
|
468 |
-
msgstr ""
|
469 |
-
|
470 |
-
#: src/utils.py:124
|
471 |
-
#, python-brace-format
|
472 |
-
msgid "https://maps.google.com/?q={lat_lng}"
|
473 |
-
msgstr ""
|
474 |
-
|
475 |
-
#: src/utils.py:125
|
476 |
-
#, python-brace-format
|
477 |
-
msgid ""
|
478 |
-
"<br><b>⛰️ Douar:</b> {dour_name}<br><a href=\"{maps_url}\" target=\"_blank\" "
|
479 |
-
"rel=\"noopener noreferrer\"><b>🧭 Google Maps</b></a>"
|
480 |
-
msgstr ""
|
481 |
-
|
482 |
-
#: src/utils.py:132
|
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 |
-
|
490 |
-
#: src/utils.py:141
|
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 |
-
|
502 |
-
#: src/utils.py:154
|
503 |
-
msgid "High Emergency 🔴"
|
504 |
-
msgstr "حالة طوارئ عالية 🔴"
|
505 |
-
|
506 |
-
#: src/utils.py:155
|
507 |
-
msgid "Medium Emergency 🟠"
|
508 |
-
msgstr "حالة طوارئ متوسطة 🟠"
|
509 |
-
|
510 |
-
#: src/utils.py:156
|
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 |
-
|
526 |
-
#: src/utils.py:179 src/utils.py:186
|
527 |
-
msgid "topright"
|
528 |
-
msgstr ""
|
529 |
-
|
530 |
-
#: src/utils.py:180
|
531 |
-
msgid "Search | البحث"
|
532 |
-
msgstr ""
|
533 |
-
|
534 |
-
#: src/utils.py:187
|
535 |
-
msgid "Expand me | تكبير الخريطة"
|
536 |
-
msgstr ""
|
537 |
-
|
538 |
-
#: src/utils.py:188
|
539 |
-
msgid "Exit me | تصغير الخريطة"
|
540 |
-
msgstr ""
|
541 |
-
|
542 |
-
#: src/utils.py:194
|
543 |
-
#, python-brace-format
|
544 |
-
msgid "https://marocmap.ikiker.com/maroc/{z}/{x}/{y}.png"
|
545 |
-
msgstr ""
|
546 |
-
|
547 |
-
#: src/utils.py:197 src/utils.py:198
|
548 |
-
msgid "Maroc Map"
|
549 |
-
msgstr ""
|
550 |
-
|
551 |
-
#: src/utils.py:214
|
552 |
-
msgid "topleft"
|
553 |
-
msgstr ""
|
554 |
-
|
555 |
-
#: src/utils.py:217
|
556 |
-
msgid "title"
|
557 |
-
msgstr ""
|
558 |
-
|
559 |
-
#: src/utils.py:217
|
560 |
-
msgid "My location | موقعي"
|
561 |
-
msgstr ""
|
562 |
-
|
563 |
-
#: src/utils.py:217
|
564 |
-
msgid "popup"
|
565 |
-
msgstr ""
|
566 |
-
|
567 |
-
#: src/map_utils.py:5
|
568 |
-
msgid ""
|
569 |
-
"\n"
|
570 |
-
" <li><span style='background:#CE3C28;opacity:0.7;'></span>Rescue</li>\n"
|
571 |
-
" <li><span style='background:#ED922E;opacity:0.7;'></span>Medical "
|
572 |
-
"Assistance</li>\n"
|
573 |
-
" <li><span style='background:#FFCA92;opacity:0.7;'></span>Shelter</li>\n"
|
574 |
-
" <li><span style='background:#37A8DA;opacity:0.7;'></span>Food & Water</"
|
575 |
-
"li>\n"
|
576 |
-
" <li><span style='background:#575757;opacity:0.7;'></span>Dangers</li>\n"
|
577 |
-
" <li><span style='background:#6EAA25;opacity:0.7;'></span>Done</li>\n"
|
578 |
-
" <li><span style='background:#023020;opacity:0.7;'></span>Partial</li>\n"
|
579 |
-
" <li><span style='background:#FF91E8;opacity:0.7;'></span>Planned</li>\n"
|
580 |
-
" "
|
581 |
-
msgstr ""
|
582 |
-
"\n"
|
583 |
-
" <li><span style='background:#CE3C28;opacity:0.7;'></span>الإنقاذ</li>\n"
|
584 |
-
" <li><span style='background:#ED922E;opacity:0.7;'></span>المساعدة "
|
585 |
-
"الطبية</li>\n"
|
586 |
-
" <li><span style='background:#FFCA92;opacity:0.7;'></span>المأوى</li>\n"
|
587 |
-
" <li><span style='background:#37A8DA;opacity:0.7;'></span>الطعام "
|
588 |
-
"والماء</li>\n"
|
589 |
-
" <li><span style='background:#575757;opacity:0.7;'></span>المخاطر</li>\n"
|
590 |
-
" <li><span style='background:#6EAA25;opacity:0.7;'></span>تم</li>\n"
|
591 |
-
" <li><span style='background:#023020;opacity:0.7;'></span>جزئي</li>\n"
|
592 |
-
" <li><span style='background:#FF91E8;opacity:0.7;'></span>مخطط</li>\n"
|
593 |
-
" "
|
594 |
-
|
595 |
-
#: src/map_utils.py:15
|
596 |
-
msgid ""
|
597 |
-
"\n"
|
598 |
-
" <li><span style='background:#CE3C28;opacity:0.7;'></span>High "
|
599 |
-
"Emergency</li>\n"
|
600 |
-
" <li><span style='background:#ED922E;opacity:0.7;'></span>Medium "
|
601 |
-
"Emergency</li>\n"
|
602 |
-
" <li><span style='background:#FFCA92;opacity:0.7;'></span>Low "
|
603 |
-
"Emergency</li>\n"
|
604 |
-
" <li><span style='background:#6EAA25;opacity:0.7;'></span>Done</li>\n"
|
605 |
-
" <li><span style='background:#023020;opacity:0.7;'></span>Partial</li>\n"
|
606 |
-
" <li><span style='background:#FF91E8;opacity:0.7;'></span>Planned</li>\n"
|
607 |
-
" "
|
608 |
-
msgstr ""
|
609 |
-
"\n"
|
610 |
-
" <li><span style='background:#CE3C28;opacity:0.7;'></span>حالة طوارئ "
|
611 |
-
"عالية</li>\n"
|
612 |
-
" <li><span style='background:#ED922E;opacity:0.7;'></span>حالة طوارئ "
|
613 |
-
"متوسطة</li>\n"
|
614 |
-
" <li><span style='background:#FFCA92;opacity:0.7;'></span>حالة طوارئ "
|
615 |
-
"منخفضة</li>\n"
|
616 |
-
" <li><span style='background:#6EAA25;opacity:0.7;'></span>تم</li>\n"
|
617 |
-
" <li><span style='background:#023020;opacity:0.7;'></span>جزئي</li>\n"
|
618 |
-
" <li><span style='background:#FF91E8;opacity:0.7;'></span>مخطط</li>\n"
|
619 |
-
" "
|
620 |
-
|
621 |
-
#: src/map_utils.py:24
|
622 |
-
msgid ""
|
623 |
-
"\n"
|
624 |
-
" {% macro html(this, kwargs) %}\n"
|
625 |
-
"\n"
|
626 |
-
" <!doctype html>\n"
|
627 |
-
" <html lang=\"en\">\n"
|
628 |
-
" <head>\n"
|
629 |
-
" <meta charset=\"utf-8\">\n"
|
630 |
-
" <meta name=\"viewport\" content=\"width=device-width, initial-"
|
631 |
-
"scale=1\">\n"
|
632 |
-
" <title>jQuery UI Draggable - Default functionality</title>\n"
|
633 |
-
" <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.12.1/themes/base/"
|
634 |
-
"jquery-ui.css\">\n"
|
635 |
-
"\n"
|
636 |
-
" <script src=\"https://code.jquery.com/jquery-1.12.4.js\"></script>\n"
|
637 |
-
" <script src=\"https://code.jquery.com/ui/1.12.1/jquery-ui.js\"></"
|
638 |
-
"script>\n"
|
639 |
-
" \n"
|
640 |
-
" <script>\n"
|
641 |
-
" $( function() {\n"
|
642 |
-
" $( \"#maplegend\" ).draggable({\n"
|
643 |
-
" start: function (event, ui) {\n"
|
644 |
-
" $(this).css({\n"
|
645 |
-
" right: \"auto\",\n"
|
646 |
-
" top: \"auto\",\n"
|
647 |
-
" bottom: \"auto\"\n"
|
648 |
-
" });\n"
|
649 |
-
" }\n"
|
650 |
-
" });\n"
|
651 |
-
" });\n"
|
652 |
-
"\n"
|
653 |
-
" </script>\n"
|
654 |
-
" </head>\n"
|
655 |
-
" <body>\n"
|
656 |
-
"\n"
|
657 |
-
" \n"
|
658 |
-
" <div id='maplegend' class='maplegend' \n"
|
659 |
-
" style='position: absolute; z-index:9999; border:2px solid grey; "
|
660 |
-
"background-color:rgba(255, 255, 255, 0.8);\n"
|
661 |
-
" border-radius:6px; padding: 10px; font-size:14px; right: 20px; bottom: "
|
662 |
-
"20px;'>\n"
|
663 |
-
" \n"
|
664 |
-
" <div class='legend-title'>Legend / مفتاح الخريطة</div>\n"
|
665 |
-
" <div class='legend-scale'>\n"
|
666 |
-
" <ul class='legend-labels'>\n"
|
667 |
-
"\n"
|
668 |
-
" "
|
669 |
-
msgstr ""
|
670 |
-
|
671 |
-
#: src/map_utils.py:65
|
672 |
-
msgid ""
|
673 |
-
"\n"
|
674 |
-
" </ul>\n"
|
675 |
-
" </div>\n"
|
676 |
-
" </div>\n"
|
677 |
-
" \n"
|
678 |
-
" </body>\n"
|
679 |
-
" </html>\n"
|
680 |
-
"\n"
|
681 |
-
" <style type='text/css'>\n"
|
682 |
-
" .maplegend .legend-title {\n"
|
683 |
-
" text-align: left;\n"
|
684 |
-
" margin-bottom: 5px;\n"
|
685 |
-
" font-weight: bold;\n"
|
686 |
-
" font-size: 90%;\n"
|
687 |
-
" color: #333;\n"
|
688 |
-
" }\n"
|
689 |
-
" .maplegend .legend-scale ul {\n"
|
690 |
-
" margin: 0;\n"
|
691 |
-
" margin-bottom: 5px;\n"
|
692 |
-
" padding: 0;\n"
|
693 |
-
" float: left;\n"
|
694 |
-
" list-style: none;\n"
|
695 |
-
" }\n"
|
696 |
-
" .maplegend .legend-scale ul li {\n"
|
697 |
-
" font-size: 80%;\n"
|
698 |
-
" list-style: none;\n"
|
699 |
-
" margin-left: 0;\n"
|
700 |
-
" line-height: 18px;\n"
|
701 |
-
" margin-bottom: 2px;\n"
|
702 |
-
" color: #111;\n"
|
703 |
-
" }\n"
|
704 |
-
" .maplegend ul.legend-labels li span {\n"
|
705 |
-
" display: block;\n"
|
706 |
-
" float: left;\n"
|
707 |
-
" height: 16px;\n"
|
708 |
-
" width: 30px;\n"
|
709 |
-
" margin-right: 5px;\n"
|
710 |
-
" margin-left: 0;\n"
|
711 |
-
" border: 1px solid #999;\n"
|
712 |
-
" }\n"
|
713 |
-
" .maplegend .legend-source {\n"
|
714 |
-
" font-size: 80%;\n"
|
715 |
-
" color: #777;\n"
|
716 |
-
" clear: both;\n"
|
717 |
-
" }\n"
|
718 |
-
" .maplegend a {\n"
|
719 |
-
" color: #777;\n"
|
720 |
-
" }\n"
|
721 |
-
"\n"
|
722 |
-
" .leaflet-control-geocoder-form input {\n"
|
723 |
-
" color: black;\n"
|
724 |
-
" }\n"
|
725 |
-
" \n"
|
726 |
-
" </style>\n"
|
727 |
-
" {% endmacro %}"
|
728 |
-
msgstr ""
|
729 |
-
|
730 |
-
#: src/map_utils.py:125
|
731 |
-
msgid "get_legend_macro"
|
732 |
-
msgstr ""
|
733 |
-
|
734 |
-
#: src/markers.py:7 src/markers.py:15 src/filters.py:6 src/filters.py:14
|
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 |
-
|
742 |
-
#: src/markers.py:8 src/markers.py:16 src/filters.py:7 src/filters.py:15
|
743 |
-
msgid "مساعدة طبية"
|
744 |
-
msgstr ""
|
745 |
-
|
746 |
-
#: src/markers.py:9 src/markers.py:17 src/filters.py:8 src/filters.py:16
|
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 |
-
|
754 |
-
#: src/markers.py:10 src/markers.py:18 src/filters.py:9 src/filters.py:17
|
755 |
-
msgid "طعام وماء"
|
756 |
-
msgstr ""
|
757 |
-
|
758 |
-
#: src/markers.py:10
|
759 |
-
msgid "blue"
|
760 |
-
msgstr ""
|
761 |
-
|
762 |
-
#: src/markers.py:11 src/markers.py:19 src/filters.py:10 src/filters.py:18
|
763 |
-
msgid "مخاطر (تسرب الغاز، تلف في الخدمات العامة...)"
|
764 |
-
msgstr ""
|
765 |
-
|
766 |
-
#: src/markers.py:11
|
767 |
-
msgid "gray"
|
768 |
-
msgstr ""
|
769 |
-
|
770 |
-
#: src/markers.py:15
|
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 |
-
|
778 |
-
#: src/markers.py:17
|
779 |
-
msgid "home"
|
780 |
-
msgstr ""
|
781 |
-
|
782 |
-
#: src/markers.py:18
|
783 |
-
msgid "cutlery"
|
784 |
-
msgstr ""
|
785 |
-
|
786 |
-
#: src/markers.py:19
|
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"
|
943 |
-
" <b>Intervention Date:</b> {intervention_date}<br>\n"
|
944 |
-
" <b>Org:</b> {org}<br>\n"
|
945 |
-
" <b>Intervention:</b> {intervention_type}<br>\n"
|
946 |
-
" <b>Invervention Status:</b> {status}<br>\n"
|
947 |
-
" <b>Details:</b> {details}<br>\n"
|
948 |
-
" <b>Location:</b> {location}<br>\n"
|
949 |
-
" <b>Remarks:</b> {remarks}<br>\n"
|
950 |
-
" <b>Contact:</b> {contact}<br>\n"
|
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"
|
971 |
-
" <b>Id:</b> {row[\"id\"]}<br>\n"
|
972 |
-
" <b>Source:</b> {source}<br>\n"
|
973 |
-
" <b>Person in place:</b> {person_in_place}<br>\n"
|
974 |
-
" <b>Douar:</b> {douar}<br>\n"
|
975 |
-
" <b>Douar Info:</b> {douar_info}<br>\n"
|
976 |
-
" <a href=\"{maps_url}\" target=\"_blank\" rel=\"noopener "
|
977 |
-
"noreferrer\"><b>Google Maps</b></a>\n"
|
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?"
|
1055 |
-
"usp=pp_url&entry.1499427789={id_in_sheet}&entry.1666684596={datetime.now()."
|
1056 |
-
"strftime('%Y-%m-%d')}' target='_blank' rel='noopener noreferrer'><b>Mark as "
|
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"
|
1120 |
-
" src=\"https://nt3awnou-embed-rescue-map.hf.space/?embed=true\" "
|
1121 |
-
"width=\"1200\" height=\"720\"\n"
|
1122 |
-
" frameborder=\"0\"\n"
|
1123 |
-
" width=\"850\"\n"
|
1124 |
-
" height=\"450\"\n"
|
1125 |
-
" title=\"Nt3awno Rescue Map\">\n"
|
1126 |
-
" </iframe>\n"
|
1127 |
-
" <script src=\"https://cdn.jsdelivr.net/npm/iframe-resizer@4.3.4/js/"
|
1128 |
-
"iframeResizer.min.js\"></script>\n"
|
1129 |
-
" <script>\n"
|
1130 |
-
" iFrameResize({}, \"#nt3awnou-map\");\n"
|
1131 |
-
" </script>\n"
|
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"
|
1212 |
-
" <h4>The official bank account dedicated to tackle the "
|
1213 |
-
"consequences of the earthquake is:</h4>\n"
|
1214 |
-
" <b>Account number:</b>\n"
|
1215 |
-
" <h2>126</h2>\n"
|
1216 |
-
" <b>RIB:</b> 001-810-0078000201106203-18\n"
|
1217 |
-
" <br>\n"
|
1218 |
-
" <b>For the money transfers coming from outside Morocco</b>\n"
|
1219 |
-
" <br>\n"
|
1220 |
-
" <b>IBAN:</b> MA64001810007800020110620318\n"
|
1221 |
-
" <br>\n"
|
1222 |
-
" "
|
1223 |
-
msgstr ""
|
1224 |
-
|
1225 |
-
#: src/components.py:164
|
1226 |
-
msgid ""
|
1227 |
-
"\n"
|
1228 |
-
" <div style=\"text-align: center;\">\n"
|
1229 |
-
" <h4>الحساب البنكي الرسمي المخصص لمواجهة عواقب الزلزال</h4>\n"
|
1230 |
-
" <b>رقم الحساب</b>\n"
|
1231 |
-
" <h2>126</h2>\n"
|
1232 |
-
" <b>RIB:</b> 001-810-0078000201106203-18\n"
|
1233 |
-
" <br>\n"
|
1234 |
-
" <b>للتحويلات القادمة من خارج المغرب</b>\n"
|
1235 |
-
" <br>\n"
|
1236 |
-
" <b>IBAN:</b> MA64001810007800020110620318\n"
|
1237 |
-
" <br>\n"
|
1238 |
-
" </div>\n"
|
1239 |
-
" "
|
1240 |
-
msgstr ""
|
1241 |
-
|
1242 |
-
#: src/components.py:181
|
1243 |
-
msgid ""
|
1244 |
-
"\n"
|
1245 |
-
" <div style=\"text-align: center;\">\n"
|
1246 |
-
" <h4>Le compte bancaire officiel dédié à la lutte contre les "
|
1247 |
-
"conséquences du séisme est le suivant:</h4>\n"
|
1248 |
-
" <b>Numéro de compte:</b>\n"
|
1249 |
-
" <h2>126</h2>\n"
|
1250 |
-
" <b>RIB:</b> 001-810-0078000201106203-18\n"
|
1251 |
-
" <br>\n"
|
1252 |
-
" <b>Pour les transferts d'argent en provenance de l'étranger</b>\n"
|
1253 |
-
" <br>\n"
|
1254 |
-
" <b>IBAN:</b> MA64001810007800020110620318\n"
|
1255 |
-
" <br>\n"
|
1256 |
-
" "
|
1257 |
-
msgstr ""
|
1258 |
-
|
1259 |
-
#: src/filters.py:6
|
1260 |
-
msgid "Rescue"
|
1261 |
-
msgstr "اغاثة"
|
1262 |
-
|
1263 |
-
#: src/filters.py:7
|
1264 |
-
msgid "Medical Assistance"
|
1265 |
-
msgstr "المساعدة الطبية"
|
1266 |
-
|
1267 |
-
#: src/filters.py:8
|
1268 |
-
msgid "Shelter"
|
1269 |
-
msgstr "مأوى"
|
1270 |
-
|
1271 |
-
#: src/filters.py:9
|
1272 |
-
msgid "Food & Water"
|
1273 |
-
msgstr "طعام وماء"
|
1274 |
-
|
1275 |
-
#: src/filters.py:10
|
1276 |
-
msgid "Danger"
|
1277 |
-
msgstr "مخاطر"
|
1278 |
-
|
1279 |
-
#: src/filters.py:25
|
1280 |
-
msgid "Display unverified requests"
|
1281 |
-
msgstr "عرض الطلبات غير المتحققة"
|
1282 |
-
|
1283 |
-
#: src/filters.py:30
|
1284 |
-
msgid "Display Interventions"
|
1285 |
-
msgstr "عرض التدخلات"
|
1286 |
-
|
1287 |
-
#: src/filters.py:34
|
1288 |
-
msgid "👉 **Choose request type**"
|
1289 |
-
msgstr "**اختر نوع الطلب**"
|
1290 |
-
|
1291 |
-
#: src/filters.py:36
|
1292 |
-
msgid "Choose request type"
|
1293 |
-
msgstr ""
|
1294 |
-
|
1295 |
-
#: src/filters.py:47
|
1296 |
-
msgid "👉 **State of villages visited by NGOs**"
|
1297 |
-
msgstr "**حالة القرى التي زارتها المنظمات غير الحكومية**"
|
1298 |
-
|
1299 |
-
#: src/filters.py:51
|
1300 |
-
msgid "🚨 Critical"
|
1301 |
-
msgstr "🚨 حرجة"
|
1302 |
-
|
1303 |
-
#: src/filters.py:52
|
1304 |
-
msgid "⚠️ Partially served"
|
1305 |
-
msgstr "⚠️ تمت خدمتها جزئيا"
|
1306 |
-
|
1307 |
-
#: src/filters.py:53
|
1308 |
-
msgid "Entièrement satisfait / Fully served"
|
1309 |
-
msgstr "✅ تمت خدمتها بالكامل"
|
1310 |
-
|
1311 |
-
#: src/filters.py:53
|
1312 |
-
msgid "✅ Fully served"
|
1313 |
-
msgstr "✅ تمت خدمتها بالكامل"
|
1314 |
-
|
1315 |
-
#: src/filters.py:58
|
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 |
-
"nt3awnoumorocco@gmail.com"
|
1414 |
-
msgstr ""
|
1415 |
-
|
1416 |
-
#: src/dataframes.py:111
|
1417 |
-
msgid ""
|
1418 |
-
"\n"
|
1419 |
-
" <div style=\"text-align: left;\">\n"
|
1420 |
-
" <a href=\"mailto:nt3awnoumorocco@gmail."
|
1421 |
-
"com\">nt3awnoumorocco@gmail.com</a> نحن نخفي معلومات الاتصال لحماية خصوصية "
|
1422 |
-
"الضحايا. إذا كنت جمعية وتريد الاتصال بالضحايا، يرجى الاتصال بنا على\n"
|
1423 |
-
" </div>\n"
|
1424 |
-
" "
|
1425 |
-
msgstr ""
|
1426 |
-
|
1427 |
-
#~ msgid "📝 **Table of verified requests**"
|
1428 |
-
#~ msgstr "📝 **جدول الطلبات المؤكدة**"
|
1429 |
-
|
1430 |
-
#~ msgid "🔍 Search for information"
|
1431 |
-
#~ msgstr "بحث عن المعلومات"
|
1432 |
-
|
1433 |
-
#~ msgid "🔍 Search for an id"
|
1434 |
-
#~ msgstr "بحث عن رقم"
|
1435 |
-
|
1436 |
-
#~ msgid "🗓️ Status"
|
1437 |
-
#~ msgstr "حالة"
|
1438 |
-
|
1439 |
-
#~ msgid "all"
|
1440 |
-
#~ msgstr "الكل"
|
1441 |
-
|
1442 |
-
#~ msgid "Done"
|
1443 |
-
#~ msgstr "تمت"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
locales/fr/LC_MESSAGES/messages.mo
DELETED
Binary file (3.21 kB)
|
|
locales/fr/LC_MESSAGES/messages.po
DELETED
@@ -1,1416 +0,0 @@
|
|
1 |
-
# SOME DESCRIPTIVE TITLE.
|
2 |
-
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
3 |
-
# This file is distributed under the same license as the PACKAGE package.
|
4 |
-
# FIRST AUTHOR <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"
|
15 |
-
"Language: fr\n"
|
16 |
-
"MIME-Version: 1.0\n"
|
17 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
18 |
-
"Content-Transfer-Encoding: 8bit\n"
|
19 |
-
"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"
|
109 |
-
" body {\n"
|
110 |
-
" text-align: right;\n"
|
111 |
-
" }\n"
|
112 |
-
" </style>\n"
|
113 |
-
" "
|
114 |
-
msgstr ""
|
115 |
-
|
116 |
-
#: src/text_content.py:2
|
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"
|
136 |
-
" <br> \n"
|
137 |
-
" <b>✉️ You can contact us via email at </b><a href=\"mailto:"
|
138 |
-
"nt3awnoumorocco@gmail.com\">nt3awnoumorocco@gmail.com</a> or via Instagram "
|
139 |
-
"<a href=\"https://www.instagram.com/nt3awnou_morocco/\">@nt3awnou_morocco</"
|
140 |
-
"a> <br>\n"
|
141 |
-
" <b>📝 Help us report more people in need by filling this form </b><a "
|
142 |
-
"href=\"https://forms.gle/nZNCUVog9ka2Vdqu6\">https://forms.gle/"
|
143 |
-
"nZNCUVog9ka2Vdqu6</a> <br>\n"
|
144 |
-
" <b>📝 NGOs can report their interventions by filling this form </b><a "
|
145 |
-
"href=\"https://forms.gle/PsNSuHHjTTgwQMmVA\">https://forms.gle/"
|
146 |
-
"PsNSuHHjTTgwQMmVA</a> <br>\n"
|
147 |
-
" <b>❗️ Our team is working day and night to verify the data. Please reach "
|
148 |
-
"out to us if you can help us verify the data. </b>\n"
|
149 |
-
" </div>\n"
|
150 |
-
" <br> \n"
|
151 |
-
" "
|
152 |
-
msgstr ""
|
153 |
-
|
154 |
-
#: src/text_content.py:15
|
155 |
-
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 |
-
"منطقة معينة تقدر تعلمنا عن طريق ملأ استمارة مخصصة لهاد الأمر. هاد المعلومات "
|
167 |
-
"كذلك كتضاف للخريطة باش باقي الجمعيات يتاجهو لمناطق أخرى مازال ماوصلاتهم "
|
168 |
-
"مساعدة.\n"
|
169 |
-
" <br> تحذير : نظرا لخطورة الطرقان بسبب الحجر اللي كيطيح من الجبال، ننصح "
|
170 |
-
"المتطوعين اللي بغاو يساعدو المناطق المتضررة يتبرعو عن طريق الجمعيات "
|
171 |
-
"المختصة⚠️ \n"
|
172 |
-
" <br> \n"
|
173 |
-
" <br> \n"
|
174 |
-
" nt3awnoumorocco@gmail.com <b>المتطوعين ليبغاو يعاونوا يقدرو يتصلوا معنا "
|
175 |
-
"عبر البريد ✉️ </b>\n"
|
176 |
-
" <br>\n"
|
177 |
-
" <b> <a href=\"https://www.instagram.com/nt3awnou_morocco/"
|
178 |
-
"\">@nt3awnou_morocco</a> أو عبر الانستغرام </b> \n"
|
179 |
-
" https://forms.gle/nZNCUVog9ka2Vdqu6 <b>: ساعدونا نبلغو الناس ليمحتاجين "
|
180 |
-
"فهاد الاستمارة 📝 </b><br>\n"
|
181 |
-
" https://forms.gle/PsNSuHHjTTgwQMmVA <b>: الجمعيات لي عندهم تدخلات يقدرو "
|
182 |
-
"يبلغونا عبر هاد الاستمار ة📝</b><br>\n"
|
183 |
-
" <b> فريقنا يعمل ليلا نهارا للتحقق من البيانات. يرجى التواصل معنا إذا كنت "
|
184 |
-
"تستطيع مساعدتنا في التحقق من البيانات❗️</b>\n"
|
185 |
-
" </div>\n"
|
186 |
-
" <br> \n"
|
187 |
-
" "
|
188 |
-
msgstr ""
|
189 |
-
|
190 |
-
#: src/text_content.py:32
|
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 "
|
212 |
-
"associations spécialisées.\n"
|
213 |
-
" <br> \n"
|
214 |
-
" <br> \n"
|
215 |
-
" <b>✉️ Vous pouvez nous contacter par courrier électronique à l'adresse "
|
216 |
-
"suivante </b><a href=\"mailto:nt3awnoumorocco@gmail."
|
217 |
-
"com\">nt3awnoumorocco@gmail.com</a> ou via Instagram <a href=\"https://www."
|
218 |
-
"instagram.com/nt3awnou_morocco/\">@nt3awnou_morocco</a> <br>\n"
|
219 |
-
" <b>📝 Aidez-nous à signaler plus de personnes dans le besoin en "
|
220 |
-
"remplissant ce formulaire : </b><a href=\"https://forms.gle/"
|
221 |
-
"nZNCUVog9ka2Vdqu6\">https://forms.gle/nZNCUVog9ka2Vdqu6</a> <br>\n"
|
222 |
-
" <b>📝 Les associations peuvent signaler leurs interventions en "
|
223 |
-
"remplissant ce formulaire : </b><a href=\"https://forms.gle/"
|
224 |
-
"PsNSuHHjTTgwQMmVA\">https://forms.gle/PsNSuHHjTTgwQMmVA</a> <br> \n"
|
225 |
-
" <b>❗️Notre équipe travaille jour et nuit pour vérifier les données. "
|
226 |
-
"Veuillez nous contacter si vous pouvez nous aider à vérifier les données. </"
|
227 |
-
"b>\n"
|
228 |
-
" </div>\n"
|
229 |
-
" <br> \n"
|
230 |
-
" "
|
231 |
-
msgstr ""
|
232 |
-
|
233 |
-
#: src/text_content.py:46
|
234 |
-
msgid ""
|
235 |
-
"\n"
|
236 |
-
" <div style=\"text-align: center;\">\n"
|
237 |
-
" <h4>وَمَنْ أَحْيَاهَا فَكَأَنَّمَا أَحْيَا النَّاسَ جَمِيعاً</h4>\n"
|
238 |
-
" </div>\n"
|
239 |
-
" "
|
240 |
-
msgstr ""
|
241 |
-
|
242 |
-
#: src/text_content.py:53
|
243 |
-
msgid ""
|
244 |
-
"\n"
|
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\">nt3awnoumorocco@gmail.com</a></p>\n"
|
250 |
-
" "
|
251 |
-
msgstr ""
|
252 |
-
|
253 |
-
#: src/text_content.py:60
|
254 |
-
msgid ""
|
255 |
-
"\n"
|
256 |
-
" <style>\n"
|
257 |
-
" .block-container {\n"
|
258 |
-
" padding-top: 1rem;\n"
|
259 |
-
" padding-bottom: 0rem;\n"
|
260 |
-
" }\n"
|
261 |
-
" '''\n"
|
262 |
-
" [data-testid=\"metric-container\"] {\n"
|
263 |
-
" width: fit-content;\n"
|
264 |
-
" margin: auto;\n"
|
265 |
-
" }\n"
|
266 |
-
"\n"
|
267 |
-
" [data-testid=\"metric-container\"] > div {\n"
|
268 |
-
" width: fit-content;\n"
|
269 |
-
" margin: auto;\n"
|
270 |
-
" }\n"
|
271 |
-
"\n"
|
272 |
-
" [data-testid=\"metric-container\"] label {\n"
|
273 |
-
" width: fit-content;\n"
|
274 |
-
" margin: auto;\n"
|
275 |
-
" }\n"
|
276 |
-
" '''\n"
|
277 |
-
" </style>\n"
|
278 |
-
" <div class=\"block-container\">\n"
|
279 |
-
" <div style=\"text-align: center; margin-bottom: 0.5rem; width: fit-"
|
280 |
-
"content; margin: auto;\">\n"
|
281 |
-
" <img src=\"https://i.imgur.com/ngJZ4Gh.png\" alt=\"Nt3awnou "
|
282 |
-
"logo\" width=\"fit-content\" height=\"150\" style=\"margin-top: 1rem; margin-"
|
283 |
-
"bottom: 1rem;\">\n"
|
284 |
-
" </div>\n"
|
285 |
-
" <div style=\"text-align: center\">\n"
|
286 |
-
" <a href=\"https://www.instagram.com/nt3awnou_morocco/\" "
|
287 |
-
"style=\"margin-right: 0.5rem; text-decoration: none;\">\n"
|
288 |
-
" <img src=\"https://upload.wikimedia.org/wikipedia/commons/"
|
289 |
-
"thumb/a/a5/Instagram_icon.png/2048px-Instagram_icon.png\" alt=\"Instagram "
|
290 |
-
"logo\" width=\"30\" height=\"30\">\n"
|
291 |
-
" </a>\n"
|
292 |
-
" <a href=\"https://www.facebook.com/nt3awnou.morocco\" "
|
293 |
-
"style=\"margin-right: 0.5rem; text-decoration: none;\">\n"
|
294 |
-
" <img src=\"https://i0.wp.com/www.lestudioled.com/wp-content/"
|
295 |
-
"uploads/2016/05/facebook-logo-png-transparent-background.png\" "
|
296 |
-
"alt=\"Instagram logo\" width=\"30\" height=\"30\">\n"
|
297 |
-
" </a>\n"
|
298 |
-
" <a href=\"https://www.linkedin.com/in/nt3awnou-"
|
299 |
-
"morocco-01062a290\" style=\"margin-right: 0.5rem; text-decoration: none;\">\n"
|
300 |
-
" <img src=\"https://upload.wikimedia.org/wikipedia/commons/"
|
301 |
-
"thumb/c/ca/LinkedIn_logo_initials.png/600px-LinkedIn_logo_initials.png?"
|
302 |
-
"20140125013055\" alt=\"LinkedIn logo\" width=\"30\" height=\"30\">\n"
|
303 |
-
" </a>\n"
|
304 |
-
" <a href=\"https://linktr.ee/nt3awnou\">\n"
|
305 |
-
" <img src=\"https://seeklogo.com/images/L/linktree-"
|
306 |
-
"logo-6FC3ADB679-seeklogo.com.png\" alt=\"Linktree logo\" width=\"30\" "
|
307 |
-
"height=\"30\">\n"
|
308 |
-
" </a>\n"
|
309 |
-
" </div>\n"
|
310 |
-
" </div>\n"
|
311 |
-
"\n"
|
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 |
-
"مراجعة أو حذف طلب، أدخل رقمه هنا:**"
|
319 |
-
msgstr ""
|
320 |
-
"**Si une demande doit être réexaminée ou supprimée, veuillez indiquer son "
|
321 |
-
"numéro d’identification ici.**"
|
322 |
-
|
323 |
-
#: src/utils.py:9
|
324 |
-
msgid "black"
|
325 |
-
msgstr ""
|
326 |
-
|
327 |
-
#: src/utils.py:13
|
328 |
-
msgid "Parsing Google Sheet:"
|
329 |
-
msgstr ""
|
330 |
-
|
331 |
-
#: src/utils.py:14
|
332 |
-
msgid "edit#gid="
|
333 |
-
msgstr ""
|
334 |
-
|
335 |
-
#: src/utils.py:14
|
336 |
-
msgid "export?format=csv&gid="
|
337 |
-
msgstr ""
|
338 |
-
|
339 |
-
#: src/utils.py:15
|
340 |
-
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 |
-
|
349 |
-
#: src/utils.py:42
|
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 |
-
|
359 |
-
#: src/utils.py:48
|
360 |
-
msgid ""
|
361 |
-
"process_column should be a string or an integer, got {type(process_column)}"
|
362 |
-
msgstr ""
|
363 |
-
|
364 |
-
#: src/utils.py:59 src/utils.py:62 src/utils.py:63 src/utils.py:64
|
365 |
-
msgid "."
|
366 |
-
msgstr ""
|
367 |
-
|
368 |
-
#: src/utils.py:69 src/utils.py:70
|
369 |
-
msgid "[^\\d\\.\\-]"
|
370 |
-
msgstr ""
|
371 |
-
|
372 |
-
#: src/utils.py:74
|
373 |
-
#, python-brace-format
|
374 |
-
msgid "Error parsing latlng: {latlng} Reason: {e}"
|
375 |
-
msgstr ""
|
376 |
-
|
377 |
-
#: src/utils.py:80
|
378 |
-
msgid "star"
|
379 |
-
msgstr ""
|
380 |
-
|
381 |
-
#: src/utils.py:81 src/utils.py:82
|
382 |
-
msgid "#b3334f"
|
383 |
-
msgstr ""
|
384 |
-
|
385 |
-
#: src/utils.py:83
|
386 |
-
msgid "white"
|
387 |
-
msgstr ""
|
388 |
-
|
389 |
-
#: src/utils.py:88
|
390 |
-
msgid "Epicenter مركز الزلزال"
|
391 |
-
msgstr ""
|
392 |
-
|
393 |
-
#: src/utils.py:94
|
394 |
-
msgid ""
|
395 |
-
"Danger distances - earthquake magnitude 7 | مسافات الخطر - قوة الزلازل 7"
|
396 |
-
msgstr ""
|
397 |
-
|
398 |
-
#: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
|
399 |
-
#: src/utils.py:106
|
400 |
-
msgid "radius"
|
401 |
-
msgstr ""
|
402 |
-
|
403 |
-
#: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
|
404 |
-
#: src/utils.py:109 src/utils.py:110
|
405 |
-
msgid "fill_opacity"
|
406 |
-
msgstr ""
|
407 |
-
|
408 |
-
#: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
|
409 |
-
#: src/utils.py:108
|
410 |
-
msgid "weight"
|
411 |
-
msgstr ""
|
412 |
-
|
413 |
-
#: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
|
414 |
-
#: src/utils.py:111
|
415 |
-
msgid "fill_color"
|
416 |
-
msgstr ""
|
417 |
-
|
418 |
-
#: src/utils.py:97
|
419 |
-
msgid "yellow"
|
420 |
-
msgstr ""
|
421 |
-
|
422 |
-
#: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
|
423 |
-
msgid "tooltip"
|
424 |
-
msgstr ""
|
425 |
-
|
426 |
-
#: src/utils.py:97
|
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 |
-
|
434 |
-
#: src/utils.py:98
|
435 |
-
msgid "30 to 50 km - High risk zone | منطقة عالية المخاطر"
|
436 |
-
msgstr ""
|
437 |
-
|
438 |
-
#: src/utils.py:99
|
439 |
-
msgid "#FF0000"
|
440 |
-
msgstr ""
|
441 |
-
|
442 |
-
#: src/utils.py:99
|
443 |
-
msgid "10 to 30 km - Very high risk zone | منطقة شديدة الخطورة"
|
444 |
-
msgstr ""
|
445 |
-
|
446 |
-
#: src/utils.py:100
|
447 |
-
msgid "#8B0000"
|
448 |
-
msgstr ""
|
449 |
-
|
450 |
-
#: src/utils.py:100
|
451 |
-
msgid "0 to 10km - direct impact zone | منطقة التأثير المباشر"
|
452 |
-
msgstr ""
|
453 |
-
|
454 |
-
#: src/utils.py:117
|
455 |
-
msgid "🔵 All the Villages / جميع القرى"
|
456 |
-
msgstr ""
|
457 |
-
|
458 |
-
#: src/utils.py:120
|
459 |
-
msgid "lat"
|
460 |
-
msgstr ""
|
461 |
-
|
462 |
-
#: src/utils.py:121
|
463 |
-
msgid "lng"
|
464 |
-
msgstr ""
|
465 |
-
|
466 |
-
#: src/utils.py:123
|
467 |
-
msgid "name"
|
468 |
-
msgstr ""
|
469 |
-
|
470 |
-
#: src/utils.py:124
|
471 |
-
#, python-brace-format
|
472 |
-
msgid "https://maps.google.com/?q={lat_lng}"
|
473 |
-
msgstr ""
|
474 |
-
|
475 |
-
#: src/utils.py:125
|
476 |
-
#, python-brace-format
|
477 |
-
msgid ""
|
478 |
-
"<br><b>⛰️ Douar:</b> {dour_name}<br><a href=\"{maps_url}\" target=\"_blank\" "
|
479 |
-
"rel=\"noopener noreferrer\"><b>🧭 Google Maps</b></a>"
|
480 |
-
msgstr ""
|
481 |
-
|
482 |
-
#: src/utils.py:132
|
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 |
-
|
490 |
-
#: src/utils.py:141
|
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 |
-
|
502 |
-
#: src/utils.py:154
|
503 |
-
msgid "High Emergency 🔴"
|
504 |
-
msgstr "Urgence élevée 🔴"
|
505 |
-
|
506 |
-
#: src/utils.py:155
|
507 |
-
msgid "Medium Emergency 🟠"
|
508 |
-
msgstr "Urgence moyenne 🟠"
|
509 |
-
|
510 |
-
#: src/utils.py:156
|
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 |
-
|
526 |
-
#: src/utils.py:179 src/utils.py:186
|
527 |
-
msgid "topright"
|
528 |
-
msgstr ""
|
529 |
-
|
530 |
-
#: src/utils.py:180
|
531 |
-
msgid "Search | البحث"
|
532 |
-
msgstr ""
|
533 |
-
|
534 |
-
#: src/utils.py:187
|
535 |
-
msgid "Expand me | تكبير الخريطة"
|
536 |
-
msgstr ""
|
537 |
-
|
538 |
-
#: src/utils.py:188
|
539 |
-
msgid "Exit me | تصغير الخريطة"
|
540 |
-
msgstr ""
|
541 |
-
|
542 |
-
#: src/utils.py:194
|
543 |
-
#, python-brace-format
|
544 |
-
msgid "https://marocmap.ikiker.com/maroc/{z}/{x}/{y}.png"
|
545 |
-
msgstr ""
|
546 |
-
|
547 |
-
#: src/utils.py:197 src/utils.py:198
|
548 |
-
msgid "Maroc Map"
|
549 |
-
msgstr ""
|
550 |
-
|
551 |
-
#: src/utils.py:214
|
552 |
-
msgid "topleft"
|
553 |
-
msgstr ""
|
554 |
-
|
555 |
-
#: src/utils.py:217
|
556 |
-
msgid "title"
|
557 |
-
msgstr ""
|
558 |
-
|
559 |
-
#: src/utils.py:217
|
560 |
-
msgid "My location | موقعي"
|
561 |
-
msgstr ""
|
562 |
-
|
563 |
-
#: src/utils.py:217
|
564 |
-
msgid "popup"
|
565 |
-
msgstr ""
|
566 |
-
|
567 |
-
#: src/map_utils.py:5
|
568 |
-
msgid ""
|
569 |
-
"\n"
|
570 |
-
" <li><span style='background:#CE3C28;opacity:0.7;'></span>Rescue</li>\n"
|
571 |
-
" <li><span style='background:#ED922E;opacity:0.7;'></span>Medical "
|
572 |
-
"Assistance</li>\n"
|
573 |
-
" <li><span style='background:#FFCA92;opacity:0.7;'></span>Shelter</li>\n"
|
574 |
-
" <li><span style='background:#37A8DA;opacity:0.7;'></span>Food & Water</"
|
575 |
-
"li>\n"
|
576 |
-
" <li><span style='background:#575757;opacity:0.7;'></span>Dangers</li>\n"
|
577 |
-
" <li><span style='background:#6EAA25;opacity:0.7;'></span>Done</li>\n"
|
578 |
-
" <li><span style='background:#023020;opacity:0.7;'></span>Partial</li>\n"
|
579 |
-
" <li><span style='background:#FF91E8;opacity:0.7;'></span>Planned</li>\n"
|
580 |
-
" "
|
581 |
-
msgstr ""
|
582 |
-
|
583 |
-
#: src/map_utils.py:15
|
584 |
-
msgid ""
|
585 |
-
"\n"
|
586 |
-
" <li><span style='background:#CE3C28;opacity:0.7;'></span>High "
|
587 |
-
"Emergency</li>\n"
|
588 |
-
" <li><span style='background:#ED922E;opacity:0.7;'></span>Medium "
|
589 |
-
"Emergency</li>\n"
|
590 |
-
" <li><span style='background:#FFCA92;opacity:0.7;'></span>Low "
|
591 |
-
"Emergency</li>\n"
|
592 |
-
" <li><span style='background:#6EAA25;opacity:0.7;'></span>Done</li>\n"
|
593 |
-
" <li><span style='background:#023020;opacity:0.7;'></span>Partial</li>\n"
|
594 |
-
" <li><span style='background:#FF91E8;opacity:0.7;'></span>Planned</li>\n"
|
595 |
-
" "
|
596 |
-
msgstr ""
|
597 |
-
"\n"
|
598 |
-
" <li><span style='background:#CE3C28;opacity:0.7;'></span>Urgence "
|
599 |
-
"élevée</li>\n"
|
600 |
-
" <li><span style='background:#ED922E;opacity:0.7;'></span>Urgence "
|
601 |
-
"moyenne</li>\n"
|
602 |
-
" <li><span style='background:#FFCA92;opacity:0.7;'></span>Urgence "
|
603 |
-
"faible</li>\n"
|
604 |
-
" <li><span style='background:#6EAA25;opacity:0.7;'></span>Fait</li>\n"
|
605 |
-
" <li><span style='background:#023020;opacity:0.7;'></span>Partiel</li>\n"
|
606 |
-
" <li><span style='background:#FF91E8;opacity:0.7;'></span>Planifié</"
|
607 |
-
"li>\n"
|
608 |
-
" "
|
609 |
-
|
610 |
-
#: src/map_utils.py:24
|
611 |
-
msgid ""
|
612 |
-
"\n"
|
613 |
-
" {% macro html(this, kwargs) %}\n"
|
614 |
-
"\n"
|
615 |
-
" <!doctype html>\n"
|
616 |
-
" <html lang=\"en\">\n"
|
617 |
-
" <head>\n"
|
618 |
-
" <meta charset=\"utf-8\">\n"
|
619 |
-
" <meta name=\"viewport\" content=\"width=device-width, initial-"
|
620 |
-
"scale=1\">\n"
|
621 |
-
" <title>jQuery UI Draggable - Default functionality</title>\n"
|
622 |
-
" <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.12.1/themes/base/"
|
623 |
-
"jquery-ui.css\">\n"
|
624 |
-
"\n"
|
625 |
-
" <script src=\"https://code.jquery.com/jquery-1.12.4.js\"></script>\n"
|
626 |
-
" <script src=\"https://code.jquery.com/ui/1.12.1/jquery-ui.js\"></"
|
627 |
-
"script>\n"
|
628 |
-
" \n"
|
629 |
-
" <script>\n"
|
630 |
-
" $( function() {\n"
|
631 |
-
" $( \"#maplegend\" ).draggable({\n"
|
632 |
-
" start: function (event, ui) {\n"
|
633 |
-
" $(this).css({\n"
|
634 |
-
" right: \"auto\",\n"
|
635 |
-
" top: \"auto\",\n"
|
636 |
-
" bottom: \"auto\"\n"
|
637 |
-
" });\n"
|
638 |
-
" }\n"
|
639 |
-
" });\n"
|
640 |
-
" });\n"
|
641 |
-
"\n"
|
642 |
-
" </script>\n"
|
643 |
-
" </head>\n"
|
644 |
-
" <body>\n"
|
645 |
-
"\n"
|
646 |
-
" \n"
|
647 |
-
" <div id='maplegend' class='maplegend' \n"
|
648 |
-
" style='position: absolute; z-index:9999; border:2px solid grey; "
|
649 |
-
"background-color:rgba(255, 255, 255, 0.8);\n"
|
650 |
-
" border-radius:6px; padding: 10px; font-size:14px; right: 20px; bottom: "
|
651 |
-
"20px;'>\n"
|
652 |
-
" \n"
|
653 |
-
" <div class='legend-title'>Legend / مفتاح الخريطة</div>\n"
|
654 |
-
" <div class='legend-scale'>\n"
|
655 |
-
" <ul class='legend-labels'>\n"
|
656 |
-
"\n"
|
657 |
-
" "
|
658 |
-
msgstr ""
|
659 |
-
|
660 |
-
#: src/map_utils.py:65
|
661 |
-
msgid ""
|
662 |
-
"\n"
|
663 |
-
" </ul>\n"
|
664 |
-
" </div>\n"
|
665 |
-
" </div>\n"
|
666 |
-
" \n"
|
667 |
-
" </body>\n"
|
668 |
-
" </html>\n"
|
669 |
-
"\n"
|
670 |
-
" <style type='text/css'>\n"
|
671 |
-
" .maplegend .legend-title {\n"
|
672 |
-
" text-align: left;\n"
|
673 |
-
" margin-bottom: 5px;\n"
|
674 |
-
" font-weight: bold;\n"
|
675 |
-
" font-size: 90%;\n"
|
676 |
-
" color: #333;\n"
|
677 |
-
" }\n"
|
678 |
-
" .maplegend .legend-scale ul {\n"
|
679 |
-
" margin: 0;\n"
|
680 |
-
" margin-bottom: 5px;\n"
|
681 |
-
" padding: 0;\n"
|
682 |
-
" float: left;\n"
|
683 |
-
" list-style: none;\n"
|
684 |
-
" }\n"
|
685 |
-
" .maplegend .legend-scale ul li {\n"
|
686 |
-
" font-size: 80%;\n"
|
687 |
-
" list-style: none;\n"
|
688 |
-
" margin-left: 0;\n"
|
689 |
-
" line-height: 18px;\n"
|
690 |
-
" margin-bottom: 2px;\n"
|
691 |
-
" color: #111;\n"
|
692 |
-
" }\n"
|
693 |
-
" .maplegend ul.legend-labels li span {\n"
|
694 |
-
" display: block;\n"
|
695 |
-
" float: left;\n"
|
696 |
-
" height: 16px;\n"
|
697 |
-
" width: 30px;\n"
|
698 |
-
" margin-right: 5px;\n"
|
699 |
-
" margin-left: 0;\n"
|
700 |
-
" border: 1px solid #999;\n"
|
701 |
-
" }\n"
|
702 |
-
" .maplegend .legend-source {\n"
|
703 |
-
" font-size: 80%;\n"
|
704 |
-
" color: #777;\n"
|
705 |
-
" clear: both;\n"
|
706 |
-
" }\n"
|
707 |
-
" .maplegend a {\n"
|
708 |
-
" color: #777;\n"
|
709 |
-
" }\n"
|
710 |
-
"\n"
|
711 |
-
" .leaflet-control-geocoder-form input {\n"
|
712 |
-
" color: black;\n"
|
713 |
-
" }\n"
|
714 |
-
" \n"
|
715 |
-
" </style>\n"
|
716 |
-
" {% endmacro %}"
|
717 |
-
msgstr ""
|
718 |
-
|
719 |
-
#: src/map_utils.py:125
|
720 |
-
msgid "get_legend_macro"
|
721 |
-
msgstr ""
|
722 |
-
|
723 |
-
#: src/markers.py:7 src/markers.py:15 src/filters.py:6 src/filters.py:14
|
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 |
-
|
731 |
-
#: src/markers.py:8 src/markers.py:16 src/filters.py:7 src/filters.py:15
|
732 |
-
msgid "مساعدة طبية"
|
733 |
-
msgstr ""
|
734 |
-
|
735 |
-
#: src/markers.py:9 src/markers.py:17 src/filters.py:8 src/filters.py:16
|
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 |
-
|
743 |
-
#: src/markers.py:10 src/markers.py:18 src/filters.py:9 src/filters.py:17
|
744 |
-
msgid "طعام وماء"
|
745 |
-
msgstr ""
|
746 |
-
|
747 |
-
#: src/markers.py:10
|
748 |
-
msgid "blue"
|
749 |
-
msgstr ""
|
750 |
-
|
751 |
-
#: src/markers.py:11 src/markers.py:19 src/filters.py:10 src/filters.py:18
|
752 |
-
msgid "مخاطر (تسرب الغاز، تلف في الخدمات العامة...)"
|
753 |
-
msgstr ""
|
754 |
-
|
755 |
-
#: src/markers.py:11
|
756 |
-
msgid "gray"
|
757 |
-
msgstr ""
|
758 |
-
|
759 |
-
#: src/markers.py:15
|
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 |
-
|
767 |
-
#: src/markers.py:17
|
768 |
-
msgid "home"
|
769 |
-
msgstr ""
|
770 |
-
|
771 |
-
#: src/markers.py:18
|
772 |
-
msgid "cutlery"
|
773 |
-
msgstr ""
|
774 |
-
|
775 |
-
#: src/markers.py:19
|
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"
|
932 |
-
" <b>Intervention Date:</b> {intervention_date}<br>\n"
|
933 |
-
" <b>Org:</b> {org}<br>\n"
|
934 |
-
" <b>Intervention:</b> {intervention_type}<br>\n"
|
935 |
-
" <b>Invervention Status:</b> {status}<br>\n"
|
936 |
-
" <b>Details:</b> {details}<br>\n"
|
937 |
-
" <b>Location:</b> {location}<br>\n"
|
938 |
-
" <b>Remarks:</b> {remarks}<br>\n"
|
939 |
-
" <b>Contact:</b> {contact}<br>\n"
|
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"
|
960 |
-
" <b>Id:</b> {row[\"id\"]}<br>\n"
|
961 |
-
" <b>Source:</b> {source}<br>\n"
|
962 |
-
" <b>Person in place:</b> {person_in_place}<br>\n"
|
963 |
-
" <b>Douar:</b> {douar}<br>\n"
|
964 |
-
" <b>Douar Info:</b> {douar_info}<br>\n"
|
965 |
-
" <a href=\"{maps_url}\" target=\"_blank\" rel=\"noopener "
|
966 |
-
"noreferrer\"><b>Google Maps</b></a>\n"
|
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?"
|
1044 |
-
"usp=pp_url&entry.1499427789={id_in_sheet}&entry.1666684596={datetime.now()."
|
1045 |
-
"strftime('%Y-%m-%d')}' target='_blank' rel='noopener noreferrer'><b>Mark as "
|
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"
|
1109 |
-
" src=\"https://nt3awnou-embed-rescue-map.hf.space/?embed=true\" "
|
1110 |
-
"width=\"1200\" height=\"720\"\n"
|
1111 |
-
" frameborder=\"0\"\n"
|
1112 |
-
" width=\"850\"\n"
|
1113 |
-
" height=\"450\"\n"
|
1114 |
-
" title=\"Nt3awno Rescue Map\">\n"
|
1115 |
-
" </iframe>\n"
|
1116 |
-
" <script src=\"https://cdn.jsdelivr.net/npm/iframe-resizer@4.3.4/js/"
|
1117 |
-
"iframeResizer.min.js\"></script>\n"
|
1118 |
-
" <script>\n"
|
1119 |
-
" iFrameResize({}, \"#nt3awnou-map\");\n"
|
1120 |
-
" </script>\n"
|
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"
|
1200 |
-
" <h4>The official bank account dedicated to tackle the "
|
1201 |
-
"consequences of the earthquake is:</h4>\n"
|
1202 |
-
" <b>Account number:</b>\n"
|
1203 |
-
" <h2>126</h2>\n"
|
1204 |
-
" <b>RIB:</b> 001-810-0078000201106203-18\n"
|
1205 |
-
" <br>\n"
|
1206 |
-
" <b>For the money transfers coming from outside Morocco</b>\n"
|
1207 |
-
" <br>\n"
|
1208 |
-
" <b>IBAN:</b> MA64001810007800020110620318\n"
|
1209 |
-
" <br>\n"
|
1210 |
-
" "
|
1211 |
-
msgstr ""
|
1212 |
-
|
1213 |
-
#: src/components.py:164
|
1214 |
-
msgid ""
|
1215 |
-
"\n"
|
1216 |
-
" <div style=\"text-align: center;\">\n"
|
1217 |
-
" <h4>الحساب البنكي الرسمي المخصص لمواجهة عواقب الزلزال</h4>\n"
|
1218 |
-
" <b>رقم الحساب</b>\n"
|
1219 |
-
" <h2>126</h2>\n"
|
1220 |
-
" <b>RIB:</b> 001-810-0078000201106203-18\n"
|
1221 |
-
" <br>\n"
|
1222 |
-
" <b>للتحويلات القادمة من خارج المغرب</b>\n"
|
1223 |
-
" <br>\n"
|
1224 |
-
" <b>IBAN:</b> MA64001810007800020110620318\n"
|
1225 |
-
" <br>\n"
|
1226 |
-
" </div>\n"
|
1227 |
-
" "
|
1228 |
-
msgstr ""
|
1229 |
-
|
1230 |
-
#: src/components.py:181
|
1231 |
-
msgid ""
|
1232 |
-
"\n"
|
1233 |
-
" <div style=\"text-align: center;\">\n"
|
1234 |
-
" <h4>Le compte bancaire officiel dédié à la lutte contre les "
|
1235 |
-
"conséquences du séisme est le suivant:</h4>\n"
|
1236 |
-
" <b>Numéro de compte:</b>\n"
|
1237 |
-
" <h2>126</h2>\n"
|
1238 |
-
" <b>RIB:</b> 001-810-0078000201106203-18\n"
|
1239 |
-
" <br>\n"
|
1240 |
-
" <b>Pour les transferts d'argent en provenance de l'étranger</b>\n"
|
1241 |
-
" <br>\n"
|
1242 |
-
" <b>IBAN:</b> MA64001810007800020110620318\n"
|
1243 |
-
" <br>\n"
|
1244 |
-
" "
|
1245 |
-
msgstr ""
|
1246 |
-
|
1247 |
-
#: src/filters.py:6
|
1248 |
-
msgid "Rescue"
|
1249 |
-
msgstr "Sauvetage"
|
1250 |
-
|
1251 |
-
#: src/filters.py:7
|
1252 |
-
msgid "Medical Assistance"
|
1253 |
-
msgstr "Assistance médicale"
|
1254 |
-
|
1255 |
-
#: src/filters.py:8
|
1256 |
-
msgid "Shelter"
|
1257 |
-
msgstr "Abri"
|
1258 |
-
|
1259 |
-
#: src/filters.py:9
|
1260 |
-
msgid "Food & Water"
|
1261 |
-
msgstr "Nourriture et eau"
|
1262 |
-
|
1263 |
-
#: src/filters.py:10
|
1264 |
-
msgid "Danger"
|
1265 |
-
msgstr "Danger"
|
1266 |
-
|
1267 |
-
#: src/filters.py:25
|
1268 |
-
msgid "Display unverified requests"
|
1269 |
-
msgstr "Montrer les demandes non vérifiées"
|
1270 |
-
|
1271 |
-
#: src/filters.py:30
|
1272 |
-
msgid "Display Interventions"
|
1273 |
-
msgstr "Montrer les interventions"
|
1274 |
-
|
1275 |
-
#: src/filters.py:34
|
1276 |
-
msgid "👉 **Choose request type**"
|
1277 |
-
msgstr "👉 **Choisir le type de demande**"
|
1278 |
-
|
1279 |
-
#: src/filters.py:36
|
1280 |
-
msgid "Choose request type"
|
1281 |
-
msgstr ""
|
1282 |
-
|
1283 |
-
#: src/filters.py:47
|
1284 |
-
msgid "👉 **State of villages visited by NGOs**"
|
1285 |
-
msgstr "👉 **État des villages visités par les ONG**"
|
1286 |
-
|
1287 |
-
#: src/filters.py:51
|
1288 |
-
msgid "🚨 Critical"
|
1289 |
-
msgstr "🚨 Critique"
|
1290 |
-
|
1291 |
-
#: src/filters.py:52
|
1292 |
-
msgid "⚠️ Partially served"
|
1293 |
-
msgstr "⚠️ Partiellement servi"
|
1294 |
-
|
1295 |
-
#: src/filters.py:53
|
1296 |
-
msgid "Entièrement satisfait / Fully served"
|
1297 |
-
msgstr "Entièrement satisfait"
|
1298 |
-
|
1299 |
-
#: src/filters.py:53
|
1300 |
-
msgid "✅ Fully served"
|
1301 |
-
msgstr "✅ Entièrement servi"
|
1302 |
-
|
1303 |
-
#: src/filters.py:58
|
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 |
-
"nt3awnoumorocco@gmail.com"
|
1402 |
-
msgstr ""
|
1403 |
-
|
1404 |
-
#: src/dataframes.py:111
|
1405 |
-
msgid ""
|
1406 |
-
"\n"
|
1407 |
-
" <div style=\"text-align: left;\">\n"
|
1408 |
-
" <a href=\"mailto:nt3awnoumorocco@gmail."
|
1409 |
-
"com\">nt3awnoumorocco@gmail.com</a> نحن نخفي معلومات الاتصال لحماية خصوصية "
|
1410 |
-
"الضحايا. إذا كنت جمعية وتريد الاتصال بالضحايا، يرجى الاتصال بنا على\n"
|
1411 |
-
" </div>\n"
|
1412 |
-
" "
|
1413 |
-
msgstr ""
|
1414 |
-
|
1415 |
-
#~ msgid "📝 **Table of verified requests**"
|
1416 |
-
#~ msgstr "📝 **Tableau des demandes vérifiées**"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
messages.pot
DELETED
@@ -1,1399 +0,0 @@
|
|
1 |
-
# SOME DESCRIPTIVE TITLE.
|
2 |
-
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
3 |
-
# This file is distributed under the same license as the PACKAGE package.
|
4 |
-
# FIRST AUTHOR <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 <LL@li.org>\n"
|
16 |
-
"Language: \n"
|
17 |
-
"MIME-Version: 1.0\n"
|
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"
|
109 |
-
" body {\n"
|
110 |
-
" text-align: right;\n"
|
111 |
-
" }\n"
|
112 |
-
" </style>\n"
|
113 |
-
" "
|
114 |
-
msgstr ""
|
115 |
-
|
116 |
-
#: src/text_content.py:2
|
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"
|
136 |
-
" <br> \n"
|
137 |
-
" <b>✉️ You can contact us via email at </b><a href=\"mailto:"
|
138 |
-
"nt3awnoumorocco@gmail.com\">nt3awnoumorocco@gmail.com</a> or via Instagram "
|
139 |
-
"<a href=\"https://www.instagram.com/nt3awnou_morocco/\">@nt3awnou_morocco</"
|
140 |
-
"a> <br>\n"
|
141 |
-
" <b>📝 Help us report more people in need by filling this form </b><a "
|
142 |
-
"href=\"https://forms.gle/nZNCUVog9ka2Vdqu6\">https://forms.gle/"
|
143 |
-
"nZNCUVog9ka2Vdqu6</a> <br>\n"
|
144 |
-
" <b>📝 NGOs can report their interventions by filling this form </b><a "
|
145 |
-
"href=\"https://forms.gle/PsNSuHHjTTgwQMmVA\">https://forms.gle/"
|
146 |
-
"PsNSuHHjTTgwQMmVA</a> <br>\n"
|
147 |
-
" <b>❗️ Our team is working day and night to verify the data. Please reach "
|
148 |
-
"out to us if you can help us verify the data. </b>\n"
|
149 |
-
" </div>\n"
|
150 |
-
" <br> \n"
|
151 |
-
" "
|
152 |
-
msgstr ""
|
153 |
-
|
154 |
-
#: src/text_content.py:15
|
155 |
-
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 |
-
"منطقة معينة تقدر تعلمنا عن طريق ملأ استمارة مخصصة لهاد الأمر. هاد المعلومات "
|
167 |
-
"كذلك كتضاف للخريطة باش باقي الجمعيات يتاجهو لمناطق أخرى مازال ماوصلاتهم "
|
168 |
-
"مساعدة.\n"
|
169 |
-
" <br> تحذير : نظرا لخطورة الطرقان بسبب الحجر اللي كيطيح من الجبال، ننصح "
|
170 |
-
"المتطوعين اللي بغاو يساعدو المناطق المتضررة يتبرعو عن طريق الجمعيات "
|
171 |
-
"المختصة⚠️ \n"
|
172 |
-
" <br> \n"
|
173 |
-
" <br> \n"
|
174 |
-
" nt3awnoumorocco@gmail.com <b>المتطوعين ليبغاو يعاونوا يقدرو يتصلوا معنا "
|
175 |
-
"عبر البريد ✉️ </b>\n"
|
176 |
-
" <br>\n"
|
177 |
-
" <b> <a href=\"https://www.instagram.com/nt3awnou_morocco/"
|
178 |
-
"\">@nt3awnou_morocco</a> أو عبر الانستغرام </b> \n"
|
179 |
-
" https://forms.gle/nZNCUVog9ka2Vdqu6 <b>: ساعدونا نبلغو الناس ليمحتاجين "
|
180 |
-
"فهاد الاستمارة 📝 </b><br>\n"
|
181 |
-
" https://forms.gle/PsNSuHHjTTgwQMmVA <b>: الجمعيات لي عندهم تدخلات يقدرو "
|
182 |
-
"يبلغونا عبر هاد الاستمار ة📝</b><br>\n"
|
183 |
-
" <b> فريقنا يعمل ليلا نهارا للتحقق من البيانات. يرجى التواصل معنا إذا كنت "
|
184 |
-
"تستطيع مساعدتنا في التحقق من البيانات❗️</b>\n"
|
185 |
-
" </div>\n"
|
186 |
-
" <br> \n"
|
187 |
-
" "
|
188 |
-
msgstr ""
|
189 |
-
|
190 |
-
#: src/text_content.py:32
|
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 "
|
212 |
-
"associations spécialisées.\n"
|
213 |
-
" <br> \n"
|
214 |
-
" <br> \n"
|
215 |
-
" <b>✉️ Vous pouvez nous contacter par courrier électronique à l'adresse "
|
216 |
-
"suivante </b><a href=\"mailto:nt3awnoumorocco@gmail."
|
217 |
-
"com\">nt3awnoumorocco@gmail.com</a> ou via Instagram <a href=\"https://www."
|
218 |
-
"instagram.com/nt3awnou_morocco/\">@nt3awnou_morocco</a> <br>\n"
|
219 |
-
" <b>📝 Aidez-nous à signaler plus de personnes dans le besoin en "
|
220 |
-
"remplissant ce formulaire : </b><a href=\"https://forms.gle/"
|
221 |
-
"nZNCUVog9ka2Vdqu6\">https://forms.gle/nZNCUVog9ka2Vdqu6</a> <br>\n"
|
222 |
-
" <b>📝 Les associations peuvent signaler leurs interventions en "
|
223 |
-
"remplissant ce formulaire : </b><a href=\"https://forms.gle/"
|
224 |
-
"PsNSuHHjTTgwQMmVA\">https://forms.gle/PsNSuHHjTTgwQMmVA</a> <br> \n"
|
225 |
-
" <b>❗️Notre équipe travaille jour et nuit pour vérifier les données. "
|
226 |
-
"Veuillez nous contacter si vous pouvez nous aider à vérifier les données. </"
|
227 |
-
"b>\n"
|
228 |
-
" </div>\n"
|
229 |
-
" <br> \n"
|
230 |
-
" "
|
231 |
-
msgstr ""
|
232 |
-
|
233 |
-
#: src/text_content.py:46
|
234 |
-
msgid ""
|
235 |
-
"\n"
|
236 |
-
" <div style=\"text-align: center;\">\n"
|
237 |
-
" <h4>وَمَنْ أَحْيَاهَا فَكَأَنَّمَا أَحْيَا النَّاسَ جَمِيعاً</h4>\n"
|
238 |
-
" </div>\n"
|
239 |
-
" "
|
240 |
-
msgstr ""
|
241 |
-
|
242 |
-
#: src/text_content.py:53
|
243 |
-
msgid ""
|
244 |
-
"\n"
|
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\">nt3awnoumorocco@gmail.com</a></p>\n"
|
250 |
-
" "
|
251 |
-
msgstr ""
|
252 |
-
|
253 |
-
#: src/text_content.py:60
|
254 |
-
msgid ""
|
255 |
-
"\n"
|
256 |
-
" <style>\n"
|
257 |
-
" .block-container {\n"
|
258 |
-
" padding-top: 1rem;\n"
|
259 |
-
" padding-bottom: 0rem;\n"
|
260 |
-
" }\n"
|
261 |
-
" '''\n"
|
262 |
-
" [data-testid=\"metric-container\"] {\n"
|
263 |
-
" width: fit-content;\n"
|
264 |
-
" margin: auto;\n"
|
265 |
-
" }\n"
|
266 |
-
"\n"
|
267 |
-
" [data-testid=\"metric-container\"] > div {\n"
|
268 |
-
" width: fit-content;\n"
|
269 |
-
" margin: auto;\n"
|
270 |
-
" }\n"
|
271 |
-
"\n"
|
272 |
-
" [data-testid=\"metric-container\"] label {\n"
|
273 |
-
" width: fit-content;\n"
|
274 |
-
" margin: auto;\n"
|
275 |
-
" }\n"
|
276 |
-
" '''\n"
|
277 |
-
" </style>\n"
|
278 |
-
" <div class=\"block-container\">\n"
|
279 |
-
" <div style=\"text-align: center; margin-bottom: 0.5rem; width: fit-"
|
280 |
-
"content; margin: auto;\">\n"
|
281 |
-
" <img src=\"https://i.imgur.com/ngJZ4Gh.png\" alt=\"Nt3awnou "
|
282 |
-
"logo\" width=\"fit-content\" height=\"150\" style=\"margin-top: 1rem; margin-"
|
283 |
-
"bottom: 1rem;\">\n"
|
284 |
-
" </div>\n"
|
285 |
-
" <div style=\"text-align: center\">\n"
|
286 |
-
" <a href=\"https://www.instagram.com/nt3awnou_morocco/\" "
|
287 |
-
"style=\"margin-right: 0.5rem; text-decoration: none;\">\n"
|
288 |
-
" <img src=\"https://upload.wikimedia.org/wikipedia/commons/"
|
289 |
-
"thumb/a/a5/Instagram_icon.png/2048px-Instagram_icon.png\" alt=\"Instagram "
|
290 |
-
"logo\" width=\"30\" height=\"30\">\n"
|
291 |
-
" </a>\n"
|
292 |
-
" <a href=\"https://www.facebook.com/nt3awnou.morocco\" "
|
293 |
-
"style=\"margin-right: 0.5rem; text-decoration: none;\">\n"
|
294 |
-
" <img src=\"https://i0.wp.com/www.lestudioled.com/wp-content/"
|
295 |
-
"uploads/2016/05/facebook-logo-png-transparent-background.png\" "
|
296 |
-
"alt=\"Instagram logo\" width=\"30\" height=\"30\">\n"
|
297 |
-
" </a>\n"
|
298 |
-
" <a href=\"https://www.linkedin.com/in/nt3awnou-"
|
299 |
-
"morocco-01062a290\" style=\"margin-right: 0.5rem; text-decoration: none;\">\n"
|
300 |
-
" <img src=\"https://upload.wikimedia.org/wikipedia/commons/"
|
301 |
-
"thumb/c/ca/LinkedIn_logo_initials.png/600px-LinkedIn_logo_initials.png?"
|
302 |
-
"20140125013055\" alt=\"LinkedIn logo\" width=\"30\" height=\"30\">\n"
|
303 |
-
" </a>\n"
|
304 |
-
" <a href=\"https://linktr.ee/nt3awnou\">\n"
|
305 |
-
" <img src=\"https://seeklogo.com/images/L/linktree-"
|
306 |
-
"logo-6FC3ADB679-seeklogo.com.png\" alt=\"Linktree logo\" width=\"30\" "
|
307 |
-
"height=\"30\">\n"
|
308 |
-
" </a>\n"
|
309 |
-
" </div>\n"
|
310 |
-
" </div>\n"
|
311 |
-
"\n"
|
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 |
-
"مراجعة أو حذف طلب، أدخل رقمه هنا:**"
|
319 |
-
msgstr ""
|
320 |
-
|
321 |
-
#: src/utils.py:9
|
322 |
-
msgid "black"
|
323 |
-
msgstr ""
|
324 |
-
|
325 |
-
#: src/utils.py:13
|
326 |
-
msgid "Parsing Google Sheet:"
|
327 |
-
msgstr ""
|
328 |
-
|
329 |
-
#: src/utils.py:14
|
330 |
-
msgid "edit#gid="
|
331 |
-
msgstr ""
|
332 |
-
|
333 |
-
#: src/utils.py:14
|
334 |
-
msgid "export?format=csv&gid="
|
335 |
-
msgstr ""
|
336 |
-
|
337 |
-
#: src/utils.py:15
|
338 |
-
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 |
-
|
347 |
-
#: src/utils.py:42
|
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 |
-
|
357 |
-
#: src/utils.py:48
|
358 |
-
msgid ""
|
359 |
-
"process_column should be a string or an integer, got {type(process_column)}"
|
360 |
-
msgstr ""
|
361 |
-
|
362 |
-
#: src/utils.py:59 src/utils.py:62 src/utils.py:63 src/utils.py:64
|
363 |
-
msgid "."
|
364 |
-
msgstr ""
|
365 |
-
|
366 |
-
#: src/utils.py:69 src/utils.py:70
|
367 |
-
msgid "[^\\d\\.\\-]"
|
368 |
-
msgstr ""
|
369 |
-
|
370 |
-
#: src/utils.py:74
|
371 |
-
#, python-brace-format
|
372 |
-
msgid "Error parsing latlng: {latlng} Reason: {e}"
|
373 |
-
msgstr ""
|
374 |
-
|
375 |
-
#: src/utils.py:80
|
376 |
-
msgid "star"
|
377 |
-
msgstr ""
|
378 |
-
|
379 |
-
#: src/utils.py:81 src/utils.py:82
|
380 |
-
msgid "#b3334f"
|
381 |
-
msgstr ""
|
382 |
-
|
383 |
-
#: src/utils.py:83
|
384 |
-
msgid "white"
|
385 |
-
msgstr ""
|
386 |
-
|
387 |
-
#: src/utils.py:88
|
388 |
-
msgid "Epicenter مركز الزلزال"
|
389 |
-
msgstr ""
|
390 |
-
|
391 |
-
#: src/utils.py:94
|
392 |
-
msgid ""
|
393 |
-
"Danger distances - earthquake magnitude 7 | مسافات الخطر - قوة الزلازل 7"
|
394 |
-
msgstr ""
|
395 |
-
|
396 |
-
#: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
|
397 |
-
#: src/utils.py:106
|
398 |
-
msgid "radius"
|
399 |
-
msgstr ""
|
400 |
-
|
401 |
-
#: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
|
402 |
-
#: src/utils.py:109 src/utils.py:110
|
403 |
-
msgid "fill_opacity"
|
404 |
-
msgstr ""
|
405 |
-
|
406 |
-
#: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
|
407 |
-
#: src/utils.py:108
|
408 |
-
msgid "weight"
|
409 |
-
msgstr ""
|
410 |
-
|
411 |
-
#: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
|
412 |
-
#: src/utils.py:111
|
413 |
-
msgid "fill_color"
|
414 |
-
msgstr ""
|
415 |
-
|
416 |
-
#: src/utils.py:97
|
417 |
-
msgid "yellow"
|
418 |
-
msgstr ""
|
419 |
-
|
420 |
-
#: src/utils.py:97 src/utils.py:98 src/utils.py:99 src/utils.py:100
|
421 |
-
msgid "tooltip"
|
422 |
-
msgstr ""
|
423 |
-
|
424 |
-
#: src/utils.py:97
|
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 |
-
|
432 |
-
#: src/utils.py:98
|
433 |
-
msgid "30 to 50 km - High risk zone | منطقة عالية المخاطر"
|
434 |
-
msgstr ""
|
435 |
-
|
436 |
-
#: src/utils.py:99
|
437 |
-
msgid "#FF0000"
|
438 |
-
msgstr ""
|
439 |
-
|
440 |
-
#: src/utils.py:99
|
441 |
-
msgid "10 to 30 km - Very high risk zone | منطقة شديدة الخطورة"
|
442 |
-
msgstr ""
|
443 |
-
|
444 |
-
#: src/utils.py:100
|
445 |
-
msgid "#8B0000"
|
446 |
-
msgstr ""
|
447 |
-
|
448 |
-
#: src/utils.py:100
|
449 |
-
msgid "0 to 10km - direct impact zone | منطقة التأثير المباشر"
|
450 |
-
msgstr ""
|
451 |
-
|
452 |
-
#: src/utils.py:117
|
453 |
-
msgid "🔵 All the Villages / جميع القرى"
|
454 |
-
msgstr ""
|
455 |
-
|
456 |
-
#: src/utils.py:120
|
457 |
-
msgid "lat"
|
458 |
-
msgstr ""
|
459 |
-
|
460 |
-
#: src/utils.py:121
|
461 |
-
msgid "lng"
|
462 |
-
msgstr ""
|
463 |
-
|
464 |
-
#: src/utils.py:123
|
465 |
-
msgid "name"
|
466 |
-
msgstr ""
|
467 |
-
|
468 |
-
#: src/utils.py:124
|
469 |
-
#, python-brace-format
|
470 |
-
msgid "https://maps.google.com/?q={lat_lng}"
|
471 |
-
msgstr ""
|
472 |
-
|
473 |
-
#: src/utils.py:125
|
474 |
-
#, python-brace-format
|
475 |
-
msgid ""
|
476 |
-
"<br><b>⛰️ Douar:</b> {dour_name}<br><a href=\"{maps_url}\" target=\"_blank\" "
|
477 |
-
"rel=\"noopener noreferrer\"><b>🧭 Google Maps</b></a>"
|
478 |
-
msgstr ""
|
479 |
-
|
480 |
-
#: src/utils.py:132
|
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 |
-
|
488 |
-
#: src/utils.py:141
|
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 |
-
|
500 |
-
#: src/utils.py:154
|
501 |
-
msgid "High Emergency 🔴"
|
502 |
-
msgstr ""
|
503 |
-
|
504 |
-
#: src/utils.py:155
|
505 |
-
msgid "Medium Emergency 🟠"
|
506 |
-
msgstr ""
|
507 |
-
|
508 |
-
#: src/utils.py:156
|
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 |
-
|
524 |
-
#: src/utils.py:179 src/utils.py:186
|
525 |
-
msgid "topright"
|
526 |
-
msgstr ""
|
527 |
-
|
528 |
-
#: src/utils.py:180
|
529 |
-
msgid "Search | البحث"
|
530 |
-
msgstr ""
|
531 |
-
|
532 |
-
#: src/utils.py:187
|
533 |
-
msgid "Expand me | تكبير الخريطة"
|
534 |
-
msgstr ""
|
535 |
-
|
536 |
-
#: src/utils.py:188
|
537 |
-
msgid "Exit me | تصغير الخريطة"
|
538 |
-
msgstr ""
|
539 |
-
|
540 |
-
#: src/utils.py:194
|
541 |
-
#, python-brace-format
|
542 |
-
msgid "https://marocmap.ikiker.com/maroc/{z}/{x}/{y}.png"
|
543 |
-
msgstr ""
|
544 |
-
|
545 |
-
#: src/utils.py:197 src/utils.py:198
|
546 |
-
msgid "Maroc Map"
|
547 |
-
msgstr ""
|
548 |
-
|
549 |
-
#: src/utils.py:214
|
550 |
-
msgid "topleft"
|
551 |
-
msgstr ""
|
552 |
-
|
553 |
-
#: src/utils.py:217
|
554 |
-
msgid "title"
|
555 |
-
msgstr ""
|
556 |
-
|
557 |
-
#: src/utils.py:217
|
558 |
-
msgid "My location | موقعي"
|
559 |
-
msgstr ""
|
560 |
-
|
561 |
-
#: src/utils.py:217
|
562 |
-
msgid "popup"
|
563 |
-
msgstr ""
|
564 |
-
|
565 |
-
#: src/map_utils.py:5
|
566 |
-
msgid ""
|
567 |
-
"\n"
|
568 |
-
" <li><span style='background:#CE3C28;opacity:0.7;'></span>Rescue</li>\n"
|
569 |
-
" <li><span style='background:#ED922E;opacity:0.7;'></span>Medical "
|
570 |
-
"Assistance</li>\n"
|
571 |
-
" <li><span style='background:#FFCA92;opacity:0.7;'></span>Shelter</li>\n"
|
572 |
-
" <li><span style='background:#37A8DA;opacity:0.7;'></span>Food & Water</"
|
573 |
-
"li>\n"
|
574 |
-
" <li><span style='background:#575757;opacity:0.7;'></span>Dangers</li>\n"
|
575 |
-
" <li><span style='background:#6EAA25;opacity:0.7;'></span>Done</li>\n"
|
576 |
-
" <li><span style='background:#023020;opacity:0.7;'></span>Partial</li>\n"
|
577 |
-
" <li><span style='background:#FF91E8;opacity:0.7;'></span>Planned</li>\n"
|
578 |
-
" "
|
579 |
-
msgstr ""
|
580 |
-
|
581 |
-
#: src/map_utils.py:15
|
582 |
-
msgid ""
|
583 |
-
"\n"
|
584 |
-
" <li><span style='background:#CE3C28;opacity:0.7;'></span>High "
|
585 |
-
"Emergency</li>\n"
|
586 |
-
" <li><span style='background:#ED922E;opacity:0.7;'></span>Medium "
|
587 |
-
"Emergency</li>\n"
|
588 |
-
" <li><span style='background:#FFCA92;opacity:0.7;'></span>Low "
|
589 |
-
"Emergency</li>\n"
|
590 |
-
" <li><span style='background:#6EAA25;opacity:0.7;'></span>Done</li>\n"
|
591 |
-
" <li><span style='background:#023020;opacity:0.7;'></span>Partial</li>\n"
|
592 |
-
" <li><span style='background:#FF91E8;opacity:0.7;'></span>Planned</li>\n"
|
593 |
-
" "
|
594 |
-
msgstr ""
|
595 |
-
|
596 |
-
#: src/map_utils.py:24
|
597 |
-
msgid ""
|
598 |
-
"\n"
|
599 |
-
" {% macro html(this, kwargs) %}\n"
|
600 |
-
"\n"
|
601 |
-
" <!doctype html>\n"
|
602 |
-
" <html lang=\"en\">\n"
|
603 |
-
" <head>\n"
|
604 |
-
" <meta charset=\"utf-8\">\n"
|
605 |
-
" <meta name=\"viewport\" content=\"width=device-width, initial-"
|
606 |
-
"scale=1\">\n"
|
607 |
-
" <title>jQuery UI Draggable - Default functionality</title>\n"
|
608 |
-
" <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.12.1/themes/base/"
|
609 |
-
"jquery-ui.css\">\n"
|
610 |
-
"\n"
|
611 |
-
" <script src=\"https://code.jquery.com/jquery-1.12.4.js\"></script>\n"
|
612 |
-
" <script src=\"https://code.jquery.com/ui/1.12.1/jquery-ui.js\"></"
|
613 |
-
"script>\n"
|
614 |
-
" \n"
|
615 |
-
" <script>\n"
|
616 |
-
" $( function() {\n"
|
617 |
-
" $( \"#maplegend\" ).draggable({\n"
|
618 |
-
" start: function (event, ui) {\n"
|
619 |
-
" $(this).css({\n"
|
620 |
-
" right: \"auto\",\n"
|
621 |
-
" top: \"auto\",\n"
|
622 |
-
" bottom: \"auto\"\n"
|
623 |
-
" });\n"
|
624 |
-
" }\n"
|
625 |
-
" });\n"
|
626 |
-
" });\n"
|
627 |
-
"\n"
|
628 |
-
" </script>\n"
|
629 |
-
" </head>\n"
|
630 |
-
" <body>\n"
|
631 |
-
"\n"
|
632 |
-
" \n"
|
633 |
-
" <div id='maplegend' class='maplegend' \n"
|
634 |
-
" style='position: absolute; z-index:9999; border:2px solid grey; "
|
635 |
-
"background-color:rgba(255, 255, 255, 0.8);\n"
|
636 |
-
" border-radius:6px; padding: 10px; font-size:14px; right: 20px; bottom: "
|
637 |
-
"20px;'>\n"
|
638 |
-
" \n"
|
639 |
-
" <div class='legend-title'>Legend / مفتاح الخريطة</div>\n"
|
640 |
-
" <div class='legend-scale'>\n"
|
641 |
-
" <ul class='legend-labels'>\n"
|
642 |
-
"\n"
|
643 |
-
" "
|
644 |
-
msgstr ""
|
645 |
-
|
646 |
-
#: src/map_utils.py:65
|
647 |
-
msgid ""
|
648 |
-
"\n"
|
649 |
-
" </ul>\n"
|
650 |
-
" </div>\n"
|
651 |
-
" </div>\n"
|
652 |
-
" \n"
|
653 |
-
" </body>\n"
|
654 |
-
" </html>\n"
|
655 |
-
"\n"
|
656 |
-
" <style type='text/css'>\n"
|
657 |
-
" .maplegend .legend-title {\n"
|
658 |
-
" text-align: left;\n"
|
659 |
-
" margin-bottom: 5px;\n"
|
660 |
-
" font-weight: bold;\n"
|
661 |
-
" font-size: 90%;\n"
|
662 |
-
" color: #333;\n"
|
663 |
-
" }\n"
|
664 |
-
" .maplegend .legend-scale ul {\n"
|
665 |
-
" margin: 0;\n"
|
666 |
-
" margin-bottom: 5px;\n"
|
667 |
-
" padding: 0;\n"
|
668 |
-
" float: left;\n"
|
669 |
-
" list-style: none;\n"
|
670 |
-
" }\n"
|
671 |
-
" .maplegend .legend-scale ul li {\n"
|
672 |
-
" font-size: 80%;\n"
|
673 |
-
" list-style: none;\n"
|
674 |
-
" margin-left: 0;\n"
|
675 |
-
" line-height: 18px;\n"
|
676 |
-
" margin-bottom: 2px;\n"
|
677 |
-
" color: #111;\n"
|
678 |
-
" }\n"
|
679 |
-
" .maplegend ul.legend-labels li span {\n"
|
680 |
-
" display: block;\n"
|
681 |
-
" float: left;\n"
|
682 |
-
" height: 16px;\n"
|
683 |
-
" width: 30px;\n"
|
684 |
-
" margin-right: 5px;\n"
|
685 |
-
" margin-left: 0;\n"
|
686 |
-
" border: 1px solid #999;\n"
|
687 |
-
" }\n"
|
688 |
-
" .maplegend .legend-source {\n"
|
689 |
-
" font-size: 80%;\n"
|
690 |
-
" color: #777;\n"
|
691 |
-
" clear: both;\n"
|
692 |
-
" }\n"
|
693 |
-
" .maplegend a {\n"
|
694 |
-
" color: #777;\n"
|
695 |
-
" }\n"
|
696 |
-
"\n"
|
697 |
-
" .leaflet-control-geocoder-form input {\n"
|
698 |
-
" color: black;\n"
|
699 |
-
" }\n"
|
700 |
-
" \n"
|
701 |
-
" </style>\n"
|
702 |
-
" {% endmacro %}"
|
703 |
-
msgstr ""
|
704 |
-
|
705 |
-
#: src/map_utils.py:125
|
706 |
-
msgid "get_legend_macro"
|
707 |
-
msgstr ""
|
708 |
-
|
709 |
-
#: src/markers.py:7 src/markers.py:15 src/filters.py:6 src/filters.py:14
|
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 |
-
|
717 |
-
#: src/markers.py:8 src/markers.py:16 src/filters.py:7 src/filters.py:15
|
718 |
-
msgid "مساعدة طبية"
|
719 |
-
msgstr ""
|
720 |
-
|
721 |
-
#: src/markers.py:9 src/markers.py:17 src/filters.py:8 src/filters.py:16
|
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 |
-
|
729 |
-
#: src/markers.py:10 src/markers.py:18 src/filters.py:9 src/filters.py:17
|
730 |
-
msgid "طعام وماء"
|
731 |
-
msgstr ""
|
732 |
-
|
733 |
-
#: src/markers.py:10
|
734 |
-
msgid "blue"
|
735 |
-
msgstr ""
|
736 |
-
|
737 |
-
#: src/markers.py:11 src/markers.py:19 src/filters.py:10 src/filters.py:18
|
738 |
-
msgid "مخاطر (تسرب الغاز، تلف في الخدمات العامة...)"
|
739 |
-
msgstr ""
|
740 |
-
|
741 |
-
#: src/markers.py:11
|
742 |
-
msgid "gray"
|
743 |
-
msgstr ""
|
744 |
-
|
745 |
-
#: src/markers.py:15
|
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 |
-
|
753 |
-
#: src/markers.py:17
|
754 |
-
msgid "home"
|
755 |
-
msgstr ""
|
756 |
-
|
757 |
-
#: src/markers.py:18
|
758 |
-
msgid "cutlery"
|
759 |
-
msgstr ""
|
760 |
-
|
761 |
-
#: src/markers.py:19
|
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"
|
918 |
-
" <b>Intervention Date:</b> {intervention_date}<br>\n"
|
919 |
-
" <b>Org:</b> {org}<br>\n"
|
920 |
-
" <b>Intervention:</b> {intervention_type}<br>\n"
|
921 |
-
" <b>Invervention Status:</b> {status}<br>\n"
|
922 |
-
" <b>Details:</b> {details}<br>\n"
|
923 |
-
" <b>Location:</b> {location}<br>\n"
|
924 |
-
" <b>Remarks:</b> {remarks}<br>\n"
|
925 |
-
" <b>Contact:</b> {contact}<br>\n"
|
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"
|
946 |
-
" <b>Id:</b> {row[\"id\"]}<br>\n"
|
947 |
-
" <b>Source:</b> {source}<br>\n"
|
948 |
-
" <b>Person in place:</b> {person_in_place}<br>\n"
|
949 |
-
" <b>Douar:</b> {douar}<br>\n"
|
950 |
-
" <b>Douar Info:</b> {douar_info}<br>\n"
|
951 |
-
" <a href=\"{maps_url}\" target=\"_blank\" rel=\"noopener "
|
952 |
-
"noreferrer\"><b>Google Maps</b></a>\n"
|
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?"
|
1030 |
-
"usp=pp_url&entry.1499427789={id_in_sheet}&entry.1666684596={datetime.now()."
|
1031 |
-
"strftime('%Y-%m-%d')}' target='_blank' rel='noopener noreferrer'><b>Mark as "
|
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"
|
1095 |
-
" src=\"https://nt3awnou-embed-rescue-map.hf.space/?embed=true\" "
|
1096 |
-
"width=\"1200\" height=\"720\"\n"
|
1097 |
-
" frameborder=\"0\"\n"
|
1098 |
-
" width=\"850\"\n"
|
1099 |
-
" height=\"450\"\n"
|
1100 |
-
" title=\"Nt3awno Rescue Map\">\n"
|
1101 |
-
" </iframe>\n"
|
1102 |
-
" <script src=\"https://cdn.jsdelivr.net/npm/iframe-resizer@4.3.4/js/"
|
1103 |
-
"iframeResizer.min.js\"></script>\n"
|
1104 |
-
" <script>\n"
|
1105 |
-
" iFrameResize({}, \"#nt3awnou-map\");\n"
|
1106 |
-
" </script>\n"
|
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"
|
1186 |
-
" <h4>The official bank account dedicated to tackle the "
|
1187 |
-
"consequences of the earthquake is:</h4>\n"
|
1188 |
-
" <b>Account number:</b>\n"
|
1189 |
-
" <h2>126</h2>\n"
|
1190 |
-
" <b>RIB:</b> 001-810-0078000201106203-18\n"
|
1191 |
-
" <br>\n"
|
1192 |
-
" <b>For the money transfers coming from outside Morocco</b>\n"
|
1193 |
-
" <br>\n"
|
1194 |
-
" <b>IBAN:</b> MA64001810007800020110620318\n"
|
1195 |
-
" <br>\n"
|
1196 |
-
" "
|
1197 |
-
msgstr ""
|
1198 |
-
|
1199 |
-
#: src/components.py:164
|
1200 |
-
msgid ""
|
1201 |
-
"\n"
|
1202 |
-
" <div style=\"text-align: center;\">\n"
|
1203 |
-
" <h4>الحساب البنكي الرسمي المخصص لمواجهة عواقب الزلزال</h4>\n"
|
1204 |
-
" <b>رقم الحساب</b>\n"
|
1205 |
-
" <h2>126</h2>\n"
|
1206 |
-
" <b>RIB:</b> 001-810-0078000201106203-18\n"
|
1207 |
-
" <br>\n"
|
1208 |
-
" <b>للتحويلات القادمة من خارج المغرب</b>\n"
|
1209 |
-
" <br>\n"
|
1210 |
-
" <b>IBAN:</b> MA64001810007800020110620318\n"
|
1211 |
-
" <br>\n"
|
1212 |
-
" </div>\n"
|
1213 |
-
" "
|
1214 |
-
msgstr ""
|
1215 |
-
|
1216 |
-
#: src/components.py:181
|
1217 |
-
msgid ""
|
1218 |
-
"\n"
|
1219 |
-
" <div style=\"text-align: center;\">\n"
|
1220 |
-
" <h4>Le compte bancaire officiel dédié à la lutte contre les "
|
1221 |
-
"conséquences du séisme est le suivant:</h4>\n"
|
1222 |
-
" <b>Numéro de compte:</b>\n"
|
1223 |
-
" <h2>126</h2>\n"
|
1224 |
-
" <b>RIB:</b> 001-810-0078000201106203-18\n"
|
1225 |
-
" <br>\n"
|
1226 |
-
" <b>Pour les transferts d'argent en provenance de l'étranger</b>\n"
|
1227 |
-
" <br>\n"
|
1228 |
-
" <b>IBAN:</b> MA64001810007800020110620318\n"
|
1229 |
-
" <br>\n"
|
1230 |
-
" "
|
1231 |
-
msgstr ""
|
1232 |
-
|
1233 |
-
#: src/filters.py:6
|
1234 |
-
msgid "Rescue"
|
1235 |
-
msgstr ""
|
1236 |
-
|
1237 |
-
#: src/filters.py:7
|
1238 |
-
msgid "Medical Assistance"
|
1239 |
-
msgstr ""
|
1240 |
-
|
1241 |
-
#: src/filters.py:8
|
1242 |
-
msgid "Shelter"
|
1243 |
-
msgstr ""
|
1244 |
-
|
1245 |
-
#: src/filters.py:9
|
1246 |
-
msgid "Food & Water"
|
1247 |
-
msgstr ""
|
1248 |
-
|
1249 |
-
#: src/filters.py:10
|
1250 |
-
msgid "Danger"
|
1251 |
-
msgstr ""
|
1252 |
-
|
1253 |
-
#: src/filters.py:25
|
1254 |
-
msgid "Display unverified requests"
|
1255 |
-
msgstr ""
|
1256 |
-
|
1257 |
-
#: src/filters.py:30
|
1258 |
-
msgid "Display Interventions"
|
1259 |
-
msgstr ""
|
1260 |
-
|
1261 |
-
#: src/filters.py:34
|
1262 |
-
msgid "👉 **Choose request type**"
|
1263 |
-
msgstr ""
|
1264 |
-
|
1265 |
-
#: src/filters.py:36
|
1266 |
-
msgid "Choose request type"
|
1267 |
-
msgstr ""
|
1268 |
-
|
1269 |
-
#: src/filters.py:47
|
1270 |
-
msgid "👉 **State of villages visited by NGOs**"
|
1271 |
-
msgstr ""
|
1272 |
-
|
1273 |
-
#: src/filters.py:51
|
1274 |
-
msgid "🚨 Critical"
|
1275 |
-
msgstr ""
|
1276 |
-
|
1277 |
-
#: src/filters.py:52
|
1278 |
-
msgid "⚠️ Partially served"
|
1279 |
-
msgstr ""
|
1280 |
-
|
1281 |
-
#: src/filters.py:53
|
1282 |
-
msgid "Entièrement satisfait / Fully served"
|
1283 |
-
msgstr ""
|
1284 |
-
|
1285 |
-
#: src/filters.py:53
|
1286 |
-
msgid "✅ Fully served"
|
1287 |
-
msgstr ""
|
1288 |
-
|
1289 |
-
#: src/filters.py:58
|
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 |
-
"nt3awnoumorocco@gmail.com"
|
1388 |
-
msgstr ""
|
1389 |
-
|
1390 |
-
#: src/dataframes.py:111
|
1391 |
-
msgid ""
|
1392 |
-
"\n"
|
1393 |
-
" <div style=\"text-align: left;\">\n"
|
1394 |
-
" <a href=\"mailto:nt3awnoumorocco@gmail."
|
1395 |
-
"com\">nt3awnoumorocco@gmail.com</a> نحن نخفي معلومات الاتصال لحماية خصوصية "
|
1396 |
-
"الضحايا. إذا كنت جمعية وتريد الاتصال بالضحايا، يرجى الاتصال بنا على\n"
|
1397 |
-
" </div>\n"
|
1398 |
-
" "
|
1399 |
-
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
parse_xgettext.bash
DELETED
@@ -1,15 +0,0 @@
|
|
1 |
-
# To update locales files you can just run
|
2 |
-
# bash parse_xgettext.bash
|
3 |
-
|
4 |
-
# Find python files and phtml files and put them in a list
|
5 |
-
find . -type f \( -name '*.py' -or -name '*.phtml' \) -print > list
|
6 |
-
# Parse the list and generate a pot file
|
7 |
-
xgettext --files-from=list --language=Python -a -o ./messages.pot
|
8 |
-
# Update locales files
|
9 |
-
msgmerge --update --no-fuzzy-matching --backup=off ./locales/fr/LC_MESSAGES/messages.po ./messages.pot
|
10 |
-
msgmerge --update --no-fuzzy-matching --backup=off ./locales/ar/LC_MESSAGES/messages.po ./messages.pot
|
11 |
-
# Compile locales files
|
12 |
-
msgfmt -o ./locales/fr/LC_MESSAGES/messages.mo ./locales/fr/LC_MESSAGES/messages.po
|
13 |
-
msgfmt -o ./locales/ar/LC_MESSAGES/messages.mo ./locales/ar/LC_MESSAGES/messages.po
|
14 |
-
# Remove the list
|
15 |
-
rm list
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
requirements.txt
CHANGED
@@ -1,3 +1,2 @@
|
|
1 |
-
folium
|
2 |
-
streamlit_folium
|
3 |
-
plotly
|
|
|
1 |
+
folium
|
2 |
+
streamlit_folium
|
|
src/components.py
DELETED
@@ -1,274 +0,0 @@
|
|
1 |
-
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"""
|
24 |
-
# collapse the text
|
25 |
-
with st.expander("🔍 Review of requests | مراجعة طلب مساعدة"):
|
26 |
-
st.markdown(REVIEW_TEXT)
|
27 |
-
|
28 |
-
id_to_review = st.number_input("Enter id / أدخل الرقم", min_value=0, value=0, step=1)
|
29 |
-
reason_for_review = st.text_area("Explain why / أدخل سبب المراجعة")
|
30 |
-
if st.button("Submit / أرسل"):
|
31 |
-
if reason_for_review == "":
|
32 |
-
st.error("Please enter a reason / الرجاء إدخال سبب")
|
33 |
-
else:
|
34 |
-
filename = f"review_id_{id_to_review}_{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.txt"
|
35 |
-
with open(filename, "w") as f:
|
36 |
-
f.write(f"id: {id_to_review}, explanation: {reason_for_review}\n")
|
37 |
-
api.upload_file(
|
38 |
-
path_or_fileobj=filename,
|
39 |
-
path_in_repo=filename,
|
40 |
-
repo_id="nt3awnou/review_requests",
|
41 |
-
repo_type="dataset",
|
42 |
-
)
|
43 |
-
st.success("Submitted at https://huggingface.co/datasets/nt3awnou/review_requests/ تم الإرسال")
|
44 |
-
|
45 |
-
|
46 |
-
def show_embed_code():
|
47 |
-
with st.expander(_("💻 For Developers only, embed code for the map")):
|
48 |
-
st.code(
|
49 |
-
"""
|
50 |
-
<iframe id="nt3awnou-map"
|
51 |
-
src="https://nt3awnou-embed-rescue-map.hf.space/?embed=true" width="1200" height="720"
|
52 |
-
frameborder="0"
|
53 |
-
width="850"
|
54 |
-
height="450"
|
55 |
-
title="Nt3awno Rescue Map">
|
56 |
-
</iframe>
|
57 |
-
<script src="https://cdn.jsdelivr.net/npm/iframe-resizer@4.3.4/js/iframeResizer.min.js"></script>
|
58 |
-
<script>
|
59 |
-
iFrameResize({}, "#nt3awnou-map");
|
60 |
-
</script>
|
61 |
-
""",
|
62 |
-
language="html",
|
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",
|
77 |
-
len_requests,
|
78 |
-
)
|
79 |
-
with col2:
|
80 |
-
st.metric(
|
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 |
-
"# عدد طلبات المساعدة",
|
100 |
-
len_requests,
|
101 |
-
)
|
102 |
-
with col2:
|
103 |
-
st.metric(
|
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",
|
123 |
-
len_requests,
|
124 |
-
)
|
125 |
-
with col2:
|
126 |
-
st.metric(
|
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;">
|
218 |
-
<h4>The official bank account dedicated to tackle the consequences of the earthquake is:</h4>
|
219 |
-
<b>Account number:</b>
|
220 |
-
<h2>126</h2>
|
221 |
-
<b>RIB:</b> 001-810-0078000201106203-18
|
222 |
-
<br>
|
223 |
-
<b>For the money transfers coming from outside Morocco</b>
|
224 |
-
<br>
|
225 |
-
<b>IBAN:</b> MA64001810007800020110620318
|
226 |
-
<br>
|
227 |
-
""",
|
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;">
|
240 |
-
<h4>الحساب البنكي الرسمي المخصص لمواجهة عواقب الزلزال</h4>
|
241 |
-
<b>رقم الحساب</b>
|
242 |
-
<h2>126</h2>
|
243 |
-
<b>RIB:</b> 001-810-0078000201106203-18
|
244 |
-
<br>
|
245 |
-
<b>للتحويلات القادمة من خارج المغرب</b>
|
246 |
-
<br>
|
247 |
-
<b>IBAN:</b> MA64001810007800020110620318
|
248 |
-
<br>
|
249 |
-
</div>
|
250 |
-
""",
|
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;">
|
263 |
-
<h4>Le compte bancaire officiel dédié à la lutte contre les conséquences du séisme est le suivant:</h4>
|
264 |
-
<b>Numéro de compte:</b>
|
265 |
-
<h2>126</h2>
|
266 |
-
<b>RIB:</b> 001-810-0078000201106203-18
|
267 |
-
<br>
|
268 |
-
<b>Pour les transferts d'argent en provenance de l'étranger</b>
|
269 |
-
<br>
|
270 |
-
<b>IBAN:</b> MA64001810007800020110620318
|
271 |
-
<br>
|
272 |
-
""",
|
273 |
-
unsafe_allow_html=True,
|
274 |
-
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
DELETED
@@ -1,118 +0,0 @@
|
|
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:
|
16 |
-
df = add_latlng_col(df, process_column=15)
|
17 |
-
interventions_df = parse_gg_sheet(INTERVENTIONS_URL)
|
18 |
-
interventions_df = add_latlng_col(interventions_df, process_column="Automatic Extracted Coordinates")
|
19 |
-
verified_df = parse_gg_sheet(VERIFIED_REQUESTS_URL)
|
20 |
-
verified_df = add_latlng_col(verified_df, process_column="Automatic Extracted Coordinates")
|
21 |
-
douar_df = parse_json_file(DOUARS_URL)
|
22 |
-
|
23 |
-
# check if verified requests have been solved
|
24 |
-
solved_verified_requests = verified_df[~pd.isnull(verified_df["Status"])]
|
25 |
-
verified_df = verified_df[pd.isnull(verified_df["Status"])]
|
26 |
-
|
27 |
-
len_requests = len(df)
|
28 |
-
len_interventions = len(interventions_df)
|
29 |
-
len_solved_verified_requests = len(solved_verified_requests)
|
30 |
-
|
31 |
-
df["id"] = df.index # Needed to display request id
|
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))
|
41 |
-
]
|
42 |
-
return (
|
43 |
-
df,
|
44 |
-
filtered_df,
|
45 |
-
interventions_df,
|
46 |
-
verified_df,
|
47 |
-
filtered_verified_df,
|
48 |
-
solved_verified_requests,
|
49 |
-
douar_df,
|
50 |
-
len_requests,
|
51 |
-
len_interventions,
|
52 |
-
len_solved_verified_requests,
|
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])
|
59 |
-
|
60 |
-
# has df's first row
|
61 |
-
df_hash = hash(df.iloc[0].to_string())
|
62 |
-
|
63 |
-
with col_1:
|
64 |
-
query = st.text_input("🔍 Search for information / بحث عن المعلومات", key=f"query_{df_hash}")
|
65 |
-
with col_2:
|
66 |
-
if search_id:
|
67 |
-
id_number = st.number_input(
|
68 |
-
"🔍 Search for an id / بحث عن رقم",
|
69 |
-
min_value=0,
|
70 |
-
# max_value=len(df),
|
71 |
-
value=0,
|
72 |
-
step=1,
|
73 |
-
key=f"id_{df_hash}",
|
74 |
-
)
|
75 |
-
if status:
|
76 |
-
selected_status = st.selectbox(
|
77 |
-
"🗓️ Status / حالة", ["all / الكل", "Done / تم", "Planned / مخطط لها"], key=f"status_{df_hash}"
|
78 |
-
)
|
79 |
-
|
80 |
-
if query:
|
81 |
-
# Filtering the dataframe based on the query
|
82 |
-
mask = df.apply(lambda row: row.astype(str).str.contains(query.lower(), case=False).any(), axis=1)
|
83 |
-
display_df = df[mask]
|
84 |
-
else:
|
85 |
-
display_df = df
|
86 |
-
|
87 |
-
if search_id and id_number:
|
88 |
-
display_df = display_df[display_df["id"] == id_number]
|
89 |
-
|
90 |
-
display_df = display_df.drop(drop_cols, axis=1)
|
91 |
-
|
92 |
-
if status:
|
93 |
-
target = "Intervention status"
|
94 |
-
if selected_status == "Done / تم":
|
95 |
-
display_df = display_df[display_df[target] == "Intervention déjà passée / Past intevention"]
|
96 |
-
|
97 |
-
elif selected_status == "Planned / مخطط لها":
|
98 |
-
display_df = display_df[display_df[target] != "Intervention déjà passée / Past intevention"]
|
99 |
-
|
100 |
-
st.dataframe(display_df, height=500)
|
101 |
-
# Original link to the Google Sheet
|
102 |
-
if show_link:
|
103 |
-
st.markdown(
|
104 |
-
f"To view the full Google Sheet for advanced filtering go to: {data_url} **لعرض الورقة كاملة، اذهب إلى**"
|
105 |
-
)
|
106 |
-
# if we want to check hidden contact information
|
107 |
-
if for_help_requests:
|
108 |
-
st.markdown(
|
109 |
-
"We are hiding contact information to protect the privacy of the victims. If you are an NGO and want to contact the victims, please contact us at nt3awnoumorocco@gmail.com",
|
110 |
-
)
|
111 |
-
st.markdown(
|
112 |
-
"""
|
113 |
-
<div style="text-align: left;">
|
114 |
-
<a href="mailto:nt3awnoumorocco@gmail.com">nt3awnoumorocco@gmail.com</a> نحن نخفي معلومات الاتصال لحماية خصوصية الضحايا. إذا كنت جمعية وتريد الاتصال بالضحايا، يرجى الاتصال بنا على
|
115 |
-
</div>
|
116 |
-
""",
|
117 |
-
unsafe_allow_html=True,
|
118 |
-
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/filters.py
DELETED
@@ -1,65 +0,0 @@
|
|
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"),
|
10 |
-
"مخاطر (تسرب الغاز، تلف في الخدمات العامة...)": _("Danger"),
|
11 |
-
}
|
12 |
-
|
13 |
-
options = [
|
14 |
-
"إغاثة",
|
15 |
-
"مساعدة طبية",
|
16 |
-
"مأوى",
|
17 |
-
"طعام وماء",
|
18 |
-
"مخاطر (تسرب الغاز، تلف في الخدمات العامة...)",
|
19 |
-
]
|
20 |
-
selected_options = []
|
21 |
-
|
22 |
-
col1, col2 = st.columns([1, 1])
|
23 |
-
with col1:
|
24 |
-
show_unverified = st.checkbox(
|
25 |
-
_("Display unverified requests"),
|
26 |
-
value=False,
|
27 |
-
)
|
28 |
-
with col2:
|
29 |
-
show_interventions = st.checkbox(
|
30 |
-
_("Display Interventions"),
|
31 |
-
value=True,
|
32 |
-
)
|
33 |
-
|
34 |
-
st.markdown(_("👉 **Choose request type**"))
|
35 |
-
selected_options = st.multiselect(
|
36 |
-
"Choose request type",
|
37 |
-
options=options,
|
38 |
-
default=options,
|
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**"),
|
49 |
-
unsafe_allow_html=True,
|
50 |
-
)
|
51 |
-
status_mapping = {
|
52 |
-
"Critique, Besoin d'aide en urgence / Critical, in urgent need of help": _("🚨 Critical"),
|
53 |
-
"Partiellement satisfait / Partially Served": _("⚠️ Partially served"),
|
54 |
-
"Entièrement satisfait / Fully served": _("✅ Fully served"),
|
55 |
-
}
|
56 |
-
|
57 |
-
# Let's use multiselect instead
|
58 |
-
selected_statuses = st.multiselect(
|
59 |
-
"Choose status",
|
60 |
-
options=status_mapping.keys(),
|
61 |
-
default=status_mapping.keys(),
|
62 |
-
format_func=lambda x: status_mapping[x],
|
63 |
-
label_visibility="collapsed",
|
64 |
-
)
|
65 |
-
return selected_statuses
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
@@ -1,132 +1,103 @@
|
|
1 |
from branca.element import Template, MacroElement
|
2 |
|
3 |
|
4 |
-
|
5 |
-
|
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>
|
10 |
-
<li><span style='background:#37A8DA;opacity:0.7;'></span>Food & Water</li>
|
11 |
-
<li><span style='background:#575757;opacity:0.7;'></span>Dangers</li>
|
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 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
<
|
33 |
-
<
|
34 |
-
|
35 |
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
36 |
-
<title>jQuery UI Draggable - Default functionality</title>
|
37 |
-
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
|
38 |
-
|
39 |
-
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
|
40 |
-
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
|
41 |
-
|
42 |
-
<script>
|
43 |
-
$( function() {
|
44 |
-
$( "#maplegend" ).draggable({
|
45 |
-
start: function (event, ui) {
|
46 |
-
$(this).css({
|
47 |
-
right: "auto",
|
48 |
-
top: "auto",
|
49 |
-
bottom: "auto"
|
50 |
-
});
|
51 |
-
}
|
52 |
-
});
|
53 |
-
});
|
54 |
-
|
55 |
-
</script>
|
56 |
-
</head>
|
57 |
-
<body>
|
58 |
|
|
|
|
|
59 |
|
60 |
-
<
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
</div>
|
73 |
-
|
74 |
-
</body>
|
75 |
-
</html>
|
76 |
-
|
77 |
-
<style type='text/css'>
|
78 |
-
.maplegend .legend-title {
|
79 |
-
text-align: left;
|
80 |
-
margin-bottom: 5px;
|
81 |
-
font-weight: bold;
|
82 |
-
font-size: 90%;
|
83 |
-
color: #333;
|
84 |
-
}
|
85 |
-
.maplegend .legend-scale ul {
|
86 |
-
margin: 0;
|
87 |
-
margin-bottom: 5px;
|
88 |
-
padding: 0;
|
89 |
-
float: left;
|
90 |
-
list-style: none;
|
91 |
-
}
|
92 |
-
.maplegend .legend-scale ul li {
|
93 |
-
font-size: 80%;
|
94 |
-
list-style: none;
|
95 |
-
margin-left: 0;
|
96 |
-
line-height: 18px;
|
97 |
-
margin-bottom: 2px;
|
98 |
-
color: #111;
|
99 |
-
}
|
100 |
-
.maplegend ul.legend-labels li span {
|
101 |
-
display: block;
|
102 |
-
float: left;
|
103 |
-
height: 16px;
|
104 |
-
width: 30px;
|
105 |
-
margin-right: 5px;
|
106 |
-
margin-left: 0;
|
107 |
-
border: 1px solid #999;
|
108 |
-
}
|
109 |
-
.maplegend .legend-source {
|
110 |
-
font-size: 80%;
|
111 |
-
color: #777;
|
112 |
-
clear: both;
|
113 |
-
}
|
114 |
-
.maplegend a {
|
115 |
-
color: #777;
|
116 |
-
}
|
117 |
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
</style>
|
123 |
-
{% endmacro %}"""
|
124 |
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
131 |
|
132 |
-
__all__ = ["
|
|
|
1 |
from branca.element import Template, MacroElement
|
2 |
|
3 |
|
4 |
+
template = """
|
5 |
+
{% macro html(this, kwargs) %}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
|
7 |
+
<!doctype html>
|
8 |
+
<html lang="en">
|
9 |
+
<head>
|
10 |
+
<meta charset="utf-8">
|
11 |
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
12 |
+
<title>jQuery UI Draggable - Default functionality</title>
|
13 |
+
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
|
15 |
+
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
|
16 |
+
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
|
17 |
|
18 |
+
<script>
|
19 |
+
$( function() {
|
20 |
+
$( "#maplegend" ).draggable({
|
21 |
+
start: function (event, ui) {
|
22 |
+
$(this).css({
|
23 |
+
right: "auto",
|
24 |
+
top: "auto",
|
25 |
+
bottom: "auto"
|
26 |
+
});
|
27 |
+
}
|
28 |
+
});
|
29 |
+
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
|
31 |
+
</script>
|
32 |
+
</head>
|
33 |
+
<body>
|
|
|
|
|
|
|
34 |
|
35 |
+
|
36 |
+
<div id='maplegend' class='maplegend'
|
37 |
+
style='position: absolute; z-index:9999; border:2px solid grey; background-color:rgba(255, 255, 255, 0.8);
|
38 |
+
border-radius:6px; padding: 10px; font-size:14px; right: 20px; bottom: 20px;'>
|
39 |
+
|
40 |
+
<div class='legend-title'>Legend / مفتاح الخريطة</div>
|
41 |
+
<div class='legend-scale'>
|
42 |
+
<ul class='legend-labels'>
|
43 |
+
<li><span style='background:#CE3C28;opacity:0.7;'></span>Rescue / إغاثة</li>
|
44 |
+
<li><span style='background:#ED922E;opacity:0.7;'></span>Medical Assistance / مساعدة طبية</li>
|
45 |
+
<li><span style='background:#FFCA92;opacity:0.7;'></span>Shelter / مأوى</li>
|
46 |
+
<li><span style='background:#37A8DA;opacity:0.7;'></span>Food & Water / طعام وماء</li>
|
47 |
+
<li><span style='background:#575757;opacity:0.7;'></span>Danger / مخاطر (تسرب الغاز، تلف في الخدمات العامة...)</li>
|
48 |
+
<li><span style='background:#6EAA25;opacity:0.7;'></span>Done / تم</li>
|
49 |
+
<li><span style='background:#023020;opacity:0.7;'></span>Partial / تم جزئيا</li>
|
50 |
+
<li><span style='background:#FF91E8;opacity:0.7;'></span>Planned / مخطط لها</li>
|
51 |
+
</ul>
|
52 |
+
</div>
|
53 |
+
</div>
|
54 |
+
|
55 |
+
</body>
|
56 |
+
</html>
|
57 |
|
58 |
+
<style type='text/css'>
|
59 |
+
.maplegend .legend-title {
|
60 |
+
text-align: left;
|
61 |
+
margin-bottom: 5px;
|
62 |
+
font-weight: bold;
|
63 |
+
font-size: 90%;
|
64 |
+
color: #333;
|
65 |
+
}
|
66 |
+
.maplegend .legend-scale ul {
|
67 |
+
margin: 0;
|
68 |
+
margin-bottom: 5px;
|
69 |
+
padding: 0;
|
70 |
+
float: left;
|
71 |
+
list-style: none;
|
72 |
+
}
|
73 |
+
.maplegend .legend-scale ul li {
|
74 |
+
font-size: 80%;
|
75 |
+
list-style: none;
|
76 |
+
margin-left: 0;
|
77 |
+
line-height: 18px;
|
78 |
+
margin-bottom: 2px;
|
79 |
+
color: #111;
|
80 |
+
}
|
81 |
+
.maplegend ul.legend-labels li span {
|
82 |
+
display: block;
|
83 |
+
float: left;
|
84 |
+
height: 16px;
|
85 |
+
width: 30px;
|
86 |
+
margin-right: 5px;
|
87 |
+
margin-left: 0;
|
88 |
+
border: 1px solid #999;
|
89 |
+
}
|
90 |
+
.maplegend .legend-source {
|
91 |
+
font-size: 80%;
|
92 |
+
color: #777;
|
93 |
+
clear: both;
|
94 |
+
}
|
95 |
+
.maplegend a {
|
96 |
+
color: #777;
|
97 |
+
}
|
98 |
+
</style>
|
99 |
+
{% endmacro %}"""
|
100 |
+
legend_macro = MacroElement()
|
101 |
+
legend_macro._template = Template(template)
|
102 |
|
103 |
+
__all__ = ["legend_macro"]
|
src/markers.py
DELETED
@@ -1,269 +0,0 @@
|
|
1 |
-
from datetime import datetime
|
2 |
-
import folium
|
3 |
-
import pandas as pd
|
4 |
-
|
5 |
-
|
6 |
-
COLOR_MAPPING = {
|
7 |
-
"إغاثة": "red",
|
8 |
-
"مساعدة طبية": "orange",
|
9 |
-
"مأوى": "beige",
|
10 |
-
"طعام وماء": "blue",
|
11 |
-
"مخاطر (تسرب الغاز، تلف في الخدمات العامة...)": "gray",
|
12 |
-
}
|
13 |
-
|
14 |
-
ICON_MAPPING = {
|
15 |
-
"إغاثة": "bell", # life ring icon for rescue
|
16 |
-
"مساعدة طبية": "heart", # medical kit for medical assistance
|
17 |
-
"مأوى": "home", # home icon for shelter
|
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
|
26 |
-
# requests are already sorted by priority from the form
|
27 |
-
try:
|
28 |
-
displayed_request = request.split(',')[0]
|
29 |
-
except:
|
30 |
-
displayed_request = request
|
31 |
-
return displayed_request
|
32 |
-
|
33 |
-
|
34 |
-
## Interventions
|
35 |
-
def display_interventions(interventions_df, selected_statuses, map_obj, intervention_fgs):
|
36 |
-
"""Display NGO interventions on the map"""
|
37 |
-
|
38 |
-
for index, row in interventions_df.iterrows():
|
39 |
-
village_status = row[interventions_df.columns[numcol("K")]]
|
40 |
-
is_future_intervention = (
|
41 |
-
row[interventions_df.columns[numcol("H")]] == "Intervention prévue dans le futur / Planned future intervention"
|
42 |
-
)
|
43 |
-
|
44 |
-
if pd.isna(village_status) and not is_future_intervention:
|
45 |
-
village_status = "Partiellement satisfait / Partially Served"
|
46 |
-
|
47 |
-
if village_status not in selected_statuses:
|
48 |
-
continue
|
49 |
-
|
50 |
-
if is_future_intervention:
|
51 |
-
color_mk = "pink"
|
52 |
-
status = "Planned ⌛"
|
53 |
-
elif village_status != "Critique, Besoin d'aide en urgence / Critical, in urgent need of help":
|
54 |
-
# past intervention and village not in a critical condition
|
55 |
-
color_mk = "green"
|
56 |
-
status = "Done ✅"
|
57 |
-
|
58 |
-
else:
|
59 |
-
color_mk = "darkgreen"
|
60 |
-
status = "Partial 📝"
|
61 |
-
|
62 |
-
# ['Horodateur', 'Organization Name', 'Association ID', 'Speciality',
|
63 |
-
# 'Phone 1', 'Phone 2', 'Email', 'Intervention status',
|
64 |
-
# 'Intervention date', 'Types of Help Provided',
|
65 |
-
# 'Current situation of the area', 'Future help type', 'Douar name',
|
66 |
-
# 'Commune', 'Caidat', ' Google Maps Link',
|
67 |
-
# 'Accessibility to the targeted douar', 'Type of accessibility',
|
68 |
-
# 'Population of the douar if available', 'Intervention Additional Info',
|
69 |
-
# 'Any Additional info is welcome', 'Automatic Extracted Coordinates',
|
70 |
-
# 'Unnamed: 22'],
|
71 |
-
|
72 |
-
org = row[interventions_df.columns[numcol("B")]]
|
73 |
-
association_id = row[interventions_df.columns[numcol("C")]]
|
74 |
-
speciality = row[interventions_df.columns[numcol("D")]]
|
75 |
-
phone_1 = row[interventions_df.columns[numcol("E")]]
|
76 |
-
phone_2 = row[interventions_df.columns[numcol("F")]]
|
77 |
-
email = row[interventions_df.columns[numcol("G")]]
|
78 |
-
intervention_status = row[interventions_df.columns[numcol("H")]]
|
79 |
-
intervention_date = row[interventions_df.columns[numcol("I")]]
|
80 |
-
help_type = row[interventions_df.columns[numcol("J")]]
|
81 |
-
current_situation = row[interventions_df.columns[numcol("K")]]
|
82 |
-
future_help_type = row[interventions_df.columns[numcol("L")]]
|
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")]]
|
90 |
-
intervention_additional_info = row[interventions_df.columns[numcol("T")]]
|
91 |
-
any_additional_info = row[interventions_df.columns[numcol("U")]]
|
92 |
-
|
93 |
-
full_douar_name = ", ".join([x for x in [douar_name, commune, caidat] if not pd.isna(x)])
|
94 |
-
intervention_info = f"""
|
95 |
-
<b>Org:</b> {org}<br>
|
96 |
-
<b>Association ID:</b> {association_id}<br>
|
97 |
-
<b>Speciality:</b> {speciality}<br>
|
98 |
-
<b>Phone 1:</b> {phone_1}<br>
|
99 |
-
<b>Phone 2:</b> {phone_2}<br>
|
100 |
-
<b>Email:</b> {email}<br>
|
101 |
-
<b>Intervention Date:</b> {intervention_date}<br>
|
102 |
-
<b>Intervention Status:</b> {intervention_status}<br>
|
103 |
-
<b>Help Type:</b> {help_type}<br>
|
104 |
-
<b>Current Situation:</b> {current_situation}<br>
|
105 |
-
<b>Future Help Type:</b> {future_help_type}<br>
|
106 |
-
<b>Douar Name:</b> {full_douar_name}<br>
|
107 |
-
<b>Accessibility to Douar:</b> {accessibility_to_douar}<br>
|
108 |
-
<b>Type of Accessibility:</b> {type_of_accessibility}<br>
|
109 |
-
<b>Population:</b> {population}<br>
|
110 |
-
<b>Intervention Additional Info:</b> {intervention_additional_info}<br>
|
111 |
-
<b>Any Additional Info:</b> {any_additional_info}<br>
|
112 |
-
""" #TODO: filter nans
|
113 |
-
if row["latlng"] is None:
|
114 |
-
continue
|
115 |
-
|
116 |
-
fg = intervention_fgs[status]
|
117 |
-
fg.add_child(
|
118 |
-
folium.Marker(
|
119 |
-
location=row["latlng"],
|
120 |
-
tooltip=full_douar_name,
|
121 |
-
popup=folium.Popup(intervention_info, max_width=300),
|
122 |
-
icon=folium.Icon(color=color_mk),
|
123 |
-
)
|
124 |
-
)
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
def display_solved(solved_verified_requests, selected_statuses, feature_group):
|
129 |
-
for index, row in solved_verified_requests.iterrows():
|
130 |
-
if row["latlng"] is None:
|
131 |
-
continue
|
132 |
-
intervention_status = row[solved_verified_requests.columns[8]]
|
133 |
-
is_future_intervention = (
|
134 |
-
intervention_status == "Planned"
|
135 |
-
)
|
136 |
-
|
137 |
-
if is_future_intervention:
|
138 |
-
status = "Planned ⌛"
|
139 |
-
icon = folium.Icon(icon="heart", prefix="glyphicon", color="pink", icon_color="red")
|
140 |
-
else:
|
141 |
-
status = "Done ✅"
|
142 |
-
icon = folium.Icon(icon="heart", prefix="glyphicon", color="green", icon_color="red")
|
143 |
-
# if village_status not in selected_statuses:
|
144 |
-
# continue # TODO: enable filters
|
145 |
-
intervention_type = row[solved_verified_requests.columns[2]]
|
146 |
-
details = row[solved_verified_requests.columns[3]]
|
147 |
-
contact = row[solved_verified_requests.columns[4]]
|
148 |
-
location = row[solved_verified_requests.columns[5]]
|
149 |
-
org = row[solved_verified_requests.columns[9]]
|
150 |
-
intervention_date = row[solved_verified_requests.columns[10]]
|
151 |
-
remarks = row[solved_verified_requests.columns[11]]
|
152 |
-
intervention_info = f"""
|
153 |
-
<b>Intervention Date:</b> {intervention_date}<br>
|
154 |
-
<b>Org:</b> {org}<br>
|
155 |
-
<b>Intervention:</b> {intervention_type}<br>
|
156 |
-
<b>Invervention Status:</b> {status}<br>
|
157 |
-
<b>Details:</b> {details}<br>
|
158 |
-
<b>Location:</b> {location}<br>
|
159 |
-
<b>Remarks:</b> {remarks}<br>
|
160 |
-
<b>Contact:</b> {contact}<br>
|
161 |
-
"""
|
162 |
-
# golden color
|
163 |
-
feature_group.add_child(
|
164 |
-
folium.Marker(
|
165 |
-
location=row["latlng"],
|
166 |
-
tooltip=location,
|
167 |
-
popup=folium.Popup(intervention_info, max_width=300),
|
168 |
-
icon=icon
|
169 |
-
)
|
170 |
-
)
|
171 |
-
|
172 |
-
|
173 |
-
## Requests
|
174 |
-
def show_requests(filtered_df, feature_group):
|
175 |
-
"""Display victim requests on the map"""
|
176 |
-
for index, row in filtered_df.iterrows():
|
177 |
-
request_type = row["ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)"]
|
178 |
-
displayed_request = marker_request(request_type) # TODO: the marker should depend on selected_options
|
179 |
-
long_lat = row["latlng"]
|
180 |
-
maps_url = f"https://maps.google.com/?q={long_lat}"
|
181 |
-
|
182 |
-
douar = row[filtered_df.columns[3]]
|
183 |
-
person_in_place = row[filtered_df.columns[6]]
|
184 |
-
douar_info = row[filtered_df.columns[9]]
|
185 |
-
source = row[filtered_df.columns[10]]
|
186 |
-
# we display all requests in popup text and use the first one for the icon/color
|
187 |
-
display_text = f"""
|
188 |
-
<b>Request Type:</b> {request_type}<br>
|
189 |
-
<b>Id:</b> {row["id"]}<br>
|
190 |
-
<b>Source:</b> {source}<br>
|
191 |
-
<b>Person in place:</b> {person_in_place}<br>
|
192 |
-
<b>Douar:</b> {douar}<br>
|
193 |
-
<b>Douar Info:</b> {douar_info}<br>
|
194 |
-
<a href="{maps_url}" target="_blank" rel="noopener noreferrer"><b>Google Maps</b></a>
|
195 |
-
"""
|
196 |
-
|
197 |
-
icon_name = ICON_MAPPING.get(request_type, "list")
|
198 |
-
if long_lat is None:
|
199 |
-
continue
|
200 |
-
|
201 |
-
feature_group.add_child(
|
202 |
-
folium.Marker(
|
203 |
-
location=long_lat,
|
204 |
-
tooltip=row[" لأي جماعة / قيادة / دوار تنتمون ؟"]
|
205 |
-
if not pd.isna(row[" لأي جماعة / قيادة / دوار تنتمون ؟"])
|
206 |
-
else None,
|
207 |
-
popup=folium.Popup(display_text, max_width=300),
|
208 |
-
icon=folium.Icon(
|
209 |
-
color=COLOR_MAPPING.get(displayed_request, "beige"), icon=icon_name, prefix="glyphicon"
|
210 |
-
),
|
211 |
-
)
|
212 |
-
)
|
213 |
-
|
214 |
-
def show_verified_requests(filtered_verified_df, emergency_fgs):
|
215 |
-
"""Display verified victim requests on the map"""
|
216 |
-
global fg
|
217 |
-
|
218 |
-
verified_color_mapping = {
|
219 |
-
"Low": "beige",
|
220 |
-
"Medium": "orange",
|
221 |
-
"High": "red",
|
222 |
-
}
|
223 |
-
|
224 |
-
for index, row in filtered_verified_df.iterrows():
|
225 |
-
long_lat = row["latlng"]
|
226 |
-
# we display all requests in popup text and use the first one for the icon/color
|
227 |
-
display_text = ""
|
228 |
-
for col, val in zip(filtered_verified_df.columns, row):
|
229 |
-
if col == "Help Details":
|
230 |
-
request_type = row["Help Details"]
|
231 |
-
marker_request(request_type) # TODO: the marker should depend on selected_options
|
232 |
-
display_text += f"<b>Request Type:</b> {request_type}<br>"
|
233 |
-
elif col == "Location Details":
|
234 |
-
display_text += f"<b>Location:</b> {val}<br>"
|
235 |
-
elif col == "Emergency Degree":
|
236 |
-
display_text += f"<b>Emergency Degree:</b> {val}<br>"
|
237 |
-
elif col == "Verification Date":
|
238 |
-
display_text += f"<b>Verification Date:</b> {val}<br>"
|
239 |
-
elif col == "id":
|
240 |
-
display_text = f"<b>Id:</b> {val}<br>" + display_text
|
241 |
-
elif col == "latlng":
|
242 |
-
maps_url = f"https://maps.google.com/?q={val}"
|
243 |
-
display_text += (
|
244 |
-
f'<a href="{maps_url}" target="_blank" rel="noopener noreferrer"><b>Google Maps</b></a><br>'
|
245 |
-
)
|
246 |
-
|
247 |
-
# mark as solved button
|
248 |
-
id_in_sheet = row["id"] + 2
|
249 |
-
display_text += f"<a href='https://docs.google.com/forms/d/e/1FAIpQLSdyAcOAULumk4A1DsfrwUsGdZ-9G5xOUuD3vHdQOp3nGNAZXw/viewform?usp=pp_url&entry.1499427789={id_in_sheet}&entry.1666684596={datetime.now().strftime('%Y-%m-%d')}' target='_blank' rel='noopener noreferrer'><b>Mark as solved</b></a><br>"
|
250 |
-
|
251 |
-
icon_name = ICON_MAPPING.get(request_type, "list")
|
252 |
-
emergency = row.get("Emergency Degree", "Low")
|
253 |
-
if long_lat is None:
|
254 |
-
continue
|
255 |
-
location = row["Location Details"]
|
256 |
-
|
257 |
-
# Select the correct feature group
|
258 |
-
fg_emergency_group = emergency_fgs[emergency]
|
259 |
-
|
260 |
-
fg_emergency_group.add_child(
|
261 |
-
folium.Marker(
|
262 |
-
location=long_lat,
|
263 |
-
tooltip=location if not pd.isna(location) else None,
|
264 |
-
popup=folium.Popup(display_text, max_width=300),
|
265 |
-
icon=folium.Icon(
|
266 |
-
color=verified_color_mapping.get(emergency, "beige"), icon=icon_name, prefix="glyphicon"
|
267 |
-
),
|
268 |
-
)
|
269 |
-
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/text_content.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
INTRO_TEXT_EN = """
|
2 |
<div style="text-align: left;">
|
3 |
-
Nt3awnou نتعاونو is a
|
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:nt3awnoumorocco@gmail.com">nt3awnoumorocco@gmail.com</a> or via Instagram <a href="https://www.instagram.com/nt3awnou_morocco/">@nt3awnou_morocco</a> <br>
|
@@ -12,9 +12,9 @@ INTRO_TEXT_EN = """
|
|
12 |
"""
|
13 |
|
14 |
INTRO_TEXT_AR = """
|
15 |
-
<div style="text-align: right
|
16 |
|
17 |
-
نتعاونو هي منصة تعاونية
|
18 |
<br> تحذير : نظرا لخطورة الطرقان بسبب الحجر اللي كيطيح من الجبال، ننصح المتطوعين اللي بغاو يساعدو ��لمناطق المتضررة يتبرعو عن طريق الجمعيات المختصة⚠️
|
19 |
<br>
|
20 |
<br>
|
@@ -27,10 +27,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
|
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>
|
@@ -48,12 +48,36 @@ SLOGAN = """
|
|
48 |
</div>
|
49 |
"""
|
50 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
|
52 |
CREDITS_TEXT = """
|
53 |
<hr>
|
54 |
<div style="text-align: center;">
|
55 |
<p>By <b>Moroccans</b> for <b>Moroccans</b> 🤝</p>
|
56 |
-
<p>
|
|
|
57 |
"""
|
58 |
|
59 |
LOGO = """
|
@@ -62,43 +86,10 @@ LOGO = """
|
|
62 |
padding-top: 1rem;
|
63 |
padding-bottom: 0rem;
|
64 |
}
|
65 |
-
'''
|
66 |
-
[data-testid="metric-container"] {
|
67 |
-
width: fit-content;
|
68 |
-
margin: auto;
|
69 |
-
}
|
70 |
-
|
71 |
-
[data-testid="metric-container"] > div {
|
72 |
-
width: fit-content;
|
73 |
-
margin: auto;
|
74 |
-
}
|
75 |
-
|
76 |
-
[data-testid="metric-container"] label {
|
77 |
-
width: fit-content;
|
78 |
-
margin: auto;
|
79 |
-
}
|
80 |
-
'''
|
81 |
</style>
|
82 |
-
<div
|
83 |
-
|
84 |
-
<img src="https://i.imgur.com/ngJZ4Gh.png" alt="Nt3awnou logo" width="fit-content" height="150" style="margin-top: 1rem; margin-bottom: 1rem;">
|
85 |
-
</div>
|
86 |
-
<div style="text-align: center">
|
87 |
-
<a href="https://www.instagram.com/nt3awnou_morocco/" style="margin-right: 0.5rem; text-decoration: none;">
|
88 |
-
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Instagram_icon.png/2048px-Instagram_icon.png" alt="Instagram logo" width="30" height="30">
|
89 |
-
</a>
|
90 |
-
<a href="https://www.facebook.com/nt3awnou.morocco" style="margin-right: 0.5rem; text-decoration: none;">
|
91 |
-
<img src="https://i0.wp.com/www.lestudioled.com/wp-content/uploads/2016/05/facebook-logo-png-transparent-background.png" alt="Instagram logo" width="30" height="30">
|
92 |
-
</a>
|
93 |
-
<a href="https://www.linkedin.com/in/nt3awnou-morocco-01062a290" style="margin-right: 0.5rem; text-decoration: none;">
|
94 |
-
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/c/ca/LinkedIn_logo_initials.png/600px-LinkedIn_logo_initials.png?20140125013055" alt="LinkedIn logo" width="30" height="30">
|
95 |
-
</a>
|
96 |
-
<a href="https://linktr.ee/nt3awnou">
|
97 |
-
<img src="https://seeklogo.com/images/L/linktree-logo-6FC3ADB679-seeklogo.com.png" alt="Linktree logo" width="30" height="30">
|
98 |
-
</a>
|
99 |
-
</div>
|
100 |
</div>
|
101 |
-
|
102 |
-
# """
|
103 |
|
104 |
REVIEW_TEXT = """**If a request should be reviewed or dropped submit its id here/ إذا كان يجب مراجعة أو حذف طلب، أدخل رقمه هنا:**"""
|
|
|
1 |
INTRO_TEXT_EN = """
|
2 |
<div style="text-align: left;">
|
3 |
+
Nt3awnou نتعاونو is 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 a designated number. 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:nt3awnoumorocco@gmail.com">nt3awnoumorocco@gmail.com</a> or via Instagram <a href="https://www.instagram.com/nt3awnou_morocco/">@nt3awnou_morocco</a> <br>
|
|
|
12 |
"""
|
13 |
|
14 |
INTRO_TEXT_AR = """
|
15 |
+
<div style="text-align: right;">
|
16 |
|
17 |
+
نتعاونو هي منصة تعاونية لمساعدة الأفراد المتضررين من الزلزال الأخير في المغرب. مهمتنا هي تسهيل تقديم المساعدة في الوقت المناسب و بفاعلية و تنظيم لجميع المتضررين. كيفاش؟ كنعاونو الناس لي محتاجين للمساعدة إعلمونا بمكانهم و نوع المساعدة لي محتاجين ليها سواء عن طريق ملأ الاستمارة أو عن طريق إرسال تسجيل صوتي عبر واتساب إلى رقم مخصص. بعد معالجة هاد المعلومات، كنجمعوهم فخريطة كتمكن الجمعيات من تنظيم و استهداف تدخلاتهم بدقة باش توصل المساعدة للناس لي محتاجين في وقت أسرع. و كل جمعية قامت باللازم في منطقة معينة تقدر تعلمنا عن طريق ملأ استمارة مخصصة لهاد الأمر. هاد المعلومات كذلك كتضاف للخريطة باش باقي الجمعيات يتاجهو لمناطق أخرى مازال ماوصلاتهم مساعدة.
|
18 |
<br> تحذير : نظرا لخطورة الطرقان بسبب الحجر اللي كيطيح من الجبال، ننصح المتطوعين اللي بغاو يساعدو ��لمناطق المتضررة يتبرعو عن طريق الجمعيات المختصة⚠️
|
19 |
<br>
|
20 |
<br>
|
|
|
27 |
</div>
|
28 |
<br>
|
29 |
"""
|
30 |
+
|
31 |
INTRO_TEXT_FR = """
|
32 |
<div style="text-align: left;">
|
33 |
+
Nt3awnou نتعاونو est une plateforme collaborative 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 désigné. 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>
|
|
|
48 |
</div>
|
49 |
"""
|
50 |
|
51 |
+
HEADERS_MAPPING = {
|
52 |
+
"إغاثة" : "Rescue | إغاثة | Secours",
|
53 |
+
"مساعدة طبية": "Medical Assistance | مساعدة طبية | Assistance médicale",
|
54 |
+
"مأوى": "Shelter | مأوى | Abri",
|
55 |
+
"طعام وماء": "Food & Water | طعام وماء | Nourriture et eau",
|
56 |
+
"مخاطر (تسرب الغاز، تلف في الخدمات العامة...)": "Danger | مخاطر (تسرب الغاز، تلف في الخدمات العامة...) | Danger",
|
57 |
+
}
|
58 |
+
|
59 |
+
COLOR_MAPPING = {
|
60 |
+
"إغاثة": "red",
|
61 |
+
"مساعدة طبية": "orange",
|
62 |
+
"مأوى": "beige",
|
63 |
+
"طعام وماء": "blue",
|
64 |
+
"مخاطر (تسرب الغاز، تلف في الخدمات العامة...)": "gray",
|
65 |
+
}
|
66 |
+
|
67 |
+
ICON_MAPPING = {
|
68 |
+
"إغاثة": "bell", # life ring icon for rescue
|
69 |
+
"مساعدة طبية": "heart", # medical kit for medical assistance
|
70 |
+
"مأوى": "home", # home icon for shelter
|
71 |
+
"طعام وماء": "cutlery", # cutlery (fork and knife) for food & water
|
72 |
+
"مخاطر (تسرب الغاز، تلف في الخدمات العامة...)": "Warning" # warning triangle for dangers
|
73 |
+
}
|
74 |
|
75 |
CREDITS_TEXT = """
|
76 |
<hr>
|
77 |
<div style="text-align: center;">
|
78 |
<p>By <b>Moroccans</b> for <b>Moroccans</b> 🤝</p>
|
79 |
+
<p>Bot powered by <a href="https://www.annarabic.com/">Annarabic</a></p>
|
80 |
+
<p>Collaboration made possible thanks to <a href="https://summerschool.morocco.ai/">AI Summer School</a></p>
|
81 |
"""
|
82 |
|
83 |
LOGO = """
|
|
|
86 |
padding-top: 1rem;
|
87 |
padding-bottom: 0rem;
|
88 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
</style>
|
90 |
+
<div style="text-align: center;">
|
91 |
+
<img src="https://storage.googleapis.com/storage-annarabic/Nt3awnou(1).png" width="200" height="200">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
92 |
</div>
|
93 |
+
"""
|
|
|
94 |
|
95 |
REVIEW_TEXT = """**If a request should be reviewed or dropped submit its id here/ إذا كان يجب مراجعة أو حذف طلب، أدخل رقمه هنا:**"""
|
src/utils.py
CHANGED
@@ -1,78 +1,69 @@
|
|
1 |
-
import re
|
2 |
-
from typing import Union
|
3 |
import folium
|
4 |
import pandas as pd
|
5 |
from folium import plugins
|
6 |
-
|
|
|
7 |
|
8 |
EPICENTER_LOCATION = [31.12210171476489, -8.42945837915193]
|
9 |
BORDER_COLOR = "black"
|
10 |
|
11 |
-
# @st.cache_resource
|
12 |
def parse_gg_sheet(url):
|
13 |
-
print("Parsing Google Sheet:", url)
|
14 |
url = url.replace("edit#gid=", "export?format=csv&gid=")
|
15 |
df = pd.read_csv(url, on_bad_lines="warn")
|
16 |
return df
|
17 |
|
18 |
-
@st.cache_resource
|
19 |
-
def parse_json_file(url):
|
20 |
-
df = pd.read_json(url)
|
21 |
-
df = pd.json_normalize(df.douars)
|
22 |
-
return df
|
23 |
|
24 |
-
def is_request_in_list(request, selection_list
|
25 |
if isinstance(request, float): # Check if the input is a float (like NaN)
|
26 |
return False
|
27 |
-
|
28 |
if "," in request:
|
29 |
all_requests = [r.strip() for r in request.split(",")]
|
30 |
else:
|
31 |
all_requests = [request]
|
|
|
32 |
|
33 |
-
# If at least one of the requests is not in the options or in the selection list, return True
|
34 |
-
for r in all_requests:
|
35 |
-
if r not in options:
|
36 |
-
return True
|
37 |
-
if r in selection_list:
|
38 |
-
return True
|
39 |
-
return False
|
40 |
|
41 |
-
def
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
"""Add a latlng column to the dataframe"""
|
43 |
-
|
44 |
-
df["latlng"] = df[process_column].apply(parse_latlng)
|
45 |
-
elif isinstance(process_column, int):
|
46 |
-
df["latlng"] = df.iloc[:, process_column].apply(parse_latlng)
|
47 |
-
else:
|
48 |
-
raise ValueError(f"process_column should be a string or an integer, got {type(process_column)}")
|
49 |
return df
|
50 |
|
51 |
# parse latlng (column 4) to [lat, lng]
|
|
|
52 |
def parse_latlng(latlng):
|
53 |
if pd.isna(latlng):
|
54 |
return None
|
55 |
-
|
56 |
-
#
|
57 |
-
if latlng.count(',') > 2:
|
58 |
-
d1, d2, d3, d4 = latlng.split(",")[:4]
|
59 |
-
return [float(".".join([d1, d2])), float(".".join([d3, d4]))]
|
60 |
|
61 |
-
|
62 |
-
if
|
63 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
return [float(".".join([d1, d2])), float(".".join([d3, d4]))]
|
65 |
-
|
66 |
-
# case where there is only one comma 30,98 , -7,10
|
67 |
-
lat, lng = latlng.split(",")[:2]
|
68 |
-
# remove anything that is not a digit or a dot or a minus sign
|
69 |
-
lat = re.sub(r"[^\d\.\-]", "", lat)
|
70 |
-
lng = re.sub(r"[^\d\.\-]", "", lng)
|
71 |
-
return [float(lat), float(lng)]
|
72 |
-
|
73 |
except Exception as e:
|
74 |
print(f"Error parsing latlng: {latlng} Reason: {e}")
|
75 |
return None
|
|
|
|
|
76 |
|
77 |
def add_epicentre_to_map(fg):
|
78 |
# Removed the spinner to not confuse the users as the map is already loaded
|
@@ -83,16 +74,16 @@ def add_epicentre_to_map(fg):
|
|
83 |
text_color='white'
|
84 |
)
|
85 |
|
86 |
-
fg.add_child(folium.Marker(location=EPICENTER_LOCATION,
|
87 |
-
# popup="Epicenter مركز الزلزال",
|
88 |
tooltip="Epicenter مركز الزلزال",
|
89 |
icon=icon_epicentre))
|
90 |
-
|
91 |
|
92 |
|
93 |
def add_danger_distances_to_map(map_obj):
|
94 |
Danger_Distances_group = folium.FeatureGroup(name='Danger distances - earthquake magnitude 7 | مسافات الخطر - قوة الزلازل 7').add_to(map_obj)
|
95 |
-
|
96 |
zones = [
|
97 |
{"radius": 100000, "fill_opacity": 0.1, "weight": 1, "fill_color": "yellow", "tooltip": "50 to 100 km - Moderate risk area | منطقة خطر معتدلة"},
|
98 |
{"radius": 50000, "fill_opacity": 0.1, "weight": 1, "fill_color": "orange", "tooltip": "30 to 50 km - High risk zone | منطقة عالية المخاطر"},
|
@@ -113,55 +104,6 @@ def add_danger_distances_to_map(map_obj):
|
|
113 |
).add_to(Danger_Distances_group)
|
114 |
|
115 |
|
116 |
-
def add_village_names(douar_df, map_obj):
|
117 |
-
village_fgroup = folium.FeatureGroup(name='🔵 All the Villages / جميع القرى', show=False).add_to(map_obj)
|
118 |
-
|
119 |
-
for _, row in douar_df.iterrows():
|
120 |
-
lat = row['lat']
|
121 |
-
lng = row['lng']
|
122 |
-
lat_lng = (lat, lng)
|
123 |
-
dour_name = row['name'].capitalize()
|
124 |
-
maps_url = f"https://maps.google.com/?q={lat_lng}"
|
125 |
-
display_text = f'<br><b>⛰️ Douar:</b> {dour_name}<br><a href="{maps_url}" target="_blank" rel="noopener noreferrer"><b>🧭 Google Maps</b></a>'
|
126 |
-
|
127 |
-
folium.CircleMarker(
|
128 |
-
location=[lat, lng],
|
129 |
-
radius=0.1,
|
130 |
-
tooltip = dour_name, # we might remove the tooltip to avoid crowding the map
|
131 |
-
popup=folium.Popup(display_text, max_width=200),
|
132 |
-
color= "#0046C8",
|
133 |
-
opacity = 0.7
|
134 |
-
).add_to(village_fgroup)
|
135 |
-
|
136 |
-
|
137 |
-
def init_intervention_fgs(m):
|
138 |
-
intervention_fgs = {}
|
139 |
-
|
140 |
-
fg_done = folium.FeatureGroup(name="Done ✅", show=True).add_to(m)
|
141 |
-
fg_planned = folium.FeatureGroup(name="Planned ⏳", show=True).add_to(m)
|
142 |
-
fg_partial = folium.FeatureGroup(name="Partial 📝", show=True).add_to(m)
|
143 |
-
|
144 |
-
intervention_fgs["Done ✅"] = fg_done
|
145 |
-
intervention_fgs["Planned ⌛"] = fg_planned
|
146 |
-
intervention_fgs["Partial 📝"] = fg_partial
|
147 |
-
|
148 |
-
return intervention_fgs
|
149 |
-
|
150 |
-
|
151 |
-
def init_emergency_fgs(m):
|
152 |
-
emergency_fgs = {}
|
153 |
-
|
154 |
-
fg_high = folium.FeatureGroup(name=_("High Emergency 🔴"), show=True).add_to(m)
|
155 |
-
fg_medium = folium.FeatureGroup(name=_("Medium Emergency 🟠"), show=True).add_to(m)
|
156 |
-
fg_low = folium.FeatureGroup(name=_("Low Emergency 🟡"), show=True).add_to(m)
|
157 |
-
|
158 |
-
emergency_fgs["High"] = fg_high
|
159 |
-
emergency_fgs["Medium"] = fg_medium
|
160 |
-
emergency_fgs["Low"] = fg_low
|
161 |
-
|
162 |
-
return emergency_fgs
|
163 |
-
|
164 |
-
|
165 |
def init_map():
|
166 |
m = folium.Map(
|
167 |
location=[31.228674, -7.992047],
|
@@ -203,8 +145,6 @@ def init_map():
|
|
203 |
# Add danger zones
|
204 |
add_epicentre_to_map(m)
|
205 |
add_danger_distances_to_map(m)
|
206 |
-
emergency_fgs = init_emergency_fgs(m)
|
207 |
-
intervention_fgs = init_intervention_fgs(m)
|
208 |
|
209 |
# Add a LayerControl to the map to toggle between layers (Satellite View and Default One)
|
210 |
folium.LayerControl().add_to(m)
|
@@ -217,4 +157,6 @@ def init_map():
|
|
217 |
strings={"title": "My location | موقعي", "popup": "My location | موقعي"},
|
218 |
).add_to(m)
|
219 |
|
220 |
-
|
|
|
|
|
|
|
|
|
|
1 |
import folium
|
2 |
import pandas as pd
|
3 |
from folium import plugins
|
4 |
+
from src.map_utils import legend_macro
|
5 |
+
|
6 |
|
7 |
EPICENTER_LOCATION = [31.12210171476489, -8.42945837915193]
|
8 |
BORDER_COLOR = "black"
|
9 |
|
|
|
10 |
def parse_gg_sheet(url):
|
|
|
11 |
url = url.replace("edit#gid=", "export?format=csv&gid=")
|
12 |
df = pd.read_csv(url, on_bad_lines="warn")
|
13 |
return df
|
14 |
|
|
|
|
|
|
|
|
|
|
|
15 |
|
16 |
+
def is_request_in_list(request, selection_list):
|
17 |
if isinstance(request, float): # Check if the input is a float (like NaN)
|
18 |
return False
|
|
|
19 |
if "," in request:
|
20 |
all_requests = [r.strip() for r in request.split(",")]
|
21 |
else:
|
22 |
all_requests = [request]
|
23 |
+
return any([r in selection_list for r in all_requests])
|
24 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
|
26 |
+
def marker_request(request):
|
27 |
+
# in case of multiple requests we use the first one for the marker's icon
|
28 |
+
# requests are already sorted by priority from the form
|
29 |
+
try:
|
30 |
+
displayed_request = request.split(',')[0]
|
31 |
+
except:
|
32 |
+
displayed_request = request
|
33 |
+
return displayed_request
|
34 |
+
|
35 |
+
|
36 |
+
def add_latlng_col(df, process_column):
|
37 |
"""Add a latlng column to the dataframe"""
|
38 |
+
df = df.assign(latlng=df.iloc[:, process_column].apply(parse_latlng))
|
|
|
|
|
|
|
|
|
|
|
39 |
return df
|
40 |
|
41 |
# parse latlng (column 4) to [lat, lng]
|
42 |
+
import re
|
43 |
def parse_latlng(latlng):
|
44 |
if pd.isna(latlng):
|
45 |
return None
|
46 |
+
# lat, lng = latlng.split(",")
|
47 |
+
# return [float(lat), float(lng)]
|
|
|
|
|
|
|
48 |
|
49 |
+
try:
|
50 |
+
# check if it matches (30.9529832, -7.1010705) or (30.9529832,-7.1010705)
|
51 |
+
if re.match(r"\(\d+\.\d+,\s?-\d+\.\d+\)", latlng):
|
52 |
+
lat, lng = latlng[1:-1].split(",")
|
53 |
+
return [float(lat), float(lng)]
|
54 |
+
# check of it matches 30.9529832, -7.1010705 or 30.9529832,-7.1010705
|
55 |
+
elif re.match(r"\d+\.\d+,\s?-\d+\.\d+", latlng):
|
56 |
+
lat, lng = latlng.split(",")
|
57 |
+
return [float(lat), float(lng)]
|
58 |
+
# check if it matches 30,9529832, -7,1010705 or 30,9529832,-7,1010705, match1=30,9529832 and match2=-7,1010705
|
59 |
+
elif re.match(r"\d+,\d+,\s?-\d+,\d+", latlng):
|
60 |
+
d1, d2, d3, d4 = latlng.split(",")
|
61 |
return [float(".".join([d1, d2])), float(".".join([d3, d4]))]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
except Exception as e:
|
63 |
print(f"Error parsing latlng: {latlng} Reason: {e}")
|
64 |
return None
|
65 |
+
print(f"Error parsing latlng: {latlng}")
|
66 |
+
return None
|
67 |
|
68 |
def add_epicentre_to_map(fg):
|
69 |
# Removed the spinner to not confuse the users as the map is already loaded
|
|
|
74 |
text_color='white'
|
75 |
)
|
76 |
|
77 |
+
fg.add_child(folium.Marker(location=EPICENTER_LOCATION,
|
78 |
+
# popup="Epicenter مركز الزلزال",
|
79 |
tooltip="Epicenter مركز الزلزال",
|
80 |
icon=icon_epicentre))
|
81 |
+
|
82 |
|
83 |
|
84 |
def add_danger_distances_to_map(map_obj):
|
85 |
Danger_Distances_group = folium.FeatureGroup(name='Danger distances - earthquake magnitude 7 | مسافات الخطر - قوة الزلازل 7').add_to(map_obj)
|
86 |
+
|
87 |
zones = [
|
88 |
{"radius": 100000, "fill_opacity": 0.1, "weight": 1, "fill_color": "yellow", "tooltip": "50 to 100 km - Moderate risk area | منطقة خطر معتدلة"},
|
89 |
{"radius": 50000, "fill_opacity": 0.1, "weight": 1, "fill_color": "orange", "tooltip": "30 to 50 km - High risk zone | منطقة عالية المخاطر"},
|
|
|
104 |
).add_to(Danger_Distances_group)
|
105 |
|
106 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
107 |
def init_map():
|
108 |
m = folium.Map(
|
109 |
location=[31.228674, -7.992047],
|
|
|
145 |
# Add danger zones
|
146 |
add_epicentre_to_map(m)
|
147 |
add_danger_distances_to_map(m)
|
|
|
|
|
148 |
|
149 |
# Add a LayerControl to the map to toggle between layers (Satellite View and Default One)
|
150 |
folium.LayerControl().add_to(m)
|
|
|
157 |
strings={"title": "My location | موقعي", "popup": "My location | موقعي"},
|
158 |
).add_to(m)
|
159 |
|
160 |
+
# Macro to add legend
|
161 |
+
m.get_root().add_child(legend_macro)
|
162 |
+
return m
|