mirror of
https://github.com/GopeedLab/gopeed.git
synced 2026-11-06 08:30:29 +00:00
80 lines
3.4 KiB
Markdown
80 lines
3.4 KiB
Markdown
# Hướng dẫn đóng góp cho Gopeed
|
|
|
|
Trước tiên, cảm ơn bạn đã quan tâm đến việc đóng góp cho Gopeed. Hướng dẫn này sẽ giúp bạn tham gia
|
|
phát triển Gopeed một cách tốt hơn.
|
|
|
|
## Mô tả nhánh
|
|
|
|
Dự án này chỉ có một nhánh chính duy nhất, đó là nhánh `main`. Nếu bạn muốn tham gia vào
|
|
phát triển Gopeed, hãy fork dự án này trước, sau đó phát triển trong dự án fork của bạn. Sau khi
|
|
hoàn thành phát triển, gửi một PR đến dự án này và merge vào nhánh `main`.
|
|
|
|
## Phát triển cục bộ
|
|
|
|
Đề nghị phát triển và gỡ lỗi thông qua web. Đầu tiên, khởi động dịch vụ backend bằng cách chạy
|
|
lệnh `go run cmd/api/main.go` trong dòng lệnh, cổng mặc định của dịch vụ là `9999`, sau đó
|
|
khởi động dự án flutter frontend trong chế độ `debug` để chạy.
|
|
|
|
## Dịch thuật
|
|
|
|
Các bản dịch Flutter là tệp ARB trong `ui/flutter/lib/l10n`. Hãy dùng `app_en.arb` làm mẫu nguồn,
|
|
sau đó sửa hoặc thêm `app_<locale>.arb` (ví dụ `app_de.arb` hoặc `app_zh_TW.arb`). Mỗi ngôn ngữ phải
|
|
có cùng các khóa thông điệp như mẫu tiếng Anh.
|
|
|
|
Chỉ dịch giá trị thông điệp; không đổi tên biến trong dấu ngoặc nhọn như `{count}` và `{name}`. Không dịch khóa
|
|
siêu dữ liệu bắt đầu bằng `@`. Chỉ commit các tệp nguồn ARB đã thay đổi; không cần tạo hoặc commit
|
|
`app_localizations*.dart`. CI của pull request sẽ tự động
|
|
kiểm tra tất cả ngôn ngữ, tạo mã bản địa hóa và xác minh việc tích hợp.
|
|
|
|
Các ví dụ sau hiển thị cả định nghĩa trong ARB và nội dung người dùng thực sự thấy sau khi ứng dụng truyền giá trị.
|
|
|
|
1. Chèn biến vào thông điệp
|
|
|
|
Định nghĩa ARB:
|
|
|
|
```json
|
|
"welcomeUser": "Xin chào, {name}"
|
|
```
|
|
|
|
Kết quả hiển thị: khi `name = An`, người dùng thấy “Xin chào, An”. Có thể đổi trật tự câu nhưng phải giữ `{name}`.
|
|
|
|
2. Hiển thị nội dung khác nhau theo số lượng
|
|
|
|
Định nghĩa ARB:
|
|
|
|
```json
|
|
"fileCount": "{count, plural, =0{Không có tệp} =1{1 tệp} other{{count} tệp}}"
|
|
```
|
|
|
|
Kết quả hiển thị:
|
|
|
|
- `count = 0` → “Không có tệp”
|
|
- `count = 1` → “1 tệp”
|
|
- `count = 3` → “3 tệp”
|
|
|
|
`=0`, `=1` và `other` lần lượt biểu thị số lượng bằng 0, bằng 1 và các số lượng còn lại. Chỉ dịch phần chữ
|
|
hiển thị cho người dùng bên trong mỗi nhánh.
|
|
|
|
3. Hiển thị nội dung khác nhau theo giá trị biến
|
|
|
|
Định nghĩa ARB:
|
|
|
|
```json
|
|
"taskState": "{state, select, running{Đang chạy} paused{Đã tạm dừng} other{Không xác định}}"
|
|
```
|
|
|
|
Kết quả hiển thị:
|
|
|
|
- `state = running` → “Đang chạy”
|
|
- `state = paused` → “Đã tạm dừng”
|
|
- Giá trị khác → “Không xác định”
|
|
|
|
`running`, `paused` và `other` là các giá trị do ứng dụng truyền vào nên không được dịch; chỉ dịch phần chữ
|
|
hiển thị trong dấu ngoặc theo sau chúng.
|
|
|
|
## Phát triển flutter
|
|
|
|
Đừng quên chạy `dart format ./ui/flutter` trước khi commit để giữ mã của bạn theo định dạng dart chuẩn.
|
|
|
|
Bật build_runner watcher nếu bạn muốn chỉnh sửa api/models:
|