Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add missing translations #40

Merged
merged 18 commits into from
Feb 8, 2023
3 changes: 2 additions & 1 deletion .github/workflows/data-upload.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ on:
push:
branches:
- main
- feat/missing-translations

jobs:
deploy:
Expand All @@ -25,7 +26,7 @@ jobs:

- run: pip install -r requirements.txt

- run: cd data && mkdir to_upload && python combine.py > to_upload/latest.json
- run: cd data && mkdir to_upload && python combine.py > to_upload/latest_translated.json

- name: Sync JSON files
run: aws s3 sync ./data/to_upload/. s3://cdn.afetbilgi.com
24 changes: 12 additions & 12 deletions data/combine.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import json

data_points = [
{ 'name_tr': 'Geçici Barınma Alanları', 'name_en': 'Temporary Accommodation Places', 'path': 'datasets/barinma.json' },
{ 'name_tr': 'Güvenli Toplanma Alanları', 'name_en': 'Safe Gathering Places', 'path': 'datasets/toplanma.json' },
{ 'name': 'Yemek', 'name_en': 'Food', 'path': 'datasets/yemek.json' },
{ 'name': 'Önemli Telefon Numaraları', 'name_en': 'Crucial Phone Number', 'path': 'datasets/telefon.json' },
{ 'name': 'Önemli Web Siteleri', 'name_en': 'Useful Links', 'path': 'datasets/faydali_linkler.json' },
{ 'name': 'Veterinerler', 'name_en': 'Veterinarians', 'path': 'datasets/veteriner.json' },
{ 'name_tr': 'Yardım Toplama Merkezleri','name_en': 'Other Donation', 'path': 'datasets/yardim_toplama_merkezleri.json' },
{ 'name_tr': 'Kızılay Kan Bağış Noktaları', 'name_en': 'Kızılay Blood Donation Places', 'path': 'datasets/blood.json' },
{ 'name': 'Kök Hücre Bağış Noktaları', 'name_en': 'Stem Cell Donation Points', 'path': 'datasets/kokhucre.json' },
{ 'name': 'Faydalı Yazılar', 'name_en': 'Useful Articles' , 'path': 'datasets/yazilar.json' },
{ 'name_ar': 'ملاجئ مؤقتة', 'name_tr': 'Geçici Barınma Alanları', 'name_en': 'Temporary Accommodation Places', 'name_ku': 'Bicîhbûna Demkî', 'path': 'datasets/barinma.json' },
{ 'name_ar': 'مناطق تجميع آمنة', 'name_tr': 'Güvenli Toplanma Alanları', 'name_en': 'Safe Gathering Places', 'name_ku': 'Qadên Ewle Bo Kombûnê', 'path': 'datasets/toplanma.json' },
{ 'name_ar': 'مواقع توصيل الطعام', 'name': 'Yemek Dağıtım Yerleri', 'name_en': 'Food Distribution Center', 'name_ku': 'Cihên Belavkirina Xwarinê', 'path': 'datasets/yemek.json' },
{ 'name_ar': 'أرقام هواتف مهمة', 'name': 'Önemli Telefon Numaraları', 'name_en': 'Crucial Phone Number', 'name_ku': 'Numareyên Girîng', 'path': 'datasets/telefon.json' },
{ 'name_ar': 'مُرْتَادِي الشَّبَكَة مهمة', 'name': 'Önemli Web Siteleri', 'name_en': 'Useful Links', 'name_ku': ' Malperên Kêrhatî', 'path': 'datasets/faydali_linkler.json' },
{ 'name_ar': 'بَيَاطير', 'name': 'Veterinerler', 'name_en': 'Veterinarians', 'name_ku': 'Veterîner', 'path': 'datasets/veteriner.json' },
{ 'name_ar': 'فرص التبرع بالعناصر', 'name_tr': 'Yardım Toplama Merkezleri','name_en': 'Other Donation', 'name_ku': 'Bexşkirina Tiştan', 'path': 'datasets/yardim_toplama_merkezleri.json' },
{ 'name_ar': 'نقاط الهلال الأحمر للتبرع بالدم', 'name_tr': 'Kızılay Kan Bağış Noktaları', 'name_en': 'Kızılay Blood Donation Places', 'name_ku': 'Cihên Xwîn Dayînê yên Kizilay/ Heyva Sor', 'path': 'datasets/blood.json' },
{ 'name_ar': 'نقاط التبرع بالخلايا الجذعية', 'name': 'Kök Hücre Bağış Noktaları', 'name_en': 'Stem Cell Donation Points', 'name_ku': 'Cihên bo bexşîna xaneyî bineretiyê', 'path': 'datasets/kokhucre.json' },
{ 'name_ar': 'نصوص مفيدة', 'name': 'Faydalı Yazılar', 'name_en': 'Useful Articles' , 'name_ku': 'Agahiyên Kêrhatî', 'path': 'datasets/yazilar.json' },
{ 'name': 'VPN', 'path': 'datasets/vpn.json' },
# { 'name_tr': 'Para Bağışı İmkanları', 'name_en': 'Money Donation', 'path': 'datasets/bagis.json' },
]
Expand All @@ -19,8 +19,8 @@
'type': 'question',
'text_tr': 'Lütfen bilgi almak istediğiniz konuyu seçiniz.',
'text_en': 'Please select a topic.',
'text_ku': '',
'text_at': '',
'text_ku': 'i kerema xwe mijara hûn dixwazin agahdariyê jê bigirin hilbijêrin',
'text_ar': 'الرجاء تحديد الموضوع الذي تريد تلقي معلومات عنه',
'options': []
}

