From afced8d93eee1061aaaab0d296e4648f69b567bb Mon Sep 17 00:00:00 2001 From: Queen Date: Apr 02 2021 18:22:18 +0000 Subject: [PATCH 1/8] added how to generate your public ssh key on the README.md file --- diff --git a/README.md b/README.md index 9148773..4193fd9 100644 --- a/README.md +++ b/README.md @@ -25,15 +25,36 @@ The landingpage is now running at * Try Fedora QA Dashboard yourself, clone the repo, browse the code, try to do a small change and see the results. If you want to start contributing to this project, look for issues tagged "easyfix". + +### How to generate your public SSH Key, because you will need it before you can do a pull request + +* Before generating your key, you should check to make sure you dont already have your ssh key + +* You can easily check to see if you already have the key by going to the directory and listing it + + $ cd ~/.ssh + $ ls + authorized_keys2 id_dsa known_hosts + config id_dsa.pub + +* Open your shell/terminal and type in the command + + $ ssh-keygen -o + +* Visit (https://git-scm.com/book/en/v2/Git-on-the-Server-Generating-Your-SSH-Public-Key) for more information on SSH Keys. + ### How to do pull requests * create an account on Pagure, don't forget to add your public ssh key to Pagure (click on your avatar > My settings > SSH Keys > Add SSH key) * fork this repository (upper right corner) -* clone your forked repo using SSH option +* clone your forked repo using SSH option by running the command below +``` +$ git clone +``` -* add our repo as upstream remote +* add our repo as upstream remote by running the command below ``` $ git remote add upstream https://pagure.io/fedora-qa/landingpage.git ``` From aa4fd144eab07cfb56860cac841867619f37b16e Mon Sep 17 00:00:00 2001 From: Queen Date: Apr 08 2021 03:50:36 +0000 Subject: [PATCH 2/8] Changed Source Link component from Class based to funtional and also added icon and onpress props to Source link component --- diff --git a/src/landingpage/Blockers.js b/src/landingpage/Blockers.js index 30b923a..34d7366 100644 --- a/src/landingpage/Blockers.js +++ b/src/landingpage/Blockers.js @@ -14,7 +14,7 @@ class Blockers extends Component {

Fedora {this.props.release} blockers and FEs{" "} - +

