Skip to content

Latest commit

 

History

History
105 lines (72 loc) · 4.32 KB

CONTRIBUTING.md

File metadata and controls

105 lines (72 loc) · 4.32 KB

Contributing

Code of Conduct

This project is subject to the Ubuntu Code of Conduct to foster an open and welcoming place to contribute. By participating in the project (in the form of code contributions, issues, comments, and other activities), you agree to abide by its terms.

Pull requests

Changes to this project should be proposed as pull requests on GitHub at: https://github.com/canonical/ubuntu-desktop-installer.

Contributor License Agreement

This project is subject to the Canonical contributor license agreement, please make sure you have signed it before (or shortly after) submitting your first pull request.

Specifications

UI and UX specifications are published as GitHub issues. Any specification issue without an assignee is up for grabs, if you start work on one of them please make sure to comment on the issue to say so, a project administrator will assign it to you.

Bugs

Bugs are also tracked as GitHub issues.

Translations

Translations are managed using Weblate. This project has the following translation components:

When translating the ubuntu-desktop-installer and ubuntu-localizations components, matching ubiquity translations are suggested in the Automatic suggestions tab below, and matching terms are offered in the Glossary sidebar of the translation editor.

NOTE: The Weblate project is integrated with the GitHub project. Weblate pushes changes daily and opens a pull request on GitHub.

Internationalization

This project uses Flutter's tools for internationalization.

The templates containing all the messages to be translated live in:

  • packages/ubuntu_desktop_installer/lib/l10n/app_en.arb
  • packages/ubuntu_wizard/lib/src/l10n/ubuntu_en.arb
  • packages/ubuntu_wsl_setup/lib/l10n/app_en.arb

When new messages are added in the source code, they also need to be added to the appropriate translation template, and the translation files need to be re-generated.

You can run either

melos run gen-l10n

to re-generate translations for all packages, or

flutter gen-l10n

in a package directory to generate translations for a specific package.

The ubuntu_en.arb translation template has one special string (languageName) that is used to determine whether that language should be offered to the user on the welcome screen. If a translation isn't complete enough, or of insufficient quality, just make languageName an empty string (by default it inherits the value from the English template, so it's not empty), and it won't show up as available in the UI.

Code Generation

This project uses freezed and json_serializable to generate immutable data classes with JSON serialization support. Adding new types or members to classes annotated with @freezed or @JsonSerializable requires the code to be re-generated (see also the Melos section below):

melos run generate

Melos

The project provides a Melos configuration to make it straightforward to execute certain tasks across the project tree.

Install Melos:

dart pub global activate melos

Bootstrap the workspace:

melos bootstrap

Select a task interactively:

melos run

Run a specific task directly:

melos run coverage