Expand Down
90 changes: 67 additions & 23 deletions fe/src/components/data/FoodDistributionData.tsx
Original file line number Diff line number Diff line change
@@ -1,53 +1,97 @@
import { Box, Paper } from "@mui/material";
import { FoodDistributionDataNode } from "../../interfaces/TreeNode";
import { Box, Paper } from '@mui/material';
import { TFunction } from 'i18next';
import { useTranslation } from 'react-i18next';
import { FoodDistributionDataNode } from '../../interfaces/TreeNode';


const detailedInfo = (phone_number?: string, url?: string) => {
const detailedInfo = (t: TFunction, phone_number?: string, url?: string) => {
if (!phone_number && !url) {
return null;
}

if (!url) {
return (
<div>
<p>Detaylı bilgi için <b><a href={`tel:+90${phone_number?.replace(/^0/, "").replace(/ /g, "")}`}>{phone_number}</a></b>'i arayabilirsiniz.</p>
<p>
{t('data.food_distribution.detail_main')}
<b>
<a
href={`tel:+90${phone_number
?.replace(/^0/, '')
.replace(/ /g, '')}`}
>
{phone_number}
</a>
</b>
{t('data.food_distribution.detail_call')}
</p>
</div>
)
);
}

if (!phone_number) {
return (
<div>
<p>Detaylı bilgi için <a href={url} target="_blank" rel="noreferrer">bu web sitesini</a> inceleyebilirsiniz</p>
<p>
{t('data.food_distribution.detail_main')}
<a href={url} target='_blank' rel='noreferrer'>
{t('data.food_distribution.detail_website')}
</a>{' '}
{t('data.food_distribution.detail_inspect')}
</p>
</div>
)
);
}

return (<p>
Detaylı bilgi için <b><a href={`tel:+90${phone_number.replace(/^0/, "").replace(/ /g, "")}`}>{phone_number}</a></b>'i arayabilirsiniz ya da <a href={url} target="_blank" rel="noreferrer">bu web sitesini</a> inceleyebilirsiniz.
</p>)
}
return (
<p>
{t('data.food_distribution.detail_main')}
<b>
<a href={`tel:+90${phone_number.replace(/^0/, '').replace(/ /g, '')}`}>
{phone_number}
</a>
</b>
{t('data.food_distribution.detail_mix')}
<a href={url} target='_blank' rel='noreferrer'>
{t('data.food_distribution.detail_website')}
</a>{' '}
{t('data.food_distribution.detail_inspect')}
</p>
);
};

export default function FoodDistributionData({ value }: { value: FoodDistributionDataNode }) {
export default function FoodDistributionData({
value,
}: {
value: FoodDistributionDataNode;
}) {
const { t } = useTranslation();
return (
<Box>
<h3>{value.city}, {value.county} Ücretsiz Yemek Dağıtım Yerleri</h3>
<h3>
{t('data.food_distribution.title', {
city: value.city,
county: value.county,
})}
</h3>

<p><b>Bu sayfadaki tüm yerler telefonla doğrulanmıştır. Ancak günler, hatta saatler içerisinde bu bilgiler değişebildiğinden dolayı, kendi araştırmanızı yapmanız önemle rica edilir.</b></p>
<p>
<b>{t('data.food_distribution.subtitle')}</b>
</p>

{value.items.map((item, i) => (
<Paper sx={{ p: 2, m: 2 }} key={`item-${i}`}>
<b>{item.name}</b>
<b>{item.name}</b>
<br />
<p>
<a href={item.maps_url} target="_blank" rel="noreferrer">Google Maps Linki</a>
<br />
</p>

{detailedInfo(item.phone_number, item.url)}
<p>
<a href={item.maps_url} target='_blank' rel='noreferrer'>
{t('button.google_maps')}
</a>
<br />
</p>

{detailedInfo(t, item.phone_number, item.url)}
</Paper>
))}
</Box>
)
);
}
88 changes: 73 additions & 15 deletions fe/src/components/data/VetData.tsx
Original file line number Diff line number Diff line change
@@ -1,24 +1,82 @@
import { Box, Paper } from "@mui/material";
import { VetNode } from "../../interfaces/TreeNode";
import { Box, Paper } from '@mui/material';
import { useTranslation } from 'react-i18next';
import { Vet, VetNode } from '../../interfaces/TreeNode';
import { Language } from '../../utils/types';

