e-bug commited on
Commit
9b0a8c5
·
verified ·
1 Parent(s): a3cf7ef

Upload 31 files

Browse files
config/settings.py ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ from dotenv import load_dotenv
2
+ import os
3
+
4
+ load_dotenv()
5
+
6
+ HF_API_TOKEN = os.getenv("HF_API_TOKEN")
7
+ HF_DATASET_NAME = os.getenv("HF_DATASET_NAME")
8
+ LOCAL_DS_DIRECTORY_PATH = os.getenv("LOCAL_DS_DIRECTORY_PATH")
data/concepts.json ADDED
The diff for this file is too large to render. See raw diff
 
data/guidelines/USA/English/instructions.md ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## Instructions
2
+ ### Images
3
+ - The main concept should be clearly visible in the image in typical contexts where the chosen object would appear in real life. Other objects should preferably be visible too.
4
+ - Photos should be representative of your culture and population (eg. people should look like the people from your ethnicity group).
5
+ - Images should NOT have empty backgrounds NOR watermarks.
6
+ - The complexity of the image will contribute to the interestingness of the description.
7
+ - You can blur all/selected faces before submitting your image. Once submitted, faces cannot be deblurred (you can still, however, re-upload the image if you want to).
8
+ - If you don’t have personal pictures for a concept, please use public images:
9
+ - [Google images](images.google.com)
10
+
11
+ - When searching on images.google.com, you can click on “Tools” → “Usage rights” → “Creative Commons licenses”
12
+ - When you then click on an image, you can find the license information in the “License details” in the panel on the right, just below the image
13
+ - Valid licenses are: Public domain, CC0, CC BY, CC BY-SA
14
+ - [Unsplash](https://unsplash.com/s/photos/sunrise?license=free)
15
+
16
+ - After searching for a concept, you can click on “License” → “Free”
17
+ - Alternatively, you can add the license information in the URL (eg. for “sunrise” concept): [https://unsplash.com/s/photos/sunrise?license=free](https://unsplash.com/s/photos/sunrise?license=free)
18
+ - [Pexels](https://www.pexels.com/)
19
+
20
+ - All content is for free
21
+ - [Freepik](https://www.freepik.com/search?format=search&last_filter=selection&last_value=1&query=sunrise&selection=1)
22
+
23
+ - You can choose a “Free” license in the left panel after you search
24
+ - Example search: https://www.freepik.com/search?format=search&last_filter=selection&last_value=1&query=sunrise&selection=1
25
+ ### Descriptions
26
+ #### Overall
27
+ - Avoid using redundant phrases such as “This is an image of.” However, it is okay to specify the medium, such as “A Painting of.”
28
+ - Check spelling, grammar, and punctuation.
29
+ - Relevant text within the image should be completely transcribed within “quotation marks.” For example, if the picture features a person holding a sign, the short caption might be: A woman holding a “Stop war” sign
30
+ - Start the description with the elements that are critical to understanding the image. This is typically the first thing that strikes you about an image.
31
+ - Do not mention people’s names. For example, “Taylor Swift” → “A blonde, female singer.”
32
+ #### Steps
33
+ - Start with high-level context, and then drill down to details that enhance understanding (ie., What makes this image unique or interesting to look at?).
34
+ - Describe the scale of the elements within the frame (eg., “small”) and use the relational size of objects or persons to one another (eg., “larger than”).
35
+ - Identify the color of key elements using familiar names of colors: red, blue, yellow, etc.
36
+ - Describe the orientation and relationships of image elements to one another. For instance, “on the right” or “to the right of the door.”
37
+ #### Details
38
+ - The following guidelines support the description of human physicality:
39
+ - When particular features are immediately noticeable, they should be described (eg., “a person in a wheelchair”).
40
+ - It can also be helpful to include information about their body type/build.
41
+ - Describe the age of represented people in an image using terminology such as “baby,” “child,” “young person,” “adult,” “older person,” etc.
42
+ - When relevant, describe the skin tone of a person using non-ethnic terms such as “light-skinned” or “dark-skinned” when clearly visible.
43
+ - When it comes to animals, species name or breed name (eg., “capybara” or “husky”) are preferred over generic concepts (eg., “dog”).
44
+ - You can mention names of places but also include their common name, especially when not popular. For example, “.. in front of the London Eye” → “... in front of the London Eye, a renowned ferris wheel in London.”
data/guidelines/USA/English/intro.md ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Wonders: Multicultural Images and Captions for Inclusive AI
2
+
3
+ **Help us bridge the gap between generic AI in English and multicultural AI for everyone!**
4
+
5
+ We are researchers from TODO universities around the world, and we need your help to collect images and captions of typical aspects from your culture. This data will improve the next generation of AI models for your country and language!
6
+
7
+
8
+ If you enter your your email and a password below, you will be able revise your images and captions (eg. upload the image from your phone and later write the captions from your laptop).
9
+
10
+ At the end of our data collection campaign, we will use emails and passwords to create a list of all contributors and provide rewards to the best ones. For details, see our website (TODO).
11
+
12
+ If your country/language is missing, please reach out to us at [[email protected]](mailto:[email protected]).
data/guidelines/USA/English/task.md ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Wonders: Multicultural Images and Captions for Inclusive AI
2
+
3
+ We want to collect images and annotations that are relevant for your culture.
4
+ - **Main concept:** Choose the main category and concept for which you want to share data. You can type a new concept if it’s culturally relevant and missing from our list.
5
+ - **Image:** An image where the *main concept is clearly visible*. The image needs to (1) show the concept *in typical contexts* where it can be found in your country, and (2) *include other* objects/people whenever possible. *Pictures taken by yourself* are preferred. Otherwise, please add a URL for publicly-licensed images from the Web (e.g., from pexels.com or freepik.com). For more details, see “Instructions” below.
6
+ - **Description:** A long description (around 40 words) that provides extensive and detailed visual information. Descriptions must be *objective*: focus on how you would describe the image to someone who can’t see it, without adding your own opinions/speculations. The text needs to *include the main concept* and describes the content of the image in detail by including:
7
+ - **Who?** The visual *appearance* and observable *emotions* (e.g., “is smiling”) of persons and animals.
8
+ - **What?** The *actions* performed in the image.
9
+ - **Where?** The *setting* of the image, including the size, color and relationships between objects.
10
+ - **(Optional) Other concepts:** Tag any other concept that is visible in the image.
11
+
12
+ See some examples of data we want to collect at the bottom of the page.
13
+
14
+ For detailed guidelines, click on the “Instructions” button below.
15
+
16
+ ### Notes
17
+ - By participating in this task, you agree to donate images and captions under [CC BY license](https://creativecommons.org/licenses/by/4.0/), which will allow us to share the data with others to improve AI.
18
+ - You will be able to **update or remove** any provided data at any time if you wish so.
19
+ - Participants that provide more data, across more concepts and of high quality (see "Instructions" button) will be **rewarded** (see TODO).
data/guidelines/_Colombia/Spanish/instructions.md ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## Instrucciones
2
+ ### Imágenes
3
+ - El concepto principal debe ser claramente visible en la imagen en contextos típicos donde ese objeto aparecería en la vida real. Se recomienda que haya otros objetos visibles también.
4
+ - Las fotos deben ser representativas de tu cultura y población (por ejemplo, las personas deben parecerse a las de tu grupo étnico).
5
+ - Las imágenes NO deben tener fondos vacíos NI marcas de agua.
6
+ - La complejidad de la imagen contribuye al nivel de interés de la descripción.
7
+ - Puedes difuminar todas o algunas caras antes de enviar la imagen. Una vez enviada, no se pueden recuperar las caras sin difuminar (sin embargo, puedes volver a subir la imagen si lo deseas).
8
+ - Si no tienes fotos personales del concepto, puedes usar imágenes públicas:
9
+ - Google Imágenes
10
+ - Al buscar en images.google.com, haz clic en “Herramientas” → “Derechos de uso” → “Licencias Creative Commons”
11
+ - Al hacer clic en una imagen, puedes ver la información de la licencia en “Detalles de la licencia” en el panel derecho, justo debajo de la imagen
12
+ - Licencias válidas: Dominio público, CC0, CC BY, CC BY-SA
13
+ - Unsplash
14
+ - Después de buscar un concepto, haz clic en “Licencia” → “Gratis”
15
+ - Alternativamente, puedes añadir la información de licencia en la URL (por ejemplo, para el concepto “amanecer”): [https://unsplash.com/s/photos/sunrise?license=free](https://unsplash.com/s/photos/sunrise?license=free)
16
+ - [https://www.pexels.com/](https://www.pexels.com/)
17
+ - Todo el contenido es gratuito
18
+ - [https://www.freepik.com/](https://www.freepik.com/)
19
+ - Puedes elegir la licencia “Gratis” en el panel izquierdo después de buscar
20
+ - Ejemplo de búsqueda: [https://www.freepik.com/search?format=search&last_filter=selection&last_value=1&query=sunrise&selection=1](https://www.freepik.com/search?format=search&last_filter=selection&last_value=1&query=sunrise&selection=1)
21
+ ### Descripciones
22
+ #### En general
23
+ - Evita frases redundantes como “Esta es una imagen de.” Sin embargo, está bien especificar el medio, como “Una pintura de.”
24
+ - Revisa ortografía, gramática y puntuación.
25
+ - Todo texto relevante que aparezca en la imagen debe ser transcrito entre “comillas”. Por ejemplo, si la imagen muestra a una persona con un cartel, la descripción corta podría ser: Una mujer sosteniendo un cartel que dice “No a la guerra”.
26
+ - Comienza la descripción con los elementos que sean clave para entender la imagen. Normalmente es lo primero que llama la atención.
27
+ - No menciones nombres de personas. Por ejemplo, “Taylor Swift” → “Una cantante rubia”.
28
+ #### Pasos
29
+ - Comienza con un contexto general y luego describe detalles que mejoren la comprensión (por ejemplo: ¿Qué hace que esta imagen sea única o interesante?).
30
+ - Describe la escala de los elementos en la imagen (por ejemplo, “pequeño”) y el tamaño relativo entre objetos o personas (por ejemplo, “más grande que”).
31
+ - Identifica el color de los elementos clave usando nombres comunes de colores: rojo, azul, amarillo, etc.
32
+ - Describe la orientación y relaciones entre elementos de la imagen. Por ejemplo, “a la derecha” o “a la derecha de la puerta”.
33
+ #### Detalles
34
+ - Las siguientes pautas apoyan la descripción de características humanas:
35
+ - Cuando ciertos rasgos sean inmediatamente notorios, deben ser descritos (por ejemplo, “una persona en silla de ruedas”).
36
+ - También es útil incluir información sobre el tipo de cuerpo o contextura.
37
+ - Describe la edad de las personas en la imagen usando términos como “bebé,” “niño/a,” “persona joven,” “adulto/a,” “persona mayor,” etc.
38
+ - Cuando sea relevante, describe el tono de piel usando términos no étnicos como “de piel clara” o “de piel oscura” si es claramente visible.
39
+ - Para animales, es preferible usar el nombre de la especie o raza (por ejemplo, “capibara” o “husky”) en lugar de conceptos genéricos como “perro”.
40
+ - Puedes mencionar nombres de lugares, pero incluye también su nombre común si no es conocido. Por ejemplo, “... frente al London Eye” → “... frente al London Eye, una famosa rueda de la fortuna en Londres.”
data/guidelines/_Colombia/Spanish/intro.md ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Wonders: Imágenes y Descripciones Multiculturales para una IA Inclusiva
2
+
3
+ **¡Ayúdanos a cerrar la brecha entre una IA genérica en inglés y una IA multicultural para todos!**
4
+
5
+ Somos investigadores de distintas universidades alrededor del mundo, y necesitamos tu ayuda para recolectar imágenes y descripciones de aspectos típicos de tu cultura. ¡Estos datos ayudarán a mejorar la próxima generación de modelos de IA para tu país e idioma!
6
+
7
+ Si ingresas tu correo electrónico y una contraseña a continuación, podrás revisar tus imágenes y descripciones (por ejemplo, subir la imagen desde tu celular y luego escribir la descripción desde tu computador portátil).
8
+
9
+ Al finalizar nuestra campaña de recolección de datos, utilizaremos los correos electrónicos y contraseñas para crear una lista de todas las personas que contribuyeron y entregar recompensas a las mejores. Para más detalles, visita nuestro sitio web (TODO).
10
+
11
+ Si tu país o idioma no aparece en la lista, por favor contáctanos a [[email protected]](mailto:[email protected]).
data/guidelines/_Colombia/Spanish/task.md ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Wonders: Imágenes y Descripciones Multiculturales para una IA Inclusiva
2
+
3
+ Queremos recolectar imágenes y anotaciones que sean relevantes para tu cultura.
4
+ - **Concepto principal:** Elige la categoría y el concepto principal sobre los cuales deseas compartir datos. Puedes escribir un nuevo concepto si es culturalmente relevante y no aparece en nuestra lista.
5
+ - **Imagen:** Una imagen donde el *concepto principal sea claramente visible*. La imagen debe (1) mostrar el concepto *en contextos típicos* en los que se encuentra en tu país, y (2) *incluir otros* objetos/personas siempre que sea posible. *Se prefieren las fotos tomadas por ti*. Si no las tienes, por favor agrega un enlace a imágenes con licencia pública en la web (por ejemplo, de pexels.com o freepik.com). Para más detalles, consulta la sección de “Instrucciones” abajo.
6
+ - **Otros conceptos:** Etiqueta cualquier otro concepto visible en la imagen.
7
+ - **Descripción:** Una descripción larga (alrededor de 40 palabras) que brinde información visual extensa y detallada. Las descripciones deben ser *objetivas*: enfócate en cómo describirías la imagen a alguien que no puede verla, sin añadir opiniones o suposiciones personales. El texto debe *incluir el concepto principal* y describir el contenido de la imagen en detalle, incluyendo:
8
+ - **¿Quién?** La *apariencia visual* y las *emociones observables* (por ejemplo, “está sonriendo”) de personas y animales.
9
+ - **¿Qué?** Las *acciones* que se realizan en la imagen.
10
+ - **¿Dónde?** El *entorno* de la imagen, incluyendo tamaño, color y relaciones entre objetos.
11
+
12
+ Consulta algunos ejemplos de los datos que queremos recolectar al final de esta página.
13
+
14
+ Para ver las directrices detalladas, haz clic en el botón de “Instrucciones” más abajo.
15
+
16
+ ### Notas
17
+ - Al participar en esta tarea, aceptas donar imágenes y descripciones bajo la [licencia CC BY](https://creativecommons.org/licenses/by/4.0/), lo cual nos permitirá compartir los datos con otros para mejorar la IA.
18
+ - Puedes eliminar cualquier dato que hayas proporcionado en cualquier momento si así lo deseas.
data/guidelines/_France/French/instructions.md ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## Instructions
2
+ ### Images
3
+ - Le concept principal doit être clairement visible sur l’image dans des contextes typiques où cet objet apparaît dans la vie réelle. D’autres objets peuvent aussi être visibles.
4
+ - Les photos doivent représenter votre culture et votre population (par exemple, les personnes doivent ressembler à celles de votre groupe ethnique).
5
+ - Les images ne doivent PAS avoir de fonds vides ni de filigranes.
6
+ - La complexité de l’image contribue à l’intérêt de la description.
7
+ - Vous pouvez flouter tout ou partie des visages avant de soumettre l’image. Une fois soumise, l’image ne pourra plus être "dé-floutée" (vous pourrez néanmoins la remplacer).
8
+ - Si vous ne possédez pas d’images personnelles pour un concept, utilisez des images libres de droit :
9
+ - Google Images
10
+ - Sur images.google.com, cliquez sur “Outils” → “Droits d’usage” → “Licences Creative Commons”
11
+ - Cliquez sur une image pour voir les “Détails de la licence” dans le panneau de droite, sous l’image
12
+ - Licences valides : Domaine public, CC0, CC BY, CC BY-SA
13
+ - Unsplash
14
+ - Après avoir cherché un concept, cliquez sur “Licence” → “Gratuite”
15
+ - Ou bien ajoutez `?license=free` à l’URL (ex. pour “lever de soleil”) : [https://unsplash.com/s/photos/sunrise?license=free](https://unsplash.com/s/photos/sunrise?license=free)
16
+ - [https://www.pexels.com/](https://www.pexels.com/)
17
+ - Tout le contenu est gratuit
18
+ - [https://www.freepik.com/](https://www.freepik.com/)
19
+ - Choisissez “Gratuit” dans le panneau gauche après la recherche
20
+ - Exemple de recherche : [https://www.freepik.com/search?format=search&last_filter=selection&last_value=1&query=sunrise&selection=1](https://www.freepik.com/search?format=search&last_filter=selection&last_value=1&query=sunrise&selection=1)
21
+ ### Descriptions
22
+ #### Généralités
23
+ - Évitez les phrases redondantes comme “Ceci est une image de”. Cependant, indiquer le support (ex. “Une peinture de…”) est autorisé.
24
+ - Vérifiez l’orthographe, la grammaire et la ponctuation.
25
+ - Le texte visible dans l’image doit être retranscrit entre “guillemets”. Exemple : Une femme tenant une pancarte “Stop à la guerre”.
26
+ - Commencez par les éléments essentiels pour comprendre l’image — ce qui attire d’abord le regard.
27
+ - Ne mentionnez pas les noms de personnes célèbres. Exemple : “Taylor Swift” → “Une chanteuse blonde”.
28
+ #### Étapes
29
+ - Commencez par un contexte global, puis ajoutez des détails qui enrichissent la compréhension (Qu’est-ce qui rend cette image intéressante ?).
30
+ - Décrivez la taille des éléments (ex. “petit”) et les proportions entre eux (ex. “plus grand que”).
31
+ - Utilisez des noms de couleurs simples : rouge, bleu, jaune, etc.
32
+ - Décrivez l’orientation et les relations spatiales entre éléments : “à droite”, “devant la porte”, etc.
33
+ #### Détails
34
+ - Pour décrire les personnes :
35
+ - Si une caractéristique est immédiatement visible, mentionnez-la (ex. “une personne en fauteuil roulant”).
36
+ - Donnez des informations sur la corpulence si pertinent.
37
+ - Décrivez l’âge approximatif avec des termes comme “bébé”, “enfant”, “jeune”, “adulte”, “personne âgée”.
38
+ - Si pertinent, décrivez la carnation de manière neutre : “peau claire”, “peau foncée”.
39
+ - Pour les animaux, précisez l’espèce ou la race (ex. “capybara” ou “husky”) plutôt que des termes génériques comme “chien”.
40
+ - Vous pouvez mentionner des lieux, mais précisez-les si peu connus : “... devant le London Eye, une célèbre grande roue à Londres.”
data/guidelines/_France/French/intro.md ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Wonders : Images et légendes multiculturelles pour une IA inclusive
2
+
3
+ **Aidez-nous à combler le fossé entre une IA générique en anglais et une IA multiculturelle pour tous !**
4
+
5
+ Nous sommes des chercheurs d’universités du monde entier et nous avons besoin de votre aide pour collecter des images et des descriptions d’aspects typiques de votre culture. Ces données permettront d’améliorer la prochaine génération de modèles d’IA pour votre pays et votre langue !
6
+
7
+ Si vous saisissez votre adresse email et un mot de passe ci-dessous, vous pourrez revoir vos images et légendes (par exemple, télécharger l’image depuis votre téléphone et plus tard écrire les descriptions depuis votre ordinateur).
8
+
9
+ À la fin de notre campagne de collecte de données, nous utiliserons les adresses email et mots de passe pour établir une liste de tous les contributeurs et récompenser les meilleurs. Pour plus de détails, consultez notre site web (TODO).
10
+
11
+ Si votre pays ou langue est manquant(e), contactez-nous à [[email protected]](mailto:[email protected]).
data/guidelines/_France/French/task.md ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Wonders : Images et légendes multiculturelles pour une IA inclusive
2
+
3
+ Nous souhaitons collecter des images et des annotations qui sont pertinentes pour votre culture.
4
+ - **Concept principal :** Choisissez la catégorie et le concept principal que vous souhaitez partager. Vous pouvez également saisir un nouveau concept s’il est culturellement pertinent et absent de notre liste.
5
+ - **Image :** Une image où le *concept principal est clairement visible*. L’image doit (1) montrer le concept *dans des contextes typiques* de votre pays, et (2) *inclure d’autres* objets ou personnes si possible. *Les photos prises par vous-même sont préférées*. Sinon, veuillez ajouter l’URL d’une image sous licence publique (par exemple, de pexels.com ou freepik.com). Pour plus de détails, voir la section “Instructions” ci-dessous.
6
+ - **Autres concepts :** Identifiez tout autre concept visible sur l’image.
7
+ - **Description :** Une description longue (environ 40 mots) qui fournit des informations visuelles détaillées. Les descriptions doivent être *objectives* : décrivez l’image comme si vous la racontiez à une personne non voyante, sans y ajouter d’avis ou de suppositions. Le texte doit *inclure le concept principal* et décrire le contenu de manière précise, en répondant à :
8
+ - **Qui ?** L’*apparence visuelle* et les *émotions observables* (ex. “sourit”) des personnes et animaux.
9
+ - **Quoi ?** Les *actions* réalisées dans l’image.
10
+ - **Où ?** Le *contexte* de l’image, incluant la taille, les couleurs et les relations entre les objets.
11
+
12
+ Des exemples de données sont disponibles en bas de page.
13
+
14
+ Pour consulter les consignes détaillées, cliquez sur le bouton “Instructions” ci-dessous.
15
+
16
+ ### Remarques
17
+ - En participant à cette tâche, vous acceptez de céder les images et descriptions sous [licence CC BY](https://creativecommons.org/licenses/by/4.0/), ce qui nous permettra de partager ces données pour améliorer l’IA.
18
+ - Vous pourrez supprimer vos données à tout moment si vous le souhaitez.
data/guidelines/_Italy/Italian/instructions.md ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## Istruzioni
2
+ ### Immagini
3
+ - Il concetto principale deve essere chiaramente visibile nell’immagine, in contesti tipici in cui l’oggetto apparirebbe nella vita reale. È preferibile che siano presenti anche altri oggetti.
4
+ - Le foto devono rappresentare la tua cultura e popolazione (es. le persone dovrebbero assomigliare a quelle del tuo gruppo etnico).
5
+ - Le immagini NON devono avere sfondi vuoti NÉ filigrane.
6
+ - La complessità dell’immagine contribuirà a rendere la descrizione più interessante.
7
+ - Puoi sfocare tutti o alcuni volti prima dell’invio. Una volta inviata, l’immagine non può essere de-sfocata (ma puoi comunque ricaricare una nuova versione).
8
+ - Se non hai immagini personali, puoi usare risorse pubbliche:
9
+ - Google Immagini
10
+ - Su images.google.com clicca su “Strumenti” → “Diritti di utilizzo” → “Licenze Creative Commons”
11
+ - Cliccando sull’immagine trovi le informazioni sulla licenza in “Dettagli licenza” nel pannello a destra
12
+ - Licenze valide: dominio pubblico, CC0, CC BY, CC BY-SA
13
+ - Unsplash
14
+ - Dopo aver cercato un concetto, clicca su “Licenza” → “Gratis”
15
+ - Oppure aggiungi `?license=free` all’URL (es. per “alba”): [https://unsplash.com/s/photos/sunrise?license=free](https://unsplash.com/s/photos/sunrise?license=free)
16
+ - [https://www.pexels.com/](https://www.pexels.com/)
17
+ - Tutti i contenuti sono gratuiti
18
+ - [https://www.freepik.com/](https://www.freepik.com/)
19
+ - Seleziona “Free” nel pannello a sinistra dopo la ricerca
20
+ - Esempio di ricerca: [https://www.freepik.com/search?format=search&last_filter=selection&last_value=1&query=sunrise&selection=1](https://www.freepik.com/search?format=search&last_filter=selection&last_value=1&query=sunrise&selection=1)
21
+ ### Descrizioni
22
+ #### Generale
23
+ - Evita frasi ridondanti come “Questa è un’immagine di...”. Tuttavia, è accettabile specificare il tipo di contenuto, come “Un dipinto di...”
24
+ - Controlla ortografia, grammatica e punteggiatura.
25
+ - Ogni testo visibile nell’immagine deve essere trascritto tra “virgolette”. Esempio: Una donna che tiene un cartello con scritto “No alla guerra”.
26
+ - Inizia la descrizione dagli elementi più importanti per capire l’immagine, ovvero ciò che colpisce per primo.
27
+ - Non menzionare nomi propri. Esempio: “Taylor Swift” → “Una cantante bionda”.
28
+ #### Passaggi
29
+ - Inizia con un contesto generale, poi aggiungi dettagli che rendano l’immagine più comprensibile (es. cosa la rende interessante o unica?).
30
+ - Descrivi le dimensioni degli elementi presenti (es. “piccolo”) e la loro proporzione rispetto agli altri (es. “più grande di”).
31
+ - Indica i colori degli elementi principali con nomi comuni: rosso, blu, giallo, ecc.
32
+ - Descrivi la posizione e le relazioni spaziali tra gli elementi: “a destra”, “di fronte alla porta”, ecc.
33
+ #### Dettagli
34
+ - Le seguenti linee guida aiutano nella descrizione delle persone:
35
+ - Se ci sono caratteristiche evidenti, vanno descritte (es. “una persona in sedia a rotelle”).
36
+ - È utile indicare il tipo di corporatura.
37
+ - Descrivi l’età usando termini come “neonato”, “bambino”, “giovane”, “adulto”, “anziano”.
38
+ - Quando rilevante, indica il tono della pelle usando termini generici e non etnici, come “pelle chiara” o “pelle scura”.
39
+ - Per gli animali, è preferibile indicare la specie o razza (es. “cavcapibara” o “husky”) piuttosto che termini generici come “cane”.
40
+ - Puoi nominare i luoghi, ma specifica anche il nome comune se poco conosciuto. Esempio: “... davanti al London Eye” → “... davanti al London Eye, una famosa ruota panoramica a Londra”.
data/guidelines/_Italy/Italian/intro.md ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Wonders: Immagini e descrizioni multiculturali per un'IA inclusiva
2
+
3
+ **Aiutaci a colmare il divario tra un’IA generica in inglese e un’IA multiculturale per tutti!**
4
+
5
+ Siamo ricercatori di diverse università in tutto il mondo e abbiamo bisogno del tuo aiuto per raccogliere immagini e descrizioni di aspetti tipici della tua cultura. Questi dati aiuteranno a migliorare la prossima generazione di modelli di IA per il tuo paese e la tua lingua!
6
+
7
+ Se inserisci la tua email e una password qui sotto, potrai rivedere le tue immagini e descrizioni (es. caricare l’immagine dal telefono e scrivere la descrizione più tardi dal computer).
8
+
9
+ Alla fine della nostra campagna di raccolta dati, useremo email e password per creare una lista di tutti i partecipanti e premiare i migliori. Per i dettagli, visita il nostro sito web (TODO).
10
+
11
+ Se il tuo paese o la tua lingua non sono presenti, contattaci a [[email protected]](mailto:[email protected]).
data/guidelines/_Italy/Italian/task.md ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Wonders: Immagini e descrizioni multiculturali per un'IA inclusiva
2
+
3
+ Vogliamo raccogliere immagini e annotazioni che siano rilevanti per la tua cultura.
4
+ - **Concetto principale:** Scegli la categoria e il concetto principale che vuoi condividere. Puoi anche scrivere un nuovo concetto se è culturalmente rilevante e non presente nella nostra lista.
5
+ - **Immagine:** Un’immagine in cui il *concetto principale sia chiaramente visibile*. Deve (1) mostrare il concetto *in contesti tipici* in cui appare nel tuo paese, e (2) *includere altri* oggetti o persone quando possibile. *Le foto scattate personalmente* sono preferite. In alternativa, puoi fornire un link a immagini con licenza libera (ad esempio da pexels.com o freepik.com). Per maggiori dettagli, vedi la sezione “Istruzioni” qui sotto.
6
+ - **Altri concetti:** Aggiungi qualsiasi altro concetto visibile nell’immagine.
7
+ - **Descrizione:** Una descrizione lunga (circa 40 parole) che fornisca informazioni visive dettagliate. Le descrizioni devono essere *oggettive*: descrivi l’immagine come se la raccontassi a una persona non vedente, senza aggiungere opinioni o interpretazioni personali. Il testo deve *includere il concetto principale* e descrivere il contenuto dell’immagine in dettaglio, rispondendo a:
8
+ - **Chi?** Aspetto *visivo* ed *emozioni osservabili* (es. “sta sorridendo”) di persone e animali.
9
+ - **Cosa?** Le *azioni* mostrate nell’immagine.
10
+ - **Dove?** L’*ambientazione*, inclusi dimensioni, colori e relazioni tra gli oggetti.
11
+
12
+ In fondo alla pagina trovi esempi dei dati che vogliamo raccogliere.
13
+
14
+ Per linee guida dettagliate, clicca sul pulsante “Istruzioni” qui sotto.
15
+
16
+ ### Note
17
+ - Partecipando a questo compito, accetti di donare immagini e descrizioni con licenza [CC BY](https://creativecommons.org/licenses/by/4.0/), che ci permette di condividerle per migliorare l’IA.
18
+ - Potrai rimuovere in qualsiasi momento i dati che hai fornito.
data/lang2eng_map.py ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ lang2eng_mapping = {
2
+ "English": "English",
3
+ "Español": "Spanish",
4
+ "Français": "French",
5
+ "Deutsch": "German",
6
+ "Italiano": "Italian",
7
+ "Português": "Portuguese",
8
+ "Nederlands": "Dutch",
9
+ "Русский": "Russian",
10
+ "中文": "Chinese",
11
+ "日本語": "Japanese",
12
+ "한국어": "Korean",
13
+ "العربية": "Arabic",
14
+ "हिन्दी": "Hindi",
15
+ "বাংলা": "Bengali",
16
+ "Türkçe": "Turkish",
17
+ "Polski": "Polish",
18
+ "Svenska": "Swedish",
19
+ "Dansk": "Danish",
20
+ "Suomi": "Finnish",
21
+ "Norsk": "Norwegian",
22
+ "Ελληνικά": "Greek",
23
+ "ภาษาไทย": "Thai"
24
+ # Add more mappings as needed
25
+ }
data/metadata.json ADDED
@@ -0,0 +1,1414 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "USA": {
3
+ "English": {
4
+ "Country": "Country",
5
+ "Language": "Language",
6
+ "Category": "Main Category",
7
+ "Email": "Email (Optional)",
8
+ "Password": "Password (Optional)",
9
+ "Concept": "Main Concept",
10
+ "Image": "Image",
11
+ "Image_URL": "Image URL (optional, if no image is loaded)",
12
+ "Description": "Description",
13
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
14
+ "Clear_btn": "Clear",
15
+ "Submit_btn": "Submit",
16
+ "Exclude_btn": "Delete",
17
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
18
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
19
+ "Timestamp": "Timestamp",
20
+ "Exit_btn": "\u2b05\ufe0f Change Information",
21
+ "Browse_text": "## Browse Data",
22
+ "Loading_msg": "**Loading your data, please wait...**",
23
+ "Intro": "data/guidelines/USA/English/intro.md",
24
+ "Task": "data/guidelines/USA/English/task.md",
25
+ "Instructions": "data/guidelines/USA/English/instructions.md"
26
+ }
27
+ },
28
+ "Italy": {
29
+ "Italian": {
30
+ "Country": "Country",
31
+ "Language": "Language",
32
+ "Category": "Main Category",
33
+ "Email": "Email (Optional)",
34
+ "Password": "Password (Optional)",
35
+ "Concept": "Main Concept",
36
+ "Image": "Image",
37
+ "Image_URL": "Image URL (optional, if no image is loaded)",
38
+ "Description": "Description",
39
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
40
+ "Clear_btn": "Clear",
41
+ "Submit_btn": "Submit",
42
+ "Exclude_btn": "Delete",
43
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
44
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
45
+ "Timestamp": "Timestamp",
46
+ "Exit_btn": "\u2b05\ufe0f Change Information",
47
+ "Browse_text": "## Browse Data",
48
+ "Loading_msg": "**Loading your data, please wait...**",
49
+ "Intro": "data/guidelines/USA/English/intro.md",
50
+ "Task": "data/guidelines/USA/English/task.md",
51
+ "Instructions": "data/guidelines/USA/English/instructions.md"
52
+ }
53
+ },
54
+ "France": {
55
+ "French": {
56
+ "Country": "Country",
57
+ "Language": "Language",
58
+ "Category": "Main Category",
59
+ "Email": "Email (Optional)",
60
+ "Password": "Password (Optional)",
61
+ "Concept": "Main Concept",
62
+ "Image": "Image",
63
+ "Image_URL": "Image URL (optional, if no image is loaded)",
64
+ "Description": "Description",
65
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
66
+ "Clear_btn": "Clear",
67
+ "Submit_btn": "Submit",
68
+ "Exclude_btn": "Delete",
69
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
70
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
71
+ "Timestamp": "Timestamp",
72
+ "Exit_btn": "\u2b05\ufe0f Change Information",
73
+ "Browse_text": "## Browse Data",
74
+ "Loading_msg": "**Loading your data, please wait...**",
75
+ "Intro": "data/guidelines/USA/English/intro.md",
76
+ "Task": "data/guidelines/USA/English/task.md",
77
+ "Instructions": "data/guidelines/USA/English/instructions.md"
78
+ }
79
+ },
80
+ "Colombia": {
81
+ "Spanish": {
82
+ "Country": "Country",
83
+ "Language": "Language",
84
+ "Category": "Main Category",
85
+ "Email": "Email (Optional)",
86
+ "Password": "Password (Optional)",
87
+ "Concept": "Main Concept",
88
+ "Image": "Image",
89
+ "Image_URL": "Image URL (optional, if no image is loaded)",
90
+ "Description": "Description",
91
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
92
+ "Clear_btn": "Clear",
93
+ "Submit_btn": "Submit",
94
+ "Exclude_btn": "Delete",
95
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
96
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
97
+ "Timestamp": "Timestamp",
98
+ "Exit_btn": "\u2b05\ufe0f Change Information",
99
+ "Browse_text": "## Browse Data",
100
+ "Loading_msg": "**Loading your data, please wait...**",
101
+ "Intro": "data/guidelines/USA/English/intro.md",
102
+ "Task": "data/guidelines/USA/English/task.md",
103
+ "Instructions": "data/guidelines/USA/English/instructions.md"
104
+ }
105
+ },
106
+ "Arabian Gulf": {
107
+ "Arabic": {
108
+ "Country": "Country",
109
+ "Language": "Language",
110
+ "Category": "Main Category",
111
+ "Email": "Email (Optional)",
112
+ "Password": "Password (Optional)",
113
+ "Concept": "Main Concept",
114
+ "Image": "Image",
115
+ "Image_URL": "Image URL (optional, if no image is loaded)",
116
+ "Description": "Description",
117
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
118
+ "Clear_btn": "Clear",
119
+ "Submit_btn": "Submit",
120
+ "Exclude_btn": "Delete",
121
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
122
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
123
+ "Timestamp": "Timestamp",
124
+ "Exit_btn": "\u2b05\ufe0f Change Information",
125
+ "Browse_text": "## Browse Data",
126
+ "Loading_msg": "**Loading your data, please wait...**",
127
+ "Intro": "data/guidelines/USA/English/intro.md",
128
+ "Task": "data/guidelines/USA/English/task.md",
129
+ "Instructions": "data/guidelines/USA/English/instructions.md"
130
+ }
131
+ },
132
+ "Argentina": {
133
+ "Spanish": {
134
+ "Country": "Country",
135
+ "Language": "Language",
136
+ "Category": "Main Category",
137
+ "Email": "Email (Optional)",
138
+ "Password": "Password (Optional)",
139
+ "Concept": "Main Concept",
140
+ "Image": "Image",
141
+ "Image_URL": "Image URL (optional, if no image is loaded)",
142
+ "Description": "Description",
143
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
144
+ "Clear_btn": "Clear",
145
+ "Submit_btn": "Submit",
146
+ "Exclude_btn": "Delete",
147
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
148
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
149
+ "Timestamp": "Timestamp",
150
+ "Exit_btn": "\u2b05\ufe0f Change Information",
151
+ "Browse_text": "## Browse Data",
152
+ "Loading_msg": "**Loading your data, please wait...**",
153
+ "Intro": "data/guidelines/USA/English/intro.md",
154
+ "Task": "data/guidelines/USA/English/task.md",
155
+ "Instructions": "data/guidelines/USA/English/instructions.md"
156
+ }
157
+ },
158
+ "Australia": {
159
+ "English": {
160
+ "Country": "Country",
161
+ "Language": "Language",
162
+ "Category": "Main Category",
163
+ "Email": "Email (Optional)",
164
+ "Password": "Password (Optional)",
165
+ "Concept": "Main Concept",
166
+ "Image": "Image",
167
+ "Image_URL": "Image URL (optional, if no image is loaded)",
168
+ "Description": "Description",
169
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
170
+ "Clear_btn": "Clear",
171
+ "Submit_btn": "Submit",
172
+ "Exclude_btn": "Delete",
173
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
174
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
175
+ "Timestamp": "Timestamp",
176
+ "Exit_btn": "\u2b05\ufe0f Change Information",
177
+ "Browse_text": "## Browse Data",
178
+ "Loading_msg": "**Loading your data, please wait...**",
179
+ "Intro": "data/guidelines/USA/English/intro.md",
180
+ "Task": "data/guidelines/USA/English/task.md",
181
+ "Instructions": "data/guidelines/USA/English/instructions.md"
182
+ }
183
+ },
184
+ "Bangladesh": {
185
+ "Bengali": {
186
+ "Country": "Country",
187
+ "Language": "Language",
188
+ "Category": "Main Category",
189
+ "Email": "Email (Optional)",
190
+ "Password": "Password (Optional)",
191
+ "Concept": "Main Concept",
192
+ "Image": "Image",
193
+ "Image_URL": "Image URL (optional, if no image is loaded)",
194
+ "Description": "Description",
195
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
196
+ "Clear_btn": "Clear",
197
+ "Submit_btn": "Submit",
198
+ "Exclude_btn": "Delete",
199
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
200
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
201
+ "Timestamp": "Timestamp",
202
+ "Exit_btn": "\u2b05\ufe0f Change Information",
203
+ "Browse_text": "## Browse Data",
204
+ "Loading_msg": "**Loading your data, please wait...**",
205
+ "Intro": "data/guidelines/USA/English/intro.md",
206
+ "Task": "data/guidelines/USA/English/task.md",
207
+ "Instructions": "data/guidelines/USA/English/instructions.md"
208
+ }
209
+ },
210
+ "Belgium": {
211
+ "French": {
212
+ "Country": "Country",
213
+ "Language": "Language",
214
+ "Category": "Main Category",
215
+ "Email": "Email (Optional)",
216
+ "Password": "Password (Optional)",
217
+ "Concept": "Main Concept",
218
+ "Image": "Image",
219
+ "Image_URL": "Image URL (optional, if no image is loaded)",
220
+ "Description": "Description",
221
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
222
+ "Clear_btn": "Clear",
223
+ "Submit_btn": "Submit",
224
+ "Exclude_btn": "Delete",
225
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
226
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
227
+ "Timestamp": "Timestamp",
228
+ "Exit_btn": "\u2b05\ufe0f Change Information",
229
+ "Browse_text": "## Browse Data",
230
+ "Loading_msg": "**Loading your data, please wait...**",
231
+ "Intro": "data/guidelines/USA/English/intro.md",
232
+ "Task": "data/guidelines/USA/English/task.md",
233
+ "Instructions": "data/guidelines/USA/English/instructions.md"
234
+ }
235
+ },
236
+ "Brazil": {
237
+ "Portuguese": {
238
+ "Country": "Country",
239
+ "Language": "Language",
240
+ "Category": "Main Category",
241
+ "Email": "Email (Optional)",
242
+ "Password": "Password (Optional)",
243
+ "Concept": "Main Concept",
244
+ "Image": "Image",
245
+ "Image_URL": "Image URL (optional, if no image is loaded)",
246
+ "Description": "Description",
247
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
248
+ "Clear_btn": "Clear",
249
+ "Submit_btn": "Submit",
250
+ "Exclude_btn": "Delete",
251
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
252
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
253
+ "Timestamp": "Timestamp",
254
+ "Exit_btn": "\u2b05\ufe0f Change Information",
255
+ "Browse_text": "## Browse Data",
256
+ "Loading_msg": "**Loading your data, please wait...**",
257
+ "Intro": "data/guidelines/USA/English/intro.md",
258
+ "Task": "data/guidelines/USA/English/task.md",
259
+ "Instructions": "data/guidelines/USA/English/instructions.md"
260
+ }
261
+ },
262
+ "Bulgaria": {
263
+ "Bulgarian": {
264
+ "Country": "Country",
265
+ "Language": "Language",
266
+ "Category": "Main Category",
267
+ "Email": "Email (Optional)",
268
+ "Password": "Password (Optional)",
269
+ "Concept": "Main Concept",
270
+ "Image": "Image",
271
+ "Image_URL": "Image URL (optional, if no image is loaded)",
272
+ "Description": "Description",
273
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
274
+ "Clear_btn": "Clear",
275
+ "Submit_btn": "Submit",
276
+ "Exclude_btn": "Delete",
277
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
278
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
279
+ "Timestamp": "Timestamp",
280
+ "Exit_btn": "\u2b05\ufe0f Change Information",
281
+ "Browse_text": "## Browse Data",
282
+ "Loading_msg": "**Loading your data, please wait...**",
283
+ "Intro": "data/guidelines/USA/English/intro.md",
284
+ "Task": "data/guidelines/USA/English/task.md",
285
+ "Instructions": "data/guidelines/USA/English/instructions.md"
286
+ }
287
+ },
288
+ "Chile": {
289
+ "Spanish": {
290
+ "Country": "Country",
291
+ "Language": "Language",
292
+ "Category": "Main Category",
293
+ "Email": "Email (Optional)",
294
+ "Password": "Password (Optional)",
295
+ "Concept": "Main Concept",
296
+ "Image": "Image",
297
+ "Image_URL": "Image URL (optional, if no image is loaded)",
298
+ "Description": "Description",
299
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
300
+ "Clear_btn": "Clear",
301
+ "Submit_btn": "Submit",
302
+ "Exclude_btn": "Delete",
303
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
304
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
305
+ "Timestamp": "Timestamp",
306
+ "Exit_btn": "\u2b05\ufe0f Change Information",
307
+ "Browse_text": "## Browse Data",
308
+ "Loading_msg": "**Loading your data, please wait...**",
309
+ "Intro": "data/guidelines/USA/English/intro.md",
310
+ "Task": "data/guidelines/USA/English/task.md",
311
+ "Instructions": "data/guidelines/USA/English/instructions.md"
312
+ }
313
+ },
314
+ "China": {
315
+ "Mandarin Chinese": {
316
+ "Country": "Country",
317
+ "Language": "Language",
318
+ "Category": "Main Category",
319
+ "Email": "Email (Optional)",
320
+ "Password": "Password (Optional)",
321
+ "Concept": "Main Concept",
322
+ "Image": "Image",
323
+ "Image_URL": "Image URL (optional, if no image is loaded)",
324
+ "Description": "Description",
325
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
326
+ "Clear_btn": "Clear",
327
+ "Submit_btn": "Submit",
328
+ "Exclude_btn": "Delete",
329
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
330
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
331
+ "Timestamp": "Timestamp",
332
+ "Exit_btn": "\u2b05\ufe0f Change Information",
333
+ "Browse_text": "## Browse Data",
334
+ "Loading_msg": "**Loading your data, please wait...**",
335
+ "Intro": "data/guidelines/USA/English/intro.md",
336
+ "Task": "data/guidelines/USA/English/task.md",
337
+ "Instructions": "data/guidelines/USA/English/instructions.md"
338
+ },
339
+ "Yue Chinese": {
340
+ "Country": "Country",
341
+ "Language": "Language",
342
+ "Category": "Main Category",
343
+ "Email": "Email (Optional)",
344
+ "Password": "Password (Optional)",
345
+ "Concept": "Main Concept",
346
+ "Image": "Image",
347
+ "Image_URL": "Image URL (optional, if no image is loaded)",
348
+ "Description": "Description",
349
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
350
+ "Clear_btn": "Clear",
351
+ "Submit_btn": "Submit",
352
+ "Exclude_btn": "Delete",
353
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
354
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
355
+ "Timestamp": "Timestamp",
356
+ "Exit_btn": "\u2b05\ufe0f Change Information",
357
+ "Browse_text": "## Browse Data",
358
+ "Loading_msg": "**Loading your data, please wait...**",
359
+ "Intro": "data/guidelines/USA/English/intro.md",
360
+ "Task": "data/guidelines/USA/English/task.md",
361
+ "Instructions": "data/guidelines/USA/English/instructions.md"
362
+ }
363
+ },
364
+ "Czechia": {
365
+ "Czech": {
366
+ "Country": "Country",
367
+ "Language": "Language",
368
+ "Category": "Main Category",
369
+ "Email": "Email (Optional)",
370
+ "Password": "Password (Optional)",
371
+ "Concept": "Main Concept",
372
+ "Image": "Image",
373
+ "Image_URL": "Image URL (optional, if no image is loaded)",
374
+ "Description": "Description",
375
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
376
+ "Clear_btn": "Clear",
377
+ "Submit_btn": "Submit",
378
+ "Exclude_btn": "Delete",
379
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
380
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
381
+ "Timestamp": "Timestamp",
382
+ "Exit_btn": "\u2b05\ufe0f Change Information",
383
+ "Browse_text": "## Browse Data",
384
+ "Loading_msg": "**Loading your data, please wait...**",
385
+ "Intro": "data/guidelines/USA/English/intro.md",
386
+ "Task": "data/guidelines/USA/English/task.md",
387
+ "Instructions": "data/guidelines/USA/English/instructions.md"
388
+ }
389
+ },
390
+ "Denmark": {
391
+ "Danish": {
392
+ "Country": "Country",
393
+ "Language": "Language",
394
+ "Category": "Main Category",
395
+ "Email": "Email (Optional)",
396
+ "Password": "Password (Optional)",
397
+ "Concept": "Main Concept",
398
+ "Image": "Image",
399
+ "Image_URL": "Image URL (optional, if no image is loaded)",
400
+ "Description": "Description",
401
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
402
+ "Clear_btn": "Clear",
403
+ "Submit_btn": "Submit",
404
+ "Exclude_btn": "Delete",
405
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
406
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
407
+ "Timestamp": "Timestamp",
408
+ "Exit_btn": "\u2b05\ufe0f Change Information",
409
+ "Browse_text": "## Browse Data",
410
+ "Loading_msg": "**Loading your data, please wait...**",
411
+ "Intro": "data/guidelines/USA/English/intro.md",
412
+ "Task": "data/guidelines/USA/English/task.md",
413
+ "Instructions": "data/guidelines/USA/English/instructions.md"
414
+ }
415
+ },
416
+ "Ecuador": {
417
+ "Spanish": {
418
+ "Country": "Country",
419
+ "Language": "Language",
420
+ "Category": "Main Category",
421
+ "Email": "Email (Optional)",
422
+ "Password": "Password (Optional)",
423
+ "Concept": "Main Concept",
424
+ "Image": "Image",
425
+ "Image_URL": "Image URL (optional, if no image is loaded)",
426
+ "Description": "Description",
427
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
428
+ "Clear_btn": "Clear",
429
+ "Submit_btn": "Submit",
430
+ "Exclude_btn": "Delete",
431
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
432
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
433
+ "Timestamp": "Timestamp",
434
+ "Exit_btn": "\u2b05\ufe0f Change Information",
435
+ "Browse_text": "## Browse Data",
436
+ "Loading_msg": "**Loading your data, please wait...**",
437
+ "Intro": "data/guidelines/USA/English/intro.md",
438
+ "Task": "data/guidelines/USA/English/task.md",
439
+ "Instructions": "data/guidelines/USA/English/instructions.md"
440
+ }
441
+ },
442
+ "Egypt": {
443
+ "Egyptian Arabic": {
444
+ "Country": "Country",
445
+ "Language": "Language",
446
+ "Category": "Main Category",
447
+ "Email": "Email (Optional)",
448
+ "Password": "Password (Optional)",
449
+ "Concept": "Main Concept",
450
+ "Image": "Image",
451
+ "Image_URL": "Image URL (optional, if no image is loaded)",
452
+ "Description": "Description",
453
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
454
+ "Clear_btn": "Clear",
455
+ "Submit_btn": "Submit",
456
+ "Exclude_btn": "Delete",
457
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
458
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
459
+ "Timestamp": "Timestamp",
460
+ "Exit_btn": "\u2b05\ufe0f Change Information",
461
+ "Browse_text": "## Browse Data",
462
+ "Loading_msg": "**Loading your data, please wait...**",
463
+ "Intro": "data/guidelines/USA/English/intro.md",
464
+ "Task": "data/guidelines/USA/English/task.md",
465
+ "Instructions": "data/guidelines/USA/English/instructions.md"
466
+ }
467
+ },
468
+ "Ethiopia": {
469
+ "Oromo": {
470
+ "Country": "Country",
471
+ "Language": "Language",
472
+ "Category": "Main Category",
473
+ "Email": "Email (Optional)",
474
+ "Password": "Password (Optional)",
475
+ "Concept": "Main Concept",
476
+ "Image": "Image",
477
+ "Image_URL": "Image URL (optional, if no image is loaded)",
478
+ "Description": "Description",
479
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
480
+ "Clear_btn": "Clear",
481
+ "Submit_btn": "Submit",
482
+ "Exclude_btn": "Delete",
483
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
484
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
485
+ "Timestamp": "Timestamp",
486
+ "Exit_btn": "\u2b05\ufe0f Change Information",
487
+ "Browse_text": "## Browse Data",
488
+ "Loading_msg": "**Loading your data, please wait...**",
489
+ "Intro": "data/guidelines/USA/English/intro.md",
490
+ "Task": "data/guidelines/USA/English/task.md",
491
+ "Instructions": "data/guidelines/USA/English/instructions.md"
492
+ }
493
+ },
494
+ "Germany": {
495
+ "German": {
496
+ "Country": "Country",
497
+ "Language": "Language",
498
+ "Category": "Main Category",
499
+ "Email": "Email (Optional)",
500
+ "Password": "Password (Optional)",
501
+ "Concept": "Main Concept",
502
+ "Image": "Image",
503
+ "Image_URL": "Image URL (optional, if no image is loaded)",
504
+ "Description": "Description",
505
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
506
+ "Clear_btn": "Clear",
507
+ "Submit_btn": "Submit",
508
+ "Exclude_btn": "Delete",
509
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
510
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
511
+ "Timestamp": "Timestamp",
512
+ "Exit_btn": "\u2b05\ufe0f Change Information",
513
+ "Browse_text": "## Browse Data",
514
+ "Loading_msg": "**Loading your data, please wait...**",
515
+ "Intro": "data/guidelines/USA/English/intro.md",
516
+ "Task": "data/guidelines/USA/English/task.md",
517
+ "Instructions": "data/guidelines/USA/English/instructions.md"
518
+ }
519
+ },
520
+ "Ghana": {
521
+ "Twi": {
522
+ "Country": "Country",
523
+ "Language": "Language",
524
+ "Category": "Main Category",
525
+ "Email": "Email (Optional)",
526
+ "Password": "Password (Optional)",
527
+ "Concept": "Main Concept",
528
+ "Image": "Image",
529
+ "Image_URL": "Image URL (optional, if no image is loaded)",
530
+ "Description": "Description",
531
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
532
+ "Clear_btn": "Clear",
533
+ "Submit_btn": "Submit",
534
+ "Exclude_btn": "Delete",
535
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
536
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
537
+ "Timestamp": "Timestamp",
538
+ "Exit_btn": "\u2b05\ufe0f Change Information",
539
+ "Browse_text": "## Browse Data",
540
+ "Loading_msg": "**Loading your data, please wait...**",
541
+ "Intro": "data/guidelines/USA/English/intro.md",
542
+ "Task": "data/guidelines/USA/English/task.md",
543
+ "Instructions": "data/guidelines/USA/English/instructions.md"
544
+ }
545
+ },
546
+ "Greece": {
547
+ "Greek": {
548
+ "Country": "Country",
549
+ "Language": "Language",
550
+ "Category": "Main Category",
551
+ "Email": "Email (Optional)",
552
+ "Password": "Password (Optional)",
553
+ "Concept": "Main Concept",
554
+ "Image": "Image",
555
+ "Image_URL": "Image URL (optional, if no image is loaded)",
556
+ "Description": "Description",
557
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
558
+ "Clear_btn": "Clear",
559
+ "Submit_btn": "Submit",
560
+ "Exclude_btn": "Delete",
561
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
562
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
563
+ "Timestamp": "Timestamp",
564
+ "Exit_btn": "\u2b05\ufe0f Change Information",
565
+ "Browse_text": "## Browse Data",
566
+ "Loading_msg": "**Loading your data, please wait...**",
567
+ "Intro": "data/guidelines/USA/English/intro.md",
568
+ "Task": "data/guidelines/USA/English/task.md",
569
+ "Instructions": "data/guidelines/USA/English/instructions.md"
570
+ }
571
+ },
572
+ "Hungary": {
573
+ "Hungarian": {
574
+ "Country": "Country",
575
+ "Language": "Language",
576
+ "Category": "Main Category",
577
+ "Email": "Email (Optional)",
578
+ "Password": "Password (Optional)",
579
+ "Concept": "Main Concept",
580
+ "Image": "Image",
581
+ "Image_URL": "Image URL (optional, if no image is loaded)",
582
+ "Description": "Description",
583
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
584
+ "Clear_btn": "Clear",
585
+ "Submit_btn": "Submit",
586
+ "Exclude_btn": "Delete",
587
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
588
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
589
+ "Timestamp": "Timestamp",
590
+ "Exit_btn": "\u2b05\ufe0f Change Information",
591
+ "Browse_text": "## Browse Data",
592
+ "Loading_msg": "**Loading your data, please wait...**",
593
+ "Intro": "data/guidelines/USA/English/intro.md",
594
+ "Task": "data/guidelines/USA/English/task.md",
595
+ "Instructions": "data/guidelines/USA/English/instructions.md"
596
+ }
597
+ },
598
+ "India": {
599
+ "Urdu ": {
600
+ "Country": "Country",
601
+ "Language": "Language",
602
+ "Category": "Main Category",
603
+ "Email": "Email (Optional)",
604
+ "Password": "Password (Optional)",
605
+ "Concept": "Main Concept",
606
+ "Image": "Image",
607
+ "Image_URL": "Image URL (optional, if no image is loaded)",
608
+ "Description": "Description",
609
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
610
+ "Clear_btn": "Clear",
611
+ "Submit_btn": "Submit",
612
+ "Exclude_btn": "Delete",
613
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
614
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
615
+ "Timestamp": "Timestamp",
616
+ "Exit_btn": "\u2b05\ufe0f Change Information",
617
+ "Browse_text": "## Browse Data",
618
+ "Loading_msg": "**Loading your data, please wait...**",
619
+ "Intro": "data/guidelines/USA/English/intro.md",
620
+ "Task": "data/guidelines/USA/English/task.md",
621
+ "Instructions": "data/guidelines/USA/English/instructions.md"
622
+ },
623
+ "Kannada": {
624
+ "Country": "Country",
625
+ "Language": "Language",
626
+ "Category": "Main Category",
627
+ "Email": "Email (Optional)",
628
+ "Password": "Password (Optional)",
629
+ "Concept": "Main Concept",
630
+ "Image": "Image",
631
+ "Image_URL": "Image URL (optional, if no image is loaded)",
632
+ "Description": "Description",
633
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
634
+ "Clear_btn": "Clear",
635
+ "Submit_btn": "Submit",
636
+ "Exclude_btn": "Delete",
637
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
638
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
639
+ "Timestamp": "Timestamp",
640
+ "Exit_btn": "\u2b05\ufe0f Change Information",
641
+ "Browse_text": "## Browse Data",
642
+ "Loading_msg": "**Loading your data, please wait...**",
643
+ "Intro": "data/guidelines/USA/English/intro.md",
644
+ "Task": "data/guidelines/USA/English/task.md",
645
+ "Instructions": "data/guidelines/USA/English/instructions.md"
646
+ },
647
+ "Telugu": {
648
+ "Country": "Country",
649
+ "Language": "Language",
650
+ "Category": "Main Category",
651
+ "Email": "Email (Optional)",
652
+ "Password": "Password (Optional)",
653
+ "Concept": "Main Concept",
654
+ "Image": "Image",
655
+ "Image_URL": "Image URL (optional, if no image is loaded)",
656
+ "Description": "Description",
657
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
658
+ "Clear_btn": "Clear",
659
+ "Submit_btn": "Submit",
660
+ "Exclude_btn": "Delete",
661
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
662
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
663
+ "Timestamp": "Timestamp",
664
+ "Exit_btn": "\u2b05\ufe0f Change Information",
665
+ "Browse_text": "## Browse Data",
666
+ "Loading_msg": "**Loading your data, please wait...**",
667
+ "Intro": "data/guidelines/USA/English/intro.md",
668
+ "Task": "data/guidelines/USA/English/task.md",
669
+ "Instructions": "data/guidelines/USA/English/instructions.md"
670
+ },
671
+ "Tamil": {
672
+ "Country": "Country",
673
+ "Language": "Language",
674
+ "Category": "Main Category",
675
+ "Email": "Email (Optional)",
676
+ "Password": "Password (Optional)",
677
+ "Concept": "Main Concept",
678
+ "Image": "Image",
679
+ "Image_URL": "Image URL (optional, if no image is loaded)",
680
+ "Description": "Description",
681
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
682
+ "Clear_btn": "Clear",
683
+ "Submit_btn": "Submit",
684
+ "Exclude_btn": "Delete",
685
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
686
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
687
+ "Timestamp": "Timestamp",
688
+ "Exit_btn": "\u2b05\ufe0f Change Information",
689
+ "Browse_text": "## Browse Data",
690
+ "Loading_msg": "**Loading your data, please wait...**",
691
+ "Intro": "data/guidelines/USA/English/intro.md",
692
+ "Task": "data/guidelines/USA/English/task.md",
693
+ "Instructions": "data/guidelines/USA/English/instructions.md"
694
+ },
695
+ "Hindi": {
696
+ "Country": "Country",
697
+ "Language": "Language",
698
+ "Category": "Main Category",
699
+ "Email": "Email (Optional)",
700
+ "Password": "Password (Optional)",
701
+ "Concept": "Main Concept",
702
+ "Image": "Image",
703
+ "Image_URL": "Image URL (optional, if no image is loaded)",
704
+ "Description": "Description",
705
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
706
+ "Clear_btn": "Clear",
707
+ "Submit_btn": "Submit",
708
+ "Exclude_btn": "Delete",
709
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
710
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
711
+ "Timestamp": "Timestamp",
712
+ "Exit_btn": "\u2b05\ufe0f Change Information",
713
+ "Browse_text": "## Browse Data",
714
+ "Loading_msg": "**Loading your data, please wait...**",
715
+ "Intro": "data/guidelines/USA/English/intro.md",
716
+ "Task": "data/guidelines/USA/English/task.md",
717
+ "Instructions": "data/guidelines/USA/English/instructions.md"
718
+ },
719
+ "Bengali": {
720
+ "Country": "Country",
721
+ "Language": "Language",
722
+ "Category": "Main Category",
723
+ "Email": "Email (Optional)",
724
+ "Password": "Password (Optional)",
725
+ "Concept": "Main Concept",
726
+ "Image": "Image",
727
+ "Image_URL": "Image URL (optional, if no image is loaded)",
728
+ "Description": "Description",
729
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
730
+ "Clear_btn": "Clear",
731
+ "Submit_btn": "Submit",
732
+ "Exclude_btn": "Delete",
733
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
734
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
735
+ "Timestamp": "Timestamp",
736
+ "Exit_btn": "\u2b05\ufe0f Change Information",
737
+ "Browse_text": "## Browse Data",
738
+ "Loading_msg": "**Loading your data, please wait...**",
739
+ "Intro": "data/guidelines/USA/English/intro.md",
740
+ "Task": "data/guidelines/USA/English/task.md",
741
+ "Instructions": "data/guidelines/USA/English/instructions.md"
742
+ },
743
+ "Marathi": {
744
+ "Country": "Country",
745
+ "Language": "Language",
746
+ "Category": "Main Category",
747
+ "Email": "Email (Optional)",
748
+ "Password": "Password (Optional)",
749
+ "Concept": "Main Concept",
750
+ "Image": "Image",
751
+ "Image_URL": "Image URL (optional, if no image is loaded)",
752
+ "Description": "Description",
753
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
754
+ "Clear_btn": "Clear",
755
+ "Submit_btn": "Submit",
756
+ "Exclude_btn": "Delete",
757
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
758
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
759
+ "Timestamp": "Timestamp",
760
+ "Exit_btn": "\u2b05\ufe0f Change Information",
761
+ "Browse_text": "## Browse Data",
762
+ "Loading_msg": "**Loading your data, please wait...**",
763
+ "Intro": "data/guidelines/USA/English/intro.md",
764
+ "Task": "data/guidelines/USA/English/task.md",
765
+ "Instructions": "data/guidelines/USA/English/instructions.md"
766
+ }
767
+ },
768
+ "Indonesia": {
769
+ "Javanese": {
770
+ "Country": "Country",
771
+ "Language": "Language",
772
+ "Category": "Main Category",
773
+ "Email": "Email (Optional)",
774
+ "Password": "Password (Optional)",
775
+ "Concept": "Main Concept",
776
+ "Image": "Image",
777
+ "Image_URL": "Image URL (optional, if no image is loaded)",
778
+ "Description": "Description",
779
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
780
+ "Clear_btn": "Clear",
781
+ "Submit_btn": "Submit",
782
+ "Exclude_btn": "Delete",
783
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
784
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
785
+ "Timestamp": "Timestamp",
786
+ "Exit_btn": "\u2b05\ufe0f Change Information",
787
+ "Browse_text": "## Browse Data",
788
+ "Loading_msg": "**Loading your data, please wait...**",
789
+ "Intro": "data/guidelines/USA/English/intro.md",
790
+ "Task": "data/guidelines/USA/English/task.md",
791
+ "Instructions": "data/guidelines/USA/English/instructions.md"
792
+ },
793
+ "Indonesian": {
794
+ "Country": "Country",
795
+ "Language": "Language",
796
+ "Category": "Main Category",
797
+ "Email": "Email (Optional)",
798
+ "Password": "Password (Optional)",
799
+ "Concept": "Main Concept",
800
+ "Image": "Image",
801
+ "Image_URL": "Image URL (optional, if no image is loaded)",
802
+ "Description": "Description",
803
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
804
+ "Clear_btn": "Clear",
805
+ "Submit_btn": "Submit",
806
+ "Exclude_btn": "Delete",
807
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
808
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
809
+ "Timestamp": "Timestamp",
810
+ "Exit_btn": "\u2b05\ufe0f Change Information",
811
+ "Browse_text": "## Browse Data",
812
+ "Loading_msg": "**Loading your data, please wait...**",
813
+ "Intro": "data/guidelines/USA/English/intro.md",
814
+ "Task": "data/guidelines/USA/English/task.md",
815
+ "Instructions": "data/guidelines/USA/English/instructions.md"
816
+ }
817
+ },
818
+ "Israel": {
819
+ "Hebrew": {
820
+ "Country": "Country",
821
+ "Language": "Language",
822
+ "Category": "Main Category",
823
+ "Email": "Email (Optional)",
824
+ "Password": "Password (Optional)",
825
+ "Concept": "Main Concept",
826
+ "Image": "Image",
827
+ "Image_URL": "Image URL (optional, if no image is loaded)",
828
+ "Description": "Description",
829
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
830
+ "Clear_btn": "Clear",
831
+ "Submit_btn": "Submit",
832
+ "Exclude_btn": "Delete",
833
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
834
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
835
+ "Timestamp": "Timestamp",
836
+ "Exit_btn": "\u2b05\ufe0f Change Information",
837
+ "Browse_text": "## Browse Data",
838
+ "Loading_msg": "**Loading your data, please wait...**",
839
+ "Intro": "data/guidelines/USA/English/intro.md",
840
+ "Task": "data/guidelines/USA/English/task.md",
841
+ "Instructions": "data/guidelines/USA/English/instructions.md"
842
+ }
843
+ },
844
+ "Japan": {
845
+ "Japanese": {
846
+ "Country": "Country",
847
+ "Language": "Language",
848
+ "Category": "Main Category",
849
+ "Email": "Email (Optional)",
850
+ "Password": "Password (Optional)",
851
+ "Concept": "Main Concept",
852
+ "Image": "Image",
853
+ "Image_URL": "Image URL (optional, if no image is loaded)",
854
+ "Description": "Description",
855
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
856
+ "Clear_btn": "Clear",
857
+ "Submit_btn": "Submit",
858
+ "Exclude_btn": "Delete",
859
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
860
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
861
+ "Timestamp": "Timestamp",
862
+ "Exit_btn": "\u2b05\ufe0f Change Information",
863
+ "Browse_text": "## Browse Data",
864
+ "Loading_msg": "**Loading your data, please wait...**",
865
+ "Intro": "data/guidelines/USA/English/intro.md",
866
+ "Task": "data/guidelines/USA/English/task.md",
867
+ "Instructions": "data/guidelines/USA/English/instructions.md"
868
+ }
869
+ },
870
+ "Jordan": {
871
+ "Jordanian": {
872
+ "Country": "Country",
873
+ "Language": "Language",
874
+ "Category": "Main Category",
875
+ "Email": "Email (Optional)",
876
+ "Password": "Password (Optional)",
877
+ "Concept": "Main Concept",
878
+ "Image": "Image",
879
+ "Image_URL": "Image URL (optional, if no image is loaded)",
880
+ "Description": "Description",
881
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
882
+ "Clear_btn": "Clear",
883
+ "Submit_btn": "Submit",
884
+ "Exclude_btn": "Delete",
885
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
886
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
887
+ "Timestamp": "Timestamp",
888
+ "Exit_btn": "\u2b05\ufe0f Change Information",
889
+ "Browse_text": "## Browse Data",
890
+ "Loading_msg": "**Loading your data, please wait...**",
891
+ "Intro": "data/guidelines/USA/English/intro.md",
892
+ "Task": "data/guidelines/USA/English/task.md",
893
+ "Instructions": "data/guidelines/USA/English/instructions.md"
894
+ }
895
+ },
896
+ "Mexico": {
897
+ "Spanish": {
898
+ "Country": "Country",
899
+ "Language": "Language",
900
+ "Category": "Main Category",
901
+ "Email": "Email (Optional)",
902
+ "Password": "Password (Optional)",
903
+ "Concept": "Main Concept",
904
+ "Image": "Image",
905
+ "Image_URL": "Image URL (optional, if no image is loaded)",
906
+ "Description": "Description",
907
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
908
+ "Clear_btn": "Clear",
909
+ "Submit_btn": "Submit",
910
+ "Exclude_btn": "Delete",
911
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
912
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
913
+ "Timestamp": "Timestamp",
914
+ "Exit_btn": "\u2b05\ufe0f Change Information",
915
+ "Browse_text": "## Browse Data",
916
+ "Loading_msg": "**Loading your data, please wait...**",
917
+ "Intro": "data/guidelines/USA/English/intro.md",
918
+ "Task": "data/guidelines/USA/English/task.md",
919
+ "Instructions": "data/guidelines/USA/English/instructions.md"
920
+ }
921
+ },
922
+ "Morocco": {
923
+ "Moroccan Arabic": {
924
+ "Country": "Country",
925
+ "Language": "Language",
926
+ "Category": "Main Category",
927
+ "Email": "Email (Optional)",
928
+ "Password": "Password (Optional)",
929
+ "Concept": "Main Concept",
930
+ "Image": "Image",
931
+ "Image_URL": "Image URL (optional, if no image is loaded)",
932
+ "Description": "Description",
933
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
934
+ "Clear_btn": "Clear",
935
+ "Submit_btn": "Submit",
936
+ "Exclude_btn": "Delete",
937
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
938
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
939
+ "Timestamp": "Timestamp",
940
+ "Exit_btn": "\u2b05\ufe0f Change Information",
941
+ "Browse_text": "## Browse Data",
942
+ "Loading_msg": "**Loading your data, please wait...**",
943
+ "Intro": "data/guidelines/USA/English/intro.md",
944
+ "Task": "data/guidelines/USA/English/task.md",
945
+ "Instructions": "data/guidelines/USA/English/instructions.md"
946
+ }
947
+ },
948
+ "Netherlands": {
949
+ "Dutch": {
950
+ "Country": "Country",
951
+ "Language": "Language",
952
+ "Category": "Main Category",
953
+ "Email": "Email (Optional)",
954
+ "Password": "Password (Optional)",
955
+ "Concept": "Main Concept",
956
+ "Image": "Image",
957
+ "Image_URL": "Image URL (optional, if no image is loaded)",
958
+ "Description": "Description",
959
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
960
+ "Clear_btn": "Clear",
961
+ "Submit_btn": "Submit",
962
+ "Exclude_btn": "Delete",
963
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
964
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
965
+ "Timestamp": "Timestamp",
966
+ "Exit_btn": "\u2b05\ufe0f Change Information",
967
+ "Browse_text": "## Browse Data",
968
+ "Loading_msg": "**Loading your data, please wait...**",
969
+ "Intro": "data/guidelines/USA/English/intro.md",
970
+ "Task": "data/guidelines/USA/English/task.md",
971
+ "Instructions": "data/guidelines/USA/English/instructions.md"
972
+ }
973
+ },
974
+ "Nigeria": {
975
+ "Yoruba": {
976
+ "Country": "Country",
977
+ "Language": "Language",
978
+ "Category": "Main Category",
979
+ "Email": "Email (Optional)",
980
+ "Password": "Password (Optional)",
981
+ "Concept": "Main Concept",
982
+ "Image": "Image",
983
+ "Image_URL": "Image URL (optional, if no image is loaded)",
984
+ "Description": "Description",
985
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
986
+ "Clear_btn": "Clear",
987
+ "Submit_btn": "Submit",
988
+ "Exclude_btn": "Delete",
989
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
990
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
991
+ "Timestamp": "Timestamp",
992
+ "Exit_btn": "\u2b05\ufe0f Change Information",
993
+ "Browse_text": "## Browse Data",
994
+ "Loading_msg": "**Loading your data, please wait...**",
995
+ "Intro": "data/guidelines/USA/English/intro.md",
996
+ "Task": "data/guidelines/USA/English/task.md",
997
+ "Instructions": "data/guidelines/USA/English/instructions.md"
998
+ },
999
+ "Hausa": {
1000
+ "Country": "Country",
1001
+ "Language": "Language",
1002
+ "Category": "Main Category",
1003
+ "Email": "Email (Optional)",
1004
+ "Password": "Password (Optional)",
1005
+ "Concept": "Main Concept",
1006
+ "Image": "Image",
1007
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1008
+ "Description": "Description",
1009
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1010
+ "Clear_btn": "Clear",
1011
+ "Submit_btn": "Submit",
1012
+ "Exclude_btn": "Delete",
1013
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1014
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1015
+ "Timestamp": "Timestamp",
1016
+ "Exit_btn": "\u2b05\ufe0f Change Information",
1017
+ "Browse_text": "## Browse Data",
1018
+ "Loading_msg": "**Loading your data, please wait...**",
1019
+ "Intro": "data/guidelines/USA/English/intro.md",
1020
+ "Task": "data/guidelines/USA/English/task.md",
1021
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1022
+ }
1023
+ },
1024
+ "Philippines": {
1025
+ "Tagalog": {
1026
+ "Country": "Country",
1027
+ "Language": "Language",
1028
+ "Category": "Main Category",
1029
+ "Email": "Email (Optional)",
1030
+ "Password": "Password (Optional)",
1031
+ "Concept": "Main Concept",
1032
+ "Image": "Image",
1033
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1034
+ "Description": "Description",
1035
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1036
+ "Clear_btn": "Clear",
1037
+ "Submit_btn": "Submit",
1038
+ "Exclude_btn": "Delete",
1039
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1040
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1041
+ "Timestamp": "Timestamp",
1042
+ "Exit_btn": "\u2b05\ufe0f Change Information",
1043
+ "Browse_text": "## Browse Data",
1044
+ "Loading_msg": "**Loading your data, please wait...**",
1045
+ "Intro": "data/guidelines/USA/English/intro.md",
1046
+ "Task": "data/guidelines/USA/English/task.md",
1047
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1048
+ }
1049
+ },
1050
+ "Poland": {
1051
+ "Polish": {
1052
+ "Country": "Country",
1053
+ "Language": "Language",
1054
+ "Category": "Main Category",
1055
+ "Email": "Email (Optional)",
1056
+ "Password": "Password (Optional)",
1057
+ "Concept": "Main Concept",
1058
+ "Image": "Image",
1059
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1060
+ "Description": "Description",
1061
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1062
+ "Clear_btn": "Clear",
1063
+ "Submit_btn": "Submit",
1064
+ "Exclude_btn": "Delete",
1065
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1066
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1067
+ "Timestamp": "Timestamp",
1068
+ "Exit_btn": "\u2b05\ufe0f Change Information",
1069
+ "Browse_text": "## Browse Data",
1070
+ "Loading_msg": "**Loading your data, please wait...**",
1071
+ "Intro": "data/guidelines/USA/English/intro.md",
1072
+ "Task": "data/guidelines/USA/English/task.md",
1073
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1074
+ }
1075
+ },
1076
+ "Portugal": {
1077
+ "Portuguese": {
1078
+ "Country": "Country",
1079
+ "Language": "Language",
1080
+ "Category": "Main Category",
1081
+ "Email": "Email (Optional)",
1082
+ "Password": "Password (Optional)",
1083
+ "Concept": "Main Concept",
1084
+ "Image": "Image",
1085
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1086
+ "Description": "Description",
1087
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1088
+ "Clear_btn": "Clear",
1089
+ "Submit_btn": "Submit",
1090
+ "Exclude_btn": "Delete",
1091
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1092
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1093
+ "Timestamp": "Timestamp",
1094
+ "Exit_btn": "\u2b05\ufe0f Change Information",
1095
+ "Browse_text": "## Browse Data",
1096
+ "Loading_msg": "**Loading your data, please wait...**",
1097
+ "Intro": "data/guidelines/USA/English/intro.md",
1098
+ "Task": "data/guidelines/USA/English/task.md",
1099
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1100
+ }
1101
+ },
1102
+ "Romania": {
1103
+ "Romanian": {
1104
+ "Country": "Country",
1105
+ "Language": "Language",
1106
+ "Category": "Main Category",
1107
+ "Email": "Email (Optional)",
1108
+ "Password": "Password (Optional)",
1109
+ "Concept": "Main Concept",
1110
+ "Image": "Image",
1111
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1112
+ "Description": "Description",
1113
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1114
+ "Clear_btn": "Clear",
1115
+ "Submit_btn": "Submit",
1116
+ "Exclude_btn": "Delete",
1117
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1118
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1119
+ "Timestamp": "Timestamp",
1120
+ "Exit_btn": "\u2b05\ufe0f Change Information",
1121
+ "Browse_text": "## Browse Data",
1122
+ "Loading_msg": "**Loading your data, please wait...**",
1123
+ "Intro": "data/guidelines/USA/English/intro.md",
1124
+ "Task": "data/guidelines/USA/English/task.md",
1125
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1126
+ }
1127
+ },
1128
+ "Russia": {
1129
+ "Russian": {
1130
+ "Country": "Country",
1131
+ "Language": "Language",
1132
+ "Category": "Main Category",
1133
+ "Email": "Email (Optional)",
1134
+ "Password": "Password (Optional)",
1135
+ "Concept": "Main Concept",
1136
+ "Image": "Image",
1137
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1138
+ "Description": "Description",
1139
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1140
+ "Clear_btn": "Clear",
1141
+ "Submit_btn": "Submit",
1142
+ "Exclude_btn": "Delete",
1143
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1144
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1145
+ "Timestamp": "Timestamp",
1146
+ "Exit_btn": "\u2b05\ufe0f Change Information",
1147
+ "Browse_text": "## Browse Data",
1148
+ "Loading_msg": "**Loading your data, please wait...**",
1149
+ "Intro": "data/guidelines/USA/English/intro.md",
1150
+ "Task": "data/guidelines/USA/English/task.md",
1151
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1152
+ }
1153
+ },
1154
+ "Rwanda": {
1155
+ "Kinyarwanda": {
1156
+ "Country": "Country",
1157
+ "Language": "Language",
1158
+ "Category": "Main Category",
1159
+ "Email": "Email (Optional)",
1160
+ "Password": "Password (Optional)",
1161
+ "Concept": "Main Concept",
1162
+ "Image": "Image",
1163
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1164
+ "Description": "Description",
1165
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1166
+ "Clear_btn": "Clear",
1167
+ "Submit_btn": "Submit",
1168
+ "Exclude_btn": "Delete",
1169
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1170
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1171
+ "Timestamp": "Timestamp",
1172
+ "Exit_btn": "\u2b05\ufe0f Change Information",
1173
+ "Browse_text": "## Browse Data",
1174
+ "Loading_msg": "**Loading your data, please wait...**",
1175
+ "Intro": "data/guidelines/USA/English/intro.md",
1176
+ "Task": "data/guidelines/USA/English/task.md",
1177
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1178
+ }
1179
+ },
1180
+ "Singapore": {
1181
+ "Mandarin Chinese": {
1182
+ "Country": "Country",
1183
+ "Language": "Language",
1184
+ "Category": "Main Category",
1185
+ "Email": "Email (Optional)",
1186
+ "Password": "Password (Optional)",
1187
+ "Concept": "Main Concept",
1188
+ "Image": "Image",
1189
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1190
+ "Description": "Description",
1191
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1192
+ "Clear_btn": "Clear",
1193
+ "Submit_btn": "Submit",
1194
+ "Exclude_btn": "Delete",
1195
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1196
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1197
+ "Timestamp": "Timestamp",
1198
+ "Exit_btn": "\u2b05\ufe0f Change Information",
1199
+ "Browse_text": "## Browse Data",
1200
+ "Loading_msg": "**Loading your data, please wait...**",
1201
+ "Intro": "data/guidelines/USA/English/intro.md",
1202
+ "Task": "data/guidelines/USA/English/task.md",
1203
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1204
+ }
1205
+ },
1206
+ "South Korea": {
1207
+ "Korean": {
1208
+ "Country": "Country",
1209
+ "Language": "Language",
1210
+ "Category": "Main Category",
1211
+ "Email": "Email (Optional)",
1212
+ "Password": "Password (Optional)",
1213
+ "Concept": "Main Concept",
1214
+ "Image": "Image",
1215
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1216
+ "Description": "Description",
1217
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1218
+ "Clear_btn": "Clear",
1219
+ "Submit_btn": "Submit",
1220
+ "Exclude_btn": "Delete",
1221
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1222
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1223
+ "Timestamp": "Timestamp",
1224
+ "Exit_btn": "\u2b05\ufe0f Change Information",
1225
+ "Browse_text": "## Browse Data",
1226
+ "Loading_msg": "**Loading your data, please wait...**",
1227
+ "Intro": "data/guidelines/USA/English/intro.md",
1228
+ "Task": "data/guidelines/USA/English/task.md",
1229
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1230
+ }
1231
+ },
1232
+ "Spain": {
1233
+ "Spanish": {
1234
+ "Country": "Country",
1235
+ "Language": "Language",
1236
+ "Category": "Main Category",
1237
+ "Email": "Email (Optional)",
1238
+ "Password": "Password (Optional)",
1239
+ "Concept": "Main Concept",
1240
+ "Image": "Image",
1241
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1242
+ "Description": "Description",
1243
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1244
+ "Clear_btn": "Clear",
1245
+ "Submit_btn": "Submit",
1246
+ "Exclude_btn": "Delete",
1247
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1248
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1249
+ "Timestamp": "Timestamp",
1250
+ "Exit_btn": "\u2b05\ufe0f Change Information",
1251
+ "Browse_text": "## Browse Data",
1252
+ "Loading_msg": "**Loading your data, please wait...**",
1253
+ "Intro": "data/guidelines/USA/English/intro.md",
1254
+ "Task": "data/guidelines/USA/English/task.md",
1255
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1256
+ }
1257
+ },
1258
+ "Switzerland": {
1259
+ "German": {
1260
+ "Country": "Country",
1261
+ "Language": "Language",
1262
+ "Category": "Main Category",
1263
+ "Email": "Email (Optional)",
1264
+ "Password": "Password (Optional)",
1265
+ "Concept": "Main Concept",
1266
+ "Image": "Image",
1267
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1268
+ "Description": "Description",
1269
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1270
+ "Clear_btn": "Clear",
1271
+ "Submit_btn": "Submit",
1272
+ "Exclude_btn": "Delete",
1273
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1274
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1275
+ "Timestamp": "Timestamp",
1276
+ "Exit_btn": "\u2b05\ufe0f Change Information",
1277
+ "Browse_text": "## Browse Data",
1278
+ "Loading_msg": "**Loading your data, please wait...**",
1279
+ "Intro": "data/guidelines/USA/English/intro.md",
1280
+ "Task": "data/guidelines/USA/English/task.md",
1281
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1282
+ }
1283
+ },
1284
+ "Tanzania": {
1285
+ "Swahili": {
1286
+ "Country": "Country",
1287
+ "Language": "Language",
1288
+ "Category": "Main Category",
1289
+ "Email": "Email (Optional)",
1290
+ "Password": "Password (Optional)",
1291
+ "Concept": "Main Concept",
1292
+ "Image": "Image",
1293
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1294
+ "Description": "Description",
1295
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1296
+ "Clear_btn": "Clear",
1297
+ "Submit_btn": "Submit",
1298
+ "Exclude_btn": "Delete",
1299
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1300
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1301
+ "Timestamp": "Timestamp",
1302
+ "Exit_btn": "\u2b05\ufe0f Change Information",
1303
+ "Browse_text": "## Browse Data",
1304
+ "Loading_msg": "**Loading your data, please wait...**",
1305
+ "Intro": "data/guidelines/USA/English/intro.md",
1306
+ "Task": "data/guidelines/USA/English/task.md",
1307
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1308
+ }
1309
+ },
1310
+ "Turkey": {
1311
+ "Turkish": {
1312
+ "Country": "Country",
1313
+ "Language": "Language",
1314
+ "Category": "Main Category",
1315
+ "Email": "Email (Optional)",
1316
+ "Password": "Password (Optional)",
1317
+ "Concept": "Main Concept",
1318
+ "Image": "Image",
1319
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1320
+ "Description": "Description",
1321
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1322
+ "Clear_btn": "Clear",
1323
+ "Submit_btn": "Submit",
1324
+ "Exclude_btn": "Delete",
1325
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1326
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1327
+ "Timestamp": "Timestamp",
1328
+ "Exit_btn": "\u2b05\ufe0f Change Information",
1329
+ "Browse_text": "## Browse Data",
1330
+ "Loading_msg": "**Loading your data, please wait...**",
1331
+ "Intro": "data/guidelines/USA/English/intro.md",
1332
+ "Task": "data/guidelines/USA/English/task.md",
1333
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1334
+ }
1335
+ },
1336
+ "Ukraine": {
1337
+ "Ukranian": {
1338
+ "Country": "Country",
1339
+ "Language": "Language",
1340
+ "Category": "Main Category",
1341
+ "Email": "Email (Optional)",
1342
+ "Password": "Password (Optional)",
1343
+ "Concept": "Main Concept",
1344
+ "Image": "Image",
1345
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1346
+ "Description": "Description",
1347
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1348
+ "Clear_btn": "Clear",
1349
+ "Submit_btn": "Submit",
1350
+ "Exclude_btn": "Delete",
1351
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1352
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1353
+ "Timestamp": "Timestamp",
1354
+ "Exit_btn": "\u2b05\ufe0f Change Information",
1355
+ "Browse_text": "## Browse Data",
1356
+ "Loading_msg": "**Loading your data, please wait...**",
1357
+ "Intro": "data/guidelines/USA/English/intro.md",
1358
+ "Task": "data/guidelines/USA/English/task.md",
1359
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1360
+ }
1361
+ },
1362
+ "Uzbekistan": {
1363
+ "Uzbek": {
1364
+ "Country": "Country",
1365
+ "Language": "Language",
1366
+ "Category": "Main Category",
1367
+ "Email": "Email (Optional)",
1368
+ "Password": "Password (Optional)",
1369
+ "Concept": "Main Concept",
1370
+ "Image": "Image",
1371
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1372
+ "Description": "Description",
1373
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1374
+ "Clear_btn": "Clear",
1375
+ "Submit_btn": "Submit",
1376
+ "Exclude_btn": "Delete",
1377
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1378
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1379
+ "Timestamp": "Timestamp",
1380
+ "Exit_btn": "\u2b05\ufe0f Change Information",
1381
+ "Browse_text": "## Browse Data",
1382
+ "Loading_msg": "**Loading your data, please wait...**",
1383
+ "Intro": "data/guidelines/USA/English/intro.md",
1384
+ "Task": "data/guidelines/USA/English/task.md",
1385
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1386
+ }
1387
+ },
1388
+ "Vietnam": {
1389
+ "Vietnamese": {
1390
+ "Country": "Country",
1391
+ "Language": "Language",
1392
+ "Category": "Main Category",
1393
+ "Email": "Email (Optional)",
1394
+ "Password": "Password (Optional)",
1395
+ "Concept": "Main Concept",
1396
+ "Image": "Image",
1397
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1398
+ "Description": "Description",
1399
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1400
+ "Clear_btn": "Clear",
1401
+ "Submit_btn": "Submit",
1402
+ "Exclude_btn": "Delete",
1403
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1404
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1405
+ "Timestamp": "Timestamp",
1406
+ "Exit_btn": "\u2b05\ufe0f Change Information",
1407
+ "Browse_text": "## Browse Data",
1408
+ "Loading_msg": "**Loading your data, please wait...**",
1409
+ "Intro": "data/guidelines/USA/English/intro.md",
1410
+ "Task": "data/guidelines/USA/English/task.md",
1411
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1412
+ }
1413
+ }
1414
+ }
data/metadata_tmp.json ADDED
@@ -0,0 +1,1434 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "USA": {
3
+ "English": {
4
+ "Country": "Country",
5
+ "Language": "Language",
6
+ "Category": "Category",
7
+ "Email": "Email (Optional)",
8
+ "Password": "Password (Optional)",
9
+ "Concept": "Concept",
10
+ "Image": "Image",
11
+ "Image_URL": "Image URL (optional, if no image is loaded)",
12
+ "Description": "Description",
13
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
14
+ "Clear_btn": "Clear",
15
+ "Submit_btn": "Submit",
16
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
17
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
18
+ "Timestamp": "Timestamp",
19
+ "Exit_btn": "\u2b05\ufe0f Change Language",
20
+ "Browse_text": "## Browse Data",
21
+ "Loading_msg": "**Loading your data, please wait...**",
22
+ "Intro": "data/guidelines/USA/English/intro.md",
23
+ "Task": "data/guidelines/USA/English/task.md",
24
+ "Instructions": "data/guidelines/USA/English/instructions.md"
25
+ }
26
+ },
27
+ "Italy": {
28
+ "Italiano": {
29
+ "Country": "Paese",
30
+ "Language": "Lingua",
31
+ "Category": "Categoria",
32
+ "Email": "Email (Opzionale)",
33
+ "Password": "Password (Opzionale)",
34
+ "Concept": "Concetto",
35
+ "Image": "Immagine",
36
+ "Image_URL": "URL dell'immagine (opzionale, se non viene caricata un'immagine)",
37
+ "Description": "Descrizione",
38
+ "Instructs_btn": "\ud83d\udcd8 Mostra istruzioni",
39
+ "Clear_btn": "Cancella",
40
+ "Submit_btn": "Invia",
41
+ "Saving_text": "\u23f3 Attendere prego mentre i dati vengono salvati.",
42
+ "Saved_text": "I tuoi dati sono stati salvati correttamente. La tabella dei dati si aggiorner\u00e0 a breve. Puoi chiudere questa finestra.",
43
+ "Timestamp": "Marca temporale",
44
+ "Exit_btn": "\u2b05\ufe0f Cambia lingua",
45
+ "Browse_text": "## Esplora dati",
46
+ "Loading_msg": "**Caricamento dei dati, attendere prego...**",
47
+ "Intro": "data/guidelines/Italy/Italian/intro.md",
48
+ "Task": "data/guidelines/Italy/Italian/task.md",
49
+ "Instructions": "data/guidelines/Italy/Italian/instructions.md"
50
+ },
51
+ "Italian": {
52
+ "Country": "Country",
53
+ "Language": "Language",
54
+ "Category": "Category",
55
+ "Email": "Email (Optional)",
56
+ "Password": "Password (Optional)",
57
+ "Concept": "Concept",
58
+ "Image": "Image",
59
+ "Image_URL": "Image URL (optional, if no image is loaded)",
60
+ "Description": "Description",
61
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
62
+ "Clear_btn": "Clear",
63
+ "Submit_btn": "Submit",
64
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
65
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
66
+ "Timestamp": "Timestamp",
67
+ "Exit_btn": "\u2b05\ufe0f Change Language",
68
+ "Browse_text": "## Browse Data",
69
+ "Loading_msg": "**Loading your data, please wait...**",
70
+ "Intro": "data/guidelines/USA/English/intro.md",
71
+ "Task": "data/guidelines/USA/English/task.md",
72
+ "Instructions": "data/guidelines/USA/English/instructions.md"
73
+ }
74
+ },
75
+ "France": {
76
+ "Fran\u00e7ais": {
77
+ "Country": "Pays",
78
+ "Language": "Langue",
79
+ "Category": "Cat\u00e9gorie",
80
+ "Email": "Email (Facultatif)",
81
+ "Password": "Mot de passe (Facultatif)",
82
+ "Concept": "Concept",
83
+ "Image": "Image",
84
+ "Image_URL": "URL de l'image (facultatif, si aucune image n'est charg\u00e9e)",
85
+ "Description": "Description",
86
+ "Instructs_btn": "\ud83d\udcd8 Afficher les instructions",
87
+ "Clear_btn": "Effacer",
88
+ "Submit_btn": "Envoyer",
89
+ "Saving_text": "\u23f3 Veuillez patienter pendant l'enregistrement de vos donn\u00e9es.",
90
+ "Saved_text": "Vos donn\u00e9es ont \u00e9t\u00e9 enregistr\u00e9es avec succ\u00e8s. Le tableau des donn\u00e9es sera mis \u00e0 jour sous peu. Vous pouvez fermer cette fen\u00eatre.",
91
+ "Timestamp": "Horodatage",
92
+ "Exit_btn": "\u2b05\ufe0f Changer de langue",
93
+ "Browse_text": "## Parcourir les donn\u00e9es",
94
+ "Loading_msg": "**Chargement de vos donn\u00e9es, veuillez patienter...**",
95
+ "Intro": "data/guidelines/France/French/intro.md",
96
+ "Task": "data/guidelines/France/French/task.md",
97
+ "Instructions": "data/guidelines/France/French/instructions.md"
98
+ },
99
+ "French": {
100
+ "Country": "Country",
101
+ "Language": "Language",
102
+ "Category": "Category",
103
+ "Email": "Email (Optional)",
104
+ "Password": "Password (Optional)",
105
+ "Concept": "Concept",
106
+ "Image": "Image",
107
+ "Image_URL": "Image URL (optional, if no image is loaded)",
108
+ "Description": "Description",
109
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
110
+ "Clear_btn": "Clear",
111
+ "Submit_btn": "Submit",
112
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
113
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
114
+ "Timestamp": "Timestamp",
115
+ "Exit_btn": "\u2b05\ufe0f Change Language",
116
+ "Browse_text": "## Browse Data",
117
+ "Loading_msg": "**Loading your data, please wait...**",
118
+ "Intro": "data/guidelines/USA/English/intro.md",
119
+ "Task": "data/guidelines/USA/English/task.md",
120
+ "Instructions": "data/guidelines/USA/English/instructions.md"
121
+ }
122
+ },
123
+ "Colombia": {
124
+ "Espa\u00f1ol": {
125
+ "Country": "Pa\u00eds",
126
+ "Language": "Idioma",
127
+ "Category": "Categor\u00eda",
128
+ "Add_Category": "Categor\u00edas Adicionales (Opcional)",
129
+ "Email": "email (Opcional)",
130
+ "Password": "contrase\u00f1a (Opcional)",
131
+ "Concept": "Concepto",
132
+ "Add_Concept": "Conceptos Adicionales (Opcional)",
133
+ "Image": "Imagen",
134
+ "Image_URL": "URL de la imagen (opcional, si no se carga una imagen)",
135
+ "Description": "Descripci\u00f3n",
136
+ "Instructs_btn": "\ud83d\udcd8 Mostrar instrucciones",
137
+ "Clear_btn": "Borrar",
138
+ "Submit_btn": "Enviar",
139
+ "Saving_text": "\u23f3 Por favor espere mientras se guardan sus datos.",
140
+ "Saved_text": "Sus datos se han guardado correctamente. La tabla de datos se actualizar\u00e1 en breve. Puede cerrar esta ventana.",
141
+ "Timestamp": "Marca de tiempo",
142
+ "Exit_btn": "\u2b05\ufe0f Cambiar Idioma",
143
+ "Browse_text": "## Explorar Datos",
144
+ "Loading_msg": "**Cargando sus datos, por favor espere...**",
145
+ "Intro": "data/guidelines/Colombia/Spanish/intro.md",
146
+ "Task": "data/guidelines/Colombia/Spanish/task.md",
147
+ "Instructions": "data/guidelines/Colombia/Spanish/instructions.md",
148
+ "Hide_btn": "👤 Ocultar rostros específicas",
149
+ "Hide_all_btn": "👤 Ocultar todos los rostros",
150
+ "Unhide_btn": "👀 Mostrar rostros",
151
+ "Exclude_btn": "Excluir ejemplo seleccionado"
152
+ },
153
+ "Spanish": {
154
+ "Country": "Country",
155
+ "Language": "Language",
156
+ "Category": "Category",
157
+ "Email": "Email (Optional)",
158
+ "Password": "Password (Optional)",
159
+ "Concept": "Concept",
160
+ "Image": "Image",
161
+ "Image_URL": "Image URL (optional, if no image is loaded)",
162
+ "Description": "Description",
163
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
164
+ "Clear_btn": "Clear",
165
+ "Submit_btn": "Submit",
166
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
167
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
168
+ "Timestamp": "Timestamp",
169
+ "Exit_btn": "\u2b05\ufe0f Change Language",
170
+ "Browse_text": "## Browse Data",
171
+ "Loading_msg": "**Loading your data, please wait...**",
172
+ "Intro": "data/guidelines/USA/English/intro.md",
173
+ "Task": "data/guidelines/USA/English/task.md",
174
+ "Instructions": "data/guidelines/USA/English/instructions.md"
175
+ }
176
+ },
177
+ "Arabian Gulf": {
178
+ "Arabic": {
179
+ "Country": "Country",
180
+ "Language": "Language",
181
+ "Category": "Category",
182
+ "Email": "Email (Optional)",
183
+ "Password": "Password (Optional)",
184
+ "Concept": "Concept",
185
+ "Image": "Image",
186
+ "Image_URL": "Image URL (optional, if no image is loaded)",
187
+ "Description": "Description",
188
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
189
+ "Clear_btn": "Clear",
190
+ "Submit_btn": "Submit",
191
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
192
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
193
+ "Timestamp": "Timestamp",
194
+ "Exit_btn": "\u2b05\ufe0f Change Language",
195
+ "Browse_text": "## Browse Data",
196
+ "Loading_msg": "**Loading your data, please wait...**",
197
+ "Intro": "data/guidelines/USA/English/intro.md",
198
+ "Task": "data/guidelines/USA/English/task.md",
199
+ "Instructions": "data/guidelines/USA/English/instructions.md"
200
+ }
201
+ },
202
+ "Argentina": {
203
+ "Spanish": {
204
+ "Country": "Country",
205
+ "Language": "Language",
206
+ "Category": "Category",
207
+ "Email": "Email (Optional)",
208
+ "Password": "Password (Optional)",
209
+ "Concept": "Concept",
210
+ "Image": "Image",
211
+ "Image_URL": "Image URL (optional, if no image is loaded)",
212
+ "Description": "Description",
213
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
214
+ "Clear_btn": "Clear",
215
+ "Submit_btn": "Submit",
216
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
217
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
218
+ "Timestamp": "Timestamp",
219
+ "Exit_btn": "\u2b05\ufe0f Change Language",
220
+ "Browse_text": "## Browse Data",
221
+ "Loading_msg": "**Loading your data, please wait...**",
222
+ "Intro": "data/guidelines/USA/English/intro.md",
223
+ "Task": "data/guidelines/USA/English/task.md",
224
+ "Instructions": "data/guidelines/USA/English/instructions.md"
225
+ }
226
+ },
227
+ "Australia": {
228
+ "English": {
229
+ "Country": "Country",
230
+ "Language": "Language",
231
+ "Category": "Category",
232
+ "Email": "Email (Optional)",
233
+ "Password": "Password (Optional)",
234
+ "Concept": "Concept",
235
+ "Image": "Image",
236
+ "Image_URL": "Image URL (optional, if no image is loaded)",
237
+ "Description": "Description",
238
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
239
+ "Clear_btn": "Clear",
240
+ "Submit_btn": "Submit",
241
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
242
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
243
+ "Timestamp": "Timestamp",
244
+ "Exit_btn": "\u2b05\ufe0f Change Language",
245
+ "Browse_text": "## Browse Data",
246
+ "Loading_msg": "**Loading your data, please wait...**",
247
+ "Intro": "data/guidelines/USA/English/intro.md",
248
+ "Task": "data/guidelines/USA/English/task.md",
249
+ "Instructions": "data/guidelines/USA/English/instructions.md"
250
+ }
251
+ },
252
+ "Bangladesh": {
253
+ "Bengali": {
254
+ "Country": "Country",
255
+ "Language": "Language",
256
+ "Category": "Category",
257
+ "Email": "Email (Optional)",
258
+ "Password": "Password (Optional)",
259
+ "Concept": "Concept",
260
+ "Image": "Image",
261
+ "Image_URL": "Image URL (optional, if no image is loaded)",
262
+ "Description": "Description",
263
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
264
+ "Clear_btn": "Clear",
265
+ "Submit_btn": "Submit",
266
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
267
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
268
+ "Timestamp": "Timestamp",
269
+ "Exit_btn": "\u2b05\ufe0f Change Language",
270
+ "Browse_text": "## Browse Data",
271
+ "Loading_msg": "**Loading your data, please wait...**",
272
+ "Intro": "data/guidelines/USA/English/intro.md",
273
+ "Task": "data/guidelines/USA/English/task.md",
274
+ "Instructions": "data/guidelines/USA/English/instructions.md"
275
+ }
276
+ },
277
+ "Belgium": {
278
+ "French": {
279
+ "Country": "Country",
280
+ "Language": "Language",
281
+ "Category": "Category",
282
+ "Email": "Email (Optional)",
283
+ "Password": "Password (Optional)",
284
+ "Concept": "Concept",
285
+ "Image": "Image",
286
+ "Image_URL": "Image URL (optional, if no image is loaded)",
287
+ "Description": "Description",
288
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
289
+ "Clear_btn": "Clear",
290
+ "Submit_btn": "Submit",
291
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
292
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
293
+ "Timestamp": "Timestamp",
294
+ "Exit_btn": "\u2b05\ufe0f Change Language",
295
+ "Browse_text": "## Browse Data",
296
+ "Loading_msg": "**Loading your data, please wait...**",
297
+ "Intro": "data/guidelines/USA/English/intro.md",
298
+ "Task": "data/guidelines/USA/English/task.md",
299
+ "Instructions": "data/guidelines/USA/English/instructions.md"
300
+ }
301
+ },
302
+ "Brazil": {
303
+ "Portuguese": {
304
+ "Country": "Country",
305
+ "Language": "Language",
306
+ "Category": "Category",
307
+ "Email": "Email (Optional)",
308
+ "Password": "Password (Optional)",
309
+ "Concept": "Concept",
310
+ "Image": "Image",
311
+ "Image_URL": "Image URL (optional, if no image is loaded)",
312
+ "Description": "Description",
313
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
314
+ "Clear_btn": "Clear",
315
+ "Submit_btn": "Submit",
316
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
317
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
318
+ "Timestamp": "Timestamp",
319
+ "Exit_btn": "\u2b05\ufe0f Change Language",
320
+ "Browse_text": "## Browse Data",
321
+ "Loading_msg": "**Loading your data, please wait...**",
322
+ "Intro": "data/guidelines/USA/English/intro.md",
323
+ "Task": "data/guidelines/USA/English/task.md",
324
+ "Instructions": "data/guidelines/USA/English/instructions.md"
325
+ }
326
+ },
327
+ "Bulgaria": {
328
+ "Bulgarian": {
329
+ "Country": "Country",
330
+ "Language": "Language",
331
+ "Category": "Category",
332
+ "Email": "Email (Optional)",
333
+ "Password": "Password (Optional)",
334
+ "Concept": "Concept",
335
+ "Image": "Image",
336
+ "Image_URL": "Image URL (optional, if no image is loaded)",
337
+ "Description": "Description",
338
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
339
+ "Clear_btn": "Clear",
340
+ "Submit_btn": "Submit",
341
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
342
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
343
+ "Timestamp": "Timestamp",
344
+ "Exit_btn": "\u2b05\ufe0f Change Language",
345
+ "Browse_text": "## Browse Data",
346
+ "Loading_msg": "**Loading your data, please wait...**",
347
+ "Intro": "data/guidelines/USA/English/intro.md",
348
+ "Task": "data/guidelines/USA/English/task.md",
349
+ "Instructions": "data/guidelines/USA/English/instructions.md"
350
+ }
351
+ },
352
+ "Chile": {
353
+ "Spanish": {
354
+ "Country": "Country",
355
+ "Language": "Language",
356
+ "Category": "Category",
357
+ "Email": "Email (Optional)",
358
+ "Password": "Password (Optional)",
359
+ "Concept": "Concept",
360
+ "Image": "Image",
361
+ "Image_URL": "Image URL (optional, if no image is loaded)",
362
+ "Description": "Description",
363
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
364
+ "Clear_btn": "Clear",
365
+ "Submit_btn": "Submit",
366
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
367
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
368
+ "Timestamp": "Timestamp",
369
+ "Exit_btn": "\u2b05\ufe0f Change Language",
370
+ "Browse_text": "## Browse Data",
371
+ "Loading_msg": "**Loading your data, please wait...**",
372
+ "Intro": "data/guidelines/USA/English/intro.md",
373
+ "Task": "data/guidelines/USA/English/task.md",
374
+ "Instructions": "data/guidelines/USA/English/instructions.md"
375
+ }
376
+ },
377
+ "China": {
378
+ "Mandarin Chinese": {
379
+ "Country": "Country",
380
+ "Language": "Language",
381
+ "Category": "Category",
382
+ "Email": "Email (Optional)",
383
+ "Password": "Password (Optional)",
384
+ "Concept": "Concept",
385
+ "Image": "Image",
386
+ "Image_URL": "Image URL (optional, if no image is loaded)",
387
+ "Description": "Description",
388
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
389
+ "Clear_btn": "Clear",
390
+ "Submit_btn": "Submit",
391
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
392
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
393
+ "Timestamp": "Timestamp",
394
+ "Exit_btn": "\u2b05\ufe0f Change Language",
395
+ "Browse_text": "## Browse Data",
396
+ "Loading_msg": "**Loading your data, please wait...**",
397
+ "Intro": "data/guidelines/USA/English/intro.md",
398
+ "Task": "data/guidelines/USA/English/task.md",
399
+ "Instructions": "data/guidelines/USA/English/instructions.md"
400
+ },
401
+ "Yue Chinese": {
402
+ "Country": "Country",
403
+ "Language": "Language",
404
+ "Category": "Category",
405
+ "Email": "Email (Optional)",
406
+ "Password": "Password (Optional)",
407
+ "Concept": "Concept",
408
+ "Image": "Image",
409
+ "Image_URL": "Image URL (optional, if no image is loaded)",
410
+ "Description": "Description",
411
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
412
+ "Clear_btn": "Clear",
413
+ "Submit_btn": "Submit",
414
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
415
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
416
+ "Timestamp": "Timestamp",
417
+ "Exit_btn": "\u2b05\ufe0f Change Language",
418
+ "Browse_text": "## Browse Data",
419
+ "Loading_msg": "**Loading your data, please wait...**",
420
+ "Intro": "data/guidelines/USA/English/intro.md",
421
+ "Task": "data/guidelines/USA/English/task.md",
422
+ "Instructions": "data/guidelines/USA/English/instructions.md"
423
+ }
424
+ },
425
+ "Czechia": {
426
+ "Czech": {
427
+ "Country": "Country",
428
+ "Language": "Language",
429
+ "Category": "Category",
430
+ "Email": "Email (Optional)",
431
+ "Password": "Password (Optional)",
432
+ "Concept": "Concept",
433
+ "Image": "Image",
434
+ "Image_URL": "Image URL (optional, if no image is loaded)",
435
+ "Description": "Description",
436
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
437
+ "Clear_btn": "Clear",
438
+ "Submit_btn": "Submit",
439
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
440
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
441
+ "Timestamp": "Timestamp",
442
+ "Exit_btn": "\u2b05\ufe0f Change Language",
443
+ "Browse_text": "## Browse Data",
444
+ "Loading_msg": "**Loading your data, please wait...**",
445
+ "Intro": "data/guidelines/USA/English/intro.md",
446
+ "Task": "data/guidelines/USA/English/task.md",
447
+ "Instructions": "data/guidelines/USA/English/instructions.md"
448
+ }
449
+ },
450
+ "Denmark": {
451
+ "Danish": {
452
+ "Country": "Country",
453
+ "Language": "Language",
454
+ "Category": "Category",
455
+ "Email": "Email (Optional)",
456
+ "Password": "Password (Optional)",
457
+ "Concept": "Concept",
458
+ "Image": "Image",
459
+ "Image_URL": "Image URL (optional, if no image is loaded)",
460
+ "Description": "Description",
461
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
462
+ "Clear_btn": "Clear",
463
+ "Submit_btn": "Submit",
464
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
465
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
466
+ "Timestamp": "Timestamp",
467
+ "Exit_btn": "\u2b05\ufe0f Change Language",
468
+ "Browse_text": "## Browse Data",
469
+ "Loading_msg": "**Loading your data, please wait...**",
470
+ "Intro": "data/guidelines/USA/English/intro.md",
471
+ "Task": "data/guidelines/USA/English/task.md",
472
+ "Instructions": "data/guidelines/USA/English/instructions.md"
473
+ }
474
+ },
475
+ "Ecuador": {
476
+ "Spanish": {
477
+ "Country": "Country",
478
+ "Language": "Language",
479
+ "Category": "Category",
480
+ "Email": "Email (Optional)",
481
+ "Password": "Password (Optional)",
482
+ "Concept": "Concept",
483
+ "Image": "Image",
484
+ "Image_URL": "Image URL (optional, if no image is loaded)",
485
+ "Description": "Description",
486
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
487
+ "Clear_btn": "Clear",
488
+ "Submit_btn": "Submit",
489
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
490
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
491
+ "Timestamp": "Timestamp",
492
+ "Exit_btn": "\u2b05\ufe0f Change Language",
493
+ "Browse_text": "## Browse Data",
494
+ "Loading_msg": "**Loading your data, please wait...**",
495
+ "Intro": "data/guidelines/USA/English/intro.md",
496
+ "Task": "data/guidelines/USA/English/task.md",
497
+ "Instructions": "data/guidelines/USA/English/instructions.md"
498
+ }
499
+ },
500
+ "Egypt": {
501
+ "Egyptian Arabic": {
502
+ "Country": "Country",
503
+ "Language": "Language",
504
+ "Category": "Category",
505
+ "Email": "Email (Optional)",
506
+ "Password": "Password (Optional)",
507
+ "Concept": "Concept",
508
+ "Image": "Image",
509
+ "Image_URL": "Image URL (optional, if no image is loaded)",
510
+ "Description": "Description",
511
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
512
+ "Clear_btn": "Clear",
513
+ "Submit_btn": "Submit",
514
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
515
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
516
+ "Timestamp": "Timestamp",
517
+ "Exit_btn": "\u2b05\ufe0f Change Language",
518
+ "Browse_text": "## Browse Data",
519
+ "Loading_msg": "**Loading your data, please wait...**",
520
+ "Intro": "data/guidelines/USA/English/intro.md",
521
+ "Task": "data/guidelines/USA/English/task.md",
522
+ "Instructions": "data/guidelines/USA/English/instructions.md"
523
+ }
524
+ },
525
+ "Ethiopia": {
526
+ "Oromo": {
527
+ "Country": "Country",
528
+ "Language": "Language",
529
+ "Category": "Category",
530
+ "Email": "Email (Optional)",
531
+ "Password": "Password (Optional)",
532
+ "Concept": "Concept",
533
+ "Image": "Image",
534
+ "Image_URL": "Image URL (optional, if no image is loaded)",
535
+ "Description": "Description",
536
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
537
+ "Clear_btn": "Clear",
538
+ "Submit_btn": "Submit",
539
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
540
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
541
+ "Timestamp": "Timestamp",
542
+ "Exit_btn": "\u2b05\ufe0f Change Language",
543
+ "Browse_text": "## Browse Data",
544
+ "Loading_msg": "**Loading your data, please wait...**",
545
+ "Intro": "data/guidelines/USA/English/intro.md",
546
+ "Task": "data/guidelines/USA/English/task.md",
547
+ "Instructions": "data/guidelines/USA/English/instructions.md"
548
+ }
549
+ },
550
+ "Germany": {
551
+ "German": {
552
+ "Country": "Country",
553
+ "Language": "Language",
554
+ "Category": "Category",
555
+ "Email": "Email (Optional)",
556
+ "Password": "Password (Optional)",
557
+ "Concept": "Concept",
558
+ "Image": "Image",
559
+ "Image_URL": "Image URL (optional, if no image is loaded)",
560
+ "Description": "Description",
561
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
562
+ "Clear_btn": "Clear",
563
+ "Submit_btn": "Submit",
564
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
565
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
566
+ "Timestamp": "Timestamp",
567
+ "Exit_btn": "\u2b05\ufe0f Change Language",
568
+ "Browse_text": "## Browse Data",
569
+ "Loading_msg": "**Loading your data, please wait...**",
570
+ "Intro": "data/guidelines/USA/English/intro.md",
571
+ "Task": "data/guidelines/USA/English/task.md",
572
+ "Instructions": "data/guidelines/USA/English/instructions.md"
573
+ }
574
+ },
575
+ "Ghana": {
576
+ "Twi": {
577
+ "Country": "Country",
578
+ "Language": "Language",
579
+ "Category": "Category",
580
+ "Email": "Email (Optional)",
581
+ "Password": "Password (Optional)",
582
+ "Concept": "Concept",
583
+ "Image": "Image",
584
+ "Image_URL": "Image URL (optional, if no image is loaded)",
585
+ "Description": "Description",
586
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
587
+ "Clear_btn": "Clear",
588
+ "Submit_btn": "Submit",
589
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
590
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
591
+ "Timestamp": "Timestamp",
592
+ "Exit_btn": "\u2b05\ufe0f Change Language",
593
+ "Browse_text": "## Browse Data",
594
+ "Loading_msg": "**Loading your data, please wait...**",
595
+ "Intro": "data/guidelines/USA/English/intro.md",
596
+ "Task": "data/guidelines/USA/English/task.md",
597
+ "Instructions": "data/guidelines/USA/English/instructions.md"
598
+ }
599
+ },
600
+ "Greece": {
601
+ "Greek": {
602
+ "Country": "Country",
603
+ "Language": "Language",
604
+ "Category": "Category",
605
+ "Email": "Email (Optional)",
606
+ "Password": "Password (Optional)",
607
+ "Concept": "Concept",
608
+ "Image": "Image",
609
+ "Image_URL": "Image URL (optional, if no image is loaded)",
610
+ "Description": "Description",
611
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
612
+ "Clear_btn": "Clear",
613
+ "Submit_btn": "Submit",
614
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
615
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
616
+ "Timestamp": "Timestamp",
617
+ "Exit_btn": "\u2b05\ufe0f Change Language",
618
+ "Browse_text": "## Browse Data",
619
+ "Loading_msg": "**Loading your data, please wait...**",
620
+ "Intro": "data/guidelines/USA/English/intro.md",
621
+ "Task": "data/guidelines/USA/English/task.md",
622
+ "Instructions": "data/guidelines/USA/English/instructions.md"
623
+ }
624
+ },
625
+ "Hungary": {
626
+ "Hungarian": {
627
+ "Country": "Country",
628
+ "Language": "Language",
629
+ "Category": "Category",
630
+ "Email": "Email (Optional)",
631
+ "Password": "Password (Optional)",
632
+ "Concept": "Concept",
633
+ "Image": "Image",
634
+ "Image_URL": "Image URL (optional, if no image is loaded)",
635
+ "Description": "Description",
636
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
637
+ "Clear_btn": "Clear",
638
+ "Submit_btn": "Submit",
639
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
640
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
641
+ "Timestamp": "Timestamp",
642
+ "Exit_btn": "\u2b05\ufe0f Change Language",
643
+ "Browse_text": "## Browse Data",
644
+ "Loading_msg": "**Loading your data, please wait...**",
645
+ "Intro": "data/guidelines/USA/English/intro.md",
646
+ "Task": "data/guidelines/USA/English/task.md",
647
+ "Instructions": "data/guidelines/USA/English/instructions.md"
648
+ }
649
+ },
650
+ "India": {
651
+ "Urdu ": {
652
+ "Country": "Country",
653
+ "Language": "Language",
654
+ "Category": "Category",
655
+ "Email": "Email (Optional)",
656
+ "Password": "Password (Optional)",
657
+ "Concept": "Concept",
658
+ "Image": "Image",
659
+ "Image_URL": "Image URL (optional, if no image is loaded)",
660
+ "Description": "Description",
661
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
662
+ "Clear_btn": "Clear",
663
+ "Submit_btn": "Submit",
664
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
665
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
666
+ "Timestamp": "Timestamp",
667
+ "Exit_btn": "\u2b05\ufe0f Change Language",
668
+ "Browse_text": "## Browse Data",
669
+ "Loading_msg": "**Loading your data, please wait...**",
670
+ "Intro": "data/guidelines/USA/English/intro.md",
671
+ "Task": "data/guidelines/USA/English/task.md",
672
+ "Instructions": "data/guidelines/USA/English/instructions.md"
673
+ },
674
+ "Kannada": {
675
+ "Country": "Country",
676
+ "Language": "Language",
677
+ "Category": "Category",
678
+ "Email": "Email (Optional)",
679
+ "Password": "Password (Optional)",
680
+ "Concept": "Concept",
681
+ "Image": "Image",
682
+ "Image_URL": "Image URL (optional, if no image is loaded)",
683
+ "Description": "Description",
684
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
685
+ "Clear_btn": "Clear",
686
+ "Submit_btn": "Submit",
687
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
688
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
689
+ "Timestamp": "Timestamp",
690
+ "Exit_btn": "\u2b05\ufe0f Change Language",
691
+ "Browse_text": "## Browse Data",
692
+ "Loading_msg": "**Loading your data, please wait...**",
693
+ "Intro": "data/guidelines/USA/English/intro.md",
694
+ "Task": "data/guidelines/USA/English/task.md",
695
+ "Instructions": "data/guidelines/USA/English/instructions.md"
696
+ },
697
+ "Telugu": {
698
+ "Country": "Country",
699
+ "Language": "Language",
700
+ "Category": "Category",
701
+ "Email": "Email (Optional)",
702
+ "Password": "Password (Optional)",
703
+ "Concept": "Concept",
704
+ "Image": "Image",
705
+ "Image_URL": "Image URL (optional, if no image is loaded)",
706
+ "Description": "Description",
707
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
708
+ "Clear_btn": "Clear",
709
+ "Submit_btn": "Submit",
710
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
711
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
712
+ "Timestamp": "Timestamp",
713
+ "Exit_btn": "\u2b05\ufe0f Change Language",
714
+ "Browse_text": "## Browse Data",
715
+ "Loading_msg": "**Loading your data, please wait...**",
716
+ "Intro": "data/guidelines/USA/English/intro.md",
717
+ "Task": "data/guidelines/USA/English/task.md",
718
+ "Instructions": "data/guidelines/USA/English/instructions.md"
719
+ },
720
+ "Tamil": {
721
+ "Country": "Country",
722
+ "Language": "Language",
723
+ "Category": "Category",
724
+ "Email": "Email (Optional)",
725
+ "Password": "Password (Optional)",
726
+ "Concept": "Concept",
727
+ "Image": "Image",
728
+ "Image_URL": "Image URL (optional, if no image is loaded)",
729
+ "Description": "Description",
730
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
731
+ "Clear_btn": "Clear",
732
+ "Submit_btn": "Submit",
733
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
734
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
735
+ "Timestamp": "Timestamp",
736
+ "Exit_btn": "\u2b05\ufe0f Change Language",
737
+ "Browse_text": "## Browse Data",
738
+ "Loading_msg": "**Loading your data, please wait...**",
739
+ "Intro": "data/guidelines/USA/English/intro.md",
740
+ "Task": "data/guidelines/USA/English/task.md",
741
+ "Instructions": "data/guidelines/USA/English/instructions.md"
742
+ },
743
+ "Hindi": {
744
+ "Country": "Country",
745
+ "Language": "Language",
746
+ "Category": "Category",
747
+ "Email": "Email (Optional)",
748
+ "Password": "Password (Optional)",
749
+ "Concept": "Concept",
750
+ "Image": "Image",
751
+ "Image_URL": "Image URL (optional, if no image is loaded)",
752
+ "Description": "Description",
753
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
754
+ "Clear_btn": "Clear",
755
+ "Submit_btn": "Submit",
756
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
757
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
758
+ "Timestamp": "Timestamp",
759
+ "Exit_btn": "\u2b05\ufe0f Change Language",
760
+ "Browse_text": "## Browse Data",
761
+ "Loading_msg": "**Loading your data, please wait...**",
762
+ "Intro": "data/guidelines/USA/English/intro.md",
763
+ "Task": "data/guidelines/USA/English/task.md",
764
+ "Instructions": "data/guidelines/USA/English/instructions.md"
765
+ },
766
+ "Bengali": {
767
+ "Country": "Country",
768
+ "Language": "Language",
769
+ "Category": "Category",
770
+ "Email": "Email (Optional)",
771
+ "Password": "Password (Optional)",
772
+ "Concept": "Concept",
773
+ "Image": "Image",
774
+ "Image_URL": "Image URL (optional, if no image is loaded)",
775
+ "Description": "Description",
776
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
777
+ "Clear_btn": "Clear",
778
+ "Submit_btn": "Submit",
779
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
780
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
781
+ "Timestamp": "Timestamp",
782
+ "Exit_btn": "\u2b05\ufe0f Change Language",
783
+ "Browse_text": "## Browse Data",
784
+ "Loading_msg": "**Loading your data, please wait...**",
785
+ "Intro": "data/guidelines/USA/English/intro.md",
786
+ "Task": "data/guidelines/USA/English/task.md",
787
+ "Instructions": "data/guidelines/USA/English/instructions.md"
788
+ },
789
+ "Marathi": {
790
+ "Country": "Country",
791
+ "Language": "Language",
792
+ "Category": "Category",
793
+ "Email": "Email (Optional)",
794
+ "Password": "Password (Optional)",
795
+ "Concept": "Concept",
796
+ "Image": "Image",
797
+ "Image_URL": "Image URL (optional, if no image is loaded)",
798
+ "Description": "Description",
799
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
800
+ "Clear_btn": "Clear",
801
+ "Submit_btn": "Submit",
802
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
803
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
804
+ "Timestamp": "Timestamp",
805
+ "Exit_btn": "\u2b05\ufe0f Change Language",
806
+ "Browse_text": "## Browse Data",
807
+ "Loading_msg": "**Loading your data, please wait...**",
808
+ "Intro": "data/guidelines/USA/English/intro.md",
809
+ "Task": "data/guidelines/USA/English/task.md",
810
+ "Instructions": "data/guidelines/USA/English/instructions.md"
811
+ }
812
+ },
813
+ "Indonesia": {
814
+ "Javanese": {
815
+ "Country": "Country",
816
+ "Language": "Language",
817
+ "Category": "Category",
818
+ "Email": "Email (Optional)",
819
+ "Password": "Password (Optional)",
820
+ "Concept": "Concept",
821
+ "Image": "Image",
822
+ "Image_URL": "Image URL (optional, if no image is loaded)",
823
+ "Description": "Description",
824
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
825
+ "Clear_btn": "Clear",
826
+ "Submit_btn": "Submit",
827
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
828
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
829
+ "Timestamp": "Timestamp",
830
+ "Exit_btn": "\u2b05\ufe0f Change Language",
831
+ "Browse_text": "## Browse Data",
832
+ "Loading_msg": "**Loading your data, please wait...**",
833
+ "Intro": "data/guidelines/USA/English/intro.md",
834
+ "Task": "data/guidelines/USA/English/task.md",
835
+ "Instructions": "data/guidelines/USA/English/instructions.md"
836
+ },
837
+ "Indonesian": {
838
+ "Country": "Country",
839
+ "Language": "Language",
840
+ "Category": "Category",
841
+ "Email": "Email (Optional)",
842
+ "Password": "Password (Optional)",
843
+ "Concept": "Concept",
844
+ "Image": "Image",
845
+ "Image_URL": "Image URL (optional, if no image is loaded)",
846
+ "Description": "Description",
847
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
848
+ "Clear_btn": "Clear",
849
+ "Submit_btn": "Submit",
850
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
851
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
852
+ "Timestamp": "Timestamp",
853
+ "Exit_btn": "\u2b05\ufe0f Change Language",
854
+ "Browse_text": "## Browse Data",
855
+ "Loading_msg": "**Loading your data, please wait...**",
856
+ "Intro": "data/guidelines/USA/English/intro.md",
857
+ "Task": "data/guidelines/USA/English/task.md",
858
+ "Instructions": "data/guidelines/USA/English/instructions.md"
859
+ }
860
+ },
861
+ "Israel": {
862
+ "Hebrew": {
863
+ "Country": "Country",
864
+ "Language": "Language",
865
+ "Category": "Category",
866
+ "Email": "Email (Optional)",
867
+ "Password": "Password (Optional)",
868
+ "Concept": "Concept",
869
+ "Image": "Image",
870
+ "Image_URL": "Image URL (optional, if no image is loaded)",
871
+ "Description": "Description",
872
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
873
+ "Clear_btn": "Clear",
874
+ "Submit_btn": "Submit",
875
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
876
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
877
+ "Timestamp": "Timestamp",
878
+ "Exit_btn": "\u2b05\ufe0f Change Language",
879
+ "Browse_text": "## Browse Data",
880
+ "Loading_msg": "**Loading your data, please wait...**",
881
+ "Intro": "data/guidelines/USA/English/intro.md",
882
+ "Task": "data/guidelines/USA/English/task.md",
883
+ "Instructions": "data/guidelines/USA/English/instructions.md"
884
+ }
885
+ },
886
+ "Japan": {
887
+ "Japanese": {
888
+ "Country": "Country",
889
+ "Language": "Language",
890
+ "Category": "Category",
891
+ "Email": "Email (Optional)",
892
+ "Password": "Password (Optional)",
893
+ "Concept": "Concept",
894
+ "Image": "Image",
895
+ "Image_URL": "Image URL (optional, if no image is loaded)",
896
+ "Description": "Description",
897
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
898
+ "Clear_btn": "Clear",
899
+ "Submit_btn": "Submit",
900
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
901
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
902
+ "Timestamp": "Timestamp",
903
+ "Exit_btn": "\u2b05\ufe0f Change Language",
904
+ "Browse_text": "## Browse Data",
905
+ "Loading_msg": "**Loading your data, please wait...**",
906
+ "Intro": "data/guidelines/USA/English/intro.md",
907
+ "Task": "data/guidelines/USA/English/task.md",
908
+ "Instructions": "data/guidelines/USA/English/instructions.md"
909
+ }
910
+ },
911
+ "Jordan": {
912
+ "Jordanian": {
913
+ "Country": "Country",
914
+ "Language": "Language",
915
+ "Category": "Category",
916
+ "Email": "Email (Optional)",
917
+ "Password": "Password (Optional)",
918
+ "Concept": "Concept",
919
+ "Image": "Image",
920
+ "Image_URL": "Image URL (optional, if no image is loaded)",
921
+ "Description": "Description",
922
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
923
+ "Clear_btn": "Clear",
924
+ "Submit_btn": "Submit",
925
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
926
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
927
+ "Timestamp": "Timestamp",
928
+ "Exit_btn": "\u2b05\ufe0f Change Language",
929
+ "Browse_text": "## Browse Data",
930
+ "Loading_msg": "**Loading your data, please wait...**",
931
+ "Intro": "data/guidelines/USA/English/intro.md",
932
+ "Task": "data/guidelines/USA/English/task.md",
933
+ "Instructions": "data/guidelines/USA/English/instructions.md"
934
+ }
935
+ },
936
+ "Mexico": {
937
+ "Spanish": {
938
+ "Country": "Country",
939
+ "Language": "Language",
940
+ "Category": "Category",
941
+ "Email": "Email (Optional)",
942
+ "Password": "Password (Optional)",
943
+ "Concept": "Concept",
944
+ "Image": "Image",
945
+ "Image_URL": "Image URL (optional, if no image is loaded)",
946
+ "Description": "Description",
947
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
948
+ "Clear_btn": "Clear",
949
+ "Submit_btn": "Submit",
950
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
951
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
952
+ "Timestamp": "Timestamp",
953
+ "Exit_btn": "\u2b05\ufe0f Change Language",
954
+ "Browse_text": "## Browse Data",
955
+ "Loading_msg": "**Loading your data, please wait...**",
956
+ "Intro": "data/guidelines/USA/English/intro.md",
957
+ "Task": "data/guidelines/USA/English/task.md",
958
+ "Instructions": "data/guidelines/USA/English/instructions.md"
959
+ }
960
+ },
961
+ "Morocco": {
962
+ "Moroccan Arabic": {
963
+ "Country": "Country",
964
+ "Language": "Language",
965
+ "Category": "Category",
966
+ "Email": "Email (Optional)",
967
+ "Password": "Password (Optional)",
968
+ "Concept": "Concept",
969
+ "Image": "Image",
970
+ "Image_URL": "Image URL (optional, if no image is loaded)",
971
+ "Description": "Description",
972
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
973
+ "Clear_btn": "Clear",
974
+ "Submit_btn": "Submit",
975
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
976
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
977
+ "Timestamp": "Timestamp",
978
+ "Exit_btn": "\u2b05\ufe0f Change Language",
979
+ "Browse_text": "## Browse Data",
980
+ "Loading_msg": "**Loading your data, please wait...**",
981
+ "Intro": "data/guidelines/USA/English/intro.md",
982
+ "Task": "data/guidelines/USA/English/task.md",
983
+ "Instructions": "data/guidelines/USA/English/instructions.md"
984
+ }
985
+ },
986
+ "Netherlands": {
987
+ "Dutch": {
988
+ "Country": "Country",
989
+ "Language": "Language",
990
+ "Category": "Category",
991
+ "Email": "Email (Optional)",
992
+ "Password": "Password (Optional)",
993
+ "Concept": "Concept",
994
+ "Image": "Image",
995
+ "Image_URL": "Image URL (optional, if no image is loaded)",
996
+ "Description": "Description",
997
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
998
+ "Clear_btn": "Clear",
999
+ "Submit_btn": "Submit",
1000
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1001
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1002
+ "Timestamp": "Timestamp",
1003
+ "Exit_btn": "\u2b05\ufe0f Change Language",
1004
+ "Browse_text": "## Browse Data",
1005
+ "Loading_msg": "**Loading your data, please wait...**",
1006
+ "Intro": "data/guidelines/USA/English/intro.md",
1007
+ "Task": "data/guidelines/USA/English/task.md",
1008
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1009
+ }
1010
+ },
1011
+ "Nigeria": {
1012
+ "Yoruba": {
1013
+ "Country": "Country",
1014
+ "Language": "Language",
1015
+ "Category": "Category",
1016
+ "Email": "Email (Optional)",
1017
+ "Password": "Password (Optional)",
1018
+ "Concept": "Concept",
1019
+ "Image": "Image",
1020
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1021
+ "Description": "Description",
1022
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1023
+ "Clear_btn": "Clear",
1024
+ "Submit_btn": "Submit",
1025
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1026
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1027
+ "Timestamp": "Timestamp",
1028
+ "Exit_btn": "\u2b05\ufe0f Change Language",
1029
+ "Browse_text": "## Browse Data",
1030
+ "Loading_msg": "**Loading your data, please wait...**",
1031
+ "Intro": "data/guidelines/USA/English/intro.md",
1032
+ "Task": "data/guidelines/USA/English/task.md",
1033
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1034
+ },
1035
+ "Hausa": {
1036
+ "Country": "Country",
1037
+ "Language": "Language",
1038
+ "Category": "Category",
1039
+ "Email": "Email (Optional)",
1040
+ "Password": "Password (Optional)",
1041
+ "Concept": "Concept",
1042
+ "Image": "Image",
1043
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1044
+ "Description": "Description",
1045
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1046
+ "Clear_btn": "Clear",
1047
+ "Submit_btn": "Submit",
1048
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1049
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1050
+ "Timestamp": "Timestamp",
1051
+ "Exit_btn": "\u2b05\ufe0f Change Language",
1052
+ "Browse_text": "## Browse Data",
1053
+ "Loading_msg": "**Loading your data, please wait...**",
1054
+ "Intro": "data/guidelines/USA/English/intro.md",
1055
+ "Task": "data/guidelines/USA/English/task.md",
1056
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1057
+ }
1058
+ },
1059
+ "Philippines": {
1060
+ "Tagalog": {
1061
+ "Country": "Country",
1062
+ "Language": "Language",
1063
+ "Category": "Category",
1064
+ "Email": "Email (Optional)",
1065
+ "Password": "Password (Optional)",
1066
+ "Concept": "Concept",
1067
+ "Image": "Image",
1068
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1069
+ "Description": "Description",
1070
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1071
+ "Clear_btn": "Clear",
1072
+ "Submit_btn": "Submit",
1073
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1074
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1075
+ "Timestamp": "Timestamp",
1076
+ "Exit_btn": "\u2b05\ufe0f Change Language",
1077
+ "Browse_text": "## Browse Data",
1078
+ "Loading_msg": "**Loading your data, please wait...**",
1079
+ "Intro": "data/guidelines/USA/English/intro.md",
1080
+ "Task": "data/guidelines/USA/English/task.md",
1081
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1082
+ }
1083
+ },
1084
+ "Poland": {
1085
+ "Polish": {
1086
+ "Country": "Country",
1087
+ "Language": "Language",
1088
+ "Category": "Category",
1089
+ "Email": "Email (Optional)",
1090
+ "Password": "Password (Optional)",
1091
+ "Concept": "Concept",
1092
+ "Image": "Image",
1093
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1094
+ "Description": "Description",
1095
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1096
+ "Clear_btn": "Clear",
1097
+ "Submit_btn": "Submit",
1098
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1099
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1100
+ "Timestamp": "Timestamp",
1101
+ "Exit_btn": "\u2b05\ufe0f Change Language",
1102
+ "Browse_text": "## Browse Data",
1103
+ "Loading_msg": "**Loading your data, please wait...**",
1104
+ "Intro": "data/guidelines/USA/English/intro.md",
1105
+ "Task": "data/guidelines/USA/English/task.md",
1106
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1107
+ }
1108
+ },
1109
+ "Portugal": {
1110
+ "Portuguese": {
1111
+ "Country": "Country",
1112
+ "Language": "Language",
1113
+ "Category": "Category",
1114
+ "Email": "Email (Optional)",
1115
+ "Password": "Password (Optional)",
1116
+ "Concept": "Concept",
1117
+ "Image": "Image",
1118
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1119
+ "Description": "Description",
1120
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1121
+ "Clear_btn": "Clear",
1122
+ "Submit_btn": "Submit",
1123
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1124
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1125
+ "Timestamp": "Timestamp",
1126
+ "Exit_btn": "\u2b05\ufe0f Change Language",
1127
+ "Browse_text": "## Browse Data",
1128
+ "Loading_msg": "**Loading your data, please wait...**",
1129
+ "Intro": "data/guidelines/USA/English/intro.md",
1130
+ "Task": "data/guidelines/USA/English/task.md",
1131
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1132
+ }
1133
+ },
1134
+ "Romania": {
1135
+ "Romanian": {
1136
+ "Country": "Country",
1137
+ "Language": "Language",
1138
+ "Category": "Category",
1139
+ "Email": "Email (Optional)",
1140
+ "Password": "Password (Optional)",
1141
+ "Concept": "Concept",
1142
+ "Image": "Image",
1143
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1144
+ "Description": "Description",
1145
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1146
+ "Clear_btn": "Clear",
1147
+ "Submit_btn": "Submit",
1148
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1149
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1150
+ "Timestamp": "Timestamp",
1151
+ "Exit_btn": "\u2b05\ufe0f Change Language",
1152
+ "Browse_text": "## Browse Data",
1153
+ "Loading_msg": "**Loading your data, please wait...**",
1154
+ "Intro": "data/guidelines/USA/English/intro.md",
1155
+ "Task": "data/guidelines/USA/English/task.md",
1156
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1157
+ }
1158
+ },
1159
+ "Russia": {
1160
+ "Russian": {
1161
+ "Country": "Country",
1162
+ "Language": "Language",
1163
+ "Category": "Category",
1164
+ "Email": "Email (Optional)",
1165
+ "Password": "Password (Optional)",
1166
+ "Concept": "Concept",
1167
+ "Image": "Image",
1168
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1169
+ "Description": "Description",
1170
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1171
+ "Clear_btn": "Clear",
1172
+ "Submit_btn": "Submit",
1173
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1174
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1175
+ "Timestamp": "Timestamp",
1176
+ "Exit_btn": "\u2b05\ufe0f Change Language",
1177
+ "Browse_text": "## Browse Data",
1178
+ "Loading_msg": "**Loading your data, please wait...**",
1179
+ "Intro": "data/guidelines/USA/English/intro.md",
1180
+ "Task": "data/guidelines/USA/English/task.md",
1181
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1182
+ }
1183
+ },
1184
+ "Rwanda": {
1185
+ "Kinyarwanda": {
1186
+ "Country": "Country",
1187
+ "Language": "Language",
1188
+ "Category": "Category",
1189
+ "Email": "Email (Optional)",
1190
+ "Password": "Password (Optional)",
1191
+ "Concept": "Concept",
1192
+ "Image": "Image",
1193
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1194
+ "Description": "Description",
1195
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1196
+ "Clear_btn": "Clear",
1197
+ "Submit_btn": "Submit",
1198
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1199
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1200
+ "Timestamp": "Timestamp",
1201
+ "Exit_btn": "\u2b05\ufe0f Change Language",
1202
+ "Browse_text": "## Browse Data",
1203
+ "Loading_msg": "**Loading your data, please wait...**",
1204
+ "Intro": "data/guidelines/USA/English/intro.md",
1205
+ "Task": "data/guidelines/USA/English/task.md",
1206
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1207
+ }
1208
+ },
1209
+ "Singapore": {
1210
+ "Mandarin Chinese": {
1211
+ "Country": "Country",
1212
+ "Language": "Language",
1213
+ "Category": "Category",
1214
+ "Email": "Email (Optional)",
1215
+ "Password": "Password (Optional)",
1216
+ "Concept": "Concept",
1217
+ "Image": "Image",
1218
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1219
+ "Description": "Description",
1220
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1221
+ "Clear_btn": "Clear",
1222
+ "Submit_btn": "Submit",
1223
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1224
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1225
+ "Timestamp": "Timestamp",
1226
+ "Exit_btn": "\u2b05\ufe0f Change Language",
1227
+ "Browse_text": "## Browse Data",
1228
+ "Loading_msg": "**Loading your data, please wait...**",
1229
+ "Intro": "data/guidelines/USA/English/intro.md",
1230
+ "Task": "data/guidelines/USA/English/task.md",
1231
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1232
+ }
1233
+ },
1234
+ "South Korea": {
1235
+ "Korean": {
1236
+ "Country": "Country",
1237
+ "Language": "Language",
1238
+ "Category": "Category",
1239
+ "Email": "Email (Optional)",
1240
+ "Password": "Password (Optional)",
1241
+ "Concept": "Concept",
1242
+ "Image": "Image",
1243
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1244
+ "Description": "Description",
1245
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1246
+ "Clear_btn": "Clear",
1247
+ "Submit_btn": "Submit",
1248
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1249
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1250
+ "Timestamp": "Timestamp",
1251
+ "Exit_btn": "\u2b05\ufe0f Change Language",
1252
+ "Browse_text": "## Browse Data",
1253
+ "Loading_msg": "**Loading your data, please wait...**",
1254
+ "Intro": "data/guidelines/USA/English/intro.md",
1255
+ "Task": "data/guidelines/USA/English/task.md",
1256
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1257
+ }
1258
+ },
1259
+ "Spain": {
1260
+ "Spanish": {
1261
+ "Country": "Country",
1262
+ "Language": "Language",
1263
+ "Category": "Category",
1264
+ "Email": "Email (Optional)",
1265
+ "Password": "Password (Optional)",
1266
+ "Concept": "Concept",
1267
+ "Image": "Image",
1268
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1269
+ "Description": "Description",
1270
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1271
+ "Clear_btn": "Clear",
1272
+ "Submit_btn": "Submit",
1273
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1274
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1275
+ "Timestamp": "Timestamp",
1276
+ "Exit_btn": "\u2b05\ufe0f Change Language",
1277
+ "Browse_text": "## Browse Data",
1278
+ "Loading_msg": "**Loading your data, please wait...**",
1279
+ "Intro": "data/guidelines/USA/English/intro.md",
1280
+ "Task": "data/guidelines/USA/English/task.md",
1281
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1282
+ }
1283
+ },
1284
+ "Switzerland": {
1285
+ "German": {
1286
+ "Country": "Country",
1287
+ "Language": "Language",
1288
+ "Category": "Category",
1289
+ "Email": "Email (Optional)",
1290
+ "Password": "Password (Optional)",
1291
+ "Concept": "Concept",
1292
+ "Image": "Image",
1293
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1294
+ "Description": "Description",
1295
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1296
+ "Clear_btn": "Clear",
1297
+ "Submit_btn": "Submit",
1298
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1299
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1300
+ "Timestamp": "Timestamp",
1301
+ "Exit_btn": "\u2b05\ufe0f Change Language",
1302
+ "Browse_text": "## Browse Data",
1303
+ "Loading_msg": "**Loading your data, please wait...**",
1304
+ "Intro": "data/guidelines/USA/English/intro.md",
1305
+ "Task": "data/guidelines/USA/English/task.md",
1306
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1307
+ }
1308
+ },
1309
+ "Tanzania": {
1310
+ "Swahili": {
1311
+ "Country": "Country",
1312
+ "Language": "Language",
1313
+ "Category": "Category",
1314
+ "Email": "Email (Optional)",
1315
+ "Password": "Password (Optional)",
1316
+ "Concept": "Concept",
1317
+ "Image": "Image",
1318
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1319
+ "Description": "Description",
1320
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1321
+ "Clear_btn": "Clear",
1322
+ "Submit_btn": "Submit",
1323
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1324
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1325
+ "Timestamp": "Timestamp",
1326
+ "Exit_btn": "\u2b05\ufe0f Change Language",
1327
+ "Browse_text": "## Browse Data",
1328
+ "Loading_msg": "**Loading your data, please wait...**",
1329
+ "Intro": "data/guidelines/USA/English/intro.md",
1330
+ "Task": "data/guidelines/USA/English/task.md",
1331
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1332
+ }
1333
+ },
1334
+ "Turkey": {
1335
+ "Turkish": {
1336
+ "Country": "Country",
1337
+ "Language": "Language",
1338
+ "Category": "Category",
1339
+ "Email": "Email (Optional)",
1340
+ "Password": "Password (Optional)",
1341
+ "Concept": "Concept",
1342
+ "Image": "Image",
1343
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1344
+ "Description": "Description",
1345
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1346
+ "Clear_btn": "Clear",
1347
+ "Submit_btn": "Submit",
1348
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1349
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1350
+ "Timestamp": "Timestamp",
1351
+ "Exit_btn": "\u2b05\ufe0f Change Language",
1352
+ "Browse_text": "## Browse Data",
1353
+ "Loading_msg": "**Loading your data, please wait...**",
1354
+ "Intro": "data/guidelines/USA/English/intro.md",
1355
+ "Task": "data/guidelines/USA/English/task.md",
1356
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1357
+ }
1358
+ },
1359
+ "Ukraine": {
1360
+ "Ukranian": {
1361
+ "Country": "Country",
1362
+ "Language": "Language",
1363
+ "Category": "Category",
1364
+ "Email": "Email (Optional)",
1365
+ "Password": "Password (Optional)",
1366
+ "Concept": "Concept",
1367
+ "Image": "Image",
1368
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1369
+ "Description": "Description",
1370
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1371
+ "Clear_btn": "Clear",
1372
+ "Submit_btn": "Submit",
1373
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1374
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1375
+ "Timestamp": "Timestamp",
1376
+ "Exit_btn": "\u2b05\ufe0f Change Language",
1377
+ "Browse_text": "## Browse Data",
1378
+ "Loading_msg": "**Loading your data, please wait...**",
1379
+ "Intro": "data/guidelines/USA/English/intro.md",
1380
+ "Task": "data/guidelines/USA/English/task.md",
1381
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1382
+ }
1383
+ },
1384
+ "Uzbekistan": {
1385
+ "Uzbek": {
1386
+ "Country": "Country",
1387
+ "Language": "Language",
1388
+ "Category": "Category",
1389
+ "Email": "Email (Optional)",
1390
+ "Password": "Password (Optional)",
1391
+ "Concept": "Concept",
1392
+ "Image": "Image",
1393
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1394
+ "Description": "Description",
1395
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1396
+ "Clear_btn": "Clear",
1397
+ "Submit_btn": "Submit",
1398
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1399
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1400
+ "Timestamp": "Timestamp",
1401
+ "Exit_btn": "\u2b05\ufe0f Change Language",
1402
+ "Browse_text": "## Browse Data",
1403
+ "Loading_msg": "**Loading your data, please wait...**",
1404
+ "Intro": "data/guidelines/USA/English/intro.md",
1405
+ "Task": "data/guidelines/USA/English/task.md",
1406
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1407
+ }
1408
+ },
1409
+ "Vietnam": {
1410
+ "Vietnamese": {
1411
+ "Country": "Country",
1412
+ "Language": "Language",
1413
+ "Category": "Category",
1414
+ "Email": "Email (Optional)",
1415
+ "Password": "Password (Optional)",
1416
+ "Concept": "Concept",
1417
+ "Image": "Image",
1418
+ "Image_URL": "Image URL (optional, if no image is loaded)",
1419
+ "Description": "Description",
1420
+ "Instructs_btn": "\ud83d\udcd8 Show instructions",
1421
+ "Clear_btn": "Clear",
1422
+ "Submit_btn": "Submit",
1423
+ "Saving_text": "\u23f3 Please wait while your data is being saved.",
1424
+ "Saved_text": "Your data has been saved successfully. The data table will update shortly. You may close this window.",
1425
+ "Timestamp": "Timestamp",
1426
+ "Exit_btn": "\u2b05\ufe0f Change Language",
1427
+ "Browse_text": "## Browse Data",
1428
+ "Loading_msg": "**Loading your data, please wait...**",
1429
+ "Intro": "data/guidelines/USA/English/intro.md",
1430
+ "Task": "data/guidelines/USA/English/task.md",
1431
+ "Instructions": "data/guidelines/USA/English/instructions.md"
1432
+ }
1433
+ }
1434
+ }
data/update_metadata_from_concepts.py ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json
2
+
3
+ meta = json.load(open("metadata.json", "r", encoding="utf-8"))
4
+ concepts = json.load(open("concepts.json", "r", encoding="utf-8"))
5
+
6
+ for country in concepts:
7
+ if not country in meta:
8
+ meta[country] = dict()
9
+ for language in concepts[country]:
10
+ if language not in meta[country]:
11
+ meta[country][language] = meta["USA"]["English"]
12
+
13
+ with open("metadata.json", "w", encoding="utf-8") as f:
14
+ json.dump(meta, f, indent=2)
data/words_map.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ words_mapping = {
2
+ "Español": {
3
+ "Food and Beverages": "Comida y Bebidas",
4
+ "Clothing": "Ropa",
5
+ "Buildings (interior and exterior)": "Edificios (interior y exterior)",
6
+ "Instruments, Tools and Utensils": "Instrumentos, Herramientas y Utensilios",
7
+ "Celebrations, Sports and Events": "Celebraciones, Deportes y Eventos"
8
+ }
9
+ }
logic/__pycache__/data_utils.cpython-310.pyc ADDED
Binary file (5.74 kB). View file
 
logic/__pycache__/handlers.cpython-310.pyc ADDED
Binary file (12.9 kB). View file
 
logic/blur.py ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import cv2
2
+ import numpy as np
3
+ import time
4
+ import os
5
+ from retinaface import RetinaFace
6
+
7
+
8
+ def blur_faces(image, blur_amount=30, verbose=False):
9
+ # Start timer
10
+ start_time = time.time()
11
+
12
+ # Convert image from BGR to RGB (if using OpenCV's imread)
13
+ # image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
14
+
15
+ # Detect faces using RetinaFace
16
+ detection_start = time.time()
17
+ faces = RetinaFace.detect_faces(image)
18
+ detection_time = time.time() - detection_start
19
+
20
+ # Create a copy of the image
21
+ output_image = image.copy()
22
+
23
+ face_count = 0
24
+ blurring_start = time.time()
25
+ # import pdb; pdb.set_trace()
26
+ # Process each face
27
+ if faces and isinstance(faces, dict):
28
+ for face_key in faces:
29
+ face_count += 1
30
+ face_data = faces[face_key]
31
+
32
+ # Get bounding box coordinates
33
+ x1, y1, x2, y2 = face_data['facial_area']
34
+
35
+ # Ensure the coordinates are within the image boundaries
36
+ ih, iw = image.shape[:2]
37
+ x1, y1 = max(0, x1), max(0, y1)
38
+ x2, y2 = min(iw, x2), min(ih, y2)
39
+
40
+ # Extract face region
41
+ face_region = output_image[y1:y2, x1:x2]
42
+
43
+ # Apply blur
44
+ blurred_face = cv2.GaussianBlur(face_region, (blur_amount, blur_amount), 0)
45
+
46
+ # Replace face region with blurred version
47
+ output_image[y1:y2, x1:x2] = blurred_face
48
+
49
+ blurring_time = time.time() - blurring_start
50
+ total_time = time.time() - start_time
51
+
52
+ if verbose:
53
+ # Print timing information
54
+ print(f"Face blurring performance metrics:")
55
+ print(f"Total faces detected: {face_count}")
56
+ print(f"Face detection time: {detection_time:.4f} seconds")
57
+ print(f"Face blurring time: {blurring_time:.4f} seconds")
58
+ print(f"Total processing time: {total_time:.4f} seconds")
59
+ print(f"Average time per face: {(total_time/max(1, face_count)):.4f} seconds")
60
+
61
+ return output_image, {
62
+ "face_count": face_count,
63
+ "detection_time": detection_time,
64
+ "blurring_time": blurring_time,
65
+ "total_time": total_time,
66
+ "avg_time_per_face": total_time/max(1, face_count)
67
+ }
68
+
69
+ # Example usage
70
+ if __name__ == "__main__":
71
+ # Read an image from file
72
+ image_path = "multiple_people2.jpeg" # Replace with your image path
73
+ output_path = "blurred_output.jpg" # Output path for the blurred image
74
+
75
+ image = cv2.imread(image_path)
76
+
77
+ if image is None:
78
+ print(f"Could not read image from {image_path}")
79
+ else:
80
+ # Process the image with timing
81
+ result_image, timing_info = blur_faces(image, blur_amount=31)
82
+
83
+ # Save the result
84
+ cv2.imwrite(output_path, result_image)
85
+ print(f"Blurred image saved to {output_path}")
86
+
87
+
88
+
89
+ ## requirements and cv2
90
+ # pip install retina-face
91
+ # pip install opencv-python
logic/data_utils.py ADDED
@@ -0,0 +1,256 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import json
3
+ import time
4
+ from huggingface_hub import HfApi, create_repo, CommitScheduler
5
+ import bcrypt
6
+ import shutil
7
+ import uuid
8
+ import gradio as gr
9
+ from PIL import Image
10
+ import numpy as np
11
+
12
+
13
+ def load_concepts(path="data/concepts.json"):
14
+ with open(path, encoding='utf-8') as f:
15
+ data = json.load(f)
16
+ sorted_data = dict()
17
+ for country in sorted(data):
18
+ sorted_data[country] = dict()
19
+ for lang in sorted(data[country]):
20
+ sorted_data[country][lang] = data[country][lang]
21
+ return sorted_data
22
+
23
+
24
+ def load_metadata(path="data/metadata.json"):
25
+ with open(path, "r", encoding="utf-8") as f:
26
+ data = json.load(f)
27
+ sorted_data = dict()
28
+ for country in sorted(data):
29
+ sorted_data[country] = dict()
30
+ for lang in sorted(data[country]):
31
+ sorted_data[country][lang] = data[country][lang]
32
+ return sorted_data
33
+
34
+
35
+ class CustomHFDatasetSaver:
36
+ def __init__(self, api_token, dataset_name, private=False):
37
+ self.api_token = api_token
38
+ self.dataset_name = dataset_name
39
+ self.private = private
40
+ self.api = HfApi()
41
+
42
+ def setup(self, data_outputs, local_ds_folder):
43
+ # create repo is not exist
44
+ self.dataset_name = create_repo(
45
+ repo_id=self.dataset_name,
46
+ token=self.api_token,
47
+ private=self.private,
48
+ repo_type="dataset",
49
+ exist_ok=True,
50
+ ).repo_id
51
+
52
+ # Create the local data folder if not exist
53
+ self.local_ds_folder = local_ds_folder
54
+ os.makedirs(self.local_ds_folder, exist_ok=True)
55
+
56
+ self.data_outputs = data_outputs # list of components to read values from
57
+
58
+ # create scheduler to commit the data to the hub every x minutes
59
+ self.scheduler = CommitScheduler(
60
+ repo_id=self.dataset_name,
61
+ repo_type="dataset",
62
+ folder_path=self.local_ds_folder,
63
+ every=1,
64
+ token=self.api_token,
65
+ )
66
+
67
+ def validate_data(self, values_dic):
68
+ """
69
+ Validates the data before saving to ensure no required fields are empty.
70
+ Returns (bool, str) tuple where first value indicates if validation passed
71
+ and second value contains error message if validation failed.
72
+ """
73
+ # Remove 'image' from required fields since we handle it separately
74
+ required_fields = ['country', 'language', 'category', 'concept', 'caption']
75
+
76
+ # Check if image is provided (either uploaded or via URL)
77
+ image = values_dic.get('image')
78
+ image_url = values_dic.get('image_url')
79
+
80
+ # Check if image exists and is not None
81
+ has_image = image is not None and (isinstance(image, dict) or (hasattr(image, 'shape') and image.shape[0] > 0))
82
+ has_url = image_url is not None and image_url.strip() != ""
83
+
84
+ if not has_image and not has_url:
85
+ return False, "Either an image or image URL must be provided"
86
+
87
+ # Check required fields
88
+ for field in required_fields:
89
+ value = values_dic.get(field)
90
+ if value is None or (isinstance(value, str) and value.strip() == ""):
91
+ return False, f"Required field '{field}' cannot be empty"
92
+
93
+ # Check if image file exists if image path is provided
94
+ if has_image and isinstance(image, dict):
95
+ if not os.path.exists(image.get('path', '')):
96
+ return False, "Image file not found"
97
+
98
+ return True, ""
99
+
100
+ #TODO: add a function to check if the user is logged in
101
+ def is_logged_in(self):
102
+ pass
103
+
104
+ #TODO: check if the user is logged in (add a decorator to the save function)
105
+ def save(self, *values):
106
+ # 'values' are the outputs from your data collection components,
107
+ # you can map these to field names as needed
108
+ values_dic = dict(zip(self.data_outputs, values))
109
+
110
+ # print(f"Values received: {values_dic}")
111
+
112
+ # Validate data before proceeding
113
+ is_valid, error_msg = self.validate_data(values_dic)
114
+ if not is_valid:
115
+ raise gr.Error(error_msg)
116
+ # raise ValueError(error_msg)
117
+
118
+ values_dic['password'] = self.hash_password(values_dic['password'])
119
+
120
+ # # Process main category and concept
121
+ # main_category = values_dic.get('category', '')
122
+ # main_concept = values_dic.get('concept', '')
123
+
124
+ # # Process category-specific concept dropdowns
125
+ # additional_concepts_by_category = {}
126
+ # # Extract predefined categories and their corresponding dropdowns from values_dic
127
+ # predefined_categories = sorted(list(values_dic.get('concepts_dict', {})
128
+ # .get(values_dic.get('country', 'USA'), {})
129
+ # .get(values_dic.get('language', 'English'), {}).keys()))[:5]
130
+ # # Process each category dropdown
131
+ # for i, category in enumerate(predefined_categories):
132
+ # dropdown_key = f'category{i+1}_concepts'
133
+ # if dropdown_key in values_dic and values_dic[dropdown_key]:
134
+ # # Only add non-empty concept selections
135
+ # if values_dic[dropdown_key]:
136
+ # additional_concepts_by_category[category] = values_dic[dropdown_key]
137
+
138
+ ### TODO: fix saving additional concepts if not displayed in English
139
+ # # Process category-specific concept dropdowns
140
+ # additional_concepts_by_category = {}
141
+
142
+ # # Extract the country and language
143
+ # country = values_dic.get('country', 'USA')
144
+ # language = values_dic.get('language', 'English')
145
+ # concepts_dict = values_dic.get('concepts_dict', {})
146
+ # lang2eng_mapping = values_dic.get('country_lang_map', {})
147
+
148
+ # # Get the English version of the language for dictionary lookup
149
+ # eng_lang = lang2eng_mapping.get(language, language)
150
+
151
+ # # Get the predefined categories in English
152
+ # predefined_categories = sorted(list(concepts_dict.get(country, {}).get(eng_lang, {}).keys()))[:5]
153
+
154
+ # # Process each category dropdown
155
+ # for i, category in enumerate(predefined_categories):
156
+ # dropdown_key = f'category_{i+1}_concepts'
157
+ # if dropdown_key in values_dic and values_dic[dropdown_key]:
158
+ # # Only add non-empty concept selections
159
+ # additional_concepts_by_category[category] = values_dic[dropdown_key]
160
+
161
+ current_timestamp = int(time.time() * 1000)
162
+ # Create a unique ID for the sample is not provided
163
+ if not values_dic.get("id"):
164
+ # Missing ID
165
+ country, language, category, concept = values_dic.get("country"), values_dic.get("language"), values_dic.get("category"), values_dic.get("concept")
166
+ values_dic["id"] = f'{country}_{language}_{category}_{concept}_{current_timestamp}'
167
+
168
+ #prepare the main directory of the sample
169
+ if values_dic.get("username"):
170
+ sample_dir = os.path.join("logged_in_users", values_dic["country"], values_dic["language"], values_dic["username"], str(current_timestamp))
171
+ else:
172
+ sample_dir = os.path.join("anonymous_users", values_dic["country"], values_dic["language"], str(uuid.uuid4()))
173
+
174
+ os.makedirs(os.path.join(self.local_ds_folder, sample_dir), exist_ok=True)
175
+
176
+ # Destination path
177
+ dest_image_path = os.path.join(sample_dir, "image.png")
178
+ # Source path (to be used for copying the file in the with lock block)
179
+ # This is the path of the image file that was uploaded by the user
180
+ # I want to save the values_dic['image'] in the dest_image_path
181
+ # Convert numpy array to PIL Image and save it
182
+ # ===
183
+ # uploaded_image_path = os.path.join(self.local_ds_folder, dest_image_path)
184
+ # img = Image.fromarray(values_dic['image'])
185
+ # img.save(uploaded_image_path)
186
+ full_dest_path = os.path.join(self.local_ds_folder, dest_image_path)
187
+
188
+ # Handle different image types
189
+ image_data = values_dic['image']
190
+
191
+ if isinstance(image_data, dict) and 'path' in image_data:
192
+ # New upload case - copy from the uploaded path
193
+ uploaded_image_path = image_data['path']
194
+ with self.scheduler.lock:
195
+ shutil.copy(uploaded_image_path, full_dest_path)
196
+ elif isinstance(image_data, np.ndarray): # not values_dic.get('excluded', False) and
197
+ # Exclude case with numpy array - save the array as an image
198
+ with self.scheduler.lock:
199
+ # Convert numpy array to PIL image and save
200
+ img = Image.fromarray(image_data)
201
+ img.save(full_dest_path)
202
+ elif isinstance(image_data, Image.Image):
203
+ # PIL image case
204
+ with self.scheduler.lock:
205
+ image_data.save(full_dest_path)
206
+
207
+ values_dic['image'] = dest_image_path
208
+ image_file_path_on_hub = f"https://huggingface.co/datasets/{self.dataset_name}/resolve/main/{dest_image_path}"
209
+
210
+ # print(f"Saving sample: {values}")
211
+ # Build the metadata dictionary.
212
+ data_dict = {
213
+ # in case using windows
214
+ "image": values_dic['image'].replace("\\", "/"),
215
+ "image_file": image_file_path_on_hub.replace("\\", "/"),
216
+ # "image": values_dic['image'],
217
+ # "image_file": image_file_path_on_hub,
218
+ "image_url": values_dic['image_url'] or "",
219
+ "caption": values_dic['caption'] or "",
220
+ "country": values_dic['country'] or "",
221
+ "language": values_dic['language'] or "",
222
+ "category": values_dic['category'] or "",
223
+ "concept": values_dic['concept'] or "",
224
+ "category_1_concepts": [""] if values_dic.get('category_1_concepts', [""])==[] else values_dic.get('category_1_concepts', [""]),
225
+ "category_2_concepts": [""] if values_dic.get('category_2_concepts', [""])==[] else values_dic.get('category_2_concepts', [""]),
226
+ "category_3_concepts": [""] if values_dic.get('category_3_concepts', [""])==[] else values_dic.get('category_3_concepts', [""]),
227
+ "category_4_concepts": [""] if values_dic.get('category_4_concepts', [""])==[] else values_dic.get('category_4_concepts', [""]),
228
+ "category_5_concepts": [""] if values_dic.get('category_5_concepts', [""])==[] else values_dic.get('category_5_concepts', [""]),
229
+ "timestamp": current_timestamp,
230
+ "username": values_dic['username'] or "",
231
+ "password": values_dic['password'] or "",
232
+ "id": values_dic['id'],
233
+ "excluded": False if values_dic.get('excluded') is None else bool(values_dic.get('excluded')),
234
+ # "is_blurred": str(values_dic.get('is_blurred'))
235
+ }
236
+
237
+ print(f"Data dictionary: {data_dict}")
238
+ # Define a unique filename for the JSON metadata file (stored in self.folder).
239
+ json_filename = f"sample_{current_timestamp}.json"
240
+ json_file_path = os.path.join(self.local_ds_folder, sample_dir, json_filename)
241
+
242
+ with self.scheduler.lock:
243
+ # Save the metadata to the sample file in the local dataset folder
244
+ with open(json_file_path, "w", encoding="utf-8") as f:
245
+ json.dump(data_dict, f, indent=2)
246
+
247
+ print("Data saved successfully")
248
+
249
+ def hash_password(self, raw_password):
250
+ """
251
+ Hashes a raw password using bcrypt and returns the hashed password.
252
+ raw_password (str): The plain text password to be hashed.
253
+ str: The hashed password as a string.
254
+ """
255
+ hashed_password = bcrypt.hashpw(raw_password.encode(), bcrypt.gensalt()).decode()
256
+ return hashed_password
logic/handlers.py ADDED
@@ -0,0 +1,535 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os.path
2
+ import datetime
3
+ import io
4
+ import PIL
5
+ import requests
6
+ from datasets import load_dataset, concatenate_datasets, Image
7
+ from data.lang2eng_map import lang2eng_mapping
8
+ from data.words_map import words_mapping
9
+ import gradio as gr
10
+ import bcrypt
11
+ from config.settings import HF_API_TOKEN
12
+ from huggingface_hub import snapshot_download
13
+ # from .blur import blur_faces, detect_faces
14
+ from retinaface import RetinaFace
15
+ from gradio_modal import Modal
16
+ import numpy as np
17
+ import cv2
18
+ import time
19
+ import re
20
+ import os
21
+ import glob
22
+
23
+ def update_image(image_url):
24
+ try:
25
+ headers = {"User-Agent": "Mozilla/5.0"}
26
+ response = requests.get(image_url, headers=headers, timeout=10)
27
+ response.raise_for_status()
28
+ content_type = response.headers.get("Content-Type", "")
29
+ if "image" not in content_type:
30
+ gr.Error(f"⚠️ URL does not point to a valid image.", duration=5)
31
+ return "Error: URL does not point to a valid image."
32
+
33
+ img = PIL.Image.open(io.BytesIO(response.content))
34
+ img = img.convert("RGB")
35
+ return img, Modal(visible=False)
36
+ except Exception as e:
37
+ # print(f"Error: {str(e)}")
38
+ if image_url is None or image_url == "":
39
+ return gr.Image(label="Image", elem_id="image_inp"), Modal(visible=False)
40
+ else:
41
+ return gr.Image(label="Image", value=None, elem_id="image_inp"), Modal(visible=True)
42
+
43
+
44
+ def update_timestamp():
45
+ return gr.Textbox(datetime.datetime.now().timestamp(), label="Timestamp", visible=False) # FIXME visible=False)
46
+
47
+
48
+ def clear_data():
49
+ return (None, None, None, None, None, gr.update(value=None),
50
+ gr.update(value=[]), gr.update(value=[]), gr.update(value=[]),
51
+ gr.update(value=[]), gr.update(value=[]))
52
+
53
+
54
+ def exit():
55
+ return (None, None, None, gr.Dataset(samples=[]), gr.Markdown("**Loading your data, please wait ...**"),
56
+ gr.update(value=None), gr.update(value=None), [None, None, "", ""], gr.update(value=None),
57
+ gr.update(value=None), gr.update(value=None),
58
+ gr.update(value=None), gr.update(value=None), gr.update(value=None),
59
+ gr.update(value=None), gr.update(value=None))
60
+
61
+
62
+ def validate_inputs(image, ori_img): # is_blurred
63
+ # Perform your validation logic here
64
+ if image is None:
65
+ return gr.Button("Submit", variant="primary", interactive=False), None, None, False
66
+
67
+ # Define maximum dimensions
68
+ MAX_WIDTH = 1024
69
+ MAX_HEIGHT = 1024
70
+
71
+ # Get current dimensions
72
+ height, width = image.shape[:2]
73
+
74
+ # # Check if resizing is needed
75
+ # NOTE: for now, let's keep the full image resolution
76
+ # if width > MAX_WIDTH or height > MAX_HEIGHT:
77
+ # # Calculate scaling factor
78
+ # scale = min(MAX_WIDTH/width, MAX_HEIGHT/height)
79
+
80
+ # # Calculate new dimensions
81
+ # new_width = int(width * scale)
82
+ # new_height = int(height * scale)
83
+
84
+ # # Resize image while maintaining aspect ratio
85
+ # result_image = cv2.resize(image, (new_width, new_height), interpolation=cv2.INTER_AREA)
86
+ # else:
87
+ # result_image = image
88
+ result_image = image
89
+ if ori_img is None:
90
+ # If the original image is None, set it to the resized image
91
+ ori_img = gr.State(result_image.copy())
92
+
93
+ return gr.Button("Submit", variant="primary", interactive=True), result_image, ori_img # is_blurred
94
+
95
+
96
+ def add_prefix(example, column_name, prefix):
97
+ example[column_name] = (f"{prefix}/" + example[column_name])
98
+ return example
99
+
100
+ def update_user_data(username, password, country, language_choice, HF_DATASET_NAME, local_ds_directory_path):
101
+
102
+ datasets_list = []
103
+ # Try loading local dataset
104
+ try:
105
+ snapshot_download(
106
+ repo_id=HF_DATASET_NAME,
107
+ repo_type="dataset",
108
+ local_dir=local_ds_directory_path, # Your target local directory
109
+ allow_patterns=f"{country}/{language_choice}/{username}/*", # f"**/{username}/*"
110
+ token=HF_API_TOKEN
111
+ )
112
+ except Exception as e:
113
+ print(f"Snapshot download error: {e}")
114
+ # import pdb; pdb.set_trace()
115
+ if has_user_json(username, country, language_choice, local_ds_directory_path):
116
+ try:
117
+ # ds_local = load_dataset(local_ds_directory_path, data_files=f'logged_in_users/**/{username}/**/*.json') # This does not filter by country and language
118
+ ds_local = load_dataset(local_ds_directory_path, data_files=f'logged_in_users/{country}/{language_choice}/{username}/**/*.json')
119
+ ds_local = ds_local.remove_columns("image_file")
120
+ ds_local = ds_local.rename_column("image", "image_file")
121
+ ds_local = ds_local.map(add_prefix, fn_kwargs={"column_name": "image_file", "prefix": local_ds_directory_path})
122
+ ds_local = ds_local.cast_column("image_file", Image())
123
+
124
+ datasets_list.append(list(ds_local.values())[0])
125
+ except Exception as e:
126
+ print(f"Local dataset load error: {e}")
127
+
128
+ # # Try loading hub dataset
129
+ # try:
130
+ # ds_hub = load_dataset(HF_DATASET_NAME, data_files=f'**/{username}/**/*.json', token=HF_API_TOKEN)
131
+ # ds_hub = ds_hub.cast_column("image_file", Image())
132
+ # datasets_list.append(list(ds_hub.values())[0])
133
+ # except Exception as e:
134
+ # print(f"Hub dataset load error: {e}")
135
+
136
+ # Handle all empty
137
+ if not datasets_list:
138
+ return gr.Dataset(samples=[]), gr.Markdown("<p style='color: red;'>No data available for this user. Please upload an image.</p>")
139
+
140
+ dataset = concatenate_datasets(datasets_list)
141
+ # TODO: we should link username with password and language and country, otherwise there will be an error when loading with different language and clicking on the example
142
+ if username and password:
143
+ user_dataset = dataset.filter(lambda x: x['username'] == username and is_password_correct(x['password'], password))
144
+ user_dataset = user_dataset.sort('timestamp', reverse=True)
145
+ # Show only unique entries (most recent)
146
+ user_ids = set()
147
+ samples = []
148
+ for d in user_dataset:
149
+ if d['id'] in user_ids:
150
+ continue
151
+ user_ids.add(d['id'])
152
+ if d['excluded']:
153
+ continue
154
+ # Get additional concepts by category or empty dict if not present
155
+ # additional_concepts_by_category = {
156
+ # "category1": d.get("category_1_concepts", []),
157
+ # "category2": d.get("category_2_concepts", []),
158
+ # "category3": d.get("category_3_concepts", []),
159
+ # "category4": d.get("category_4_concepts", []),
160
+ # "category5": d.get("category_5_concepts", [])
161
+ # }
162
+ additional_concepts_by_category = [
163
+ d.get("category_1_concepts", [""]),
164
+ d.get("category_2_concepts", [""]),
165
+ d.get("category_3_concepts", [""]),
166
+ d.get("category_4_concepts", [""]),
167
+ d.get("category_5_concepts", [""])
168
+ ]
169
+ samples.append(
170
+ [
171
+ d['image_file'], d['image_url'], d['caption'] or "", d['country'],
172
+ d['language'], d['category'], d['concept'], additional_concepts_by_category, d['id']] # d['is_blurred']
173
+ )
174
+ return gr.Dataset(samples=samples), None
175
+ else:
176
+ # TODO: should we show the entire dataset instead? What about "other data" tab?
177
+ return gr.Dataset(samples=[]), None
178
+
179
+
180
+ def update_language(country, language, email, password, metadata_dict, concepts_dict):
181
+ # my_translator = GoogleTranslator(source='english', target=metadata_dict[country][language])
182
+ categories = concepts_dict[country][lang2eng_mapping.get(language, language)]
183
+ if language in words_mapping:
184
+ categories_keys_translated = [words_mapping[language].get(cat, cat) for cat in categories.keys()]
185
+ else:
186
+ categories_keys_translated = list(categories.keys())
187
+
188
+ # Get the 5 categories in alphabetical order
189
+ categories_list = sorted(list(categories.keys()))[:5]
190
+
191
+ # Create translated labels for the 5 categories
192
+ translated_categories = []
193
+ for cat in categories_list:
194
+ if language in words_mapping:
195
+ translated_cat = words_mapping[language].get(cat, cat)
196
+ else:
197
+ translated_cat = cat
198
+ translated_categories.append(translated_cat)
199
+
200
+ fn = metadata_dict[country][language]["Task"]
201
+ if os.path.exists(fn):
202
+ with open(fn, "r", encoding="utf-8") as f:
203
+ TASK_TEXT = f.read()
204
+ else:
205
+ fn = metadata_dict["USA"]["English"]["Task"]
206
+ with open(fn, "r", encoding="utf-8") as f:
207
+ TASK_TEXT = f.read()
208
+
209
+ fn = metadata_dict[country][language]["Instructions"]
210
+ if os.path.exists(fn):
211
+ with open(metadata_dict[country][language]["Instructions"], "r", encoding="utf-8") as f:
212
+ INST_TEXT = f.read()
213
+ else:
214
+ fn = metadata_dict["USA"]["English"]["Instructions"]
215
+ with open(fn, "r", encoding="utf-8") as f:
216
+ INST_TEXT = f.read()
217
+
218
+ return (
219
+ gr.update(label=metadata_dict[country][language]["Country"], value=country),
220
+ gr.update(label=metadata_dict[country][language]["Language"], value=language),
221
+ gr.update(label=metadata_dict[country][language]["Email"], value=email),
222
+ gr.update(label=metadata_dict[country][language]["Password"], value=password),
223
+ gr.update(choices=categories_keys_translated, interactive=True, label=metadata_dict[country][language]["Category"], allow_custom_value=False, elem_id="category_btn"),
224
+ gr.update(choices=[], interactive=True, label=metadata_dict[country][language]["Concept"], allow_custom_value=True, elem_id="concept_btn"),
225
+ gr.update(label=metadata_dict[country][language]["Image"]),
226
+ gr.update(label=metadata_dict[country][language]["Image_URL"]),
227
+ gr.update(label=metadata_dict[country][language]["Description"]),
228
+ gr.Markdown(TASK_TEXT),
229
+ gr.Markdown(INST_TEXT),
230
+ gr.update(value=metadata_dict[country][language]["Instructs_btn"]),
231
+ gr.update(value=metadata_dict[country][language]["Clear_btn"]),
232
+ gr.update(value=metadata_dict[country][language]["Submit_btn"]),
233
+ gr.Markdown(metadata_dict[country][language]["Saving_text"]),
234
+ gr.Markdown(metadata_dict[country][language]["Saved_text"]),
235
+ gr.update(label=metadata_dict[country][language]["Timestamp"]),
236
+ gr.update(value=metadata_dict[country][language]["Exit_btn"]),
237
+ gr.Markdown(metadata_dict[country][language]["Browse_text"]),
238
+ gr.Markdown(metadata_dict[country][language]["Loading_msg"]),
239
+ # gr.update(choices=categories_keys_translated, interactive=True, label=metadata_dict[country][language].get("Add_Category","Additional Categories (Optional)"), allow_custom_value=False, elem_id="additional_category_btn"),
240
+ # gr.update(choices=[], interactive=True, label=metadata_dict[country][language].get("Add_Concept","Additional Concepts (Optional)"), allow_custom_value=True, elem_id="additional_concept_btn"),
241
+ gr.update(value=metadata_dict[country][language].get("Hide_all_btn","👤 Hide All Faces")),
242
+ gr.update(value=metadata_dict[country][language].get("Hide_btn","👤 Hide Specific Faces")),
243
+ gr.update(value=metadata_dict[country][language].get("Unhide_btn","👀 Unhide Faces")),
244
+ gr.update(value=metadata_dict[country][language].get("Exclude_btn","Exclude Selected Example")),
245
+ gr.update(label=translated_categories[0], choices=sorted(concepts_dict[country][lang2eng_mapping.get(language, language)][categories_list[0]])),
246
+ gr.update(label=translated_categories[1], choices=sorted(concepts_dict[country][lang2eng_mapping.get(language, language)][categories_list[1]])),
247
+ gr.update(label=translated_categories[2], choices=sorted(concepts_dict[country][lang2eng_mapping.get(language, language)][categories_list[2]])),
248
+ gr.update(label=translated_categories[3], choices=sorted(concepts_dict[country][lang2eng_mapping.get(language, language)][categories_list[3]])),
249
+ gr.update(label=translated_categories[4], choices=sorted(concepts_dict[country][lang2eng_mapping.get(language, language)][categories_list[4]])),
250
+ )
251
+
252
+
253
+ def update_intro_language(selected_country, selected_language, intro_markdown, metadata):
254
+ if selected_language is None:
255
+ return intro_markdown
256
+
257
+ fn = metadata[selected_country][selected_language]["Intro"]
258
+ if not os.path.exists(fn):
259
+ return intro_markdown
260
+
261
+ with open(metadata[selected_country][selected_language]["Intro"], "r", encoding="utf-8") as f:
262
+ INTRO_TEXT = f.read()
263
+ return gr.Markdown(INTRO_TEXT)
264
+
265
+
266
+ def handle_click_example(user_examples, concepts_dict):
267
+ print("handle_click_example")
268
+ print(user_examples)
269
+ ex = [item for item in user_examples]
270
+ # print(ex)
271
+ image_inp = ex[0]
272
+ image_url_inp = ex[1]
273
+ long_caption_inp = ex[2]
274
+ country_btn = ex[3]
275
+ language_btn = ex[4]
276
+ category_btn = ex[5]
277
+ concept_btn = ex[6]
278
+ additional_concepts_by_category = ex[7]
279
+ exampleid_btn = ex[8]
280
+ additional_concepts_by_category = [[] if (len(cat_concept)==1 and cat_concept[0]=='') else cat_concept for cat_concept in additional_concepts_by_category]
281
+
282
+ # import pdb; pdb.set_trace()
283
+ # # excluded_btn = ex[10] # TODO: add functionality that if True "exclude" button changes to "excluded"
284
+ # # is_blurred = ex[11]
285
+ # # Get predefined categories in the correct order
286
+ # predefined_categories = sorted(list(concepts_dict[country_btn][lang2eng_mapping.get(language_btn, language_btn)].keys()))[:5]
287
+
288
+ # # Create dropdown values for each category
289
+ # dropdown_values = []
290
+ # for category in predefined_categories:
291
+ # if additional_concepts_by_category and category in additional_concepts_by_category:
292
+ # dropdown_values.append(additional_concepts_by_category[category])
293
+ # else:
294
+ # dropdown_values.append(None)
295
+
296
+ ### TODO: fix additional concepts not saving if categories in other language than English
297
+ # # Get the English version of the language
298
+ # eng_lang = lang2eng_mapping.get(language_btn, language_btn)
299
+
300
+ # # Get predefined categories in the correct order
301
+ # predefined_categories = sorted(list(concepts_dict[country_btn][eng_lang].keys()))[:5]
302
+
303
+ # # Create dropdown values for each category
304
+ # dropdown_values = []
305
+ # for category in predefined_categories:
306
+ # if additional_concepts_by_category and category in additional_concepts_by_category:
307
+ # dropdown_values.append(additional_concepts_by_category[category])
308
+ # else:
309
+ # dropdown_values.append(None)
310
+
311
+ # Need to return values for each category dropdown
312
+ return [image_inp, image_url_inp, long_caption_inp, exampleid_btn, category_btn, concept_btn] + additional_concepts_by_category #, is_blurred
313
+
314
+
315
+ def is_password_correct(hashed_password, entered_password):
316
+ is_valid = bcrypt.checkpw(entered_password.encode(), hashed_password.encode())
317
+ # print("password_check: ", entered_password," ", hashed_password," ", is_valid)
318
+ return is_valid
319
+
320
+
321
+ ## Face blurring functions
322
+
323
+ def detect_faces(image):
324
+ """
325
+ Detect faces in an image using RetinaFace.
326
+
327
+ Args:
328
+ image (numpy.ndarray): Input image in BGR
329
+
330
+ """
331
+ # Start timer
332
+ start_time = time.time()
333
+
334
+ # Detect faces using RetinaFace
335
+ detection_start = time.time()
336
+ faces = RetinaFace.detect_faces(image, threshold=0.8)
337
+ detection_time = time.time() - detection_start
338
+
339
+ return faces, detection_time
340
+
341
+ # Hide Faces Button
342
+ def select_faces_to_hide(image, blur_faces_ids):
343
+ if image is None:
344
+ return None, Modal(visible=False), Modal(visible=False), None , "", None, gr.update(value=[])
345
+ else:
346
+ # Detect faces
347
+ # import pdb; pdb.set_trace()
348
+ face_images = image.copy()
349
+ faces, detection_time = detect_faces(face_images)
350
+ print(f"Detection time: {detection_time:.2f} seconds")
351
+ # pdb.set_trace()
352
+ # Draw detections with IDs
353
+ for face_id, face_data in enumerate(faces.values(), start=1):
354
+ # Get face coordinates
355
+ facial_area = face_data['facial_area']
356
+ x1, y1, x2, y2 = facial_area
357
+
358
+ # Draw rectangle around face
359
+ cv2.rectangle(face_images, (x1, y1), (x2, y2), (0, 0, 255), 2)
360
+
361
+ # Add ID text
362
+ cv2.putText(face_images, f"ID: {face_id}", (x1, y1 - 10),
363
+ cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)
364
+ # Update face count
365
+ face_count = len(faces)
366
+ blur_faces_ids = gr.update(choices=[f"Face ID: {i}" for i in range(1, face_count + 1)])
367
+ current_faces_info = gr.State(faces)
368
+ if face_count == 0:
369
+ return image, Modal(visible=False), Modal(visible=True), None, "", None, gr.update(value=[])
370
+ else:
371
+ return image, Modal(visible=True), Modal(visible=False), face_images, str(face_count), current_faces_info, blur_faces_ids #
372
+
373
+ def blur_selected_faces(image, blur_faces_ids, faces_info, face_img, faces_count): # is_blurred
374
+ if not blur_faces_ids:
375
+ return image, Modal(visible=True), face_img, faces_count, blur_faces_ids # is_blurred
376
+
377
+ faces = faces_info.value
378
+ parsed_faces_ids = blur_faces_ids
379
+ parsed_faces_ids = [f"face_{val.split(':')[-1].strip()}" for val in parsed_faces_ids]
380
+
381
+ # Base blur amount and bounds
382
+ MIN_BLUR = 31 # Minimum blur amount (must be odd)
383
+ MAX_BLUR = 131 # Maximum blur amount (must be odd)
384
+
385
+ blurring_start = time.time()
386
+ # Process each face
387
+ face_count = 0
388
+ if faces and isinstance(faces, dict):
389
+
390
+ # blur by id
391
+ for face_key in parsed_faces_ids:
392
+ face_count += 1
393
+ try:
394
+ face_data = faces[face_key]
395
+ except KeyError:
396
+ gr.Warning(f"⚠️ Face ID {face_key.split('_')[-1]} not found in detected faces.", duration=5)
397
+ return image, Modal(visible=True), face_img, faces_count, blur_faces_ids # is_blurred
398
+
399
+ # Get bounding box coordinates
400
+ x1, y1, x2, y2 = face_data['facial_area']
401
+
402
+ # Calculate face region size
403
+ face_width = x2 - x1
404
+ face_height = y2 - y1
405
+ face_size = max(face_width, face_height)
406
+
407
+ # Calculate adaptive blur amount based on face size
408
+ # Scale blur amount between MIN_BLUR and MAX_BLUR based on face size
409
+ # Using image width as reference for scaling
410
+ img_width = image.shape[1]
411
+ blur_amount = int(MIN_BLUR + (MAX_BLUR - MIN_BLUR) * (face_size / img_width))
412
+
413
+ # Ensure blur amount is odd
414
+ blur_amount = blur_amount if blur_amount % 2 == 1 else blur_amount + 1
415
+ # Ensure within bounds
416
+ blur_amount = max(MIN_BLUR, min(MAX_BLUR, blur_amount))
417
+
418
+ # Ensure the coordinates are within the image boundaries
419
+ ih, iw = image.shape[:2]
420
+ x1, y1 = max(0, x1), max(0, y1)
421
+ x2, y2 = min(iw, x2), min(ih, y2)
422
+
423
+ # Extract face region
424
+ face_region = image[y1:y2, x1:x2]
425
+
426
+ # Apply blur
427
+ blurred_face = cv2.GaussianBlur(face_region, (blur_amount, blur_amount), 0)
428
+
429
+ # Replace face region with blurred version
430
+ image[y1:y2, x1:x2] = blurred_face
431
+
432
+ blurring_time = time.time() - blurring_start
433
+ # Print timing information
434
+ print(f"Face blurring performance metrics:")
435
+ print(f"Face blurring time: {blurring_time:.4f} seconds")
436
+
437
+ if face_count == 0:
438
+ return image, Modal(visible=True), face_img, faces_count, blur_faces_ids, False
439
+ else:
440
+ return image, Modal(visible=False), None, None, gr.update(value=[]), True
441
+
442
+ def blur_all_faces(image):
443
+ if image is None:
444
+ return None, Modal(visible=False), False
445
+ else:
446
+ # Base blur amount and bounds
447
+ MIN_BLUR = 31 # Minimum blur amount (must be odd)
448
+ MAX_BLUR = 131 # Maximum blur amount (must be odd)
449
+
450
+ # Start timer
451
+ start_time = time.time()
452
+
453
+ # Detect faces using RetinaFace
454
+ detection_start = time.time()
455
+ faces = RetinaFace.detect_faces(image)
456
+ detection_time = time.time() - detection_start
457
+
458
+ # Create a copy of the image
459
+ output_image = image.copy()
460
+
461
+ face_count = 0
462
+ blurring_start = time.time()
463
+
464
+ # Process each face
465
+ if faces and isinstance(faces, dict):
466
+ for face_key in faces:
467
+ face_count += 1
468
+ face_data = faces[face_key]
469
+
470
+ # Get bounding box coordinates
471
+ x1, y1, x2, y2 = face_data['facial_area']
472
+
473
+ # Calculate face region size
474
+ face_width = x2 - x1
475
+ face_height = y2 - y1
476
+ face_size = max(face_width, face_height)
477
+
478
+ # Calculate adaptive blur amount based on face size
479
+ # Scale blur amount between MIN_BLUR and MAX_BLUR based on face size
480
+ # Using image width as reference for scaling
481
+ img_width = image.shape[1]
482
+ blur_amount = int(MIN_BLUR + (MAX_BLUR - MIN_BLUR) * (face_size / img_width))
483
+
484
+ # Ensure blur amount is odd
485
+ blur_amount = blur_amount if blur_amount % 2 == 1 else blur_amount + 1
486
+ # Ensure within bounds
487
+ blur_amount = max(MIN_BLUR, min(MAX_BLUR, blur_amount))
488
+
489
+ # Ensure the coordinates are within the image boundaries
490
+ ih, iw = image.shape[:2]
491
+ x1, y1 = max(0, x1), max(0, y1)
492
+ x2, y2 = min(iw, x2), min(ih, y2)
493
+
494
+ # Extract face region
495
+ face_region = output_image[y1:y2, x1:x2]
496
+
497
+ # Apply blur
498
+ blurred_face = cv2.GaussianBlur(face_region, (blur_amount, blur_amount), 0)
499
+
500
+ # Replace face region with blurred version
501
+ output_image[y1:y2, x1:x2] = blurred_face
502
+
503
+ blurring_time = time.time() - blurring_start
504
+ total_time = time.time() - start_time
505
+ # Print timing information
506
+ print(f"Face blurring performance metrics:")
507
+ print(f"Total faces detected: {face_count}")
508
+ print(f"Face detection time: {detection_time:.4f} seconds")
509
+ print(f"Face blurring time: {blurring_time:.4f} seconds")
510
+ print(f"Total processing time: {total_time:.4f} seconds")
511
+ print(f"Average time per face: {(total_time/max(1, face_count)):.4f} seconds")
512
+
513
+ if face_count == 0:
514
+ return image, Modal(visible=True), False
515
+ else:
516
+ return output_image, Modal(visible=False), True
517
+
518
+ def unhide_faces(img, ori_img): # is_blurred
519
+ if img is None:
520
+ return None, False
521
+ elif np.array_equal(img, ori_img.value):
522
+ return img # is_blurred
523
+ else:
524
+ return ori_img.value, False
525
+
526
+ def check_exclude_fn(image):
527
+ if image is None:
528
+ gr.Warning("⚠️ No image to exclude.")
529
+ return gr.update(visible=False)
530
+ else:
531
+ return gr.update(visible=True)
532
+
533
+ def has_user_json(username, country,language_choice, local_ds_directory_path):
534
+ """Check if JSON files exist for username pattern."""
535
+ return bool(glob.glob(os.path.join(local_ds_directory_path, "logged_in_users", country, language_choice, username, "**", "*.json"), recursive=True))
ui/__pycache__/layout.cpython-310.pyc ADDED
Binary file (7.66 kB). View file
 
ui/__pycache__/layout.cpython-313.pyc ADDED
Binary file (12.4 kB). View file
 
ui/__pycache__/main_page.cpython-310.pyc ADDED
Binary file (5.96 kB). View file
 
ui/__pycache__/selection_page.cpython-310.pyc ADDED
Binary file (2 kB). View file
 
ui/layout.py ADDED
@@ -0,0 +1,373 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+
3
+ from logic.data_utils import CustomHFDatasetSaver
4
+ from data.lang2eng_map import lang2eng_mapping
5
+ from gradio_modal import Modal
6
+ from logic.handlers import *
7
+ from config.settings import *
8
+ from functools import partial
9
+
10
+ from .selection_page import build_selection_page
11
+ from .main_page import build_main_page
12
+
13
+ def switch_ui(country, language, username, password, flag=False, metadata_dict=None):
14
+ print(f"Language: {language}, Country: {country}")
15
+
16
+ # Hide the selection page and show the main UI.
17
+ if flag:
18
+ local_storage = [None, None, "", ""]
19
+ return (local_storage, gr.update(visible=flag), gr.update(visible=not flag),
20
+ gr.update(visible=not flag),
21
+ gr.update(choices=list(metadata_dict.keys()), label="Country", value=None),
22
+ gr.update(value=None, choices=[], label="Language", allow_custom_value=False, interactive=False))
23
+
24
+ else:
25
+ local_storage = [country, language, username, password]
26
+ return local_storage, gr.update(visible=flag), gr.update(visible=not flag), gr.update(visible=not flag)
27
+
28
+ def build_ui(concepts_dict, metadata_dict, HF_API_TOKEN, HF_DATASET_NAME):
29
+ hf_writer = CustomHFDatasetSaver(HF_API_TOKEN, HF_DATASET_NAME, private=True)
30
+ custom_css = """
31
+ .compact-container {
32
+ max-width: 600px;
33
+ margin: auto;
34
+ padding: 20px;
35
+ }
36
+ .compact-btn {
37
+ }
38
+ """
39
+ with gr.Blocks(css=custom_css) as ui:
40
+ local_storage = gr.BrowserState([None, None, "", ""])
41
+ # First page: selection
42
+
43
+ selection_page, country_choice, language_choice, proceed_btn, username, password, intro_markdown = build_selection_page(metadata_dict)
44
+
45
+ # Second page
46
+ cmp_main_ui = build_main_page(concepts_dict, metadata_dict, local_storage)
47
+
48
+ main_ui_placeholder = cmp_main_ui["main_ui_placeholder"]
49
+ country_inp = cmp_main_ui["country_inp"]
50
+ language_inp = cmp_main_ui["language_inp"]
51
+ image_inp = cmp_main_ui["image_inp"]
52
+ image_url_inp = cmp_main_ui["image_url_inp"]
53
+ long_caption_inp = cmp_main_ui["long_caption_inp"]
54
+ category_btn = cmp_main_ui["category_btn"]
55
+ concept_btn = cmp_main_ui["concept_btn"]
56
+ category_concept_dropdowns = cmp_main_ui["category_concept_dropdowns"]
57
+ instruct_btn = cmp_main_ui["instruct_btn"]
58
+ clear_btn = cmp_main_ui["clear_btn"]
59
+ hide_faces_btn = cmp_main_ui["hide_faces_btn"]
60
+ hide_all_faces_btn = cmp_main_ui["hide_all_faces_btn"]
61
+ unhide_faces_btn = cmp_main_ui["unhide_faces_btn"]
62
+ submit_btn = cmp_main_ui["submit_btn"]
63
+ timestamp_btn = cmp_main_ui["timestamp_btn"]
64
+ exampleid_btn = cmp_main_ui["exampleid_btn"]
65
+ username_inp = cmp_main_ui["username_inp"]
66
+ password_inp = cmp_main_ui["password_inp"]
67
+ modal_saving = cmp_main_ui["modal_saving"]
68
+ modal_data_saved = cmp_main_ui["modal_data_saved"]
69
+ modal = cmp_main_ui["modal"]
70
+ exit_btn = cmp_main_ui["exit_btn"]
71
+ intro_text_inp = cmp_main_ui["intro_text_inp"] # Note intro_text is actually the "Task" text from metadata
72
+ intro_text_inst_inp = cmp_main_ui["intro_text_inst_inp"] # This is the "Instructions" text from metadata
73
+ modal_saving_text = cmp_main_ui["modal_saving_text"]
74
+ modal_data_saved_text = cmp_main_ui["modal_data_saved_text"]
75
+ exclude_btn = cmp_main_ui["exclude_btn"]
76
+ modal_exclude_confirm = cmp_main_ui["modal_exclude_confirm"]
77
+ cancel_exclude_btn = cmp_main_ui["cancel_exclude_btn"]
78
+ confirm_exclude_btn = cmp_main_ui["confirm_exclude_btn"]
79
+
80
+ # is_blurred = gr.State(False) # Initialize as False
81
+
82
+ # Notification image is false
83
+ with Modal(visible=False) as modal_img_url:
84
+ gr.Markdown("The image URL is not valid. Please provide a valid image URL.")
85
+ # gr.Warning(f"⚠️ The image URL is not valid. Please provide a valid image URL.")
86
+
87
+ # Event listeners
88
+ gr.on(
89
+ triggers=[image_url_inp.change],
90
+ fn=update_image,
91
+ inputs=[image_url_inp],
92
+ outputs=[image_inp, modal_img_url]
93
+ )
94
+ gr.on(
95
+ triggers=[language_choice.change],
96
+ fn=partial(update_intro_language, metadata=metadata_dict),
97
+ inputs=[country_choice, language_choice, intro_markdown],
98
+ outputs=[intro_markdown]
99
+ )
100
+
101
+ gr.on(
102
+ triggers=[image_inp.change, long_caption_inp.change],
103
+ fn=update_timestamp,
104
+ outputs=[timestamp_btn]
105
+ )
106
+ ori_img = gr.State(None)
107
+ gr.on(
108
+ triggers=[image_inp.change],
109
+ fn=validate_inputs,
110
+ inputs=[image_inp, ori_img], # is_blurred
111
+ outputs=[submit_btn, image_inp, ori_img], # is_blurred
112
+ )
113
+
114
+ # Clear Button
115
+ clear_btn.click(
116
+ fn=clear_data,
117
+ outputs=[
118
+ image_inp, image_url_inp, long_caption_inp, exampleid_btn,
119
+ category_btn, concept_btn,
120
+ category_concept_dropdowns[0], category_concept_dropdowns[1], category_concept_dropdowns[2],
121
+ category_concept_dropdowns[3], category_concept_dropdowns[4]
122
+ ],
123
+ )
124
+
125
+ #============= Face Blurring ============= #
126
+ with Modal(visible=False) as modal_faces:
127
+ with gr.Column():
128
+ face_img = gr.Image(label="Image Faces", elem_id="image_faces", format="png", height=512, width=768)
129
+ with gr.Row():
130
+ faces_count = gr.Textbox(label="Face Counts", elem_id="face_counts", interactive=False)
131
+ blur_faces_ids = gr.Dropdown(
132
+ [], value=[], multiselect=True, label="Please select the faces IDs you want to blur.", elem_id="blur_faces_ids")
133
+ # blur_faces_ids = gr.Textbox(label="Specify faces ids to blur by comma", elem_id="blur_faces_ids", interactive=True)
134
+ submit_btn_face = gr.Button("Submit", variant="primary", interactive=True, elem_id="submit_btn_face")
135
+
136
+ with Modal(visible=False) as modal_faces_2:
137
+ gr.Markdown("The current image does not have any faces to hide.")
138
+
139
+ faces_info = gr.State(None)
140
+ hide_faces_btn.click(
141
+ fn=select_faces_to_hide,
142
+ inputs=[image_inp, blur_faces_ids],
143
+ outputs=[image_inp, modal_faces, modal_faces_2, face_img, faces_count, faces_info, blur_faces_ids]
144
+ )
145
+
146
+ submit_btn_face.click(
147
+ fn=blur_selected_faces,
148
+ inputs=[image_inp, blur_faces_ids, faces_info, face_img, faces_count], # is_blurred
149
+ outputs=[image_inp, modal_faces, face_img, faces_count, blur_faces_ids] # is_blurred
150
+ )
151
+
152
+ hide_all_faces_btn.click(
153
+ fn=blur_all_faces,
154
+ inputs=[image_inp],
155
+ outputs=[image_inp, modal_faces_2] # is_blurred
156
+ )
157
+
158
+ unhide_faces_btn.click(
159
+ fn=unhide_faces,
160
+ inputs=[image_inp, ori_img], # is_blurred
161
+ outputs=[image_inp] # is_blurred
162
+ )
163
+
164
+ # ===============================
165
+ with gr.Column(visible=False, elem_id="browse_data") as browse_data_placeholder:
166
+ # Browse Data
167
+ browse_data_text = gr.Markdown("## Browse Data")
168
+
169
+ loading_msg = gr.Markdown("**Loading your data, please wait ...**")
170
+ for contrib_type in ["Your data", "Other data"]:
171
+ with gr.Tab(contrib_type):
172
+ if contrib_type == "Your data":
173
+ # Show user's past data points
174
+ user_examples = gr.Dataset(
175
+ samples=[],
176
+ components=['image','textbox','textbox','textbox','textbox',
177
+ 'textbox','textbox','textbox', 'textbox'],
178
+ headers=['Image', 'Image URL (Optional, if not uploading an image)', 'Description', 'Country', 'Language',
179
+ 'Category', 'Concept', 'Additional Concepts', 'ID'],
180
+ )
181
+ # Handle clicking on an example
182
+ user_examples.click(
183
+ fn=partial(handle_click_example, concepts_dict=concepts_dict),
184
+ inputs=[user_examples],
185
+ outputs=[
186
+ image_inp, image_url_inp, long_caption_inp, exampleid_btn,
187
+ category_btn, concept_btn,
188
+ category_concept_dropdowns[0], category_concept_dropdowns[1], category_concept_dropdowns[2],
189
+ category_concept_dropdowns[3], category_concept_dropdowns[4]
190
+ ],
191
+ )
192
+
193
+ elif contrib_type == "Other data":
194
+ # Show others' images
195
+ pass
196
+
197
+ # ============================================ #
198
+ # Submit Button Click events
199
+
200
+ proceed_btn.click(
201
+ fn=partial(update_language, metadata_dict=metadata_dict, concepts_dict=concepts_dict),
202
+ inputs=[country_choice, language_choice, username, password],
203
+ outputs=[
204
+ country_inp, language_inp, username_inp, password_inp, category_btn, concept_btn, image_inp,
205
+ image_url_inp, long_caption_inp, intro_text_inp, intro_text_inst_inp, instruct_btn, clear_btn,
206
+ submit_btn, modal_saving_text, modal_data_saved_text, timestamp_btn, exit_btn, browse_data_text,
207
+ loading_msg, hide_all_faces_btn, hide_faces_btn, unhide_faces_btn, exclude_btn,
208
+ category_concept_dropdowns[0], category_concept_dropdowns[1], category_concept_dropdowns[2],
209
+ category_concept_dropdowns[3], category_concept_dropdowns[4]
210
+ ]
211
+ ).then(
212
+ fn=partial(switch_ui, flag=False),
213
+ inputs=[country_choice, language_choice, username, password],
214
+ outputs=[local_storage, selection_page, main_ui_placeholder, browse_data_placeholder],
215
+ ).then(
216
+ fn=partial(update_user_data, HF_DATASET_NAME=HF_DATASET_NAME, local_ds_directory_path = LOCAL_DS_DIRECTORY_PATH),
217
+ inputs=[username_inp, password_inp, country_choice, language_choice],
218
+ outputs=[user_examples, loading_msg],
219
+ )
220
+
221
+
222
+ # Exit Button
223
+ exit_btn.click(
224
+ fn=exit,
225
+ outputs=[
226
+ image_inp, image_url_inp, long_caption_inp, user_examples, loading_msg,
227
+ username, password, local_storage, exampleid_btn, category_btn, concept_btn,
228
+ category_concept_dropdowns[0], category_concept_dropdowns[1], category_concept_dropdowns[2],
229
+ category_concept_dropdowns[3], category_concept_dropdowns[4]
230
+ ],
231
+ ).then(
232
+ fn=partial(switch_ui, flag=True, metadata_dict=metadata_dict),
233
+ inputs=[country_choice, language_choice, username, password],
234
+ outputs=[local_storage, selection_page, main_ui_placeholder, browse_data_placeholder, country_choice, language_choice],
235
+ )
236
+
237
+ # Disable button while saving
238
+ # Note: I think this is not longer needed as we clear all the inputs and disable the submit button if the data is saved correctly
239
+ # def disable_submit():
240
+ # return gr.update(interactive=False)
241
+
242
+ # def enable_submit():
243
+ # return gr.update(interactive=True)
244
+
245
+ # STEP 1: show modal
246
+ # submit_btn.click(lambda: Modal(visible=True), None, modal_saving)
247
+
248
+ # STEP 2: disable button
249
+ # submit_btn.click(disable_submit, None, [submit_btn], queue=False)
250
+
251
+ #STEP 3: perform save_data
252
+ data_outputs = {
253
+ "image": image_inp,
254
+ "image_url": image_url_inp,
255
+ "caption": long_caption_inp,
256
+ "country": country_inp,
257
+ "language": language_inp,
258
+ "category": category_btn,
259
+ "concept": concept_btn,
260
+ "category_1_concepts": category_concept_dropdowns[0],
261
+ "category_2_concepts": category_concept_dropdowns[1],
262
+ "category_3_concepts": category_concept_dropdowns[2],
263
+ "category_4_concepts": category_concept_dropdowns[3],
264
+ "category_5_concepts": category_concept_dropdowns[4],
265
+ "timestamp": timestamp_btn,
266
+ "username": username_inp,
267
+ "password": password_inp,
268
+ "id": exampleid_btn,
269
+ "excluded": gr.State(value=False),
270
+ "concepts_dict": gr.State(value=concepts_dict),
271
+ "country_lang_map": gr.State(value=lang2eng_mapping),
272
+ # "is_blurred": is_blurred
273
+ }
274
+ # data_outputs = [image_inp, image_url_inp, long_caption_inp,
275
+ # country_inp, language_inp, category_btn, concept_btn,
276
+ # timestamp_btn, username_inp, password_inp, exampleid_btn]
277
+ hf_writer.setup(list(data_outputs.keys()), local_ds_folder = LOCAL_DS_DIRECTORY_PATH)
278
+
279
+ # STEP 4: Chain save_data, then update_user_data, then re-enable button, hide modal, and clear
280
+ submit_btn.click(
281
+ hf_writer.save,
282
+ list(data_outputs.values()),
283
+ None,
284
+ ).success(
285
+ fn=clear_data,
286
+ outputs=[
287
+ image_inp, image_url_inp, long_caption_inp, exampleid_btn,
288
+ category_btn, concept_btn,
289
+ category_concept_dropdowns[0], category_concept_dropdowns[1], category_concept_dropdowns[2],
290
+ category_concept_dropdowns[3], category_concept_dropdowns[4]
291
+ ],
292
+ # ).success(enable_submit,
293
+ # None, [submit_btn]
294
+ # ).success(lambda: Modal(visible=False),
295
+ # None, modal_saving
296
+ # ).success(lambda: Modal(visible=True),
297
+ # None, modal_data_saved
298
+ ).success(
299
+ # set loading msg
300
+ lambda: gr.update(value="**Loading your data, please wait ...**"),
301
+ None, loading_msg
302
+ ).success(
303
+ fn=partial(update_user_data, HF_DATASET_NAME=HF_DATASET_NAME, local_ds_directory_path = LOCAL_DS_DIRECTORY_PATH),
304
+ inputs=[username_inp, password_inp, country_choice, language_choice],
305
+ outputs=[user_examples, loading_msg]
306
+ )
307
+
308
+ # ============================================ #
309
+ # instructions button
310
+ instruct_btn.click(lambda: Modal(visible=True), None, modal)
311
+ # ============================================ #
312
+
313
+ # Load saved values from local storage
314
+ @ui.load(inputs=[local_storage], outputs=[country_choice, language_choice, username, password])
315
+ def load_from_local_storage(saved_values):
316
+ print("loading from local storage", saved_values)
317
+ return saved_values[0], saved_values[1], saved_values[2], saved_values[3]
318
+
319
+ # ============================================= #
320
+ # Exclude button
321
+ # ============================================= #
322
+
323
+ exclude_status = gr.Markdown(visible=False)
324
+
325
+ # Show confirmation modal when exclude button is clicked
326
+ exclude_btn.click(
327
+ fn=check_exclude_fn,
328
+ inputs=[image_inp],
329
+ outputs=[modal_exclude_confirm]
330
+ )
331
+
332
+ # Close modal when cancel button is clicked
333
+ cancel_exclude_btn.click(
334
+ fn=lambda: gr.update(visible=False),
335
+ outputs=[modal_exclude_confirm]
336
+ )
337
+
338
+ # Handle confirm exclusion
339
+ confirm_exclude_btn.click(
340
+ fn=lambda: gr.update(visible=False),
341
+ outputs=[modal_exclude_confirm]
342
+ ).success(
343
+ fn=hf_writer.save,
344
+ inputs=[
345
+ image_inp, image_url_inp, long_caption_inp, country_inp, language_inp,
346
+ category_btn, concept_btn,
347
+ category_concept_dropdowns[0], category_concept_dropdowns[1], category_concept_dropdowns[2],
348
+ category_concept_dropdowns[3], category_concept_dropdowns[4],
349
+ timestamp_btn, username_inp, password_inp, exampleid_btn, gr.State(value=True),
350
+ gr.State(value=concepts_dict), gr.State(value=lang2eng_mapping)
351
+ ],
352
+ outputs=None
353
+ ).success(
354
+ fn=clear_data,
355
+ outputs=[
356
+ image_inp, image_url_inp, long_caption_inp, exampleid_btn,
357
+ category_btn, concept_btn,
358
+ category_concept_dropdowns[0], category_concept_dropdowns[1], category_concept_dropdowns[2],
359
+ category_concept_dropdowns[3], category_concept_dropdowns[4]
360
+ ]
361
+ ).success(
362
+ fn=lambda: gr.update(value="Example excluded successfully", visible=True),
363
+ outputs=exclude_status
364
+ ).success(
365
+ fn=lambda: gr.update(value="**Refreshing your data, please wait...**"),
366
+ outputs=loading_msg
367
+ ).success(
368
+ fn=partial(update_user_data, HF_DATASET_NAME=HF_DATASET_NAME, local_ds_directory_path=LOCAL_DS_DIRECTORY_PATH),
369
+ inputs=[username_inp, password_inp, country_choice, language_choice],
370
+ outputs=[user_examples, loading_msg]
371
+ )
372
+
373
+ return ui
ui/main_page.py ADDED
@@ -0,0 +1,192 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from functools import partial
3
+ from gradio_modal import Modal
4
+ from data.lang2eng_map import lang2eng_mapping
5
+ from data.words_map import words_mapping
6
+ import datetime
7
+
8
+
9
+ def get_key_by_value(dictionary, value):
10
+ for key, val in dictionary.items():
11
+ if val == value:
12
+ return key
13
+ return None
14
+
15
+
16
+ def load_concepts(category, concepts, local_storage):
17
+ country, lang, _, _ = local_storage.value
18
+ if category:
19
+ if lang in words_mapping:
20
+ category = get_key_by_value(words_mapping[lang], category) # translate back the category name
21
+ return gr.update(choices=sorted(concepts[country][lang2eng_mapping.get(lang, lang)][category])) # value=[]
22
+ else:
23
+ return gr.update(choices=[], value=[])
24
+
25
+
26
+ def build_main_page(concepts_dict, metadata_dict, local_storage):
27
+ try:
28
+ country, lang, _, _ = local_storage.value
29
+ except (TypeError, ValueError):
30
+ country, lang = "USA", "English"
31
+
32
+ with gr.Column(visible=False, elem_id="main_page") as main_ui_placeholder:
33
+ # Read the markdown file
34
+ with open(metadata_dict["USA"]["English"]["Task"], "r", encoding="utf-8") as f:
35
+ TASK_TEXT = f.read()
36
+
37
+ with open(metadata_dict["USA"]["English"]["Instructions"], "r", encoding="utf-8") as f:
38
+ INST_TEXT = f.read()
39
+
40
+ intro_text_inp = gr.Markdown(TASK_TEXT)
41
+
42
+ # gr.Markdown("## Data Collection")
43
+ with gr.Row(equal_height=True):
44
+ country_inp = gr.Textbox(label="Country", elem_id="country_inp", interactive=False)
45
+ language_inp = gr.Textbox(label="Language", elem_id="language_inp", interactive=False)
46
+ username_inp = gr.Textbox(label="email (optional)", type="email", elem_id="username_inp", interactive=False)
47
+ password_inp = gr.Textbox(label="password (optional)", type="password", elem_id="password_inp", interactive=False)
48
+ exit_btn = gr.Button("⬅️ Change Language", elem_id="exit_btn", elem_classes=["compact-btn"])
49
+
50
+ with gr.Row(equal_height=True, ):
51
+ with gr.Column():
52
+ # Main category and concept row - SINGLE SELECTION
53
+ with gr.Row():
54
+ categories = concepts_dict["USA"]["English"]
55
+ category_btn = gr.Dropdown(choices=categories.keys(), interactive=True, label="Main Category",
56
+ allow_custom_value=False, elem_id="category_btn", multiselect=False, value=None)
57
+ concept_btn = gr.Dropdown(choices=[], interactive=True, label="Main Concept",
58
+ allow_custom_value=True, elem_id="concept_btn", multiselect=False)
59
+
60
+ category_btn.change(
61
+ fn=partial(load_concepts, concepts=concepts_dict, local_storage=local_storage),
62
+ inputs=category_btn,
63
+ outputs=[concept_btn]
64
+ )
65
+
66
+ image_inp = gr.Image(label="Image", elem_id="image_inp", format="png", height=512, width=768)
67
+ with gr.Row():
68
+ hide_all_faces_btn = gr.Button("👤 Hide All Faces", elem_id="hide_all_faces_btn")
69
+ hide_faces_btn = gr.Button("👤 Hide Specific Faces", elem_id="hide_faces_btn")
70
+ unhide_faces_btn = gr.Button("👀 Unhide Faces", elem_id="unhide_faces_btn")
71
+ image_url_inp = gr.Textbox(label="Image URL (Optional, if not uploading an image)", type="text", elem_id="image_url_inp")
72
+
73
+ with gr.Column():
74
+ # short_caption_inp = gr.Textbox(lines=2, label="Short Description", elem_id="short_caption_inp")
75
+ long_caption_inp = gr.Textbox(lines=6, label="Description", elem_id="long_caption_inp")
76
+
77
+ categories_list = sorted(list(concepts_dict["USA"]["English"].keys()))[:5]
78
+
79
+ def create_category_dropdown(category, index):
80
+ original_category = category
81
+
82
+ if lang in words_mapping:
83
+ display_category = words_mapping[lang].get(original_category, original_category)
84
+ else:
85
+ display_category = original_category
86
+
87
+ category_choices = concepts_dict[country][lang2eng_mapping.get(lang, lang)][original_category]
88
+ sorted_choices = sorted(category_choices)
89
+
90
+ dropdown = gr.Dropdown(
91
+ choices=sorted_choices,
92
+ interactive=True,
93
+ label=display_category,
94
+ allow_custom_value=True,
95
+ elem_id=f"category_{index+1}_concepts_btn",
96
+ multiselect=True,
97
+ value=None
98
+ )
99
+ return dropdown
100
+
101
+ category_concept_dropdowns = []
102
+
103
+ # First row - categories 1 and 2
104
+ with gr.Row():
105
+ dropdown1 = create_category_dropdown(categories_list[0], 0)
106
+ category_concept_dropdowns.append(dropdown1)
107
+
108
+ dropdown2 = create_category_dropdown(categories_list[1], 1)
109
+ category_concept_dropdowns.append(dropdown2)
110
+
111
+ # Second row - categories 3 and 4
112
+ # with gr.Row():
113
+ dropdown3 = create_category_dropdown(categories_list[2], 2)
114
+ category_concept_dropdowns.append(dropdown3)
115
+
116
+ dropdown4 = create_category_dropdown(categories_list[3], 3)
117
+ category_concept_dropdowns.append(dropdown4)
118
+
119
+ dropdown5 = create_category_dropdown(categories_list[4], 4)
120
+ category_concept_dropdowns.append(dropdown5)
121
+
122
+ # Third row - category 5 and instructions button
123
+ with gr.Row(equal_height=True):
124
+ # dropdown5 = create_category_dropdown(categories_list[4], 4)
125
+ # category_concept_dropdowns.append(dropdown5)
126
+
127
+ instruct_btn = gr.Button("📘 Show Instructions")
128
+ with Modal(visible=False) as modal:
129
+ intro_text_inst_inp = gr.Markdown(INST_TEXT)
130
+
131
+ with gr.Column():
132
+ # with gr.Row():
133
+ # instruct_btn = gr.Button("📘 Show Instructions")
134
+ # with Modal(visible=False) as modal:
135
+ # intro_text_inst_inp = gr.Markdown(INST_TEXT)
136
+ with gr.Row(equal_height=True):
137
+ clear_btn = gr.Button("Clear", variant="huggingface", elem_id="clear_btn")
138
+ with Modal(visible=False, allow_user_close=False) as modal_saving:
139
+ modal_saving_text = gr.Markdown("⏳ Please wait while your submission is being saved.")
140
+ with Modal(visible=False) as modal_data_saved:
141
+ modal_data_saved_text = gr.Markdown("Your data has been saved successfully. The data in the table below will be updated shortly. You can now close this window.")
142
+ submit_btn = gr.Button("Submit", variant="primary", interactive=False, elem_id="submit_btn")
143
+ with Modal(visible=False) as modal_exclude_confirm:
144
+ gr.Markdown("## Are you sure you want to exclude this example?")
145
+ gr.Markdown("This action will permanently delete the example.")
146
+ with gr.Row():
147
+ cancel_exclude_btn = gr.Button("Cancel")
148
+ confirm_exclude_btn = gr.Button("Yes, delete", variant="stop")
149
+ exclude_btn = gr.Button("Exclude Selected Example", variant="stop", visible=True)
150
+ with gr.Column():
151
+ timestamp_btn = gr.Textbox(datetime.datetime.now(), label="Timestamp", visible=False, elem_id="timestamp_btn", interactive=False) # FIXME visible=False)
152
+ exampleid_btn = gr.Textbox(label="ID", visible=False, elem_id="example_id", interactive=False) # FIXME visible=False)
153
+
154
+ output_dict = {
155
+ "main_ui_placeholder": main_ui_placeholder,
156
+ "country_inp": country_inp,
157
+ "language_inp": language_inp,
158
+ "username_inp": username_inp,
159
+ "password_inp": password_inp,
160
+ "image_inp": image_inp,
161
+ "image_url_inp": image_url_inp,
162
+ "long_caption_inp": long_caption_inp,
163
+ "category_btn": category_btn,
164
+ "concept_btn": concept_btn,
165
+ "category_concept_dropdowns": category_concept_dropdowns,
166
+ "category_1_concepts": category_concept_dropdowns[0],
167
+ "category_2_concepts": category_concept_dropdowns[1],
168
+ "category_3_concepts": category_concept_dropdowns[2],
169
+ "category_4_concepts": category_concept_dropdowns[3],
170
+ "category_5_concepts": category_concept_dropdowns[4],
171
+ "instruct_btn": instruct_btn,
172
+ "clear_btn": clear_btn,
173
+ "submit_btn": submit_btn,
174
+ "modal": modal,
175
+ "modal_saving": modal_saving,
176
+ "modal_data_saved": modal_data_saved,
177
+ "timestamp_btn": timestamp_btn,
178
+ "exampleid_btn": exampleid_btn,
179
+ "exit_btn": exit_btn,
180
+ "intro_text_inp": intro_text_inp,
181
+ "intro_text_inst_inp": intro_text_inst_inp,
182
+ "modal_saving_text": modal_saving_text,
183
+ "modal_data_saved_text": modal_data_saved_text,
184
+ "hide_faces_btn": hide_faces_btn,
185
+ "hide_all_faces_btn": hide_all_faces_btn,
186
+ "unhide_faces_btn": unhide_faces_btn,
187
+ "exclude_btn": exclude_btn,
188
+ "modal_exclude_confirm": modal_exclude_confirm,
189
+ "cancel_exclude_btn": cancel_exclude_btn,
190
+ "confirm_exclude_btn": confirm_exclude_btn,
191
+ }
192
+ return output_dict
ui/selection_page.py ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os.path
2
+ import gradio as gr
3
+ from functools import partial
4
+
5
+ def update_language_options(selected_country, metadata):
6
+ with open(metadata["USA"]["English"]["Intro"], "r", encoding="utf-8") as f:
7
+ INTRO_TEXT = f.read() # default
8
+ # Retrieve the list of languages available for the selected country.
9
+ if selected_country in metadata:
10
+ languages = list(metadata[selected_country].keys())
11
+ if len(languages) == 0:
12
+ gr.Warning("No languages available for the selected country.")
13
+ return gr.Dropdown(choices=[], interactive=False, value=None), gr.Markdown(INTRO_TEXT)
14
+ # select the first language as default
15
+ fn = metadata[selected_country][languages[0]]["Intro"]
16
+ if os.path.exists(fn):
17
+ with open(fn, "r", encoding="utf-8") as f:
18
+ INTRO_TEXT = f.read()
19
+ # Use gr.Dropdown.update to change the choices of the language dropdown.
20
+ return gr.Dropdown(choices=languages, interactive=True, value=None, allow_custom_value=False), gr.Markdown(INTRO_TEXT)
21
+ else:
22
+ return gr.Dropdown(choices=[], interactive=False, value=None, allow_custom_value=False), gr.Markdown(INTRO_TEXT)
23
+
24
+ def build_selection_page(metadata_dict):
25
+ with gr.Column(visible=True, elem_classes=["compact-container"]) as selection_page:
26
+ with gr.Row():
27
+ with open(metadata_dict["USA"]["English"]["Intro"], "r", encoding="utf-8") as f:
28
+ INTRO_TEXT = f.read()
29
+ intro_markdown = gr.Markdown(INTRO_TEXT)
30
+
31
+ gr.Markdown("## Please select your country")
32
+
33
+ country_choice = gr.Dropdown(
34
+ choices=list(metadata_dict.keys()), label="Country", allow_custom_value=False
35
+ )
36
+
37
+ language_choice = gr.Dropdown(
38
+ choices=[],
39
+ label="Language",
40
+ allow_custom_value=False,
41
+ interactive=False # Initially disabled.
42
+ )
43
+
44
+ # When the country selection changes, update the language dropdown.
45
+ country_choice.change(
46
+ fn=partial(update_language_options, metadata=metadata_dict),
47
+ inputs=country_choice,
48
+ outputs=[language_choice, intro_markdown]
49
+ )
50
+ with gr.Row():
51
+ username = gr.Textbox(label="Email (optional)", type="email", elem_id="username_text")
52
+ password = gr.Textbox(label="Password (optional)", type="password", elem_id="password_text")
53
+
54
+ proceed_btn = gr.Button("Proceed")
55
+
56
+ return selection_page, country_choice, language_choice, proceed_btn, username, password, intro_markdown