Step 1: ތަރުޖަމާ ކުރާ ފަރާތެއް ޚިޔާރުކުރޭ
މި އެކްޝަން މަސައްކަތް ކުރަނީ އެއް ޔުނިފައިޑް އޭޕީއައި ސާފޭސްގެ ފަހަތުގައި Azure AI Translator، އޭ.ޑަބްލިއު.އެސް ތަރުޖަމާ އަދި ގޫގުލް ކްލައުޑް ޓްރާންސްލޭޝަން އެކުލެވިގެންވާ ގޮތަށެވެ. provider އިންޕުޓް ބޭނުންކޮށްގެން ކޮންމެ ރަންއަކަށް އެއް ޕްރޮވައިޑަރެއް ނަގާށެވެ. ހަމައެކަނި ކްރެޑެންޝަލްސް ތަފާތުވެއެވެ. ފުރިހަމަ ތަރުޖަމާ ދޭ ފަރާތްތައް ބަލާށެވެ.
Step 2: ކްރެޑެންޝިއަލް އާއި ވޯރކްފްލޯ އިތުރުކުރޭ
ޕްރޮވައިޑަރުގެ ކްރެޑެންޝަލްތައް ގިޓްހަބް ރިޕޮސިޓަރީ ސީކްރެޓްސްގެ ގޮތުގައި ރައްކާކުރުމަށްފަހު .github/workflows/translate.yml ހަދާށެވެ. ތިރީގައި މިވާ ޕްރޮވައިޑާ ސިލެކްޓް ކުރާނީ އޭގެ ވަކި ސެޓަޕް އެއް – ބާކީ ހުރި ވޯކްފްލޯ އެއްގޮތް ވާނެ އެވެ.
Azure AI Translator
Azure އަކީ ޑިފޯލްޓް ޕްރޮވައިޑަރ ކަމަށްވާތީ provider އުނިކުރެވިދާނެއެވެ. Azure ޕޯޓަލްގައި Azure AI Translator ރިސޯސް ޕްރޮވިޝަން ކުރުމަށްފަހު، އޭގެ ކްރެޑެންޝަލްތައް ރައްކާކުރުން:
މިތަކެތި ރިޕޮސިޓަރީ ސީކްރެޓްސްގެ ގޮތުގައި ރައްކާ ކުރޭ
TRANSLATOR_KEY— ރިސޯސްގެ ސަބްސްކްރިޕްޝަން ކީ.TRANSLATOR_ENDPOINT— ރީޖަނަލް އެންޑްޕޮއިންޓް ޔޫއާރްއެލް އެވެ.TRANSLATOR_REGION— ރިސޯސްގެ އެޒުރ ރީޖަން.
ވޯކްފްލޯ އިތުރުކުރޭ
name: translate
on: push: branches: [main] paths: - "src/**/*.en.resx" - "src/**/*.en.json"
permissions: contents: write pull-requests: write
jobs: translate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - id: translate uses: IEvangelist/resource-translator@v3 with: provider: | azure: subscriptionKey: ${{ secrets.TRANSLATOR_KEY }} endpoint: ${{ secrets.TRANSLATOR_ENDPOINT }} region: ${{ secrets.TRANSLATOR_REGION }} sourceLocale: en toLocales: '["fr","de","es"]' - if: steps.translate.outputs.has-new-translations == 'true' uses: peter-evans/create-pull-request@v7 with: title: ${{ steps.translate.outputs.summary-title }} body: ${{ steps.translate.outputs.summary-details }} branch: machine-translationއޭ.ޑަބްލިއު.އެސް ތަރުޖަމާ
provider aws އަށް ސެޓް ކުރާށެވެ. އޯއައިޑީސީ އަށް އިސްކަން ދޭށެވެ aws-actions/configure-aws-credentials ދިގު މުއްދަތަކަށް ވަންދެން އެއްވެސް ސިއްރުތަކެއް ރައްކާ ނުކުރެވޭ ގޮތަށް AWS_REGION އެވެ. އޭގެ ބަދަލުގައި ސްޓެޓިކް ކީތައް ބޭނުންކުރަން:
މިތަކެތި ރިޕޮސިޓަރީ ސީކްރެޓްސްގެ ގޮތުގައި ރައްކާ ކުރޭ
AWS_ACCESS_KEY_ID— އޭޑަބްލިއުއެސް އެކްސެސް ކީ އައިޑީAWS_SECRET_ACCESS_KEY— އޭޑަބްލިއުއެސް ސީކްރެޓް އެކްސެސް ކީ.
ރީޖަން އެއް އަބަދުވެސް ބޭނުންވޭ – awsRegion ނުވަތަ AWS_REGION އެންވާރަމެންޓް ވޭރިއަބަލް އިން ސެޓް ކުރާށެވެ.
ވޯކްފްލޯ އިތުރުކުރޭ
name: translate
on: push: branches: [main] paths: - "src/**/*.en.resx" - "src/**/*.en.json"
permissions: id-token: write # for aws-actions/configure-aws-credentials (OIDC) contents: write pull-requests: write
jobs: translate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: arn:aws:iam::123456789012:role/gh-actions-translate aws-region: us-east-1 - id: translate uses: IEvangelist/resource-translator@v3 with: provider: | aws: region: us-east-1 # or rely on AWS_REGION from the step above formality: FORMAL brevity: true sourceLocale: en toLocales: '["fr","de","es"]' - if: steps.translate.outputs.has-new-translations == 'true' uses: peter-evans/create-pull-request@v7 with: title: ${{ steps.translate.outputs.summary-title }} body: ${{ steps.translate.outputs.summary-details }} branch: machine-translationގޫގުލް ކްލައުޑް ޓްރާންސްލޭޝަން
provider google އަށް ސެޓް ކުރާށެވެ. ސަރވިސް އެކައުންޓް JSON ކްރެޑެންޝަލް ނުވަތަ އޭޕީއައި ކީއެއް ބޭނުންކޮށްގެން އޮތެންޓިކޭޓް ކުރާށެވެ.
މިތަކެތި ރިޕޮސިޓަރީ ސީކްރެޓްސްގެ ގޮތުގައި ރައްކާ ކުރޭ
GCP_TRANSLATE_CREDENTIALS— ސާވިސް އެކައުންޓް JSON ކީ (JSON ސްޓްރިންގއެއްގެ ގޮތުގައި).GCP_TRANSLATE_API_KEY— ނުވަތަ ގޫގުލް ކްލައުޑް އޭޕީއައި ކީއެކެވެ.
އޮޕްޝަނަލް googleProjectId އުނިކުރުމުން ކްރެޑެންޝަލް އިން އަންދާޒާ ކުރެވެއެވެ.
ވޯކްފްލޯ އިތުރުކުރޭ
name: translate
on: push: branches: [main] paths: - "src/**/*.en.resx" - "src/**/*.en.json"
permissions: contents: write pull-requests: write
jobs: translate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - id: translate uses: IEvangelist/resource-translator@v3 with: provider: | google: # Provide EITHER a service-account JSON credential... credentials: ${{ secrets.GCP_TRANSLATE_CREDENTIALS }} # ...OR an API key: # apiKey: ${{ secrets.GCP_TRANSLATE_API_KEY }} model: nmt sourceLocale: en toLocales: '["fr","de","es"]' - if: steps.translate.outputs.has-new-translations == 'true' uses: peter-evans/create-pull-request@v7 with: title: ${{ steps.translate.outputs.summary-title }} body: ${{ steps.translate.outputs.summary-details }} branch: machine-translationStep 3: ސޯސް ރިސޯސް ފައިލެއް ކޮމިޓް ކުރޭ
ރިސޯސް ފައިލްތަކުގައި ބޭނުންކުރަނީ Name.<sourceLocale>.<ext> ކޮންވެންޝަން މިސާލަކަށް، Greetings.en.resx ދުވުމަށްފަހު، Greetings.fr.resx، Greetings.de.resx އަދި މިނޫންވެސް އެތައް ކަމަކަށް ބަދަލުވެއެވެ.
Step 4: Let smart change detection protect your bill
changeDetection defaults to smart and stores a compact .github/resource-translator-state.json manifest in the repo. Commit that file so future runs can reuse stable translations, preserve manual target edits, and send only new, missing, changed, or settings-invalidated keys to the provider. If localized files already exist, run once with snapshotOnly: true to create the manifest without provider calls.
Step 5: އައުޓްޕުޓް ބަލާ
ވޯކްފްލޯ ނިމުމުން، ޕީއާރު ޑިސްކްރިޕްޝަނަށް ވަޔަރ ކުރެވިދާނެ ތިން އައުޓްޕުޓް މި އެކްޝަންގެ summary-title، summary-details އަދި has-new-translations އެވެ. އަދި ޖޮބް ޕޭޖަށް މާކްޑައުން ސަމަރީއެއް ލިޔަން core.summary.