Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .github/workflows/pr_test_frontend.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,17 @@ jobs:
working-directory: ./frontend
run: yarn install

# Fails on a duplicate message id (build-locales exits non-zero) and on a
# stale catalog (regenerating changes the committed file). See #7284.
- name: Check translation source file is up to date
working-directory: ./frontend
run: |
yarn build-locales
# combine-messages writes no trailing newline; pre-commit's end-of-file-fixer
# adds one to the committed file. Match it so the diff is content-only.
[ -z "$(tail -c1 src/locales/en.json)" ] || printf '\n' >> src/locales/en.json
git diff --exit-code -- src/locales/en.json

- name: Run Yarn test
working-directory: ./frontend
run: yarn test
Expand Down
7 changes: 4 additions & 3 deletions docs/developers/translations.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,10 @@ If you run into certificate-related errors, update the paths in the script or tr
- `yarn build-locales` - Execute that command in the `frontend`
folder to get the new translatable strings from all the
`messages.js` files in the frontend code. The changes in the strings
will be pushed to `frontend/src/locales/en.json` file. The ideal is
to execute that command before every pull request that change
something in the translatable strings.
will be pushed to `frontend/src/locales/en.json` file. Run it before
opening any pull request that changes translatable strings: CI
regenerates the file and fails the build if the committed copy is
stale, or if two `messages.js` files declare the same message id.
- After the pull request is merged to the `develop` branch, the
command `tx push -s` needs to be executed in order to push the
changes to Transifex. The translators receive a notification every
Expand Down
28 changes: 19 additions & 9 deletions frontend/src/components/badges/messages.js
Original file line number Diff line number Diff line change
@@ -1,30 +1,40 @@
import { defineMessages } from 'react-intl';