diff --git a/src/landingpage/Events.js b/src/landingpage/Events.js index 54eb80b..ee1ba9c 100644 --- a/src/landingpage/Events.js +++ b/src/landingpage/Events.js @@ -32,7 +32,7 @@ class Events extends Component {

Meetings and testdays in the next 7 days{" "} - +

    {meetings}
@@ -46,9 +46,7 @@ class Event extends Component {
  • {this.props.start}
    - - {this.props.summary} - +
  • ) diff --git a/src/landingpage/Hideable.js b/src/landingpage/Hideable.js index aac075a..f8dc7de 100644 --- a/src/landingpage/Hideable.js +++ b/src/landingpage/Hideable.js @@ -1,5 +1,6 @@ import React, { Component } from "react" import _ from "lodash" +import SourceLink from "./SourceLink" class Hideable extends Component { constructor(props) { @@ -22,13 +23,13 @@ class Hideable extends Component { : "" }> {this.props.children} - this.props.toggle_handler(e, this.props.component_name)} - role="button"> - {this.props.is_enabled ? "Disable" : "Enable"} - + linkName = {this.props.is_enabled ? "Disable" : "Enable"} + role="button" + />
    ) } diff --git a/src/landingpage/LandingPage.js b/src/landingpage/LandingPage.js index b1bee82..e480ed1 100644 --- a/src/landingpage/LandingPage.js +++ b/src/landingpage/LandingPage.js @@ -14,6 +14,7 @@ import { connect } from "react-redux" import { loadData } from "../actions/reduxActions" import Cookies from "universal-cookie" +import SourceLink from "./SourceLink" class LandingPage extends Component { constructor(props) { @@ -113,6 +114,7 @@ class LandingPage extends Component { ? "Save changes" : "Configure visibility of the info-cards"} +
    diff --git a/src/landingpage/Minutes.js b/src/landingpage/Minutes.js index 4f88f2b..f7b21d3 100644 --- a/src/landingpage/Minutes.js +++ b/src/landingpage/Minutes.js @@ -1,4 +1,5 @@ import React, { Component } from "react" +import SourceLink from "./SourceLink" class Events extends Component { render() { @@ -6,17 +7,11 @@ class Events extends Component {

    Fedora QA Meeting Minutes

    - - Latest minutes from {this.props.data.date} - +
    Visit{" "} - - meetbot - {" "} + + {" "} to see older.
    diff --git a/src/landingpage/SourceLink.js b/src/landingpage/SourceLink.js index 76cfa0b..a454a8a 100644 --- a/src/landingpage/SourceLink.js +++ b/src/landingpage/SourceLink.js @@ -1,17 +1,23 @@ -import React, {Component} from 'react' -class SourceLink extends Component { - render() { - return ( - - - - ) - } +import React from 'react' + +const SourceLink = ({ href, className, linkName, onClick, role, icon }) => { + + return ( + + {icon && } + + {linkName} + + + ) } export default SourceLink diff --git a/src/landingpage/Timeline.js b/src/landingpage/Timeline.js index 1de10c5..ee199c2 100644 --- a/src/landingpage/Timeline.js +++ b/src/landingpage/Timeline.js @@ -50,7 +50,7 @@ class Timeline extends Component {

    Current development schedule{" "} - +

    diff --git a/src/layout/Footer.js b/src/layout/Footer.js index f6cd591..d7693b0 100644 --- a/src/layout/Footer.js +++ b/src/layout/Footer.js @@ -1,11 +1,12 @@ import React, { Component } from "react" +import SourceLink from "../landingpage/SourceLink" class Footer extends Component { render() { return (
    - Source on Pagure{" "} + on Pagure{" "} version 0.1.0
    diff --git a/src/wizard/Easyfix.js b/src/wizard/Easyfix.js index ebccbfc..7e392eb 100644 --- a/src/wizard/Easyfix.js +++ b/src/wizard/Easyfix.js @@ -1,4 +1,5 @@ import React, { Component } from "react" +import SourceLink from "../landingpage/SourceLink" import { CollapsableCard } from "./components" export default class Easyfix extends Component { @@ -76,9 +77,7 @@ class EasyfixLinksList extends Component { render() { const items = this.props.data.map((action) => (
  • - - {action.name} - +
  • )) diff --git a/src/wizard/FedoraEasyKarma.js b/src/wizard/FedoraEasyKarma.js index d4e6be6..aea974b 100644 --- a/src/wizard/FedoraEasyKarma.js +++ b/src/wizard/FedoraEasyKarma.js @@ -1,4 +1,5 @@ import React, { Component } from "react" +import SourceLink from "../landingpage/SourceLink" import { CollapsableBadge } from "./components" export default class FedoraEasyKarmaItemsList extends Component { @@ -12,9 +13,9 @@ export default class FedoraEasyKarmaItemsList extends Component { needs to be tested and proved functional.{" "} The updates are kept in{" "} - - Bodhi - + + + , which acts as a gatekeeper between new package releases and the stable repositories.{" "} Users (or automated systems) can then provide feedback in form of positive/negative Karma, marking the update as working (or not) within the scope of their expectations.{" "} @@ -29,12 +30,8 @@ export default class FedoraEasyKarmaItemsList extends Component {
    • Visit{" "} - - FAS Sign-up page - {" "} + + {" "} and create it.
    • Note the username and password, you will need it later on.
    • @@ -101,12 +98,8 @@ export default class FedoraEasyKarmaItemsList extends Component { far as you can tell), or -1 to mark the package as broken.{" "}
      Not sure you can judge the package's state? Have a look at the{" "} - - Update Feedback Guidelines - + +
      Still not sure? Just press Enter to skip it. diff --git a/src/wizard/FedoraManualTesting.js b/src/wizard/FedoraManualTesting.js index 21fbc21..f852ab2 100644 --- a/src/wizard/FedoraManualTesting.js +++ b/src/wizard/FedoraManualTesting.js @@ -1,5 +1,6 @@ import React, { Component } from "react" import { Modal, ModalHeader, ModalBody, ModalFooter } from "reactstrap" +import SourceLink from "../landingpage/SourceLink" import { CollapsableCard, CollapsableBadge } from "./components" export default class FedoraManualTesting extends Component { @@ -91,12 +92,8 @@ class FedoraManualTestingItemsListSub1 extends Component { environments like EC2 or Openstack, you can also perform them locally using Testcloud.
      Have a look at the{" "} - - Cloud provider setup - {" "} + + {" "} guides for more details. ) @@ -164,9 +161,8 @@ class FedoraManualTestingItem extends Component {
      1. Identify the testcase and `environment` in our{" "} - - Tescase matrix - {" "} + +
        • @@ -186,9 +182,8 @@ class FedoraManualTestingItem extends Component {
        • Read the{" "} - - Testcase - {" "} + + {" "} briefly, just to have a general idea of what you will be doing.{" "} The testcases are generally split into four sections: @@ -215,12 +210,8 @@ class FedoraManualTestingItem extends Component {
        • Based on the enviromnent, select and download and appropriate ISO{" "} - - here - + + .{" "}
            @@ -253,9 +244,8 @@ class FedoraManualTestingItem extends Component {
          • Study the{" "} - - Testcase - {" "} + + {" "} thoroughly, to be sure you know what to do.{" "}
              @@ -288,12 +278,8 @@ class FedoraManualTestingItem extends Component { IRC channel #fedora-qa at freenode.net{" "} If you are not that familiar with IRC, you can use the{" "} - - web-interface - {" "} + + {" "} just enter a Nickname of your choice, #fedora-qa (including the hash sign) in the Channels field, and click Connect. @@ -307,9 +293,8 @@ class FedoraManualTestingItem extends Component { Great! Either use relval report-results on command line (make sure to install the relval package first), or modify the{" "} - - matrix - {" "} + + {" "} directly by clicking on the Edit link next to the Matrice's header, and put {{result|pass|YOUR_NAME_HERE|}} in the appropriate spot. @@ -351,9 +336,8 @@ class FedoraManualTestingItem extends Component { Once you get the Bug reported, make sure to also submit the result into the testing matrix. Either use relval report-results on command line (make sure to install the relval package first), or modify the{" "} - - matrix - {" "} + + {" "} directly by clicking on the Edit link next to the Matrice's header, and put {{result|fail|YOUR_NAME_HERE|BUG_NUMBER|}} in the appropriate spot. @@ -388,9 +372,12 @@ class ModalInfo extends Component { return (
              - this.toggle(e)}> - {this.props.buttonLabel} - + + this.toggle(e)} + /> Nothing sparked joy?
              None of the above looks interesting to you? We'd be happy if you looked around at{" "} - https://whatcanidoforfedora.org/! + + !
              diff --git a/yarn.lock b/yarn.lock index 85bfaa4..c4c6e7c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5190,6 +5190,11 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= +i18n-js@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/i18n-js/-/i18n-js-3.8.0.tgz#b8fd6b12e1d88cb71f9806c29bca7c31c012e504" + integrity sha512-hDsGgPuvw/2P+lXSbOafAwspK8Ste8YrwuuUg17W3wEcO1JkQxBlPgsN1t2+852nTnz4YSYTjZc/1nAA2PC/nw== + iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" From 78fcd275a452ab6ab51996c786fd107fe5c74856 Mon Sep 17 00:00:00 2001 From: Queen Date: Apr 15 2021 04:18:29 +0000 Subject: [PATCH 3/8] initial commit for my translation process --- diff --git a/package.json b/package.json index 20d0779..1046e3c 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "dependencies": { "bootstrap": "^4.4.1", "dateformat": "^3.0.3", + "i18n-js": "^3.8.0", "react": "^16.5.2", "react-dom": "^16.5.2", "react-redux": "^7.2.1", diff --git a/src/actions/reduxActions.js b/src/actions/reduxActions.js index 80a3461..a1f0ef2 100644 --- a/src/actions/reduxActions.js +++ b/src/actions/reduxActions.js @@ -12,13 +12,13 @@ export const loadData = payload => dispatch => { }); fetch(window.env.ORACULUM_API_URL_v1 + "landing_page") - .then(blob => blob.json()) - .then(data => { - dispatch(loadDataResp(data)) - }) - .catch((error) => { - console.error('Error:', error); - }); + .then(blob => blob.json()) + .then(data => { + dispatch(loadDataResp(data)) + }) + .catch((error) => { + console.error('Error:', error); + }); } export const loadWizardDataResp = payload => ({ @@ -33,11 +33,18 @@ export const loadWizardData = payload => dispatch => { }); fetch(window.env.ORACULUM_API_URL_v1 + "actions/all") - .then(blob => blob.json()) - .then(data => { - dispatch(loadWizardDataResp(data)) + .then(blob => blob.json()) + .then(data => { + dispatch(loadWizardDataResp(data)) + }) + .catch((error) => { + console.error('Error:', error); + }); +} + +export const changeLanguage = payload => dispatch => { + dispatch({ + type: ActionTypes.CHANGE_LANGUAGE, + payload: payload }) - .catch((error) => { - console.error('Error:', error); - }); } diff --git a/src/constants/index.js b/src/constants/index.js index c6bfe99..e10f66f 100644 --- a/src/constants/index.js +++ b/src/constants/index.js @@ -3,4 +3,5 @@ export default { LOAD_DATA_RESP: 'LOAD_DATA_RESP', LOAD_WIZARD_DATA: 'LOAD_WIZARD_DATA', LOAD_WIZARD_DATA_RESP: 'LOAD_WIZARD_DATA_RESP', + CHANGE_LANGUAGE: 'CHANGE_LANGUAGE', } diff --git a/src/landingpage/Blockers.js b/src/landingpage/Blockers.js index 34d7366..7f33d06 100644 --- a/src/landingpage/Blockers.js +++ b/src/landingpage/Blockers.js @@ -1,6 +1,7 @@ import React, { Component } from "react" import { Row } from "reactstrap" import SourceLink from "./SourceLink" +import {connect} from "react-redux" class Blockers extends Component { constructor(props) { @@ -9,11 +10,12 @@ class Blockers extends Component { } render() { + const {i18n} = this.props if (this.props.data) return (

              - Fedora {this.props.release} blockers and FEs{" "} + Fedora {this.props.release}{i18n.t('phrases.blockers_and_FEs')}{" "}

              @@ -28,19 +30,19 @@ class Blockers extends Component {
    - + - + - + - + @@ -52,25 +54,25 @@ class Blockers extends Component { - + - + - + - + @@ -82,4 +84,10 @@ class Blockers extends Component { } } -export default Blockers +const mapStateToProps = (state)=>{ + return{ + ...state.locale + } +} + +export default connect(mapStateToProps)(Blockers) diff --git a/src/landingpage/Events.js b/src/landingpage/Events.js index ee1ba9c..d780e4c 100644 --- a/src/landingpage/Events.js +++ b/src/landingpage/Events.js @@ -1,6 +1,7 @@ import React, { Component } from "react" import dateFormat from "dateformat" import SourceLink from './SourceLink' +import {connect} from "react-redux" class Events extends Component { constructor(props) { @@ -9,6 +10,7 @@ class Events extends Component { } render() { + const {i18n} = this.props const meetings = this.props.data.map((meeting) => { const old = new Date(meeting.start) var meeting_start = dateFormat( @@ -31,7 +33,7 @@ class Events extends Component { return (

    - Meetings and testdays in the next 7 days{" "} + {i18n.t('phrases.Meetings_and_testdays_in_the_next_7_days')}{" "}

      {meetings}
    @@ -53,4 +55,11 @@ class Event extends Component { } } -export default Events +const mapStateToProps = (state) =>{ + return{ + ...state.locale + } +} + + +export default connect(mapStateToProps)(Events) diff --git a/src/landingpage/LandingPage.js b/src/landingpage/LandingPage.js index e480ed1..f37bfbe 100644 --- a/src/landingpage/LandingPage.js +++ b/src/landingpage/LandingPage.js @@ -11,7 +11,7 @@ import Hideable from "./Hideable" import _ from "lodash" import { connect } from "react-redux" -import { loadData } from "../actions/reduxActions" +import { loadData, changeLanguage } from "../actions/reduxActions" import Cookies from "universal-cookie" import SourceLink from "./SourceLink" @@ -40,6 +40,7 @@ class LandingPage extends Component { componentDidMount() { this.props.dispatch(loadData()) + this.props.dispatch(changeLanguage('fr')) } toggle_config_mode(e) { @@ -90,6 +91,8 @@ class LandingPage extends Component { ))} )) + + const { i18n } = this.props return (
    @@ -123,8 +126,7 @@ class LandingPage extends Component { className="btn btn-primary btn-block btn-wrap-text btn-lg active" to="/wizard" role="button"> - Do you have some spare time? Feeling like helping others? Wanna improve Fedora? - Click here! + {i18n.t('phrases.do_you_have_some_spare_time')}
    @@ -137,7 +139,7 @@ class LandingPage extends Component { const mapStateToProps = (state) => { return { ...state.landing_page, + ...state.locale } } - export default connect(mapStateToProps)(LandingPage) diff --git a/src/landingpage/Minutes.js b/src/landingpage/Minutes.js index f7b21d3..2be0af9 100644 --- a/src/landingpage/Minutes.js +++ b/src/landingpage/Minutes.js @@ -1,18 +1,21 @@ import React, { Component } from "react" import SourceLink from "./SourceLink" +import {connect} from "react-redux" class Events extends Component { + render() { + const {i18n} = this.props return (
    -

    Fedora QA Meeting Minutes

    +

    {i18n.t('phrases.Fedora_QA_Meeting_Minutes')}


    - Visit{" "} + {i18n.t('words.Visit')}{" "} {" "} - to see older. + {i18n.t('phrases.to_see_older')}.
    @@ -20,4 +23,10 @@ class Events extends Component { } } -export default Events +const mapStateToProps = (state) =>{ + return{ + ...state.locale + } +} + +export default connect(mapStateToProps)(Events) diff --git a/src/landingpage/Timeline.js b/src/landingpage/Timeline.js index ee199c2..6500c89 100644 --- a/src/landingpage/Timeline.js +++ b/src/landingpage/Timeline.js @@ -1,6 +1,8 @@ import React, { Component } from "react" import SourceLink from './SourceLink' +import {connect} from "react-redux" + class Timeline extends Component { constructor(props) { super(props) @@ -20,6 +22,7 @@ class Timeline extends Component { } render() { + const {i18n} =this.props const line = this.props.data.map((milestone) => { return (
    diff --git a/src/landingpage/LandingPage.js b/src/landingpage/LandingPage.js index 32b87a0..da94bd0 100644 --- a/src/landingpage/LandingPage.js +++ b/src/landingpage/LandingPage.js @@ -12,6 +12,7 @@ import _ from "lodash" import { connect } from "react-redux" import { loadData, changeLanguage } from "../actions/reduxActions" +import '../index.css' import Cookies from "universal-cookie" class LandingPage extends Component { @@ -93,14 +94,14 @@ class LandingPage extends Component { const { i18n } = this.props return ( -
    +
    - + {i18n.t('phrases.change_language')} - this.props.dispatch(changeLanguage('en')) } >English - this.props.dispatch(changeLanguage('fr'))} >French + this.props.dispatch(changeLanguage('en')) } >English + this.props.dispatch(changeLanguage('fr'))} >French
    @@ -126,8 +127,8 @@ class LandingPage extends Component { className="badge badge-secondary events" role="button"> {this.state.config_mode - ? "{i18n.t('phrases.save_changes')}" - : "{i18n.t('phrases.configure_visibility')}"} + ? `${i18n.t('phrases.save_changes')}` + : `${i18n.t('phrases.configure_visibility')}`}
    diff --git a/src/translations/en.js b/src/translations/en.js index 8a202c5..3586f33 100644 --- a/src/translations/en.js +++ b/src/translations/en.js @@ -17,7 +17,7 @@ export default{ phrases:{ Show_me:"Show me", - change_language:"ChangeLanguage", + change_language:"Change Language", and_or:"and/or", save_changes:"Save changes", configure_visibility:"Configure visibility of the info-cards", @@ -123,7 +123,7 @@ export default{ to_mark_positive:"to mark positive karma (the update works just fine, as far as you can tell), or", not_sure_you_can:"Not sure you can judge the package's state? Have a look at the", add_a_comment:"Add a comment - even if it works, try to describe what you tested. It can be as easy as", - do_you_have_some_spare_time: " Do you have some spare time? Feeling like helping others? Wanna improve Fedora?Click here!", + do_you_have_some_spare_time: " Do you have some spare time? Feeling like helping others? Wanna improve Fedora ? Click here!", The_goal_of_release_validation_testing_is_to_ensure:"The goal of release validation testing is to ensure the release candidate meets the requirements for Fedora releases. You will manually execute test cases to verify installation and basic functionality of the various Fedora products.", Simple_voting_system_that_allows_for_esters_to_provide_feedback_as:"Simple voting system that allows for testers to provide feedback as to whether a given package update works or not.", Number_of_projects_within_Fedora_which_are_looking_for_help:"Number of projects within Fedora which are looking for help. These tasks have been evaluated as easy entrance point.", diff --git a/src/translations/fr.js b/src/translations/fr.js index 73b4558..85e7063 100644 --- a/src/translations/fr.js +++ b/src/translations/fr.js @@ -122,7 +122,7 @@ export default{ Tell_me_more_about:"Dites-m'en plus sur le processus ! ", you_are_then_presented:"Les mises à jour pertinentes vous sont ensuite présentées une par une, afin de soumettre Karma et un commentaire.", add_a_comment:"Ajoutez un commentaire - même si cela fonctionne, essayez de décrire ce que vous avez testé. Cela peut être aussi simple que", - do_you_have_some_spare_time: " Vous avez un peu de temps libre ? Tu as envie d'aider les autres ? Si vous voulez améliorer Fedora, cliquez ici !", + do_you_have_some_spare_time: " Vous avez un peu de temps libre ? Tu as envie d'aider les autres ? Voulez vous améliorer Fedora ? Cliquez ici !", The_goal_of_release_validation_testing_is_to_ensure:"L'objectif des tests de validation des versions est de s'assurer que la version candidate répond aux exigences des versions de Fedora. Vous exécuterez manuellement des cas de test pour vérifier l'installation et les fonctionnalités de base des différents produits Fedora.", Simple_voting_system_that_allows_for_esters_to_provide_feedback_as:"Un système de vote simple qui permet aux testeurs de donner leur avis sur le fonctionnement ou non d'une mise à jour de paquet donnée.", Number_of_projects_within_Fedora_which_are_looking_for_help:"Nombre de projets au sein de Fedora qui recherchent de l'aide. Ces tâches ont été évaluées comme des points d'entrée faciles.", diff --git a/src/wizard/FedoraManualTesting.js b/src/wizard/FedoraManualTesting.js index 3ea4a75..3c8b85f 100644 --- a/src/wizard/FedoraManualTesting.js +++ b/src/wizard/FedoraManualTesting.js @@ -3,8 +3,7 @@ import { Modal, ModalHeader, ModalBody, ModalFooter } from "reactstrap" import SourceLink from "../landingpage/SourceLink" import { CollapsableCard, CollapsableBadge } from "./components" -import {connect} from "react-redux" -import { i18n } from "dateformat" +import { connect } from "react-redux" class FedoraManualTesting extends Component { render() { @@ -45,7 +44,7 @@ class FedoraManualTestingItemsListSub1 extends Component { case "Installation": l1 = (
    - The Installation {i18n.t('phrases.testcases_generally')} + The Installationtestcases generally deal with a part of the installation procedure.
    You will certainly need an installation ISO, and either a Virtual or Bare-metal machine to run the test. @@ -115,7 +114,7 @@ class FedoraManualTestingItemsListSub1 extends Component { class FedoraManualTestingItem extends Component { render() { - const {i18n} = this.props + const { i18n } = this.props const extra_data = this.props.data.extra_data const tc_url = extra_data.testcase_url @@ -165,7 +164,7 @@ class FedoraManualTestingItem extends Component {
    1. Identify the testcase and `environment` in our{" "} - +
        @@ -186,7 +185,7 @@ class FedoraManualTestingItem extends Component {
      • Read the{" "} - + {" "} briefly, just to have a general idea of what you will be doing.{" "} @@ -214,7 +213,7 @@ class FedoraManualTestingItem extends Component {
      • Based on the enviromnent, select and download and appropriate ISO{" "} - + .{" "} @@ -248,7 +247,7 @@ class FedoraManualTestingItem extends Component {
      • Study the{" "} - + {" "} thoroughly, to be sure you know what to do.{" "} @@ -282,8 +281,8 @@ class FedoraManualTestingItem extends Component { IRC channel #fedora-qa at freenode.net{" "} If you are not that familiar with IRC, you can use the{" "} - - {" "} + + {" "} just enter a Nickname of your choice, #fedora-qa (including the hash sign) in the Channels field, and click Connect. @@ -297,7 +296,7 @@ class FedoraManualTestingItem extends Component { Great! Either use relval report-results on command line (make sure to install the relval package first), or modify the{" "} - + {" "} directly by clicking on the Edit link next to the Matrice's header, and put {{result|pass|YOUR_NAME_HERE|}} in the @@ -307,7 +306,7 @@ class FedoraManualTestingItem extends Component { Awesome! Ideally read up on https://fedoraproject.org/wiki/How_to_file_a_bug_report
        - {i18n.t('phrases.if_you_dont')} + If you don't feel like reading a wall of text, at least pot together a small document containing:
        • Brief description of what went wrong (e.g. "QA:Testcase_dualboot_with_windows - @@ -339,8 +338,8 @@ class FedoraManualTestingItem extends Component { Once you get the Bug reported, make sure to also submit the result into the testing matrix. Either use relval report-results on command line (make sure to install the relval package first), or modify the{" "} - - {" "} + + {" "} directly by clicking on the Edit link next to the Matrice's header, and put {{result|fail|YOUR_NAME_HERE|BUG_NUMBER|}} in the appropriate spot. @@ -398,11 +397,11 @@ class ModalInfo extends Component { } } -const mapPropsToStates = (state) =>{ - return{ +const mapStateToProps = (state) => { + return { ...state.locale } } -export default connect(mapPropsToStates)(FedoraManualTesting, FedoraManualTestingItem) \ No newline at end of file +export default connect(mapStateToProps)(FedoraManualTesting) \ No newline at end of file diff --git a/src/wizard/Wizard.js b/src/wizard/Wizard.js index 5cd9b32..dc35cc2 100644 --- a/src/wizard/Wizard.js +++ b/src/wizard/Wizard.js @@ -6,7 +6,7 @@ import Actions from "./Actions" import { Container, Row } from "reactstrap" import { connect } from "react-redux" -import { loadWizardData } from "../actions/reduxActions" +import { loadWizardData} from "../actions/reduxActions" class Wizard extends Component { constructor(props) { super(props) diff --git a/src/wizard/WizardForm.js b/src/wizard/WizardForm.js index 0a61411..1bc4aed 100644 --- a/src/wizard/WizardForm.js +++ b/src/wizard/WizardForm.js @@ -4,10 +4,6 @@ import _ from "lodash" import { connect } from "react-redux" -const durationString = { - 3: "Few hours", - 72: "Several days", -} class WizardForm extends Component { constructor(props) { @@ -18,6 +14,11 @@ class WizardForm extends Component { } } + durationString = { + 3: `${this.props.i18n.t('phrases.Few_hours')}`, + 72: `${this.props.i18n.t('phrases.Several_days')}`, + } + provider_selected(provider) { const tags = _(this.props.actions[provider.provider]) .flatMap((action) => action.tags) @@ -77,7 +78,7 @@ class WizardForm extends Component { return (
          -

          {durationString[duration]}

          +

          {this.durationString[duration]}

          {duration_providers}
          ) From bd505983c5fa52bd9d92d1d43da5db889185ebf7 Mon Sep 17 00:00:00 2001 From: Queen Date: Apr 22 2021 11:04:42 +0000 Subject: [PATCH 6/8] resolving conflicts --- diff --git a/package.json b/package.json index 20d0779..1046e3c 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "dependencies": { "bootstrap": "^4.4.1", "dateformat": "^3.0.3", + "i18n-js": "^3.8.0", "react": "^16.5.2", "react-dom": "^16.5.2", "react-redux": "^7.2.1", diff --git a/src/actions/reduxActions.js b/src/actions/reduxActions.js index 80a3461..a1f0ef2 100644 --- a/src/actions/reduxActions.js +++ b/src/actions/reduxActions.js @@ -12,13 +12,13 @@ export const loadData = payload => dispatch => { }); fetch(window.env.ORACULUM_API_URL_v1 + "landing_page") - .then(blob => blob.json()) - .then(data => { - dispatch(loadDataResp(data)) - }) - .catch((error) => { - console.error('Error:', error); - }); + .then(blob => blob.json()) + .then(data => { + dispatch(loadDataResp(data)) + }) + .catch((error) => { + console.error('Error:', error); + }); } export const loadWizardDataResp = payload => ({ @@ -33,11 +33,18 @@ export const loadWizardData = payload => dispatch => { }); fetch(window.env.ORACULUM_API_URL_v1 + "actions/all") - .then(blob => blob.json()) - .then(data => { - dispatch(loadWizardDataResp(data)) + .then(blob => blob.json()) + .then(data => { + dispatch(loadWizardDataResp(data)) + }) + .catch((error) => { + console.error('Error:', error); + }); +} + +export const changeLanguage = payload => dispatch => { + dispatch({ + type: ActionTypes.CHANGE_LANGUAGE, + payload: payload }) - .catch((error) => { - console.error('Error:', error); - }); } diff --git a/src/constants/index.js b/src/constants/index.js index c6bfe99..e10f66f 100644 --- a/src/constants/index.js +++ b/src/constants/index.js @@ -3,4 +3,5 @@ export default { LOAD_DATA_RESP: 'LOAD_DATA_RESP', LOAD_WIZARD_DATA: 'LOAD_WIZARD_DATA', LOAD_WIZARD_DATA_RESP: 'LOAD_WIZARD_DATA_RESP', + CHANGE_LANGUAGE: 'CHANGE_LANGUAGE', } diff --git a/src/index.css b/src/index.css index 27f6835..3021cc4 100644 --- a/src/index.css +++ b/src/index.css @@ -138,3 +138,17 @@ ol.steps > li { border-top-style: solid; border-top-width: 1px; } + +.drop-down-container{ + width: 200px; + height: 100px; + display: flex; + justify-content: center; + align-items: center; + position: absolute; + right:0px +} + +.drop-down-container :hover{ + cursor: pointer; +} \ No newline at end of file diff --git a/src/landingpage/Blockers.js b/src/landingpage/Blockers.js index 30b923a..9c78e2d 100644 --- a/src/landingpage/Blockers.js +++ b/src/landingpage/Blockers.js @@ -1,6 +1,7 @@ import React, { Component } from "react" import { Row } from "reactstrap" import SourceLink from "./SourceLink" +import {connect} from "react-redux" class Blockers extends Component { constructor(props) { @@ -9,12 +10,13 @@ class Blockers extends Component { } render() { + const {i18n} = this.props if (this.props.data) return (

          - Fedora {this.props.release} blockers and FEs{" "} - + Fedora {this.props.release}{i18n.t('phrases.blockers_and_FEs')}{" "} +

          @@ -28,19 +30,19 @@ class Blockers extends Component {
    - + - + - + - + @@ -52,25 +54,25 @@ class Blockers extends Component { - + - + - + - + @@ -82,4 +84,10 @@ class Blockers extends Component { } } -export default Blockers +const mapStateToProps = (state)=>{ + return{ + ...state.locale + } +} + +export default connect(mapStateToProps)(Blockers) diff --git a/src/landingpage/Events.js b/src/landingpage/Events.js index 54eb80b..51c13fb 100644 --- a/src/landingpage/Events.js +++ b/src/landingpage/Events.js @@ -1,6 +1,7 @@ import React, { Component } from "react" import dateFormat from "dateformat" import SourceLink from './SourceLink' +import {connect} from "react-redux" class Events extends Component { constructor(props) { @@ -9,6 +10,7 @@ class Events extends Component { } render() { + const {i18n} = this.props const meetings = this.props.data.map((meeting) => { const old = new Date(meeting.start) var meeting_start = dateFormat( @@ -31,8 +33,8 @@ class Events extends Component { return (

    - Meetings and testdays in the next 7 days{" "} - + {i18n.t('phrases.Meetings_and_testdays_in_the_next_7_days')}{" "} +

      {meetings}
    @@ -55,4 +57,11 @@ class Event extends Component { } } -export default Events +const mapStateToProps = (state) =>{ + return{ + ...state.locale + } +} + + +export default connect(mapStateToProps)(Events) diff --git a/src/landingpage/LandingPage.js b/src/landingpage/LandingPage.js index b1bee82..3fdaa24 100644 --- a/src/landingpage/LandingPage.js +++ b/src/landingpage/LandingPage.js @@ -1,5 +1,5 @@ -import React, { Component } from "react" -import { Container, Row } from "reactstrap" +import React, { Component, useState } from "react" +import { Container, Row ,DropdownToggle,DropdownItem,DropdownMenu,UncontrolledDropdown} from "reactstrap" import { Link } from "react-router-dom" import Layout from "../layout/Layout" import Timeline from "./Timeline" @@ -7,14 +7,14 @@ import Events from "./Events" import Blockers from "./Blockers" import Minutes from "./Minutes" import Hideable from "./Hideable" - + import _ from "lodash" - + import { connect } from "react-redux" -import { loadData } from "../actions/reduxActions" - +import { loadData, changeLanguage } from "../actions/reduxActions" +import '../index.css' + import Cookies from "universal-cookie" - class LandingPage extends Component { constructor(props) { super(props) @@ -36,17 +36,18 @@ class LandingPage extends Component { enabled_components: enabled_components, } } - + componentDidMount() { this.props.dispatch(loadData()) + this.props.dispatch(changeLanguage('en')) } - + toggle_config_mode(e) { let config_mode = !this.state.config_mode this.setState({ config_mode: config_mode }) e.preventDefault() } - + toggle_component_visibility(e, name) { if (name === undefined) { e.preventDefault() @@ -63,7 +64,7 @@ class LandingPage extends Component { this.setState({ enabled_components: enabled_components }) e.preventDefault() } - + render() { const available_components = { events: , @@ -89,8 +90,24 @@ class LandingPage extends Component { ))} )) + + const { i18n } = this.props return ( +
    + + + {i18n.t('phrases.change_language')} + + + this.props.dispatch(changeLanguage('en')) } >English + this.props.dispatch(changeLanguage('fr'))} >French + + +
    + + +
    @@ -110,9 +127,10 @@ class LandingPage extends Component { className="badge badge-secondary events" role="button"> {this.state.config_mode - ? "Save changes" - : "Configure visibility of the info-cards"} + ? `${i18n.t('phrases.save_changes')}` + : `${i18n.t('phrases.configure_visibility')}`} +
    @@ -121,8 +139,7 @@ class LandingPage extends Component { className="btn btn-primary btn-block btn-wrap-text btn-lg active" to="/wizard" role="button"> - Do you have some spare time? Feeling like helping others? Wanna improve Fedora? - Click here! + {i18n.t('phrases.do_you_have_some_spare_time')} @@ -131,11 +148,11 @@ class LandingPage extends Component { ) } } - + const mapStateToProps = (state) => { return { ...state.landing_page, + ...state.locale } } - -export default connect(mapStateToProps)(LandingPage) +export default connect(mapStateToProps)(LandingPage) \ No newline at end of file diff --git a/src/landingpage/Minutes.js b/src/landingpage/Minutes.js index 4f88f2b..922062e 100644 --- a/src/landingpage/Minutes.js +++ b/src/landingpage/Minutes.js @@ -1,23 +1,23 @@ import React, { Component } from "react" +import SourceLink from "./SourceLink" +import {connect} from "react-redux" class Events extends Component { + render() { + const {i18n} = this.props return (
    -

    Fedora QA Meeting Minutes

    +

    {i18n.t('phrases.Fedora_QA_Meeting_Minutes')}

    Latest minutes from {this.props.data.date}
    - Visit{" "} - - meetbot - {" "} - to see older. + {i18n.t('words.Visit')}{" "} + + {" "} + {i18n.t('phrases.to_see_older')}.
    @@ -25,4 +25,10 @@ class Events extends Component { } } -export default Events +const mapStateToProps = (state) =>{ + return{ + ...state.locale + } +} + +export default connect(mapStateToProps)(Events) diff --git a/src/landingpage/Timeline.js b/src/landingpage/Timeline.js index 1de10c5..6500c89 100644 --- a/src/landingpage/Timeline.js +++ b/src/landingpage/Timeline.js @@ -1,6 +1,8 @@ import React, { Component } from "react" import SourceLink from './SourceLink' +import {connect} from "react-redux" + class Timeline extends Component { constructor(props) { super(props) @@ -20,6 +22,7 @@ class Timeline extends Component { } render() { + const {i18n} =this.props const line = this.props.data.map((milestone) => { return (
    Proposed Blockers{i18n.t('phrases.Proposed_Blockers')} {this.props.data.beta_blockers_proposed}
    Accepted Blockers{i18n.t('phrases.Accepted_Blockers')} {this.props.data.beta_blockers}
    Proposed FEs{i18n.t('phrases.Proposed_FEs')} {this.props.data.beta_fe_proposed}
    Accepted FEs{i18n.t('phrases.Accepted_FEs')} {this.props.data.beta_fe}
    - Final + {i18n.t('phrases.final')}
    Proposed Blockers{i18n.t('phrases.Proposed_Blockers')} {this.props.data.final_blockers_proposed}
    Accepted Blockers{i18n.t('phrases.Accepted_Blockers')} {this.props.data.final_blockers}
    Proposed FEs{i18n.t('phrases.Proposed_FEs')} {this.props.data.final_fe_proposed}
    Accepted FEs{i18n.t('phrases.Accepted_FEs')} {this.props.data.final_fe}
    @@ -49,7 +52,7 @@ class Timeline extends Component { return (

    - Current development schedule{" "} + {i18n.t('phrases.current_development_schedule')}{" "}

    @@ -81,4 +84,10 @@ class Line extends Component { } } -export default Timeline +const mapStateToProps = (state) =>{ + return{ + ...state.locale + } +} + +export default connect(mapStateToProps)(Timeline) diff --git a/src/reducers/index.js b/src/reducers/index.js index 5e628e0..82f4bb8 100644 --- a/src/reducers/index.js +++ b/src/reducers/index.js @@ -1,5 +1,9 @@ import ActionTypes from "../constants" +import i18n from 'i18n-js' +import en from '../translations/en' +import fr from '../translations/fr' + const defaultState = { landing_page: { blockerbugs: {}, @@ -16,6 +20,9 @@ const defaultState = { providers: [], all_actions: [], }, + locale: { + i18n: i18n + } } export default (state = defaultState, action) => { @@ -36,6 +43,21 @@ export default (state = defaultState, action) => { }, } + case ActionTypes.CHANGE_LANGUAGE: + let locale = action.payload + localStorage.setItem('locale', locale) + i18n.locale = locale + i18n.fallbacks = true + i18n.translations = { en, fr } + let newI18n = { ...i18n } + return { + ...state, + locale: { + ...state.locale, + i18n: newI18n + } + } + default: return { ...state, diff --git a/src/translations/en.js b/src/translations/en.js new file mode 100644 index 0000000..faeca2d --- /dev/null +++ b/src/translations/en.js @@ -0,0 +1,134 @@ +export default{ + words:{ + hello: 'Hello', + disable:"Disable", + enable:"Enable", + Rawhide:"Rawhide", + Upgrade:"Upgrade", + Miscellaneous:"Miscellaneous", + Run:"Run", + Note:"Note:", + final:"Final", + Visit:"Visit", + enter:"Enter", + notes:"Notes" + + }, + phrases:{ + + Show_me:"Show me", + for_a_web:"for a web-browser", + to_see_older:"to see older", + User_interface:"User interface", + Test_Matrix:"Test Matrix", + Few_hours:"Few hours", + update_testing:"updates-testing", + Storage_devices:"Storage devices", + What_is_Karma:"What is Karma", + Several_days:"Several days", + Proposed_FEs:"Proposed FEs", + Accepted_FEs:"Accepted FEs", + Tell_me_More:"Tell me more!", + IoT_Test_Day:"[F34] IoT Test Day", + ARM_disk_images:"ARM disk images", + Not_sure_how:"Not sure how?", + to_skip_it:"to skip it.", + repo_by:" repo, by running ", + the_name_of:" The name of the ISO image you used ", + note_what_you_did:"Note what you did, as precisely as possible, in a step-by-step fashion. Even details like 'Chose Polish as the languae for the installation process' can matter.", + share_your_notes_on_the:"Share your notes on the internet (you can use fpaste), and ask for help with filing the bug report on our IRC channel #fedora-qa at freenode.net", + if_you_are_not_familiar:"If you are not that familiar with IRC, you can use the web-interface[link] just enter a Nickname of your choice, #fedora-qa (including the hash sign) in the Channels field, and click Connect.", + you_can_either_install:"You can either install Fedora onto clean Virtual or Bare-metal machine, or use a Live image instead.", + the_updates_are:"The updates are kept in", + interface_for_submitting:"interface for submitting Karma and/or learning about the Update, you can visit Bodhi directly.", + and_choose_a:"and choose a package you know.", + and_create_it:"and create it.", + brief_description_of_what:" Brief description of what went wrong (e.g. QA:Testcase_dualboot_with_windows -Bootloader does not show the Windows option)", + try_to_reproduce_the:"Try to reproduce the same state again based on the steps above (you can also experiment a bit, and try to come up with just the critical steps)", + choose_an_update:"Choose an update to test", + have_a_look_at:"Have a look at the available packages in ", + make_sure_your:"Make sure your system is up-to-date: ", + note_the_user:"Note the username and password, you will need it later on.", + sure_let_me_do_it:"Sure, let me do it!", + somtimes_the_update:" Sometimes, the update associated with the package you just installed fixes some specific bugs, or has testcases associated with it", + an_update_can:"An update can (and usually does) consist of several packages (rpms), that are going through the acceptance process together.", + Audio_Test_Day:"[F34] Audio Test Day", + it_identifies:"It identifies the packages installed from the ", + and_report_what_you_found_out:"and report what you found out.", + Install_the_package:"Install the package", + repository_and_matches:"repository, and matches them to the updates in Bodhi.", + and_test_whether_it_works:"and test whether it works, as you would expect.", + Fedora_Media_Writer:"Fedora Media Writer", + Choose_an_update_to_test:"Choose an update to test", + Install_fedora:"Install fedora-easy-karma tool: ", + once_you_get_the_bug_reported:"Once you get the Bug reported, make sure to also submit the result into the testing matrix. Either use", + we_already_mentioned_bodhi:"We already mentioned Bodhi, several times. Instead of using the", + repo_may_be_installed:" repo may be installed as dependencies (shown during the installation process). Try to test those too, if possible.", + users_or_automated:"Users (or automated systems) can then provide feedback in form of positive/negative Karma, marking the update as working (or not) within the scope of their expectations.", + which_acts_as_a_gatekeeper:"which acts as a gatekeeper between new package releases and the stable repositories. ", + Installation_repositories:"Installation repositories", + Release_blocking_environments :"elease-blocking environments ", + Default_boot_and_install:"Default boot and install (x86_64)", + Default_boot_and_install_aarch64 :"Default boot and install (aarch64)", + Custom_storage_configuration:"Custom storage configuration", + Release_blocking_desktops:"Release-blocking desktops", + Accepted_Blockers:"Accepted Blockers", + Fedora_QA_Meeting:"Fedora QA Meeting", + Testing_Bodhi_Karma:"Testing - Bodhi Karma", + Programming_Easyfix:"Programming - Easyfix", + Proposed_Blockers :"Proposed Blockers ", + Need_some_tips:"Need some tips?", + Sourceon_Pagure:"Sourceon Pagure", + version:"version 0.1.0", + still_not_sure:"Still not sure? Just press ", + when_you_test:"when you test a text-editor, or", + Make_your_choice:"Make your choice!", + Restore_the_stable:"Restore the stable-packages on your system by running ", + Other_packages_from:"Other packages from", + New_to_fedora:"New to fedora-easy-karma?", + Install_the_package:"Install the package", + Dont_have_one_yet:"Don't have one yet?", + Nothing_sparked_joy:" Nothing sparked joy?", + Beta_Freeze:"Beta Freeze (starts at 1400 UTC)", + Final_Freeze :"Final Freeze (starts at 1400 UTC) ", + Blocker_Review_Meeting:"Blocker Review Meeting", + Fedora_QA_Meeting_Minutes: "Fedora QA Meeting Minutes", + blockers_and_FEs:"blockers and FEs", + Visit_meetbot_to_see_older:"Visit meetbot to see older.", + current_development_schedule: "Current development schedule", + Latest_minutes_from :"Latest minutes from 2021-03-22-15.00", + i_opened_a_couple:" I opened a couple of tabs, and browsed random pages.", + Branch_Fedora_Linux_34_from_Rawhide:"Branch Fedora Linux 34 from Rawhide", + Advanced_custom_storage_configuration:"Advanced custom storage configuration", + Beta_Release_Public_Availability:"Beta Release Public Availability", + Fedora_Accounts_System:"Fedora Accounts System (FAS) account is required.", + Final_Release_Public_Availability:"Final Release Public Availability (GA)", + Testing_Fedora_Release_validation:"Testing - Fedora Release validation", + Meetings_and_testdays_in_the_next_7_days: "Meetings and testdays in the next 7 days", + Tell_me_more_about_the_process:"Tell me more about the process! ", + to_mark_the:"to mark the package as broken.", + if_you_dont:" If you don't feel like reading a wall of text, at least pot together a small document containing:", + shows_the_URL:"shows the URL of the relevant update near the bottom of the text output - look for URL like", + you_can_have_a_look:"You can have a look at other people's comments, the afore-mentioned Bugs or Test Cases, and even submit the Karma directly. Just use your FAS credentials to log-in.", + you_are_then_presented:"You are then presented with the relevant updates one-by-one, to submit Karma and a comment.", + to_mark_positive:"to mark positive karma (the update works just fine, as far as you can tell), or", + not_sure_you_can:"Not sure you can judge the package's state? Have a look at the", + add_a_comment:"Add a comment - even if it works, try to describe what you tested. It can be as easy as", + do_you_have_some_spare_time: " Do you have some spare time? Feeling like helping others? Wanna improve Fedora?Click here!", + The_goal_of_release_validation_testing_is_to_ensure:"The goal of release validation testing is to ensure the release candidate meets the requirements for Fedora releases. You will manually execute test cases to verify installation and basic functionality of the various Fedora products.", + Simple_voting_system_that_allows_for_esters_to_provide_feedback_as:"Simple voting system that allows for testers to provide feedback as to whether a given package update works or not.", + Number_of_projects_within_Fedora_which_are_looking_for_help:"Number of projects within Fedora which are looking for help. These tasks have been evaluated as easy entrance point.", + None_of_the_above_looks_interesting_to_you:"None of the above looks interesting to you? We'd be happy if you looked around at https://whatcanidoforfedora.org/!", + Before_a_new_version_of_a_package:"Before a new version of a package is pushed to the Fedora's Updates repository, it needs to be tested and proved functional.", + The_Base_testcases_cover_the_system:"The Base testcases cover the system's basic functionality just after a clean installation", + Most_times_you_will_be_asked_to_perform_a_clean_Fedora_installation:"Most times, you will be asked to perform a clean Fedora installation. You can use either Virtual or Bare-metal machine", + Pro_tip_using_a_snapshot_of_cleanly_installed_Virtual_machine_is_just_fine:"Pro tip: using a snapshot of cleanly installed Virtual machine is just fine. No need to reinstall for every testcase", + Even_thought_the_Cloud_testcases_are_best_done_in_the_specific_environments:"Even thought the Cloud testcases are best done in the specific environments like EC2 or Openstack, you can also perform them locally using Testcloud.Have a look at the Cloud provider setup guides for more details.", + The_Desktop_testcases_cover_basic_functionality_of_the_desktop_environment:"The Desktop testcases cover basic functionality of the desktop environment.You can either install Fedora onto clean Virtual or Bare-metal machine, or use a Live image instead." , + The_Installation_testcases_generally_deal_with_a_part_of_the_installation_procedure:"The Installation testcases generally deal with a part of the installation procedure", + You_will_certainly_need_an_installation_ISO:"You will certainly need an installation ISO, and either a Virtual or Bare-metal machine to run the test.", + Absolutely_make_sure:"Absolutely make sure to provide reasonable amount of detail, when submitting negative karma - ideally, you should also create a bugreport, and reference it in the comment", + i_tried_openning:"I tried openning and editing a document, and it worked", + + } +} \ No newline at end of file diff --git a/src/translations/fr.js b/src/translations/fr.js new file mode 100644 index 0000000..5f7e673 --- /dev/null +++ b/src/translations/fr.js @@ -0,0 +1,139 @@ +export default{ + words:{ + hello: 'Salut ', + disable:"Désactiver", + enable:"Activez", + Rawhide:"Rawhide", + Upgrade:"Mise à jour", + Miscellaneous:"Divers", + Run:"Exécuter", + Note:"Notez:", + final:"Finale", + Visit:"Visitez", + enter:"Entre", + notes:"Notes" + + + }, + phrases:{ + to_see_older:"pour voir plus vieux", + Show_me:"Montrez-moi", + for_a_web:"pour un navigateur web", + User_interface:"L'interface utilisateur", + Test_Matrix:"Matrice de tests", + Few_hours:"Quelques heures", + Storage_devices:"Dispositifs de stockage", + What_is_Karma:"Qu'est-ce que le karma ?", + Several_days:"Plusieurs jours", + Proposed_FEs:"FEs proposées", + Accepted_FEs:"FEs acceptées", + to_skip_it:"pour le sauter.", + Tell_me_More:"Dites-moi en plus!", + IoT_Test_Day:"[F34] IoT Test Day", + ARM_disk_images:"Images de disque ARM", + Not_sure_how:"Vous ne savez pas comment ?", + Audio_Test_Day:"[F34] Audio Test Day", + and_create_it:"et le créer.", + repo_by:" repo, en exécutant ", + the_name_of:" Le nom de l'image ISO que vous avez utilisée ", + brief_description_of_what:"Brève description de ce qui n'a pas fonctionné (par exemple, QA:Testcase_dualboot_with_windows -Le chargeur de démarrage ne montre pas l'option Windows)", + note_what_you_did:"Notez ce que vous avez fait, aussi précisément que possible, en procédant étape par étape. Même détails comme Choisir le polonais comme langue pour le processus d'installation peuvent avoir de l'importance.avoir de l'importance.", + try_to_reproduce_the:"Essayez de reproduire à nouveau le même état en vous basant sur les étapes ci-dessus (vous pouvez également expérimenter un peu, et essayer de ne retenir que les étapes critiques)", + share_your_notes_on_the:"Partagez vos notes sur internet (vous pouvez utiliser fpaste), et demandez de l'aide pour remplir le rapport de bogue sur notre canal IRC #fedora-qa at freenode.net", + if_you_are_not_familiar:"Si vous n'êtes pas très familier avec IRC, vous pouvez utiliser l'interface web [lien] juste d'entrer un pseudonyme de votre choix, #fedora-qa (y compris le signe dièse) dans le champ Channels field, and click Connect.", + once_you_get_the_bug_reported:"Une fois le bogue signalé, assurez-vous de soumettre le résultat dans la matrice de test. de test. Vous pouvez utiliser", + you_can_either_install:"Vous pouvez soit installer Fedora sur une machine virtuelle ou bare-metal propre, soit utiliser une image Live à la place.", + the_updates_are:"Les mises à jour sont conservées dans", + interface_for_submitting:"pour soumettre votre karma et/ou vous renseigner sur la mise à jour, vous pouvez visiter Bodhi directement.", + and_test_whether_it_works:" et testez s'il fonctionne, comme vous le souhaitez.", + Install_the_package:" Installer le paquet", + and_choose_a:"et choisissez un paquet que vous connaissez.", + Install_fedora:"Installer l'outil fedora-easy-karma :", + choose_an_update:"Choisissez une mise à jour à tester", + have_a_look_at:"Jetez un coup d'œil aux paquets disponibles dans ", + make_sure_your:"Assurez-vous que votre système est à jour :", + note_the_user:"Notez le nom d'utilisateur et le mot de passe, vous en aurez besoin par la suite.", + sure_let_me_do_it:"Bien sûr, laissez-moi le faire !", + an_update_can:"Une mise à jour peut (et c'est généralement le cas) être constituée de plusieurs paquets (rpms) qui passent ensemble par le processus d'acceptation. le processus d'acceptation ensemble.", + and_report_what_you_found_out:"et rapportez ce que vous avez découvert.", + Install_the_package:"Installer le paquet", + and_test_whether_it_works:"et vérifiez si cela fonctionne, comme vous le souhaitez..", + Fedora_Media_Writer:"Rédacteur médias de Fedora", + Choose_an_update_to_test:"Choisissez une mise à jour à tester", + Install_fedora:"Installer l'outil fedora-easy-karma: ", + Make_sure_your_system_is :"Assurez-vous que votre système est à jour : ", + Installation_repositories:"Dépôts d'installation", + Release_blocking_environments :"Release-blocking environments ", + Default_boot_and_install:"Démarrage et installation par défaut (x86_64)", + Default_boot_and_install_aarch64 :"Démarrage et installation par défaut (aarch64)", + Custom_storage_configuration:"Configuration de stockage personnalisée", + Release_blocking_desktops:"Blocage de la libération des postes de travail", + Accepted_Blockers:"Bloqueurs acceptés", + Fedora_QA_Meeting:"Réunion d'assurance qualité Fedora", + Testing_Bodhi_Karma:"Testing - Bodhi Karma", + Programming_Easyfix:"Programmation - Easyfix", + Proposed_Blockers :"Bloqueurs proposés ", + Need_some_tips:"Besoin de conseils?", + Sourceon_Pagure:"Sourceon Pagure", + version:"version 0.1.0", + if_you_dont:" Si vous n'avez pas envie de lire un mur de texte, préparez au moins un petit document contenant :", + we_already_mentioned_bodhi:"Nous avons déjà mentionné Bodhi, plusieurs fois. Au lieu d'utiliser le", + sometimes_the_update:" Parfois, la mise à jour associée au paquet que vous venez d'installer corrige certains bogues spécifiques ou comporte des scénarios de test.", + shows_the_URL:"affiche l'URL de la mise à jour pertinente près du en bas de l'affichage du texte - recherchez des URL du type", + still_not_sure:"Vous n'êtes toujours pas sûr ? Appuyez simplement sur ", + when_you_test:"lorsque vous testez un éditeur de texte, ou", + Make_your_choice:"Faites votre choix !", + make_sure_your:"Assurez-vous que votre système est à jour : ", + Restore_the_stable:"Restaurez les paquets stables sur votre système en exécutant ", + you_can_have_a_look:" Vous pouvez consulter les commentaires d'autres personnes, les bogues ou les cas de test susmentionnés et même soumettre directement votre karma. Cases, et même soumettre directement le Karma. Il suffit d'utiliser vos informations d'identification FAS pour vous connecter.", + Other_packages_from:"Note: Other packages from", + New_to_fedora:"Nouveau sur fedora-easy-karma ?", + Dont_have_one_yet:"Vous n'en avez pas encore ?", + Nothing_sparked_joy:" Rien n'a déclenché la joie ?", + Beta_Freeze:"Beta Freeze (starts at 1400 UTC)", + Final_Freeze :"Final Freeze (starts at 1400 UTC) ", + i_opened_a_couple:" J'ai ouvert quelques onglets, et parcouru des pages au hasard.", + Blocker_Review_Meeting:"Réunion sur la révision des bloqueurs", + Fedora_QA_Meeting_Minutes: "Compte rendu de la réunion d'AQ de Fedora", + blockers_and_FEs:"bloqueurs et FEs", + update_testing:"mises à jour-testing", + repo_may_be_installed:" peuvent être installés en tant que dépendances (indiquées pendant le processus d'installation). Essayez de les tester aussi, si possible.", + users_or_automated:"Les utilisateurs (ou les systèmes automatisés) peuvent ensuite donner leur avis sous forme de Karma positif/négatif. Karma, en marquant la mise à jour comme fonctionnant (ou non) dans le cadre de leurs attentes.", + it_identifies:"Il identifie les paquets installés à partir du ", + repository_and_matches:"dépôt, et les fait correspondre aux mises à jour de Bodhi.", + not_sure_you_can:"Vous n'êtes pas sûr de pouvoir juger de l'état du paquet ? Jetez un coup d'œil à la", + Visit_meetbot_to_see_older:"Visitez meetbot pour voir plus vieux.", + current_development_schedule: "Calendrier de développement actuel", + Latest_minutes_from :"Latest minutes from 2021-03-22-15.00", + Branch_Fedora_Linux_34_from_Rawhide:"Branche Fedora Linux 34 de Rawhide", + to_mark_the:"pour marquer le paquet comme cassé.", + to_mark_positive:"pour marquer un karma positif (la mise à jour fonctionne parfaitement, pour autant que l'on puisse dire), ou bien", + Advanced_custom_storage_configuration:"Configuration avancée du stockage personnalisé", + Beta_Release_Public_Availability:"Version bêta Disponibilité publique ", + Fedora_Accounts_System:"Un compte FAS (Fedora Accounts System) est nécessaire.", + Final_Release_Public_Availability:"Disponibilité publique de la version finale (GA)", + Testing_Fedora_Release_validation:"Tests - Validation de la version de Fedora", + Meetings_and_testdays_in_the_next_7_days: "Réunions et journées d'essai dans les 7 prochains jours", + Tell_me_more_about_the_process:"Dites-m'en plus sur le processus ! ", + you_are_then_presented:"Les mises à jour pertinentes vous sont ensuite présentées une par une, afin de soumettre Karma et un commentaire.", + add_a_comment:"Ajoutez un commentaire - même si cela fonctionne, essayez de décrire ce que vous avez testé. Cela peut être aussi simple que", + do_you_have_some_spare_time: " Vous avez un peu de temps libre ? Tu as envie d'aider les autres ? Si vous voulez améliorer Fedora, cliquez ici !", + The_goal_of_release_validation_testing_is_to_ensure:"L'objectif des tests de validation des versions est de s'assurer que la version candidate répond aux exigences des versions de Fedora. Vous exécuterez manuellement des cas de test pour vérifier l'installation et les fonctionnalités de base des différents produits Fedora.", + Simple_voting_system_that_allows_for_esters_to_provide_feedback_as:"Un système de vote simple qui permet aux testeurs de donner leur avis sur le fonctionnement ou non d'une mise à jour de paquet donnée.", + Number_of_projects_within_Fedora_which_are_looking_for_help:"Nombre de projets au sein de Fedora qui recherchent de l'aide. Ces tâches ont été évaluées comme des points d'entrée faciles.", + None_of_the_above_looks_interesting_to_you:"Rien de ce qui précède ne vous semble intéressant ? Nous serions heureux que vous regardiez à https://whatcanidoforfedora.org/!", + Before_a_new_version_of_a_package:"Avant qu'une nouvelle version d'un paquet soit poussée vers le dépôt de mises à jour de Fedora, elle doit être testée et prouvée fonctionnelle.", + The_Base_testcases_cover_the_system:"Les tests de base couvrent les fonctionnalités de base du système juste après une installation propre.", + Most_times_you_will_be_asked_to_perform_a_clean_Fedora_installation:"La plupart du temps, il vous sera demandé d'effectuer une installation propre de Fedora. Vous pouvez utiliser une machine virtuelle ou à nu.", + Pro_tip_using_a_snapshot_of_cleanly_installed_Virtual_machine_is_just_fine:"Conseil de pro : l'utilisation d'un instantané de la machine virtuelle proprement installée convient parfaitement. Il n'est pas nécessaire de réinstaller pour chaque cas de test", + Even_thought_the_Cloud_testcases_are_best_done_in_the_specific_environments:"Bien qu'il soit préférable de réaliser les tests de Cloud dans des environnements spécifiques tels que EC2 ou Openstack, vous pouvez également les réaliser localement à l'aide de Testcloud, en consultant les guides de configuration des fournisseurs de Cloud pour plus de détails.", + The_Desktop_testcases_cover_basic_functionality_of_the_desktop_environment:"Vous pouvez soit installer Fedora sur une machine virtuelle propre ou une machine nue, soit utiliser une image live à la place." , + The_Installation_testcases_generally_deal_with_a_part_of_the_installation_procedure:"Les valises de test d'installation traitent généralement d'une partie de la procédure d'installation.", + You_will_certainly_need_an_installation_ISO:"Vous aurez certainement besoin d'un ISO d'installation et d'une machine virtuelle ou à nu pour exécuter le test. Veillez à lire attentivement la description du testcase.", + Absolutely_make_sure:"Assurez-vous absolument de fournir une quantité raisonnable de détails, lorsque vous soumettez karma négatif - idéalement, vous devriez aussi créer un rapport de bogue, et le référencer dans le commentaire", + i_tried_openning:"J'ai essayé d'ouvrir et de modifier un document, et ça a marché.", + You_will_certainly_need_an_installation_ISO:"Vous aurez certainement besoin d'un ISO d'installation, et d'une machine virtuelle ou bare-metal pour effectuer le test.", + + which_acts_as_a_gatekeeper:"qui agit comme un gardien entre les nouvelles versions de paquets et les dépôts stables.", + } +} \ No newline at end of file diff --git a/src/wizard/FedoraEasyKarma.js b/src/wizard/FedoraEasyKarma.js index aea974b..84610c6 100644 --- a/src/wizard/FedoraEasyKarma.js +++ b/src/wizard/FedoraEasyKarma.js @@ -2,125 +2,111 @@ import React, { Component } from "react" import SourceLink from "../landingpage/SourceLink" import { CollapsableBadge } from "./components" -export default class FedoraEasyKarmaItemsList extends Component { +import {connect} from "react-redux" + +class FedoraEasyKarmaItemsList extends Component { render() { + const {i18n} = this.props if (this.props.data === undefined) return null else return (
    -

    What is Karma

    - Before a new version of a package is pushed to the Fedora's Updates repository, it - needs to be tested and proved functional.{" "} +

    {i18n.t('phrases.What_is_Karma')}

    + {i18n.t('phrases.Before_a_new_version_of_a_package')}{" "} - The updates are kept in{" "} + + {i18n.t('phrases.the_updates_are')}{" "} - , which acts as a gatekeeper between new package releases and the stable repositories.{" "} - Users (or automated systems) can then provide feedback in form of positive/negative - Karma, marking the update as working (or not) within the scope of their expectations.{" "} - An update can (and usually does) consist of several packages (rpms), that are going - through the acceptance process together. + , {i18n.t('phrases.which_acts_as_a_gatekeeper')}{" "} + {i18n.t('phrases.users_or_automated')}{" "} + {i18n.t('phrases.an_update_can')} -

    Sure, let me do it!

    +

    {i18n.t('phrases.sure_let_me_do_it')}

    1. - Fedora Accounts System (FAS) account is required.{" "} + {i18n.t('phrases.Fedora_Accounts_System')}{" "}
      • - Visit{" "} + {i18n.t('words.Visit')}{" "} {" "} - and create it. + {i18n.t('phrases.and_create_it:"",')}
      • -
      • Note the username and password, you will need it later on.
      • +
      • {i18n.t('phrases.note_the_user')}
    2. - Make sure your system is up-to-date: sudo dnf update --refresh + {i18n.t('phrases.make_sure_your:"",')}sudo dnf update --refresh
    3. - Install fedora-easy-karma tool: sudo dnf install fedora-easy-karma + {i18n.t('phrases.Install_fedora')}sudo dnf install fedora-easy-karma
    4. - Choose an update to test{" "} + {i18n.t('phrases.choose_an_update:"",')}{" "} - Have a look at the available packages in updates-testing repo, by - running dnf --enablerepo=updates-testing list --refresh --upgrades and - choose a package you know. + {i18n.t('phrases.have_a_look_at')} {i18n.t('phrases.update_testing')} {i18n.t('phrases.repo_by')} + dnf --enablerepo=updates-testing list --refresh --upgrades {i18n.t('phrases.and_choose_a')}
    5. - Install the package{" "} - sudo dnf --enablerepo=updates-testing update PACKAGE_NAME, and test - whether it works, as you would expect. + {i18n.t('phrases.Install_the_package')}{" "} + sudo dnf --enablerepo=updates-testing update PACKAGE_NAME, {i18n.t('phrases.and_test_whether_it_works')}
      - Note: Other packages from updates-testing repo may be - installed as dependencies (shown during the installation process). Try to test those - too, if possible.{" "} + {i18n.t('phrases.Note')} {i18n.t('phrases.Other_packages_from')} {i18n.t('phrases.update_testing')} + {i18n.t('phrases.repo_may_be_installed')}{" "} - Sometimes, the update associated with the package you just installed fixes some - specific bugs, or has testcases associated with it. + {i18n.t('phrases.somtimes_the_update')}.
      - Run fedora-easy-karma --fas-username=FAS_USERNAME, and look for{" "} - Bugs, Test Cases, and/or Notes sections in - the detailed output.{" "} + {i18n.t('words.Run')} fedora-easy-karma --fas-username=FAS_USERNAME, and look for{" "} + Bugs, Test Cases, and/or {i18n.t('words.notes')} sections in the detailed output.{" "} - We already mentioned Bodhi, several times. Instead of using the{" "} - fedora-easy-karma interface for submitting Karma and/or learning - about the Update, you can visit Bodhi directly. + {i18n.t('phrases.we_already_mentioned_bodhi')}{" "} + fedora-easy-karma{i18n.t('phrases.interface_for_submitting')}
      - fedora-easy-karma shows the URL of the relevant update near the - bottom of the text output - look for URL like{" "} + {i18n.t('phrases.')} fedora-easy-karma {i18n.t('phrases.shows_the_URL')}{" "} https://bodhi.fedoraproject.org/updates/FEDORA-2019-00870e8bfc.
      - You can have a look at other people's comments, the afore-mentioned Bugs or Test - Cases, and even submit the Karma directly. Just use your FAS credentials to - log-in. + {i18n.t('phrases.you_can_have_a_look')}
    6. - Run fedora-easy-karma --fas-username=FAS_USERNAME and report what you - found out.{" "} + {i18n.t('words.Run')}fedora-easy-karma --fas-username=FAS_USERNAME {i18n.t('phrases.and_report_what_you_found_out')}{" "} - It identifies the packages installed from the updates-testing{" "} - repository, and matches them to the updates in Bodhi. + {i18n.t('phrases.it_identifies')} {i18n.t('phrases.update_testing')}{" "} + {i18n.t('phrases.repository_and_matches')}
      - You are then presented with the relevant updates one-by-one, to submit Karma and a - comment.{" "} + {i18n.t('phrases.you_are_then_presented')}{" "}
      1. - Enter 1 to mark positive karma (the update works just fine, as - far as you can tell), or -1 to mark the package as broken.{" "} + {i18n.t('words.enter')}1 {i18n.t('phrases.to_mark_positive')} + -1 {i18n.t('phrases.to_mark_the')}{" "}
        - Not sure you can judge the package's state? Have a look at the{" "} + {i18n.t('phrases.not_sure_you_can')}{" "}
        - Still not sure? Just press Enter to skip it. + {i18n.t('phrases.still_not_sure')}{i18n.t('words.enter')}{i18n.t('phrases.to_skip_it')}
      2. - Add a comment - even if it works, try to describe what you tested. It can be - as easy as{" "} - I tried openning and editing a document, and it worked. when you - test a text-editor, or{" "} - I opened a couple of tabs, and browsed random pages. for a - web-browser. + {i18n.t('phrases.add_a_comment')}{" "} + {i18n.t('phrases.i_tried_openning')} + {i18n.t('phrases.when_you_test')}{" "} + {i18n.t('phrases.i_opened_a_couple')} {i18n.t('phrases.for_a_web')}.
        - Absolutely make sure to provide reasonable amount of detail, when submitting - negative karma - ideally, you should also create a bugreport, and reference - it in the comment. + {i18n.t('phrases.Absolutely_make_sure')}
    7. - Restore the stable-packages on your system by running{" "} + {i18n.t('phrases.Restore_the_stable')}{" "} sudo dnf distro-sync
    @@ -128,3 +114,10 @@ export default class FedoraEasyKarmaItemsList extends Component { ) } } + +const mapStateToProps = (state) =>{ + return{ + ...state.locale + } +} +export default connect(mapStateToProps)(FedoraEasyKarmaItemsList) \ No newline at end of file diff --git a/src/wizard/Wizard.js b/src/wizard/Wizard.js index 941b6a7..fcb0f9c 100644 --- a/src/wizard/Wizard.js +++ b/src/wizard/Wizard.js @@ -35,6 +35,7 @@ class Wizard extends Component { } render() { + const { i18n } = this.props return (
    @@ -44,10 +45,9 @@ class Wizard extends Component { actions={this.props.all_actions} providers={this.props.providers} /> -

    Nothing sparked joy?

    +

    {i18n.t('phrases.Nothing_sparked_joy')}

    - None of the above looks interesting to you? We'd be happy if you looked around at{" "} - + {i18n.t('phrases.None_of_the_above_looks_interesting_to_you')}{" "} !
    @@ -67,6 +67,7 @@ class Wizard extends Component { const mapStateToProps = (state) => { return { ...state.wizard, + ...state.locale } } diff --git a/src/wizard/WizardForm.js b/src/wizard/WizardForm.js index 795d166..0a61411 100644 --- a/src/wizard/WizardForm.js +++ b/src/wizard/WizardForm.js @@ -2,6 +2,8 @@ import React, { Component } from "react" import { Row, Button } from "reactstrap" import _ from "lodash" +import { connect } from "react-redux" + const durationString = { 3: "Few hours", 72: "Several days", @@ -41,6 +43,7 @@ class WizardForm extends Component { } render() { + const { i18n } = this.props const providers = [3, 72].map((duration) => { const duration_providers = this.props.providers .filter((p) => p.duration === duration) @@ -63,7 +66,7 @@ class WizardForm extends Component { className="btn-sm btn-block btn-wrap-text float-right" color={btncolor} onClick={(event) => this.provider_selected(p)}> - Tell me more! + {i18n.t('phrases.Tell_me_More')}
    @@ -84,7 +87,7 @@ class WizardForm extends Component { this.state.selected_provider === "" || !this.state.selected_provider.tags ? null : (
    -

    Make your choice!

    +

    {i18n.t('phrases.Make_your_choice')}

    { + return { + ...state.locale + } +} + +export default connect(mapStateToProps)(WizardForm) From 933b1da1a4468c55eae9b9c277ca82f1f5f68ea6 Mon Sep 17 00:00:00 2001 From: Queen Date: Apr 21 2021 04:11:32 +0000 Subject: [PATCH 4/8] add a dropdown to select the prefered language --- diff --git a/README.md b/README.md index 4193fd9..6c5502d 100644 --- a/README.md +++ b/README.md @@ -26,35 +26,15 @@ The landingpage is now running at * Try Fedora QA Dashboard yourself, clone the repo, browse the code, try to do a small change and see the results. If you want to start contributing to this project, look for issues tagged "easyfix". -### How to generate your public SSH Key, because you will need it before you can do a pull request - -* Before generating your key, you should check to make sure you dont already have your ssh key - -* You can easily check to see if you already have the key by going to the directory and listing it - - $ cd ~/.ssh - $ ls - authorized_keys2 id_dsa known_hosts - config id_dsa.pub - -* Open your shell/terminal and type in the command - - $ ssh-keygen -o - -* Visit (https://git-scm.com/book/en/v2/Git-on-the-Server-Generating-Your-SSH-Public-Key) for more information on SSH Keys. - ### How to do pull requests * create an account on Pagure, don't forget to add your public ssh key to Pagure (click on your avatar > My settings > SSH Keys > Add SSH key) * fork this repository (upper right corner) -* clone your forked repo using SSH option by running the command below -``` -$ git clone -``` +* clone your forked repo using SSH option -* add our repo as upstream remote by running the command below +* add our repo as upstream remote ``` $ git remote add upstream https://pagure.io/fedora-qa/landingpage.git ``` diff --git a/src/NotFound.js b/src/NotFound.js index 7ff839c..c4f8c04 100644 --- a/src/NotFound.js +++ b/src/NotFound.js @@ -2,9 +2,11 @@ import React, { Component } from "react" import Layout from "./layout/Layout" import { Link } from "react-router-dom" import { Container } from "reactstrap" +import {connect} from "react-redux" class Wizard extends Component { render() { + const {i18n} = this.props return ( @@ -16,7 +18,7 @@ class Wizard extends Component { - Go to home page + {i18n.t('phrases.go_to_home')}

    @@ -24,5 +26,10 @@ class Wizard extends Component { ) } } +const mapStateToProps =(state)=> { + return{ + ...state.locale + } +} -export default Wizard +export default connect(mapStateToProps) (Wizard) diff --git a/src/landingpage/LandingPage.js b/src/landingpage/LandingPage.js index f37bfbe..32b87a0 100644 --- a/src/landingpage/LandingPage.js +++ b/src/landingpage/LandingPage.js @@ -1,5 +1,5 @@ -import React, { Component } from "react" -import { Container, Row } from "reactstrap" +import React, { Component, useState } from "react" +import { Container, Row ,DropdownToggle,DropdownItem,DropdownMenu,UncontrolledDropdown} from "reactstrap" import { Link } from "react-router-dom" import Layout from "../layout/Layout" import Timeline from "./Timeline" @@ -14,8 +14,6 @@ import { connect } from "react-redux" import { loadData, changeLanguage } from "../actions/reduxActions" import Cookies from "universal-cookie" -import SourceLink from "./SourceLink" - class LandingPage extends Component { constructor(props) { super(props) @@ -40,7 +38,7 @@ class LandingPage extends Component { componentDidMount() { this.props.dispatch(loadData()) - this.props.dispatch(changeLanguage('fr')) + this.props.dispatch(changeLanguage('en')) } toggle_config_mode(e) { @@ -95,6 +93,20 @@ class LandingPage extends Component { const { i18n } = this.props return ( +
    + + + {i18n.t('phrases.change_language')} + + + this.props.dispatch(changeLanguage('en')) } >English + this.props.dispatch(changeLanguage('fr'))} >French + + +
    + + +
    @@ -114,8 +126,8 @@ class LandingPage extends Component { className="badge badge-secondary events" role="button"> {this.state.config_mode - ? "Save changes" - : "Configure visibility of the info-cards"} + ? "{i18n.t('phrases.save_changes')}" + : "{i18n.t('phrases.configure_visibility')}"}
    @@ -142,4 +154,4 @@ const mapStateToProps = (state) => { ...state.locale } } -export default connect(mapStateToProps)(LandingPage) +export default connect(mapStateToProps)(LandingPage) \ No newline at end of file diff --git a/src/layout/Masthead.js b/src/layout/Masthead.js index a48e1d8..112e617 100644 --- a/src/layout/Masthead.js +++ b/src/layout/Masthead.js @@ -18,7 +18,7 @@ class Masthead extends Component { - ) : null} + ) : null} ) diff --git a/src/translations/en.js b/src/translations/en.js index faeca2d..8a202c5 100644 --- a/src/translations/en.js +++ b/src/translations/en.js @@ -17,12 +17,20 @@ export default{ phrases:{ Show_me:"Show me", + change_language:"ChangeLanguage", + and_or:"and/or", + save_changes:"Save changes", + configure_visibility:"Configure visibility of the info-cards", + test_cases:"Test Cases", + go_to_home:"Go to home page ", for_a_web:"for a web-browser", to_see_older:"to see older", User_interface:"User interface", Test_Matrix:"Test Matrix", Few_hours:"Few hours", update_testing:"updates-testing", + section_in_the:"sections in the detailed output.", + and_look_for:",and look for", Storage_devices:"Storage devices", What_is_Karma:"What is Karma", Several_days:"Several days", @@ -35,6 +43,8 @@ export default{ to_skip_it:"to skip it.", repo_by:" repo, by running ", the_name_of:" The name of the ISO image you used ", + testcases_generally:"testcases generally deal with a part of the installation procedure.", + is_a_group_containing:" - Is a group containing several projects. Expand to see more.", note_what_you_did:"Note what you did, as precisely as possible, in a step-by-step fashion. Even details like 'Chose Polish as the languae for the installation process' can matter.", share_your_notes_on_the:"Share your notes on the internet (you can use fpaste), and ask for help with filing the bug report on our IRC channel #fedora-qa at freenode.net", if_you_are_not_familiar:"If you are not that familiar with IRC, you can use the web-interface[link] just enter a Nickname of your choice, #fedora-qa (including the hash sign) in the Channels field, and click Connect.", @@ -86,7 +96,6 @@ export default{ Restore_the_stable:"Restore the stable-packages on your system by running ", Other_packages_from:"Other packages from", New_to_fedora:"New to fedora-easy-karma?", - Install_the_package:"Install the package", Dont_have_one_yet:"Don't have one yet?", Nothing_sparked_joy:" Nothing sparked joy?", Beta_Freeze:"Beta Freeze (starts at 1400 UTC)", @@ -105,7 +114,7 @@ export default{ Final_Release_Public_Availability:"Final Release Public Availability (GA)", Testing_Fedora_Release_validation:"Testing - Fedora Release validation", Meetings_and_testdays_in_the_next_7_days: "Meetings and testdays in the next 7 days", - Tell_me_more_about_the_process:"Tell me more about the process! ", + Tell_me_more_about:"Tell me more about the process! ", to_mark_the:"to mark the package as broken.", if_you_dont:" If you don't feel like reading a wall of text, at least pot together a small document containing:", shows_the_URL:"shows the URL of the relevant update near the bottom of the text output - look for URL like", diff --git a/src/translations/fr.js b/src/translations/fr.js index 5f7e673..73b4558 100644 --- a/src/translations/fr.js +++ b/src/translations/fr.js @@ -16,12 +16,20 @@ export default{ }, phrases:{ + change_language:"Changer de langue", + save_changes:"Sauvegarder les changements", + configure_visibility:"Configurer la visibilité des info-cartes", to_see_older:"pour voir plus vieux", + test_cases:"Cas de test", + and_or:"et_ou", + go_to_home:"Aller à la page d'accueil", Show_me:"Montrez-moi", for_a_web:"pour un navigateur web", User_interface:"L'interface utilisateur", + section_in_the:"dans la sortie détaillée.", Test_Matrix:"Matrice de tests", Few_hours:"Quelques heures", + and_look_for:",et cherchez", Storage_devices:"Dispositifs de stockage", What_is_Karma:"Qu'est-ce que le karma ?", Several_days:"Plusieurs jours", @@ -36,6 +44,8 @@ export default{ and_create_it:"et le créer.", repo_by:" repo, en exécutant ", the_name_of:" Le nom de l'image ISO que vous avez utilisée ", + testcases_generally:"Les scénarios de test traitent généralement d'une partie de la procédure d'installation.", + is_a_group_containing:" - Est un groupe contenant plusieurs projets. Développez pour en voir plus.", brief_description_of_what:"Brève description de ce qui n'a pas fonctionné (par exemple, QA:Testcase_dualboot_with_windows -Le chargeur de démarrage ne montre pas l'option Windows)", note_what_you_did:"Notez ce que vous avez fait, aussi précisément que possible, en procédant étape par étape. Même détails comme Choisir le polonais comme langue pour le processus d'installation peuvent avoir de l'importance.avoir de l'importance.", try_to_reproduce_the:"Essayez de reproduire à nouveau le même état en vous basant sur les étapes ci-dessus (vous pouvez également expérimenter un peu, et essayer de ne retenir que les étapes critiques)", @@ -48,7 +58,6 @@ export default{ and_test_whether_it_works:" et testez s'il fonctionne, comme vous le souhaitez.", Install_the_package:" Installer le paquet", and_choose_a:"et choisissez un paquet que vous connaissez.", - Install_fedora:"Installer l'outil fedora-easy-karma :", choose_an_update:"Choisissez une mise à jour à tester", have_a_look_at:"Jetez un coup d'œil aux paquets disponibles dans ", make_sure_your:"Assurez-vous que votre système est à jour :", @@ -56,12 +65,9 @@ export default{ sure_let_me_do_it:"Bien sûr, laissez-moi le faire !", an_update_can:"Une mise à jour peut (et c'est généralement le cas) être constituée de plusieurs paquets (rpms) qui passent ensemble par le processus d'acceptation. le processus d'acceptation ensemble.", and_report_what_you_found_out:"et rapportez ce que vous avez découvert.", - Install_the_package:"Installer le paquet", - and_test_whether_it_works:"et vérifiez si cela fonctionne, comme vous le souhaitez..", Fedora_Media_Writer:"Rédacteur médias de Fedora", Choose_an_update_to_test:"Choisissez une mise à jour à tester", Install_fedora:"Installer l'outil fedora-easy-karma: ", - Make_sure_your_system_is :"Assurez-vous que votre système est à jour : ", Installation_repositories:"Dépôts d'installation", Release_blocking_environments :"Release-blocking environments ", Default_boot_and_install:"Démarrage et installation par défaut (x86_64)", @@ -83,10 +89,9 @@ export default{ still_not_sure:"Vous n'êtes toujours pas sûr ? Appuyez simplement sur ", when_you_test:"lorsque vous testez un éditeur de texte, ou", Make_your_choice:"Faites votre choix !", - make_sure_your:"Assurez-vous que votre système est à jour : ", Restore_the_stable:"Restaurez les paquets stables sur votre système en exécutant ", you_can_have_a_look:" Vous pouvez consulter les commentaires d'autres personnes, les bogues ou les cas de test susmentionnés et même soumettre directement votre karma. Cases, et même soumettre directement le Karma. Il suffit d'utiliser vos informations d'identification FAS pour vous connecter.", - Other_packages_from:"Note: Other packages from", + Other_packages_from:"Autres paquets de", New_to_fedora:"Nouveau sur fedora-easy-karma ?", Dont_have_one_yet:"Vous n'en avez pas encore ?", Nothing_sparked_joy:" Rien n'a déclenché la joie ?", @@ -114,7 +119,7 @@ export default{ Final_Release_Public_Availability:"Disponibilité publique de la version finale (GA)", Testing_Fedora_Release_validation:"Tests - Validation de la version de Fedora", Meetings_and_testdays_in_the_next_7_days: "Réunions et journées d'essai dans les 7 prochains jours", - Tell_me_more_about_the_process:"Dites-m'en plus sur le processus ! ", + Tell_me_more_about:"Dites-m'en plus sur le processus ! ", you_are_then_presented:"Les mises à jour pertinentes vous sont ensuite présentées une par une, afin de soumettre Karma et un commentaire.", add_a_comment:"Ajoutez un commentaire - même si cela fonctionne, essayez de décrire ce que vous avez testé. Cela peut être aussi simple que", do_you_have_some_spare_time: " Vous avez un peu de temps libre ? Tu as envie d'aider les autres ? Si vous voulez améliorer Fedora, cliquez ici !", @@ -129,7 +134,6 @@ export default{ Even_thought_the_Cloud_testcases_are_best_done_in_the_specific_environments:"Bien qu'il soit préférable de réaliser les tests de Cloud dans des environnements spécifiques tels que EC2 ou Openstack, vous pouvez également les réaliser localement à l'aide de Testcloud, en consultant les guides de configuration des fournisseurs de Cloud pour plus de détails.", The_Desktop_testcases_cover_basic_functionality_of_the_desktop_environment:"Vous pouvez soit installer Fedora sur une machine virtuelle propre ou une machine nue, soit utiliser une image live à la place." , The_Installation_testcases_generally_deal_with_a_part_of_the_installation_procedure:"Les valises de test d'installation traitent généralement d'une partie de la procédure d'installation.", - You_will_certainly_need_an_installation_ISO:"Vous aurez certainement besoin d'un ISO d'installation et d'une machine virtuelle ou à nu pour exécuter le test. Veillez à lire attentivement la description du testcase.", Absolutely_make_sure:"Assurez-vous absolument de fournir une quantité raisonnable de détails, lorsque vous soumettez karma négatif - idéalement, vous devriez aussi créer un rapport de bogue, et le référencer dans le commentaire", i_tried_openning:"J'ai essayé d'ouvrir et de modifier un document, et ça a marché.", You_will_certainly_need_an_installation_ISO:"Vous aurez certainement besoin d'un ISO d'installation, et d'une machine virtuelle ou bare-metal pour effectuer le test.", diff --git a/src/wizard/FedoraEasyKarma.js b/src/wizard/FedoraEasyKarma.js index 84610c6..9874236 100644 --- a/src/wizard/FedoraEasyKarma.js +++ b/src/wizard/FedoraEasyKarma.js @@ -13,7 +13,7 @@ class FedoraEasyKarmaItemsList extends Component {

    {i18n.t('phrases.What_is_Karma')}

    {i18n.t('phrases.Before_a_new_version_of_a_package')}{" "} - + {i18n.t('phrases.the_updates_are')}{" "} @@ -40,13 +40,13 @@ class FedoraEasyKarmaItemsList extends Component {
  • - {i18n.t('phrases.make_sure_your:"",')}sudo dnf update --refresh + {i18n.t('phrases.make_sure_your')}sudo dnf update --refresh
  • {i18n.t('phrases.Install_fedora')}sudo dnf install fedora-easy-karma
  • - {i18n.t('phrases.choose_an_update:"",')}{" "} + {i18n.t('phrases.choose_an_update')}{" "} {i18n.t('phrases.have_a_look_at')} {i18n.t('phrases.update_testing')} {i18n.t('phrases.repo_by')} dnf --enablerepo=updates-testing list --refresh --upgrades {i18n.t('phrases.and_choose_a')} @@ -56,18 +56,18 @@ class FedoraEasyKarmaItemsList extends Component { {i18n.t('phrases.Install_the_package')}{" "} sudo dnf --enablerepo=updates-testing update PACKAGE_NAME, {i18n.t('phrases.and_test_whether_it_works')}
    - {i18n.t('phrases.Note')} {i18n.t('phrases.Other_packages_from')} {i18n.t('phrases.update_testing')} + {i18n.t('words.Note')} {i18n.t('phrases.Other_packages_from')} {i18n.t('phrases.update_testing')} {i18n.t('phrases.repo_may_be_installed')}{" "} {i18n.t('phrases.somtimes_the_update')}.
    - {i18n.t('words.Run')} fedora-easy-karma --fas-username=FAS_USERNAME, and look for{" "} - Bugs, Test Cases, and/or {i18n.t('words.notes')} sections in the detailed output.{" "} + {i18n.t('words.Run')} fedora-easy-karma --fas-username=FAS_USERNAME {i18n.t('phrase.and_look_for')}{" "} + Bugs, {i18n.t('phrases.test_cases')}, {i18n.t('phrases.and_or')}{i18n.t('words.notes')} {i18n.t('phrases.section_in_the')}{" "} {i18n.t('phrases.we_already_mentioned_bodhi')}{" "} fedora-easy-karma{i18n.t('phrases.interface_for_submitting')}
    - {i18n.t('phrases.')} fedora-easy-karma {i18n.t('phrases.shows_the_URL')}{" "} + fedora-easy-karma {i18n.t('phrases.shows_the_URL')}{" "} https://bodhi.fedoraproject.org/updates/FEDORA-2019-00870e8bfc.
    {i18n.t('phrases.you_can_have_a_look')} diff --git a/src/wizard/FedoraManualTesting.js b/src/wizard/FedoraManualTesting.js index f852ab2..3ea4a75 100644 --- a/src/wizard/FedoraManualTesting.js +++ b/src/wizard/FedoraManualTesting.js @@ -3,7 +3,10 @@ import { Modal, ModalHeader, ModalBody, ModalFooter } from "reactstrap" import SourceLink from "../landingpage/SourceLink" import { CollapsableCard, CollapsableBadge } from "./components" -export default class FedoraManualTesting extends Component { +import {connect} from "react-redux" +import { i18n } from "dateformat" + +class FedoraManualTesting extends Component { render() { let sections = Object.keys(this.props.data).map((k) => ( @@ -28,6 +31,7 @@ class FedoraManualTestingItemsListSub2 extends Component { class FedoraManualTestingItemsListSub1 extends Component { render() { + var subsections = Object.keys(this.props.data).map((k) => (
  • {k} @@ -41,8 +45,7 @@ class FedoraManualTestingItemsListSub1 extends Component { case "Installation": l1 = (
    - The Installation testcases generally deal with a part of the - installation procedure. + The Installation {i18n.t('phrases.testcases_generally')}
    You will certainly need an installation ISO, and either a Virtual or Bare-metal machine to run the test. @@ -112,6 +115,7 @@ class FedoraManualTestingItemsListSub1 extends Component { class FedoraManualTestingItem extends Component { render() { + const {i18n} = this.props const extra_data = this.props.data.extra_data const tc_url = extra_data.testcase_url @@ -303,8 +307,7 @@ class FedoraManualTestingItem extends Component { Awesome! Ideally read up on https://fedoraproject.org/wiki/How_to_file_a_bug_report
    - If you don't feel like reading a wall of text, at least pot together a small document - containing: + {i18n.t('phrases.if_you_dont')}
    • Brief description of what went wrong (e.g. "QA:Testcase_dualboot_with_windows - @@ -394,3 +397,12 @@ class ModalInfo extends Component { ) } } + +const mapPropsToStates = (state) =>{ + return{ + ...state.locale + } +} + + +export default connect(mapPropsToStates)(FedoraManualTesting, FedoraManualTestingItem) \ No newline at end of file diff --git a/src/wizard/Wizard.js b/src/wizard/Wizard.js index fcb0f9c..5cd9b32 100644 --- a/src/wizard/Wizard.js +++ b/src/wizard/Wizard.js @@ -7,8 +7,6 @@ import { Container, Row } from "reactstrap" import { connect } from "react-redux" import { loadWizardData } from "../actions/reduxActions" -import SourceLink from "../landingpage/SourceLink" - class Wizard extends Component { constructor(props) { super(props) @@ -48,8 +46,7 @@ class Wizard extends Component {

      {i18n.t('phrases.Nothing_sparked_joy')}

      {i18n.t('phrases.None_of_the_above_looks_interesting_to_you')}{" "} - ! -
      + https://whatcanidoforfedora.org/!
  • From ca5f69af630e4e2358519bdb18de2d1261512ccb Mon Sep 17 00:00:00 2001 From: Queen Date: Apr 21 2021 13:20:58 +0000 Subject: [PATCH 5/8] selection of languages through a dropdown implented --- diff --git a/src/index.css b/src/index.css index 27f6835..9f38998 100644 --- a/src/index.css +++ b/src/index.css @@ -138,3 +138,17 @@ ol.steps > li { border-top-style: solid; border-top-width: 1px; } + +.drop-down-container{ + width: 200px; + height: 100px; + display: flex; + justify-content: center; + align-items: center; + position: absolute; + right:0px +} + +.drop-down-container :hover{ + cursor: pointer; +} diff --git a/src/landingpage/Blockers.js b/src/landingpage/Blockers.js index 7f33d06..9c78e2d 100644 --- a/src/landingpage/Blockers.js +++ b/src/landingpage/Blockers.js @@ -54,7 +54,7 @@ class Blockers extends Component {
    - {i18n.t('phrases.final')} + {i18n.t('words.final')}
    Proposed Blockers{i18n.t('phrases.Proposed_Blockers')} {this.props.data.beta_blockers_proposed}
    Accepted Blockers{i18n.t('phrases.Accepted_Blockers')} {this.props.data.beta_blockers}
    Proposed FEs{i18n.t('phrases.Proposed_FEs')} {this.props.data.beta_fe_proposed}
    Accepted FEs{i18n.t('phrases.Accepted_FEs')} {this.props.data.beta_fe}
    - Final + {i18n.t('words.final')}
    Proposed Blockers{i18n.t('phrases.Proposed_Blockers')} {this.props.data.final_blockers_proposed}
    Accepted Blockers{i18n.t('phrases.Accepted_Blockers')} {this.props.data.final_blockers}
    Proposed FEs{i18n.t('phrases.Proposed_FEs')} {this.props.data.final_fe_proposed}
    Accepted FEs{i18n.t('phrases.Accepted_FEs')} {this.props.data.final_fe}
    @@ -49,8 +52,8 @@ class Timeline extends Component { return (

    - Current development schedule{" "} - + {i18n.t('phrases.current_development_schedule')}{" "} +

    @@ -81,4 +84,10 @@ class Line extends Component { } } -export default Timeline +const mapStateToProps = (state) =>{ + return{ + ...state.locale + } +} + +export default connect(mapStateToProps)(Timeline) diff --git a/src/reducers/index.js b/src/reducers/index.js index 5e628e0..82f4bb8 100644 --- a/src/reducers/index.js +++ b/src/reducers/index.js @@ -1,5 +1,9 @@ import ActionTypes from "../constants" +import i18n from 'i18n-js' +import en from '../translations/en' +import fr from '../translations/fr' + const defaultState = { landing_page: { blockerbugs: {}, @@ -16,6 +20,9 @@ const defaultState = { providers: [], all_actions: [], }, + locale: { + i18n: i18n + } } export default (state = defaultState, action) => { @@ -36,6 +43,21 @@ export default (state = defaultState, action) => { }, } + case ActionTypes.CHANGE_LANGUAGE: + let locale = action.payload + localStorage.setItem('locale', locale) + i18n.locale = locale + i18n.fallbacks = true + i18n.translations = { en, fr } + let newI18n = { ...i18n } + return { + ...state, + locale: { + ...state.locale, + i18n: newI18n + } + } + default: return { ...state, diff --git a/src/translations/en.js b/src/translations/en.js new file mode 100644 index 0000000..32e4a43 --- /dev/null +++ b/src/translations/en.js @@ -0,0 +1,143 @@ +export default{ + words:{ + hello: 'Hello', + disable:"Disable", + enable:"Enable", + Rawhide:"Rawhide", + Upgrade:"Upgrade", + Miscellaneous:"Miscellaneous", + Run:"Run", + Note:"Note:", + final:"Final", + Visit:"Visit", + enter:"Enter", + notes:"Notes" + + }, + phrases:{ + + Show_me:"Show me", + change_language:"Change Language", + and_or:"and/or", + save_changes:"Save changes", + configure_visibility:"Configure visibility of the info-cards", + test_cases:"Test Cases", + go_to_home:"Go to home page ", + for_a_web:"for a web-browser", + to_see_older:"to see older", + User_interface:"User interface", + Test_Matrix:"Test Matrix", + Few_hours:"Few hours", + update_testing:"updates-testing", + section_in_the:"sections in the detailed output.", + and_look_for:",and look for", + Storage_devices:"Storage devices", + What_is_Karma:"What is Karma", + Several_days:"Several days", + Proposed_FEs:"Proposed FEs", + Accepted_FEs:"Accepted FEs", + Tell_me_More:"Tell me more!", + IoT_Test_Day:"[F34] IoT Test Day", + ARM_disk_images:"ARM disk images", + Not_sure_how:"Not sure how?", + to_skip_it:"to skip it.", + repo_by:" repo, by running ", + the_name_of:" The name of the ISO image you used ", + testcases_generally:"testcases generally deal with a part of the installation procedure.", + is_a_group_containing:" - Is a group containing several projects. Expand to see more.", + note_what_you_did:"Note what you did, as precisely as possible, in a step-by-step fashion. Even details like 'Chose Polish as the languae for the installation process' can matter.", + share_your_notes_on_the:"Share your notes on the internet (you can use fpaste), and ask for help with filing the bug report on our IRC channel #fedora-qa at freenode.net", + if_you_are_not_familiar:"If you are not that familiar with IRC, you can use the web-interface[link] just enter a Nickname of your choice, #fedora-qa (including the hash sign) in the Channels field, and click Connect.", + you_can_either_install:"You can either install Fedora onto clean Virtual or Bare-metal machine, or use a Live image instead.", + the_updates_are:"The updates are kept in", + interface_for_submitting:"interface for submitting Karma and/or learning about the Update, you can visit Bodhi directly.", + and_choose_a:"and choose a package you know.", + and_create_it:"and create it.", + brief_description_of_what:" Brief description of what went wrong (e.g. QA:Testcase_dualboot_with_windows -Bootloader does not show the Windows option)", + try_to_reproduce_the:"Try to reproduce the same state again based on the steps above (you can also experiment a bit, and try to come up with just the critical steps)", + choose_an_update:"Choose an update to test", + have_a_look_at:"Have a look at the available packages in ", + make_sure_your:"Make sure your system is up-to-date: ", + note_the_user:"Note the username and password, you will need it later on.", + sure_let_me_do_it:"Sure, let me do it!", + somtimes_the_update:" Sometimes, the update associated with the package you just installed fixes some specific bugs, or has testcases associated with it", + an_update_can:"An update can (and usually does) consist of several packages (rpms), that are going through the acceptance process together.", + Audio_Test_Day:"[F34] Audio Test Day", + it_identifies:"It identifies the packages installed from the ", + and_report_what_you_found_out:"and report what you found out.", + Install_the_package:"Install the package", + repository_and_matches:"repository, and matches them to the updates in Bodhi.", + and_test_whether_it_works:"and test whether it works, as you would expect.", + Fedora_Media_Writer:"Fedora Media Writer", + Choose_an_update_to_test:"Choose an update to test", + Install_fedora:"Install fedora-easy-karma tool: ", + once_you_get_the_bug_reported:"Once you get the Bug reported, make sure to also submit the result into the testing matrix. Either use", + we_already_mentioned_bodhi:"We already mentioned Bodhi, several times. Instead of using the", + repo_may_be_installed:" repo may be installed as dependencies (shown during the installation process). Try to test those too, if possible.", + users_or_automated:"Users (or automated systems) can then provide feedback in form of positive/negative Karma, marking the update as working (or not) within the scope of their expectations.", + which_acts_as_a_gatekeeper:"which acts as a gatekeeper between new package releases and the stable repositories. ", + Installation_repositories:"Installation repositories", + Release_blocking_environments :"elease-blocking environments ", + Default_boot_and_install:"Default boot and install (x86_64)", + Default_boot_and_install_aarch64 :"Default boot and install (aarch64)", + Custom_storage_configuration:"Custom storage configuration", + Release_blocking_desktops:"Release-blocking desktops", + Accepted_Blockers:"Accepted Blockers", + Fedora_QA_Meeting:"Fedora QA Meeting", + Testing_Bodhi_Karma:"Testing - Bodhi Karma", + Programming_Easyfix:"Programming - Easyfix", + Proposed_Blockers :"Proposed Blockers ", + Need_some_tips:"Need some tips?", + Sourceon_Pagure:"Sourceon Pagure", + version:"version 0.1.0", + still_not_sure:"Still not sure? Just press ", + when_you_test:"when you test a text-editor, or", + Make_your_choice:"Make your choice!", + Restore_the_stable:"Restore the stable-packages on your system by running ", + Other_packages_from:"Other packages from", + New_to_fedora:"New to fedora-easy-karma?", + Dont_have_one_yet:"Don't have one yet?", + Nothing_sparked_joy:" Nothing sparked joy?", + Beta_Freeze:"Beta Freeze (starts at 1400 UTC)", + Final_Freeze :"Final Freeze (starts at 1400 UTC) ", + Blocker_Review_Meeting:"Blocker Review Meeting", + Fedora_QA_Meeting_Minutes: "Fedora QA Meeting Minutes", + blockers_and_FEs:"blockers and FEs", + Visit_meetbot_to_see_older:"Visit meetbot to see older.", + current_development_schedule: "Current development schedule", + Latest_minutes_from :"Latest minutes from 2021-03-22-15.00", + i_opened_a_couple:" I opened a couple of tabs, and browsed random pages.", + Branch_Fedora_Linux_34_from_Rawhide:"Branch Fedora Linux 34 from Rawhide", + Advanced_custom_storage_configuration:"Advanced custom storage configuration", + Beta_Release_Public_Availability:"Beta Release Public Availability", + Fedora_Accounts_System:"Fedora Accounts System (FAS) account is required.", + Final_Release_Public_Availability:"Final Release Public Availability (GA)", + Testing_Fedora_Release_validation:"Testing - Fedora Release validation", + Meetings_and_testdays_in_the_next_7_days: "Meetings and testdays in the next 7 days", + Tell_me_more_about:"Tell me more about the process! ", + to_mark_the:"to mark the package as broken.", + if_you_dont:" If you don't feel like reading a wall of text, at least pot together a small document containing:", + shows_the_URL:"shows the URL of the relevant update near the bottom of the text output - look for URL like", + you_can_have_a_look:"You can have a look at other people's comments, the afore-mentioned Bugs or Test Cases, and even submit the Karma directly. Just use your FAS credentials to log-in.", + you_are_then_presented:"You are then presented with the relevant updates one-by-one, to submit Karma and a comment.", + to_mark_positive:"to mark positive karma (the update works just fine, as far as you can tell), or", + not_sure_you_can:"Not sure you can judge the package's state? Have a look at the", + add_a_comment:"Add a comment - even if it works, try to describe what you tested. It can be as easy as", + do_you_have_some_spare_time: " Do you have some spare time? Feeling like helping others? Wanna improve Fedora ? Click here!", + The_goal_of_release_validation_testing_is_to_ensure:"The goal of release validation testing is to ensure the release candidate meets the requirements for Fedora releases. You will manually execute test cases to verify installation and basic functionality of the various Fedora products.", + Simple_voting_system_that_allows_for_esters_to_provide_feedback_as:"Simple voting system that allows for testers to provide feedback as to whether a given package update works or not.", + Number_of_projects_within_Fedora_which_are_looking_for_help:"Number of projects within Fedora which are looking for help. These tasks have been evaluated as easy entrance point.", + None_of_the_above_looks_interesting_to_you:"None of the above looks interesting to you? We'd be happy if you looked around at https://whatcanidoforfedora.org/!", + Before_a_new_version_of_a_package:"Before a new version of a package is pushed to the Fedora's Updates repository, it needs to be tested and proved functional.", + The_Base_testcases_cover_the_system:"The Base testcases cover the system's basic functionality just after a clean installation", + Most_times_you_will_be_asked_to_perform_a_clean_Fedora_installation:"Most times, you will be asked to perform a clean Fedora installation. You can use either Virtual or Bare-metal machine", + Pro_tip_using_a_snapshot_of_cleanly_installed_Virtual_machine_is_just_fine:"Pro tip: using a snapshot of cleanly installed Virtual machine is just fine. No need to reinstall for every testcase", + Even_thought_the_Cloud_testcases_are_best_done_in_the_specific_environments:"Even thought the Cloud testcases are best done in the specific environments like EC2 or Openstack, you can also perform them locally using Testcloud.Have a look at the Cloud provider setup guides for more details.", + The_Desktop_testcases_cover_basic_functionality_of_the_desktop_environment:"The Desktop testcases cover basic functionality of the desktop environment.You can either install Fedora onto clean Virtual or Bare-metal machine, or use a Live image instead." , + The_Installation_testcases_generally_deal_with_a_part_of_the_installation_procedure:"The Installation testcases generally deal with a part of the installation procedure", + You_will_certainly_need_an_installation_ISO:"You will certainly need an installation ISO, and either a Virtual or Bare-metal machine to run the test.", + Absolutely_make_sure:"Absolutely make sure to provide reasonable amount of detail, when submitting negative karma - ideally, you should also create a bugreport, and reference it in the comment", + i_tried_openning:"I tried openning and editing a document, and it worked", + + } +} \ No newline at end of file diff --git a/src/translations/fr.js b/src/translations/fr.js new file mode 100644 index 0000000..57dbfe4 --- /dev/null +++ b/src/translations/fr.js @@ -0,0 +1,143 @@ +export default{ + words:{ + hello: 'Salut ', + disable:"Désactiver", + enable:"Activez", + Rawhide:"Rawhide", + Upgrade:"Mise à jour", + Miscellaneous:"Divers", + Run:"Exécuter", + Note:"Notez:", + final:"Finale", + Visit:"Visitez", + enter:"Entre", + notes:"Notes" + + + }, + phrases:{ + change_language:"Changer de langue", + save_changes:"Sauvegarder les changements", + configure_visibility:"Configurer la visibilité des info-cartes", + to_see_older:"pour voir plus vieux", + test_cases:"Cas de test", + and_or:"et_ou", + go_to_home:"Aller à la page d'accueil", + Show_me:"Montrez-moi", + for_a_web:"pour un navigateur web", + User_interface:"L'interface utilisateur", + section_in_the:"dans la sortie détaillée.", + Test_Matrix:"Matrice de tests", + Few_hours:"Quelques heures", + and_look_for:",et cherchez", + Storage_devices:"Dispositifs de stockage", + What_is_Karma:"Qu'est-ce que le karma ?", + Several_days:"Plusieurs jours", + Proposed_FEs:"FEs proposées", + Accepted_FEs:"FEs acceptées", + to_skip_it:"pour le sauter.", + Tell_me_More:"Dites-moi en plus!", + IoT_Test_Day:"[F34] IoT Test Day", + ARM_disk_images:"Images de disque ARM", + Not_sure_how:"Vous ne savez pas comment ?", + Audio_Test_Day:"[F34] Audio Test Day", + and_create_it:"et le créer.", + repo_by:" repo, en exécutant ", + the_name_of:" Le nom de l'image ISO que vous avez utilisée ", + testcases_generally:"Les scénarios de test traitent généralement d'une partie de la procédure d'installation.", + is_a_group_containing:" - Est un groupe contenant plusieurs projets. Développez pour en voir plus.", + brief_description_of_what:"Brève description de ce qui n'a pas fonctionné (par exemple, QA:Testcase_dualboot_with_windows -Le chargeur de démarrage ne montre pas l'option Windows)", + note_what_you_did:"Notez ce que vous avez fait, aussi précisément que possible, en procédant étape par étape. Même détails comme Choisir le polonais comme langue pour le processus d'installation peuvent avoir de l'importance.avoir de l'importance.", + try_to_reproduce_the:"Essayez de reproduire à nouveau le même état en vous basant sur les étapes ci-dessus (vous pouvez également expérimenter un peu, et essayer de ne retenir que les étapes critiques)", + share_your_notes_on_the:"Partagez vos notes sur internet (vous pouvez utiliser fpaste), et demandez de l'aide pour remplir le rapport de bogue sur notre canal IRC #fedora-qa at freenode.net", + if_you_are_not_familiar:"Si vous n'êtes pas très familier avec IRC, vous pouvez utiliser l'interface web [lien] juste d'entrer un pseudonyme de votre choix, #fedora-qa (y compris le signe dièse) dans le champ Channels field, and click Connect.", + once_you_get_the_bug_reported:"Une fois le bogue signalé, assurez-vous de soumettre le résultat dans la matrice de test. de test. Vous pouvez utiliser", + you_can_either_install:"Vous pouvez soit installer Fedora sur une machine virtuelle ou bare-metal propre, soit utiliser une image Live à la place.", + the_updates_are:"Les mises à jour sont conservées dans", + interface_for_submitting:"pour soumettre votre karma et/ou vous renseigner sur la mise à jour, vous pouvez visiter Bodhi directement.", + and_test_whether_it_works:" et testez s'il fonctionne, comme vous le souhaitez.", + Install_the_package:" Installer le paquet", + and_choose_a:"et choisissez un paquet que vous connaissez.", + choose_an_update:"Choisissez une mise à jour à tester", + have_a_look_at:"Jetez un coup d'œil aux paquets disponibles dans ", + make_sure_your:"Assurez-vous que votre système est à jour :", + note_the_user:"Notez le nom d'utilisateur et le mot de passe, vous en aurez besoin par la suite.", + sure_let_me_do_it:"Bien sûr, laissez-moi le faire !", + an_update_can:"Une mise à jour peut (et c'est généralement le cas) être constituée de plusieurs paquets (rpms) qui passent ensemble par le processus d'acceptation. le processus d'acceptation ensemble.", + and_report_what_you_found_out:"et rapportez ce que vous avez découvert.", + Fedora_Media_Writer:"Rédacteur médias de Fedora", + Choose_an_update_to_test:"Choisissez une mise à jour à tester", + Install_fedora:"Installer l'outil fedora-easy-karma: ", + Installation_repositories:"Dépôts d'installation", + Release_blocking_environments :"Release-blocking environments ", + Default_boot_and_install:"Démarrage et installation par défaut (x86_64)", + Default_boot_and_install_aarch64 :"Démarrage et installation par défaut (aarch64)", + Custom_storage_configuration:"Configuration de stockage personnalisée", + Release_blocking_desktops:"Blocage de la libération des postes de travail", + Accepted_Blockers:"Bloqueurs acceptés", + Fedora_QA_Meeting:"Réunion d'assurance qualité Fedora", + Testing_Bodhi_Karma:"Testing - Bodhi Karma", + Programming_Easyfix:"Programmation - Easyfix", + Proposed_Blockers :"Bloqueurs proposés ", + Need_some_tips:"Besoin de conseils?", + Sourceon_Pagure:"Sourceon Pagure", + version:"version 0.1.0", + if_you_dont:" Si vous n'avez pas envie de lire un mur de texte, préparez au moins un petit document contenant :", + we_already_mentioned_bodhi:"Nous avons déjà mentionné Bodhi, plusieurs fois. Au lieu d'utiliser le", + sometimes_the_update:" Parfois, la mise à jour associée au paquet que vous venez d'installer corrige certains bogues spécifiques ou comporte des scénarios de test.", + shows_the_URL:"affiche l'URL de la mise à jour pertinente près du en bas de l'affichage du texte - recherchez des URL du type", + still_not_sure:"Vous n'êtes toujours pas sûr ? Appuyez simplement sur ", + when_you_test:"lorsque vous testez un éditeur de texte, ou", + Make_your_choice:"Faites votre choix !", + Restore_the_stable:"Restaurez les paquets stables sur votre système en exécutant ", + you_can_have_a_look:" Vous pouvez consulter les commentaires d'autres personnes, les bogues ou les cas de test susmentionnés et même soumettre directement votre karma. Cases, et même soumettre directement le Karma. Il suffit d'utiliser vos informations d'identification FAS pour vous connecter.", + Other_packages_from:"Autres paquets de", + New_to_fedora:"Nouveau sur fedora-easy-karma ?", + Dont_have_one_yet:"Vous n'en avez pas encore ?", + Nothing_sparked_joy:" Rien n'a déclenché la joie ?", + Beta_Freeze:"Beta Freeze (starts at 1400 UTC)", + Final_Freeze :"Final Freeze (starts at 1400 UTC) ", + i_opened_a_couple:" J'ai ouvert quelques onglets, et parcouru des pages au hasard.", + Blocker_Review_Meeting:"Réunion sur la révision des bloqueurs", + Fedora_QA_Meeting_Minutes: "Compte rendu de la réunion d'AQ de Fedora", + blockers_and_FEs:"bloqueurs et FEs", + update_testing:"mises à jour-testing", + repo_may_be_installed:" peuvent être installés en tant que dépendances (indiquées pendant le processus d'installation). Essayez de les tester aussi, si possible.", + users_or_automated:"Les utilisateurs (ou les systèmes automatisés) peuvent ensuite donner leur avis sous forme de Karma positif/négatif. Karma, en marquant la mise à jour comme fonctionnant (ou non) dans le cadre de leurs attentes.", + it_identifies:"Il identifie les paquets installés à partir du ", + repository_and_matches:"dépôt, et les fait correspondre aux mises à jour de Bodhi.", + not_sure_you_can:"Vous n'êtes pas sûr de pouvoir juger de l'état du paquet ? Jetez un coup d'œil à la", + Visit_meetbot_to_see_older:"Visitez meetbot pour voir plus vieux.", + current_development_schedule: "Calendrier de développement actuel", + Latest_minutes_from :"Latest minutes from 2021-03-22-15.00", + Branch_Fedora_Linux_34_from_Rawhide:"Branche Fedora Linux 34 de Rawhide", + to_mark_the:"pour marquer le paquet comme cassé.", + to_mark_positive:"pour marquer un karma positif (la mise à jour fonctionne parfaitement, pour autant que l'on puisse dire), ou bien", + Advanced_custom_storage_configuration:"Configuration avancée du stockage personnalisé", + Beta_Release_Public_Availability:"Version bêta Disponibilité publique ", + Fedora_Accounts_System:"Un compte FAS (Fedora Accounts System) est nécessaire.", + Final_Release_Public_Availability:"Disponibilité publique de la version finale (GA)", + Testing_Fedora_Release_validation:"Tests - Validation de la version de Fedora", + Meetings_and_testdays_in_the_next_7_days: "Réunions et journées d'essai dans les 7 prochains jours", + Tell_me_more_about:"Dites-m'en plus sur le processus ! ", + you_are_then_presented:"Les mises à jour pertinentes vous sont ensuite présentées une par une, afin de soumettre Karma et un commentaire.", + add_a_comment:"Ajoutez un commentaire - même si cela fonctionne, essayez de décrire ce que vous avez testé. Cela peut être aussi simple que", + do_you_have_some_spare_time: " Vous avez un peu de temps libre ? Tu as envie d'aider les autres ? Voulez vous améliorer Fedora ? Cliquez ici !", + The_goal_of_release_validation_testing_is_to_ensure:"L'objectif des tests de validation des versions est de s'assurer que la version candidate répond aux exigences des versions de Fedora. Vous exécuterez manuellement des cas de test pour vérifier l'installation et les fonctionnalités de base des différents produits Fedora.", + Simple_voting_system_that_allows_for_esters_to_provide_feedback_as:"Un système de vote simple qui permet aux testeurs de donner leur avis sur le fonctionnement ou non d'une mise à jour de paquet donnée.", + Number_of_projects_within_Fedora_which_are_looking_for_help:"Nombre de projets au sein de Fedora qui recherchent de l'aide. Ces tâches ont été évaluées comme des points d'entrée faciles.", + None_of_the_above_looks_interesting_to_you:"Rien de ce qui précède ne vous semble intéressant ? Nous serions heureux que vous regardiez à https://whatcanidoforfedora.org/!", + Before_a_new_version_of_a_package:"Avant qu'une nouvelle version d'un paquet soit poussée vers le dépôt de mises à jour de Fedora, elle doit être testée et prouvée fonctionnelle.", + The_Base_testcases_cover_the_system:"Les tests de base couvrent les fonctionnalités de base du système juste après une installation propre.", + Most_times_you_will_be_asked_to_perform_a_clean_Fedora_installation:"La plupart du temps, il vous sera demandé d'effectuer une installation propre de Fedora. Vous pouvez utiliser une machine virtuelle ou à nu.", + Pro_tip_using_a_snapshot_of_cleanly_installed_Virtual_machine_is_just_fine:"Conseil de pro : l'utilisation d'un instantané de la machine virtuelle proprement installée convient parfaitement. Il n'est pas nécessaire de réinstaller pour chaque cas de test", + Even_thought_the_Cloud_testcases_are_best_done_in_the_specific_environments:"Bien qu'il soit préférable de réaliser les tests de Cloud dans des environnements spécifiques tels que EC2 ou Openstack, vous pouvez également les réaliser localement à l'aide de Testcloud, en consultant les guides de configuration des fournisseurs de Cloud pour plus de détails.", + The_Desktop_testcases_cover_basic_functionality_of_the_desktop_environment:"Vous pouvez soit installer Fedora sur une machine virtuelle propre ou une machine nue, soit utiliser une image live à la place." , + The_Installation_testcases_generally_deal_with_a_part_of_the_installation_procedure:"Les valises de test d'installation traitent généralement d'une partie de la procédure d'installation.", + Absolutely_make_sure:"Assurez-vous absolument de fournir une quantité raisonnable de détails, lorsque vous soumettez karma négatif - idéalement, vous devriez aussi créer un rapport de bogue, et le référencer dans le commentaire", + i_tried_openning:"J'ai essayé d'ouvrir et de modifier un document, et ça a marché.", + You_will_certainly_need_an_installation_ISO:"Vous aurez certainement besoin d'un ISO d'installation, et d'une machine virtuelle ou bare-metal pour effectuer le test.", + + which_acts_as_a_gatekeeper:"qui agit comme un gardien entre les nouvelles versions de paquets et les dépôts stables.", + } +} \ No newline at end of file diff --git a/src/wizard/FedoraEasyKarma.js b/src/wizard/FedoraEasyKarma.js index d4e6be6..8452106 100644 --- a/src/wizard/FedoraEasyKarma.js +++ b/src/wizard/FedoraEasyKarma.js @@ -1,133 +1,112 @@ import React, { Component } from "react" +import SourceLink from "../landingpage/SourceLink" import { CollapsableBadge } from "./components" -export default class FedoraEasyKarmaItemsList extends Component { +import {connect} from "react-redux" + +class FedoraEasyKarmaItemsList extends Component { render() { + const {i18n} = this.props if (this.props.data === undefined) return null else return (
    -

    What is Karma

    - Before a new version of a package is pushed to the Fedora's Updates repository, it - needs to be tested and proved functional.{" "} +

    {i18n.t('phrases.What_is_Karma')}

    + {i18n.t('phrases.Before_a_new_version_of_a_package')}{" "} - The updates are kept in{" "} - - Bodhi - - , which acts as a gatekeeper between new package releases and the stable repositories.{" "} - Users (or automated systems) can then provide feedback in form of positive/negative - Karma, marking the update as working (or not) within the scope of their expectations.{" "} - An update can (and usually does) consist of several packages (rpms), that are going - through the acceptance process together. + + {i18n.t('phrases.the_updates_are')}{" "} + + + + , {i18n.t('phrases.which_acts_as_a_gatekeeper')}{" "} + {i18n.t('phrases.users_or_automated')}{" "} + {i18n.t('phrases.an_update_can')} -

    Sure, let me do it!

    +

    {i18n.t('phrases.sure_let_me_do_it')}

    1. - Fedora Accounts System (FAS) account is required.{" "} + {i18n.t('phrases.Fedora_Accounts_System')}{" "}
      • - Visit{" "} - - FAS Sign-up page - {" "} - and create it. + {i18n.t('words.Visit')}{" "} + + {" "} + {i18n.t('phrases.and_create_it')}
      • -
      • Note the username and password, you will need it later on.
      • +
      • {i18n.t('phrases.note_the_user')}
    2. - Make sure your system is up-to-date: sudo dnf update --refresh + {i18n.t('phrases.make_sure_your')}sudo dnf update --refresh
    3. - Install fedora-easy-karma tool: sudo dnf install fedora-easy-karma + {i18n.t('phrases.Install_fedora')}sudo dnf install fedora-easy-karma
    4. - Choose an update to test{" "} + {i18n.t('phrases.choose_an_update')}{" "} - Have a look at the available packages in updates-testing repo, by - running dnf --enablerepo=updates-testing list --refresh --upgrades and - choose a package you know. + {i18n.t('phrases.have_a_look_at')} {i18n.t('phrases.update_testing')} {i18n.t('phrases.repo_by')} + dnf --enablerepo=updates-testing list --refresh --upgrades {i18n.t('phrases.and_choose_a')}
    5. - Install the package{" "} - sudo dnf --enablerepo=updates-testing update PACKAGE_NAME, and test - whether it works, as you would expect. + {i18n.t('phrases.Install_the_package')}{" "} + sudo dnf --enablerepo=updates-testing update PACKAGE_NAME, {i18n.t('phrases.and_test_whether_it_works')}
      - Note: Other packages from updates-testing repo may be - installed as dependencies (shown during the installation process). Try to test those - too, if possible.{" "} + {i18n.t('words.Note')} {i18n.t('phrases.Other_packages_from')} {i18n.t('phrases.update_testing')} + {i18n.t('phrases.repo_may_be_installed')}{" "} - Sometimes, the update associated with the package you just installed fixes some - specific bugs, or has testcases associated with it. + {i18n.t('phrases.somtimes_the_update')}.
      - Run fedora-easy-karma --fas-username=FAS_USERNAME, and look for{" "} - Bugs, Test Cases, and/or Notes sections in - the detailed output.{" "} + {i18n.t('words.Run')} fedora-easy-karma --fas-username=FAS_USERNAME, and look for{" "} + Bugs, Test Cases, and/or {i18n.t('words.notes')} sections in the detailed output.{" "} - We already mentioned Bodhi, several times. Instead of using the{" "} - fedora-easy-karma interface for submitting Karma and/or learning - about the Update, you can visit Bodhi directly. + {i18n.t('phrases.we_already_mentioned_bodhi')}{" "} + fedora-easy-karma{i18n.t('phrases.interface_for_submitting')}
      - fedora-easy-karma shows the URL of the relevant update near the - bottom of the text output - look for URL like{" "} + {i18n.t('phrases.')} fedora-easy-karma {i18n.t('phrases.shows_the_URL')}{" "} https://bodhi.fedoraproject.org/updates/FEDORA-2019-00870e8bfc.
      - You can have a look at other people's comments, the afore-mentioned Bugs or Test - Cases, and even submit the Karma directly. Just use your FAS credentials to - log-in. + {i18n.t('phrases.you_can_have_a_look')}
    6. - Run fedora-easy-karma --fas-username=FAS_USERNAME and report what you - found out.{" "} + {i18n.t('words.Run')}fedora-easy-karma --fas-username=FAS_USERNAME {i18n.t('phrases.and_report_what_you_found_out')}{" "} - It identifies the packages installed from the updates-testing{" "} - repository, and matches them to the updates in Bodhi. + {i18n.t('phrases.it_identifies')} {i18n.t('phrases.update_testing')}{" "} + {i18n.t('phrases.repository_and_matches')}
      - You are then presented with the relevant updates one-by-one, to submit Karma and a - comment.{" "} + {i18n.t('phrases.you_are_then_presented')}{" "}
      1. - Enter 1 to mark positive karma (the update works just fine, as - far as you can tell), or -1 to mark the package as broken.{" "} + {i18n.t('words.enter')}1 {i18n.t('phrases.to_mark_positive')} + -1 {i18n.t('phrases.to_mark_the')}{" "}
        - Not sure you can judge the package's state? Have a look at the{" "} - - Update Feedback Guidelines - + {i18n.t('phrases.not_sure_you_can')}{" "} + +
        - Still not sure? Just press Enter to skip it. + {i18n.t('phrases.still_not_sure')}{i18n.t('words.enter')}{i18n.t('phrases.to_skip_it')}
      2. - Add a comment - even if it works, try to describe what you tested. It can be - as easy as{" "} - I tried openning and editing a document, and it worked. when you - test a text-editor, or{" "} - I opened a couple of tabs, and browsed random pages. for a - web-browser. + {i18n.t('phrases.add_a_comment')}{" "} + {i18n.t('phrases.i_tried_openning')} + {i18n.t('phrases.when_you_test')}{" "} + {i18n.t('phrases.i_opened_a_couple')} {i18n.t('phrases.for_a_web')}.
        - Absolutely make sure to provide reasonable amount of detail, when submitting - negative karma - ideally, you should also create a bugreport, and reference - it in the comment. + {i18n.t('phrases.Absolutely_make_sure')}
    7. - Restore the stable-packages on your system by running{" "} + {i18n.t('phrases.Restore_the_stable')}{" "} sudo dnf distro-sync
    @@ -135,3 +114,10 @@ export default class FedoraEasyKarmaItemsList extends Component { ) } } + +const mapStateToProps = (state) =>{ + return{ + ...state.locale + } +} +export default connect(mapStateToProps)(FedoraEasyKarmaItemsList) \ No newline at end of file diff --git a/src/wizard/Wizard.js b/src/wizard/Wizard.js index a9ecb3e..bf4905b 100644 --- a/src/wizard/Wizard.js +++ b/src/wizard/Wizard.js @@ -4,10 +4,9 @@ import Layout from "../layout/Layout" import { oraculumApiUrl_v1 } from "../config" import Actions from "./Actions" import { Container, Row } from "reactstrap" - + import { connect } from "react-redux" -import { loadWizardData } from "../actions/reduxActions" - +import { loadWizardData} from "../actions/reduxActions" class Wizard extends Component { constructor(props) { super(props) @@ -15,7 +14,7 @@ class Wizard extends Component { actions: [], } } - + componentDidMount() { fetch(oraculumApiUrl_v1 + "actions/all") .then((resp) => resp.json()) @@ -25,15 +24,16 @@ class Wizard extends Component { all_actions: data.actions, }) }) - + this.props.dispatch(loadWizardData()) } - + show_actions(actions) { this.setState({ actions }) } - + render() { + const { i18n } = this.props return (
    @@ -43,11 +43,10 @@ class Wizard extends Component { actions={this.props.all_actions} providers={this.props.providers} /> -

    Nothing sparked joy?

    +

    {i18n.t('phrases.Nothing_sparked_joy')}

    - None of the above looks interesting to you? We'd be happy if you looked around at{" "} - https://whatcanidoforfedora.org/! -
    + {i18n.t('phrases.None_of_the_above_looks_interesting_to_you')}{" "} + https://whatcanidoforfedora.org/!
    @@ -61,11 +60,12 @@ class Wizard extends Component { ) } } - + const mapStateToProps = (state) => { return { ...state.wizard, + ...state.locale } } - -export default connect(mapStateToProps)(Wizard) + +export default connect(mapStateToProps)(Wizard) \ No newline at end of file diff --git a/src/wizard/WizardForm.js b/src/wizard/WizardForm.js index 795d166..ddd6059 100644 --- a/src/wizard/WizardForm.js +++ b/src/wizard/WizardForm.js @@ -1,12 +1,10 @@ import React, { Component } from "react" import { Row, Button } from "reactstrap" import _ from "lodash" - -const durationString = { - 3: "Few hours", - 72: "Several days", -} - + +import { connect } from "react-redux" + + class WizardForm extends Component { constructor(props) { super(props) @@ -15,7 +13,12 @@ class WizardForm extends Component { selected_provider_tags: [], } } - + + durationString = { + 3: `${this.props.i18n.t('phrases.Few_hours')}`, + 72: `${this.props.i18n.t('phrases.Several_days')}`, + } + provider_selected(provider) { const tags = _(this.props.actions[provider.provider]) .flatMap((action) => action.tags) @@ -32,15 +35,16 @@ class WizardForm extends Component { } ) } - + tag_selected(tag) { const actions = _(this.props.actions[this.state.selected_provider.provider]) .filter((a) => a.tags.includes(tag)) .value() this.props.show_actions(actions) } - + render() { + const { i18n } = this.props const providers = [3, 72].map((duration) => { const duration_providers = this.props.providers .filter((p) => p.duration === duration) @@ -63,7 +67,7 @@ class WizardForm extends Component { className="btn-sm btn-block btn-wrap-text float-right" color={btncolor} onClick={(event) => this.provider_selected(p)}> - Tell me more! + {i18n.t('phrases.Tell_me_More')} @@ -71,20 +75,20 @@ class WizardForm extends Component { ) }) - + return (
    -

    {durationString[duration]}

    +

    {this.durationString[duration]}

    {duration_providers}
    ) }) - + const tag_selector = this.state.selected_provider === "" || !this.state.selected_provider.tags ? null : (
    -

    Make your choice!

    +

    {i18n.t('phrases.Make_your_choice')}

    ) - + return (
    @@ -104,7 +108,7 @@ class WizardForm extends Component { ) } } - + class Tags extends Component { constructor(props) { super(props) @@ -112,16 +116,16 @@ class Tags extends Component { selected_button: undefined, } } - + selected(t) { this.props.handler(t) this.setState({ selected_button: t }) } - + is_selected(t) { return t === this.state.selected_button ? "selected" : "primary" } - + render() { var x = this.props.data.map((tag) => (
    } } - -export default WizardForm + +const mapStateToProps = (state) => { + return { + ...state.locale + } +} + +export default connect(mapStateToProps)(WizardForm) From 0f3fb5a3eb1f8aea67a82aca1143eb701dc82f38 Mon Sep 17 00:00:00 2001 From: Queen Date: Apr 22 2021 11:36:05 +0000 Subject: [PATCH 7/8] merging --- diff --git a/README.md b/README.md index 9148773..6c5502d 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ The landingpage is now running at * Try Fedora QA Dashboard yourself, clone the repo, browse the code, try to do a small change and see the results. If you want to start contributing to this project, look for issues tagged "easyfix". + ### How to do pull requests * create an account on Pagure, don't forget to add your public ssh key to Pagure (click on your avatar > My settings > SSH Keys > Add SSH key) diff --git a/src/NotFound.js b/src/NotFound.js index 7ff839c..c4f8c04 100644 --- a/src/NotFound.js +++ b/src/NotFound.js @@ -2,9 +2,11 @@ import React, { Component } from "react" import Layout from "./layout/Layout" import { Link } from "react-router-dom" import { Container } from "reactstrap" +import {connect} from "react-redux" class Wizard extends Component { render() { + const {i18n} = this.props return ( @@ -16,7 +18,7 @@ class Wizard extends Component { - Go to home page + {i18n.t('phrases.go_to_home')}

    @@ -24,5 +26,10 @@ class Wizard extends Component { ) } } +const mapStateToProps =(state)=> { + return{ + ...state.locale + } +} -export default Wizard +export default connect(mapStateToProps) (Wizard) diff --git a/src/index.css b/src/index.css index 3021cc4..7198a1d 100644 --- a/src/index.css +++ b/src/index.css @@ -151,4 +151,4 @@ ol.steps > li { .drop-down-container :hover{ cursor: pointer; -} \ No newline at end of file +} diff --git a/src/landingpage/Events.js b/src/landingpage/Events.js index 51c13fb..d780e4c 100644 --- a/src/landingpage/Events.js +++ b/src/landingpage/Events.js @@ -48,9 +48,7 @@ class Event extends Component {
  • {this.props.start}
    - - {this.props.summary} - +
  • ) diff --git a/src/landingpage/Hideable.js b/src/landingpage/Hideable.js index aac075a..f8dc7de 100644 --- a/src/landingpage/Hideable.js +++ b/src/landingpage/Hideable.js @@ -1,5 +1,6 @@ import React, { Component } from "react" import _ from "lodash" +import SourceLink from "./SourceLink" class Hideable extends Component { constructor(props) { @@ -22,13 +23,13 @@ class Hideable extends Component { : "" }> {this.props.children} - this.props.toggle_handler(e, this.props.component_name)} - role="button"> - {this.props.is_enabled ? "Disable" : "Enable"} - + linkName = {this.props.is_enabled ? "Disable" : "Enable"} + role="button" + />
    ) } diff --git a/src/landingpage/LandingPage.js b/src/landingpage/LandingPage.js index 3fdaa24..114a33f 100644 --- a/src/landingpage/LandingPage.js +++ b/src/landingpage/LandingPage.js @@ -105,9 +105,6 @@ class LandingPage extends Component { - - -
    @@ -130,7 +127,6 @@ class LandingPage extends Component { ? `${i18n.t('phrases.save_changes')}` : `${i18n.t('phrases.configure_visibility')}`} -
    diff --git a/src/landingpage/Minutes.js b/src/landingpage/Minutes.js index 922062e..2be0af9 100644 --- a/src/landingpage/Minutes.js +++ b/src/landingpage/Minutes.js @@ -10,9 +10,7 @@ class Events extends Component {

    {i18n.t('phrases.Fedora_QA_Meeting_Minutes')}

    - - Latest minutes from {this.props.data.date} - +
    {i18n.t('words.Visit')}{" "} diff --git a/src/landingpage/SourceLink.js b/src/landingpage/SourceLink.js index 76cfa0b..a454a8a 100644 --- a/src/landingpage/SourceLink.js +++ b/src/landingpage/SourceLink.js @@ -1,17 +1,23 @@ -import React, {Component} from 'react' -class SourceLink extends Component { - render() { - return ( - - - - ) - } +import React from 'react' + +const SourceLink = ({ href, className, linkName, onClick, role, icon }) => { + + return ( + + {icon && } + + {linkName} + + + ) } export default SourceLink diff --git a/src/layout/Footer.js b/src/layout/Footer.js index f6cd591..d7693b0 100644 --- a/src/layout/Footer.js +++ b/src/layout/Footer.js @@ -1,11 +1,12 @@ import React, { Component } from "react" +import SourceLink from "../landingpage/SourceLink" class Footer extends Component { render() { return (
    - Source on Pagure{" "} + on Pagure{" "} version 0.1.0
    diff --git a/src/layout/Masthead.js b/src/layout/Masthead.js index a48e1d8..112e617 100644 --- a/src/layout/Masthead.js +++ b/src/layout/Masthead.js @@ -18,7 +18,7 @@ class Masthead extends Component { - ) : null} + ) : null} ) diff --git a/src/translations/en.js b/src/translations/en.js index 32e4a43..b78fe20 100644 --- a/src/translations/en.js +++ b/src/translations/en.js @@ -15,7 +15,6 @@ export default{ }, phrases:{ - Show_me:"Show me", change_language:"Change Language", and_or:"and/or", diff --git a/src/translations/fr.js b/src/translations/fr.js index 57dbfe4..98fdf58 100644 --- a/src/translations/fr.js +++ b/src/translations/fr.js @@ -12,8 +12,6 @@ export default{ Visit:"Visitez", enter:"Entre", notes:"Notes" - - }, phrases:{ change_language:"Changer de langue", @@ -137,7 +135,6 @@ export default{ Absolutely_make_sure:"Assurez-vous absolument de fournir une quantité raisonnable de détails, lorsque vous soumettez karma négatif - idéalement, vous devriez aussi créer un rapport de bogue, et le référencer dans le commentaire", i_tried_openning:"J'ai essayé d'ouvrir et de modifier un document, et ça a marché.", You_will_certainly_need_an_installation_ISO:"Vous aurez certainement besoin d'un ISO d'installation, et d'une machine virtuelle ou bare-metal pour effectuer le test.", - which_acts_as_a_gatekeeper:"qui agit comme un gardien entre les nouvelles versions de paquets et les dépôts stables.", } } \ No newline at end of file diff --git a/src/wizard/Easyfix.js b/src/wizard/Easyfix.js index ebccbfc..7e392eb 100644 --- a/src/wizard/Easyfix.js +++ b/src/wizard/Easyfix.js @@ -1,4 +1,5 @@ import React, { Component } from "react" +import SourceLink from "../landingpage/SourceLink" import { CollapsableCard } from "./components" export default class Easyfix extends Component { @@ -76,9 +77,7 @@ class EasyfixLinksList extends Component { render() { const items = this.props.data.map((action) => (
  • - - {action.name} - +
  • )) diff --git a/src/wizard/FedoraManualTesting.js b/src/wizard/FedoraManualTesting.js index 21fbc21..3c8b85f 100644 --- a/src/wizard/FedoraManualTesting.js +++ b/src/wizard/FedoraManualTesting.js @@ -1,8 +1,11 @@ import React, { Component } from "react" import { Modal, ModalHeader, ModalBody, ModalFooter } from "reactstrap" +import SourceLink from "../landingpage/SourceLink" import { CollapsableCard, CollapsableBadge } from "./components" -export default class FedoraManualTesting extends Component { +import { connect } from "react-redux" + +class FedoraManualTesting extends Component { render() { let sections = Object.keys(this.props.data).map((k) => ( @@ -27,6 +30,7 @@ class FedoraManualTestingItemsListSub2 extends Component { class FedoraManualTestingItemsListSub1 extends Component { render() { + var subsections = Object.keys(this.props.data).map((k) => (
  • {k} @@ -40,8 +44,7 @@ class FedoraManualTestingItemsListSub1 extends Component { case "Installation": l1 = (
    - The Installation testcases generally deal with a part of the - installation procedure. + The Installationtestcases generally deal with a part of the installation procedure.
    You will certainly need an installation ISO, and either a Virtual or Bare-metal machine to run the test. @@ -91,12 +94,8 @@ class FedoraManualTestingItemsListSub1 extends Component { environments like EC2 or Openstack, you can also perform them locally using Testcloud.
    Have a look at the{" "} - - Cloud provider setup - {" "} + + {" "} guides for more details.
    ) @@ -115,6 +114,7 @@ class FedoraManualTestingItemsListSub1 extends Component { class FedoraManualTestingItem extends Component { render() { + const { i18n } = this.props const extra_data = this.props.data.extra_data const tc_url = extra_data.testcase_url @@ -164,9 +164,8 @@ class FedoraManualTestingItem extends Component {
    1. Identify the testcase and `environment` in our{" "} - - Tescase matrix - {" "} + +
      • @@ -186,9 +185,8 @@ class FedoraManualTestingItem extends Component {
      • Read the{" "} - - Testcase - {" "} + + {" "} briefly, just to have a general idea of what you will be doing.{" "} The testcases are generally split into four sections: @@ -215,12 +213,8 @@ class FedoraManualTestingItem extends Component {
      • Based on the enviromnent, select and download and appropriate ISO{" "} - - here - + + .{" "}
          @@ -253,9 +247,8 @@ class FedoraManualTestingItem extends Component {
        • Study the{" "} - - Testcase - {" "} + + {" "} thoroughly, to be sure you know what to do.{" "}
            @@ -288,12 +281,8 @@ class FedoraManualTestingItem extends Component { IRC channel #fedora-qa at freenode.net{" "} If you are not that familiar with IRC, you can use the{" "} - - web-interface - {" "} + + {" "} just enter a Nickname of your choice, #fedora-qa (including the hash sign) in the Channels field, and click Connect. @@ -307,9 +296,8 @@ class FedoraManualTestingItem extends Component { Great! Either use relval report-results on command line (make sure to install the relval package first), or modify the{" "} - - matrix - {" "} + + {" "} directly by clicking on the Edit link next to the Matrice's header, and put {{result|pass|YOUR_NAME_HERE|}} in the appropriate spot. @@ -318,8 +306,7 @@ class FedoraManualTestingItem extends Component { Awesome! Ideally read up on https://fedoraproject.org/wiki/How_to_file_a_bug_report
            - If you don't feel like reading a wall of text, at least pot together a small document - containing: + If you don't feel like reading a wall of text, at least pot together a small document containing:
            • Brief description of what went wrong (e.g. "QA:Testcase_dualboot_with_windows - @@ -351,9 +338,8 @@ class FedoraManualTestingItem extends Component { Once you get the Bug reported, make sure to also submit the result into the testing matrix. Either use relval report-results on command line (make sure to install the relval package first), or modify the{" "} - - matrix - {" "} + + {" "} directly by clicking on the Edit link next to the Matrice's header, and put {{result|fail|YOUR_NAME_HERE|BUG_NUMBER|}} in the appropriate spot. @@ -388,9 +374,12 @@ class ModalInfo extends Component { return (
              - this.toggle(e)}> - {this.props.buttonLabel} - + + this.toggle(e)} + /> { + return { + ...state.locale + } +} + + +export default connect(mapStateToProps)(FedoraManualTesting) \ No newline at end of file diff --git a/src/wizard/WizardForm.js b/src/wizard/WizardForm.js index ddd6059..d6cab06 100644 --- a/src/wizard/WizardForm.js +++ b/src/wizard/WizardForm.js @@ -4,7 +4,6 @@ import _ from "lodash" import { connect } from "react-redux" - class WizardForm extends Component { constructor(props) { super(props) diff --git a/yarn.lock b/yarn.lock index 85bfaa4..c4c6e7c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5190,6 +5190,11 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= +i18n-js@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/i18n-js/-/i18n-js-3.8.0.tgz#b8fd6b12e1d88cb71f9806c29bca7c31c012e504" + integrity sha512-hDsGgPuvw/2P+lXSbOafAwspK8Ste8YrwuuUg17W3wEcO1JkQxBlPgsN1t2+852nTnz4YSYTjZc/1nAA2PC/nw== + iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" From 52485b4cf4935ae06f4a0231e80ede8a31f612b4 Mon Sep 17 00:00:00 2001 From: Queen Date: Apr 22 2021 14:39:51 +0000 Subject: [PATCH 8/8] final translation --- diff --git a/src/landingpage/Blockers.js b/src/landingpage/Blockers.js index 9c78e2d..86eaf36 100644 --- a/src/landingpage/Blockers.js +++ b/src/landingpage/Blockers.js @@ -16,7 +16,7 @@ class Blockers extends Component {

              Fedora {this.props.release}{i18n.t('phrases.blockers_and_FEs')}{" "} - +

              diff --git a/src/landingpage/Events.js b/src/landingpage/Events.js index d780e4c..405cbdd 100644 --- a/src/landingpage/Events.js +++ b/src/landingpage/Events.js @@ -34,7 +34,7 @@ class Events extends Component {

              {i18n.t('phrases.Meetings_and_testdays_in_the_next_7_days')}{" "} - +

                {meetings}
              @@ -48,7 +48,9 @@ class Event extends Component {
            • {this.props.start}
              - + + {this.props.summary} +
            • ) diff --git a/src/landingpage/Hideable.js b/src/landingpage/Hideable.js index f8dc7de..a57b128 100644 --- a/src/landingpage/Hideable.js +++ b/src/landingpage/Hideable.js @@ -1,14 +1,15 @@ import React, { Component } from "react" import _ from "lodash" -import SourceLink from "./SourceLink" +import {connect} from "react-redux" class Hideable extends Component { constructor(props) { super(props) this.id = _.uniqueId("hideable-id-") } - + render() { + const {i18n} =this.props if (this.props.component_name === undefined) { return
              } @@ -23,16 +24,20 @@ class Hideable extends Component { : "" }> {this.props.children} - this.props.toggle_handler(e, this.props.component_name)} - linkName = {this.props.is_enabled ? "Disable" : "Enable"} - role="button" - /> + role="button"> + {this.props.is_enabled ? `${i18n.t('words.disable')}` : `${i18n.t('words.enable')}`} +
              ) } } - -export default Hideable +const mapStateToProps =(state)=>{ + return{ + ...state.locale + } +} +export default connect(mapStateToProps)(Hideable) \ No newline at end of file diff --git a/src/landingpage/LandingPage.js b/src/landingpage/LandingPage.js index 114a33f..6a16cae 100644 --- a/src/landingpage/LandingPage.js +++ b/src/landingpage/LandingPage.js @@ -13,7 +13,6 @@ import _ from "lodash" import { connect } from "react-redux" import { loadData, changeLanguage } from "../actions/reduxActions" import '../index.css' - import Cookies from "universal-cookie" class LandingPage extends Component { constructor(props) { @@ -90,7 +89,6 @@ class LandingPage extends Component { ))} )) - const { i18n } = this.props return ( diff --git a/src/landingpage/Minutes.js b/src/landingpage/Minutes.js index 2be0af9..dda3ef3 100644 --- a/src/landingpage/Minutes.js +++ b/src/landingpage/Minutes.js @@ -10,11 +10,18 @@ class Events extends Component {

              {i18n.t('phrases.Fedora_QA_Meeting_Minutes')}

              - + + Latest minutes from {this.props.data.date} +
              {i18n.t('words.Visit')}{" "} - {" "} + + meetbot + {" "} {i18n.t('phrases.to_see_older')}.
              diff --git a/src/landingpage/SourceLink.js b/src/landingpage/SourceLink.js index a454a8a..4f94118 100644 --- a/src/landingpage/SourceLink.js +++ b/src/landingpage/SourceLink.js @@ -1,23 +1,17 @@ - -import React from 'react' - -const SourceLink = ({ href, className, linkName, onClick, role, icon }) => { - - return ( - - {icon && } - - {linkName} - - - ) +import React, {Component} from 'react' + +class SourceLink extends Component { + render() { + return ( + + + + ) + } } - -export default SourceLink + +export default SourceLink \ No newline at end of file diff --git a/src/layout/Footer.js b/src/layout/Footer.js index d7693b0..7e0ff05 100644 --- a/src/layout/Footer.js +++ b/src/layout/Footer.js @@ -6,8 +6,8 @@ class Footer extends Component { return (
              - on Pagure{" "} - version 0.1.0 + Source on Pagure{" "} + version 0.1.0
              ) diff --git a/src/wizard/Easyfix.js b/src/wizard/Easyfix.js index 7e392eb..c62c7a6 100644 --- a/src/wizard/Easyfix.js +++ b/src/wizard/Easyfix.js @@ -1,5 +1,4 @@ import React, { Component } from "react" -import SourceLink from "../landingpage/SourceLink" import { CollapsableCard } from "./components" export default class Easyfix extends Component { @@ -77,10 +76,12 @@ class EasyfixLinksList extends Component { render() { const items = this.props.data.map((action) => (
            • - + + {action.name} +
            • )) return
                {items}
              } -} +} \ No newline at end of file diff --git a/src/wizard/FedoraEasyKarma.js b/src/wizard/FedoraEasyKarma.js index 8452106..e231929 100644 --- a/src/wizard/FedoraEasyKarma.js +++ b/src/wizard/FedoraEasyKarma.js @@ -1,5 +1,4 @@ import React, { Component } from "react" -import SourceLink from "../landingpage/SourceLink" import { CollapsableBadge } from "./components" import {connect} from "react-redux" @@ -14,11 +13,10 @@ class FedoraEasyKarmaItemsList extends Component {

              {i18n.t('phrases.What_is_Karma')}

              {i18n.t('phrases.Before_a_new_version_of_a_package')}{" "} - - {i18n.t('phrases.the_updates_are')}{" "} - - - + {i18n.t('phrases.the_updates_are')}{" "} + + Bodhi + , {i18n.t('phrases.which_acts_as_a_gatekeeper')}{" "} {i18n.t('phrases.users_or_automated')}{" "} {i18n.t('phrases.an_update_can')} @@ -31,8 +29,12 @@ class FedoraEasyKarmaItemsList extends Component {
              • {i18n.t('words.Visit')}{" "} - - {" "} + + FAS Sign-up page + {" "} {i18n.t('phrases.and_create_it')}
              • {i18n.t('phrases.note_the_user')}
              • @@ -88,8 +90,12 @@ class FedoraEasyKarmaItemsList extends Component { -1 {i18n.t('phrases.to_mark_the')}{" "}
                {i18n.t('phrases.not_sure_you_can')}{" "} - - + + Update Feedback Guidelines +
                {i18n.t('phrases.still_not_sure')}{i18n.t('words.enter')}{i18n.t('phrases.to_skip_it')} diff --git a/src/wizard/FedoraManualTesting.js b/src/wizard/FedoraManualTesting.js index 3c8b85f..5254e5f 100644 --- a/src/wizard/FedoraManualTesting.js +++ b/src/wizard/FedoraManualTesting.js @@ -1,6 +1,5 @@ import React, { Component } from "react" import { Modal, ModalHeader, ModalBody, ModalFooter } from "reactstrap" -import SourceLink from "../landingpage/SourceLink" import { CollapsableCard, CollapsableBadge } from "./components" import { connect } from "react-redux" @@ -94,8 +93,12 @@ class FedoraManualTestingItemsListSub1 extends Component { environments like EC2 or Openstack, you can also perform them locally using Testcloud.
                Have a look at the{" "} - - {" "} + + Cloud provider setup + {" "} guides for more details.
              ) @@ -165,7 +168,9 @@ class FedoraManualTestingItem extends Component {
            • Identify the testcase and `environment` in our{" "} - + + Tescase matrix + {" "}
              • @@ -185,8 +190,9 @@ class FedoraManualTestingItem extends Component {
              • Read the{" "} - - {" "} + + Testcase + {" "} briefly, just to have a general idea of what you will be doing.{" "} The testcases are generally split into four sections: @@ -213,8 +219,12 @@ class FedoraManualTestingItem extends Component {
              • Based on the enviromnent, select and download and appropriate ISO{" "} - - + + here + .{" "}
                  @@ -247,8 +257,9 @@ class FedoraManualTestingItem extends Component {
                • Study the{" "} - - {" "} + + Testcase + {" "} thoroughly, to be sure you know what to do.{" "}
                    @@ -281,8 +292,12 @@ class FedoraManualTestingItem extends Component { IRC channel #fedora-qa at freenode.net{" "} If you are not that familiar with IRC, you can use the{" "} - - {" "} + + web-interface + {" "} just enter a Nickname of your choice, #fedora-qa (including the hash sign) in the Channels field, and click Connect. @@ -297,7 +312,9 @@ class FedoraManualTestingItem extends Component { Great! Either use relval report-results on command line (make sure to install the relval package first), or modify the{" "} - {" "} + + matrix + {" "} directly by clicking on the Edit link next to the Matrice's header, and put {{result|pass|YOUR_NAME_HERE|}} in the appropriate spot. @@ -338,8 +355,9 @@ class FedoraManualTestingItem extends Component { Once you get the Bug reported, make sure to also submit the result into the testing matrix. Either use relval report-results on command line (make sure to install the relval package first), or modify the{" "} - - {" "} + + matrix + {" "} directly by clicking on the Edit link next to the Matrice's header, and put {{result|fail|YOUR_NAME_HERE|BUG_NUMBER|}} in the appropriate spot. @@ -374,12 +392,9 @@ class ModalInfo extends Component { return (