feat: 初始化项目结构与核心功能

引入项目基础目录结构,包含多语言支持、主要页面与组件、核心游戏逻辑、UI 组件库、加密与本地持久化、自动化 Docker 构建流程、GitHub issue 模板(中英文)、README(中英文)、LICENSE 及开发配置文件。实现 OGame 单机版主要功能模块,为后续开发和扩展奠定基础。
This commit is contained in:
谦君
2025-12-11 14:49:25 +08:00
commit 705ee8c3db
178 changed files with 17258 additions and 0 deletions

533
src/locales/en.ts Normal file
View File

@@ -0,0 +1,533 @@
export default {
common: {
confirm: 'Confirm',
cancel: 'Cancel',
delete: 'Delete',
edit: 'Edit',
save: 'Save',
close: 'Close',
back: 'Back',
next: 'Next',
previous: 'Previous',
submit: 'Submit',
reset: 'Reset',
search: 'Search',
filter: 'Filter',
loading: 'Loading...',
noData: 'No Data',
error: 'Error',
success: 'Success',
warning: 'Warning',
info: 'Info',
resourceType: 'Resource Type',
playerName: 'Commander',
timeHour: 'h',
timeMinute: 'm',
timeSecond: 's',
featureLocked: 'Feature Locked',
unlockRequired: 'Building Required',
requiredBuilding: 'Required Building',
currentLevel: 'Current Level',
goToBuildings: 'Go to Buildings',
locked: 'Locked',
viewRequirements: 'View Requirements',
requirementsNotMet: 'Requirements Not Met',
current: 'Current'
},
errors: {
requirementsNotMet: 'Requirements not met',
insufficientResources: 'Insufficient resources',
shieldDomeLimit: 'Shield dome limit reached',
fleetMissionsFull: 'Fleet mission slots full',
insufficientFleet: 'Insufficient fleet',
insufficientFuel: 'Insufficient fuel',
planetOnly: 'This building can only be built on planets',
moonOnly: 'This building can only be built on moons',
buildQueueFull: 'Build queue full',
insufficientSpace: 'Insufficient space',
buildingLevelZero: 'Building level is 0, cannot demolish',
researchQueueFull: 'Research queue full',
moonExists: 'Moon already exists',
insufficientDebris: 'Insufficient debris field'
},
nav: {
overview: 'Overview',
buildings: 'Buildings',
research: 'Research',
shipyard: 'Shipyard',
defense: 'Defense',
fleet: 'Fleet',
officers: 'Officers',
simulator: 'Simulator',
galaxy: 'Galaxy',
messages: 'Messages',
settings: 'Settings'
},
sidebar: {
language: 'Language',
lightMode: 'Light Mode',
darkMode: 'Dark Mode',
collapse: 'Collapse',
expand: 'Expand'
},
resources: {
metal: 'Metal',
crystal: 'Crystal',
deuterium: 'Deuterium',
darkMatter: 'Dark Matter',
energy: 'Energy',
production: 'Production',
capacity: 'Capacity',
current: 'Current',
max: 'Max Capacity',
perHour: 'hour'
},
planet: {
planet: 'Planet',
moon: 'Moon',
colony: 'Colony',
position: 'Position',
coordinates: 'Coordinates',
switchToMoon: 'View Moon',
backToPlanet: 'Back to Planet',
fields: 'Fields',
temperature: 'Temperature',
homePlanet: 'Home Planet',
planetPrefix: 'Planet',
moonSuffix: "'s Moon",
colonyPrefix: 'Colony'
},
player: {
points: 'Total Points'
},
buildings: {
metalMine: 'Metal Mine',
crystalMine: 'Crystal Mine',
deuteriumSynthesizer: 'Deuterium Synthesizer',
solarPlant: 'Solar Plant',
roboticsFactory: 'Robotics Factory',
naniteFactory: 'Nanite Factory',
shipyard: 'Shipyard',
researchLab: 'Research Lab',
metalStorage: 'Metal Storage',
crystalStorage: 'Crystal Storage',
deuteriumTank: 'Deuterium Tank',
darkMatterCollector: 'Dark Matter Collector',
lunarBase: 'Lunar Base',
sensorPhalanx: 'Sensor Phalanx',
jumpGate: 'Jump Gate',
buildTime: 'Build Time',
production: 'Production',
consumption: 'Consumption',
totalCost: 'Total Cost',
totalPoints: 'Total Points',
levelRange: 'Level Range'
},
buildingDescriptions: {
metalMine: 'Extracts metal resources',
crystalMine: 'Extracts crystal resources',
deuteriumSynthesizer: 'Synthesizes deuterium resources',
solarPlant: 'Provides energy',
roboticsFactory: 'Accelerates construction speed',
naniteFactory: 'Increases build queue capacity, +1 per level (max 10)',
shipyard: 'Constructs ships',
researchLab: 'Researches technologies',
metalStorage: 'Increases metal storage capacity',
crystalStorage: 'Increases crystal storage capacity',
deuteriumTank: 'Increases deuterium storage capacity',
darkMatterCollector: 'Collects rare dark matter resources',
lunarBase: 'Increases available space on the moon',
sensorPhalanx: 'Detects fleet activities in surrounding systems',
jumpGate: 'Instantly transfers fleets to other moons'
},
ships: {
lightFighter: 'Light Fighter',
heavyFighter: 'Heavy Fighter',
cruiser: 'Cruiser',
battleship: 'Battleship',
smallCargo: 'Small Cargo',
largeCargo: 'Large Cargo',
colonyShip: 'Colony Ship',
recycler: 'Recycler',
espionageProbe: 'Espionage Probe',
darkMatterHarvester: 'Dark Matter Harvester'
},
shipDescriptions: {
lightFighter: 'Basic combat unit',
heavyFighter: 'Heavily armored fighter',
cruiser: 'Medium warship, balanced offense and defense',
battleship: 'Powerful warship',
smallCargo: 'Transports small amounts of resources',
largeCargo: 'Transports large amounts of resources',
colonyShip: 'Used to colonize new planets',
recycler: 'Collects debris field resources',
espionageProbe: 'Scouts enemy planets',
darkMatterHarvester: 'Special ship for harvesting dark matter'
},
defenses: {
rocketLauncher: 'Rocket Launcher',
lightLaser: 'Light Laser',
heavyLaser: 'Heavy Laser',
gaussCannon: 'Gauss Cannon',
ionCannon: 'Ion Cannon',
plasmaTurret: 'Plasma Turret',
smallShieldDome: 'Small Shield Dome',
largeShieldDome: 'Large Shield Dome'
},
defenseDescriptions: {
rocketLauncher: 'Basic defense facility',
lightLaser: 'Light energy weapon',
heavyLaser: 'Heavy energy weapon',
gaussCannon: 'High-speed kinetic weapon',
ionCannon: 'Effective against shields',
plasmaTurret: 'Powerful defense facility',
smallShieldDome: 'Small shield protecting the entire planet',
largeShieldDome: 'Large shield protecting the entire planet'
},
research: {
researchTime: 'Research Time',
totalCost: 'Total Cost',
totalPoints: 'Total Points',
levelRange: 'Level Range'
},
technologies: {
energyTechnology: 'Energy Technology',
laserTechnology: 'Laser Technology',
ionTechnology: 'Ion Technology',
hyperspaceTechnology: 'Hyperspace Technology',
plasmaTechnology: 'Plasma Technology',
computerTechnology: 'Computer Technology',
combustionDrive: 'Combustion Drive',
impulseDrive: 'Impulse Drive',
hyperspaceDrive: 'Hyperspace Drive',
darkMatterTechnology: 'Dark Matter Technology'
},
technologyDescriptions: {
energyTechnology: 'Improves energy efficiency',
laserTechnology: 'Foundation of laser weapons and defense',
ionTechnology: 'Ion weapon technology',
hyperspaceTechnology: 'Hyperspace jump technology',
plasmaTechnology: 'Plasma weapon technology',
computerTechnology: 'Increases research queue capacity, +1 per level (max 10)',
combustionDrive: 'Basic propulsion technology',
impulseDrive: 'Intermediate propulsion technology',
hyperspaceDrive: 'Advanced propulsion technology',
darkMatterTechnology: 'Research into dark matter properties and applications'
},
officers: {
commander: 'Commander',
admiral: 'Admiral',
engineer: 'Engineer',
geologist: 'Geologist',
technocrat: 'Technocrat',
darkMatterSpecialist: 'Dark Matter Specialist'
},
officerDescriptions: {
commander: 'Improves building speed and management',
admiral: 'Improves fleet combat and speed',
engineer: 'Improves energy and defense',
geologist: 'Improves resource production',
technocrat: 'Improves research speed and espionage',
darkMatterSpecialist: 'Improves dark matter collection efficiency'
},
queue: {
buildQueue: 'Build Queue',
researchQueue: 'Research Queue',
building: 'Building',
researching: 'Researching',
remaining: 'Remaining',
cancel: 'Cancel',
cancelBuild: 'Cancel Build',
cancelResearch: 'Cancel Research',
confirmCancel: 'Are you sure you want to cancel? 50% of resources will be refunded.',
level: 'Level',
upgradeToLevel: 'Upgrade to Level'
},
overview: {
title: 'Planet Overview',
resourceOverview: 'Resources',
fleetInfo: 'Fleet',
currentShips: 'Ships on this planet'
},
buildingsView: {
title: 'Buildings',
usedSpace: 'Used Space',
spaceUsage: 'Space Usage',
level: 'Level',
upgradeCost: 'Upgrade Cost',
buildTime: 'Build Time',
upgrade: 'Upgrade',
upgradeFailed: 'Upgrade Failed',
upgradeFailedMessage: 'Please check if you have enough resources, space, or if there are other build tasks.',
demolish: 'Demolish',
demolishRefund: 'Demolish Refund',
demolishFailed: 'Demolish Failed',
demolishFailedMessage: 'Unable to demolish this building. Please check if the build queue is full or the building level is 0.'
},
researchView: {
title: 'Research',
researchCost: 'Research Cost',
research: 'Research',
researchFailed: 'Research Failed',
researchFailedMessage: 'Please check if you have enough resources, prerequisites are met, or if there are other research tasks.'
},
shipyard: {
attack: 'Attack',
shield: 'Shield',
armor: 'Armor',
speed: 'Speed',
cargoCapacity: 'Cargo Capacity',
fuelConsumption: 'Fuel Consumption',
buildCost: 'Build Cost',
buildTime: 'Build Time',
perUnit: 'Per Unit',
batchCalculator: 'Batch Calculator',
quantity: 'Quantity',
totalCost: 'Total Cost',
totalTime: 'Total Time'
},
shipyardView: {
title: 'Shipyard',
attack: 'Attack',
shield: 'Shield',
speed: 'Speed',
cargoCapacity: 'Cargo Capacity',
unitCost: 'Unit Cost',
buildQuantity: 'Build Quantity',
totalCost: 'Total Cost',
build: 'Build',
inputError: 'Input Error',
inputErrorMessage: 'Please enter build quantity!',
buildFailed: 'Build Failed',
buildFailedMessage: 'Please check if you have enough resources or if prerequisites are met.'
},
defense: {
attack: 'Attack',
shield: 'Shield',
armor: 'Armor',
buildCost: 'Build Cost',
buildTime: 'Build Time',
perUnit: 'Per Unit',
batchCalculator: 'Batch Calculator',
quantity: 'Quantity',
totalCost: 'Total Cost',
totalTime: 'Total Time'
},
defenseView: {
title: 'Defense',
attack: 'Attack',
shield: 'Shield',
armor: 'Armor',
buildTime: 'Build Time',
seconds: 's',
unitCost: 'Unit Cost',
buildQuantity: 'Build Quantity',
totalCost: 'Total Cost',
build: 'Build',
shieldDomeBuilt: 'Shield dome already built',
inputError: 'Input Error',
inputErrorMessage: 'Please enter build quantity!',
buildFailed: 'Build Failed',
buildFailedMessage: 'Please check if you have enough resources or if prerequisites are met. Shield domes can only be built once.'
},
fleetView: {
title: 'Fleet Management',
fleetOverview: 'Fleet Overview',
sendFleet: 'Send Fleet',
flightMissions: 'Flight Missions',
currentPlanetFleet: 'Current Planet Fleet',
attack: 'Attack',
shield: 'Shield',
armor: 'Armor',
speed: 'Speed',
cargo: 'Cargo',
selectFleet: 'Select Fleet',
selectFleetDescription: 'Select the number of ships to send',
available: 'Available',
all: 'All',
targetCoordinates: 'Target Coordinates',
galaxy: 'Galaxy',
system: 'System',
position: 'Position',
missionType: 'Mission Type',
missionInfo: 'Mission Info',
fuelConsumption: 'Fuel Consumption',
flightTime: 'Flight Time',
attackMission: 'Attack',
transport: 'Transport',
colonize: 'Colonize',
spy: 'Spy',
deploy: 'Deploy',
transportResources: 'Transport Resources',
totalCargoCapacity: 'Total Cargo Capacity',
used: 'Used',
noFlightMissions: 'No flight missions',
outbound: 'Outbound',
returning: 'Returning',
fleetComposition: 'Fleet Composition',
carryingResources: 'Carrying Resources',
arrivalTime: 'Arrival Time',
returnTime: 'Return Time',
recallFleet: 'Recall Fleet',
sendFailed: 'Send Failed',
sendFailedMessage: 'Please check fleet count, fuel availability, or cargo capacity limits.',
recallFailed: 'Recall Failed',
recallFailedMessage: 'This mission cannot be recalled.',
unknownPlanet: 'Unknown Planet',
fleetMissionSlots: 'Fleet Mission Slots'
},
officersView: {
title: 'Officers',
activated: 'Activated',
inactive: 'Inactive',
activeStatus: 'Active Status',
expirationTime: 'Expiration Time',
remainingTime: 'Remaining Time',
recruitCost: 'Recruitment Cost',
days: 'days',
benefitsBonus: 'Benefits Bonus',
resourceProduction: 'Resource Production',
darkMatterProduction: 'Dark Matter Production',
energyProduction: 'Energy Production',
buildingSpeed: 'Building Speed',
researchSpeed: 'Research Speed',
fleetSpeed: 'Fleet Speed',
fuelConsumption: 'Fuel Consumption',
defense: 'Defense',
storageCapacity: 'Storage Capacity',
buildQueue: 'Build Queue',
fleetSlots: 'Fleet Slots',
hire: 'Hire',
renew: 'Renew',
dismiss: 'Dismiss',
hireTitle: 'Hire Officer',
hireMessage: 'Are you sure you want to hire {name}? Valid for 7 days.',
renewTitle: 'Renew Officer',
renewMessage: 'Are you sure you want to renew {name} for 7 days?',
dismissTitle: 'Dismiss Officer',
dismissMessage: 'Are you sure you want to dismiss {name}? No refunds will be given.',
hireFailed: 'Hire Failed',
renewFailed: 'Renew Failed',
insufficientResources: 'Insufficient resources!'
},
galaxyView: {
title: 'Galaxy',
selectCoordinates: 'Select Coordinates',
galaxy: 'Galaxy',
selectGalaxy: 'Select Galaxy',
system: 'System',
selectSystem: 'Select System',
view: 'View',
myPlanet: 'My Planet',
totalPositions: '10 planet positions total',
mine: 'Mine',
hostile: 'Hostile',
emptySlot: 'Empty - Colonizable',
scout: 'Scout',
attack: 'Attack',
colonize: 'Colonize',
switch: 'Switch',
scoutPlanetTitle: 'Scout Planet',
attackPlanetTitle: 'Attack Planet',
colonizePlanetTitle: 'Colonize Planet',
scoutPlanetMessage:
'Are you sure you want to send espionage probes to scout planet [{coordinates}]?\n\nPlease go to the fleet page to select ships and send.',
attackPlanetMessage: 'Are you sure you want to attack planet [{coordinates}]?\n\nPlease go to the fleet page to select ships and send.',
colonizePlanetMessage:
'Are you sure you want to colonize position [{coordinates}]?\n\nPlease go to the fleet page to send a colony ship.'
},
messagesView: {
title: 'Messages',
battleReports: 'Battle Reports',
spyReports: 'Spy Reports',
noBattleReports: 'No battle reports',
noSpyReports: 'No spy reports',
battleReport: 'Battle Report',
spyReport: 'Spy Report',
victory: 'Victory',
defeat: 'Defeat',
draw: 'Draw',
attackerFleet: 'Attacker Fleet',
defenderFleet: 'Defender Fleet',
defenderDefense: 'Defender Defense',
attackerLosses: 'Attacker Losses',
defenderLosses: 'Defender Losses',
noLosses: 'No losses',
plunder: 'Plunder',
debrisField: 'Debris Field',
resources: 'Resources',
fleet: 'Fleet',
defense: 'Defense',
buildings: 'Buildings'
},
simulatorView: {
title: 'Battle Simulator',
attacker: 'Attacker',
defender: 'Defender',
attackerConfig: 'Attacker Configuration',
attackerConfigDesc: 'Configure attacker fleet and technology levels',
defenderConfig: 'Defender Configuration',
defenderConfigDesc: 'Configure defender fleet, defense, and technology levels',
fleet: 'Fleet',
defenseStructures: 'Defense Structures',
techLevels: 'Technology Levels',
weapon: 'Weapon',
shield: 'Shield',
armor: 'Armor',
defenderResources: 'Defender Resources (for plunder calculation)',
startSimulation: 'Start Simulation',
reset: 'Reset',
battleResult: 'Battle Result',
attackerVictory: 'Attacker Victory',
defenderVictory: 'Defender Victory',
draw: 'Draw',
afterRounds: 'After {rounds} rounds',
attackerLosses: 'Attacker Losses',
defenderLosses: 'Defender Losses',
noLosses: 'No losses',
attackerRemaining: 'Attacker Remaining',
defenderRemaining: 'Defender Remaining',
allDestroyed: 'All destroyed',
plunderableResources: 'Plunderable Resources',
debrisField: 'Debris Field',
moonChance: 'Moon chance',
showRoundDetails: 'Show round details',
hideRoundDetails: 'Hide round details',
round: 'Round {round}',
attackerRemainingPower: 'Attacker remaining power',
defenderRemainingPower: 'Defender remaining power'
},
settings: {
dataManagement: 'Data Management',
dataManagementDesc: 'Export, import, or clear game data',
exportData: 'Export Data',
exportDataDesc: 'Export game progress as JSON file',
export: 'Export',
exporting: 'Exporting...',
exportSuccess: 'Export successful',
exportFailed: 'Export failed, please try again',
importData: 'Import Data',
importDataDesc: 'Restore game progress from JSON file',
selectFile: 'Select File',
importSuccess: 'Import successful',
importConfirmTitle: 'Confirm Import',
importConfirmMessage: 'Importing will overwrite current game progress. This action cannot be undone. Continue?',
importFailed: 'Import failed, please check file format',
clearData: 'Clear Data',
clearDataDesc: 'Delete all game data and reset',
clear: 'Clear',
clearConfirmTitle: 'Confirm Clear Data',
clearConfirmMessage: 'This will delete all game data and start over. This action cannot be undone. Continue?',
gameSettings: 'Game Settings',
gameSettingsDesc: 'Adjust game parameters and preferences',
playerName: 'Player Name',
gameSpeed: 'Game Speed',
gameSpeedDesc: 'Current game speed multiplier',
about: 'About',
version: 'Version',
buildDate: 'Build Date',
community: 'Community',
github: 'GitHub Repository',
qqGroup: 'QQ Group'
}
}