diff --git a/.github/ISSUE_TEMPLATE/---bug-report.md b/.github/ISSUE_TEMPLATE/---bug-report.md
new file mode 100644
index 0000000..ce4739d
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/---bug-report.md
@@ -0,0 +1,38 @@
+---
+name: "\U0001F41E Bug report"
+about: Report an issue
+title: ''
+labels: bug
+assignees: ''
+
+---
+
+**Describe the bug**
+A clear and concise description of what the bug is.
+
+**To Reproduce**
+Steps to reproduce the behavior:
+1. Go to '...'
+2. Click on '....'
+3. Scroll down to '....'
+4. See error
+
+**Expected behavior**
+A clear and concise description of what you expected to happen.
+
+**Screenshots**
+If applicable, add screenshots to help explain your problem.
+
+**Desktop (please complete the following information):**
+ - OS: [e.g. iOS]
+ - Browser [e.g. chrome, safari]
+ - Version [e.g. 22]
+
+**Smartphone (please complete the following information):**
+ - Device: [e.g. iPhone6]
+ - OS: [e.g. iOS8.1]
+ - Browser [e.g. stock browser, safari]
+ - Version [e.g. 22]
+
+**Additional context**
+Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/---feature-request.md b/.github/ISSUE_TEMPLATE/---feature-request.md
new file mode 100644
index 0000000..f22de3f
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/---feature-request.md
@@ -0,0 +1,20 @@
+---
+name: "\U0001F31F Feature request"
+about: Suggest an idea
+title: ''
+labels: enhancement
+assignees: ''
+
+---
+
+**Is your feature request related to a problem? Please describe.**
+A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+
+**Describe the solution you'd like**
+A clear and concise description of what you want to happen.
+
+**Describe alternatives you've considered**
+A clear and concise description of any alternative solutions or features you've considered.
+
+**Additional context**
+Add any other context or screenshots about the feature request here.
diff --git a/README.md b/README.md
index 34742d7..125367b 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,20 @@
-# Crabfit
+# Crab Fit
Align your schedules to find the perfect time that works for everyone.
Licensed under the GNU GPLv3.
+## Contributing
+
+### โญ๏ธ Bugs or feature requests
+
+If you find any bugs or have a feature request, please create an issue by clicking here.
+
+### ๐ Translations
+
+If you speak a language other than English and you want to help translate Crab Fit, fill out this form: https://forms.gle/azz1yGqhpLUka45S9
+
## Setup
1. Clone the repo.
@@ -12,18 +22,18 @@ Licensed under the GNU GPLv3.
3. Run `node index.js` in the backend folder to start the API.
4. Run `yarn start` in the frontend folder to start the front end.
-### Browser extension
+### ๐ Browser extension
The browser extension in `crabfit-browser-extension` can be tested by first running the frontend, and changing the iframe url in the extension's `popup.html` to match the local Crab Fit. Then it can be loaded as an unpacked extension in Chrome to test.
## Deploy
-### Frontend
+### ๐ฆ Frontend
1. In the frontend folder `cd crabfit-frontend`
2. Run `./deploy.sh` to compile and deploy.
-### Backend
+### โ๏ธ Backend
1. In the backend folder `cd crabfit-backend`
2. Deploy the backend `gcloud app deploy --project=crabfit --version=v1`
-### Browser extension
+### ๐ Browser extension
Compress everything inside the `crabfit-browser-extension` folder and use that zip to deploy using Chrome web store and Mozilla Add-on store.
diff --git a/crabfit-frontend/public/i18n/ja/common.json b/crabfit-frontend/public/i18n/ja/common.json
index 7086ea1..f96b717 100644
--- a/crabfit-frontend/public/i18n/ja/common.json
+++ b/crabfit-frontend/public/i18n/ja/common.json
@@ -1,42 +1,42 @@
{
- "name": "Crab Fit",
- "tagline": "Create your own",
- "cta": "Create your own Crab Fit!",
- "created": "{{date}}ใงไฝๆ",
+ "name": "ใฏใฉใผใใใฃใใ",
+ "tagline": "่ชๅใฎใไฝๆใใพใใใ",
+ "cta": "่ชๅใฎใฏใฉใผใใใฃใใใไฝๆใใพใใใ๏ผ",
+ "created": "{{date}}ใงไฝๆใใ",
"donate": {
- "info": "Thank you for using Crab Fit. If you like it, consider donating.",
- "button": "Donate",
- "title": "Every amount counts :)",
+ "info": "ใฏใฉใผใใใฃใใใไฝฟใฃใฆใใใใจใใใใใพใใใๅฅฝใใ ใฃใใใๅฏไปใใฆใใใพใใ๏ผ",
+ "button": "ๅฏไปใใ",
+ "title": "ใใใใงใใใใงใใ :)",
"options": {
- "$2": "Donate $2",
- "$5": "Donate $5",
- "$10": "Donate $10",
- "choose": "Choose an amount"
+ "$2": "$๏ผใๅฏไปใใ",
+ "$5": "$๏ผใๅฏไปใใ",
+ "$10": "$๏ผ๏ผใๅฏไปใใ",
+ "choose": "่ชๅใง้ธใใ ้้ก"
},
"messages": {
- "about": "If it's helped you out at all, consider donating to help keep it running. ๐ฆ",
- "success": "Thank you for your donation! Without you, Crab Fit wouldn't be free, so thank you and keep being super awesome!",
- "error": "Cannot make donation through Google. Please try donating through the website crab.fit ๐ฆ"
+ "about": "ใฏใฉใใใฃใใใฏไพฟๅฉใ ใชใจๆใใชใใๅฏไปใใฆใใใพใใใ๏ผ๐ฆ",
+ "success": "ๅฏไปใใใใจใใใใใพใ๏ผใใชใใฎ่ฃไฝใใชใใใฐใ็กๆใงใใใใใใจใใงใใพใใใฎใงใๆฌๅฝใซๅฉใใฆใใใพใใใ",
+ "error": "Googleใงๅฏไปใใงใใพใใใcrab.fitใฎใตใคใใง็ดๆฅๅฏไปใใฆใใ ใใใ๐ฆ"
}
},
"options": {
- "name": "Options",
+ "name": "่จญๅฎ",
"weekStart": {
- "label": "Week starts on",
+ "label": "้ฑ้ใฎๅงใพใ",
"options": {
- "Sunday": "ๆฅๆ",
- "Monday": "ๆๆ"
+ "Sunday": "ๆฅๆๆฅ",
+ "Monday": "ๆๆๆฅ"
}
},
"timeFormat": {
- "label": "Time format",
+ "label": "ๆ้่กจ่จ",
"options": {
- "12h": "12ๆ้",
- "24h": "24ๆ้"
+ "12h": "๏ผ๏ผๆๅถ",
+ "24h": "๏ผ๏ผๆๅถ"
}
},
"theme": {
- "label": "่ฒใฎใใผใ",
+ "label": "ใใผใ",
"options": {
"System": "ใทในใใ ",
"Light": "ๆ่ฒ",
@@ -44,11 +44,11 @@
}
},
"highlight": {
- "label": "Highlight highest availability",
- "title": "Make the highest availability on the heatmap stand out",
+ "label": "ๆ้ซt้ฝๅใใใๆใใใคใฉใคใใใ",
+ "title": "ๆ้ซ้ฝๅใใใๆใใใฃใจ่ฆใใใใชใ",
"options": {
- "Off": "ใชใ",
- "On": "ใชใณ"
+ "Off": "ใใชใ",
+ "On": "ใใ"
}
},
"language": {
diff --git a/crabfit-frontend/public/i18n/ja/event.json b/crabfit-frontend/public/i18n/ja/event.json
index 569723a..0ccc402 100644
--- a/crabfit-frontend/public/i18n/ja/event.json
+++ b/crabfit-frontend/public/i18n/ja/event.json
@@ -1,63 +1,65 @@
{
- "available": "available",
+ "available": "้ฝๅใใใ",
+ "greyed_times": "ใใฎ้ ๅใฏใคใใณใใฎ็ฏๅฒใงใฏใชใใฎใงใใฐใฌใผใขใฆใใใพใใใใใฎใคใใณใใฏไฝใฃใๆ้ๅธฏใจ้ใๆ้ๅธฏใง่ฆใใใใใใพใใใ",
"nav": {
- "title": "Click to copy",
- "copied": "Copied!",
- "shareinfo": "Copy the link to this page, or share via <1>email1>.",
- "shareinfo_alt": "Click the link above to copy it to your clipboard, or share via <1>email1>.",
- "email_subject": "Scheduling {{event_name}}",
- "email_body": "Visit this link to enter your availabilities:"
+ "title": "ใฏใชใใฏใใฆใใณใใผใใ",
+ "copied": "ใณใใผใใพใใ๏ผ",
+ "shareinfo": "ใใฎใใผใธใฎใชใณใฏใใณใผใใใฆใใพใใฏ<1>ใกใผใซ1>ใงใทใงใขใใพใใ",
+ "shareinfo_alt": "ใใฎไธใซใใใชใณใฏใใฏใชใใฏใใฆใใฏใชใใใใผใใซใณใผใใใฆใใพใใฏ<1>ใกใผใซ1>ใงใทใงใขใผใใพใใ",
+ "email_subject": "{{event_name}}ใไบๅฎ",
+ "email_body": "ใใฎใชใณใฏใง้ฝๅใ็ป้ฒใงใใพใ๏ผ"
},
"form": {
- "signed_out": "Sign in to add your availability",
- "signed_in": "Signed in as {{name}}",
+ "signed_out": "้ฝๅใ็ป้ฒใใใใชใใๆๅใฏใญใฐใคใณใใฆใใ ใใ",
+ "signed_in": "{{name}}ใงใญใฐใคใณใใฆใใพใ",
- "name": "Your name",
- "password": "Password (optional)",
- "button": "Login",
- "info": "These details are only for this event. Use a password to prevent others from changing your availability.",
+ "name": "ใใชใใฎๅๅ",
+ "password": "ใในใฏใผใ๏ผไปปๆ)",
+ "button": "ใญใฐใคใณ",
+ "info": "ใใฎ่ฉณ็ดฐใฏใใฎใคใใณใใ ใใซใคใใฆใงใใไปไบบใฏใใชใใฎ้ฝๅใๅคๅใใใใจใไบ้ฒใใใใชใใใในใฏใผใใไฝฟใฃใฆใใ ใใใ",
- "timezone": "Your time zone",
+ "timezone": "ใใชใใฎๆ้ๅธฏ",
"errors": {
- "password_incorrect": "Password is incorrect. Check your name is spelled right.",
- "unknown": "Failed to login. Please try again."
+ "password_incorrect": "ใในใฏใผใใฏๆญฃใใใใใพใใใๅๅใฎ็ถดใใใใ็ขบ่ชใใฆใใ ใใใ",
+ "unknown": "ใญใฐใคใณใฏใงใใชใใฃใใงใใใใไธๅบฆใใ็ดใใฆใใ ใใใ"
},
- "created_in_timezone": "This event was created in the timezone {{timezone}}. <3>Click here3> to use it.",
- "local_timezone": "Your local timezone is detected to be {{timezone}}. <3>Click here3> to use it."
+ "created_in_timezone": "ใใฎใคใใณใใฏ{{timezone}}ใฎๆ้ๅธฏใงไฝๆใใพใใใ<3>ใใใใฏใชใใฏใใ3>ใจใใฎๆ้ๅธฏใไฝฟใใใจใใงใใพใใ",
+ "local_timezone": "ใทในใใ ใซใใใจใใใชใใฎใญใผใซใซๆ้ๅธฏใฏ{{timezone}}ใงใใ<3>ใใใใฏใชใใฏใใ3>ใจใใฎๆ้ๅธฏใไฝฟใใใจใงใงใใพใใ"
},
"offline": {
- "title": "You are offline",
- "body": "A Crab Fit doesn't work offline.
Make sure you're connected to the internet and try again."
+ "title": "ใคใณใฟใผใใใใฏๆฅ็ถใใฆใใพใใ",
+ "body": "ใฏใฉใใใฃใใใฏใชใใฉใคใณใงไฝฟใใใพใใใ
ใคใณใฟใผใใใๆฅ็ถใ็ขบ่ชใใฆใใไธๅบฆใใ็ดใใฆใใ ใใใ"
},
"error": {
- "title": "Event not found",
- "body": "Check that the url you entered is correct."
+ "title": "ใคใใณใใฏ่ฆใคใใใใพใใใงใใ",
+ "body": "็ป้ฒใใURLใ็ขบ่ชใใฆใใ ใใ"
},
"tabs": {
- "you": "Your availability",
- "you_tooltip": "Login to set your availability",
- "group": "Group availability"
+ "you": "ใใชใใฎ้ฝๅ",
+ "you_tooltip": "ใญใฐใคใณใใใจ้ฝๅใ่จญๅฎใใใใจใใงใใพใ",
+ "group": "ใฐใซใผใใฎ้ฝๅ"
},
"group": {
- "legend_tooltip": "Click to highlight highest availability",
- "info1": "Hover or tap the calendar below to see who is available",
- "info2": "Click the names below to view people individually"
+ "legend_tooltip": "ใฏใชใใฏใใใจๆ้ซใฎ้ฝๅใใใคใฉใคใใใใใจใใงใใพใ",
+ "info1": "ไธใฎใซใฌใณใใผใฎไธใซใใฆในใซใผใฝใซใใใใชใณใฐใใฆใพใใฏใฟใใใใใจ้ฝๅใใใไบบใ่ฆใใใจใใงใใพใ",
+ "info2": "ไธใฎๅๅใใฏใชใใฏใใใจไบบใฎ้ฝๅใ่ฆใใใจใใงใใพใ"
},
"you": {
- "info": "Click and drag the calendar below to set your availabilities",
+ "info": "้ฝๅใ่จญๅฎใใใใชใใไธใฎใซใฌใณใใผใใฏใชใใฏใใฆใใฉใใฐใใ",
"google_cal": {
- "login": "Sync with Google Calendar",
- "logout": "log out",
- "select_all": "Select all",
- "select_none": "Select none",
- "info": "Importing will overwrite your current availability",
- "button": "Import availability"
- }
+ "login": "Googleใซใฌใณใใผใๅๆใใ",
+ "logout": "ใญใฐใขใฆใ",
+ "select_all": "ๅ
จ้จใ้ธๆใใ",
+ "select_none": "ใฉใใใชใใ้ธๆใใ",
+ "info": "ใคใณใใผใใใใใไปใฎ้ฝๅใไธๆธใใใใ",
+ "button": "้ฝๅใใคใณใใผใใใ"
+ },
+ "outlook_cal": "Outlookใซใฌใณใใผใๅๆใใ"
}
}