mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2026-10-29 18:54:34 +08:00
chore(i18n,docs): processed translations (#46786)
This commit is contained in:
@@ -10,7 +10,7 @@ freeCodeCamp runs on a modern JavaScript stack. If you're interested in contribu
|
||||
|
||||
Yes - You can contribute to any of the 30+ languages we have enabled on our translation platform.
|
||||
|
||||
We have user-contributed translations live in some languages. We intend to localize freeCodeCamp into several major world languages. You can read all about this in our [announcement here](https://www.freecodecamp.org/news/world-language-translation-effort).
|
||||
We have user-contributed translations live in some languages. We intend to localize freeCodeCamp into several major world languages. You can read all about this in our [announcement here](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/).
|
||||
|
||||
If you are interested in contributing to translations please makes sure you [read this guide](how-to-translate-files.md) first.
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
- [Work on proofreading translations](how-to-proofread-files.md)
|
||||
- **Code Contribution**
|
||||
- [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md)
|
||||
- [Work on mobile app](how-to-setup-freecodecamp-mobile-app-locally.md)
|
||||
- [Follow coding best practices](codebase-best-practices.md)
|
||||
- [Open a pull request](how-to-open-a-pull-request.md)
|
||||
- [Work on coding challenges](how-to-work-on-coding-challenges.md)
|
||||
|
||||
@@ -0,0 +1,405 @@
|
||||
Follow this guide for setting up the freeCodeCamp mobile app locally on your system. This is highly recommended if you want to contribute regularly.
|
||||
|
||||
Some of the contribution workflows – like fixing bugs in the codebase – need you to run freeCodeCamp app locally.
|
||||
|
||||
### How to prepare your local machine
|
||||
|
||||
Start by installing the prerequisite software for your operating system.
|
||||
|
||||
#### Prerequisites:
|
||||
|
||||
| Prerequisite | Version | Notes |
|
||||
| --------------------------------- | ------- | ---------------------------------------- |
|
||||
| [Flutter](https://flutter.dev/) | `3.x` | - |
|
||||
| Dart (comes bundled with Flutter) | `2.x` | We use the version bundled with Flutter. |
|
||||
|
||||
> [!ATTENTION] If you have a different version, please install the recommended version. We can only support installation issues for recommended versions.
|
||||
|
||||
If Flutter is already installed on your machine, run the following commands to validate the versions:
|
||||
|
||||
```console
|
||||
flutter --version
|
||||
dart --version
|
||||
```
|
||||
|
||||
> [!TIP] We highly recommend updating to the latest stable releases of the software listed above.
|
||||
|
||||
Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once.
|
||||
|
||||
##### Follow these steps to get your development environment ready:
|
||||
|
||||
1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated.
|
||||
|
||||
2. Setup [Android Studio](https://developer.android.com/studio) and [Android Emulators](https://developer.android.com/studio/run/managing-avds) with the latest released Android version. We recommend using the Pixel 3a XL and Nexus One(for emulating smaller screens).
|
||||
|
||||
3. (Optional for MacOS) Setup Xcode and iOS Simulator with the latest released iOS version.
|
||||
|
||||
4. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub.
|
||||
|
||||
5. Install a code editor of your choice.
|
||||
|
||||
We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or Android Studio. We also recommend installing the official [extensions](https://docs.flutter.dev/get-started/editor?tab=vscode)
|
||||
|
||||
## Fork the repository on GitHub
|
||||
|
||||
[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of the repository (a.k.a _repo_) on GitHub.
|
||||
|
||||
This is essential, as it allows you to work on your own copy of freeCodeCamp mobile app on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR).
|
||||
|
||||
> [!TIP] The main repository at `https://github.com/freeCodeCamp/mobile` is often referred to as the `upstream` repository.
|
||||
>
|
||||
> Your fork at `https://github.com/YOUR_USER_NAME/mobile` is often referred to as the `origin` repository. `YOUR_USER_NAME` would be replaced with your GitHub username.
|
||||
|
||||
**Follow these steps to fork the `https://github.com/freeCodeCamp/mobile` repository:**
|
||||
|
||||
1. Go to the freeCodeCamp mobile repository on GitHub: <https://github.com/freeCodeCamp/mobile>
|
||||
|
||||
2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/))
|
||||
|
||||
3. After the repository has been forked, you will be taken to your copy of the repository at `https://github.com/YOUR_USER_NAME/mobile` (`YOUR_USER_NAME` would be replaced with your GitHub user name.)
|
||||
|
||||
## Clone your fork from GitHub
|
||||
|
||||
[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/mobile`. (`YOUR_USER_NAME` would be replaced with your GitHub user name.)
|
||||
|
||||
Run these commands on your local machine:
|
||||
|
||||
1. Open a Terminal / Command Prompt / Shell in your projects directory
|
||||
|
||||
_i.e.: `/yourprojectsdirectory/`_
|
||||
|
||||
2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username
|
||||
|
||||
```console
|
||||
git clone --depth=1 https://github.com/YOUR_USER_NAME/mobile.git
|
||||
```
|
||||
|
||||
This will download the entire freeCodeCamp mobile repository to your projects directory.
|
||||
|
||||
Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit.
|
||||
|
||||
## Set up syncing from parent
|
||||
|
||||
Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository.
|
||||
|
||||
[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository.
|
||||
|
||||
You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly.
|
||||
|
||||
1. Change directory to the new `mobile` directory:
|
||||
|
||||
```console
|
||||
cd mobile
|
||||
```
|
||||
|
||||
2. Add a remote reference to the main freeCodeCamp mobile repository:
|
||||
|
||||
```console
|
||||
git remote add upstream https://github.com/freeCodeCamp/mobile.git
|
||||
```
|
||||
|
||||
3. Ensure the configuration looks correct:
|
||||
|
||||
```console
|
||||
git remote -v
|
||||
```
|
||||
|
||||
The output should look something like below (replacing `YOUR_USER_NAME` with your GitHub username):
|
||||
|
||||
```console
|
||||
origin https://github.com/YOUR_USER_NAME/mobile.git (fetch)
|
||||
origin https://github.com/YOUR_USER_NAME/mobile.git (push)
|
||||
upstream https://github.com/freeCodeCamp/mobile.git (fetch)
|
||||
upstream https://github.com/freeCodeCamp/mobile.git (push)
|
||||
```
|
||||
|
||||
## Running freeCodeCamp mobile app locally
|
||||
|
||||
Now that you have a local copy of the mobile app, you can follow these instructions to run it locally.
|
||||
|
||||
If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/mobile/issues) page for a solution and report the issue if it has not yet been reported.
|
||||
|
||||
And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our chat server](https://discord.gg/PRyKn3Vbay).
|
||||
|
||||
> [!NOTE] The `mobile` directory contains two folders ie. `mobile-api` and `mobile-app`. `mobile-api` contains the API code used for serving the podcasts. `mobile-app` contains the Flutter app which is where you should be when you follow the below steps.
|
||||
|
||||
### Configuring dependencies
|
||||
|
||||
#### Step 1: Set up the environment variable file
|
||||
|
||||
The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step. Remember to change the directory to `mobile-app` before running the following commands.
|
||||
|
||||
```console
|
||||
# Create a copy of the "sample.env" and name it ".env".
|
||||
# Populate it with the necessary API keys and secrets:
|
||||
```
|
||||
|
||||
<!-- tabs:start -->
|
||||
|
||||
#### **macOS/Linux**
|
||||
|
||||
```console
|
||||
cp sample.env .env
|
||||
```
|
||||
|
||||
#### **Windows**
|
||||
|
||||
```console
|
||||
copy sample.env .env
|
||||
```
|
||||
|
||||
<!-- tabs:end -->
|
||||
|
||||
The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is.
|
||||
|
||||
#### Step 2: Install dependencies
|
||||
|
||||
This step will install the dependencies required for the application to run:
|
||||
|
||||
```console
|
||||
flutter pub get
|
||||
```
|
||||
|
||||
#### Step 3: Start the freeCodeCamp mobile app
|
||||
|
||||
Start the emulator of your choice(Android or iOS) and wait for the bootup process to complete.
|
||||
|
||||
You can now start the app by running the following command:
|
||||
|
||||
```console
|
||||
flutter run
|
||||
```
|
||||
|
||||
> [!TIP] If you're using VSCode or Android Studio then you can easily start the app without having to execute any terminal commands. More information [here](https://docs.flutter.dev/get-started/test-drive).
|
||||
|
||||
## Making changes locally
|
||||
|
||||
You can now make changes to files and commit your changes to your local clone of your fork.
|
||||
|
||||
Follow these steps:
|
||||
|
||||
1. Validate that you are on the `main` branch:
|
||||
|
||||
```console
|
||||
git status
|
||||
```
|
||||
|
||||
You should get an output like this:
|
||||
|
||||
```console
|
||||
On branch main
|
||||
Your branch is up-to-date with 'origin/main'.
|
||||
|
||||
nothing to commit, working directory clean
|
||||
```
|
||||
|
||||
If you are not on main or your working directory is not clean, resolve any outstanding files/commits and checkout `main`:
|
||||
|
||||
```console
|
||||
git checkout main
|
||||
```
|
||||
|
||||
2. Sync the latest changes from the upstream `main` branch to your local main branch:
|
||||
|
||||
> [!WARNING] If you have any outstanding pull request that you made from the `main` branch of your fork, you will lose them at the end of this step.
|
||||
>
|
||||
> You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `main`.
|
||||
|
||||
This step **will sync the latest changes** from the main repository of freeCodeCamp mobile. It is important that you rebase your branch on top of the latest `upstream/main` as often as possible to avoid conflicts later.
|
||||
|
||||
Update your local copy of the freeCodeCamp mobile upstream repository:
|
||||
|
||||
```console
|
||||
git fetch upstream
|
||||
```
|
||||
|
||||
Hard reset your main branch with the freeCodeCamp mobile main:
|
||||
|
||||
```console
|
||||
git reset --hard upstream/main
|
||||
```
|
||||
|
||||
Push your main branch to your origin to have a clean history on your fork on GitHub:
|
||||
|
||||
```console
|
||||
git push origin main --force
|
||||
```
|
||||
|
||||
You can validate your current main matches the upstream/main by performing a diff:
|
||||
|
||||
```console
|
||||
git diff upstream/main
|
||||
```
|
||||
|
||||
The resulting output should be empty.
|
||||
|
||||
3. Create a fresh new branch:
|
||||
|
||||
Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `main`. This will soil your copy of freeCodeCamp mobile and you may have to start over with a fresh clone or fork.
|
||||
|
||||
Check that you are on `main` as explained previously, and branch off from there:
|
||||
|
||||
```console
|
||||
git checkout -b fix/update-guide-for-xyz
|
||||
```
|
||||
|
||||
Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique.
|
||||
|
||||
Some examples of good branch names are:
|
||||
|
||||
```md
|
||||
fix/update-challenges-for-react
|
||||
fix/update-guide-for-html-css
|
||||
fix/platform-bug-sign-in-issues
|
||||
feat/add-guide-article-for-javascript
|
||||
translate/add-spanish-basic-html
|
||||
```
|
||||
|
||||
4. Edit pages and work on code in your favorite text editor.
|
||||
|
||||
5. Once you are happy with the changes you should optionally run the mobile app locally to preview the changes.
|
||||
|
||||
6. Make sure you fix any errors and check the formatting of your changes.
|
||||
|
||||
7. Check and confirm the files you are updating:
|
||||
|
||||
```console
|
||||
git status
|
||||
```
|
||||
|
||||
This should show a list of `unstaged` files that you have edited.
|
||||
|
||||
```console
|
||||
On branch feat/documentation
|
||||
Your branch is up to date with 'upstream/feat/documentation'.
|
||||
|
||||
Changes were not staged for commit:
|
||||
(use "git add/rm <file>..." to update what will be committed)
|
||||
(use "git checkout -- <file>..." to discard changes in the working directory)
|
||||
|
||||
modified: README.md
|
||||
modified: mobile-app/lib/main.dart
|
||||
...
|
||||
```
|
||||
|
||||
8. Stage the changes and make a commit:
|
||||
|
||||
In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed.
|
||||
|
||||
```console
|
||||
git add path/to/my/changed/file.ext
|
||||
```
|
||||
|
||||
Or you can add all the `unstaged` files to the staging area:
|
||||
|
||||
```console
|
||||
git add .
|
||||
```
|
||||
|
||||
Only the files that were moved to the staging area will be added when you make a commit.
|
||||
|
||||
```console
|
||||
git status
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```console
|
||||
On branch feat/documentation
|
||||
Your branch is up to date with 'upstream/feat/documentation'.
|
||||
|
||||
Changes to be committed:
|
||||
(use "git reset HEAD <file>..." to unstage)
|
||||
|
||||
modified: README.md
|
||||
modified: mobile-app/lib/main.dart
|
||||
```
|
||||
|
||||
Now, you can commit your changes with a short message like so:
|
||||
|
||||
```console
|
||||
git commit -m "fix: my short commit message"
|
||||
```
|
||||
|
||||
Some examples:
|
||||
|
||||
```md
|
||||
fix: update guide article for Java - for loop
|
||||
feat: add guide article for alexa skills
|
||||
```
|
||||
|
||||
Optional:
|
||||
|
||||
We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices.
|
||||
|
||||
Some examples of conventional commit messages are:
|
||||
|
||||
```md
|
||||
fix: update HTML guide article
|
||||
fix: update build scripts for Travis-CI
|
||||
feat: add article for JavaScript hoisting
|
||||
docs: update contributing guidelines
|
||||
```
|
||||
|
||||
Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message.
|
||||
|
||||
This does not take any additional time than an unconventional message like 'update file' or 'add index.md'
|
||||
|
||||
You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits).
|
||||
|
||||
9. If you realize that you need to edit a file or update the commit message after making a commit you can do so after editing the files with:
|
||||
|
||||
```console
|
||||
git commit --amend
|
||||
```
|
||||
|
||||
This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description.
|
||||
|
||||
10. Next, you can push your changes to your fork:
|
||||
|
||||
```console
|
||||
git push origin branch/name-here
|
||||
```
|
||||
|
||||
## Proposing a Pull Request (PR)
|
||||
|
||||
After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md).
|
||||
|
||||
<!-- ## Quick commands reference - NEED TO DISCUSS ABOUT THIS
|
||||
|
||||
A quick reference to the commands that you will need when working locally.
|
||||
|
||||
| command | description |
|
||||
| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
|
||||
| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. |
|
||||
| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. | -->
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Issues with installing the recommended prerequisites
|
||||
|
||||
We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later, and Windows 10 (with WSL2).
|
||||
|
||||
It is recommended to research your specific issue on resources such as Google, Stack Overflow, and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query.
|
||||
|
||||
If you are on a different OS and/or are still running into issues, see [getting help](#getting-help).
|
||||
|
||||
### Issues with the UI, build errors, etc.
|
||||
|
||||
If you face issues with the UI, or builds errors a cleanup can be useful:
|
||||
|
||||
```console
|
||||
flutter clean
|
||||
```
|
||||
|
||||
### Issues installing dependencies
|
||||
|
||||
If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources.
|
||||
|
||||
Be patient as the first time setup can take a while depending on your network bandwidth.
|
||||
|
||||
## Getting Help
|
||||
|
||||
If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [the contributors chat room](https://discord.gg/PRyKn3Vbay).
|
||||
|
||||
There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution.
|
||||
@@ -1,32 +1,18 @@
|
||||
# 如何翻譯 freeCodeCamp 的資源
|
||||
|
||||
我們夢想爲使用不同語言的用戶提供學習資源。 爲了實現這一夢想,我們將代碼開源的課程整合到了 [Crowdin](https://crowdin.com/) 中——這是一個幫助我們本地化代碼庫的工具。
|
||||
|
||||
翻譯流程主要包括兩部分:
|
||||
|
||||
- **翻譯**課程文件、文檔和 UI 元素(如按鈕、標籤):
|
||||
|
||||
譯者可以在[我們的翻譯平臺](https://translate.freecodecamp.org)註冊,然後從 30+ 種語言版本中選擇要參與貢獻的版本,進行翻譯。
|
||||
|
||||
- **校對**上述翻譯。
|
||||
|
||||
校對者確認社區成員貢獻的譯文語調一致,沒有錯別字等常見問題。 簡而言之,校對者需要確保譯文是高質量的。 注意,我們不使用任何機器翻譯。
|
||||
|
||||
> [!WARNING] 我們不再使用 GitHub 直接翻譯文件。如果你曾經在 GitHub 參與翻譯,現在請在我們的[翻譯平臺](https://translate.freecodecamp.org/)參與。
|
||||
|
||||
## 貢獻前的準備
|
||||
|
||||
> freeCodeCamp 本地化路線圖 —— 沒有速度限制
|
||||
> The freeCodeCamp Localization Roadmap – There Are No Speed Limits
|
||||
|
||||
你可以自由安排參與翻譯的時間,自由選擇翻譯的內容。 問題只在於你願意花多少時間和精力作爲志願者參與翻譯。
|
||||
You can translate as much as you want, when you want. It's only a matter of how much time and energy you are willing to invest as a volunteer translator.
|
||||
|
||||
我們希望你理解:
|
||||
We just ask that you understand the following:
|
||||
|
||||
1. **翻譯是一件團隊協作的事情。**
|
||||
|
||||
翻譯 freeCodeCamp 的資源是對貢獻者來說最有趣和最有意義的經歷之一。如果你邀請與你使用同一種語言的朋友和同事參與,那麼效果最好。
|
||||
|
||||
We recommend joining [our community forum](https://forum.freecodecamp.org/c/contributors/3) and [contributors chat room](https://discord.gg/PRyKn3Vbay) with your friends and showing your interest before starting off with translations. Crowdin 讓翻譯變得簡單,但還是需要大量的工作。
|
||||
You can start by reading [this announcement](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/). We recommend joining [our community forum](https://forum.freecodecamp.org/c/contributors/3) and [Discord chat server](https://discord.gg/PRyKn3Vbay) with your friends and showing your interest before starting off with translations. Crowdin and other tools make it easy to contribute translations, but it's still a lot of work.
|
||||
|
||||
我們希望你在貢獻過程感到快樂,而不是感到疲憊,然後失去興趣。
|
||||
|
||||
@@ -38,7 +24,7 @@
|
||||
|
||||
freeCodeCamp.org is committed to providing these for free as always, however we need to prioritize resources for those who need them the most. 我們非常不想看到某種語言的翻譯活動結束了,並且內容過時了,然後我們不得不關閉相應的服務器。
|
||||
|
||||
當某種語言的翻譯團隊完成了幾個認證, 我們就可以開始將這種語言版本在[`/learn`](https://www.freecodecamp.org/learn)上線,然後你們可以繼續翻譯剩餘的認證。
|
||||
For translating the curriculum, once a language reaches at least a few certifications we can begin deploying the language live on [`/learn`](https://www.freecodecamp.org/learn), while you continue to translate the remaining certifications.
|
||||
|
||||
舉個例子, 當我們正式上線一個新的語言版本的時候,我們希望至少上線整個前端認證的內容。
|
||||
|
||||
@@ -54,9 +40,27 @@
|
||||
|
||||
如果你們有一個組的人(至少四到五人)對某一種語言感興趣,並且承諾翻譯這種語言, 那麼我們可以在翻譯平臺上增加這種語言。 我們會解釋一切的細節,並且幫助你掌握這些翻譯工具和理解這些翻譯的過程。
|
||||
|
||||
## 準備開始
|
||||
## Overview of Crowdin
|
||||
|
||||
First, make sure you come say "Hi" in our [contributors chat room](https://discord.gg/PRyKn3Vbay). 我們會在聊天室定期更新翻譯的資源和回答很多問題。
|
||||
It's our dream to provide you with the resources to learn, no matter the world language you speak. To help us with this massive effort, we have integrated our open-source code-base & curriculum with [Crowdin](https://crowdin.com/) - A tool to help us localize our code-base.
|
||||
|
||||
> [!NOTE] We use a different tool and workflow for translating [news articles](https://www.freecodecamp.org/news). If you are interested in translating articles, read [this announcement](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/) and reach out to your Language Lead.
|
||||
|
||||
The translation workflow is split into two main activities:
|
||||
|
||||
- **翻譯**課程文件、文檔和 UI 元素(如按鈕、標籤):
|
||||
|
||||
譯者可以在[我們的翻譯平臺](https://translate.freecodecamp.org)註冊,然後從 30+ 種語言版本中選擇要參與貢獻的版本,進行翻譯。
|
||||
|
||||
- **校對**上述翻譯。
|
||||
|
||||
校對者確認社區成員貢獻的譯文語調一致,沒有錯別字等常見問題。 簡而言之,校對者需要確保譯文是高質量的。 注意,我們不使用任何機器翻譯。
|
||||
|
||||
> [!WARNING] We are no longer using GitHub to translate files directly, if you are a returning contributor head to our [translation platform](https://translate.freecodecamp.org/) instead.
|
||||
|
||||
## Getting started
|
||||
|
||||
First, make sure you come say "Hi" in our [Discord](https://discord.gg/PRyKn3Vbay). 我們會在聊天室定期更新翻譯的資源和回答很多問題。
|
||||
|
||||
其次,去我們的[翻譯平臺](https://translate.freecodecamp.org/)並且登陸(假如你以前沒有貢獻翻譯過,你需要創建一個新賬戶)。
|
||||
|
||||
@@ -64,7 +68,7 @@ First, make sure you come say "Hi" in our [contributors chat room](https://disco
|
||||
|
||||
祝你在翻譯過程中感到快樂哦!
|
||||
|
||||
## 選擇一個項目和文件
|
||||
## Select a Project and File
|
||||
|
||||
當你訪問翻譯平臺,你應該可以看到很多不同的等待翻譯的項目:
|
||||
|
||||
@@ -84,9 +88,9 @@ First, make sure you come say "Hi" in our [contributors chat room](https://disco
|
||||
|
||||
選擇你想翻譯的文件,然後 Crowdin 會打開編輯界面。
|
||||
|
||||
> [!NOTE] 打開編輯界面後,你需要點擊設置圖標(右上角的齒輪狀圖標),將 “HTML tags displaying” 設置爲 “SHOW”。 這樣,文件中會顯示 `<code></code>` 標籤,而不是 `<0></0>` 標籤。
|
||||
> [!NOTE] When the editor view opens, you will need to click the settings icon (shown as a gear) and switch the 'HTML tags displaying' setting to 'SHOW'. This will ensure you can see tags such as `<code></code>` instead of `<0></0>`.
|
||||
|
||||
## 翻譯課程
|
||||
## Translate Curriculum
|
||||
|
||||

|
||||
|
||||
@@ -103,19 +107,19 @@ Crowdin 將文檔分成可翻譯的“字符串”,通常是句子。 每個
|
||||
9. 這裏是評論窗口。 如果你對某個字符串有疑問或疑慮,可以在此處對字符串發表評論,以便其他翻譯人員查看。
|
||||
10. 點擊這兩個“窗格”按鈕,可以隱藏左邊的(文件)視圖和右邊的(評論)視圖。
|
||||
|
||||
> [!NOTE] If you see a hidden string that includes translations, please notify us in the [contributors chat room](https://discord.gg/PRyKn3Vbay) so we can remove the translation from memory.
|
||||
> [!NOTE] If you see a hidden string that includes translations, please notify us in the [Discord](https://discord.gg/PRyKn3Vbay) so we can remove the translation from memory.
|
||||
|
||||
當你翻譯完一個字符串,請點擊 `Save` 按鈕,將你的譯文保存在 Crowdin 中。 然後其他貢獻者可以給你的譯文投票,而校對者也將審覈確認你的譯文。
|
||||
|
||||
你想翻譯多少字符串,都可以,我們非常歡迎你貢獻!當你翻譯完某個文件或某個字符串之後,你不需要採取其他步驟。 你只需要點擊 `Save` 按鈕,就能保存你的譯文了。
|
||||
|
||||
> [!NOTE] 如果你發現在英語源文件中有不正確的內容,請不要在翻譯流程中對其進行修改。 請在字符串上留下評論,通知我們有什麼問題,或者在 GitHub 創建 issue。
|
||||
> [!NOTE] If you see something in the English source file that is inaccurate or incorrect, please do not fix it through the translation flow. Instead, leave a comment on the string to notify us that there is a discrepancy, or create a GitHub issue.
|
||||
|
||||
## 翻譯文檔
|
||||
## Translate Documentation
|
||||
|
||||
翻譯貢獻文檔的流程和翻譯課程文件的流程類似。
|
||||
|
||||
> [!NOTE] 我們的貢獻文檔由 ` docsify ` 提供支持,並且我們對消息框(比如這份文檔裏的)進行了特殊的解析。 如果你看到以 `[!NOTE]`、`[!WARNING]` 或 `[!TIP]` 開頭的字符串,請注意不要翻譯這些單詞。
|
||||
> [!NOTE] Our contributing documentation is powered by `docsify`, and we have special parsing for message boxes like this one. If you see strings that start with `[!NOTE]`, `[!WARNING]`, or `[!TIP]`, these words should NOT be translated.
|
||||
|
||||
### How to translate documentation with internal links
|
||||
|
||||
@@ -296,7 +300,7 @@ When you attempt to save a translation, you may see a warning message appear wit
|
||||
|
||||
This message appears when Crowdin's QA system has identified a potential error in the proposed translation. In this example, we have modified the text of a `<code>` tag and Crowdin has caught that.
|
||||
|
||||
> [!WARNING] 即使 Crowdin 提示有錯誤,你也可以選擇保存譯文。 如果你仍要通過點擊 “Save Anyway” 保存譯文,那麼你應該標記(@)校對人員或項目經理,說明爲什麼需要忽略質量檢查消息。
|
||||
> [!WARNING] You have the option to save a translation in spite of errors. If you do, by clicking "Save Anyway", you should also tag a proofreader or project manager and explain why the QA message needs to be ignored in this case.
|
||||
|
||||
## Translation Best Practices
|
||||
|
||||
@@ -306,4 +310,4 @@ Follow these guidelines to ensure our translations are as accurate as possible:
|
||||
- Do not add additional content. If you feel a challenge requires changes in the text content or additional information, you should propose the changes through a GitHub issue or a pull request that modifies the English file.
|
||||
- Do not change the order of content.
|
||||
|
||||
If you have any questions, feel free to reach out to us in our [contributors chat room](https://discord.gg/PRyKn3Vbay) and we will be happy to assist you.
|
||||
If you have any questions, feel free to reach out to us in our [Discord](https://discord.gg/PRyKn3Vbay) and we will be happy to assist you.
|
||||
|
||||
@@ -22,7 +22,16 @@ Happy contributing.
|
||||
|
||||
We are localizing freeCodeCamp.org to major world languages.
|
||||
|
||||
Certifications are already live in some major world languages like [Chinese (中文)](https://chinese.freecodecamp.org/learn), [Spanish (Español)](https://www.freecodecamp.org/espanol/learn), [Italian (Italiano)](https://www.freecodecamp.org/italian/learn), [Portuguese (Português)](https://www.freecodecamp.org/portuguese/learn). We encourage you to read the [announcement here](https://www.freecodecamp.org/news/world-language-translation-effort) and share it with your friends to get them excited about this.
|
||||
Certifications are already live in some major world languages like below:
|
||||
|
||||
- [Chinese (中文)](https://chinese.freecodecamp.org/learn)
|
||||
- [Spanish (Español)](https://www.freecodecamp.org/espanol/learn)
|
||||
- [Italian (Italiano)](https://www.freecodecamp.org/italian/learn)
|
||||
- [Portuguese (Português)](https://www.freecodecamp.org/portuguese/learn)
|
||||
- [Ukrainian (Українська)](https://www.freecodecamp.org/ukrainian/learn)
|
||||
- [Japanese (日本語)](https://www.freecodecamp.org/japanese/learn)
|
||||
|
||||
We encourage you to read the [announcement here](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/) and share it with your friends to get them excited about this.
|
||||
|
||||
**If you're interested in translating, here's [how to translate freeCodeCamp's resources](how-to-translate-files.md).**
|
||||
|
||||
@@ -32,12 +41,12 @@ Our learning platform runs on a modern JavaScript stack. It has various componen
|
||||
|
||||
Broadly, we have a Node.js based API server, a set of React-based client applications, testing scripts to evaluate camper-submitted curriculum projects, and more. If you want to productively contribute to the learning platform, we recommend some familiarity with these tools.
|
||||
|
||||
如果你想幫助我們改進我們的基礎代碼的話……
|
||||
If you want to help us improve our codebase...
|
||||
|
||||
**你可以使用 Gitpod,一個免費的在線開發環境,在你的瀏覽器中爲 freeCodeCamp 啓動一個準備好的代碼開發環境。**
|
||||
**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.**
|
||||
|
||||
[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
|
||||
[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
|
||||
|
||||
或者,你也可以……
|
||||
Or you can...
|
||||
|
||||
**[Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.**
|
||||
|
||||
@@ -10,7 +10,7 @@ freeCodeCamp runs on a modern JavaScript stack. If you're interested in contribu
|
||||
|
||||
Yes - You can contribute to any of the 30+ languages we have enabled on our translation platform.
|
||||
|
||||
We have user-contributed translations live in some languages. We intend to localize freeCodeCamp into several major world languages. You can read all about this in our [announcement here](https://www.freecodecamp.org/news/world-language-translation-effort).
|
||||
We have user-contributed translations live in some languages. We intend to localize freeCodeCamp into several major world languages. You can read all about this in our [announcement here](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/).
|
||||
|
||||
If you are interested in contributing to translations please makes sure you [read this guide](how-to-translate-files.md) first.
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
- [Work on proofreading translations](how-to-proofread-files.md)
|
||||
- **Code Contribution**
|
||||
- [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md)
|
||||
- [Work on mobile app](how-to-setup-freecodecamp-mobile-app-locally.md)
|
||||
- [Follow coding best practices](codebase-best-practices.md)
|
||||
- [Open a pull request](how-to-open-a-pull-request.md)
|
||||
- [Work on coding challenges](how-to-work-on-coding-challenges.md)
|
||||
|
||||
@@ -0,0 +1,405 @@
|
||||
Follow this guide for setting up the freeCodeCamp mobile app locally on your system. This is highly recommended if you want to contribute regularly.
|
||||
|
||||
Some of the contribution workflows – like fixing bugs in the codebase – need you to run freeCodeCamp app locally.
|
||||
|
||||
### How to prepare your local machine
|
||||
|
||||
Start by installing the prerequisite software for your operating system.
|
||||
|
||||
#### Prerequisites:
|
||||
|
||||
| Prerequisite | Version | Notes |
|
||||
| --------------------------------- | ------- | ---------------------------------------- |
|
||||
| [Flutter](https://flutter.dev/) | `3.x` | - |
|
||||
| Dart (comes bundled with Flutter) | `2.x` | We use the version bundled with Flutter. |
|
||||
|
||||
> [!ATTENTION] If you have a different version, please install the recommended version. We can only support installation issues for recommended versions.
|
||||
|
||||
If Flutter is already installed on your machine, run the following commands to validate the versions:
|
||||
|
||||
```console
|
||||
flutter --version
|
||||
dart --version
|
||||
```
|
||||
|
||||
> [!TIP] We highly recommend updating to the latest stable releases of the software listed above.
|
||||
|
||||
Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once.
|
||||
|
||||
##### Follow these steps to get your development environment ready:
|
||||
|
||||
1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated.
|
||||
|
||||
2. Setup [Android Studio](https://developer.android.com/studio) and [Android Emulators](https://developer.android.com/studio/run/managing-avds) with the latest released Android version. We recommend using the Pixel 3a XL and Nexus One(for emulating smaller screens).
|
||||
|
||||
3. (Optional for MacOS) Setup Xcode and iOS Simulator with the latest released iOS version.
|
||||
|
||||
4. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub.
|
||||
|
||||
5. Install a code editor of your choice.
|
||||
|
||||
We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or Android Studio. We also recommend installing the official [extensions](https://docs.flutter.dev/get-started/editor?tab=vscode)
|
||||
|
||||
## Fork the repository on GitHub
|
||||
|
||||
[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of the repository (a.k.a _repo_) on GitHub.
|
||||
|
||||
This is essential, as it allows you to work on your own copy of freeCodeCamp mobile app on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR).
|
||||
|
||||
> [!TIP] The main repository at `https://github.com/freeCodeCamp/mobile` is often referred to as the `upstream` repository.
|
||||
>
|
||||
> Your fork at `https://github.com/YOUR_USER_NAME/mobile` is often referred to as the `origin` repository. `YOUR_USER_NAME` would be replaced with your GitHub username.
|
||||
|
||||
**Follow these steps to fork the `https://github.com/freeCodeCamp/mobile` repository:**
|
||||
|
||||
1. Go to the freeCodeCamp mobile repository on GitHub: <https://github.com/freeCodeCamp/mobile>
|
||||
|
||||
2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/))
|
||||
|
||||
3. After the repository has been forked, you will be taken to your copy of the repository at `https://github.com/YOUR_USER_NAME/mobile` (`YOUR_USER_NAME` would be replaced with your GitHub user name.)
|
||||
|
||||
## Clone your fork from GitHub
|
||||
|
||||
[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/mobile`. (`YOUR_USER_NAME` would be replaced with your GitHub user name.)
|
||||
|
||||
Run these commands on your local machine:
|
||||
|
||||
1. Open a Terminal / Command Prompt / Shell in your projects directory
|
||||
|
||||
_i.e.: `/yourprojectsdirectory/`_
|
||||
|
||||
2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username
|
||||
|
||||
```console
|
||||
git clone --depth=1 https://github.com/YOUR_USER_NAME/mobile.git
|
||||
```
|
||||
|
||||
This will download the entire freeCodeCamp mobile repository to your projects directory.
|
||||
|
||||
Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit.
|
||||
|
||||
## Set up syncing from parent
|
||||
|
||||
Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository.
|
||||
|
||||
[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository.
|
||||
|
||||
You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly.
|
||||
|
||||
1. Change directory to the new `mobile` directory:
|
||||
|
||||
```console
|
||||
cd mobile
|
||||
```
|
||||
|
||||
2. Add a remote reference to the main freeCodeCamp mobile repository:
|
||||
|
||||
```console
|
||||
git remote add upstream https://github.com/freeCodeCamp/mobile.git
|
||||
```
|
||||
|
||||
3. Ensure the configuration looks correct:
|
||||
|
||||
```console
|
||||
git remote -v
|
||||
```
|
||||
|
||||
The output should look something like below (replacing `YOUR_USER_NAME` with your GitHub username):
|
||||
|
||||
```console
|
||||
origin https://github.com/YOUR_USER_NAME/mobile.git (fetch)
|
||||
origin https://github.com/YOUR_USER_NAME/mobile.git (push)
|
||||
upstream https://github.com/freeCodeCamp/mobile.git (fetch)
|
||||
upstream https://github.com/freeCodeCamp/mobile.git (push)
|
||||
```
|
||||
|
||||
## Running freeCodeCamp mobile app locally
|
||||
|
||||
Now that you have a local copy of the mobile app, you can follow these instructions to run it locally.
|
||||
|
||||
If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/mobile/issues) page for a solution and report the issue if it has not yet been reported.
|
||||
|
||||
And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our chat server](https://discord.gg/PRyKn3Vbay).
|
||||
|
||||
> [!NOTE] The `mobile` directory contains two folders ie. `mobile-api` and `mobile-app`. `mobile-api` contains the API code used for serving the podcasts. `mobile-app` contains the Flutter app which is where you should be when you follow the below steps.
|
||||
|
||||
### Configuring dependencies
|
||||
|
||||
#### Step 1: Set up the environment variable file
|
||||
|
||||
The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step. Remember to change the directory to `mobile-app` before running the following commands.
|
||||
|
||||
```console
|
||||
# Create a copy of the "sample.env" and name it ".env".
|
||||
# Populate it with the necessary API keys and secrets:
|
||||
```
|
||||
|
||||
<!-- tabs:start -->
|
||||
|
||||
#### **macOS/Linux**
|
||||
|
||||
```console
|
||||
cp sample.env .env
|
||||
```
|
||||
|
||||
#### **Windows**
|
||||
|
||||
```console
|
||||
copy sample.env .env
|
||||
```
|
||||
|
||||
<!-- tabs:end -->
|
||||
|
||||
The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is.
|
||||
|
||||
#### Step 2: Install dependencies
|
||||
|
||||
This step will install the dependencies required for the application to run:
|
||||
|
||||
```console
|
||||
flutter pub get
|
||||
```
|
||||
|
||||
#### Step 3: Start the freeCodeCamp mobile app
|
||||
|
||||
Start the emulator of your choice(Android or iOS) and wait for the bootup process to complete.
|
||||
|
||||
You can now start the app by running the following command:
|
||||
|
||||
```console
|
||||
flutter run
|
||||
```
|
||||
|
||||
> [!TIP] If you're using VSCode or Android Studio then you can easily start the app without having to execute any terminal commands. More information [here](https://docs.flutter.dev/get-started/test-drive).
|
||||
|
||||
## Making changes locally
|
||||
|
||||
You can now make changes to files and commit your changes to your local clone of your fork.
|
||||
|
||||
Follow these steps:
|
||||
|
||||
1. Validate that you are on the `main` branch:
|
||||
|
||||
```console
|
||||
git status
|
||||
```
|
||||
|
||||
You should get an output like this:
|
||||
|
||||
```console
|
||||
On branch main
|
||||
Your branch is up-to-date with 'origin/main'.
|
||||
|
||||
nothing to commit, working directory clean
|
||||
```
|
||||
|
||||
If you are not on main or your working directory is not clean, resolve any outstanding files/commits and checkout `main`:
|
||||
|
||||
```console
|
||||
git checkout main
|
||||
```
|
||||
|
||||
2. Sync the latest changes from the upstream `main` branch to your local main branch:
|
||||
|
||||
> [!WARNING] If you have any outstanding pull request that you made from the `main` branch of your fork, you will lose them at the end of this step.
|
||||
>
|
||||
> You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `main`.
|
||||
|
||||
This step **will sync the latest changes** from the main repository of freeCodeCamp mobile. It is important that you rebase your branch on top of the latest `upstream/main` as often as possible to avoid conflicts later.
|
||||
|
||||
Update your local copy of the freeCodeCamp mobile upstream repository:
|
||||
|
||||
```console
|
||||
git fetch upstream
|
||||
```
|
||||
|
||||
Hard reset your main branch with the freeCodeCamp mobile main:
|
||||
|
||||
```console
|
||||
git reset --hard upstream/main
|
||||
```
|
||||
|
||||
Push your main branch to your origin to have a clean history on your fork on GitHub:
|
||||
|
||||
```console
|
||||
git push origin main --force
|
||||
```
|
||||
|
||||
You can validate your current main matches the upstream/main by performing a diff:
|
||||
|
||||
```console
|
||||
git diff upstream/main
|
||||
```
|
||||
|
||||
The resulting output should be empty.
|
||||
|
||||
3. Create a fresh new branch:
|
||||
|
||||
Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `main`. This will soil your copy of freeCodeCamp mobile and you may have to start over with a fresh clone or fork.
|
||||
|
||||
Check that you are on `main` as explained previously, and branch off from there:
|
||||
|
||||
```console
|
||||
git checkout -b fix/update-guide-for-xyz
|
||||
```
|
||||
|
||||
Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique.
|
||||
|
||||
Some examples of good branch names are:
|
||||
|
||||
```md
|
||||
fix/update-challenges-for-react
|
||||
fix/update-guide-for-html-css
|
||||
fix/platform-bug-sign-in-issues
|
||||
feat/add-guide-article-for-javascript
|
||||
translate/add-spanish-basic-html
|
||||
```
|
||||
|
||||
4. Edit pages and work on code in your favorite text editor.
|
||||
|
||||
5. Once you are happy with the changes you should optionally run the mobile app locally to preview the changes.
|
||||
|
||||
6. Make sure you fix any errors and check the formatting of your changes.
|
||||
|
||||
7. Check and confirm the files you are updating:
|
||||
|
||||
```console
|
||||
git status
|
||||
```
|
||||
|
||||
This should show a list of `unstaged` files that you have edited.
|
||||
|
||||
```console
|
||||
On branch feat/documentation
|
||||
Your branch is up to date with 'upstream/feat/documentation'.
|
||||
|
||||
Changes were not staged for commit:
|
||||
(use "git add/rm <file>..." to update what will be committed)
|
||||
(use "git checkout -- <file>..." to discard changes in the working directory)
|
||||
|
||||
modified: README.md
|
||||
modified: mobile-app/lib/main.dart
|
||||
...
|
||||
```
|
||||
|
||||
8. Stage the changes and make a commit:
|
||||
|
||||
In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed.
|
||||
|
||||
```console
|
||||
git add path/to/my/changed/file.ext
|
||||
```
|
||||
|
||||
Or you can add all the `unstaged` files to the staging area:
|
||||
|
||||
```console
|
||||
git add .
|
||||
```
|
||||
|
||||
Only the files that were moved to the staging area will be added when you make a commit.
|
||||
|
||||
```console
|
||||
git status
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```console
|
||||
On branch feat/documentation
|
||||
Your branch is up to date with 'upstream/feat/documentation'.
|
||||
|
||||
Changes to be committed:
|
||||
(use "git reset HEAD <file>..." to unstage)
|
||||
|
||||
modified: README.md
|
||||
modified: mobile-app/lib/main.dart
|
||||
```
|
||||
|
||||
Now, you can commit your changes with a short message like so:
|
||||
|
||||
```console
|
||||
git commit -m "fix: my short commit message"
|
||||
```
|
||||
|
||||
Some examples:
|
||||
|
||||
```md
|
||||
fix: update guide article for Java - for loop
|
||||
feat: add guide article for alexa skills
|
||||
```
|
||||
|
||||
Optional:
|
||||
|
||||
We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices.
|
||||
|
||||
Some examples of conventional commit messages are:
|
||||
|
||||
```md
|
||||
fix: update HTML guide article
|
||||
fix: update build scripts for Travis-CI
|
||||
feat: add article for JavaScript hoisting
|
||||
docs: update contributing guidelines
|
||||
```
|
||||
|
||||
Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message.
|
||||
|
||||
This does not take any additional time than an unconventional message like 'update file' or 'add index.md'
|
||||
|
||||
You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits).
|
||||
|
||||
9. If you realize that you need to edit a file or update the commit message after making a commit you can do so after editing the files with:
|
||||
|
||||
```console
|
||||
git commit --amend
|
||||
```
|
||||
|
||||
This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description.
|
||||
|
||||
10. Next, you can push your changes to your fork:
|
||||
|
||||
```console
|
||||
git push origin branch/name-here
|
||||
```
|
||||
|
||||
## Proposing a Pull Request (PR)
|
||||
|
||||
After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md).
|
||||
|
||||
<!-- ## Quick commands reference - NEED TO DISCUSS ABOUT THIS
|
||||
|
||||
A quick reference to the commands that you will need when working locally.
|
||||
|
||||
| command | description |
|
||||
| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
|
||||
| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. |
|
||||
| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. | -->
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Issues with installing the recommended prerequisites
|
||||
|
||||
We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later, and Windows 10 (with WSL2).
|
||||
|
||||
It is recommended to research your specific issue on resources such as Google, Stack Overflow, and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query.
|
||||
|
||||
If you are on a different OS and/or are still running into issues, see [getting help](#getting-help).
|
||||
|
||||
### Issues with the UI, build errors, etc.
|
||||
|
||||
If you face issues with the UI, or builds errors a cleanup can be useful:
|
||||
|
||||
```console
|
||||
flutter clean
|
||||
```
|
||||
|
||||
### Issues installing dependencies
|
||||
|
||||
If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources.
|
||||
|
||||
Be patient as the first time setup can take a while depending on your network bandwidth.
|
||||
|
||||
## Getting Help
|
||||
|
||||
If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [the contributors chat room](https://discord.gg/PRyKn3Vbay).
|
||||
|
||||
There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution.
|
||||
@@ -1,32 +1,18 @@
|
||||
# 如何翻译 freeCodeCamp 的资源
|
||||
|
||||
我们梦想为使用不同语言的用户提供学习资源。 为了实现这一梦想,我们将代码开源的课程整合到了 [Crowdin](https://crowdin.com/) 中——这是一个帮助我们本地化代码库的工具。
|
||||
|
||||
翻译流程主要包括两部分:
|
||||
|
||||
- **翻译**课程文件、文档和 UI 元素(如按钮、标签):
|
||||
|
||||
译者可以在[我们的翻译平台](https://translate.freecodecamp.org)注册,然后从 30+ 种语言版本中选择要参与贡献的版本,进行翻译。
|
||||
|
||||
- **校对**上述翻译。
|
||||
|
||||
校对者确认社区成员贡献的译文语调一致,没有错别字等常见问题。 简而言之,校对者需要确保译文是高质量的。 注意,我们不使用任何机器翻译。
|
||||
|
||||
> [!WARNING] 我们不再使用 GitHub 直接翻译文件。如果你曾经在 GitHub 参与翻译,现在请在我们的[翻译平台](https://translate.freecodecamp.org/)参与。
|
||||
|
||||
## 贡献前的准备
|
||||
|
||||
> freeCodeCamp 本地化路线图 —— 没有速度限制
|
||||
> The freeCodeCamp Localization Roadmap – There Are No Speed Limits
|
||||
|
||||
你可以自由安排参与翻译的时间,自由选择翻译的内容。 问题只在于你愿意花多少时间和精力作为志愿者参与翻译。
|
||||
You can translate as much as you want, when you want. It's only a matter of how much time and energy you are willing to invest as a volunteer translator.
|
||||
|
||||
我们希望你理解:
|
||||
We just ask that you understand the following:
|
||||
|
||||
1. **翻译是一件团队协作的事情。**
|
||||
|
||||
翻译 freeCodeCamp 的资源是对贡献者来说最有趣和最有意义的经历之一。如果你邀请与你使用同一种语言的朋友和同事参与,那么效果最好。
|
||||
|
||||
We recommend joining [our community forum](https://forum.freecodecamp.org/c/contributors/3) and [contributors chat room](https://discord.gg/PRyKn3Vbay) with your friends and showing your interest before starting off with translations. Crowdin 让翻译变得简单,但还是需要大量的工作。
|
||||
You can start by reading [this announcement](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/). We recommend joining [our community forum](https://forum.freecodecamp.org/c/contributors/3) and [Discord chat server](https://discord.gg/PRyKn3Vbay) with your friends and showing your interest before starting off with translations. Crowdin and other tools make it easy to contribute translations, but it's still a lot of work.
|
||||
|
||||
我们希望你在贡献过程感到快乐,而不是感到疲惫,然后失去兴趣。
|
||||
|
||||
@@ -38,7 +24,7 @@
|
||||
|
||||
freeCodeCamp.org is committed to providing these for free as always, however we need to prioritize resources for those who need them the most. 我们非常不想看到某种语言的翻译活动结束了,并且内容过时了,然后我们不得不关闭相应的服务器。
|
||||
|
||||
当某种语言的翻译团队完成了几个认证, 我们就可以开始将这种语言版本在[`/learn`](https://www.freecodecamp.org/learn)上线,然后你们可以继续翻译剩余的认证。
|
||||
For translating the curriculum, once a language reaches at least a few certifications we can begin deploying the language live on [`/learn`](https://www.freecodecamp.org/learn), while you continue to translate the remaining certifications.
|
||||
|
||||
举个例子, 当我们正式上线一个新的语言版本的时候,我们希望至少上线整个前端认证的内容。
|
||||
|
||||
@@ -54,9 +40,27 @@
|
||||
|
||||
如果你们有一个组的人(至少四到五人)对某一种语言感兴趣,并且承诺翻译这种语言, 那么我们可以在翻译平台上增加这种语言。 我们会解释一切的细节,并且帮助你掌握这些翻译工具和理解这些翻译的过程。
|
||||
|
||||
## 准备开始
|
||||
## Overview of Crowdin
|
||||
|
||||
First, make sure you come say "Hi" in our [contributors chat room](https://discord.gg/PRyKn3Vbay). 我们会在聊天室定期更新翻译的资源和回答很多问题。
|
||||
It's our dream to provide you with the resources to learn, no matter the world language you speak. To help us with this massive effort, we have integrated our open-source code-base & curriculum with [Crowdin](https://crowdin.com/) - A tool to help us localize our code-base.
|
||||
|
||||
> [!NOTE] We use a different tool and workflow for translating [news articles](https://www.freecodecamp.org/news). If you are interested in translating articles, read [this announcement](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/) and reach out to your Language Lead.
|
||||
|
||||
The translation workflow is split into two main activities:
|
||||
|
||||
- **翻译**课程文件、文档和 UI 元素(如按钮、标签):
|
||||
|
||||
译者可以在[我们的翻译平台](https://translate.freecodecamp.org)注册,然后从 30+ 种语言版本中选择要参与贡献的版本,进行翻译。
|
||||
|
||||
- **校对**上述翻译。
|
||||
|
||||
校对者确认社区成员贡献的译文语调一致,没有错别字等常见问题。 简而言之,校对者需要确保译文是高质量的。 注意,我们不使用任何机器翻译。
|
||||
|
||||
> [!WARNING] We are no longer using GitHub to translate files directly, if you are a returning contributor head to our [translation platform](https://translate.freecodecamp.org/) instead.
|
||||
|
||||
## Getting started
|
||||
|
||||
First, make sure you come say "Hi" in our [Discord](https://discord.gg/PRyKn3Vbay). 我们会在聊天室定期更新翻译的资源和回答很多问题。
|
||||
|
||||
其次,去我们的[翻译平台](https://translate.freecodecamp.org/)并且登陆(假如你以前没有贡献翻译过,你需要创建一个新账户)。
|
||||
|
||||
@@ -64,7 +68,7 @@ First, make sure you come say "Hi" in our [contributors chat room](https://disco
|
||||
|
||||
祝你在翻译过程中感到快乐哦!
|
||||
|
||||
## 选择一个项目和文件
|
||||
## Select a Project and File
|
||||
|
||||
当你访问翻译平台,你应该可以看到很多不同的等待翻译的项目:
|
||||
|
||||
@@ -84,9 +88,9 @@ First, make sure you come say "Hi" in our [contributors chat room](https://disco
|
||||
|
||||
选择你想翻译的文件,然后 Crowdin 会打开编辑界面。
|
||||
|
||||
> [!NOTE] 打开编辑界面后,你需要点击设置图标(右上角的齿轮状图标),将 “HTML tags displaying” 设置为 “SHOW”。 这样,文件中会显示 `<code></code>` 标签,而不是 `<0></0>` 标签。
|
||||
> [!NOTE] When the editor view opens, you will need to click the settings icon (shown as a gear) and switch the 'HTML tags displaying' setting to 'SHOW'. This will ensure you can see tags such as `<code></code>` instead of `<0></0>`.
|
||||
|
||||
## 翻译课程
|
||||
## Translate Curriculum
|
||||
|
||||

|
||||
|
||||
@@ -103,19 +107,19 @@ Crowdin 将文档分成可翻译的“字符串”,通常是句子。 每个
|
||||
9. 这里是评论窗口。 如果你对某个字符串有疑问或疑虑,可以在此处对字符串发表评论,以便其他翻译人员查看。
|
||||
10. 点击这两个“窗格”按钮,可以隐藏左边的(文件)视图和右边的(评论)视图。
|
||||
|
||||
> [!NOTE] If you see a hidden string that includes translations, please notify us in the [contributors chat room](https://discord.gg/PRyKn3Vbay) so we can remove the translation from memory.
|
||||
> [!NOTE] If you see a hidden string that includes translations, please notify us in the [Discord](https://discord.gg/PRyKn3Vbay) so we can remove the translation from memory.
|
||||
|
||||
当你翻译完一个字符串,请点击 `Save` 按钮,将你的译文保存在 Crowdin 中。 然后其他贡献者可以给你的译文投票,而校对者也将审核确认你的译文。
|
||||
|
||||
你想翻译多少字符串,都可以,我们非常欢迎你贡献!当你翻译完某个文件或某个字符串之后,你不需要采取其他步骤。 你只需要点击 `Save` 按钮,就能保存你的译文了。
|
||||
|
||||
> [!NOTE] 如果你发现在英语源文件中有不正确的内容,请不要在翻译流程中对其进行修改。 请在字符串上留下评论,通知我们有什么问题,或者在 GitHub 创建 issue。
|
||||
> [!NOTE] If you see something in the English source file that is inaccurate or incorrect, please do not fix it through the translation flow. Instead, leave a comment on the string to notify us that there is a discrepancy, or create a GitHub issue.
|
||||
|
||||
## 翻译文档
|
||||
## Translate Documentation
|
||||
|
||||
翻译贡献文档的流程和翻译课程文件的流程类似。
|
||||
|
||||
> [!NOTE] 我们的贡献文档由 ` docsify ` 提供支持,并且我们对消息框(比如这份文档里的)进行了特殊的解析。 如果你看到以 `[!NOTE]`、`[!WARNING]` 或 `[!TIP]` 开头的字符串,请注意不要翻译这些单词。
|
||||
> [!NOTE] Our contributing documentation is powered by `docsify`, and we have special parsing for message boxes like this one. If you see strings that start with `[!NOTE]`, `[!WARNING]`, or `[!TIP]`, these words should NOT be translated.
|
||||
|
||||
### How to translate documentation with internal links
|
||||
|
||||
@@ -296,7 +300,7 @@ When you attempt to save a translation, you may see a warning message appear wit
|
||||
|
||||
This message appears when Crowdin's QA system has identified a potential error in the proposed translation. In this example, we have modified the text of a `<code>` tag and Crowdin has caught that.
|
||||
|
||||
> [!WARNING] 即使 Crowdin 提示有错误,你也可以选择保存译文。 如果你仍要通过点击 “Save Anyway” 保存译文,那么你应该标记(@)校对人员或项目经理,说明为什么需要忽略质量检查消息。
|
||||
> [!WARNING] You have the option to save a translation in spite of errors. If you do, by clicking "Save Anyway", you should also tag a proofreader or project manager and explain why the QA message needs to be ignored in this case.
|
||||
|
||||
## Translation Best Practices
|
||||
|
||||
@@ -306,4 +310,4 @@ Follow these guidelines to ensure our translations are as accurate as possible:
|
||||
- Do not add additional content. If you feel a challenge requires changes in the text content or additional information, you should propose the changes through a GitHub issue or a pull request that modifies the English file.
|
||||
- Do not change the order of content.
|
||||
|
||||
If you have any questions, feel free to reach out to us in our [contributors chat room](https://discord.gg/PRyKn3Vbay) and we will be happy to assist you.
|
||||
If you have any questions, feel free to reach out to us in our [Discord](https://discord.gg/PRyKn3Vbay) and we will be happy to assist you.
|
||||
|
||||
@@ -22,7 +22,16 @@ Happy contributing.
|
||||
|
||||
We are localizing freeCodeCamp.org to major world languages.
|
||||
|
||||
Certifications are already live in some major world languages like [Chinese (中文)](https://chinese.freecodecamp.org/learn), [Spanish (Español)](https://www.freecodecamp.org/espanol/learn), [Italian (Italiano)](https://www.freecodecamp.org/italian/learn), [Portuguese (Português)](https://www.freecodecamp.org/portuguese/learn). We encourage you to read the [announcement here](https://www.freecodecamp.org/news/world-language-translation-effort) and share it with your friends to get them excited about this.
|
||||
Certifications are already live in some major world languages like below:
|
||||
|
||||
- [Chinese (中文)](https://chinese.freecodecamp.org/learn)
|
||||
- [Spanish (Español)](https://www.freecodecamp.org/espanol/learn)
|
||||
- [Italian (Italiano)](https://www.freecodecamp.org/italian/learn)
|
||||
- [Portuguese (Português)](https://www.freecodecamp.org/portuguese/learn)
|
||||
- [Ukrainian (Українська)](https://www.freecodecamp.org/ukrainian/learn)
|
||||
- [Japanese (日本語)](https://www.freecodecamp.org/japanese/learn)
|
||||
|
||||
We encourage you to read the [announcement here](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/) and share it with your friends to get them excited about this.
|
||||
|
||||
**If you're interested in translating, here's [how to translate freeCodeCamp's resources](how-to-translate-files.md).**
|
||||
|
||||
@@ -32,12 +41,12 @@ Our learning platform runs on a modern JavaScript stack. It has various componen
|
||||
|
||||
Broadly, we have a Node.js based API server, a set of React-based client applications, testing scripts to evaluate camper-submitted curriculum projects, and more. If you want to productively contribute to the learning platform, we recommend some familiarity with these tools.
|
||||
|
||||
如果你想帮助我们改进我们的基础代码的话……
|
||||
If you want to help us improve our codebase...
|
||||
|
||||
**你可以使用 Gitpod,一个免费的在线开发环境,在你的浏览器中为 freeCodeCamp 启动一个准备好的代码开发环境。**
|
||||
**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.**
|
||||
|
||||
[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
|
||||
[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
|
||||
|
||||
或者,你也可以……
|
||||
Or you can...
|
||||
|
||||
**[Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.**
|
||||
|
||||
@@ -10,7 +10,7 @@ freeCodeCamp se ejecuta en una moderna plataforma de JavaScript. Si estás inter
|
||||
|
||||
Sí - Puedes contribuir cualquiera de los más de 30 idiomas que hemos habilitado en nuestra plataforma de traducción.
|
||||
|
||||
Tenemos traducciones hechas por usuarios nativos en algunos idiomas. Tenemos la intención de traducir freeCodeCamp a los principales idiomas del mundo. Puedes leer todo acerca de esto en nuestro [anuncio aquí](https://www.freecodecamp.org/news/world-language-translation-effort).
|
||||
Tenemos traducciones hechas por usuarios nativos en algunos idiomas. Tenemos la intención de traducir freeCodeCamp a los principales idiomas del mundo. You can read all about this in our [announcement here](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/).
|
||||
|
||||
Si estás interesado en ayudar a traducir, por favor asegúrate de [leer esta guía](how-to-translate-files.md) primero.
|
||||
|
||||
|
||||
@@ -7,16 +7,17 @@
|
||||
- [Revisar las traducciones](how-to-proofread-files.md)
|
||||
- **Participa en la programación**
|
||||
- [Configurar freeCodeCamp localmente](how-to-setup-freecodecamp-locally.md)
|
||||
- [Seguir las mejores prácticas de programación](codebase-best-practices.md)
|
||||
- [Abrir una pull request](how-to-open-a-pull-request.md)
|
||||
- [Trabajar en desafíos de codificación](how-to-work-on-coding-challenges.md)
|
||||
- [Trabajar en proyectos de práctica](how-to-work-on-practice-projects.md)
|
||||
- [Colabora en tutoriales para CodeRoad](how-to-work-on-tutorials-that-use-coderoad.md)
|
||||
- [Trabajar en la aplicación web de cliente localizada](how-to-work-on-localized-client-webapp.md)
|
||||
- [Trabaja con los test Cypress](how-to-add-cypress-tests.md)
|
||||
- [Colabora con los desafíos en vídeo](how-to-help-with-video-challenges.md)
|
||||
- [Work on mobile app](how-to-setup-freecodecamp-mobile-app-locally.md)
|
||||
- [Follow coding best practices](codebase-best-practices.md)
|
||||
- [Open a pull request](how-to-open-a-pull-request.md)
|
||||
- [Work on coding challenges](how-to-work-on-coding-challenges.md)
|
||||
- [Work on practice projects](how-to-work-on-practice-projects.md)
|
||||
- [Work on tutorials with CodeRoad](how-to-work-on-tutorials-that-use-coderoad.md)
|
||||
- [Work on localized client web app](how-to-work-on-localized-client-webapp.md)
|
||||
- [Work on Cypress tests](how-to-add-cypress-tests.md)
|
||||
- [Work on video challenges](how-to-help-with-video-challenges.md)
|
||||
- [Work on documentation](how-to-work-on-the-docs-theme.md)
|
||||
- [Trabajar en la biblioteca de componentes](how-to-work-on-the-component-library.md)
|
||||
- [Work on the component library](how-to-work-on-the-component-library.md)
|
||||
- **Guías adicionales**
|
||||
- [Previsualiza las traducciones localmente](how-to-test-translations-locally.md)
|
||||
- [Entiende la estructura de archivo del currículo](curriculum-file-structure.md)
|
||||
|
||||
@@ -0,0 +1,405 @@
|
||||
Follow this guide for setting up the freeCodeCamp mobile app locally on your system. This is highly recommended if you want to contribute regularly.
|
||||
|
||||
Some of the contribution workflows – like fixing bugs in the codebase – need you to run freeCodeCamp app locally.
|
||||
|
||||
### How to prepare your local machine
|
||||
|
||||
Start by installing the prerequisite software for your operating system.
|
||||
|
||||
#### Prerequisites:
|
||||
|
||||
| Prerequisite | Version | Notes |
|
||||
| --------------------------------- | ------- | ---------------------------------------- |
|
||||
| [Flutter](https://flutter.dev/) | `3.x` | - |
|
||||
| Dart (comes bundled with Flutter) | `2.x` | We use the version bundled with Flutter. |
|
||||
|
||||
> [!ATTENTION] If you have a different version, please install the recommended version. We can only support installation issues for recommended versions.
|
||||
|
||||
If Flutter is already installed on your machine, run the following commands to validate the versions:
|
||||
|
||||
```console
|
||||
flutter --version
|
||||
dart --version
|
||||
```
|
||||
|
||||
> [!TIP] We highly recommend updating to the latest stable releases of the software listed above.
|
||||
|
||||
Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once.
|
||||
|
||||
##### Follow these steps to get your development environment ready:
|
||||
|
||||
1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated.
|
||||
|
||||
2. Setup [Android Studio](https://developer.android.com/studio) and [Android Emulators](https://developer.android.com/studio/run/managing-avds) with the latest released Android version. We recommend using the Pixel 3a XL and Nexus One(for emulating smaller screens).
|
||||
|
||||
3. (Optional for MacOS) Setup Xcode and iOS Simulator with the latest released iOS version.
|
||||
|
||||
4. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub.
|
||||
|
||||
5. Install a code editor of your choice.
|
||||
|
||||
We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or Android Studio. We also recommend installing the official [extensions](https://docs.flutter.dev/get-started/editor?tab=vscode)
|
||||
|
||||
## Fork the repository on GitHub
|
||||
|
||||
[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of the repository (a.k.a _repo_) on GitHub.
|
||||
|
||||
This is essential, as it allows you to work on your own copy of freeCodeCamp mobile app on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR).
|
||||
|
||||
> [!TIP] The main repository at `https://github.com/freeCodeCamp/mobile` is often referred to as the `upstream` repository.
|
||||
>
|
||||
> Your fork at `https://github.com/YOUR_USER_NAME/mobile` is often referred to as the `origin` repository. `YOUR_USER_NAME` would be replaced with your GitHub username.
|
||||
|
||||
**Follow these steps to fork the `https://github.com/freeCodeCamp/mobile` repository:**
|
||||
|
||||
1. Go to the freeCodeCamp mobile repository on GitHub: <https://github.com/freeCodeCamp/mobile>
|
||||
|
||||
2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/))
|
||||
|
||||
3. After the repository has been forked, you will be taken to your copy of the repository at `https://github.com/YOUR_USER_NAME/mobile` (`YOUR_USER_NAME` would be replaced with your GitHub user name.)
|
||||
|
||||
## Clone your fork from GitHub
|
||||
|
||||
[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/mobile`. (`YOUR_USER_NAME` would be replaced with your GitHub user name.)
|
||||
|
||||
Run these commands on your local machine:
|
||||
|
||||
1. Open a Terminal / Command Prompt / Shell in your projects directory
|
||||
|
||||
_i.e.: `/yourprojectsdirectory/`_
|
||||
|
||||
2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username
|
||||
|
||||
```console
|
||||
git clone --depth=1 https://github.com/YOUR_USER_NAME/mobile.git
|
||||
```
|
||||
|
||||
This will download the entire freeCodeCamp mobile repository to your projects directory.
|
||||
|
||||
Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit.
|
||||
|
||||
## Set up syncing from parent
|
||||
|
||||
Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository.
|
||||
|
||||
[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository.
|
||||
|
||||
You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly.
|
||||
|
||||
1. Change directory to the new `mobile` directory:
|
||||
|
||||
```console
|
||||
cd mobile
|
||||
```
|
||||
|
||||
2. Add a remote reference to the main freeCodeCamp mobile repository:
|
||||
|
||||
```console
|
||||
git remote add upstream https://github.com/freeCodeCamp/mobile.git
|
||||
```
|
||||
|
||||
3. Ensure the configuration looks correct:
|
||||
|
||||
```console
|
||||
git remote -v
|
||||
```
|
||||
|
||||
The output should look something like below (replacing `YOUR_USER_NAME` with your GitHub username):
|
||||
|
||||
```console
|
||||
origin https://github.com/YOUR_USER_NAME/mobile.git (fetch)
|
||||
origin https://github.com/YOUR_USER_NAME/mobile.git (push)
|
||||
upstream https://github.com/freeCodeCamp/mobile.git (fetch)
|
||||
upstream https://github.com/freeCodeCamp/mobile.git (push)
|
||||
```
|
||||
|
||||
## Running freeCodeCamp mobile app locally
|
||||
|
||||
Now that you have a local copy of the mobile app, you can follow these instructions to run it locally.
|
||||
|
||||
If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/mobile/issues) page for a solution and report the issue if it has not yet been reported.
|
||||
|
||||
And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our chat server](https://discord.gg/PRyKn3Vbay).
|
||||
|
||||
> [!NOTE] The `mobile` directory contains two folders ie. `mobile-api` and `mobile-app`. `mobile-api` contains the API code used for serving the podcasts. `mobile-app` contains the Flutter app which is where you should be when you follow the below steps.
|
||||
|
||||
### Configuring dependencies
|
||||
|
||||
#### Step 1: Set up the environment variable file
|
||||
|
||||
The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step. Remember to change the directory to `mobile-app` before running the following commands.
|
||||
|
||||
```console
|
||||
# Create a copy of the "sample.env" and name it ".env".
|
||||
# Populate it with the necessary API keys and secrets:
|
||||
```
|
||||
|
||||
<!-- tabs:start -->
|
||||
|
||||
#### **macOS/Linux**
|
||||
|
||||
```console
|
||||
cp sample.env .env
|
||||
```
|
||||
|
||||
#### **Windows**
|
||||
|
||||
```console
|
||||
copy sample.env .env
|
||||
```
|
||||
|
||||
<!-- tabs:end -->
|
||||
|
||||
The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is.
|
||||
|
||||
#### Step 2: Install dependencies
|
||||
|
||||
This step will install the dependencies required for the application to run:
|
||||
|
||||
```console
|
||||
flutter pub get
|
||||
```
|
||||
|
||||
#### Step 3: Start the freeCodeCamp mobile app
|
||||
|
||||
Start the emulator of your choice(Android or iOS) and wait for the bootup process to complete.
|
||||
|
||||
You can now start the app by running the following command:
|
||||
|
||||
```console
|
||||
flutter run
|
||||
```
|
||||
|
||||
> [!TIP] If you're using VSCode or Android Studio then you can easily start the app without having to execute any terminal commands. More information [here](https://docs.flutter.dev/get-started/test-drive).
|
||||
|
||||
## Making changes locally
|
||||
|
||||
You can now make changes to files and commit your changes to your local clone of your fork.
|
||||
|
||||
Follow these steps:
|
||||
|
||||
1. Validate that you are on the `main` branch:
|
||||
|
||||
```console
|
||||
git status
|
||||
```
|
||||
|
||||
You should get an output like this:
|
||||
|
||||
```console
|
||||
On branch main
|
||||
Your branch is up-to-date with 'origin/main'.
|
||||
|
||||
nothing to commit, working directory clean
|
||||
```
|
||||
|
||||
If you are not on main or your working directory is not clean, resolve any outstanding files/commits and checkout `main`:
|
||||
|
||||
```console
|
||||
git checkout main
|
||||
```
|
||||
|
||||
2. Sync the latest changes from the upstream `main` branch to your local main branch:
|
||||
|
||||
> [!WARNING] If you have any outstanding pull request that you made from the `main` branch of your fork, you will lose them at the end of this step.
|
||||
>
|
||||
> You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `main`.
|
||||
|
||||
This step **will sync the latest changes** from the main repository of freeCodeCamp mobile. It is important that you rebase your branch on top of the latest `upstream/main` as often as possible to avoid conflicts later.
|
||||
|
||||
Update your local copy of the freeCodeCamp mobile upstream repository:
|
||||
|
||||
```console
|
||||
git fetch upstream
|
||||
```
|
||||
|
||||
Hard reset your main branch with the freeCodeCamp mobile main:
|
||||
|
||||
```console
|
||||
git reset --hard upstream/main
|
||||
```
|
||||
|
||||
Push your main branch to your origin to have a clean history on your fork on GitHub:
|
||||
|
||||
```console
|
||||
git push origin main --force
|
||||
```
|
||||
|
||||
You can validate your current main matches the upstream/main by performing a diff:
|
||||
|
||||
```console
|
||||
git diff upstream/main
|
||||
```
|
||||
|
||||
The resulting output should be empty.
|
||||
|
||||
3. Create a fresh new branch:
|
||||
|
||||
Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `main`. This will soil your copy of freeCodeCamp mobile and you may have to start over with a fresh clone or fork.
|
||||
|
||||
Check that you are on `main` as explained previously, and branch off from there:
|
||||
|
||||
```console
|
||||
git checkout -b fix/update-guide-for-xyz
|
||||
```
|
||||
|
||||
Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique.
|
||||
|
||||
Some examples of good branch names are:
|
||||
|
||||
```md
|
||||
fix/update-challenges-for-react
|
||||
fix/update-guide-for-html-css
|
||||
fix/platform-bug-sign-in-issues
|
||||
feat/add-guide-article-for-javascript
|
||||
translate/add-spanish-basic-html
|
||||
```
|
||||
|
||||
4. Edit pages and work on code in your favorite text editor.
|
||||
|
||||
5. Once you are happy with the changes you should optionally run the mobile app locally to preview the changes.
|
||||
|
||||
6. Make sure you fix any errors and check the formatting of your changes.
|
||||
|
||||
7. Check and confirm the files you are updating:
|
||||
|
||||
```console
|
||||
git status
|
||||
```
|
||||
|
||||
This should show a list of `unstaged` files that you have edited.
|
||||
|
||||
```console
|
||||
On branch feat/documentation
|
||||
Your branch is up to date with 'upstream/feat/documentation'.
|
||||
|
||||
Changes were not staged for commit:
|
||||
(use "git add/rm <file>..." to update what will be committed)
|
||||
(use "git checkout -- <file>..." to discard changes in the working directory)
|
||||
|
||||
modified: README.md
|
||||
modified: mobile-app/lib/main.dart
|
||||
...
|
||||
```
|
||||
|
||||
8. Stage the changes and make a commit:
|
||||
|
||||
In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed.
|
||||
|
||||
```console
|
||||
git add path/to/my/changed/file.ext
|
||||
```
|
||||
|
||||
Or you can add all the `unstaged` files to the staging area:
|
||||
|
||||
```console
|
||||
git add .
|
||||
```
|
||||
|
||||
Only the files that were moved to the staging area will be added when you make a commit.
|
||||
|
||||
```console
|
||||
git status
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```console
|
||||
On branch feat/documentation
|
||||
Your branch is up to date with 'upstream/feat/documentation'.
|
||||
|
||||
Changes to be committed:
|
||||
(use "git reset HEAD <file>..." to unstage)
|
||||
|
||||
modified: README.md
|
||||
modified: mobile-app/lib/main.dart
|
||||
```
|
||||
|
||||
Now, you can commit your changes with a short message like so:
|
||||
|
||||
```console
|
||||
git commit -m "fix: my short commit message"
|
||||
```
|
||||
|
||||
Some examples:
|
||||
|
||||
```md
|
||||
fix: update guide article for Java - for loop
|
||||
feat: add guide article for alexa skills
|
||||
```
|
||||
|
||||
Optional:
|
||||
|
||||
We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices.
|
||||
|
||||
Some examples of conventional commit messages are:
|
||||
|
||||
```md
|
||||
fix: update HTML guide article
|
||||
fix: update build scripts for Travis-CI
|
||||
feat: add article for JavaScript hoisting
|
||||
docs: update contributing guidelines
|
||||
```
|
||||
|
||||
Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message.
|
||||
|
||||
This does not take any additional time than an unconventional message like 'update file' or 'add index.md'
|
||||
|
||||
You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits).
|
||||
|
||||
9. If you realize that you need to edit a file or update the commit message after making a commit you can do so after editing the files with:
|
||||
|
||||
```console
|
||||
git commit --amend
|
||||
```
|
||||
|
||||
This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description.
|
||||
|
||||
10. Next, you can push your changes to your fork:
|
||||
|
||||
```console
|
||||
git push origin branch/name-here
|
||||
```
|
||||
|
||||
## Proposing a Pull Request (PR)
|
||||
|
||||
After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md).
|
||||
|
||||
<!-- ## Quick commands reference - NEED TO DISCUSS ABOUT THIS
|
||||
|
||||
A quick reference to the commands that you will need when working locally.
|
||||
|
||||
| command | description |
|
||||
| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
|
||||
| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. |
|
||||
| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. | -->
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Issues with installing the recommended prerequisites
|
||||
|
||||
We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later, and Windows 10 (with WSL2).
|
||||
|
||||
It is recommended to research your specific issue on resources such as Google, Stack Overflow, and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query.
|
||||
|
||||
If you are on a different OS and/or are still running into issues, see [getting help](#getting-help).
|
||||
|
||||
### Issues with the UI, build errors, etc.
|
||||
|
||||
If you face issues with the UI, or builds errors a cleanup can be useful:
|
||||
|
||||
```console
|
||||
flutter clean
|
||||
```
|
||||
|
||||
### Issues installing dependencies
|
||||
|
||||
If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources.
|
||||
|
||||
Be patient as the first time setup can take a while depending on your network bandwidth.
|
||||
|
||||
## Getting Help
|
||||
|
||||
If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [the contributors chat room](https://discord.gg/PRyKn3Vbay).
|
||||
|
||||
There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution.
|
||||
@@ -1,32 +1,18 @@
|
||||
# Cómo traducir recursos de freeCodeCamp
|
||||
|
||||
Es nuestro sueño proporcionarles los recursos para aprender, sin importar el idioma que hables. Para ayudarnos con este esfuerzo masivo, hemos integrado nuestra base de código abierto & plan de estudio con [Crowdin](https://crowdin.com/) - Una herramienta que nos ayuda a localizar nuestra base de código.
|
||||
|
||||
El flujo de trabajo de traducción se divide en dos actividades principales:
|
||||
|
||||
- **Traduciendo** archivos de currículo, documentación y elementos de interfaz de usuario como botones, etiquetas, etc.:
|
||||
|
||||
Como traductor puedes registrarte en [nuestra plataforma de traducción](https://translate.freecodecamp.org) y contribuir con las traducciones en cualquiera de los más de 30 idiomas habilitados allí.
|
||||
|
||||
- **Revisando** las traducciones de todo lo anterior.
|
||||
|
||||
Los revisores verifican que las traducciones aportadas por la comunidad sean uniformes en el tono y libres de problemas comunes como errores tipográficos, etc. En resumen, aseguran que la calidad de las traducciones sea alta. Ten en cuenta que no utilizamos traducciones automáticas por una razón.
|
||||
|
||||
> [!WARNING] Ya no estamos usando GitHub para traducir archivos directamente, si eres un colaborador que regresa, dirígete a nuestro [plataforma de traducción](https://translate.freecodecamp.org/) en su lugar.
|
||||
|
||||
## Prepárate para las contribuciones
|
||||
|
||||
> La hoja de ruta de localización de freeCodeCamp - No hay límites de velocidad
|
||||
> The freeCodeCamp Localization Roadmap – There Are No Speed Limits
|
||||
|
||||
Puedes traducir tanto como quieras, cuando quieras. Es solo cuestión de cuanto tiempo y energía estás dispuesto a invertir como traductor voluntario.
|
||||
You can translate as much as you want, when you want. It's only a matter of how much time and energy you are willing to invest as a volunteer translator.
|
||||
|
||||
Solo te pedimos que entiendas lo siguiente:
|
||||
We just ask that you understand the following:
|
||||
|
||||
1. **Las traducciones son un esfuerzo de equipo.**
|
||||
|
||||
Traducir los recursos de freeCodeCamp es una de las experiencias más divertidas y gratificantes como colaborador, y funciona mejor si involucras a tus amigos y colegas que hablan el mismo idioma que tú.
|
||||
|
||||
We recommend joining [our community forum](https://forum.freecodecamp.org/c/contributors/3) and [contributors chat room](https://discord.gg/PRyKn3Vbay) with your friends and showing your interest before starting off with translations. CrowdIn hace que sea fácil contribuir con traducciones, pero sigue siendo mucho trabajo.
|
||||
You can start by reading [this announcement](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/). We recommend joining [our community forum](https://forum.freecodecamp.org/c/contributors/3) and [Discord chat server](https://discord.gg/PRyKn3Vbay) with your friends and showing your interest before starting off with translations. Crowdin and other tools make it easy to contribute translations, but it's still a lot of work.
|
||||
|
||||
Queremos que disfrutes contribuyendo y no te canses o pierdas interés.
|
||||
|
||||
@@ -38,7 +24,7 @@ Solo te pedimos que entiendas lo siguiente:
|
||||
|
||||
freeCodeCamp.org está comprometido a ofrecerlos gratis como siempre. Sin embargo, debemos priorizar los recursos para aquellos que más lo necesitan. Lo último que queremos es cerrar los servidores de un idioma si la actividad de traducción se apaga y las cosas se vuelven obsoletas.
|
||||
|
||||
Una vez que un idioma alcance al menos algunas certificaciones en el plan de estudios, podemos comenzar a implementar el idioma en vivo en [`/learn`](https://www.freecodecamp.org/learn), mientras continúas traduciendo las certificaciones restantes.
|
||||
For translating the curriculum, once a language reaches at least a few certifications we can begin deploying the language live on [`/learn`](https://www.freecodecamp.org/learn), while you continue to translate the remaining certifications.
|
||||
|
||||
Por ejemplo, nos gustaría implementar al menos toda la suite de certificaciones de front-end cuando enviamos un nuevo idioma por primera vez.
|
||||
|
||||
@@ -54,9 +40,27 @@ Solo te pedimos que entiendas lo siguiente:
|
||||
|
||||
Una vez que tengas un pequeño grupo de personas (al menos 4-5) interesadas y comprometidas, podemos llamar. Te explicaremos todos los detalles y te guiaremos a través de algunas de las herramientas y procesos.
|
||||
|
||||
## Empezando
|
||||
## Overview of Crowdin
|
||||
|
||||
First, make sure you come say "Hi" in our [contributors chat room](https://discord.gg/PRyKn3Vbay). Publicamos actualizaciones regulares sobre los recursos de traducción y respondemos a muchas de tus consultas allí.
|
||||
It's our dream to provide you with the resources to learn, no matter the world language you speak. To help us with this massive effort, we have integrated our open-source code-base & curriculum with [Crowdin](https://crowdin.com/) - A tool to help us localize our code-base.
|
||||
|
||||
> [!NOTE] We use a different tool and workflow for translating [news articles](https://www.freecodecamp.org/news). If you are interested in translating articles, read [this announcement](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/) and reach out to your Language Lead.
|
||||
|
||||
The translation workflow is split into two main activities:
|
||||
|
||||
- **Traduciendo** archivos de currículo, documentación y elementos de interfaz de usuario como botones, etiquetas, etc.:
|
||||
|
||||
Como traductor puedes registrarte en [nuestra plataforma de traducción](https://translate.freecodecamp.org) y contribuir con las traducciones en cualquiera de los más de 30 idiomas habilitados allí.
|
||||
|
||||
- **Revisando** las traducciones de todo lo anterior.
|
||||
|
||||
Los revisores verifican que las traducciones aportadas por la comunidad sean uniformes en el tono y libres de problemas comunes como errores tipográficos, etc. En resumen, aseguran que la calidad de las traducciones sea alta. Ten en cuenta que no utilizamos traducciones automáticas por una razón.
|
||||
|
||||
> [!WARNING] We are no longer using GitHub to translate files directly, if you are a returning contributor head to our [translation platform](https://translate.freecodecamp.org/) instead.
|
||||
|
||||
## Getting started
|
||||
|
||||
First, make sure you come say "Hi" in our [Discord](https://discord.gg/PRyKn3Vbay). Publicamos actualizaciones regulares sobre los recursos de traducción y respondemos a muchas de tus consultas allí.
|
||||
|
||||
A continuación, dirígete a nuestro [plataforma de traducción](https://translate.freecodecamp.org/) e inicia sesión (si no has contribuido a traducciones anteriormente, deberás crear una cuenta).
|
||||
|
||||
@@ -64,7 +68,7 @@ Por último, ve a través del recorrido detallado a continuación para comprende
|
||||
|
||||
Feliz traducción.
|
||||
|
||||
## Selecciona un proyecto y un archivo
|
||||
## Select a Project and File
|
||||
|
||||
Una vez que visites la plataforma de traducción, verás varios "proyectos" disponibles para traducción:
|
||||
|
||||
@@ -84,9 +88,9 @@ Cada archivo y carpeta mostrará una barra de progreso. La parte **azul** de la
|
||||
|
||||
Selecciona un archivo para trabajar y Crowdin abrirá la vista de edición.
|
||||
|
||||
> [!NOTE] Cuando se abra la vista de edición, deberás hacer clic en el icono de configuración (que se muestra como un engranaje) y cambiar la configuración de ''HTML tags displaying (Mostrar etiquetas HTML)" a "SHOW (Mostrar)". Esto asegurará que puedas ver las etiquetas como `<code></code>` en lugar de `<0></0>`.
|
||||
> [!NOTE] When the editor view opens, you will need to click the settings icon (shown as a gear) and switch the 'HTML tags displaying' setting to 'SHOW'. This will ensure you can see tags such as `<code></code>` instead of `<0></0>`.
|
||||
|
||||
## Traducir currículo
|
||||
## Translate Curriculum
|
||||
|
||||

|
||||
|
||||
@@ -103,19 +107,19 @@ Crowdin separa un documento en "cadenas" traducibles, normalmente oraciones. Cad
|
||||
9. Aquí puedes ver la ventana de comentarios. Si tienes preguntas o inquietudes sobre una cadena en particular, puedes dejar aquí un comentario sobre la cadena para que lo vean otros traductores.
|
||||
10. Estos dos botones de "panel" ocultarán las vistas izquierda (documento) y derecha (comentarios).
|
||||
|
||||
> [!NOTE] If you see a hidden string that includes translations, please notify us in the [contributors chat room](https://discord.gg/PRyKn3Vbay) so we can remove the translation from memory.
|
||||
> [!NOTE] If you see a hidden string that includes translations, please notify us in the [Discord](https://discord.gg/PRyKn3Vbay) so we can remove the translation from memory.
|
||||
|
||||
Cuando hayas completado la traducción de una cadena, pulsa el botón `Save` (guardar) para almacenar tu traducción en Crowdin. Luego, otros contribuyentes podrán votar tu traducción y el equipo de revisores podrán aprobarla.
|
||||
|
||||
Eres bienvenido a traducir tantas cadenas como desees, no se requieren pasos adicionales cuando completas todo un archivo o propones una nueva traducción. Hacer clic en el botón `Save` es todo lo que se necesita para almacenar una traducción.
|
||||
|
||||
> [!NOTE] Si ves algo en el archivo fuente en inglés que sea inexacto o incorrecto, no lo corrijas a través del flujo de traducción. En su lugar, deja un comentario en la cadena para notificarnos que hay una discrepancia, o crea un issue en GitHub.
|
||||
> [!NOTE] If you see something in the English source file that is inaccurate or incorrect, please do not fix it through the translation flow. Instead, leave a comment on the string to notify us that there is a discrepancy, or create a GitHub issue.
|
||||
|
||||
## Traducir la documentación
|
||||
## Translate Documentation
|
||||
|
||||
Traducir nuestra documentación de contribución es un proceso similar a traducir nuestros archivos de currículo.
|
||||
|
||||
> [!NOTE] Nuestra documentación de contribución esta basada en `docsify`, y tenemos una forma especial de procesar los cuadros de mensaje como este. Si ves cadenas que comiencen con `[!NOTE]`, `[!WARNING]` o ` [!TIP]`, estas palabras NO deben traducirse.
|
||||
> [!NOTE] Our contributing documentation is powered by `docsify`, and we have special parsing for message boxes like this one. If you see strings that start with `[!NOTE]`, `[!WARNING]`, or `[!TIP]`, these words should NOT be translated.
|
||||
|
||||
### How to translate documentation with internal links
|
||||
|
||||
@@ -153,7 +157,7 @@ You can find out how `docsify` converts a string in your language into an id by
|
||||
|
||||
You can learn more about [internal links in our docs here](how-to-work-on-the-docs-theme.md#how-to-create-an-internal-link).
|
||||
|
||||
## Traduce el LearnToCode RPG
|
||||
## Translate the LearnToCode RPG
|
||||
|
||||
The LearnToCode RPG runs on Ren'Py, which uses special syntax for translated strings: (See [Ren'Py Text documentation](https://www.renpy.org/doc/html/text.html))
|
||||
|
||||
@@ -278,7 +282,7 @@ I better take notes so I can learn more about it."
|
||||
我最好做笔记,这样我可以学习更多东西。"
|
||||
```
|
||||
|
||||
## Calificar traducciones
|
||||
## Rate Translations
|
||||
|
||||
Crowdin allows you to rate the existing proposed translations. If you attempt to save a translation, you may see a message indicating that you cannot save a duplicate translation - this means another contributor has proposed that identical translation. If you agree with that translation, click the `+` button to "upvote" the translation.
|
||||
|
||||
@@ -286,7 +290,7 @@ If you see a translation that is inaccurate or does not provide the same clarity
|
||||
|
||||
Crowdin uses these votes to give a score to each proposed translation for a string, which helps the proofreading team determine which translation is the best fit for each string.
|
||||
|
||||
## Comprobaciones de control de calidad
|
||||
## Quality Assurance Checks
|
||||
|
||||
We have enabled some quality assurance steps that will verify a translation is as accurate as possible - this helps our proofreaders review proposed translations.
|
||||
|
||||
@@ -296,9 +300,9 @@ When you attempt to save a translation, you may see a warning message appear wit
|
||||
|
||||
This message appears when Crowdin's QA system has identified a potential error in the proposed translation. In this example, we have modified the text of a `<code>` tag and Crowdin has caught that.
|
||||
|
||||
> [!WARNING] Tienes la opción de guardar una traducción a pesar de los errores. Si lo haces, al hacer clic en "Save Anyway (Guardar de todos modos)", también debes etiquetar a un miembro del equipo de revisión o encargado del proyecto y explicar por qué el mensaje de control de calidad debe ignorarse en este caso.
|
||||
> [!WARNING] You have the option to save a translation in spite of errors. If you do, by clicking "Save Anyway", you should also tag a proofreader or project manager and explain why the QA message needs to be ignored in this case.
|
||||
|
||||
## Mejores prácticas de traducción
|
||||
## Translation Best Practices
|
||||
|
||||
Follow these guidelines to ensure our translations are as accurate as possible:
|
||||
|
||||
@@ -306,4 +310,4 @@ Follow these guidelines to ensure our translations are as accurate as possible:
|
||||
- No agregues contenido adicional. Si sientes que un desafío requiere cambios en el contenido de texto o información adicional, debería proponer los cambios a través de un problema de GitHub o una pull request que modifique el archivo en inglés.
|
||||
- No cambiar el orden del contenido.
|
||||
|
||||
If you have any questions, feel free to reach out to us in our [contributors chat room](https://discord.gg/PRyKn3Vbay) and we will be happy to assist you.
|
||||
If you have any questions, feel free to reach out to us in our [Discord](https://discord.gg/PRyKn3Vbay) and we will be happy to assist you.
|
||||
|
||||
@@ -22,22 +22,31 @@ Puedes ayudar a ampliar y mejorar el plan de estudios. También puedes actualiza
|
||||
|
||||
Estamos localizando freeCodeCamp.org a los principales idiomas del mundo.
|
||||
|
||||
Las certificaciones ya están disponibles en algunos de los principales idiomas como: [Chino(中文)](https://chinese.freecodecamp.org/learn), [Español (Español)](https://www.freecodecamp.org/espanol/learn), [Italiano (Italiano)](https://www.freecodecamp.org/italian/learn) y [ Portugués (Português)](https://www.freecodecamp.org/portuguese/learn). Te animamos a que leas [el anuncio aquí ](https://www.freecodecamp.org/news/world-language-translation-effort) y que lo compartas con tus amigos para entusiasmarlos con esto.
|
||||
Certifications are already live in some major world languages like below:
|
||||
|
||||
**Si estás interesado en traducir, aquí te mostramos [cómo traducir los recursos de freeCodeCamp](how-to-translate-files.md).**
|
||||
- [Chinese (中文)](https://chinese.freecodecamp.org/learn)
|
||||
- [Spanish (Español)](https://www.freecodecamp.org/espanol/learn)
|
||||
- [Italian (Italiano)](https://www.freecodecamp.org/italian/learn)
|
||||
- [Portuguese (Português)](https://www.freecodecamp.org/portuguese/learn)
|
||||
- [Ukrainian (Українська)](https://www.freecodecamp.org/ukrainian/learn)
|
||||
- [Japanese (日本語)](https://www.freecodecamp.org/japanese/learn)
|
||||
|
||||
We encourage you to read the [announcement here](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/) and share it with your friends to get them excited about this.
|
||||
|
||||
**If you're interested in translating, here's [how to translate freeCodeCamp's resources](how-to-translate-files.md).**
|
||||
|
||||
## Plataforma de aprendizaje
|
||||
|
||||
Nuestra plataforma de aprendizaje se ejecuta en una pila moderna de JavaScript. Tiene varios componentes, herramientas y bibliotecas. Estos incluyen Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack y más.
|
||||
Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more.
|
||||
|
||||
A grandes rasgos, tenemos un servidor API basado en Node.js, un conjunto de aplicaciones cliente basadas en React, scripts de prueba para evaluar proyectos currículo enviados por el camper, y más. Si deseas contribuir de manera productiva a la plataforma de aprendizaje, te recomendamos que te familiarice un poco con estas herramientas.
|
||||
Broadly, we have a Node.js based API server, a set of React-based client applications, testing scripts to evaluate camper-submitted curriculum projects, and more. If you want to productively contribute to the learning platform, we recommend some familiarity with these tools.
|
||||
|
||||
Si quieres ayudarnos a mejorar nuestro código base...
|
||||
If you want to help us improve our codebase...
|
||||
|
||||
**puedes optar por utilizar Gitpod, una herramienta de desarrollo en línea que crea entornos listos para escribir código para freeCodeCamp directamente en el navegador.**
|
||||
**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.**
|
||||
|
||||
[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
|
||||
[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
|
||||
|
||||
O puedes...
|
||||
Or you can...
|
||||
|
||||
**[Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.**
|
||||
|
||||
@@ -10,7 +10,7 @@ freeCodeCamp läuft auf einem modernen JavaScript-Stack. Wenn du daran interessi
|
||||
|
||||
Ja - du kannst zu jeder der über 30 Sprachen beitragen, die wir auf unserer Übersetzungsplattform aktiviert haben.
|
||||
|
||||
In einigen Sprachen haben wir von Nutzern erstellte Übersetzungen online. Wir haben vor, das freeCodeCamp in mehrere wichtige Weltsprachen zu lokalisieren. Du kannst alles darüber in unserer [Ankündigung ](https://www.freecodecamp.org/news/world-language-translation-effort) lesen.
|
||||
In einigen Sprachen haben wir von Nutzern erstellte Übersetzungen online. Wir haben vor, das freeCodeCamp in mehrere wichtige Weltsprachen zu lokalisieren. You can read all about this in our [announcement here](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/).
|
||||
|
||||
Wenn du daran interessiert bist, zu Übersetzungen beizutragen, stelle bitte sicher, dass du [diesen Leitfaden](how-to-translate-files.md) zuerst gelesen hast.
|
||||
|
||||
|
||||
@@ -7,16 +7,17 @@
|
||||
- [Helfe beim Korrekturlesen von Übersetzungen](how-to-proofread-files.md)
|
||||
- **Mitwirkung am Code**
|
||||
- [freeCodeCamp lokal einrichten](how-to-setup-freecodecamp-locally.md)
|
||||
- [Befolge die besten Programmierpraktiken (best practices)](codebase-best-practices.md)
|
||||
- [Eröffne einen Pull Request](how-to-open-a-pull-request.md)
|
||||
- [Arbeite an den Programmieraufgaben](how-to-work-on-coding-challenges.md)
|
||||
- [Arbeite an Praxisprojekten](how-to-work-on-practice-projects.md)
|
||||
- [Arbeite an den Tutorials mit CodeRoad](how-to-work-on-tutorials-that-use-coderoad.md)
|
||||
- [Arbeite an der lokalisierten Client-Web-App](how-to-work-on-localized-client-webapp.md)
|
||||
- [Arbeite an den Cypress Tests](how-to-add-cypress-tests.md)
|
||||
- [Arbeite an den Videoaufgaben](how-to-help-with-video-challenges.md)
|
||||
- [Work on mobile app](how-to-setup-freecodecamp-mobile-app-locally.md)
|
||||
- [Follow coding best practices](codebase-best-practices.md)
|
||||
- [Open a pull request](how-to-open-a-pull-request.md)
|
||||
- [Work on coding challenges](how-to-work-on-coding-challenges.md)
|
||||
- [Work on practice projects](how-to-work-on-practice-projects.md)
|
||||
- [Work on tutorials with CodeRoad](how-to-work-on-tutorials-that-use-coderoad.md)
|
||||
- [Work on localized client web app](how-to-work-on-localized-client-webapp.md)
|
||||
- [Work on Cypress tests](how-to-add-cypress-tests.md)
|
||||
- [Work on video challenges](how-to-help-with-video-challenges.md)
|
||||
- [Work on documentation](how-to-work-on-the-docs-theme.md)
|
||||
- [Arbeite an der Komponentenbibliothek](how-to-work-on-the-component-library.md)
|
||||
- [Work on the component library](how-to-work-on-the-component-library.md)
|
||||
- **Zusätzliche Leitfäden**
|
||||
- [Übersetzungen lokal testen](how-to-test-translations-locally.md)
|
||||
- [Verstehe die Dateistruktur des Studienplans](curriculum-file-structure.md)
|
||||
|
||||
@@ -0,0 +1,405 @@
|
||||
Follow this guide for setting up the freeCodeCamp mobile app locally on your system. This is highly recommended if you want to contribute regularly.
|
||||
|
||||
Some of the contribution workflows – like fixing bugs in the codebase – need you to run freeCodeCamp app locally.
|
||||
|
||||
### How to prepare your local machine
|
||||
|
||||
Start by installing the prerequisite software for your operating system.
|
||||
|
||||
#### Prerequisites:
|
||||
|
||||
| Prerequisite | Version | Notes |
|
||||
| --------------------------------- | ------- | ---------------------------------------- |
|
||||
| [Flutter](https://flutter.dev/) | `3.x` | - |
|
||||
| Dart (comes bundled with Flutter) | `2.x` | We use the version bundled with Flutter. |
|
||||
|
||||
> [!ATTENTION] If you have a different version, please install the recommended version. We can only support installation issues for recommended versions.
|
||||
|
||||
If Flutter is already installed on your machine, run the following commands to validate the versions:
|
||||
|
||||
```console
|
||||
flutter --version
|
||||
dart --version
|
||||
```
|
||||
|
||||
> [!TIP] We highly recommend updating to the latest stable releases of the software listed above.
|
||||
|
||||
Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once.
|
||||
|
||||
##### Follow these steps to get your development environment ready:
|
||||
|
||||
1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated.
|
||||
|
||||
2. Setup [Android Studio](https://developer.android.com/studio) and [Android Emulators](https://developer.android.com/studio/run/managing-avds) with the latest released Android version. We recommend using the Pixel 3a XL and Nexus One(for emulating smaller screens).
|
||||
|
||||
3. (Optional for MacOS) Setup Xcode and iOS Simulator with the latest released iOS version.
|
||||
|
||||
4. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub.
|
||||
|
||||
5. Install a code editor of your choice.
|
||||
|
||||
We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or Android Studio. We also recommend installing the official [extensions](https://docs.flutter.dev/get-started/editor?tab=vscode)
|
||||
|
||||
## Fork the repository on GitHub
|
||||
|
||||
[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of the repository (a.k.a _repo_) on GitHub.
|
||||
|
||||
This is essential, as it allows you to work on your own copy of freeCodeCamp mobile app on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR).
|
||||
|
||||
> [!TIP] The main repository at `https://github.com/freeCodeCamp/mobile` is often referred to as the `upstream` repository.
|
||||
>
|
||||
> Your fork at `https://github.com/YOUR_USER_NAME/mobile` is often referred to as the `origin` repository. `YOUR_USER_NAME` would be replaced with your GitHub username.
|
||||
|
||||
**Follow these steps to fork the `https://github.com/freeCodeCamp/mobile` repository:**
|
||||
|
||||
1. Go to the freeCodeCamp mobile repository on GitHub: <https://github.com/freeCodeCamp/mobile>
|
||||
|
||||
2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/))
|
||||
|
||||
3. After the repository has been forked, you will be taken to your copy of the repository at `https://github.com/YOUR_USER_NAME/mobile` (`YOUR_USER_NAME` would be replaced with your GitHub user name.)
|
||||
|
||||
## Clone your fork from GitHub
|
||||
|
||||
[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/mobile`. (`YOUR_USER_NAME` would be replaced with your GitHub user name.)
|
||||
|
||||
Run these commands on your local machine:
|
||||
|
||||
1. Open a Terminal / Command Prompt / Shell in your projects directory
|
||||
|
||||
_i.e.: `/yourprojectsdirectory/`_
|
||||
|
||||
2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username
|
||||
|
||||
```console
|
||||
git clone --depth=1 https://github.com/YOUR_USER_NAME/mobile.git
|
||||
```
|
||||
|
||||
This will download the entire freeCodeCamp mobile repository to your projects directory.
|
||||
|
||||
Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit.
|
||||
|
||||
## Set up syncing from parent
|
||||
|
||||
Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository.
|
||||
|
||||
[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository.
|
||||
|
||||
You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly.
|
||||
|
||||
1. Change directory to the new `mobile` directory:
|
||||
|
||||
```console
|
||||
cd mobile
|
||||
```
|
||||
|
||||
2. Add a remote reference to the main freeCodeCamp mobile repository:
|
||||
|
||||
```console
|
||||
git remote add upstream https://github.com/freeCodeCamp/mobile.git
|
||||
```
|
||||
|
||||
3. Ensure the configuration looks correct:
|
||||
|
||||
```console
|
||||
git remote -v
|
||||
```
|
||||
|
||||
The output should look something like below (replacing `YOUR_USER_NAME` with your GitHub username):
|
||||
|
||||
```console
|
||||
origin https://github.com/YOUR_USER_NAME/mobile.git (fetch)
|
||||
origin https://github.com/YOUR_USER_NAME/mobile.git (push)
|
||||
upstream https://github.com/freeCodeCamp/mobile.git (fetch)
|
||||
upstream https://github.com/freeCodeCamp/mobile.git (push)
|
||||
```
|
||||
|
||||
## Running freeCodeCamp mobile app locally
|
||||
|
||||
Now that you have a local copy of the mobile app, you can follow these instructions to run it locally.
|
||||
|
||||
If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/mobile/issues) page for a solution and report the issue if it has not yet been reported.
|
||||
|
||||
And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our chat server](https://discord.gg/PRyKn3Vbay).
|
||||
|
||||
> [!NOTE] The `mobile` directory contains two folders ie. `mobile-api` and `mobile-app`. `mobile-api` contains the API code used for serving the podcasts. `mobile-app` contains the Flutter app which is where you should be when you follow the below steps.
|
||||
|
||||
### Configuring dependencies
|
||||
|
||||
#### Step 1: Set up the environment variable file
|
||||
|
||||
The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step. Remember to change the directory to `mobile-app` before running the following commands.
|
||||
|
||||
```console
|
||||
# Create a copy of the "sample.env" and name it ".env".
|
||||
# Populate it with the necessary API keys and secrets:
|
||||
```
|
||||
|
||||
<!-- tabs:start -->
|
||||
|
||||
#### **macOS/Linux**
|
||||
|
||||
```console
|
||||
cp sample.env .env
|
||||
```
|
||||
|
||||
#### **Windows**
|
||||
|
||||
```console
|
||||
copy sample.env .env
|
||||
```
|
||||
|
||||
<!-- tabs:end -->
|
||||
|
||||
The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is.
|
||||
|
||||
#### Step 2: Install dependencies
|
||||
|
||||
This step will install the dependencies required for the application to run:
|
||||
|
||||
```console
|
||||
flutter pub get
|
||||
```
|
||||
|
||||
#### Step 3: Start the freeCodeCamp mobile app
|
||||
|
||||
Start the emulator of your choice(Android or iOS) and wait for the bootup process to complete.
|
||||
|
||||
You can now start the app by running the following command:
|
||||
|
||||
```console
|
||||
flutter run
|
||||
```
|
||||
|
||||
> [!TIP] If you're using VSCode or Android Studio then you can easily start the app without having to execute any terminal commands. More information [here](https://docs.flutter.dev/get-started/test-drive).
|
||||
|
||||
## Making changes locally
|
||||
|
||||
You can now make changes to files and commit your changes to your local clone of your fork.
|
||||
|
||||
Follow these steps:
|
||||
|
||||
1. Validate that you are on the `main` branch:
|
||||
|
||||
```console
|
||||
git status
|
||||
```
|
||||
|
||||
You should get an output like this:
|
||||
|
||||
```console
|
||||
On branch main
|
||||
Your branch is up-to-date with 'origin/main'.
|
||||
|
||||
nothing to commit, working directory clean
|
||||
```
|
||||
|
||||
If you are not on main or your working directory is not clean, resolve any outstanding files/commits and checkout `main`:
|
||||
|
||||
```console
|
||||
git checkout main
|
||||
```
|
||||
|
||||
2. Sync the latest changes from the upstream `main` branch to your local main branch:
|
||||
|
||||
> [!WARNING] If you have any outstanding pull request that you made from the `main` branch of your fork, you will lose them at the end of this step.
|
||||
>
|
||||
> You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `main`.
|
||||
|
||||
This step **will sync the latest changes** from the main repository of freeCodeCamp mobile. It is important that you rebase your branch on top of the latest `upstream/main` as often as possible to avoid conflicts later.
|
||||
|
||||
Update your local copy of the freeCodeCamp mobile upstream repository:
|
||||
|
||||
```console
|
||||
git fetch upstream
|
||||
```
|
||||
|
||||
Hard reset your main branch with the freeCodeCamp mobile main:
|
||||
|
||||
```console
|
||||
git reset --hard upstream/main
|
||||
```
|
||||
|
||||
Push your main branch to your origin to have a clean history on your fork on GitHub:
|
||||
|
||||
```console
|
||||
git push origin main --force
|
||||
```
|
||||
|
||||
You can validate your current main matches the upstream/main by performing a diff:
|
||||
|
||||
```console
|
||||
git diff upstream/main
|
||||
```
|
||||
|
||||
The resulting output should be empty.
|
||||
|
||||
3. Create a fresh new branch:
|
||||
|
||||
Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `main`. This will soil your copy of freeCodeCamp mobile and you may have to start over with a fresh clone or fork.
|
||||
|
||||
Check that you are on `main` as explained previously, and branch off from there:
|
||||
|
||||
```console
|
||||
git checkout -b fix/update-guide-for-xyz
|
||||
```
|
||||
|
||||
Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique.
|
||||
|
||||
Some examples of good branch names are:
|
||||
|
||||
```md
|
||||
fix/update-challenges-for-react
|
||||
fix/update-guide-for-html-css
|
||||
fix/platform-bug-sign-in-issues
|
||||
feat/add-guide-article-for-javascript
|
||||
translate/add-spanish-basic-html
|
||||
```
|
||||
|
||||
4. Edit pages and work on code in your favorite text editor.
|
||||
|
||||
5. Once you are happy with the changes you should optionally run the mobile app locally to preview the changes.
|
||||
|
||||
6. Make sure you fix any errors and check the formatting of your changes.
|
||||
|
||||
7. Check and confirm the files you are updating:
|
||||
|
||||
```console
|
||||
git status
|
||||
```
|
||||
|
||||
This should show a list of `unstaged` files that you have edited.
|
||||
|
||||
```console
|
||||
On branch feat/documentation
|
||||
Your branch is up to date with 'upstream/feat/documentation'.
|
||||
|
||||
Changes were not staged for commit:
|
||||
(use "git add/rm <file>..." to update what will be committed)
|
||||
(use "git checkout -- <file>..." to discard changes in the working directory)
|
||||
|
||||
modified: README.md
|
||||
modified: mobile-app/lib/main.dart
|
||||
...
|
||||
```
|
||||
|
||||
8. Stage the changes and make a commit:
|
||||
|
||||
In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed.
|
||||
|
||||
```console
|
||||
git add path/to/my/changed/file.ext
|
||||
```
|
||||
|
||||
Or you can add all the `unstaged` files to the staging area:
|
||||
|
||||
```console
|
||||
git add .
|
||||
```
|
||||
|
||||
Only the files that were moved to the staging area will be added when you make a commit.
|
||||
|
||||
```console
|
||||
git status
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```console
|
||||
On branch feat/documentation
|
||||
Your branch is up to date with 'upstream/feat/documentation'.
|
||||
|
||||
Changes to be committed:
|
||||
(use "git reset HEAD <file>..." to unstage)
|
||||
|
||||
modified: README.md
|
||||
modified: mobile-app/lib/main.dart
|
||||
```
|
||||
|
||||
Now, you can commit your changes with a short message like so:
|
||||
|
||||
```console
|
||||
git commit -m "fix: my short commit message"
|
||||
```
|
||||
|
||||
Some examples:
|
||||
|
||||
```md
|
||||
fix: update guide article for Java - for loop
|
||||
feat: add guide article for alexa skills
|
||||
```
|
||||
|
||||
Optional:
|
||||
|
||||
We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices.
|
||||
|
||||
Some examples of conventional commit messages are:
|
||||
|
||||
```md
|
||||
fix: update HTML guide article
|
||||
fix: update build scripts for Travis-CI
|
||||
feat: add article for JavaScript hoisting
|
||||
docs: update contributing guidelines
|
||||
```
|
||||
|
||||
Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message.
|
||||
|
||||
This does not take any additional time than an unconventional message like 'update file' or 'add index.md'
|
||||
|
||||
You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits).
|
||||
|
||||
9. If you realize that you need to edit a file or update the commit message after making a commit you can do so after editing the files with:
|
||||
|
||||
```console
|
||||
git commit --amend
|
||||
```
|
||||
|
||||
This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description.
|
||||
|
||||
10. Next, you can push your changes to your fork:
|
||||
|
||||
```console
|
||||
git push origin branch/name-here
|
||||
```
|
||||
|
||||
## Proposing a Pull Request (PR)
|
||||
|
||||
After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md).
|
||||
|
||||
<!-- ## Quick commands reference - NEED TO DISCUSS ABOUT THIS
|
||||
|
||||
A quick reference to the commands that you will need when working locally.
|
||||
|
||||
| command | description |
|
||||
| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
|
||||
| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. |
|
||||
| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. | -->
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Issues with installing the recommended prerequisites
|
||||
|
||||
We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later, and Windows 10 (with WSL2).
|
||||
|
||||
It is recommended to research your specific issue on resources such as Google, Stack Overflow, and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query.
|
||||
|
||||
If you are on a different OS and/or are still running into issues, see [getting help](#getting-help).
|
||||
|
||||
### Issues with the UI, build errors, etc.
|
||||
|
||||
If you face issues with the UI, or builds errors a cleanup can be useful:
|
||||
|
||||
```console
|
||||
flutter clean
|
||||
```
|
||||
|
||||
### Issues installing dependencies
|
||||
|
||||
If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources.
|
||||
|
||||
Be patient as the first time setup can take a while depending on your network bandwidth.
|
||||
|
||||
## Getting Help
|
||||
|
||||
If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [the contributors chat room](https://discord.gg/PRyKn3Vbay).
|
||||
|
||||
There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution.
|
||||
@@ -1,32 +1,18 @@
|
||||
# So übersetzt du die Ressourcen von freeCodeCamp
|
||||
|
||||
Es ist unser Traum, dir die Ressourcen zum Lernen zur Verfügung zu stellen, egal welche Weltsprache du sprichst. Um uns bei diesem massiven Aufwand zu helfen, haben wir unsere Open-Source Code-Basis & Studienpläne mit [Crowdin](https://crowdin.com/) integriert - Ein Tool, das uns hilft, unsere Code-Basis zu lokalisieren.
|
||||
|
||||
Der Übersetzungsworkflow ist in zwei Hauptaktivitäten unterteilt:
|
||||
|
||||
- **Übersetzen** von Studienplandateien, Dokumentation und Elementen der Benutzeroberfläche wie Buttons, Labels, etc.:
|
||||
|
||||
Als Übersetzer kannst du dich auf [unserer Übersetzungsplattform](https://translate.freecodecamp.org) anmelden und Übersetzungen in einer der über 30 Sprachen beisteuern, die dort aktiviert sind.
|
||||
|
||||
- **Korrekturlesen** der Übersetzungen für alle oben genannten Punkte.
|
||||
|
||||
Korrekturleser überprüfen, ob die von der Community beigesteuerten Übersetzungen einen einheitlichen Ton haben und frei von üblichen Problemen wie Tippfehlern usw. sind. Kurzum, sie sorgen für eine hohe Qualität der Übersetzungen. Beachte, dass wir aus einem gutem Grund keine maschinellen Übersetzungen verwenden.
|
||||
|
||||
> [!WARNING] Wir verwenden GitHub nicht mehr, um Dateien direkt zu übersetzen. Wenn du ein zurückgekehrter Helfer bist, gehe stattdessen zu unserer [Übersetzungsplattform](https://translate.freecodecamp.org/).
|
||||
|
||||
## Bereite dich auf die Teilnahme vor
|
||||
|
||||
> Die freeCodeCamp Lokalisierungs-Roadmap - Es gibt keine Geschwindigkeitsbegrenzungen
|
||||
> The freeCodeCamp Localization Roadmap – There Are No Speed Limits
|
||||
|
||||
Du kannst so viel übersetzen, wie du willst und wann du willst. Es ist nur eine Frage, wie viel Zeit und Energie du bereit bist, als freiwilliger Übersetzer zu investieren.
|
||||
You can translate as much as you want, when you want. It's only a matter of how much time and energy you are willing to invest as a volunteer translator.
|
||||
|
||||
Wir bitten nur darum, dass du das Folgende verstehst:
|
||||
We just ask that you understand the following:
|
||||
|
||||
1. **Übersetzungen sind eine Teamleistung.**
|
||||
|
||||
Das Übersetzen der freeCodeCamp-Ressourcen ist eine der schönsten und lohnendsten Erfahrungen als Helfer, und es funktioniert am besten, wenn du deine Freunde und Kollegen einbeziehst, die die gleiche Weltsprache sprechen wie du.
|
||||
|
||||
We recommend joining [our community forum](https://forum.freecodecamp.org/c/contributors/3) and [contributors chat room](https://discord.gg/PRyKn3Vbay) with your friends and showing your interest before starting off with translations. Crowdin macht es einfach, Übersetzungen beizusteuern, aber es ist immer noch eine Menge Arbeit.
|
||||
You can start by reading [this announcement](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/). We recommend joining [our community forum](https://forum.freecodecamp.org/c/contributors/3) and [Discord chat server](https://discord.gg/PRyKn3Vbay) with your friends and showing your interest before starting off with translations. Crowdin and other tools make it easy to contribute translations, but it's still a lot of work.
|
||||
|
||||
Wir wollen, dass du Spaß am Mitmachen hast und nicht ausbrennst oder das Interesse verlierst.
|
||||
|
||||
@@ -38,7 +24,7 @@ Wir bitten nur darum, dass du das Folgende verstehst:
|
||||
|
||||
freeCodeCamp.org verpflichtet sich, diese wie immer kostenlos zur Verfügung zu stellen, aber wir müssen die Ressourcen für diejenigen priorisieren, die sie am meisten brauchen. Das Letzte was wir wollen, ist, dass die Server für eine Sprache abgeschaltet werden, wenn die Übersetzungsaktivität nachlässt & die Inhalte veralten.
|
||||
|
||||
Sobald eine Sprache mindestens ein paar Zertifizierungen auf dem Studienplan erreicht hat, können wir damit beginnen, die Sprache live auf [`/learn`](https://www.freecodecamp.org/learn) bereitzustellen, während du weiterhin die verbleibenden Zertifizierungen übersetzt.
|
||||
For translating the curriculum, once a language reaches at least a few certifications we can begin deploying the language live on [`/learn`](https://www.freecodecamp.org/learn), while you continue to translate the remaining certifications.
|
||||
|
||||
Zum Beispiel würden wir zumindest die gesamte Front-End-Zertifizierungssuite bereitstellen wollen, wenn wir eine neue Weltsprache zum ersten Mal ausliefern.
|
||||
|
||||
@@ -54,9 +40,27 @@ Wir bitten nur darum, dass du das Folgende verstehst:
|
||||
|
||||
Sobald du eine kleine Gruppe von Leuten hast (mindestens 4-5), die interessiert sind und sich engagieren, können wir einen Versuch starten. Wir erklären dir alle Details und führen dich durch einige der Tools und Prozesse.
|
||||
|
||||
## Erste Schritte
|
||||
## Overview of Crowdin
|
||||
|
||||
First, make sure you come say "Hi" in our [contributors chat room](https://discord.gg/PRyKn3Vbay). Wir posten regelmäßig Updates über Übersetzungsressourcen und beantworten dort deine Fragen.
|
||||
It's our dream to provide you with the resources to learn, no matter the world language you speak. To help us with this massive effort, we have integrated our open-source code-base & curriculum with [Crowdin](https://crowdin.com/) - A tool to help us localize our code-base.
|
||||
|
||||
> [!NOTE] We use a different tool and workflow for translating [news articles](https://www.freecodecamp.org/news). If you are interested in translating articles, read [this announcement](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/) and reach out to your Language Lead.
|
||||
|
||||
The translation workflow is split into two main activities:
|
||||
|
||||
- **Übersetzen** von Studienplandateien, Dokumentation und Elementen der Benutzeroberfläche wie Buttons, Labels, etc.:
|
||||
|
||||
Als Übersetzer kannst du dich auf [unserer Übersetzungsplattform](https://translate.freecodecamp.org) anmelden und Übersetzungen in einer der über 30 Sprachen beisteuern, die dort aktiviert sind.
|
||||
|
||||
- **Korrekturlesen** der Übersetzungen für alle oben genannten Punkte.
|
||||
|
||||
Korrekturleser überprüfen, ob die von der Community beigesteuerten Übersetzungen einen einheitlichen Ton haben und frei von üblichen Problemen wie Tippfehlern usw. sind. Kurzum, sie sorgen für eine hohe Qualität der Übersetzungen. Beachte, dass wir aus einem gutem Grund keine maschinellen Übersetzungen verwenden.
|
||||
|
||||
> [!WARNING] We are no longer using GitHub to translate files directly, if you are a returning contributor head to our [translation platform](https://translate.freecodecamp.org/) instead.
|
||||
|
||||
## Getting started
|
||||
|
||||
First, make sure you come say "Hi" in our [Discord](https://discord.gg/PRyKn3Vbay). Wir posten regelmäßig Updates über Übersetzungsressourcen und beantworten dort deine Fragen.
|
||||
|
||||
Als nächstes gehst du zu unserer [Übersetzungsplattform](https://translate.freecodecamp.org/) und loggst dich ein (wenn du noch nie an Übersetzungen mitgewirkt hast, musst du einen Account erstellen).
|
||||
|
||||
@@ -64,7 +68,7 @@ Nachfolgend findest du eine ausführliche Anleitung, die dir dabei hilft, die di
|
||||
|
||||
Viel Spaß beim Übersetzen.
|
||||
|
||||
## Wähle ein Projekt und eine Datei
|
||||
## Select a Project and File
|
||||
|
||||
Sobald du die Übersetzungsplattform besuchst, solltest du mehrere "Projekte" sehen, die zur Übersetzung verfügbar sind:
|
||||
|
||||
@@ -84,9 +88,9 @@ Für jede Datei und jeden Ordner wird ein Fortschrittsbalken angezeigt. Der **bl
|
||||
|
||||
Wähle eine Datei aus, an der du arbeiten möchtest und Crowdin öffnet die Editor-Ansicht.
|
||||
|
||||
> [!NOTE] Wenn sich die Editoransicht öffnet, musst du auf das Einstellungssymbol klicken (dargestellt als Zahnrad) und die Einstellung 'HTML tags displaying' auf 'SHOW' umstellen. Dadurch wird sichergestellt, dass du Tags wie `<code></code>` statt `<0></0>` sehen kannst.
|
||||
> [!NOTE] When the editor view opens, you will need to click the settings icon (shown as a gear) and switch the 'HTML tags displaying' setting to 'SHOW'. This will ensure you can see tags such as `<code></code>` instead of `<0></0>`.
|
||||
|
||||
## Studienpläne übersetzen
|
||||
## Translate Curriculum
|
||||
|
||||

|
||||
|
||||
@@ -103,19 +107,19 @@ Crowdin trennt ein Dokument in übersetzbare "Strings", normalerweise Sätze. Je
|
||||
9. Hier siehst du das Fenster für die Kommentare. Wenn du Fragen oder Bedenken zu einem bestimmten String hast, kannst du hier einen Kommentar zu dem String hinterlassen, den andere Übersetzer sehen können.
|
||||
10. Diese beiden Buttons blenden die linke (Dokument-) und rechte (Kommentar-) Ansicht aus.
|
||||
|
||||
> [!NOTE] If you see a hidden string that includes translations, please notify us in the [contributors chat room](https://discord.gg/PRyKn3Vbay) so we can remove the translation from memory.
|
||||
> [!NOTE] If you see a hidden string that includes translations, please notify us in the [Discord](https://discord.gg/PRyKn3Vbay) so we can remove the translation from memory.
|
||||
|
||||
Wenn du eine Übersetzung für einen String fertiggestellt hast, wähle den `Save` Button, um deine Übersetzung auf Crowdin zu speichern. Andere Mitwirkende können dann über deine Übersetzung abstimmen und Korrekturleser können sie genehmigen.
|
||||
|
||||
Du kannst so viele Strings übersetzen, wie du möchtest - es sind keine zusätzlichen Schritte erforderlich, wenn du eine vollständige Datei fertigstellst oder eine neue Übersetzung vorschlägst. Ein Klick auf den `Save` Button ist alles, was nötig ist, um eine Übersetzung zu speichern.
|
||||
|
||||
> [!NOTE] Wenn du in der englischen Quelldatei etwas siehst, das ungenau oder falsch ist, korrigiere es bitte nicht im Rahmen des Übersetzungsprozesses. Hinterlasse stattdessen einen Kommentar zu dem String, um uns auf die Unstimmigkeit hinzuweisen, oder erstelle ein Issue auf GitHub.
|
||||
> [!NOTE] If you see something in the English source file that is inaccurate or incorrect, please do not fix it through the translation flow. Instead, leave a comment on the string to notify us that there is a discrepancy, or create a GitHub issue.
|
||||
|
||||
## Dokumentation übersetzen
|
||||
## Translate Documentation
|
||||
|
||||
Die Übersetzung unserer Dokumentation für Helfer ist ein ähnlicher Prozess wie die Übersetzung unserer Studienplan-Dateien.
|
||||
|
||||
> [!NOTE] Unsere Dokumentation wird von `docsify` unterstützt, und wir haben ein spezielles Parsing für Nachrichtenboxen wie diese hier. Wenn du Zeichenfolgen siehst, die mit `[!NOTE]`, `[!WARNING]`, oder `[!TIP]` beginnen, sollten diese Wörter NICHT übersetzt werden.
|
||||
> [!NOTE] Our contributing documentation is powered by `docsify`, and we have special parsing for message boxes like this one. If you see strings that start with `[!NOTE]`, `[!WARNING]`, or `[!TIP]`, these words should NOT be translated.
|
||||
|
||||
### How to translate documentation with internal links
|
||||
|
||||
@@ -153,7 +157,7 @@ You can find out how `docsify` converts a string in your language into an id by
|
||||
|
||||
You can learn more about [internal links in our docs here](how-to-work-on-the-docs-theme.md#how-to-create-an-internal-link).
|
||||
|
||||
## Übersetze das LearnToCode RPG
|
||||
## Translate the LearnToCode RPG
|
||||
|
||||
The LearnToCode RPG runs on Ren'Py, which uses special syntax for translated strings: (See [Ren'Py Text documentation](https://www.renpy.org/doc/html/text.html))
|
||||
|
||||
@@ -278,7 +282,7 @@ I better take notes so I can learn more about it."
|
||||
我最好做笔记,这样我可以学习更多东西。"
|
||||
```
|
||||
|
||||
## Übersetzungen bewerten
|
||||
## Rate Translations
|
||||
|
||||
Crowdin allows you to rate the existing proposed translations. If you attempt to save a translation, you may see a message indicating that you cannot save a duplicate translation - this means another contributor has proposed that identical translation. If you agree with that translation, click the `+` button to "upvote" the translation.
|
||||
|
||||
@@ -286,7 +290,7 @@ If you see a translation that is inaccurate or does not provide the same clarity
|
||||
|
||||
Crowdin uses these votes to give a score to each proposed translation for a string, which helps the proofreading team determine which translation is the best fit for each string.
|
||||
|
||||
## Qualitätssicherungskontrollen
|
||||
## Quality Assurance Checks
|
||||
|
||||
We have enabled some quality assurance steps that will verify a translation is as accurate as possible - this helps our proofreaders review proposed translations.
|
||||
|
||||
@@ -296,9 +300,9 @@ When you attempt to save a translation, you may see a warning message appear wit
|
||||
|
||||
This message appears when Crowdin's QA system has identified a potential error in the proposed translation. In this example, we have modified the text of a `<code>` tag and Crowdin has caught that.
|
||||
|
||||
> [!WARNING] Du hast die Möglichkeit, eine Übersetzung trotz Fehlern zu speichern. Wenn du das tust, indem du auf "Save Anyway" klickst, solltest du auch einen Korrekturleser oder Projektmanager markieren und erklären, warum die QA-Meldung in diesem Fall ignoriert werden muss.
|
||||
> [!WARNING] You have the option to save a translation in spite of errors. If you do, by clicking "Save Anyway", you should also tag a proofreader or project manager and explain why the QA message needs to be ignored in this case.
|
||||
|
||||
## Bewährte Praktiken bei der Übersetzung
|
||||
## Translation Best Practices
|
||||
|
||||
Follow these guidelines to ensure our translations are as accurate as possible:
|
||||
|
||||
@@ -306,4 +310,4 @@ Follow these guidelines to ensure our translations are as accurate as possible:
|
||||
- Füge keine zusätzlichen Inhalte hinzu. Wenn du der Meinung bist, dass eine Aufgabe Änderungen am Textinhalt oder zusätzliche Informationen erfordert, solltest du die Änderungen in einem Issue auf GitHub oder in einem Pull Request vorschlagen, der die englische Datei ändert.
|
||||
- Ändere nicht die Reihenfolge des Inhalts.
|
||||
|
||||
If you have any questions, feel free to reach out to us in our [contributors chat room](https://discord.gg/PRyKn3Vbay) and we will be happy to assist you.
|
||||
If you have any questions, feel free to reach out to us in our [Discord](https://discord.gg/PRyKn3Vbay) and we will be happy to assist you.
|
||||
|
||||
@@ -22,22 +22,31 @@ Du kannst helfen, den Studienplan zu erweitern und zu verbessern. Du kannst auch
|
||||
|
||||
Wir lokalisieren freeCodeCamp.org in die wichtigsten Sprachen der Welt.
|
||||
|
||||
Zertifizierungen gibt es bereits in einigen wichtigen Weltsprachen wie [Chinesisch (中文)](https://chinese.freecodecamp.org/learn), [Spanisch (Español)](https://www.freecodecamp.org/espanol/learn), [Italienisch (Italiano)](https://www.freecodecamp.org/italian/learn), [Portugiesisch (Português)](https://www.freecodecamp.org/portuguese/learn). Wir ermutigen dich, die [Ankündigung ](https://www.freecodecamp.org/news/world-language-translation-effort) zu lesen und sie mit deinen Freunden zu teilen, um sie dafür zu begeistern.
|
||||
Certifications are already live in some major world languages like below:
|
||||
|
||||
**Wenn du daran interessiert bist, zu übersetzen, findest du hier [eine Anleitung zum Übersetzen der freeCodeCamp-Ressourcen](how-to-translate-files.md).**
|
||||
- [Chinese (中文)](https://chinese.freecodecamp.org/learn)
|
||||
- [Spanish (Español)](https://www.freecodecamp.org/espanol/learn)
|
||||
- [Italian (Italiano)](https://www.freecodecamp.org/italian/learn)
|
||||
- [Portuguese (Português)](https://www.freecodecamp.org/portuguese/learn)
|
||||
- [Ukrainian (Українська)](https://www.freecodecamp.org/ukrainian/learn)
|
||||
- [Japanese (日本語)](https://www.freecodecamp.org/japanese/learn)
|
||||
|
||||
We encourage you to read the [announcement here](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/) and share it with your friends to get them excited about this.
|
||||
|
||||
**If you're interested in translating, here's [how to translate freeCodeCamp's resources](how-to-translate-files.md).**
|
||||
|
||||
## Lernplattform
|
||||
|
||||
Unsere Lernplattform läuft auf einem modernen JavaScript-Stack. Sie verwendet verschiedene Komponenten, Tools und Bibliotheken. Dazu gehören Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack und mehr.
|
||||
Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more.
|
||||
|
||||
Im Großen und Ganzen haben wir einen Node.js-basierten API-Server, eine Reihe von React-basierten Client-Anwendungen, Testskripte, um die von Teilnehmer/innen eingereichten Studienplanprojekten zu bewerten, und einiges mehr. Wenn du einen produktiven Beitrag zur Lernplattform leisten willst, empfehlen wir dir, dich mit diesen Tools vertraut zu machen.
|
||||
Broadly, we have a Node.js based API server, a set of React-based client applications, testing scripts to evaluate camper-submitted curriculum projects, and more. If you want to productively contribute to the learning platform, we recommend some familiarity with these tools.
|
||||
|
||||
Wenn du uns helfen willst, unsere Codebasis zu verbessern...
|
||||
If you want to help us improve our codebase...
|
||||
|
||||
**kannst du entweder Gitpod verwenden, eine kostenlose Online-Entwicklungsumgebung, die eine fertige Entwicklungsumgebung für das freeCodeCamp in deinem Browser startet.**
|
||||
**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.**
|
||||
|
||||
[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
|
||||
[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
|
||||
|
||||
Oder du kannst...
|
||||
Or you can...
|
||||
|
||||
**[Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.**
|
||||
|
||||
@@ -10,7 +10,7 @@ freeCodeCamp è basata su uno stack JavaScript moderno. Se hai interesse a contr
|
||||
|
||||
Sì, puoi contribuire a ognuna delle oltre 30 lingue abilitate sulla nostra piattaforma di traduzione.
|
||||
|
||||
Abbiamo le traduzioni fatte dagli utenti live in alcune lingue. Abbiamo intenzione di localizzare freeCodeCamp nelle lingue più usate nel mondo. Puoi leggere tutto su questo argomento nel nostro [annuncio](https://www.freecodecamp.org/news/world-language-translation-effort).
|
||||
Abbiamo le traduzioni fatte dagli utenti live in alcune lingue. Abbiamo intenzione di localizzare freeCodeCamp nelle lingue più usate nel mondo. You can read all about this in our [announcement here](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/).
|
||||
|
||||
Se sei interessato a contribuire alla traduzione per favore assicurati di [leggere questa guida](how-to-translate-files.md) come prima cosa.
|
||||
|
||||
|
||||
@@ -7,16 +7,17 @@
|
||||
- [Lavorare a correggere le risorse](how-to-proofread-files.md)
|
||||
- **Contribuire al codice**
|
||||
- [Imposta freeCodeCamp localmente](how-to-setup-freecodecamp-locally.md)
|
||||
- [Segui le migliori pratiche di programmazione](codebase-best-practices.md)
|
||||
- [Aprire una pull request](how-to-open-a-pull-request.md)
|
||||
- [Lavorare sulle sfide di programmazione](how-to-work-on-coding-challenges.md)
|
||||
- [Lavorare sui progetti di pratica](how-to-work-on-practice-projects.md)
|
||||
- [Lavora sui tutorial con CodeRoad](how-to-work-on-tutorials-that-use-coderoad.md)
|
||||
- [Lavorare sulla app web in locale](how-to-work-on-localized-client-webapp.md)
|
||||
- [Lavora sui test Cypress ](how-to-add-cypress-tests.md)
|
||||
- [Lavorare sulle sfide video](how-to-help-with-video-challenges.md)
|
||||
- [Lavorare sulla documentazione](how-to-work-on-the-docs-theme.md)
|
||||
- [Lavorare sulla libreria dei componenti](how-to-work-on-the-component-library.md)
|
||||
- [Work on mobile app](how-to-setup-freecodecamp-mobile-app-locally.md)
|
||||
- [Follow coding best practices](codebase-best-practices.md)
|
||||
- [Open a pull request](how-to-open-a-pull-request.md)
|
||||
- [Work on coding challenges](how-to-work-on-coding-challenges.md)
|
||||
- [Work on practice projects](how-to-work-on-practice-projects.md)
|
||||
- [Work on tutorials with CodeRoad](how-to-work-on-tutorials-that-use-coderoad.md)
|
||||
- [Work on localized client web app](how-to-work-on-localized-client-webapp.md)
|
||||
- [Work on Cypress tests](how-to-add-cypress-tests.md)
|
||||
- [Work on video challenges](how-to-help-with-video-challenges.md)
|
||||
- [Work on documentation](how-to-work-on-the-docs-theme.md)
|
||||
- [Work on the component library](how-to-work-on-the-component-library.md)
|
||||
- **Guide aggiuntive**
|
||||
- [Testare traduzioni in locale](how-to-test-translations-locally.md)
|
||||
- [Capire la struttura dei file del curriculum](curriculum-file-structure.md)
|
||||
|
||||
@@ -0,0 +1,405 @@
|
||||
Follow this guide for setting up the freeCodeCamp mobile app locally on your system. This is highly recommended if you want to contribute regularly.
|
||||
|
||||
Some of the contribution workflows – like fixing bugs in the codebase – need you to run freeCodeCamp app locally.
|
||||
|
||||
### How to prepare your local machine
|
||||
|
||||
Start by installing the prerequisite software for your operating system.
|
||||
|
||||
#### Prerequisites:
|
||||
|
||||
| Prerequisite | Version | Notes |
|
||||
| --------------------------------- | ------- | ---------------------------------------- |
|
||||
| [Flutter](https://flutter.dev/) | `3.x` | - |
|
||||
| Dart (comes bundled with Flutter) | `2.x` | We use the version bundled with Flutter. |
|
||||
|
||||
> [!ATTENTION] If you have a different version, please install the recommended version. We can only support installation issues for recommended versions.
|
||||
|
||||
If Flutter is already installed on your machine, run the following commands to validate the versions:
|
||||
|
||||
```console
|
||||
flutter --version
|
||||
dart --version
|
||||
```
|
||||
|
||||
> [!TIP] We highly recommend updating to the latest stable releases of the software listed above.
|
||||
|
||||
Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once.
|
||||
|
||||
##### Follow these steps to get your development environment ready:
|
||||
|
||||
1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated.
|
||||
|
||||
2. Setup [Android Studio](https://developer.android.com/studio) and [Android Emulators](https://developer.android.com/studio/run/managing-avds) with the latest released Android version. We recommend using the Pixel 3a XL and Nexus One(for emulating smaller screens).
|
||||
|
||||
3. (Optional for MacOS) Setup Xcode and iOS Simulator with the latest released iOS version.
|
||||
|
||||
4. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub.
|
||||
|
||||
5. Install a code editor of your choice.
|
||||
|
||||
We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or Android Studio. We also recommend installing the official [extensions](https://docs.flutter.dev/get-started/editor?tab=vscode)
|
||||
|
||||
## Fork the repository on GitHub
|
||||
|
||||
[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of the repository (a.k.a _repo_) on GitHub.
|
||||
|
||||
This is essential, as it allows you to work on your own copy of freeCodeCamp mobile app on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR).
|
||||
|
||||
> [!TIP] The main repository at `https://github.com/freeCodeCamp/mobile` is often referred to as the `upstream` repository.
|
||||
>
|
||||
> Your fork at `https://github.com/YOUR_USER_NAME/mobile` is often referred to as the `origin` repository. `YOUR_USER_NAME` would be replaced with your GitHub username.
|
||||
|
||||
**Follow these steps to fork the `https://github.com/freeCodeCamp/mobile` repository:**
|
||||
|
||||
1. Go to the freeCodeCamp mobile repository on GitHub: <https://github.com/freeCodeCamp/mobile>
|
||||
|
||||
2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/))
|
||||
|
||||
3. After the repository has been forked, you will be taken to your copy of the repository at `https://github.com/YOUR_USER_NAME/mobile` (`YOUR_USER_NAME` would be replaced with your GitHub user name.)
|
||||
|
||||
## Clone your fork from GitHub
|
||||
|
||||
[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/mobile`. (`YOUR_USER_NAME` would be replaced with your GitHub user name.)
|
||||
|
||||
Run these commands on your local machine:
|
||||
|
||||
1. Open a Terminal / Command Prompt / Shell in your projects directory
|
||||
|
||||
_i.e.: `/yourprojectsdirectory/`_
|
||||
|
||||
2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username
|
||||
|
||||
```console
|
||||
git clone --depth=1 https://github.com/YOUR_USER_NAME/mobile.git
|
||||
```
|
||||
|
||||
This will download the entire freeCodeCamp mobile repository to your projects directory.
|
||||
|
||||
Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit.
|
||||
|
||||
## Set up syncing from parent
|
||||
|
||||
Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository.
|
||||
|
||||
[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository.
|
||||
|
||||
You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly.
|
||||
|
||||
1. Change directory to the new `mobile` directory:
|
||||
|
||||
```console
|
||||
cd mobile
|
||||
```
|
||||
|
||||
2. Add a remote reference to the main freeCodeCamp mobile repository:
|
||||
|
||||
```console
|
||||
git remote add upstream https://github.com/freeCodeCamp/mobile.git
|
||||
```
|
||||
|
||||
3. Ensure the configuration looks correct:
|
||||
|
||||
```console
|
||||
git remote -v
|
||||
```
|
||||
|
||||
The output should look something like below (replacing `YOUR_USER_NAME` with your GitHub username):
|
||||
|
||||
```console
|
||||
origin https://github.com/YOUR_USER_NAME/mobile.git (fetch)
|
||||
origin https://github.com/YOUR_USER_NAME/mobile.git (push)
|
||||
upstream https://github.com/freeCodeCamp/mobile.git (fetch)
|
||||
upstream https://github.com/freeCodeCamp/mobile.git (push)
|
||||
```
|
||||
|
||||
## Running freeCodeCamp mobile app locally
|
||||
|
||||
Now that you have a local copy of the mobile app, you can follow these instructions to run it locally.
|
||||
|
||||
If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/mobile/issues) page for a solution and report the issue if it has not yet been reported.
|
||||
|
||||
And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our chat server](https://discord.gg/PRyKn3Vbay).
|
||||
|
||||
> [!NOTE] The `mobile` directory contains two folders ie. `mobile-api` and `mobile-app`. `mobile-api` contains the API code used for serving the podcasts. `mobile-app` contains the Flutter app which is where you should be when you follow the below steps.
|
||||
|
||||
### Configuring dependencies
|
||||
|
||||
#### Step 1: Set up the environment variable file
|
||||
|
||||
The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step. Remember to change the directory to `mobile-app` before running the following commands.
|
||||
|
||||
```console
|
||||
# Create a copy of the "sample.env" and name it ".env".
|
||||
# Populate it with the necessary API keys and secrets:
|
||||
```
|
||||
|
||||
<!-- tabs:start -->
|
||||
|
||||
#### **macOS/Linux**
|
||||
|
||||
```console
|
||||
cp sample.env .env
|
||||
```
|
||||
|
||||
#### **Windows**
|
||||
|
||||
```console
|
||||
copy sample.env .env
|
||||
```
|
||||
|
||||
<!-- tabs:end -->
|
||||
|
||||
The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is.
|
||||
|
||||
#### Step 2: Install dependencies
|
||||
|
||||
This step will install the dependencies required for the application to run:
|
||||
|
||||
```console
|
||||
flutter pub get
|
||||
```
|
||||
|
||||
#### Step 3: Start the freeCodeCamp mobile app
|
||||
|
||||
Start the emulator of your choice(Android or iOS) and wait for the bootup process to complete.
|
||||
|
||||
You can now start the app by running the following command:
|
||||
|
||||
```console
|
||||
flutter run
|
||||
```
|
||||
|
||||
> [!TIP] If you're using VSCode or Android Studio then you can easily start the app without having to execute any terminal commands. More information [here](https://docs.flutter.dev/get-started/test-drive).
|
||||
|
||||
## Making changes locally
|
||||
|
||||
You can now make changes to files and commit your changes to your local clone of your fork.
|
||||
|
||||
Follow these steps:
|
||||
|
||||
1. Validate that you are on the `main` branch:
|
||||
|
||||
```console
|
||||
git status
|
||||
```
|
||||
|
||||
You should get an output like this:
|
||||
|
||||
```console
|
||||
On branch main
|
||||
Your branch is up-to-date with 'origin/main'.
|
||||
|
||||
nothing to commit, working directory clean
|
||||
```
|
||||
|
||||
If you are not on main or your working directory is not clean, resolve any outstanding files/commits and checkout `main`:
|
||||
|
||||
```console
|
||||
git checkout main
|
||||
```
|
||||
|
||||
2. Sync the latest changes from the upstream `main` branch to your local main branch:
|
||||
|
||||
> [!WARNING] If you have any outstanding pull request that you made from the `main` branch of your fork, you will lose them at the end of this step.
|
||||
>
|
||||
> You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `main`.
|
||||
|
||||
This step **will sync the latest changes** from the main repository of freeCodeCamp mobile. It is important that you rebase your branch on top of the latest `upstream/main` as often as possible to avoid conflicts later.
|
||||
|
||||
Update your local copy of the freeCodeCamp mobile upstream repository:
|
||||
|
||||
```console
|
||||
git fetch upstream
|
||||
```
|
||||
|
||||
Hard reset your main branch with the freeCodeCamp mobile main:
|
||||
|
||||
```console
|
||||
git reset --hard upstream/main
|
||||
```
|
||||
|
||||
Push your main branch to your origin to have a clean history on your fork on GitHub:
|
||||
|
||||
```console
|
||||
git push origin main --force
|
||||
```
|
||||
|
||||
You can validate your current main matches the upstream/main by performing a diff:
|
||||
|
||||
```console
|
||||
git diff upstream/main
|
||||
```
|
||||
|
||||
The resulting output should be empty.
|
||||
|
||||
3. Create a fresh new branch:
|
||||
|
||||
Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `main`. This will soil your copy of freeCodeCamp mobile and you may have to start over with a fresh clone or fork.
|
||||
|
||||
Check that you are on `main` as explained previously, and branch off from there:
|
||||
|
||||
```console
|
||||
git checkout -b fix/update-guide-for-xyz
|
||||
```
|
||||
|
||||
Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique.
|
||||
|
||||
Some examples of good branch names are:
|
||||
|
||||
```md
|
||||
fix/update-challenges-for-react
|
||||
fix/update-guide-for-html-css
|
||||
fix/platform-bug-sign-in-issues
|
||||
feat/add-guide-article-for-javascript
|
||||
translate/add-spanish-basic-html
|
||||
```
|
||||
|
||||
4. Edit pages and work on code in your favorite text editor.
|
||||
|
||||
5. Once you are happy with the changes you should optionally run the mobile app locally to preview the changes.
|
||||
|
||||
6. Make sure you fix any errors and check the formatting of your changes.
|
||||
|
||||
7. Check and confirm the files you are updating:
|
||||
|
||||
```console
|
||||
git status
|
||||
```
|
||||
|
||||
This should show a list of `unstaged` files that you have edited.
|
||||
|
||||
```console
|
||||
On branch feat/documentation
|
||||
Your branch is up to date with 'upstream/feat/documentation'.
|
||||
|
||||
Changes were not staged for commit:
|
||||
(use "git add/rm <file>..." to update what will be committed)
|
||||
(use "git checkout -- <file>..." to discard changes in the working directory)
|
||||
|
||||
modified: README.md
|
||||
modified: mobile-app/lib/main.dart
|
||||
...
|
||||
```
|
||||
|
||||
8. Stage the changes and make a commit:
|
||||
|
||||
In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed.
|
||||
|
||||
```console
|
||||
git add path/to/my/changed/file.ext
|
||||
```
|
||||
|
||||
Or you can add all the `unstaged` files to the staging area:
|
||||
|
||||
```console
|
||||
git add .
|
||||
```
|
||||
|
||||
Only the files that were moved to the staging area will be added when you make a commit.
|
||||
|
||||
```console
|
||||
git status
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```console
|
||||
On branch feat/documentation
|
||||
Your branch is up to date with 'upstream/feat/documentation'.
|
||||
|
||||
Changes to be committed:
|
||||
(use "git reset HEAD <file>..." to unstage)
|
||||
|
||||
modified: README.md
|
||||
modified: mobile-app/lib/main.dart
|
||||
```
|
||||
|
||||
Now, you can commit your changes with a short message like so:
|
||||
|
||||
```console
|
||||
git commit -m "fix: my short commit message"
|
||||
```
|
||||
|
||||
Some examples:
|
||||
|
||||
```md
|
||||
fix: update guide article for Java - for loop
|
||||
feat: add guide article for alexa skills
|
||||
```
|
||||
|
||||
Optional:
|
||||
|
||||
We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices.
|
||||
|
||||
Some examples of conventional commit messages are:
|
||||
|
||||
```md
|
||||
fix: update HTML guide article
|
||||
fix: update build scripts for Travis-CI
|
||||
feat: add article for JavaScript hoisting
|
||||
docs: update contributing guidelines
|
||||
```
|
||||
|
||||
Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message.
|
||||
|
||||
This does not take any additional time than an unconventional message like 'update file' or 'add index.md'
|
||||
|
||||
You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits).
|
||||
|
||||
9. If you realize that you need to edit a file or update the commit message after making a commit you can do so after editing the files with:
|
||||
|
||||
```console
|
||||
git commit --amend
|
||||
```
|
||||
|
||||
This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description.
|
||||
|
||||
10. Next, you can push your changes to your fork:
|
||||
|
||||
```console
|
||||
git push origin branch/name-here
|
||||
```
|
||||
|
||||
## Proposing a Pull Request (PR)
|
||||
|
||||
After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md).
|
||||
|
||||
<!-- ## Quick commands reference - NEED TO DISCUSS ABOUT THIS
|
||||
|
||||
A quick reference to the commands that you will need when working locally.
|
||||
|
||||
| command | description |
|
||||
| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
|
||||
| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. |
|
||||
| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. | -->
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Issues with installing the recommended prerequisites
|
||||
|
||||
We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later, and Windows 10 (with WSL2).
|
||||
|
||||
It is recommended to research your specific issue on resources such as Google, Stack Overflow, and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query.
|
||||
|
||||
If you are on a different OS and/or are still running into issues, see [getting help](#getting-help).
|
||||
|
||||
### Issues with the UI, build errors, etc.
|
||||
|
||||
If you face issues with the UI, or builds errors a cleanup can be useful:
|
||||
|
||||
```console
|
||||
flutter clean
|
||||
```
|
||||
|
||||
### Issues installing dependencies
|
||||
|
||||
If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources.
|
||||
|
||||
Be patient as the first time setup can take a while depending on your network bandwidth.
|
||||
|
||||
## Getting Help
|
||||
|
||||
If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [the contributors chat room](https://discord.gg/PRyKn3Vbay).
|
||||
|
||||
There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution.
|
||||
@@ -1,32 +1,18 @@
|
||||
# Come tradurre le risorse di freeCodeCamp
|
||||
|
||||
Abbiamo il sogno di offrirti le risorse per imparare, non importa in che lingua del mondo tu parli. Per aiutarci con questo enorme sforzo, abbiamo integrato il nostro codebase open-source e il nostro curriculum con [Crowdin](https://crowdin.com/), uno strumento per aiutarci nella localizzazzione (cioè la traduzione nei vari "locale") del codebase.
|
||||
|
||||
Il workflow della traduzione è diviso in due attività principali:
|
||||
|
||||
- **Tradurre** i file del curriculum, la documentazione ed elementi dell'interfaccia come pulsanti, etichette, ecc.:
|
||||
|
||||
Come traduttore puoi iscriverti alla [nostra piattaforma di traduzione](https://translate.freecodecamp.org) e contribuire a tradurre in una qualsiasi delle oltre 30 lingue disponibili sulla piattaforma.
|
||||
|
||||
- **Revisionare** (Proofread) le traduzioni per gli elementi nominati in precedenza.
|
||||
|
||||
I revisori verificano che le traduzioni contribuite dalla community abbiano un tono uniforme e non abbiano problemi comuni come errori di spelling, ecc. In breve, si occupano di assicurare un'alta qualità della traduzione. Nota che non usiamo traduzioni automatiche per una ragione.
|
||||
|
||||
> [!WARNING] Non stiamo più usando GitHub per tradurre i file direttamente, se sei un contributore di vecchia data dirigiti invece alla [piattaforma di traduzione](https://translate.freecodecamp.org/).
|
||||
|
||||
## Preparati a contribuire
|
||||
|
||||
> La mappa per la localizzazione di freeCodeCamp – Non ci sono limiti di velocità
|
||||
> The freeCodeCamp Localization Roadmap – There Are No Speed Limits
|
||||
|
||||
Puoi tradurre quanto vuoi, quando vuoi. È solo una questione di quanto tempo ed energie vuoi investire come traduttore volontario.
|
||||
You can translate as much as you want, when you want. It's only a matter of how much time and energy you are willing to invest as a volunteer translator.
|
||||
|
||||
Chiediamo solo che tu comprenda i seguenti punti:
|
||||
We just ask that you understand the following:
|
||||
|
||||
1. **Le traduzioni sono uno sforzo di gruppo.**
|
||||
|
||||
Tradurre le risorse di freeCodeCamp è una delle esperienze più divertenti e gratificanti come contributore, e funziona meglio se coivolgi i tuoi amici e colleghi che parlano la tua stessa lingua.
|
||||
|
||||
Raccomandiamo di unirti al [forum della community](https://forum.freecodecamp.org/c/contributors/3) e alla [chat room dei contributori](https://discord.gg/PRyKn3Vbay) con i tuoi amici e mostrare il tuo interesse prima di iniziare a tradurre. Crowdin rende più facile contribuire alle traduzioni, ma richiede comunque un sacco di lavoro.
|
||||
You can start by reading [this announcement](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/). We recommend joining [our community forum](https://forum.freecodecamp.org/c/contributors/3) and [Discord chat server](https://discord.gg/PRyKn3Vbay) with your friends and showing your interest before starting off with translations. Crowdin and other tools make it easy to contribute translations, but it's still a lot of work.
|
||||
|
||||
Vogliamo che ti diverta a contribuire e che tu non soffra di burnout o perda interesse.
|
||||
|
||||
@@ -38,7 +24,7 @@ Chiediamo solo che tu comprenda i seguenti punti:
|
||||
|
||||
freeCodeCamp.org si impegna a offrire queste cose gratuitamente come sempre, ma dobbiamo dare priorità alle risorse per chi ne ha più bisogno. L'ultima cosa che vogliamo è dover disattivare i server per una lingua se l'attività di traduzione si ferma e il materiale diventa obsoleto.
|
||||
|
||||
Una volta che una lingua raggiunge almeno alcune certificazioni del curriculum possiamo iniziare a mettere la lingua live su [`/learn`](https://www.freecodecamp.org/learn), mentre continuate a tradurre le restanti certificazioni.
|
||||
For translating the curriculum, once a language reaches at least a few certifications we can begin deploying the language live on [`/learn`](https://www.freecodecamp.org/learn), while you continue to translate the remaining certifications.
|
||||
|
||||
Per esempio, vorremmo fare il deploy almeno di tutte le certificazioni front-ent quando attiviamo una nuova lingua per la prima volta.
|
||||
|
||||
@@ -54,9 +40,27 @@ Chiediamo solo che tu comprenda i seguenti punti:
|
||||
|
||||
Una volta che avrai un piccolo gruppo di persone (almeno 4-5) interessate e volenterose a impegnarsi, potremo fare una videochiamata. Spiegheremo tutti i dettagli e vi guideremo nell'uso degli strumenti e sui processi.
|
||||
|
||||
## Iniziare
|
||||
## Overview of Crowdin
|
||||
|
||||
Come prima cosa, assicurati di venire a presentarti nella [chat room dei contributori](https://discord.gg/PRyKn3Vbay). Postiamo aggiornamenti regolari sulla traduzione delle risorse e rispondiamo a un sacco delle vostre domande lì.
|
||||
It's our dream to provide you with the resources to learn, no matter the world language you speak. To help us with this massive effort, we have integrated our open-source code-base & curriculum with [Crowdin](https://crowdin.com/) - A tool to help us localize our code-base.
|
||||
|
||||
> [!NOTE] We use a different tool and workflow for translating [news articles](https://www.freecodecamp.org/news). If you are interested in translating articles, read [this announcement](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/) and reach out to your Language Lead.
|
||||
|
||||
The translation workflow is split into two main activities:
|
||||
|
||||
- **Tradurre** i file del curriculum, la documentazione ed elementi dell'interfaccia come pulsanti, etichette, ecc.:
|
||||
|
||||
Come traduttore puoi iscriverti alla [nostra piattaforma di traduzione](https://translate.freecodecamp.org) e contribuire a tradurre in una qualsiasi delle oltre 30 lingue disponibili sulla piattaforma.
|
||||
|
||||
- **Revisionare** (Proofread) le traduzioni per gli elementi nominati in precedenza.
|
||||
|
||||
I revisori verificano che le traduzioni contribuite dalla community abbiano un tono uniforme e non abbiano problemi comuni come errori di spelling, ecc. In breve, si occupano di assicurare un'alta qualità della traduzione. Nota che non usiamo traduzioni automatiche per una ragione.
|
||||
|
||||
> [!WARNING] We are no longer using GitHub to translate files directly, if you are a returning contributor head to our [translation platform](https://translate.freecodecamp.org/) instead.
|
||||
|
||||
## Getting started
|
||||
|
||||
First, make sure you come say "Hi" in our [Discord](https://discord.gg/PRyKn3Vbay). Postiamo aggiornamenti regolari sulla traduzione delle risorse e rispondiamo a un sacco delle vostre domande lì.
|
||||
|
||||
Poi, vai alla nostra [piattaforma di traduzione](https://translate.freecodecamp.org/) e fai login (se è la prima volta che contribuisci alle traduzioni, dovrai creare un account).
|
||||
|
||||
@@ -64,7 +68,7 @@ Infine, segui la guida dettagliata qua sotto per capire come funzionano gli stru
|
||||
|
||||
Buona traduzione.
|
||||
|
||||
## Selezionare un progetto e un file
|
||||
## Select a Project and File
|
||||
|
||||
Quando visiti la piattaforma di traduzione, dovresti vedere vari °progetti° disponibili per la traduzione:
|
||||
|
||||
@@ -84,9 +88,9 @@ Ogni file e cartella mostrerà una barra di avanzamento. La parte **blu** della
|
||||
|
||||
Seleziona un file su cui lavorare e Crowdin aprirà l'editor.
|
||||
|
||||
> [!NOTE] Quando l'editor si apre, dovrai cliccare sull'icona delle impostazioni (ha la forma di un ingranaggio) e mettere l'opzione 'HTML tags displaying' (mostrare i tag HTML) su 'SHOW' (mostra). Questo fa in modo che tu possa vedere i tag come `<code></code>` invece di `<0></0>`.
|
||||
> [!NOTE] When the editor view opens, you will need to click the settings icon (shown as a gear) and switch the 'HTML tags displaying' setting to 'SHOW'. This will ensure you can see tags such as `<code></code>` instead of `<0></0>`.
|
||||
|
||||
## Tradurre il curriculum
|
||||
## Translate Curriculum
|
||||
|
||||

|
||||
|
||||
@@ -103,19 +107,19 @@ Crowdin separa un documento in "stringhe" (strings) da tradurre, in genere frasi
|
||||
9. Qui puoi vedere la finestra dei commenti. Se hai domande o dubbi su una particolare stringa, puoi lasciare un commento sulla stringa qui perché altri traduttori li vedano.
|
||||
10. Questi due pulsanti dei pannelli nasconderanno i pannelli a sinistra (documento) e a destra (commenti).
|
||||
|
||||
> [!NOTE] Se vedi una stringa nascosta (hidden string) che include una traduzione, per favore faccelo sapere usando la [chat room dei contributori](https://discord.gg/PRyKn3Vbay) così potremo rimuovere la traduzione dalla memoria.
|
||||
> [!NOTE] If you see a hidden string that includes translations, please notify us in the [Discord](https://discord.gg/PRyKn3Vbay) so we can remove the translation from memory.
|
||||
|
||||
Quando hai finito la traduzione per una stringa, usa il pulsante `Save` per salvare la tua traduzione in Crowdin. Altri contributori potranno quindi votare la tua traduzione e i revisori potranno approvarla.
|
||||
|
||||
Sentiti libero di tradurre quante stringhe vuoi, non ci sono step additionali richiesti quando completi un intero file o proponi una nuova traduzione. Usare il pulsante `Save` è tutto quello che serve per memorizzare una traduzione.
|
||||
|
||||
> [!NOTE] Se vedi qualcosa nel file originale inglese che è inaccurato o non corretto, per favore non aggiustarlo con il processo di traduzione. Invece lascia un commento sulla stringa per farci sapere che c'è una discrepanza o crea una issue su GitHub.
|
||||
> [!NOTE] If you see something in the English source file that is inaccurate or incorrect, please do not fix it through the translation flow. Instead, leave a comment on the string to notify us that there is a discrepancy, or create a GitHub issue.
|
||||
|
||||
## Tradurre la Documentazione
|
||||
## Translate Documentation
|
||||
|
||||
Tradurre la documentazione per contribuire è un processo simile alla traduzione dei file del curriculum.
|
||||
|
||||
> [!NOTE] La documentazione per contribuire è creata tramite `docsify`, e ci sono regole speciali per riquadri di messaggio come questo. Se vedi una stringa che inizia con `[!NOTE]`, `[!WARNING]`, o `[!TIP]`, queste parole non devono essere tradotte.
|
||||
> [!NOTE] Our contributing documentation is powered by `docsify`, and we have special parsing for message boxes like this one. If you see strings that start with `[!NOTE]`, `[!WARNING]`, or `[!TIP]`, these words should NOT be translated.
|
||||
|
||||
### Come tradurre la documentazione con link interni
|
||||
|
||||
@@ -153,7 +157,7 @@ Puoi trovare come `docsify` converte una stringa nella tua lingua in un id guard
|
||||
|
||||
Puoi imparare di più a proposito di [link interni nella nostra documentazione qui](how-to-work-on-the-docs-theme.md#how-to-create-an-internal-link).
|
||||
|
||||
## Tradurre LearnToCode RPG
|
||||
## Translate the LearnToCode RPG
|
||||
|
||||
LearnToCode RPG è creato con Ren'Py, che usa una sintassi speciale per le stringhe tradotte: (Vedi [la documentazione di Ren'Py sul testo](https://www.renpy.org/doc/html/text.html))
|
||||
|
||||
@@ -278,7 +282,7 @@ I better take notes so I can learn more about it."
|
||||
我最好做笔记,这样我可以学习更多东西。"
|
||||
```
|
||||
|
||||
## Votare le traduzioni
|
||||
## Rate Translations
|
||||
|
||||
Crowdin ti permette di votare le proposte di traduzione esistenti. Se provi a salvare una traduzione, potresti vedere un messaggio che indica che non puoi salvare una traduzione duplicata: questo significa che un altro contributore ha proposto una traduzione identica. Se sei d'accordo con quella traduzione, usa il pulsante `+` per darle un voto positivo.
|
||||
|
||||
@@ -286,7 +290,7 @@ Se vedi una traduzione che non è accurata o non è chiara come la stringa origi
|
||||
|
||||
Crowdin usa questi voti per dare un punteggio alle proposte di traduzione per una stringa, e questo aiuta il gruppo di revisione a determinare quale traduzione è la migliore per ogni stringa.
|
||||
|
||||
## Controlli di qualità
|
||||
## Quality Assurance Checks
|
||||
|
||||
Abbiamo attivato alcuni step per il controllo di qualità che verificano che una traduzione sia per quanto possibile accurata: questo aiuta il team di revisione a revisionare le traduzioni proposte.
|
||||
|
||||
@@ -296,9 +300,9 @@ Quando provi a salvare una traduzione, potresti vedere un messaggio di errore ap
|
||||
|
||||
Questo messaggio appare quando il sistema QA (Quality Assurance) di Crowdin identifica un potenziale errore nella traduzione proposta. In questo esempio, abbiamo modificato il testo di un tag `<code>` e Crowdin se ne è accorto.
|
||||
|
||||
> [!WARNING] Hai la possibilità di salvare una traduzione anche se ci sono degli errori. Se lo fai usando il pulsante "Save Anyway" (Salva comunque), dovresti anche taggare un proofreader o un project managet e spiegare perché il messaggio QA dovrebbe essere ignorato in questo caso.
|
||||
> [!WARNING] You have the option to save a translation in spite of errors. If you do, by clicking "Save Anyway", you should also tag a proofreader or project manager and explain why the QA message needs to be ignored in this case.
|
||||
|
||||
## Buone pratiche per le traduzioni
|
||||
## Translation Best Practices
|
||||
|
||||
Segui queste linee guida per assicurati che le nostre traduzioni siano il più possibile accurate:
|
||||
|
||||
@@ -306,4 +310,4 @@ Segui queste linee guida per assicurati che le nostre traduzioni siano il più p
|
||||
- Non inserire contenuto aggiuntivo. Se pensi che una sfida richieda delle modifiche nel testo o informazioni aggiuntive dovresti proporre i cambiamenti tramite una issue su GitHub o una pull request che modifica i file inglesi.
|
||||
- Non cambiare l'ordine del contenuto.
|
||||
|
||||
Se hai domande, scrivi nella [chat room per i contributori](https://discord.gg/PRyKn3Vbay) e saremo lieti di assisterti.
|
||||
If you have any questions, feel free to reach out to us in our [Discord](https://discord.gg/PRyKn3Vbay) and we will be happy to assist you.
|
||||
|
||||
@@ -22,22 +22,31 @@ Puoi aiutare ad espandere e migliorare il curriculum. Puoi anche aggiornare le u
|
||||
|
||||
Stiamo traducendo freeCodeCamp.org nelle maggiori lingue del mondo.
|
||||
|
||||
Le certificazioni sono già live in alcune lingue principali come [cinese (中文)](https://chinese.freecodecamp.org/learn), [spagnolo (Español)](https://www.freecodecamp.org/espanol/learn), [italiano](https://www.freecodecamp.org/italian/learn), [portoghese (Português)](https://www.freecodecamp.org/portuguese/learn). Ti raccomandiamo di leggere [questo annuncio](https://www.freecodecamp.org/news/world-language-translation-effort) e di condividerlo con i tuoi amici per coinvolgerli in questa iniziativa.
|
||||
Certifications are already live in some major world languages like below:
|
||||
|
||||
**Se sei interessato a tradurre qui trovi [ come tradurre le risorse di freeCodeCamp](how-to-translate-files.md).**
|
||||
- [Chinese (中文)](https://chinese.freecodecamp.org/learn)
|
||||
- [Spanish (Español)](https://www.freecodecamp.org/espanol/learn)
|
||||
- [Italian (Italiano)](https://www.freecodecamp.org/italian/learn)
|
||||
- [Portuguese (Português)](https://www.freecodecamp.org/portuguese/learn)
|
||||
- [Ukrainian (Українська)](https://www.freecodecamp.org/ukrainian/learn)
|
||||
- [Japanese (日本語)](https://www.freecodecamp.org/japanese/learn)
|
||||
|
||||
We encourage you to read the [announcement here](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/) and share it with your friends to get them excited about this.
|
||||
|
||||
**If you're interested in translating, here's [how to translate freeCodeCamp's resources](how-to-translate-files.md).**
|
||||
|
||||
## Piattaforma di apprendimento
|
||||
|
||||
la nostra piattaforma di apprendimento è basata su un moderno stack JavaScript. Ha vari componenti, strumenti e librerie. Queste includono Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, ecc.
|
||||
Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more.
|
||||
|
||||
In generale, abbiamo un server API basato su Node.js, un set di applicazioni client basate su React, script di testing per valutare i progetti creati dai camper, e altro. Se vuoi contribuire attivamente alla piattaforma di apprendimento, ti raccomandiamo di familiarizzare con questi strumenti.
|
||||
Broadly, we have a Node.js based API server, a set of React-based client applications, testing scripts to evaluate camper-submitted curriculum projects, and more. If you want to productively contribute to the learning platform, we recommend some familiarity with these tools.
|
||||
|
||||
Se vuoi aiutarci a migliorare il codice sorgente...
|
||||
If you want to help us improve our codebase...
|
||||
|
||||
**Puoi anche usare Gitpod, una piattaforma gratuita che avvia un ambiente di sviluppo pronto per l'uso con freeCodeCamp nel tuo browser.**
|
||||
**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.**
|
||||
|
||||
[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
|
||||
[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
|
||||
|
||||
Oppure puoi...
|
||||
Or you can...
|
||||
|
||||
**[Fai il build di freeCodeCamp localmente ](how-to-setup-freecodecamp-locally.md).**
|
||||
**[Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.**
|
||||
|
||||
@@ -10,7 +10,7 @@ freeCodeCamp は、モダンな JavaScript スタック上で動作します。
|
||||
|
||||
はい。翻訳プラットフォームで有効になっている 30 以上の言語を貢献できます。
|
||||
|
||||
ユーザーが行った翻訳が既に存在する言語もあります。 freeCodeCamp を世界の主要な言語にローカライズしていく予定です。 詳細については、[お知らせ](https://www.freecodecamp.org/news/world-language-translation-effort) をご覧ください。
|
||||
ユーザーが行った翻訳が既に存在する言語もあります。 freeCodeCamp を世界の主要な言語にローカライズしていく予定です。 You can read all about this in our [announcement here](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/).
|
||||
|
||||
翻訳への貢献にご興味がありましたら、まず [ガイド](how-to-translate-files.md) をお読みください。
|
||||
|
||||
|
||||
@@ -7,16 +7,17 @@
|
||||
- [翻訳を校正する](how-to-proofread-files.md)
|
||||
- **コードのコントリビューション**
|
||||
- [freeCodeCamp のローカル環境を構築する](how-to-setup-freecodecamp-locally.md)
|
||||
- [コードベースのベストプラクティス](codebase-best-practices.md)
|
||||
- [プルリクエストをオープンする](how-to-open-a-pull-request.md)
|
||||
- [コーディングチャレンジに貢献する](how-to-work-on-coding-challenges.md)
|
||||
- [プラクティスプロジェクトに貢献する](how-to-work-on-practice-projects.md)
|
||||
- [CodeRoad のチュートリアルに貢献する](how-to-work-on-tutorials-that-use-coderoad.md)
|
||||
- [ローカライズされたクライアント Web アプリに貢献する](how-to-work-on-localized-client-webapp.md)
|
||||
- [Cypress テストに貢献する](how-to-add-cypress-tests.md)
|
||||
- [ビデオチャレンジに貢献する](how-to-help-with-video-challenges.md)
|
||||
- [ドキュメントに貢献する](how-to-work-on-the-docs-theme.md)
|
||||
- [コンポーネントライブラリに貢献する](how-to-work-on-the-component-library.md)
|
||||
- [Work on mobile app](how-to-setup-freecodecamp-mobile-app-locally.md)
|
||||
- [Follow coding best practices](codebase-best-practices.md)
|
||||
- [Open a pull request](how-to-open-a-pull-request.md)
|
||||
- [Work on coding challenges](how-to-work-on-coding-challenges.md)
|
||||
- [Work on practice projects](how-to-work-on-practice-projects.md)
|
||||
- [Work on tutorials with CodeRoad](how-to-work-on-tutorials-that-use-coderoad.md)
|
||||
- [Work on localized client web app](how-to-work-on-localized-client-webapp.md)
|
||||
- [Work on Cypress tests](how-to-add-cypress-tests.md)
|
||||
- [Work on video challenges](how-to-help-with-video-challenges.md)
|
||||
- [Work on documentation](how-to-work-on-the-docs-theme.md)
|
||||
- [Work on the component library](how-to-work-on-the-component-library.md)
|
||||
- **その他のガイド**
|
||||
- [翻訳をローカルでテストする](how-to-test-translations-locally.md)
|
||||
- [カリキュラムのファイル構造を理解する](curriculum-file-structure.md)
|
||||
|
||||
@@ -104,7 +104,7 @@ npm -v
|
||||
|
||||
これで、freeCodeCamp リポジトリ全体がプロジェクトディレクトリにダウンロードされます。
|
||||
|
||||
注: `--depth=1` は、最新の履歴 / コミットのみでフォークのシャロ―クローンを作成します。
|
||||
注: `--depth=1` は、最新の履歴 / コミットのみでフォークのシャロークローンを作成します。
|
||||
|
||||
## 親からの同期を設定する
|
||||
|
||||
|
||||
@@ -0,0 +1,405 @@
|
||||
Follow this guide for setting up the freeCodeCamp mobile app locally on your system. This is highly recommended if you want to contribute regularly.
|
||||
|
||||
Some of the contribution workflows – like fixing bugs in the codebase – need you to run freeCodeCamp app locally.
|
||||
|
||||
### How to prepare your local machine
|
||||
|
||||
Start by installing the prerequisite software for your operating system.
|
||||
|
||||
#### Prerequisites:
|
||||
|
||||
| Prerequisite | Version | Notes |
|
||||
| --------------------------------- | ------- | ---------------------------------------- |
|
||||
| [Flutter](https://flutter.dev/) | `3.x` | - |
|
||||
| Dart (comes bundled with Flutter) | `2.x` | We use the version bundled with Flutter. |
|
||||
|
||||
> [!ATTENTION] If you have a different version, please install the recommended version. We can only support installation issues for recommended versions.
|
||||
|
||||
If Flutter is already installed on your machine, run the following commands to validate the versions:
|
||||
|
||||
```console
|
||||
flutter --version
|
||||
dart --version
|
||||
```
|
||||
|
||||
> [!TIP] We highly recommend updating to the latest stable releases of the software listed above.
|
||||
|
||||
Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once.
|
||||
|
||||
##### Follow these steps to get your development environment ready:
|
||||
|
||||
1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated.
|
||||
|
||||
2. Setup [Android Studio](https://developer.android.com/studio) and [Android Emulators](https://developer.android.com/studio/run/managing-avds) with the latest released Android version. We recommend using the Pixel 3a XL and Nexus One(for emulating smaller screens).
|
||||
|
||||
3. (Optional for MacOS) Setup Xcode and iOS Simulator with the latest released iOS version.
|
||||
|
||||
4. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub.
|
||||
|
||||
5. Install a code editor of your choice.
|
||||
|
||||
We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or Android Studio. We also recommend installing the official [extensions](https://docs.flutter.dev/get-started/editor?tab=vscode)
|
||||
|
||||
## Fork the repository on GitHub
|
||||
|
||||
[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of the repository (a.k.a _repo_) on GitHub.
|
||||
|
||||
This is essential, as it allows you to work on your own copy of freeCodeCamp mobile app on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR).
|
||||
|
||||
> [!TIP] The main repository at `https://github.com/freeCodeCamp/mobile` is often referred to as the `upstream` repository.
|
||||
>
|
||||
> Your fork at `https://github.com/YOUR_USER_NAME/mobile` is often referred to as the `origin` repository. `YOUR_USER_NAME` would be replaced with your GitHub username.
|
||||
|
||||
**Follow these steps to fork the `https://github.com/freeCodeCamp/mobile` repository:**
|
||||
|
||||
1. Go to the freeCodeCamp mobile repository on GitHub: <https://github.com/freeCodeCamp/mobile>
|
||||
|
||||
2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/))
|
||||
|
||||
3. After the repository has been forked, you will be taken to your copy of the repository at `https://github.com/YOUR_USER_NAME/mobile` (`YOUR_USER_NAME` would be replaced with your GitHub user name.)
|
||||
|
||||
## Clone your fork from GitHub
|
||||
|
||||
[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/mobile`. (`YOUR_USER_NAME` would be replaced with your GitHub user name.)
|
||||
|
||||
Run these commands on your local machine:
|
||||
|
||||
1. Open a Terminal / Command Prompt / Shell in your projects directory
|
||||
|
||||
_i.e.: `/yourprojectsdirectory/`_
|
||||
|
||||
2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username
|
||||
|
||||
```console
|
||||
git clone --depth=1 https://github.com/YOUR_USER_NAME/mobile.git
|
||||
```
|
||||
|
||||
This will download the entire freeCodeCamp mobile repository to your projects directory.
|
||||
|
||||
Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit.
|
||||
|
||||
## Set up syncing from parent
|
||||
|
||||
Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository.
|
||||
|
||||
[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository.
|
||||
|
||||
You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly.
|
||||
|
||||
1. Change directory to the new `mobile` directory:
|
||||
|
||||
```console
|
||||
cd mobile
|
||||
```
|
||||
|
||||
2. Add a remote reference to the main freeCodeCamp mobile repository:
|
||||
|
||||
```console
|
||||
git remote add upstream https://github.com/freeCodeCamp/mobile.git
|
||||
```
|
||||
|
||||
3. Ensure the configuration looks correct:
|
||||
|
||||
```console
|
||||
git remote -v
|
||||
```
|
||||
|
||||
The output should look something like below (replacing `YOUR_USER_NAME` with your GitHub username):
|
||||
|
||||
```console
|
||||
origin https://github.com/YOUR_USER_NAME/mobile.git (fetch)
|
||||
origin https://github.com/YOUR_USER_NAME/mobile.git (push)
|
||||
upstream https://github.com/freeCodeCamp/mobile.git (fetch)
|
||||
upstream https://github.com/freeCodeCamp/mobile.git (push)
|
||||
```
|
||||
|
||||
## Running freeCodeCamp mobile app locally
|
||||
|
||||
Now that you have a local copy of the mobile app, you can follow these instructions to run it locally.
|
||||
|
||||
If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/mobile/issues) page for a solution and report the issue if it has not yet been reported.
|
||||
|
||||
And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our chat server](https://discord.gg/PRyKn3Vbay).
|
||||
|
||||
> [!NOTE] The `mobile` directory contains two folders ie. `mobile-api` and `mobile-app`. `mobile-api` contains the API code used for serving the podcasts. `mobile-app` contains the Flutter app which is where you should be when you follow the below steps.
|
||||
|
||||
### Configuring dependencies
|
||||
|
||||
#### Step 1: Set up the environment variable file
|
||||
|
||||
The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step. Remember to change the directory to `mobile-app` before running the following commands.
|
||||
|
||||
```console
|
||||
# Create a copy of the "sample.env" and name it ".env".
|
||||
# Populate it with the necessary API keys and secrets:
|
||||
```
|
||||
|
||||
<!-- tabs:start -->
|
||||
|
||||
#### **macOS/Linux**
|
||||
|
||||
```console
|
||||
cp sample.env .env
|
||||
```
|
||||
|
||||
#### **Windows**
|
||||
|
||||
```console
|
||||
copy sample.env .env
|
||||
```
|
||||
|
||||
<!-- tabs:end -->
|
||||
|
||||
The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is.
|
||||
|
||||
#### Step 2: Install dependencies
|
||||
|
||||
This step will install the dependencies required for the application to run:
|
||||
|
||||
```console
|
||||
flutter pub get
|
||||
```
|
||||
|
||||
#### Step 3: Start the freeCodeCamp mobile app
|
||||
|
||||
Start the emulator of your choice(Android or iOS) and wait for the bootup process to complete.
|
||||
|
||||
You can now start the app by running the following command:
|
||||
|
||||
```console
|
||||
flutter run
|
||||
```
|
||||
|
||||
> [!TIP] If you're using VSCode or Android Studio then you can easily start the app without having to execute any terminal commands. More information [here](https://docs.flutter.dev/get-started/test-drive).
|
||||
|
||||
## Making changes locally
|
||||
|
||||
You can now make changes to files and commit your changes to your local clone of your fork.
|
||||
|
||||
Follow these steps:
|
||||
|
||||
1. Validate that you are on the `main` branch:
|
||||
|
||||
```console
|
||||
git status
|
||||
```
|
||||
|
||||
You should get an output like this:
|
||||
|
||||
```console
|
||||
On branch main
|
||||
Your branch is up-to-date with 'origin/main'.
|
||||
|
||||
nothing to commit, working directory clean
|
||||
```
|
||||
|
||||
If you are not on main or your working directory is not clean, resolve any outstanding files/commits and checkout `main`:
|
||||
|
||||
```console
|
||||
git checkout main
|
||||
```
|
||||
|
||||
2. Sync the latest changes from the upstream `main` branch to your local main branch:
|
||||
|
||||
> [!WARNING] If you have any outstanding pull request that you made from the `main` branch of your fork, you will lose them at the end of this step.
|
||||
>
|
||||
> You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `main`.
|
||||
|
||||
This step **will sync the latest changes** from the main repository of freeCodeCamp mobile. It is important that you rebase your branch on top of the latest `upstream/main` as often as possible to avoid conflicts later.
|
||||
|
||||
Update your local copy of the freeCodeCamp mobile upstream repository:
|
||||
|
||||
```console
|
||||
git fetch upstream
|
||||
```
|
||||
|
||||
Hard reset your main branch with the freeCodeCamp mobile main:
|
||||
|
||||
```console
|
||||
git reset --hard upstream/main
|
||||
```
|
||||
|
||||
Push your main branch to your origin to have a clean history on your fork on GitHub:
|
||||
|
||||
```console
|
||||
git push origin main --force
|
||||
```
|
||||
|
||||
You can validate your current main matches the upstream/main by performing a diff:
|
||||
|
||||
```console
|
||||
git diff upstream/main
|
||||
```
|
||||
|
||||
The resulting output should be empty.
|
||||
|
||||
3. Create a fresh new branch:
|
||||
|
||||
Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `main`. This will soil your copy of freeCodeCamp mobile and you may have to start over with a fresh clone or fork.
|
||||
|
||||
Check that you are on `main` as explained previously, and branch off from there:
|
||||
|
||||
```console
|
||||
git checkout -b fix/update-guide-for-xyz
|
||||
```
|
||||
|
||||
Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique.
|
||||
|
||||
Some examples of good branch names are:
|
||||
|
||||
```md
|
||||
fix/update-challenges-for-react
|
||||
fix/update-guide-for-html-css
|
||||
fix/platform-bug-sign-in-issues
|
||||
feat/add-guide-article-for-javascript
|
||||
translate/add-spanish-basic-html
|
||||
```
|
||||
|
||||
4. Edit pages and work on code in your favorite text editor.
|
||||
|
||||
5. Once you are happy with the changes you should optionally run the mobile app locally to preview the changes.
|
||||
|
||||
6. Make sure you fix any errors and check the formatting of your changes.
|
||||
|
||||
7. Check and confirm the files you are updating:
|
||||
|
||||
```console
|
||||
git status
|
||||
```
|
||||
|
||||
This should show a list of `unstaged` files that you have edited.
|
||||
|
||||
```console
|
||||
On branch feat/documentation
|
||||
Your branch is up to date with 'upstream/feat/documentation'.
|
||||
|
||||
Changes were not staged for commit:
|
||||
(use "git add/rm <file>..." to update what will be committed)
|
||||
(use "git checkout -- <file>..." to discard changes in the working directory)
|
||||
|
||||
modified: README.md
|
||||
modified: mobile-app/lib/main.dart
|
||||
...
|
||||
```
|
||||
|
||||
8. Stage the changes and make a commit:
|
||||
|
||||
In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed.
|
||||
|
||||
```console
|
||||
git add path/to/my/changed/file.ext
|
||||
```
|
||||
|
||||
Or you can add all the `unstaged` files to the staging area:
|
||||
|
||||
```console
|
||||
git add .
|
||||
```
|
||||
|
||||
Only the files that were moved to the staging area will be added when you make a commit.
|
||||
|
||||
```console
|
||||
git status
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```console
|
||||
On branch feat/documentation
|
||||
Your branch is up to date with 'upstream/feat/documentation'.
|
||||
|
||||
Changes to be committed:
|
||||
(use "git reset HEAD <file>..." to unstage)
|
||||
|
||||
modified: README.md
|
||||
modified: mobile-app/lib/main.dart
|
||||
```
|
||||
|
||||
Now, you can commit your changes with a short message like so:
|
||||
|
||||
```console
|
||||
git commit -m "fix: my short commit message"
|
||||
```
|
||||
|
||||
Some examples:
|
||||
|
||||
```md
|
||||
fix: update guide article for Java - for loop
|
||||
feat: add guide article for alexa skills
|
||||
```
|
||||
|
||||
Optional:
|
||||
|
||||
We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices.
|
||||
|
||||
Some examples of conventional commit messages are:
|
||||
|
||||
```md
|
||||
fix: update HTML guide article
|
||||
fix: update build scripts for Travis-CI
|
||||
feat: add article for JavaScript hoisting
|
||||
docs: update contributing guidelines
|
||||
```
|
||||
|
||||
Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message.
|
||||
|
||||
This does not take any additional time than an unconventional message like 'update file' or 'add index.md'
|
||||
|
||||
You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits).
|
||||
|
||||
9. If you realize that you need to edit a file or update the commit message after making a commit you can do so after editing the files with:
|
||||
|
||||
```console
|
||||
git commit --amend
|
||||
```
|
||||
|
||||
This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description.
|
||||
|
||||
10. Next, you can push your changes to your fork:
|
||||
|
||||
```console
|
||||
git push origin branch/name-here
|
||||
```
|
||||
|
||||
## Proposing a Pull Request (PR)
|
||||
|
||||
After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md).
|
||||
|
||||
<!-- ## Quick commands reference - NEED TO DISCUSS ABOUT THIS
|
||||
|
||||
A quick reference to the commands that you will need when working locally.
|
||||
|
||||
| command | description |
|
||||
| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
|
||||
| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. |
|
||||
| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. | -->
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Issues with installing the recommended prerequisites
|
||||
|
||||
We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later, and Windows 10 (with WSL2).
|
||||
|
||||
It is recommended to research your specific issue on resources such as Google, Stack Overflow, and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query.
|
||||
|
||||
If you are on a different OS and/or are still running into issues, see [getting help](#getting-help).
|
||||
|
||||
### Issues with the UI, build errors, etc.
|
||||
|
||||
If you face issues with the UI, or builds errors a cleanup can be useful:
|
||||
|
||||
```console
|
||||
flutter clean
|
||||
```
|
||||
|
||||
### Issues installing dependencies
|
||||
|
||||
If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources.
|
||||
|
||||
Be patient as the first time setup can take a while depending on your network bandwidth.
|
||||
|
||||
## Getting Help
|
||||
|
||||
If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [the contributors chat room](https://discord.gg/PRyKn3Vbay).
|
||||
|
||||
There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution.
|
||||
@@ -1,32 +1,18 @@
|
||||
# freeCodeCamp のリソースを翻訳する方法
|
||||
|
||||
あなたの言語に関わらず、学習リソースを提供することが私達の夢です。 この大規模な取り組みを支援するため、私達のオープンソースのコードベースとカリキュラムをローカライズ支援ツール [Crowdin](https://crowdin.com/) と統合しました。
|
||||
|
||||
翻訳のワークフローは大きく二つに分かれています。
|
||||
|
||||
- カリキュラム、ドキュメント、UI 要素 (ボタン、ラベル等) の**翻訳**
|
||||
|
||||
[私達の翻訳プラットフォーム](https://translate.freecodecamp.org)にサインアップすると、翻訳者として 30 種類以上の言語の翻訳に貢献することができるようになります。
|
||||
|
||||
- 上記全ての翻訳の**校正**
|
||||
|
||||
校正者は、コミュニティによって提供された翻訳のトーンが統一されていること、誤字脱字等の一般的な問題がないことを確認します。 要するに、翻訳が高品質であることを保証します。 理由があって私達は機械翻訳を使用していません。
|
||||
|
||||
> [!WARNING] 現在、GitHub を使用してファイルを直接翻訳することはなくなりました。以前コントリビューターだった方は、代わりに[翻訳プラットフォーム](https://translate.freecodecamp.org/)を使用してください。
|
||||
|
||||
## コントリビューションの心構え
|
||||
|
||||
> freeCodeCamp ローカリゼーションロードマップ – スピード制限はありません。
|
||||
> The freeCodeCamp Localization Roadmap – There Are No Speed Limits
|
||||
|
||||
あなたはいつでも、好きなだけ翻訳することができます。 問題となるのは、あなたがボランティアの翻訳者としてどれだけの時間とエネルギーを費やしても構わないと考えているかだけです。
|
||||
You can translate as much as you want, when you want. It's only a matter of how much time and energy you are willing to invest as a volunteer translator.
|
||||
|
||||
以下のことをご了承ください:
|
||||
We just ask that you understand the following:
|
||||
|
||||
1. **翻訳はチームでの活動です。**
|
||||
|
||||
freeCodeCamp のリソースの翻訳は、コントリビューターとして最も楽しくやりがいのある経験の一つであり、あなたと同じ言語を話す友人や同僚を巻き込むとよりうまくいくでしょう。
|
||||
|
||||
実際の翻訳作業を始める前に、[コミュニティフォーラム](https://forum.freecodecamp.org/c/contributors/3)や [コントリビューターチャット](https://discord.gg/PRyKn3Vbay)に参加して、翻訳に参加したいことを仲間の翻訳者たちに伝えることをお勧めします。 翻訳は Crowdin によって貢献しやすくなっていますが、それでも大変な作業です。
|
||||
You can start by reading [this announcement](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/). We recommend joining [our community forum](https://forum.freecodecamp.org/c/contributors/3) and [Discord chat server](https://discord.gg/PRyKn3Vbay) with your friends and showing your interest before starting off with translations. Crowdin and other tools make it easy to contribute translations, but it's still a lot of work.
|
||||
|
||||
私達はあなたが楽しんで貢献できて、燃え尽きたり興味を失ったりしないよう望んでいます。
|
||||
|
||||
@@ -38,7 +24,7 @@
|
||||
|
||||
freeCodeCamp.org はいつも通りこれらを無料で提供することをお約束しますが、最も必要としている人々に優先的にリソースを割り当てる必要があります。 私達が最も避けたいのは、翻訳の活動が停止して内容が古くなってしまい、その言語のサーバーをシャットダウンしなければならなくなることです。
|
||||
|
||||
ある言語でカリキュラムの少なくとも 2、3 の認定講座の翻訳が完了すると、私達はその言語を [`/learn`](https://www.freecodecamp.org/learn) にデプロイする作業を始めることができます。同時に残りの認定講座の翻訳を続けることができます。
|
||||
For translating the curriculum, once a language reaches at least a few certifications we can begin deploying the language live on [`/learn`](https://www.freecodecamp.org/learn), while you continue to translate the remaining certifications.
|
||||
|
||||
例えば、新しい言語を初めて公開するときには、少なくとも全てのフロントエンドの認定講座を揃えてデプロイしたいと考えています。
|
||||
|
||||
@@ -54,9 +40,27 @@
|
||||
|
||||
興味を持ってコミットできる少人数 (最低 4、5 人) のグループが集まったら、電話会議でお話させていただきます。 そこで詳細と、いくつかのツールやプロセスについてご説明します。
|
||||
|
||||
## 翻訳を始めるには
|
||||
## Overview of Crowdin
|
||||
|
||||
まず、[コントリビューターチャット](https://discord.gg/PRyKn3Vbay)で挨拶をしましょう。 私達はここでリソースの翻訳に関する最新情報を投稿したり、多くの質問に答えたりしています。
|
||||
It's our dream to provide you with the resources to learn, no matter the world language you speak. To help us with this massive effort, we have integrated our open-source code-base & curriculum with [Crowdin](https://crowdin.com/) - A tool to help us localize our code-base.
|
||||
|
||||
> [!NOTE] We use a different tool and workflow for translating [news articles](https://www.freecodecamp.org/news). If you are interested in translating articles, read [this announcement](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/) and reach out to your Language Lead.
|
||||
|
||||
The translation workflow is split into two main activities:
|
||||
|
||||
- カリキュラム、ドキュメント、UI 要素 (ボタン、ラベル等) の**翻訳**
|
||||
|
||||
[私達の翻訳プラットフォーム](https://translate.freecodecamp.org)にサインアップすると、翻訳者として 30 種類以上の言語の翻訳に貢献することができるようになります。
|
||||
|
||||
- 上記全ての翻訳の**校正**
|
||||
|
||||
校正者は、コミュニティによって提供された翻訳のトーンが統一されていること、誤字脱字等の一般的な問題がないことを確認します。 要するに、翻訳が高品質であることを保証します。 理由があって私達は機械翻訳を使用していません。
|
||||
|
||||
> [!WARNING] We are no longer using GitHub to translate files directly, if you are a returning contributor head to our [translation platform](https://translate.freecodecamp.org/) instead.
|
||||
|
||||
## Getting started
|
||||
|
||||
First, make sure you come say "Hi" in our [Discord](https://discord.gg/PRyKn3Vbay). 私達はここでリソースの翻訳に関する最新情報を投稿したり、多くの質問に答えたりしています。
|
||||
|
||||
次に、私達の[翻訳プラットフォーム](https://translate.freecodecamp.org/)にアクセスし、ログインしてください (初めての場合、アカウントを作成する必要があります)。
|
||||
|
||||
@@ -64,7 +68,7 @@
|
||||
|
||||
それでは翻訳をお楽しみください!
|
||||
|
||||
## プロジェクトとファイルを選択する
|
||||
## Select a Project and File
|
||||
|
||||
翻訳プラットフォームにアクセスすると、翻訳可能な「プロジェクト」が複数表示されます。
|
||||
|
||||
@@ -84,9 +88,9 @@
|
||||
|
||||
作業するファイルを選択すると、Crowdin のエディター画面が表示されます。
|
||||
|
||||
> [!NOTE] エディター画面を開いた後、設定アイコン (歯車のアイコン) をクリックし、「HTML tags displaying」の設定を「SHOW」に変更する必要があります。 これで、`<0></0>` ではなく `<code></code>` などのタグが表示されるようになります。
|
||||
> [!NOTE] When the editor view opens, you will need to click the settings icon (shown as a gear) and switch the 'HTML tags displaying' setting to 'SHOW'. This will ensure you can see tags such as `<code></code>` instead of `<0></0>`.
|
||||
|
||||
## カリキュラムを翻訳する
|
||||
## Translate Curriculum
|
||||
|
||||

|
||||
|
||||
@@ -103,19 +107,19 @@ Crowdin はドキュメントを翻訳可能な文字列 (通常は文単位)
|
||||
9. こちらはコメントウィンドウです。 もし特定の文字列に対し疑問や懸念があれば、ここにコメントを残して他の翻訳者に見てもらうことができます。
|
||||
10. この 2 つのボタンで左側 (ドキュメント部分) と右側 (コメント部分) を隠すことができます。
|
||||
|
||||
> [!NOTE] もし翻訳が含まれている隠し文字列を見つけたら [「contributors」チャットルーム](https://discord.gg/PRyKn3Vbay)にてお知らせください。該当箇所をメモリーから削除します。
|
||||
> [!NOTE] If you see a hidden string that includes translations, please notify us in the [Discord](https://discord.gg/PRyKn3Vbay) so we can remove the translation from memory.
|
||||
|
||||
文字列の翻訳が終わったら、`Save` ボタンを押して翻訳を Crowdin に保存してください。 これで他のコントリビューターが翻訳内容に対し投票したり、校正者が承認したりできるようになります。
|
||||
|
||||
翻訳を行う文字列の数に制限はありません。1 つのファイルをすべて翻訳し終わったあとや、新しい翻訳を提案する際に追加で必要になる手順もありません。 `Save` ボタンをクリックするだけで、翻訳を保存できます。
|
||||
|
||||
> [!NOTE] もし英語の原文ファイルの中に不正確な内容を見つけた場合、翻訳の中で修正することはお控えください。 代わりに、不正確な点があることをその文字列に対するコメントでお知らせいただくか、GitHub issue を作成してください。
|
||||
> [!NOTE] If you see something in the English source file that is inaccurate or incorrect, please do not fix it through the translation flow. Instead, leave a comment on the string to notify us that there is a discrepancy, or create a GitHub issue.
|
||||
|
||||
## ドキュメントを翻訳する
|
||||
## Translate Documentation
|
||||
|
||||
コントリビューションドキュメントの翻訳も、カリキュラムのファイルの翻訳と同じような流れです。
|
||||
|
||||
> [!NOTE] コントリビューションドキュメントは `docsify` によって提供されており、このようなメッセージボックス用に特別な構文解析機能があります。 `[!NOTE]`、`[!WARNING]` または `[!TIP]` などで始まる文字列を見かけたら、これらの単語は翻訳しないようにしてください。
|
||||
> [!NOTE] Our contributing documentation is powered by `docsify`, and we have special parsing for message boxes like this one. If you see strings that start with `[!NOTE]`, `[!WARNING]`, or `[!TIP]`, these words should NOT be translated.
|
||||
|
||||
### 内部リンクのあるドキュメントを翻訳する
|
||||
|
||||
@@ -153,7 +157,7 @@ Crowdin はドキュメントを翻訳可能な文字列 (通常は文単位)
|
||||
|
||||
[ドキュメントの内部リンクについて詳しくはこちら](how-to-work-on-the-docs-theme.md#内部リンクを作成する)を参照してください。
|
||||
|
||||
## LearnToCode RPG の翻訳
|
||||
## Translate the LearnToCode RPG
|
||||
|
||||
LearnToCode RPG は Ren'Py 上で動作します。Ren'Py では翻訳の際に独自の構文が使用されます ([Ren'Py の Text のドキュメント](https://www.renpy.org/doc/html/text.html) を参照してください)。
|
||||
|
||||
@@ -278,7 +282,7 @@ I better take notes so I can learn more about it."
|
||||
我最好做笔记,这样我可以学习更多东西。"
|
||||
```
|
||||
|
||||
## 翻訳を評価する
|
||||
## Rate Translations
|
||||
|
||||
Crowdin では投稿済みの翻訳案を評価することができます。 翻訳内容を保存しようとした際、同じ翻訳は保存できないというメッセージが表示されることがあるかもしれません。これは、他のコントリビューターがすでに全く同じ翻訳を提案していることを意味しています。 既存の翻訳に賛成であれば `+` ボタンをクリックして賛成票を投じてください。
|
||||
|
||||
@@ -286,7 +290,7 @@ Crowdin では投稿済みの翻訳案を評価することができます。
|
||||
|
||||
Crowdin はそれらの投票結果を元に各翻訳案の点数を算出します。この点数は校正チームが最適な翻訳文を選ぶための判断材料となります。
|
||||
|
||||
## 品質保証チェック
|
||||
## Quality Assurance Checks
|
||||
|
||||
翻訳内容が可能な限り正確であることを確認し、校正チームによる翻訳文レビューに役立てるため、品質保証ステップを設けています。
|
||||
|
||||
@@ -296,9 +300,9 @@ Crowdin はそれらの投票結果を元に各翻訳案の点数を算出しま
|
||||
|
||||
このメッセージは、Crowdin の品質保証システムが投稿内容に間違いが含まれている可能性があると判断した場合に表示されます。 上の例では `<code>` タグ内のテキストが変更されており、Crowdin がそれを検出しました。
|
||||
|
||||
> [!WARNING] エラーが検出されても翻訳内容を保存することは可能です。 「Save Anyway」をクリックして保存できますが、その場合は校正者かプロジェクトマネージャー宛てにコメントし、なぜ品質保証メッセージを無視する必要があったかを説明するようにしてください。
|
||||
> [!WARNING] You have the option to save a translation in spite of errors. If you do, by clicking "Save Anyway", you should also tag a proofreader or project manager and explain why the QA message needs to be ignored in this case.
|
||||
|
||||
## 翻訳のベストプラクティス
|
||||
## Translation Best Practices
|
||||
|
||||
翻訳をできる限り正確なものとするため、以下のガイドラインに従って下さい。
|
||||
|
||||
@@ -306,4 +310,4 @@ Crowdin はそれらの投票結果を元に各翻訳案の点数を算出しま
|
||||
- コンテンツを追加しないで下さい。 チャレンジを翻訳する際、テキスト内容の変更や追加の情報が必要だと感じた場合は、GitHub Issue を通して提案するか、提案内容を反映した英語のファイルをプルリクエストして下さい。
|
||||
- コンテンツの順番を変えないで下さい。
|
||||
|
||||
質問があれば、[コントリビューターチャットルーム](https://discord.gg/PRyKn3Vbay) にてお気軽にお尋ねください。喜んでサポートいたします。
|
||||
If you have any questions, feel free to reach out to us in our [Discord](https://discord.gg/PRyKn3Vbay) and we will be happy to assist you.
|
||||
|
||||
@@ -22,22 +22,31 @@
|
||||
|
||||
私たちは freeCodeCamp.org を世界中の主要言語へローカライズしています。
|
||||
|
||||
[中国語 (中文)](https://chinese.freecodecamp.org/learn)、[スペイン語 (Español)](https://www.freecodecamp.org/espanol/learn)、[イタリア語 (Italiano)](https://www.freecodecamp.org/italian/learn)、[ポルトガル語 (Português)](https://www.freecodecamp.org/portuguese/learn) のような世界の主要言語の認定講座が既に公開されています。 [こちらのお知らせ](https://www.freecodecamp.org/news/world-language-translation-effort)を読んで、ぜひ周囲の人にも共有してください。
|
||||
Certifications are already live in some major world languages like below:
|
||||
|
||||
**翻訳にご興味があれば、[freeCodeCamp リソースを翻訳する方法](how-to-translate-files.md) をご覧ください。**
|
||||
- [Chinese (中文)](https://chinese.freecodecamp.org/learn)
|
||||
- [Spanish (Español)](https://www.freecodecamp.org/espanol/learn)
|
||||
- [Italian (Italiano)](https://www.freecodecamp.org/italian/learn)
|
||||
- [Portuguese (Português)](https://www.freecodecamp.org/portuguese/learn)
|
||||
- [Ukrainian (Українська)](https://www.freecodecamp.org/ukrainian/learn)
|
||||
- [Japanese (日本語)](https://www.freecodecamp.org/japanese/learn)
|
||||
|
||||
We encourage you to read the [announcement here](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/) and share it with your friends to get them excited about this.
|
||||
|
||||
**If you're interested in translating, here's [how to translate freeCodeCamp's resources](how-to-translate-files.md).**
|
||||
|
||||
## 学習プラットフォーム
|
||||
|
||||
学習プラットフォームは、最新の JavaScript スタックで動作しています。 様々なコンポーネント、ツール、ライブラリがあります。 Node.js、MongoDB、OAuth 2.0、React、Gatsby、Webpackなどが含まれています。
|
||||
Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more.
|
||||
|
||||
Node.js ベースの API サーバー、React ベースのクライアントアプリケーションのセット、キャンパーが提出したカリキュラムプロジェクトを評価するためのスクリプトテストなどがあります。 学習プラットフォームに生産的に貢献したい場合は、これらのツールを熟知している方が良いでしょう。
|
||||
Broadly, we have a Node.js based API server, a set of React-based client applications, testing scripts to evaluate camper-submitted curriculum projects, and more. If you want to productively contribute to the learning platform, we recommend some familiarity with these tools.
|
||||
|
||||
コードベースの改善にご協力いただけますか?
|
||||
If you want to help us improve our codebase...
|
||||
|
||||
**無料のオンライン開発環境である Gitpod を使用して、ブラウザで freeCodeCamp 用のコード対応開発環境を開始することができます。**
|
||||
**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.**
|
||||
|
||||
[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
|
||||
[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
|
||||
|
||||
あるいは
|
||||
Or you can...
|
||||
|
||||
**[ローカルマシンに freeCodeCamp の開発環境を構築](how-to-setup-freecodecamp-locally.md)することができます。**
|
||||
**[Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.**
|
||||
|
||||
@@ -10,7 +10,7 @@ O freeCodeCamp é executado em uma stack de JavaScript moderna. Se estiver inter
|
||||
|
||||
Sim. Você pode contribuir com qualquer um dos mais de 30 idiomas disponíveis em nossa plataforma de tradução.
|
||||
|
||||
Temos traduções enviadas por usuários ao vivo em alguns idiomas. Pretendemos traduzir o freeCodeCamp para vários idiomas. Você pode ler mais sobre isso em nosso [anúncio aqui](https://www.freecodecamp.org/news/world-language-translation-effort).
|
||||
Temos traduções enviadas por usuários ao vivo em alguns idiomas. Pretendemos traduzir o freeCodeCamp para vários idiomas. You can read all about this in our [announcement here](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/).
|
||||
|
||||
Se você está interessado em contribuir com as traduções, certifique-se de [ler este guia](how-to-translate-files.md) primeiro.
|
||||
|
||||
|
||||
@@ -7,16 +7,17 @@
|
||||
- [Ajude na revisão de traduções](how-to-proofread-files.md)
|
||||
- **Contribuição de código**
|
||||
- [Configure o freeCodeCamp localmente](how-to-setup-freecodecamp-locally.md)
|
||||
- [Seguir as melhores práticas de programação](codebase-best-practices.md)
|
||||
- [Abrir um pull request](how-to-open-a-pull-request.md)
|
||||
- [Trabalhar em desafios de programação](how-to-work-on-coding-challenges.md)
|
||||
- [Trabalhar em projetos práticos](how-to-work-on-practice-projects.md)
|
||||
- [Trabalhar nos tutoriais com o CodeRoad](how-to-work-on-tutorials-that-use-coderoad.md)
|
||||
- [Ajudar na tradução da aplicação web](how-to-work-on-localized-client-webapp.md)
|
||||
- [Trabalhar em testes do Cypress](how-to-add-cypress-tests.md)
|
||||
- [Trabalhar nos desafios em vídeo](how-to-help-with-video-challenges.md)
|
||||
- [Trabalhar com a documentação](how-to-work-on-the-docs-theme.md)
|
||||
- [Trabalhar na biblioteca de componentes](how-to-work-on-the-component-library.md)
|
||||
- [Work on mobile app](how-to-setup-freecodecamp-mobile-app-locally.md)
|
||||
- [Follow coding best practices](codebase-best-practices.md)
|
||||
- [Open a pull request](how-to-open-a-pull-request.md)
|
||||
- [Work on coding challenges](how-to-work-on-coding-challenges.md)
|
||||
- [Work on practice projects](how-to-work-on-practice-projects.md)
|
||||
- [Work on tutorials with CodeRoad](how-to-work-on-tutorials-that-use-coderoad.md)
|
||||
- [Work on localized client web app](how-to-work-on-localized-client-webapp.md)
|
||||
- [Work on Cypress tests](how-to-add-cypress-tests.md)
|
||||
- [Work on video challenges](how-to-help-with-video-challenges.md)
|
||||
- [Work on documentation](how-to-work-on-the-docs-theme.md)
|
||||
- [Work on the component library](how-to-work-on-the-component-library.md)
|
||||
- **Guias adicionais**
|
||||
- [Testar traduções localmente](how-to-test-translations-locally.md)
|
||||
- [Compreender a estrutura do arquivo do currículo](curriculum-file-structure.md)
|
||||
|
||||
@@ -0,0 +1,405 @@
|
||||
Follow this guide for setting up the freeCodeCamp mobile app locally on your system. This is highly recommended if you want to contribute regularly.
|
||||
|
||||
Some of the contribution workflows – like fixing bugs in the codebase – need you to run freeCodeCamp app locally.
|
||||
|
||||
### How to prepare your local machine
|
||||
|
||||
Start by installing the prerequisite software for your operating system.
|
||||
|
||||
#### Prerequisites:
|
||||
|
||||
| Prerequisite | Version | Notes |
|
||||
| --------------------------------- | ------- | ---------------------------------------- |
|
||||
| [Flutter](https://flutter.dev/) | `3.x` | - |
|
||||
| Dart (comes bundled with Flutter) | `2.x` | We use the version bundled with Flutter. |
|
||||
|
||||
> [!ATTENTION] If you have a different version, please install the recommended version. We can only support installation issues for recommended versions.
|
||||
|
||||
If Flutter is already installed on your machine, run the following commands to validate the versions:
|
||||
|
||||
```console
|
||||
flutter --version
|
||||
dart --version
|
||||
```
|
||||
|
||||
> [!TIP] We highly recommend updating to the latest stable releases of the software listed above.
|
||||
|
||||
Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once.
|
||||
|
||||
##### Follow these steps to get your development environment ready:
|
||||
|
||||
1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated.
|
||||
|
||||
2. Setup [Android Studio](https://developer.android.com/studio) and [Android Emulators](https://developer.android.com/studio/run/managing-avds) with the latest released Android version. We recommend using the Pixel 3a XL and Nexus One(for emulating smaller screens).
|
||||
|
||||
3. (Optional for MacOS) Setup Xcode and iOS Simulator with the latest released iOS version.
|
||||
|
||||
4. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub.
|
||||
|
||||
5. Install a code editor of your choice.
|
||||
|
||||
We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or Android Studio. We also recommend installing the official [extensions](https://docs.flutter.dev/get-started/editor?tab=vscode)
|
||||
|
||||
## Fork the repository on GitHub
|
||||
|
||||
[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of the repository (a.k.a _repo_) on GitHub.
|
||||
|
||||
This is essential, as it allows you to work on your own copy of freeCodeCamp mobile app on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR).
|
||||
|
||||
> [!TIP] The main repository at `https://github.com/freeCodeCamp/mobile` is often referred to as the `upstream` repository.
|
||||
>
|
||||
> Your fork at `https://github.com/YOUR_USER_NAME/mobile` is often referred to as the `origin` repository. `YOUR_USER_NAME` would be replaced with your GitHub username.
|
||||
|
||||
**Follow these steps to fork the `https://github.com/freeCodeCamp/mobile` repository:**
|
||||
|
||||
1. Go to the freeCodeCamp mobile repository on GitHub: <https://github.com/freeCodeCamp/mobile>
|
||||
|
||||
2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/))
|
||||
|
||||
3. After the repository has been forked, you will be taken to your copy of the repository at `https://github.com/YOUR_USER_NAME/mobile` (`YOUR_USER_NAME` would be replaced with your GitHub user name.)
|
||||
|
||||
## Clone your fork from GitHub
|
||||
|
||||
[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/mobile`. (`YOUR_USER_NAME` would be replaced with your GitHub user name.)
|
||||
|
||||
Run these commands on your local machine:
|
||||
|
||||
1. Open a Terminal / Command Prompt / Shell in your projects directory
|
||||
|
||||
_i.e.: `/yourprojectsdirectory/`_
|
||||
|
||||
2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username
|
||||
|
||||
```console
|
||||
git clone --depth=1 https://github.com/YOUR_USER_NAME/mobile.git
|
||||
```
|
||||
|
||||
This will download the entire freeCodeCamp mobile repository to your projects directory.
|
||||
|
||||
Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit.
|
||||
|
||||
## Set up syncing from parent
|
||||
|
||||
Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository.
|
||||
|
||||
[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository.
|
||||
|
||||
You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly.
|
||||
|
||||
1. Change directory to the new `mobile` directory:
|
||||
|
||||
```console
|
||||
cd mobile
|
||||
```
|
||||
|
||||
2. Add a remote reference to the main freeCodeCamp mobile repository:
|
||||
|
||||
```console
|
||||
git remote add upstream https://github.com/freeCodeCamp/mobile.git
|
||||
```
|
||||
|
||||
3. Ensure the configuration looks correct:
|
||||
|
||||
```console
|
||||
git remote -v
|
||||
```
|
||||
|
||||
The output should look something like below (replacing `YOUR_USER_NAME` with your GitHub username):
|
||||
|
||||
```console
|
||||
origin https://github.com/YOUR_USER_NAME/mobile.git (fetch)
|
||||
origin https://github.com/YOUR_USER_NAME/mobile.git (push)
|
||||
upstream https://github.com/freeCodeCamp/mobile.git (fetch)
|
||||
upstream https://github.com/freeCodeCamp/mobile.git (push)
|
||||
```
|
||||
|
||||
## Running freeCodeCamp mobile app locally
|
||||
|
||||
Now that you have a local copy of the mobile app, you can follow these instructions to run it locally.
|
||||
|
||||
If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/mobile/issues) page for a solution and report the issue if it has not yet been reported.
|
||||
|
||||
And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our chat server](https://discord.gg/PRyKn3Vbay).
|
||||
|
||||
> [!NOTE] The `mobile` directory contains two folders ie. `mobile-api` and `mobile-app`. `mobile-api` contains the API code used for serving the podcasts. `mobile-app` contains the Flutter app which is where you should be when you follow the below steps.
|
||||
|
||||
### Configuring dependencies
|
||||
|
||||
#### Step 1: Set up the environment variable file
|
||||
|
||||
The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step. Remember to change the directory to `mobile-app` before running the following commands.
|
||||
|
||||
```console
|
||||
# Create a copy of the "sample.env" and name it ".env".
|
||||
# Populate it with the necessary API keys and secrets:
|
||||
```
|
||||
|
||||
<!-- tabs:start -->
|
||||
|
||||
#### **macOS/Linux**
|
||||
|
||||
```console
|
||||
cp sample.env .env
|
||||
```
|
||||
|
||||
#### **Windows**
|
||||
|
||||
```console
|
||||
copy sample.env .env
|
||||
```
|
||||
|
||||
<!-- tabs:end -->
|
||||
|
||||
The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is.
|
||||
|
||||
#### Step 2: Install dependencies
|
||||
|
||||
This step will install the dependencies required for the application to run:
|
||||
|
||||
```console
|
||||
flutter pub get
|
||||
```
|
||||
|
||||
#### Step 3: Start the freeCodeCamp mobile app
|
||||
|
||||
Start the emulator of your choice(Android or iOS) and wait for the bootup process to complete.
|
||||
|
||||
You can now start the app by running the following command:
|
||||
|
||||
```console
|
||||
flutter run
|
||||
```
|
||||
|
||||
> [!TIP] If you're using VSCode or Android Studio then you can easily start the app without having to execute any terminal commands. More information [here](https://docs.flutter.dev/get-started/test-drive).
|
||||
|
||||
## Making changes locally
|
||||
|
||||
You can now make changes to files and commit your changes to your local clone of your fork.
|
||||
|
||||
Follow these steps:
|
||||
|
||||
1. Validate that you are on the `main` branch:
|
||||
|
||||
```console
|
||||
git status
|
||||
```
|
||||
|
||||
You should get an output like this:
|
||||
|
||||
```console
|
||||
On branch main
|
||||
Your branch is up-to-date with 'origin/main'.
|
||||
|
||||
nothing to commit, working directory clean
|
||||
```
|
||||
|
||||
If you are not on main or your working directory is not clean, resolve any outstanding files/commits and checkout `main`:
|
||||
|
||||
```console
|
||||
git checkout main
|
||||
```
|
||||
|
||||
2. Sync the latest changes from the upstream `main` branch to your local main branch:
|
||||
|
||||
> [!WARNING] If you have any outstanding pull request that you made from the `main` branch of your fork, you will lose them at the end of this step.
|
||||
>
|
||||
> You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `main`.
|
||||
|
||||
This step **will sync the latest changes** from the main repository of freeCodeCamp mobile. It is important that you rebase your branch on top of the latest `upstream/main` as often as possible to avoid conflicts later.
|
||||
|
||||
Update your local copy of the freeCodeCamp mobile upstream repository:
|
||||
|
||||
```console
|
||||
git fetch upstream
|
||||
```
|
||||
|
||||
Hard reset your main branch with the freeCodeCamp mobile main:
|
||||
|
||||
```console
|
||||
git reset --hard upstream/main
|
||||
```
|
||||
|
||||
Push your main branch to your origin to have a clean history on your fork on GitHub:
|
||||
|
||||
```console
|
||||
git push origin main --force
|
||||
```
|
||||
|
||||
You can validate your current main matches the upstream/main by performing a diff:
|
||||
|
||||
```console
|
||||
git diff upstream/main
|
||||
```
|
||||
|
||||
The resulting output should be empty.
|
||||
|
||||
3. Create a fresh new branch:
|
||||
|
||||
Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `main`. This will soil your copy of freeCodeCamp mobile and you may have to start over with a fresh clone or fork.
|
||||
|
||||
Check that you are on `main` as explained previously, and branch off from there:
|
||||
|
||||
```console
|
||||
git checkout -b fix/update-guide-for-xyz
|
||||
```
|
||||
|
||||
Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique.
|
||||
|
||||
Some examples of good branch names are:
|
||||
|
||||
```md
|
||||
fix/update-challenges-for-react
|
||||
fix/update-guide-for-html-css
|
||||
fix/platform-bug-sign-in-issues
|
||||
feat/add-guide-article-for-javascript
|
||||
translate/add-spanish-basic-html
|
||||
```
|
||||
|
||||
4. Edit pages and work on code in your favorite text editor.
|
||||
|
||||
5. Once you are happy with the changes you should optionally run the mobile app locally to preview the changes.
|
||||
|
||||
6. Make sure you fix any errors and check the formatting of your changes.
|
||||
|
||||
7. Check and confirm the files you are updating:
|
||||
|
||||
```console
|
||||
git status
|
||||
```
|
||||
|
||||
This should show a list of `unstaged` files that you have edited.
|
||||
|
||||
```console
|
||||
On branch feat/documentation
|
||||
Your branch is up to date with 'upstream/feat/documentation'.
|
||||
|
||||
Changes were not staged for commit:
|
||||
(use "git add/rm <file>..." to update what will be committed)
|
||||
(use "git checkout -- <file>..." to discard changes in the working directory)
|
||||
|
||||
modified: README.md
|
||||
modified: mobile-app/lib/main.dart
|
||||
...
|
||||
```
|
||||
|
||||
8. Stage the changes and make a commit:
|
||||
|
||||
In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed.
|
||||
|
||||
```console
|
||||
git add path/to/my/changed/file.ext
|
||||
```
|
||||
|
||||
Or you can add all the `unstaged` files to the staging area:
|
||||
|
||||
```console
|
||||
git add .
|
||||
```
|
||||
|
||||
Only the files that were moved to the staging area will be added when you make a commit.
|
||||
|
||||
```console
|
||||
git status
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```console
|
||||
On branch feat/documentation
|
||||
Your branch is up to date with 'upstream/feat/documentation'.
|
||||
|
||||
Changes to be committed:
|
||||
(use "git reset HEAD <file>..." to unstage)
|
||||
|
||||
modified: README.md
|
||||
modified: mobile-app/lib/main.dart
|
||||
```
|
||||
|
||||
Now, you can commit your changes with a short message like so:
|
||||
|
||||
```console
|
||||
git commit -m "fix: my short commit message"
|
||||
```
|
||||
|
||||
Some examples:
|
||||
|
||||
```md
|
||||
fix: update guide article for Java - for loop
|
||||
feat: add guide article for alexa skills
|
||||
```
|
||||
|
||||
Optional:
|
||||
|
||||
We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices.
|
||||
|
||||
Some examples of conventional commit messages are:
|
||||
|
||||
```md
|
||||
fix: update HTML guide article
|
||||
fix: update build scripts for Travis-CI
|
||||
feat: add article for JavaScript hoisting
|
||||
docs: update contributing guidelines
|
||||
```
|
||||
|
||||
Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message.
|
||||
|
||||
This does not take any additional time than an unconventional message like 'update file' or 'add index.md'
|
||||
|
||||
You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits).
|
||||
|
||||
9. If you realize that you need to edit a file or update the commit message after making a commit you can do so after editing the files with:
|
||||
|
||||
```console
|
||||
git commit --amend
|
||||
```
|
||||
|
||||
This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description.
|
||||
|
||||
10. Next, you can push your changes to your fork:
|
||||
|
||||
```console
|
||||
git push origin branch/name-here
|
||||
```
|
||||
|
||||
## Proposing a Pull Request (PR)
|
||||
|
||||
After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md).
|
||||
|
||||
<!-- ## Quick commands reference - NEED TO DISCUSS ABOUT THIS
|
||||
|
||||
A quick reference to the commands that you will need when working locally.
|
||||
|
||||
| command | description |
|
||||
| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
|
||||
| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. |
|
||||
| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. | -->
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Issues with installing the recommended prerequisites
|
||||
|
||||
We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later, and Windows 10 (with WSL2).
|
||||
|
||||
It is recommended to research your specific issue on resources such as Google, Stack Overflow, and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query.
|
||||
|
||||
If you are on a different OS and/or are still running into issues, see [getting help](#getting-help).
|
||||
|
||||
### Issues with the UI, build errors, etc.
|
||||
|
||||
If you face issues with the UI, or builds errors a cleanup can be useful:
|
||||
|
||||
```console
|
||||
flutter clean
|
||||
```
|
||||
|
||||
### Issues installing dependencies
|
||||
|
||||
If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources.
|
||||
|
||||
Be patient as the first time setup can take a while depending on your network bandwidth.
|
||||
|
||||
## Getting Help
|
||||
|
||||
If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [the contributors chat room](https://discord.gg/PRyKn3Vbay).
|
||||
|
||||
There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution.
|
||||
@@ -1,32 +1,18 @@
|
||||
# Como traduzir arquivos do freeCodeCamp
|
||||
|
||||
É nosso sonho fornecer recursos para você aprender, não importando qual idioma fala. Para nos ajudar com isso, integramos nossa base de código open-source e nosso currículo com o [Crowdin](https://crowdin.com/), uma ferramenta que nos ajuda a traduzir nosso código.
|
||||
|
||||
O fluxo de tradução é dividido em duas principais atividades:
|
||||
|
||||
- **Traduzir** arquivos do currículo, documentação e elementos da interface como botões, rótulos e etc.:
|
||||
|
||||
Como um tradutor, você pode se cadastrar em [nossa plataforma de tradução](https://translate.freecodecamp.org) e contribuir com traduções em mais de 30 idiomas disponíveis.
|
||||
|
||||
- **Revisar** as traduções de todo conteúdo.
|
||||
|
||||
Os revisores verificam se as traduções da comunidade têm um tom uniforme e não contêm problemas como erros de digitação, entre outros. Resumidamente, eles garantem a alta qualidade das traduções. Note que nós não usamos tradução automática por um motivo.
|
||||
|
||||
> [!WARNING] Não usamos mais o GitHub para traduzir arquivos diretamente. Se você está voltando a contribuir, vá para nossa [plataforma de tradução](https://translate.freecodecamp.org/).
|
||||
|
||||
## Prepare-se para as contribuições
|
||||
|
||||
> O roadmap de localização da freeCodeCamp - não há limites
|
||||
> The freeCodeCamp Localization Roadmap – There Are No Speed Limits
|
||||
|
||||
Você pode traduzir o quanto você quiser e quando você puder. O que realmente importa é o quanto de tempo e energia você estará disposto a investir como um voluntário de tradução.
|
||||
You can translate as much as you want, when you want. It's only a matter of how much time and energy you are willing to invest as a volunteer translator.
|
||||
|
||||
Pedimos apenas que entenda os seguintes pontos:
|
||||
We just ask that you understand the following:
|
||||
|
||||
1. **As traduções são um esforço em equipe.**
|
||||
|
||||
A tradução dos recursos do freeCodeCamp é uma das mais divertidas e gratificantes como um contribuidor. Ela fica ainda melhor quando envolve amigos e colegas que falam o mesmo idioma que você.
|
||||
|
||||
Nós recomendamos que entre [em nosso fórum da comunidade](https://forum.freecodecamp.org/c/contributors/3) e na [sala de chat dos tradutores](https://discord.gg/PRyKn3Vbay) com seus amigos e mostre seu interesse antes de começar a traduzir. A ferramenta Crowdin facilita a contribuição com traduções, mas ainda há bastante trabalho.
|
||||
You can start by reading [this announcement](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/). We recommend joining [our community forum](https://forum.freecodecamp.org/c/contributors/3) and [Discord chat server](https://discord.gg/PRyKn3Vbay) with your friends and showing your interest before starting off with translations. Crowdin and other tools make it easy to contribute translations, but it's still a lot of work.
|
||||
|
||||
Nós esperamos que você goste de contribuir e não venha a se sentir esgotado ou perder o interesse.
|
||||
|
||||
@@ -38,7 +24,7 @@ Pedimos apenas que entenda os seguintes pontos:
|
||||
|
||||
O freeCodeCamp.org comprometeu-se em providenciar de forma gratuita como sempre. No entanto, precisamos priorizar os recursos para os que mais necessitam deles. A última coisa que queremos é desligar os servidores para uma linguagem se a atividade de tradução encerrar e se tornar desatualizada.
|
||||
|
||||
Quando cada linguagem alcançar pelo menos algumas certificações no currículo, nós podemos começar a implantar a linguagem no [`/learn`](https://www.freecodecamp.org/learn) enquanto você continua a traduzir o restante das certificações.
|
||||
For translating the curriculum, once a language reaches at least a few certifications we can begin deploying the language live on [`/learn`](https://www.freecodecamp.org/learn), while you continue to translate the remaining certifications.
|
||||
|
||||
Por exemplo, gostaríamos de implantar pelo menos todo o conjunto de certificações de front-end quando entregarmos uma nova linguagem pela primeira vez.
|
||||
|
||||
@@ -54,9 +40,27 @@ Pedimos apenas que entenda os seguintes pontos:
|
||||
|
||||
Quando você tiver um pequeno grupo de pessoas (pelo menos 4-5) interessadas e comprometidas, nós poderemos entrar em contato. Explicaremos todos os detalhes e orientaremos você em algumas das ferramentas e processos.
|
||||
|
||||
## Primeiros passos
|
||||
## Overview of Crowdin
|
||||
|
||||
Primeiro, não se esqueça de vir dar um "Oi" na nossa [sala de chat de tradutores](https://discord.gg/PRyKn3Vbay). Nós postamos atualizações regulares sobre recursos de tradução e respondemos a muitas de suas dúvidas lá.
|
||||
It's our dream to provide you with the resources to learn, no matter the world language you speak. To help us with this massive effort, we have integrated our open-source code-base & curriculum with [Crowdin](https://crowdin.com/) - A tool to help us localize our code-base.
|
||||
|
||||
> [!NOTE] We use a different tool and workflow for translating [news articles](https://www.freecodecamp.org/news). If you are interested in translating articles, read [this announcement](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/) and reach out to your Language Lead.
|
||||
|
||||
The translation workflow is split into two main activities:
|
||||
|
||||
- **Traduzir** arquivos do currículo, documentação e elementos da interface como botões, rótulos e etc.:
|
||||
|
||||
Como um tradutor, você pode se cadastrar em [nossa plataforma de tradução](https://translate.freecodecamp.org) e contribuir com traduções em mais de 30 idiomas disponíveis.
|
||||
|
||||
- **Revisar** as traduções de todo conteúdo.
|
||||
|
||||
Os revisores verificam se as traduções da comunidade têm um tom uniforme e não contêm problemas como erros de digitação, entre outros. Resumidamente, eles garantem a alta qualidade das traduções. Note que nós não usamos tradução automática por um motivo.
|
||||
|
||||
> [!WARNING] We are no longer using GitHub to translate files directly, if you are a returning contributor head to our [translation platform](https://translate.freecodecamp.org/) instead.
|
||||
|
||||
## Getting started
|
||||
|
||||
First, make sure you come say "Hi" in our [Discord](https://discord.gg/PRyKn3Vbay). Nós postamos atualizações regulares sobre recursos de tradução e respondemos a muitas de suas dúvidas lá.
|
||||
|
||||
Depois, vá para a nossa [plataforma de tradução](https://translate.freecodecamp.org/) e faça o login (se você não contribuiu com traduções anteriormente, você precisará criar uma conta).
|
||||
|
||||
@@ -64,7 +68,7 @@ Finalmente, faça o nosso passo a passo abaixo para entender as ferramentas de t
|
||||
|
||||
Boa tradução.
|
||||
|
||||
## Selecione um projeto e um arquivo
|
||||
## Select a Project and File
|
||||
|
||||
Quando você visita a plataforma de tradução, você deve ver vários "projetos" disponíveis para tradução:
|
||||
|
||||
@@ -84,9 +88,9 @@ Cada arquivo e pasta aparecerá na barra de progresso. A porção **azul** da ba
|
||||
|
||||
Selecione um arquivo para traduzir e o Crowdin vai abrir o editor.
|
||||
|
||||
> [!NOTE] Quando o editor abrir, você precisará clicar no ícone de configurações (mostrado como uma engrenagem) e mudar a configuração 'HTML tags displaying' para 'SHOW'. Isso garantirá que você veja as tags como `<code></code>` ao invés de `<0></0>`.
|
||||
> [!NOTE] When the editor view opens, you will need to click the settings icon (shown as a gear) and switch the 'HTML tags displaying' setting to 'SHOW'. This will ensure you can see tags such as `<code></code>` instead of `<0></0>`.
|
||||
|
||||
## Traduzir o currículo
|
||||
## Translate Curriculum
|
||||
|
||||

|
||||
|
||||
@@ -103,19 +107,19 @@ O Crowdin separa o documento em "strings" traduzíveis, geralmente frases. Cada
|
||||
9. Aqui você pode ver a janela de comentários. Se você tem perguntas ou preocupações acerca de uma string em particular, você pode comentar aqui para que outros tradutores vejam.
|
||||
10. Esses dois "botões de painel" esconderão o documento à esquerda e os comentários à direita.
|
||||
|
||||
> [!NOTE] Se você encontrar uma string escondida que inclui traduções, notifique-a na [sala de chat dos tradutores](https://discord.gg/PRyKn3Vbay) para que possamos remover a tradução da memória.
|
||||
> [!NOTE] If you see a hidden string that includes translations, please notify us in the [Discord](https://discord.gg/PRyKn3Vbay) so we can remove the translation from memory.
|
||||
|
||||
Quando tiver terminado de traduzir uma string, clique em `Save` para salvar sua tradução no Crowdin. Outros contribuintes poderão votar em sua tradução e os revisores poderão aprová-la.
|
||||
|
||||
Fique à vontade para traduzir quantas strings quiser - não há nenhuma etapa adicional requerida quando você completar um arquivo inteiro ou propor uma nova tradução. Clicar em `Save` é tudo de que você precisa para salvar sua tradução.
|
||||
|
||||
> [!NOTE] Se você ver algo no arquivo fonte em inglês que esteja impreciso ou incorreto, não conserte pelo mecanismo de tradução. Em vez disso, deixe um comentário na string para nos notificar de uma discrepância ou crie uma issue no GitHub.
|
||||
> [!NOTE] If you see something in the English source file that is inaccurate or incorrect, please do not fix it through the translation flow. Instead, leave a comment on the string to notify us that there is a discrepancy, or create a GitHub issue.
|
||||
|
||||
## Traduzir a documentação
|
||||
## Translate Documentation
|
||||
|
||||
Traduzir nossa documentação de contribuição é similar a traduzir nossos arquivos de currículo.
|
||||
|
||||
> [!NOTE] Nossa documentação de contribuição utiliza o `docsify`. Nós temos uma análise especial para caixas de mensagem como essa. Caso veja strings iniciadas com `[!NOTE]`, `[!WARNING]`, ou `[!TIP]`, essas palavras NÃO devem ser traduzidas.
|
||||
> [!NOTE] Our contributing documentation is powered by `docsify`, and we have special parsing for message boxes like this one. If you see strings that start with `[!NOTE]`, `[!WARNING]`, or `[!TIP]`, these words should NOT be translated.
|
||||
|
||||
### Como traduzir a documentação com links internos
|
||||
|
||||
@@ -153,7 +157,7 @@ Você pode descobrir como o `docsify` converte uma string em seu idioma em um ID
|
||||
|
||||
Você pode aprender mais sobre [links internos em nossa documentação aqui](how-to-work-on-the-docs-theme.md#how-to-create-an-internal-link).
|
||||
|
||||
## Traduzir o RPG LearnToCode
|
||||
## Translate the LearnToCode RPG
|
||||
|
||||
O RPG LearnToCode é executado no Ren'Py, que usa uma sintaxe especial para strings traduzidas: (Consulte a [documentação sobre textos do Ren'Py](https://www.renpy.org/doc/html/text.html))
|
||||
|
||||
@@ -278,7 +282,7 @@ I better take notes so I can learn more about it."
|
||||
É melhor eu anotar para saber mais a respeito."
|
||||
```
|
||||
|
||||
## Avaliar as traduções
|
||||
## Rate Translations
|
||||
|
||||
Crowdin permite que você avalie propostas de tradução existentes. Se você tentar salvar uma tradução, você pode ver uma mensagem indicando que você não pode salvar a duplicata de uma tradução - isso significa que outro contribuinte já propôs uma tradução idêntica. Se você concorda com aquela tradução, clique em `+` para "aprová-la".
|
||||
|
||||
@@ -286,7 +290,7 @@ Se você ver uma tradução que não possui a mesma clareza da string original,
|
||||
|
||||
Crowdin usa esses votos para pontuar cada proposta de tradução de cada string, o que ajuda o time de revisão a determinar qual tradução é a melhor para cada string.
|
||||
|
||||
## Verificações de qualidade
|
||||
## Quality Assurance Checks
|
||||
|
||||
Nós disponibilizamos algumas verificações de qualidade para assegurar que as traduções estejam precisas - isso ajuda nossos revisores a analisarem as traduções propostas.
|
||||
|
||||
@@ -296,9 +300,9 @@ Quando você tenta salvar uma tradução, talvez veja uma mensagem de aviso apar
|
||||
|
||||
Essa mensagem aparece quando o sistema QA (Perguntas e Respostas) da Crowdin's identificou algum erro em potencial na tradução proposta. Nesse exemplo, nós modificamos o texto da tag `<code>` e o sistema viu isto.
|
||||
|
||||
> [!WARNING] Você tem a opção de salvar uma tradução apesar dos erros. Se fizer isso, clicando em "Save Anyway", você também deve marcar um revisor ou gerenciador do projeto e explicar o motivo do aviso ter sido ignorado nesse caso.
|
||||
> [!WARNING] You have the option to save a translation in spite of errors. If you do, by clicking "Save Anyway", you should also tag a proofreader or project manager and explain why the QA message needs to be ignored in this case.
|
||||
|
||||
## Boas práticas na tradução
|
||||
## Translation Best Practices
|
||||
|
||||
Siga essas diretrizes para certificar-se que nossas traduções estão o mais precisas possível:
|
||||
|
||||
@@ -306,4 +310,4 @@ Siga essas diretrizes para certificar-se que nossas traduções estão o mais pr
|
||||
- Não adicione conteúdo extra. Se você acha que um desafio necessita de mudanças no texto e conteúdo adicional, você deve propor as mudanças através de uma issue no GitHub ou um pull request que modifique o arquivo em inglês.
|
||||
- Não mude a ordem do conteúdo.
|
||||
|
||||
Se você tiver alguma dúvida, sinta-se à vontade para entrar em contato conosco através da [sala de chat dos tradutores](https://discord.gg/PRyKn3Vbay) e nós ficaremos felizes em ajudar você.
|
||||
If you have any questions, feel free to reach out to us in our [Discord](https://discord.gg/PRyKn3Vbay) and we will be happy to assist you.
|
||||
|
||||
@@ -22,22 +22,31 @@ Você pode ajudar a expandir e melhorar o currículo. Você também pode atualiz
|
||||
|
||||
Estamos traduzindo o freeCodeCamp.org para os principais idiomas do mundo.
|
||||
|
||||
Muitas certificações já estão prontas em alguns dos idiomas principais do mundo como o [chinês (中文),](https://chinese.freecodecamp.org/learn), o [espanhol (español)](https://www.freecodecamp.org/espanol/learn), o [italiano](https://www.freecodecamp.org/italian/learn) e o [português](https://www.freecodecamp.org/portuguese/learn). Recomendamos a leitura do [anúncio aqui](https://www.freecodecamp.org/news/world-language-translation-effort) e o compartilhamento com seus amigos.
|
||||
Certifications are already live in some major world languages like below:
|
||||
|
||||
**Se você está interessado em traduzir, veja como traduzir os recursos do [freeCodeCamp](how-to-translate-files.md).**
|
||||
- [Chinese (中文)](https://chinese.freecodecamp.org/learn)
|
||||
- [Spanish (Español)](https://www.freecodecamp.org/espanol/learn)
|
||||
- [Italian (Italiano)](https://www.freecodecamp.org/italian/learn)
|
||||
- [Portuguese (Português)](https://www.freecodecamp.org/portuguese/learn)
|
||||
- [Ukrainian (Українська)](https://www.freecodecamp.org/ukrainian/learn)
|
||||
- [Japanese (日本語)](https://www.freecodecamp.org/japanese/learn)
|
||||
|
||||
We encourage you to read the [announcement here](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/) and share it with your friends to get them excited about this.
|
||||
|
||||
**If you're interested in translating, here's [how to translate freeCodeCamp's resources](how-to-translate-files.md).**
|
||||
|
||||
## Plataforma de aprendizagem
|
||||
|
||||
Nossa plataforma de aprendizagem executa em uma stack de JavaScript moderna. Ela possui vários componentes, ferramentas e bibliotecas. Estes incluem Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack e mais.
|
||||
Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more.
|
||||
|
||||
Geralmente, temos um servidor de API baseado em Node.js, um conjunto de aplicativos de client baseados em React, testes de scripts para avaliar projetos de currículo apresentados pelos campers e muito mais. Se você deseja contribuir produtivamente para nossa plataforma de aprendizagem, recomendamos alguma familiaridade com estas ferramentas.
|
||||
Broadly, we have a Node.js based API server, a set of React-based client applications, testing scripts to evaluate camper-submitted curriculum projects, and more. If you want to productively contribute to the learning platform, we recommend some familiarity with these tools.
|
||||
|
||||
Se você quer nos ajudar a melhorar nossa base de código...
|
||||
If you want to help us improve our codebase...
|
||||
|
||||
**você pode usar o Gitpod, um ambiente de desenvolvimento on-line gratuito que inicia um ambiente de desenvolvimento pronto para o freeCodeCamp em seu navegador.**
|
||||
**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.**
|
||||
|
||||
[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
|
||||
[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
|
||||
|
||||
Ou você pode...
|
||||
Or you can...
|
||||
|
||||
**[configurar localmente o freeCodeCamp](how-to-setup-freecodecamp-locally.md) em sua máquina.**
|
||||
**[Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.**
|
||||
|
||||
@@ -10,7 +10,7 @@ freeCodeCamp runs on a modern JavaScript stack. If you're interested in contribu
|
||||
|
||||
Yes - You can contribute to any of the 30+ languages we have enabled on our translation platform.
|
||||
|
||||
We have user-contributed translations live in some languages. We intend to localize freeCodeCamp into several major world languages. You can read all about this in our [announcement here](https://www.freecodecamp.org/news/world-language-translation-effort).
|
||||
We have user-contributed translations live in some languages. We intend to localize freeCodeCamp into several major world languages. You can read all about this in our [announcement here](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/).
|
||||
|
||||
If you are interested in contributing to translations please makes sure you [read this guide](how-to-translate-files.md) first.
|
||||
|
||||
|
||||
@@ -7,14 +7,15 @@
|
||||
- [Робота над вичиткою перекладів](how-to-proofread-files.md)
|
||||
- **Як зробити внесок до коду**
|
||||
- [Встановити freeCodeCamp локально](how-to-setup-freecodecamp-locally.md)
|
||||
- [Дотримання кращих практик написання коду](codebase-best-practices.md)
|
||||
- [Відкрити пул реквест](how-to-open-a-pull-request.md)
|
||||
- [Робота над завданнями з кодом](how-to-work-on-coding-challenges.md)
|
||||
- [Робота над практичними проєктами](how-to-work-on-practice-projects.md)
|
||||
- [Робота над туторіалами з CodeRoad](how-to-work-on-tutorials-that-use-coderoad.md)
|
||||
- [Робота над локалізованим вебзастосунком](how-to-work-on-localized-client-webapp.md)
|
||||
- [Робота з Cypress тестами](how-to-add-cypress-tests.md)
|
||||
- [Робота над завданнями з відео](how-to-help-with-video-challenges.md)
|
||||
- [Work on mobile app](how-to-setup-freecodecamp-mobile-app-locally.md)
|
||||
- [Follow coding best practices](codebase-best-practices.md)
|
||||
- [Open a pull request](how-to-open-a-pull-request.md)
|
||||
- [Work on coding challenges](how-to-work-on-coding-challenges.md)
|
||||
- [Work on practice projects](how-to-work-on-practice-projects.md)
|
||||
- [Work on tutorials with CodeRoad](how-to-work-on-tutorials-that-use-coderoad.md)
|
||||
- [Work on localized client web app](how-to-work-on-localized-client-webapp.md)
|
||||
- [Work on Cypress tests](how-to-add-cypress-tests.md)
|
||||
- [Work on video challenges](how-to-help-with-video-challenges.md)
|
||||
- [Work on documentation](how-to-work-on-the-docs-theme.md)
|
||||
- [Work on the component library](how-to-work-on-the-component-library.md)
|
||||
- **Додаткові інструкції**
|
||||
|
||||
@@ -0,0 +1,405 @@
|
||||
Follow this guide for setting up the freeCodeCamp mobile app locally on your system. This is highly recommended if you want to contribute regularly.
|
||||
|
||||
Some of the contribution workflows – like fixing bugs in the codebase – need you to run freeCodeCamp app locally.
|
||||
|
||||
### How to prepare your local machine
|
||||
|
||||
Start by installing the prerequisite software for your operating system.
|
||||
|
||||
#### Prerequisites:
|
||||
|
||||
| Prerequisite | Version | Notes |
|
||||
| --------------------------------- | ------- | ---------------------------------------- |
|
||||
| [Flutter](https://flutter.dev/) | `3.x` | - |
|
||||
| Dart (comes bundled with Flutter) | `2.x` | We use the version bundled with Flutter. |
|
||||
|
||||
> [!ATTENTION] If you have a different version, please install the recommended version. We can only support installation issues for recommended versions.
|
||||
|
||||
If Flutter is already installed on your machine, run the following commands to validate the versions:
|
||||
|
||||
```console
|
||||
flutter --version
|
||||
dart --version
|
||||
```
|
||||
|
||||
> [!TIP] We highly recommend updating to the latest stable releases of the software listed above.
|
||||
|
||||
Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once.
|
||||
|
||||
##### Follow these steps to get your development environment ready:
|
||||
|
||||
1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated.
|
||||
|
||||
2. Setup [Android Studio](https://developer.android.com/studio) and [Android Emulators](https://developer.android.com/studio/run/managing-avds) with the latest released Android version. We recommend using the Pixel 3a XL and Nexus One(for emulating smaller screens).
|
||||
|
||||
3. (Optional for MacOS) Setup Xcode and iOS Simulator with the latest released iOS version.
|
||||
|
||||
4. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub.
|
||||
|
||||
5. Install a code editor of your choice.
|
||||
|
||||
We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or Android Studio. We also recommend installing the official [extensions](https://docs.flutter.dev/get-started/editor?tab=vscode)
|
||||
|
||||
## Fork the repository on GitHub
|
||||
|
||||
[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of the repository (a.k.a _repo_) on GitHub.
|
||||
|
||||
This is essential, as it allows you to work on your own copy of freeCodeCamp mobile app on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR).
|
||||
|
||||
> [!TIP] The main repository at `https://github.com/freeCodeCamp/mobile` is often referred to as the `upstream` repository.
|
||||
>
|
||||
> Your fork at `https://github.com/YOUR_USER_NAME/mobile` is often referred to as the `origin` repository. `YOUR_USER_NAME` would be replaced with your GitHub username.
|
||||
|
||||
**Follow these steps to fork the `https://github.com/freeCodeCamp/mobile` repository:**
|
||||
|
||||
1. Go to the freeCodeCamp mobile repository on GitHub: <https://github.com/freeCodeCamp/mobile>
|
||||
|
||||
2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/))
|
||||
|
||||
3. After the repository has been forked, you will be taken to your copy of the repository at `https://github.com/YOUR_USER_NAME/mobile` (`YOUR_USER_NAME` would be replaced with your GitHub user name.)
|
||||
|
||||
## Clone your fork from GitHub
|
||||
|
||||
[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/mobile`. (`YOUR_USER_NAME` would be replaced with your GitHub user name.)
|
||||
|
||||
Run these commands on your local machine:
|
||||
|
||||
1. Open a Terminal / Command Prompt / Shell in your projects directory
|
||||
|
||||
_i.e.: `/yourprojectsdirectory/`_
|
||||
|
||||
2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username
|
||||
|
||||
```console
|
||||
git clone --depth=1 https://github.com/YOUR_USER_NAME/mobile.git
|
||||
```
|
||||
|
||||
This will download the entire freeCodeCamp mobile repository to your projects directory.
|
||||
|
||||
Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit.
|
||||
|
||||
## Set up syncing from parent
|
||||
|
||||
Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository.
|
||||
|
||||
[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository.
|
||||
|
||||
You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly.
|
||||
|
||||
1. Change directory to the new `mobile` directory:
|
||||
|
||||
```console
|
||||
cd mobile
|
||||
```
|
||||
|
||||
2. Add a remote reference to the main freeCodeCamp mobile repository:
|
||||
|
||||
```console
|
||||
git remote add upstream https://github.com/freeCodeCamp/mobile.git
|
||||
```
|
||||
|
||||
3. Ensure the configuration looks correct:
|
||||
|
||||
```console
|
||||
git remote -v
|
||||
```
|
||||
|
||||
The output should look something like below (replacing `YOUR_USER_NAME` with your GitHub username):
|
||||
|
||||
```console
|
||||
origin https://github.com/YOUR_USER_NAME/mobile.git (fetch)
|
||||
origin https://github.com/YOUR_USER_NAME/mobile.git (push)
|
||||
upstream https://github.com/freeCodeCamp/mobile.git (fetch)
|
||||
upstream https://github.com/freeCodeCamp/mobile.git (push)
|
||||
```
|
||||
|
||||
## Running freeCodeCamp mobile app locally
|
||||
|
||||
Now that you have a local copy of the mobile app, you can follow these instructions to run it locally.
|
||||
|
||||
If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/mobile/issues) page for a solution and report the issue if it has not yet been reported.
|
||||
|
||||
And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our chat server](https://discord.gg/PRyKn3Vbay).
|
||||
|
||||
> [!NOTE] The `mobile` directory contains two folders ie. `mobile-api` and `mobile-app`. `mobile-api` contains the API code used for serving the podcasts. `mobile-app` contains the Flutter app which is where you should be when you follow the below steps.
|
||||
|
||||
### Configuring dependencies
|
||||
|
||||
#### Step 1: Set up the environment variable file
|
||||
|
||||
The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step. Remember to change the directory to `mobile-app` before running the following commands.
|
||||
|
||||
```console
|
||||
# Create a copy of the "sample.env" and name it ".env".
|
||||
# Populate it with the necessary API keys and secrets:
|
||||
```
|
||||
|
||||
<!-- tabs:start -->
|
||||
|
||||
#### **macOS/Linux**
|
||||
|
||||
```console
|
||||
cp sample.env .env
|
||||
```
|
||||
|
||||
#### **Windows**
|
||||
|
||||
```console
|
||||
copy sample.env .env
|
||||
```
|
||||
|
||||
<!-- tabs:end -->
|
||||
|
||||
The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is.
|
||||
|
||||
#### Step 2: Install dependencies
|
||||
|
||||
This step will install the dependencies required for the application to run:
|
||||
|
||||
```console
|
||||
flutter pub get
|
||||
```
|
||||
|
||||
#### Step 3: Start the freeCodeCamp mobile app
|
||||
|
||||
Start the emulator of your choice(Android or iOS) and wait for the bootup process to complete.
|
||||
|
||||
You can now start the app by running the following command:
|
||||
|
||||
```console
|
||||
flutter run
|
||||
```
|
||||
|
||||
> [!TIP] If you're using VSCode or Android Studio then you can easily start the app without having to execute any terminal commands. More information [here](https://docs.flutter.dev/get-started/test-drive).
|
||||
|
||||
## Making changes locally
|
||||
|
||||
You can now make changes to files and commit your changes to your local clone of your fork.
|
||||
|
||||
Follow these steps:
|
||||
|
||||
1. Validate that you are on the `main` branch:
|
||||
|
||||
```console
|
||||
git status
|
||||
```
|
||||
|
||||
You should get an output like this:
|
||||
|
||||
```console
|
||||
On branch main
|
||||
Your branch is up-to-date with 'origin/main'.
|
||||
|
||||
nothing to commit, working directory clean
|
||||
```
|
||||
|
||||
If you are not on main or your working directory is not clean, resolve any outstanding files/commits and checkout `main`:
|
||||
|
||||
```console
|
||||
git checkout main
|
||||
```
|
||||
|
||||
2. Sync the latest changes from the upstream `main` branch to your local main branch:
|
||||
|
||||
> [!WARNING] If you have any outstanding pull request that you made from the `main` branch of your fork, you will lose them at the end of this step.
|
||||
>
|
||||
> You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `main`.
|
||||
|
||||
This step **will sync the latest changes** from the main repository of freeCodeCamp mobile. It is important that you rebase your branch on top of the latest `upstream/main` as often as possible to avoid conflicts later.
|
||||
|
||||
Update your local copy of the freeCodeCamp mobile upstream repository:
|
||||
|
||||
```console
|
||||
git fetch upstream
|
||||
```
|
||||
|
||||
Hard reset your main branch with the freeCodeCamp mobile main:
|
||||
|
||||
```console
|
||||
git reset --hard upstream/main
|
||||
```
|
||||
|
||||
Push your main branch to your origin to have a clean history on your fork on GitHub:
|
||||
|
||||
```console
|
||||
git push origin main --force
|
||||
```
|
||||
|
||||
You can validate your current main matches the upstream/main by performing a diff:
|
||||
|
||||
```console
|
||||
git diff upstream/main
|
||||
```
|
||||
|
||||
The resulting output should be empty.
|
||||
|
||||
3. Create a fresh new branch:
|
||||
|
||||
Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `main`. This will soil your copy of freeCodeCamp mobile and you may have to start over with a fresh clone or fork.
|
||||
|
||||
Check that you are on `main` as explained previously, and branch off from there:
|
||||
|
||||
```console
|
||||
git checkout -b fix/update-guide-for-xyz
|
||||
```
|
||||
|
||||
Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique.
|
||||
|
||||
Some examples of good branch names are:
|
||||
|
||||
```md
|
||||
fix/update-challenges-for-react
|
||||
fix/update-guide-for-html-css
|
||||
fix/platform-bug-sign-in-issues
|
||||
feat/add-guide-article-for-javascript
|
||||
translate/add-spanish-basic-html
|
||||
```
|
||||
|
||||
4. Edit pages and work on code in your favorite text editor.
|
||||
|
||||
5. Once you are happy with the changes you should optionally run the mobile app locally to preview the changes.
|
||||
|
||||
6. Make sure you fix any errors and check the formatting of your changes.
|
||||
|
||||
7. Check and confirm the files you are updating:
|
||||
|
||||
```console
|
||||
git status
|
||||
```
|
||||
|
||||
This should show a list of `unstaged` files that you have edited.
|
||||
|
||||
```console
|
||||
On branch feat/documentation
|
||||
Your branch is up to date with 'upstream/feat/documentation'.
|
||||
|
||||
Changes were not staged for commit:
|
||||
(use "git add/rm <file>..." to update what will be committed)
|
||||
(use "git checkout -- <file>..." to discard changes in the working directory)
|
||||
|
||||
modified: README.md
|
||||
modified: mobile-app/lib/main.dart
|
||||
...
|
||||
```
|
||||
|
||||
8. Stage the changes and make a commit:
|
||||
|
||||
In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed.
|
||||
|
||||
```console
|
||||
git add path/to/my/changed/file.ext
|
||||
```
|
||||
|
||||
Or you can add all the `unstaged` files to the staging area:
|
||||
|
||||
```console
|
||||
git add .
|
||||
```
|
||||
|
||||
Only the files that were moved to the staging area will be added when you make a commit.
|
||||
|
||||
```console
|
||||
git status
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```console
|
||||
On branch feat/documentation
|
||||
Your branch is up to date with 'upstream/feat/documentation'.
|
||||
|
||||
Changes to be committed:
|
||||
(use "git reset HEAD <file>..." to unstage)
|
||||
|
||||
modified: README.md
|
||||
modified: mobile-app/lib/main.dart
|
||||
```
|
||||
|
||||
Now, you can commit your changes with a short message like so:
|
||||
|
||||
```console
|
||||
git commit -m "fix: my short commit message"
|
||||
```
|
||||
|
||||
Some examples:
|
||||
|
||||
```md
|
||||
fix: update guide article for Java - for loop
|
||||
feat: add guide article for alexa skills
|
||||
```
|
||||
|
||||
Optional:
|
||||
|
||||
We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices.
|
||||
|
||||
Some examples of conventional commit messages are:
|
||||
|
||||
```md
|
||||
fix: update HTML guide article
|
||||
fix: update build scripts for Travis-CI
|
||||
feat: add article for JavaScript hoisting
|
||||
docs: update contributing guidelines
|
||||
```
|
||||
|
||||
Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message.
|
||||
|
||||
This does not take any additional time than an unconventional message like 'update file' or 'add index.md'
|
||||
|
||||
You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits).
|
||||
|
||||
9. If you realize that you need to edit a file or update the commit message after making a commit you can do so after editing the files with:
|
||||
|
||||
```console
|
||||
git commit --amend
|
||||
```
|
||||
|
||||
This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description.
|
||||
|
||||
10. Next, you can push your changes to your fork:
|
||||
|
||||
```console
|
||||
git push origin branch/name-here
|
||||
```
|
||||
|
||||
## Proposing a Pull Request (PR)
|
||||
|
||||
After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md).
|
||||
|
||||
<!-- ## Quick commands reference - NEED TO DISCUSS ABOUT THIS
|
||||
|
||||
A quick reference to the commands that you will need when working locally.
|
||||
|
||||
| command | description |
|
||||
| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
|
||||
| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. |
|
||||
| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. | -->
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Issues with installing the recommended prerequisites
|
||||
|
||||
We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later, and Windows 10 (with WSL2).
|
||||
|
||||
It is recommended to research your specific issue on resources such as Google, Stack Overflow, and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query.
|
||||
|
||||
If you are on a different OS and/or are still running into issues, see [getting help](#getting-help).
|
||||
|
||||
### Issues with the UI, build errors, etc.
|
||||
|
||||
If you face issues with the UI, or builds errors a cleanup can be useful:
|
||||
|
||||
```console
|
||||
flutter clean
|
||||
```
|
||||
|
||||
### Issues installing dependencies
|
||||
|
||||
If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources.
|
||||
|
||||
Be patient as the first time setup can take a while depending on your network bandwidth.
|
||||
|
||||
## Getting Help
|
||||
|
||||
If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [the contributors chat room](https://discord.gg/PRyKn3Vbay).
|
||||
|
||||
There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution.
|
||||
@@ -1,19 +1,5 @@
|
||||
# How to Translate freeCodeCamp's resources
|
||||
|
||||
It's our dream to provide you with the resources to learn, no matter the world language you speak. To help us with this massive effort, we have integrated our open-source code-base & curriculum with [Crowdin](https://crowdin.com/) - A tool to help us localize our code-base.
|
||||
|
||||
The translation workflow is split into two main activities:
|
||||
|
||||
- **Translating** curriculum files, documentation and UI elements like buttons, labels, etc.:
|
||||
|
||||
As a translator you can sign up on [our translation platform](https://translate.freecodecamp.org) and contribute translations in any of the 30+ languages enabled in there.
|
||||
|
||||
- **Proofreading** the translations for all of the above.
|
||||
|
||||
Proofreaders verify that the community contributed translations are uniform in tone and free of common issues like typos, etc. In short, they ensure that the quality of translations is high. Note that we do not use machine translations for a reason.
|
||||
|
||||
> [!WARNING] We are no longer using GitHub to translate files directly, if you are a returning contributor head to our [translation platform](https://translate.freecodecamp.org/) instead.
|
||||
|
||||
## Prepare yourself for contributions
|
||||
|
||||
> The freeCodeCamp Localization Roadmap – There Are No Speed Limits
|
||||
@@ -26,7 +12,7 @@ We just ask that you understand the following:
|
||||
|
||||
Translating freeCodeCamp's resources is one of the most fun and rewarding experiences as a contributor, and it works best if you involve your friends and colleagues who speak the same world language as you.
|
||||
|
||||
We recommend joining [our community forum](https://forum.freecodecamp.org/c/contributors/3) and [contributors chat room](https://discord.gg/PRyKn3Vbay) with your friends and showing your interest before starting off with translations. Crowdin makes it easy to contribute translations, but it's still a lot of work.
|
||||
You can start by reading [this announcement](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/). We recommend joining [our community forum](https://forum.freecodecamp.org/c/contributors/3) and [Discord chat server](https://discord.gg/PRyKn3Vbay) with your friends and showing your interest before starting off with translations. Crowdin and other tools make it easy to contribute translations, but it's still a lot of work.
|
||||
|
||||
We want you to enjoy contributing and not burn out or lose interest.
|
||||
|
||||
@@ -38,7 +24,7 @@ We just ask that you understand the following:
|
||||
|
||||
freeCodeCamp.org is committed to providing these for free as always, however we need to prioritize resources for those who need them the most. The last thing we want is to shutdown servers for a language if the translation activity dies off & things become outdated.
|
||||
|
||||
Once a language reaches at least a few certifications on the curriculum we can begin deploying the language live on [`/learn`](https://www.freecodecamp.org/learn), while you continue to translate the remaining certifications.
|
||||
For translating the curriculum, once a language reaches at least a few certifications we can begin deploying the language live on [`/learn`](https://www.freecodecamp.org/learn), while you continue to translate the remaining certifications.
|
||||
|
||||
For example, we would want to deploy at least the entire front-end certifications suite when we ship a new world language for the first time.
|
||||
|
||||
@@ -54,9 +40,27 @@ We just ask that you understand the following:
|
||||
|
||||
Once you have a small group of people (at least 4-5) interested and committed, we can hop on a call. We will explain all the details and walk you through some of the tools and processes.
|
||||
|
||||
## Overview of Crowdin
|
||||
|
||||
It's our dream to provide you with the resources to learn, no matter the world language you speak. To help us with this massive effort, we have integrated our open-source code-base & curriculum with [Crowdin](https://crowdin.com/) - A tool to help us localize our code-base.
|
||||
|
||||
> [!NOTE] We use a different tool and workflow for translating [news articles](https://www.freecodecamp.org/news). If you are interested in translating articles, read [this announcement](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/) and reach out to your Language Lead.
|
||||
|
||||
The translation workflow is split into two main activities:
|
||||
|
||||
- **Translating** curriculum files, documentation and UI elements like buttons, labels, etc.:
|
||||
|
||||
As a translator you can sign up on [our translation platform](https://translate.freecodecamp.org) and contribute translations in any of the 30+ languages enabled in there.
|
||||
|
||||
- **Proofreading** the translations for all of the above.
|
||||
|
||||
Proofreaders verify that the community contributed translations are uniform in tone and free of common issues like typos, etc. In short, they ensure that the quality of translations is high. Note that we do not use machine translations for a reason.
|
||||
|
||||
> [!WARNING] We are no longer using GitHub to translate files directly, if you are a returning contributor head to our [translation platform](https://translate.freecodecamp.org/) instead.
|
||||
|
||||
## Getting started
|
||||
|
||||
First, make sure you come say "Hi" in our [contributors chat room](https://discord.gg/PRyKn3Vbay). We post regular updates about translating resources and answer a lot of your queries in there.
|
||||
First, make sure you come say "Hi" in our [Discord](https://discord.gg/PRyKn3Vbay). We post regular updates about translating resources and answer a lot of your queries in there.
|
||||
|
||||
Next, head to our [translation platform](https://translate.freecodecamp.org/) and login (if you have not contributed to translations before, you will need to create an account).
|
||||
|
||||
@@ -103,7 +107,7 @@ Crowdin separates a document into translatable "strings", usually sentences. Eac
|
||||
9. Here you can see the comments window. If you have questions or concerns about a particular string, you can leave a comment on the string here for other translators to see.
|
||||
10. These two "pane" buttons will hide the left (document) and right (comments) views.
|
||||
|
||||
> [!NOTE] If you see a hidden string that includes translations, please notify us in the [contributors chat room](https://discord.gg/PRyKn3Vbay) so we can remove the translation from memory.
|
||||
> [!NOTE] If you see a hidden string that includes translations, please notify us in the [Discord](https://discord.gg/PRyKn3Vbay) so we can remove the translation from memory.
|
||||
|
||||
When you have completed a translation for a string, select the `Save` button to store your translation on Crowdin. Other contributors will then be able to vote on your translation and proofreaders will be able to approve it.
|
||||
|
||||
@@ -306,4 +310,4 @@ Follow these guidelines to ensure our translations are as accurate as possible:
|
||||
- Do not add additional content. If you feel a challenge requires changes in the text content or additional information, you should propose the changes through a GitHub issue or a pull request that modifies the English file.
|
||||
- Do not change the order of content.
|
||||
|
||||
If you have any questions, feel free to reach out to us in our [contributors chat room](https://discord.gg/PRyKn3Vbay) and we will be happy to assist you.
|
||||
If you have any questions, feel free to reach out to us in our [Discord](https://discord.gg/PRyKn3Vbay) and we will be happy to assist you.
|
||||
|
||||
@@ -22,7 +22,16 @@ Happy contributing.
|
||||
|
||||
We are localizing freeCodeCamp.org to major world languages.
|
||||
|
||||
Certifications are already live in some major world languages like [Chinese (中文)](https://chinese.freecodecamp.org/learn), [Spanish (Español)](https://www.freecodecamp.org/espanol/learn), [Italian (Italiano)](https://www.freecodecamp.org/italian/learn), [Portuguese (Português)](https://www.freecodecamp.org/portuguese/learn). We encourage you to read the [announcement here](https://www.freecodecamp.org/news/world-language-translation-effort) and share it with your friends to get them excited about this.
|
||||
Certifications are already live in some major world languages like below:
|
||||
|
||||
- [Chinese (中文)](https://chinese.freecodecamp.org/learn)
|
||||
- [Spanish (Español)](https://www.freecodecamp.org/espanol/learn)
|
||||
- [Italian (Italiano)](https://www.freecodecamp.org/italian/learn)
|
||||
- [Portuguese (Português)](https://www.freecodecamp.org/portuguese/learn)
|
||||
- [Ukrainian (Українська)](https://www.freecodecamp.org/ukrainian/learn)
|
||||
- [Japanese (日本語)](https://www.freecodecamp.org/japanese/learn)
|
||||
|
||||
We encourage you to read the [announcement here](https://www.freecodecamp.org/news/help-translate-freecodecamp-language/) and share it with your friends to get them excited about this.
|
||||
|
||||
**If you're interested in translating, here's [how to translate freeCodeCamp's resources](how-to-translate-files.md).**
|
||||
|
||||
@@ -32,12 +41,12 @@ Our learning platform runs on a modern JavaScript stack. It has various componen
|
||||
|
||||
Broadly, we have a Node.js based API server, a set of React-based client applications, testing scripts to evaluate camper-submitted curriculum projects, and more. If you want to productively contribute to the learning platform, we recommend some familiarity with these tools.
|
||||
|
||||
Якщо ви хочете допомогти нам покращити нашу кодову базу...
|
||||
If you want to help us improve our codebase...
|
||||
|
||||
**Ви можете застосувати Gitpod — безплатне онлайн-середовище розробки, що запускає готове до кодування середовище для freeCodeCamp у вашому браузері.**
|
||||
**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.**
|
||||
|
||||
[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
|
||||
[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
|
||||
|
||||
Або ви можете...
|
||||
Or you can...
|
||||
|
||||
**[Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.**
|
||||
|
||||
Reference in New Issue
Block a user