export default defineMessages({
add: { id: 'management.fields.managers.add', defaultMessage: 'Add' },
import managementMessages from '../teamsAndOrgs/messages';

const ownMessages = defineMessages({
badgeInfo: { id: 'management.titles.badge_information', defaultMessage: 'Badge information' },
badges: { id: 'management.badges', defaultMessage: 'Badges' },
building: { id: 'management.badges.building', defaultMessage: 'buildings added' },
cancel: { id: 'management.button.cancel', defaultMessage: 'Cancel' },
changeset: { id: 'management.badges.changeset', defaultMessage: 'Number of changesets' },
changesets: { id: 'management.badges.changesets', defaultMessage: 'Changesets' },
description: { id: 'management.fields.description', defaultMessage: 'Description' },
hidden: { id: 'management.badges.hidden', defaultMessage: 'Hide this badge from users' },
highway: { id: 'management.badges.highway', defaultMessage: 'km of highways added' },
road: { id: 'management.badges.road', defaultMessage: 'km of roads added' },
image: { id: 'management.fields.organisation.image', defaultMessage: 'Image' },
imageError: { id: 'management.badges.imageError', defaultMessage: 'Error uploading image' },
manage: { id: 'management.link.manage', defaultMessage: 'Manage {entity}' },
metric: { id: 'management.badges.metric', defaultMessage: 'Metric' },
name: { id: 'management.fields.name', defaultMessage: 'Name' },
needsRequirements: { id: 'management.badges.needsRequirements', defaultMessage: 'Needs at least one requirement' },
noBadges: { id: 'management.no_badges', defaultMessage: 'There are no badges yet.' },
poi: { id: 'management.badges.poi', defaultMessage: 'Points of Interest' },
remove: { id: 'management.remove', defaultMessage: 'Remove' },
requirements: { id: 'management.badges.requirements', defaultMessage: 'Requirements' },
save: { id: 'management.button.save', defaultMessage: 'Save' },
uploadNew: { id: 'management.badges.uploadNew', defaultMessage: 'Upload new' },
uploading: { id: 'management.badges.uploading', defaultMessage: 'Uploading...' },
value: { id: 'management.badges.value', defaultMessage: 'Value' },
waterway: { id: 'management.badges.waterway', defaultMessage: 'km of waterways added' },
});

// These ids are declared once, in teamsAndOrgs/messages.js. Re-export rather than
// re-declare them: duplicate ids make `yarn build-locales` fail outright.
const messages = {
...ownMessages,
add: managementMessages.add,
badges: managementMessages.badges,
cancel: managementMessages.cancel,
description: managementMessages.description,
image: managementMessages.image,
manage: managementMessages.manage,
name: managementMessages.name,
save: managementMessages.save,
};

export default messages;
4 changes: 0 additions & 4 deletions frontend/src/components/header/messages.js
Original file line number Diff line number Diff line change
Expand Up @@ -179,8 +179,4 @@ export default defineMessages({
id: 'serviceWorker.dialog.remindMeLater',
defaultMessage: 'Remind me later',
},
sandbox: {
id: 'project.detail.sandbox',
defaultMessage: 'Sandbox Mode',
},
});
22 changes: 16 additions & 6 deletions frontend/src/components/levels/messages.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,27 @@
import { defineMessages } from 'react-intl';

export default defineMessages({
import managementMessages from '../teamsAndOrgs/messages';

const ownMessages = defineMessages({
add: { id: 'management.levels.add', defaultMessage: 'Add' },
approvals_required: { id: 'management.levels.approvals_required', defaultMessage: 'Approvals required' },
cancel: { id: 'management.button.cancel', defaultMessage: 'Cancel' },
color: { id: 'management.levels.color', defaultMessage: 'Color' },
levelInfoTitle: { id: 'management.titles.level_information', defaultMessage: 'Level information' },
levels: { id: 'management.levels', defaultMessage: 'Levels' },
manage: { id: 'management.link.manage', defaultMessage: 'Manage {entity}' },
name: { id: 'management.fields.name', defaultMessage: 'Name' },
noLevels: { id: 'management.no_levels', defaultMessage: 'There are no levels yet.' },
peer_review: { id: 'management.levels.peer_review', defaultMessage: 'Require peer review' },
required_badges: { id: 'management.levels.required_badges', defaultMessage: 'Required badges' },
save: { id: 'management.button.save', defaultMessage: 'Save' },
needsBadges: { id: 'management.levels.needsBadges', defaultMessage: 'Needs at least one badge' },
});

// These ids are declared once, in teamsAndOrgs/messages.js. Re-export rather than
// re-declare them: duplicate ids make `yarn build-locales` fail outright.
const messages = {
...ownMessages,
cancel: managementMessages.cancel,
levels: managementMessages.levels,
manage: managementMessages.manage,
name: managementMessages.name,
save: managementMessages.save,
};

export default messages;
6 changes: 3 additions & 3 deletions frontend/src/components/projectEdit/messages.js
Original file line number Diff line number Diff line change
Expand Up @@ -752,15 +752,15 @@ export default defineMessages({
defaultMessage: 'Something went wrong!',
},
databse: {
id: 'management.projects.create.review.database',
id: 'management.projects.edit.database',
defaultMessage: 'Database',
},
databaseOSM: {
id: 'management.projects.create.review.database.osm',
id: 'management.projects.edit.database.osm',
defaultMessage: 'OSM',
},
databaseSandbox: {
id: 'management.projects.create.review.database.sandbox',
id: 'management.projects.edit.database.sandbox',
defaultMessage: 'Sandbox',
},
disabledSandboxPriority: {
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/components/taskSelection/messages.js
Original file line number Diff line number Diff line change
Expand Up @@ -859,7 +859,7 @@ export default defineMessages({
'You need to be member of one of the mapping teams to be able to map this project.',
},
infoBox: {
id: 'project.detail.sandbox',
id: 'project.detail.sandbox.info',
defaultMessage: 'Sandbox(Practice)',
},
infoBoxTooltip: {
Expand Down
Loading
Loading