export default function Vet({ value }: { value: VetNode }) {
const VetLanguageHelper = ({ item, index }: { item: Vet; index: number }) => {
const { i18n } = useTranslation();
if (i18n.language === Language.TR) {
return (
<Paper sx={{ p: 2, m: 2 }} key={`item-${index}`}>
<b>{item.name}</b> zarar gören hayvanlarla ücretsiz ilgileneceğini
bildirdi.
<br />
<p>
<a href={item.maps_url} target='_blank' rel='noreferrer'>
{item.address}
</a>
<br />
</p>
{item.phone_number && (
<p>
Detaylı bilgi için{' '}
<b>
<a
href={`tel:+90${item.phone_number
.replace(/^0/, '')
.replace(/ /g, '')}`}
>
{item.phone_number}
</a>
</b>
'i arayabilirsiniz.
</p>
)}
</Paper>
);
}
return (
<Paper sx={{ p: 2, m: 2 }} key={`item-${index}`}>
<b>{item.name}</b> stated that it will take care of the injured animals
free of charge.
<br />
<p>
<a href={item.maps_url} target='_blank' rel='noreferrer'>
{item.address}
</a>
<br />
</p>
{item.phone_number && (
<p>
For detailed information you can call{' '}
<b>
<a
href={`tel:+90${item.phone_number
.replace(/^0/, '')
.replace(/ /g, '')}`}
>
{item.phone_number}
</a>
</b>
</p>
)}
</Paper>
);
};

export default function VetData({ value }: { value: VetNode }) {
const { t } = useTranslation();
return (
<Box>
<h3>{value.city} Şehrinde Ücretsiz Yardım Alabileceğiniz Veterinerler</h3>
<h3>{t('data.veterinary.title', { city: value.city })}</h3>

<p><b>Bu sayfadaki tüm veterinerler telefonla doğrulanmıştır. Ancak günler, hatta saatler içerisinde bu bilgiler değişebildiğinden dolayı, kendi araştırmanızı yapmanız önemle rica edilir.</b></p>
<p>
<b>{t('data.veterinary.subtitle')}</b>
</p>

{value.vets.map((item, i) => (
<Paper sx={{ p: 2, m: 2 }} key={`item-${i}`}>
<b>{item.name}</b> zarar gören hayvanlarla ücretsiz ilgileneceğini bildirdi.
<br />
<p>
<a href={item.maps_url} target="_blank" rel="noreferrer">{item.address}</a>
<br />
</p>
{(item.phone_number && <p>Detaylı bilgi için <b><a href={`tel:+90${item.phone_number.replace(/^0/, "").replace(/ /g, "")}`}>{item.phone_number}</a></b>'i arayabilirsiniz.</p>)}
</Paper>
<VetLanguageHelper item={item} index={i} key={i} />
))}
</Box>
)
);
}
2 changes: 1 addition & 1 deletion fe/src/hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { useQuery } from 'react-query';

import { TreeNodeType } from './variables/TreeNode';

const baseQuestionData = axios.get(`https://cdn.afetbilgi.com/latest.json?v=1.5`)
const baseQuestionData = axios.get(`https://cdn.afetbilgi.com/latest_translated.json?v=1.5`)
.then(res => res.data);

export const useQuestionData = (paths: string[]) => {
Expand Down
31 changes: 17 additions & 14 deletions fe/src/interfaces/TreeNode.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,14 +69,16 @@ export interface CityAccommodationNode extends DataNode {
}[];
}

export interface Vet {
name: string;
phone_number: string;
address: string;
maps_url: string;
}

export interface VetNode extends DataNode {
city: string;
vets: {
name: string;
phone_number: string;
address: string;
maps_url: string;
}[];
vets: Vet[];
}

export interface CreditCardNode extends DataNode {
Expand Down Expand Up @@ -144,17 +146,18 @@ export interface StemCellDataItem {
phone: string;
}

export interface FoodDistribution {
name: string;
maps_url?: string;
url?: string;
phone_number?: string;
updated_at_date: string;
updated_at_time: string;
}
export interface FoodDistributionDataNode extends DataNode {
city: string;
county: string;
items: {
name: string;
maps_url?: string;
url?: string;
phone_number?: string;
updated_at_date: string;
updated_at_time: string;
}[];
items: FoodDistribution[];
}

export interface VpnDataNode extends DataNode {
Expand Down
Loading