Skip to content

Commit

Permalink
Add i18n support and translation for zh-CN (#394)
Browse files Browse the repository at this point in the history
Relative issue: #223

---------

Co-authored-by: Erik Vroon <[email protected]>
Co-authored-by: Erik Vroon <[email protected]>
  • Loading branch information
3 people authored Dec 28, 2023
1 parent 271b289 commit 78b6eab
Show file tree
Hide file tree
Showing 55 changed files with 1,374 additions and 610 deletions.
7 changes: 7 additions & 0 deletions frontend/next-i18next.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/** @type {import('next-i18next').UserConfig} */
module.exports = {
i18n: {
locales: ['en', 'zh-CN'],
defaultLocale: 'en',
},
};
2 changes: 2 additions & 0 deletions frontend/next.config.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
const { i18n } = require('./next-i18next.config.js');
const withBundleAnalyzer = require('@next/bundle-analyzer')({
enabled: process.env.ANALYZE === 'true',
});
Expand All @@ -7,4 +8,5 @@ module.exports = withBundleAnalyzer({
eslint: {
ignoreDuringBuilds: true,
},
i18n,
});
3 changes: 3 additions & 0 deletions frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,13 @@
"cookies-next": "^4.1.0",
"date-fns": "^3.0.1",
"dayjs": "^1.11.10",
"i18next": "^23.7.11",
"next": "^14.0.3",
"next-i18next": "^15.1.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-ellipsis-text": "^1.2.1",
"react-i18next": "^13.5.0",
"react-icons": "^4.12.0",
"react-qr-code": "^2.0.12",
"react-redux": "^9.0.2",
Expand Down
218 changes: 218 additions & 0 deletions frontend/public/locales/en/common.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,218 @@
{
"not_found_title": "You have found a secret place.",
"not_found_description": "Unfortunately, this is only a 404 page. You may have mistyped the address, or the page has been moved to another URL.",
"back_home_nav": "Take me back to home page",
"clubs_title": "Clubs",
"empty_name_validation": "Name cannot be empty",
"empty_email_validation": "Invalid email",
"empty_password_validation": "Password cannot be empty",
"too_short_name_validation": "Name is too short",
"too_short_dashboard_link_validation": "Dashboard link is short",
"too_short_password_validation": "Password is too short",
"invalid_email_validation": "Invalid email",
"invalid_password_validation": "Invalid password",
"create_account_title": "Create a new account",
"create_account_alert_title": "Unavailable",
"create_account_alert_description": "Account creation is disabled on this domain for now since bracket is still in beta phase",
"create_account_button": "Create Account",
"email_input_label": "Email Address",
"email_input_placeholder": "Your email",
"name_input_label": "Name",
"name_input_placeholder": "Your name",
"password_input_label": "Password",
"password_input_placeholder": "Your password",
"back_to_login_nav": "Back to login page",
"tournaments_title": "Tournaments",
"tournament_title": "Tournament",
"login_success_title": "Login successful",
"welcome_title": "Welcome to",
"sign_in_title": "Sign in",
"forgot_password_button": "Forgot password?",
"edit_profile_title": "Edit Profile",
"match_filter_option_all": "All matches",
"match_filter_option_past": "Hide past matches",
"match_filter_option_current": "Current matches",
"name_filter_options_team": "Team names",
"name_filter_options_player": "Player names",
"view_dashboard_button": "View Dashboard",
"add_court_title": "Add Court",
"create_court_button": "Create Court",
"court_name_input_placeholder": "Best Court Ever",
"player_title": "Players",
"no_matches_description": "No matches yet",
"drop_match_alert_title": "Drop a match here",
"schedule_title": "Schedule",
"schedule_description": "Schedule all unscheduled matches",
"club_choose_title": "Please choose a club",
"start_time_choose_title": "Please choose a start time",
"duration_minutes_choose_title": "Please choose a duration of the matches",
"margin_minutes_choose_title": "Please choose a margin between matches",
"tournament_name_input_placeholder": "Best Tournament Ever",
"club_select_placeholder": "Pick a club for this tournament",
"planning_of_matches_legend": "Planning of matches",
"planning_of_matches_description": "Start of the tournament",
"match_duration_label": "Match duration (minutes)",
"time_between_matches_label": "Time between matches (minutes)",
"dashboard_settings_title": "Dashboard Settings",
"dashboard_link_label": "Dashboard link",
"dashboard_link_placeholder": "best_tournament",
"dashboard_public_description": "Allow anyone to see the dashboard of rounds and matches",
"miscellaneous_title": "Miscellaneous",
"miscellaneous_label": "Allow players to be in multiple teams",
"auto_assign_courts_label": "Automatically assign courts to matches",
"save_button": "Save",
"copy_dashboard_url_button": "Copy dashboard URL",
"copied_dashboard_url_button": "Copied dashboard URL",
"filter_stage_item_label": "Filter on stage item",
"filter_stage_item_placeholder": "No filter",
"team_title": "Team",
"current_matches_badge": "Current matches",
"next_matches_badge": "Next matches",
"no_round_title": "No round",
"no_round_description": "There are no rounds in this stage item yet",
"add_round_button": "Add Round",
"no_round_found_title": "No rounds found",
"no_round_found_description": "Please wait for the organiser to add them.",
"no_round_found_in_stage_description": "There are no rounds in this stage yet",
"tournament_not_started_title": "Tournament has not started yet",
"tournament_not_started_description": "Please wait for the tournament to start.",
"edit_name_button": "Edit name",
"delete_button": "Delete",
"active_badge_label": "Active",
"auto_create_matches_button": "Add new matches automatically",
"add_stage_button": "Add stage",
"next_stage_button": "Go to next stage",
"previous_stage_button": "Go to previous stage",
"multiple_teams_input_label": "Add multiple teams. Put every team on a separate line",
"multiple_teams_input_placeholder": "Team 1",
"multiple_players_input_label": "Add multiple players. Put every player on a separate line",
"multiple_players_input_placeholder": "Player 1",
"edit_details_tab_title": "Edit details",
"edit_password_tab_title": "Edit password",
"no_team_members_description": "No members",
"active_next_round_modal_title": "Assign times and courts to matches of next round",
"active_next_round_modal_description": "This will assign times and courts to matches of next round, which is the round after the current activated (green) round.",
"active_next_round_modal_choose_description": "You can choose to either (check the checkbox or not):",
"checkbox_status_checked": "Checked",
"checkbox_status_unchecked": "Unchecked",
"active_next_round_modal_choose_option_unchecked": "Use default timing (the next matches will be planned tightly after the matches of the active round end, taking margin into account)",
"active_next_round_modal_choose_option_checked": "Adjust the start times of the next matches to start immediately(now). This will be done by modifying the margin times of the matches in the previous round.",
"adjust_start_times_checkbox_label": "Adjust start time of matches in this round to the current time",
"plan_next_round_button": "Plan next round",
"edit_club_button": "Edit club",
"create_club_button": "Create club",
"club_name_input_placeholder": "Best Club Ever",
"team_count_select_elimination_label": "Number of teams advancing from the previous stage",
"team_count_select_elimination_placeholder": "2, 4, 8 etc.",
"team_count_input_round_robin_label": "Number of teams advancing from the previous stage",
"none": "None",
"at_least_two_team_validation": "Need at least two teams",
"stage_type_select_label": "Stage type",
"round_robin_label": "Round Robin",
"single_elimination_label": "Single Elimination",
"swiss_label": "Swiss",
"create_stage_item_button": "Create Stage Item",
"add_stage_item_modal_title": "Add stage item",
"remove_match_button": "Remove Match",
"negative_score_validation": "Score cannot be negative",
"negative_match_duration_validation": "Match duration cannot be negative",
"negative_match_margin_validation": "Match margin cannot be negative",
"edit_match_modal_title": "Edit Match",
"score_of_label": "Score of",
"custom_match_duration_label": "Custom match duration",
"customize_checkbox_label": "Customize",
"custom_match_margin_label": "Custom match margin",
"minutes": "minutes",
"at_least_one_player_validation": "Enter at least one player",
"active_players_checkbox_label": "These players are active",
"active_player_checkbox_label": "This player is active",
"player_name_input_placeholder": "Best Player Ever",
"save_players_button": "Save players",
"single_player_title": "Single Player",
"multiple_players_title": "Multiple Players",
"create_player_modal_title": "Create Player",
"add_player_button": "Add Player",
"edit_player": "Edit Player",
"delete_round_button": "Delete Round",
"edit_round": "Edit Round",
"round_name_input_placeholder": "Best Round Ever",
"active_round_checkbox_label": "This round is active",
"draft_round_checkbox_label": "This round is a draft round",
"home_title": "Home",
"home_spotlight_description": "Get to home page",
"clubs_spotlight_description": "View, add or delete clubs",
"user_settings_title": "User Settings",
"user_settings_spotlight_description": "Change name, email, password etc.",
"planning_title": "planning",
"planning_spotlight_description": "Change planning of matches",
"teams_title": "Teams",
"teams_spotlight_description": "View, add or delete teams",
"players_title": "Players",
"players_spotlight_description": "View, add or delete players",
"stage_title": "Stage",
"stage_spotlight_description": "Change the layout of the tournament",
"court_title": "Courts",
"court_spotlight_description": "View, add or delete courts",
"tournament_setting_title": "Tournament Settings",
"tournament_setting_spotlight_description": "Change the settings of the tournament",
"nothing_found_placeholder": "Nothing found ...",
"search_placeholder": "Search ...",
"at_least_one_team_validation": "Enter at least one team",
"active_teams_checkbox_label": "These teams are active",
"team_name_input_placeholder": "Best Team Ever",
"active_team_checkbox_label": "This team is active",
"team_member_select_placeholder": "Pick all that you like",
"team_member_select_title": "Team members",
"single_team": "Single Team",
"multiple_teams": "Multiple Teams",
"add_team_button": "Add Team",
"edit_team_title": "Edit Team",
"club_select_label": "Club",
"now_button": "NOW",
"logout_title": "Logout",
"user_title": "User",
"more_title": "More",
"website_title": "Website",
"github_title": "Github",
"api_docs_title": "API docs",
"elo_input_label": "Max ELO difference",
"only_recommended_input_group_label": "Only show teams that played less matches",
"only_recommended_radio_label": "Only recommended",
"all_matches_radio_label": "All matches",
"max_results_input_label": "Max results",
"iterations_input_label": "Iterations",
"delete_club_button": "Delete Club",
"title": "Title",
"name_field_text": "name",
"delete_court_button": "Delete Court",
"win_distribution_text_win": "wins",
"win_distribution_text_draws": "draws",
"win_distribution_text_losses": "losses",
"delete_player_button": "Delete Player",
"status": "Status",
"created": "Created",
"elo_score": "ELO score",
"swiss_score": "Swiss score",
"name_table_header": "Name",
"member_table_header": "Members",
"active": "Active",
"inactive": "Inactive",
"delete_team_button": "Delete Team",
"delete_tournament_button": "Delete Tournament",
"edit_tournament_button": "Edit Tournament",
"recommended_badge_title": "Recommended",
"upcoming_matches_empty_table_info": "upcoming matches",
"elo_difference": "ELO Difference",
"swiss_difference": "Swiss Difference",
"could_not_find_any_alert": "Could not find any",
"dropzone_accept_text": "Drop files here",
"dropzone_reject_text": "Image must be less than 10MB",
"dropzone_idle_text": "Upload logo",
"upload_placeholder": "Drop a file here to upload as tournament logo.",
"number_required": "Includes number",
"lowercase_required": "Includes lowercase letter",
"uppercase_required": "Includes uppercase letter",
"special_character_required": "Includes special character",
"8_characters_required": "Has at least 8 characters",
"create_tournament_button": "Create Tournament"
}
Loading

1 comment on commit 78b6eab

@vercel
Copy link

@vercel vercel bot commented on 78b6eab Dec 28, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.