# កម្មវិធី Quiz
កម្រងសំណួរទាំងនេះគឺជាសំណួរមុន និងបន្ទាប់ម៉ោងបង្រៀនសម្រាប់កម្មវិធីបណ្តុះបណ្តាលវិទ្យាសាស្រ្តទិន្នន័យនៅ https://aka.ms/webdev-beginners
## ការបន្ថែមកម្រងសំណួរបកប្រែ
បន្ថែមការបកប្រែសំណួរដោយបង្កើតរចនាសម្ព័ន្ធសំណួរដូចគ្នាក្នុងថត `assets/translations`។ កម្រងសំណួរដើមមាននៅក្នុង `assets/translations/en`។ សំណួរត្រូវបានបំបែកចេញជាក្រុមជាច្រើន។ សូមធានាថាចំនួនសំណួរត្រូវបានតម្រឹមទៅតាមផ្នែកសំណួរដែលត្រឹមត្រូវ។ មានសំណួរជា ៤០ ក្នុងកម្មវិធីបណ្តុះបណ្តាលនេះ ដែលចាប់ផ្តើមរាប់ចំនួនពី 0។
រាងរូបរាងនៃឯកសារបកប្រែមានរូបរាងដូចខាងក្រោម:
```
[
{
"title": "A title",
"complete": "A complete button title",
"error": "An error message upon selecting the wrong answer",
"quizzes": [
{
"id": 1,
"title": "Title",
"quiz": [
{
"questionText": "The question asked",
"answerOptions": [
{
"answerText": "Option 1 title",
"isCorrect": true
},
{
"answerText": "Option 2 title",
"isCorrect": false
}
]
}
]
}
]
}
]
```
បន្ទាប់មកកែសម្រួលការបកប្រែ បន្ទាប់មកកែសម្រួលឯកសារ index.js ក្នុងថតបកប្រែ ដើម្បីនាំចូលឯកសារទាំងអស់តាមច្បាប់នៅក្នុង `en`។
កែសម្រួលឯកសារ `index.js` ក្នុងថត `assets/translations` ដើម្បីនាំចូលឯកសារបកប្រែថ្មី។
ឧទាហរណ៍ ប្រសិនបើ JSON បកប្រែរបស់អ្នកមានក្នុង `ex.json` សូមធ្វើឲ្យ 'ex' ជាគន្លងសម្រាប់ localization ហើយបញ្ចូលវាតាមដែលបង្ហាញខាងក្រោមដើម្បីនាំចូលវា
index.js
```
import ex from "./ex.json";
// if 'ex' is localization key then enter it like so in `messages` to expose it
const messages = {
ex: ex[0],
};
export default messages;
```
## ចាប់ផ្តើមរត់កម្មវិធី Quiz App នៅលើកុំព្យូទ័រផ្ទាល់ខ្លួន
### លក្ខខណ្ឌមុន
- គណនី GitHub
- [Node.js និង Git](https://nodejs.org/)
### ដំឡើង និង តំឡើង
1. បង្កើត repository មួយពី [template](https://github.com/new?template_name=Web-Dev-For-Beginners&template_owner=microsoft)
1. Clone repository ថ្មីរបស់អ្នក ហើយចូលទៅក្នុង quiz-app
```bash
git clone https://github.com/your-github-organization/repo-name
cd repo-name/quiz-app
```
1. ដំឡើង npm packages និង dependencies
```bash
npm install
```
### បង្កើតកម្មវិធី
1. ដើម្បីបង្កើតដំណោះស្រាយ ចាប់ផ្តើមរត់៖
```bash
npm run build
```
### ចាប់ផ្ដើមកម្មវិធី
1. ដើម្បីរត់ដំណោះស្រាយ ចាប់ផ្តើមរត់៖
```bash
npm run dev
```
### [ជាជំរើស] ការត្រួតពិនិត្យបញ្ហា Linting
1. ដើម្បីធានាថា code ត្រូវបាន linted, ចាប់ផ្តើមរត់៖
```bash
npm run lint
```
## ប្រើប្រាស់ Quiz-app ដើម្បីដាក់ឡើងជាមួយ Azure
### លក្ខខណ្ឌមុន
- មានសមាជិកភាព Azure ។ ចុះឈ្មោះឥតគិតថ្លៃ [នៅទីនេះ](https://aka.ms/azure-free)។
_ការប៉ាន់ប្រមាណថ្លៃដើមដើម្បីដាក់កម្មវិធី quiz-app នេះ: ឥតគិតថ្លៃ_
[](https://portal.azure.com/#create/Microsoft.StaticApp)
បន្ទាប់ពីអ្នកចូលប្រើ Azure តាមតំណភ្ជាប់ខាងលើ សូមជ្រើសរើស subscription និង resource group រួចបន្ត៖
- ពត៌មានអំពី Static Web App: ផ្ដល់ឈ្មោះ និងជ្រើសរើសផែនការតាំងចន្លោះ
- ការចូល GitHub: កំណត់ប្រភព deployment របស់អ្នកជា GitHub បន្ទាប់មកចូលប្រើ ហើយបំពេញវាលដែលត្រូវការនៅលើទម្រង់៖
- *Organization* – ជ្រើសរើសអង្គការរបស់អ្នក។
- *Repository* – ជ្រើសរើសកម្មវិធី Web Dev for Beginners repository។
- *Branch* - ជ្រើសរើសសាខា (main)
- Build Presets: Azure Static Web Apps ប្រើអាល់ហ្គរីធម៍យល់ដឹងដើម្បីរកឃើញ framework ដែលបានប្រើនៅក្នុងកម្មវិធីរបស់អ្នក។
- *App location* - ./quiz-app
- *Api location* -
- *Output location* - dist
- Deployment: ចុច 'Review + Create' បន្ទាប់មក 'Create'
បន្ទាប់ពីបានដាក់ឡើង workflow file នឹងត្រូវបានបង្កើតនៅក្នុងថត *.github* នៃ repo របស់អ្នក។ ឯកសារ workflow នេះមានលក្ខណៈជាការណែនាំសម្រាប់ព្រឹត្តិការណ៍ដែលនឹងបណ្តាលឲ្យមានការដាក់ឡើងថ្មីម្តងទៀតនៃកម្មវិធីទៅ Azure, ឧទាហរណ៍ _ការជំរុញ (**push**) នៅសាខា **main**_ ជាដើម។
ឯកសារ Workflow ឧទាហរណ៍
នេះជាឧទាហរណ៍នៃរបៀបឯកសារ GitHub Actions workflow ដែលប្រហែលជាទន់ចិត្ត:
name: Azure Static Web Apps CI/CD
```
on:
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened, closed]
branches:
- main
jobs:
build_and_deploy_job:
runs-on: ubuntu-latest
name: Build and Deploy Job
steps:
- uses: actions/checkout@v2
- name: Build And Deploy
id: builddeploy
uses: Azure/static-web-apps-deploy@v1
with:
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
repo_token: ${{ secrets.GITHUB_TOKEN }}
action: "upload"
app_location: "quiz-app" # App source code path
api_location: ""API source code path optional
output_location: "dist" #Built app content directory - optional
```
- បន្ទាប់ពីដាក់ឡើង: បន្ទាប់ពីដាក់ឡើងបានសម្រេច សូមចុច 'Go to Deployment' បន្ទាប់មក 'View app in browser'។
បន្ទាប់ពី GitHub Action (workflow) របស់អ្នកបានដំណើរការជោគជ័យ សូមធ្វើការផ្ទុកទំព័រឡើងវិញ ដើម្បីមើលកម្មវិធីរបស់អ្នក។
---
**ច័ន្ទបញ្ញតិការ**:
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ក្នុងខណៈពេលដែលយើងខិតខំធ្វើឲ្យបានត្រឹមត្រូវខ្ពស់ សូមយល់ដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុសឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមជាភាសាដើមគួរត្រូវបានទទួលស្គាល់ជាមូលដ្ឋានមានសុពលភាព។ សម្រាប់ព័ត៌មានសំខាន់ណាស់ សូមណែនាំឱ្យប្រើការបកប្រែដោយមនុស្សវិជ្ជាជីវៈ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំនៅណាកើតចេញពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។