();
29 |
30 | static final ResourceBundle strings = MainWindow.strings;
31 |
32 | public NewCityDialog(MainWindow owner, boolean showCancelOption)
33 | {
34 | super(owner);
35 | setTitle(strings.getString("welcome.caption"));
36 | setModal(true);
37 |
38 | assert owner != null;
39 |
40 | JPanel p1 = new JPanel(new BorderLayout());
41 | p1.setBorder(BorderFactory.createEmptyBorder(10,20,10,20));
42 | getContentPane().add(p1, BorderLayout.CENTER);
43 |
44 | engine = new Micropolis();
45 | new MapGenerator(engine).generateNewCity();
46 |
47 | mapPane = new OverlayMapView(engine);
48 | mapPane.setBorder(BorderFactory.createLoweredBevelBorder());
49 | p1.add(mapPane, BorderLayout.WEST);
50 |
51 | JPanel p2 = new JPanel(new BorderLayout());
52 | p1.add(p2, BorderLayout.CENTER);
53 |
54 | Box levelBox = new Box(BoxLayout.Y_AXIS);
55 | levelBox.setBorder(BorderFactory.createEmptyBorder(0,10,0,10));
56 | p2.add(levelBox, BorderLayout.CENTER);
57 |
58 | levelBox.add(Box.createVerticalGlue());
59 | JRadioButton radioBtn;
60 | for (int lev = GameLevel.MIN_LEVEL; lev <= GameLevel.MAX_LEVEL; lev++)
61 | {
62 | final int x = lev;
63 | radioBtn = new JRadioButton(strings.getString("menu.difficulty."+lev));
64 | radioBtn.addActionListener(new ActionListener() {
65 | public void actionPerformed(ActionEvent evt) {
66 | setGameLevel(x);
67 | }});
68 | levelBox.add(radioBtn);
69 | levelBtns.put(lev, radioBtn);
70 | }
71 | levelBox.add(Box.createVerticalGlue());
72 | setGameLevel(GameLevel.MIN_LEVEL);
73 |
74 | JPanel buttonPane = new JPanel();
75 | getContentPane().add(buttonPane, BorderLayout.SOUTH);
76 |
77 | JButton btn;
78 | btn = new JButton(strings.getString("welcome.previous_map"));
79 | btn.addActionListener(new ActionListener() {
80 | public void actionPerformed(ActionEvent evt) {
81 | onPreviousMapClicked();
82 | }});
83 | btn.setEnabled(false);
84 | buttonPane.add(btn);
85 | previousMapBtn = btn;
86 |
87 | btn = new JButton(strings.getString("welcome.play_this_map"));
88 | btn.addActionListener(new ActionListener() {
89 | public void actionPerformed(ActionEvent evt) {
90 | onPlayClicked();
91 | }});
92 | buttonPane.add(btn);
93 | getRootPane().setDefaultButton(btn);
94 |
95 | btn = new JButton(strings.getString("welcome.next_map"));
96 | btn.addActionListener(new ActionListener() {
97 | public void actionPerformed(ActionEvent evt) {
98 | onNextMapClicked();
99 | }});
100 | buttonPane.add(btn);
101 |
102 | btn = new JButton(strings.getString("welcome.load_city"));
103 | btn.addActionListener(new ActionListener() {
104 | public void actionPerformed(ActionEvent evt) {
105 | onLoadCityClicked();
106 | }});
107 | buttonPane.add(btn);
108 |
109 | if (showCancelOption) {
110 | btn = new JButton(strings.getString("welcome.cancel"));
111 | btn.addActionListener(new ActionListener() {
112 | public void actionPerformed(ActionEvent evt) {
113 | onCancelClicked();
114 | }});
115 | buttonPane.add(btn);
116 | }
117 | else {
118 | btn = new JButton(strings.getString("welcome.quit"));
119 | btn.addActionListener(new ActionListener() {
120 | public void actionPerformed(ActionEvent evt) {
121 | onQuitClicked();
122 | }});
123 | buttonPane.add(btn);
124 | }
125 |
126 | pack();
127 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
128 | setLocationRelativeTo(owner);
129 | getRootPane().registerKeyboardAction(new ActionListener() {
130 | public void actionPerformed(ActionEvent evt) {
131 | dispose();
132 | }},
133 | KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),
134 | JComponent.WHEN_IN_FOCUSED_WINDOW);
135 | }
136 |
137 | private void onPreviousMapClicked()
138 | {
139 | if (previousMaps.isEmpty())
140 | return;
141 |
142 | nextMaps.push(engine);
143 | engine = previousMaps.pop();
144 | mapPane.setEngine(engine);
145 |
146 | previousMapBtn.setEnabled(!previousMaps.isEmpty());
147 | }
148 |
149 | private void onNextMapClicked()
150 | {
151 | if (nextMaps.isEmpty())
152 | {
153 | Micropolis m = new Micropolis();
154 | new MapGenerator(m).generateNewCity();
155 | nextMaps.add(m);
156 | }
157 |
158 | previousMaps.push(engine);
159 | engine = nextMaps.pop();
160 | mapPane.setEngine(engine);
161 |
162 | previousMapBtn.setEnabled(true);
163 | }
164 |
165 | private void onLoadCityClicked()
166 | {
167 | try
168 | {
169 | JFileChooser fc = new JFileChooser();
170 | FileNameExtensionFilter filter1 = new FileNameExtensionFilter(strings.getString("cty_file"), EXTENSION);
171 | fc.setFileFilter(filter1);
172 |
173 | int rv = fc.showOpenDialog(this);
174 | if (rv == JFileChooser.APPROVE_OPTION) {
175 | File file = fc.getSelectedFile();
176 | Micropolis newEngine = new Micropolis();
177 | newEngine.load(file);
178 | startPlaying(newEngine, file);
179 | }
180 | }
181 | catch (Exception e)
182 | {
183 | e.printStackTrace(System.err);
184 | JOptionPane.showMessageDialog(this, e, strings.getString("main.error_caption"),
185 | JOptionPane.ERROR_MESSAGE);
186 | }
187 | }
188 |
189 | void startPlaying(Micropolis newEngine, File file)
190 | {
191 | MainWindow win = (MainWindow) getOwner();
192 | win.setEngine(newEngine);
193 | win.currentFile = file;
194 | win.makeClean();
195 | dispose();
196 | }
197 |
198 | private void onPlayClicked()
199 | {
200 | engine.setGameLevel(getSelectedGameLevel());
201 | engine.setFunds(GameLevel.getStartingFunds(engine.gameLevel));
202 | startPlaying(engine, null);
203 | }
204 |
205 | private void onCancelClicked()
206 | {
207 | dispose();
208 | }
209 |
210 | private void onQuitClicked()
211 | {
212 | System.exit(0);
213 | }
214 |
215 | private int getSelectedGameLevel()
216 | {
217 | for (int lev : levelBtns.keySet())
218 | {
219 | if (levelBtns.get(lev).isSelected()) {
220 | return lev;
221 | }
222 | }
223 | return GameLevel.MIN_LEVEL;
224 | }
225 |
226 | private void setGameLevel(int level)
227 | {
228 | for (int lev : levelBtns.keySet())
229 | {
230 | levelBtns.get(lev).setSelected(lev == level);
231 | }
232 | }
233 | }
234 |
--------------------------------------------------------------------------------
/src/micropolisj/gui/NotificationPane.java:
--------------------------------------------------------------------------------
1 | // This file is part of MicropolisJ.
2 | // Copyright (C) 2013 Jason Long
3 | // Portions Copyright (C) 1989-2007 Electronic Arts Inc.
4 | //
5 | // MicropolisJ is free software; you can redistribute it and/or modify
6 | // it under the terms of the GNU GPLv3, with additional terms.
7 | // See the README file, included in this distribution, for details.
8 |
9 | package micropolisj.gui;
10 |
11 | import java.awt.*;
12 | import java.awt.event.*;
13 | import java.util.*;
14 | import javax.swing.*;
15 |
16 | import micropolisj.engine.*;
17 | import static micropolisj.gui.ColorParser.parseColor;
18 |
19 | public class NotificationPane extends JPanel
20 | {
21 | JLabel headerLbl;
22 | JViewport mapViewport;
23 | MicropolisDrawingArea mapView;
24 | JPanel mainPane;
25 | JComponent infoPane;
26 |
27 | static final Dimension VIEWPORT_SIZE = new Dimension(160,160);
28 | static final Color QUERY_COLOR = new Color(255,165,0);
29 | static final ResourceBundle strings = MainWindow.strings;
30 | static final ResourceBundle mstrings = ResourceBundle.getBundle("micropolisj.CityMessages");
31 | static final ResourceBundle s_strings = ResourceBundle.getBundle("micropolisj.StatusMessages");
32 |
33 | public NotificationPane(Micropolis engine)
34 | {
35 | super(new BorderLayout());
36 | setVisible(false);
37 |
38 | headerLbl = new JLabel();
39 | headerLbl.setOpaque(true);
40 | headerLbl.setHorizontalAlignment(SwingConstants.CENTER);
41 | headerLbl.setBorder(BorderFactory.createRaisedBevelBorder());
42 | add(headerLbl, BorderLayout.NORTH);
43 |
44 | JButton dismissBtn = new JButton(strings.getString("notification.dismiss"));
45 | dismissBtn.addActionListener(new ActionListener() {
46 | public void actionPerformed(ActionEvent evt) {
47 | onDismissClicked();
48 | }});
49 | add(dismissBtn, BorderLayout.SOUTH);
50 |
51 | mainPane = new JPanel(new BorderLayout());
52 | add(mainPane, BorderLayout.CENTER);
53 |
54 | JPanel viewportContainer = new JPanel(new BorderLayout());
55 | viewportContainer.setBorder(
56 | BorderFactory.createCompoundBorder(
57 | BorderFactory.createEmptyBorder(8,4,8,4),
58 | BorderFactory.createLineBorder(Color.BLACK)
59 | ));
60 | mainPane.add(viewportContainer, BorderLayout.WEST);
61 |
62 | mapViewport = new JViewport();
63 | mapViewport.setPreferredSize(VIEWPORT_SIZE);
64 | mapViewport.setMaximumSize(VIEWPORT_SIZE);
65 | mapViewport.setMinimumSize(VIEWPORT_SIZE);
66 | viewportContainer.add(mapViewport, BorderLayout.CENTER);
67 |
68 | mapView = new MicropolisDrawingArea(engine);
69 | mapViewport.setView(mapView);
70 | }
71 |
72 | private void onDismissClicked()
73 | {
74 | setVisible(false);
75 | }
76 |
77 | void setPicture(Micropolis engine, int xpos, int ypos)
78 | {
79 | Dimension sz = VIEWPORT_SIZE;
80 |
81 | mapView.setEngine(engine);
82 | Rectangle r = mapView.getTileBounds(xpos,ypos);
83 |
84 | mapViewport.setViewPosition(new Point(
85 | r.x + r.width/2 - sz.width/2,
86 | r.y + r.height/2 - sz.height/2
87 | ));
88 | }
89 |
90 | public void showMessage(Micropolis engine, MicropolisMessage msg, int xpos, int ypos)
91 | {
92 | setPicture(engine, xpos, ypos);
93 |
94 | if (infoPane != null) {
95 | mainPane.remove(infoPane);
96 | infoPane = null;
97 | }
98 |
99 | headerLbl.setText(mstrings.getString(msg.name()+".title"));
100 | headerLbl.setBackground(parseColor(mstrings.getString(msg.name()+".color")));
101 |
102 | JLabel myLabel = new JLabel(""+
103 | mstrings.getString(msg.name()+".detail") + "
");
104 | myLabel.setPreferredSize(new Dimension(1,1));
105 |
106 | infoPane = myLabel;
107 | mainPane.add(myLabel, BorderLayout.CENTER);
108 |
109 | setVisible(true);
110 | }
111 |
112 | public void showZoneStatus(Micropolis engine, int xpos, int ypos, ZoneStatus zone)
113 | {
114 | headerLbl.setText(strings.getString("notification.query_hdr"));
115 | headerLbl.setBackground(QUERY_COLOR);
116 |
117 | String buildingStr = zone.building != -1 ? s_strings.getString("zone."+zone.building) : "";
118 | String popDensityStr = s_strings.getString("status."+zone.popDensity);
119 | String landValueStr = s_strings.getString("status."+zone.landValue);
120 | String crimeLevelStr = s_strings.getString("status."+zone.crimeLevel);
121 | String pollutionStr = s_strings.getString("status."+zone.pollution);
122 | String growthRateStr = s_strings.getString("status."+zone.growthRate);
123 |
124 | setPicture(engine, xpos, ypos);
125 |
126 | if (infoPane != null) {
127 | mainPane.remove(infoPane);
128 | infoPane = null;
129 | }
130 |
131 | JPanel p = new JPanel(new GridBagLayout());
132 | mainPane.add(p, BorderLayout.CENTER);
133 | infoPane = p;
134 |
135 | GridBagConstraints c1 = new GridBagConstraints();
136 | GridBagConstraints c2 = new GridBagConstraints();
137 |
138 | c1.gridx = 0;
139 | c2.gridx = 1;
140 | c1.gridy = c2.gridy = 0;
141 | c1.anchor = GridBagConstraints.WEST;
142 | c2.anchor = GridBagConstraints.WEST;
143 | c1.insets = new Insets(0,0,0,8);
144 | c2.weightx = 1.0;
145 |
146 | p.add(new JLabel(strings.getString("notification.zone_lbl")), c1);
147 | p.add(new JLabel(buildingStr), c2);
148 |
149 | c1.gridy = ++c2.gridy;
150 | p.add(new JLabel(strings.getString("notification.density_lbl")), c1);
151 | p.add(new JLabel(popDensityStr), c2);
152 |
153 | c1.gridy = ++c2.gridy;
154 | p.add(new JLabel(strings.getString("notification.value_lbl")), c1);
155 | p.add(new JLabel(landValueStr), c2);
156 |
157 | c1.gridy = ++c2.gridy;
158 | p.add(new JLabel(strings.getString("notification.crime_lbl")), c1);
159 | p.add(new JLabel(crimeLevelStr), c2);
160 |
161 | c1.gridy = ++c2.gridy;
162 | p.add(new JLabel(strings.getString("notification.pollution_lbl")), c1);
163 | p.add(new JLabel(pollutionStr), c2);
164 |
165 | c1.gridy = ++c2.gridy;
166 | p.add(new JLabel(strings.getString("notification.growth_lbl")), c1);
167 | p.add(new JLabel(growthRateStr), c2);
168 |
169 | c1.gridy++;
170 | c1.gridwidth = 2;
171 | c1.weighty = 1.0;
172 | p.add(new JLabel(), c1);
173 |
174 | setVisible(true);
175 | }
176 | }
177 |
--------------------------------------------------------------------------------
/src/micropolisj/gui/package.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Contains the front-end user interface that drives the game.
4 |
5 | Most of the funtionality is tied in by the MainWindow class.
6 | The MicropolisDrawingArea class provides the city renderer.
7 | The OverlapMapView class provides the mini-map.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/micropolisj/util/StringsModel.java:
--------------------------------------------------------------------------------
1 | // This file is part of MicropolisJ.
2 | // Copyright (C) 2013 Jason Long
3 | // Portions Copyright (C) 1989-2007 Electronic Arts Inc.
4 | //
5 | // MicropolisJ is free software; you can redistribute it and/or modify
6 | // it under the terms of the GNU GPLv3, with additional terms.
7 | // See the README file, included in this distribution, for details.
8 |
9 | package micropolisj.util;
10 |
11 | import java.io.*;
12 | import java.util.*;
13 | import javax.swing.table.*;
14 |
15 | class StringsModel extends AbstractTableModel
16 | {
17 | StringInfo [] strings;
18 | ArrayList locales = new ArrayList();
19 |
20 | static class MyLocaleInfo
21 | {
22 | String code;
23 | HashMap propsMap = new HashMap();
24 | boolean dirty;
25 |
26 | MyLocaleInfo(String code) {
27 | this.code = code;
28 | }
29 | }
30 |
31 | static class StringInfo
32 | {
33 | String file;
34 | String id;
35 |
36 | StringInfo(String file, String id)
37 | {
38 | this.file = file;
39 | this.id = id;
40 | }
41 | }
42 |
43 | static final String [] FILES = {
44 | "CityMessages",
45 | "CityStrings",
46 | "GuiStrings",
47 | "StatusMessages"
48 | };
49 |
50 | File workingDirectory;
51 |
52 | StringsModel() throws IOException
53 | {
54 | workingDirectory = new File(
55 | new File(System.getProperty("user.home")),
56 | "micropolis-translations"
57 | );
58 |
59 | ArrayList ss = new ArrayList();
60 | for (String f : FILES) {
61 | loadStrings(f, ss);
62 | }
63 | strings = ss.toArray(new StringInfo[0]);
64 | }
65 |
66 | static void loadStrings(String file, ArrayList ss)
67 | throws IOException
68 | {
69 | Properties p = new Properties();
70 | p.load(StringsModel.class.getResourceAsStream("/micropolisj/"+file+".properties"));
71 | String [] propNames = p.keySet().toArray(new String[0]);
72 | Arrays.sort(propNames);
73 |
74 | for (String propName : propNames)
75 | {
76 | StringInfo si = new StringInfo(file, propName);
77 | ss.add(si);
78 | }
79 | }
80 |
81 | public Object getValueAt(int row, int col)
82 | {
83 | StringInfo si = strings[row];
84 | if (col == 0) {
85 | return si.id;
86 | }
87 |
88 | MyLocaleInfo l = locales.get(col-1);
89 | Properties p = l.propsMap.get(si.file);
90 | return p.getProperty(si.id);
91 | }
92 |
93 | @Override
94 | public int getRowCount()
95 | {
96 | return strings.length;
97 | }
98 |
99 | @Override
100 | public int getColumnCount()
101 | {
102 | return 1 + locales.size();
103 | }
104 |
105 | @Override
106 | public Class getColumnClass(int col)
107 | {
108 | return String.class;
109 | }
110 |
111 | @Override
112 | public String getColumnName(int col)
113 | {
114 | if (col == 0) {
115 | return "String";
116 | }
117 | else {
118 | MyLocaleInfo l = locales.get(col-1);
119 | return l.code != null ? l.code : "C";
120 | }
121 | }
122 |
123 | @Override
124 | public boolean isCellEditable(int row, int col)
125 | {
126 | if (col == 0) {
127 | return false;
128 | }
129 | else {
130 | MyLocaleInfo l = locales.get(col-1);
131 | return l.code != null;
132 | }
133 | }
134 |
135 | @Override
136 | public void setValueAt(Object aValue, int row, int col)
137 | {
138 | StringInfo si = strings[row];
139 | if (col == 0) {
140 | return;
141 | }
142 |
143 | MyLocaleInfo l = locales.get(col-1);
144 | Properties p = l.propsMap.get(si.file);
145 | p.setProperty(si.id, (String)aValue);
146 | l.dirty = true;
147 | }
148 |
149 | /**
150 | * Gets the file in the user's working directory.
151 | */
152 | File getPFile(String file, String localeCode)
153 | {
154 | File d = new File(workingDirectory, "micropolisj");
155 | return new File(d,
156 | file
157 | +(localeCode != null ? "_"+localeCode : "")
158 | +".properties");
159 | }
160 |
161 | void addLocale(String localeCode)
162 | throws IOException
163 | {
164 | MyLocaleInfo li = new MyLocaleInfo(localeCode);
165 | for (String file : FILES)
166 | {
167 | Properties p = new Properties();
168 | {
169 | // load strings from our jar file
170 | String s = "/micropolisj/"+file+(localeCode != null ? "_"+localeCode : "") + ".properties";
171 | InputStream in = getClass().getResourceAsStream(s);
172 | if (in != null) {
173 | p.load(in);
174 | }
175 | }
176 | File f = getPFile(file, localeCode);
177 | if (f.exists()) {
178 | p.load(new FileInputStream(f));
179 | }
180 | li.propsMap.put(file, p);
181 | }
182 |
183 | locales.add(li);
184 | fireTableStructureChanged();
185 | }
186 |
187 | String [] getAllLocaleCodes()
188 | {
189 | String [] rv = new String[locales.size()];
190 | for (int i = 0; i < rv.length; i++) {
191 | rv[i] = locales.get(i).code;
192 | }
193 | return rv;
194 | }
195 |
196 | void removeLocale(String localeCode)
197 | {
198 | assert localeCode != null;
199 |
200 | boolean found = false;
201 | for (int i = locales.size()-1; i >= 0; i--) {
202 | String loc = locales.get(i).code;
203 | if (localeCode.equals(loc)) {
204 | locales.remove(i);
205 | found = true;
206 | }
207 | }
208 | if (found) {
209 | fireTableStructureChanged();
210 | }
211 | }
212 |
213 | void makeDirectories(File f)
214 | throws IOException
215 | {
216 | File d = f.getParentFile();
217 | if (d != null) {
218 | d.mkdirs();
219 | }
220 | }
221 |
222 | void save()
223 | throws IOException
224 | {
225 | for (MyLocaleInfo l : locales)
226 | {
227 | if (!l.dirty) continue;
228 |
229 | for (String file : FILES)
230 | {
231 | Properties p = l.propsMap.get(file);
232 | File f = getPFile(file, l.code);
233 | makeDirectories(f);
234 | p.store(new FileOutputStream(f), l.code);
235 | }
236 | l.dirty = false;
237 | }
238 | }
239 | }
240 |
--------------------------------------------------------------------------------
/src/micropolisj/util/TranslatedStringsTable.java:
--------------------------------------------------------------------------------
1 | // This file is part of MicropolisJ.
2 | // Copyright (C) 2013 Jason Long
3 | // Portions Copyright (C) 1989-2007 Electronic Arts Inc.
4 | //
5 | // MicropolisJ is free software; you can redistribute it and/or modify
6 | // it under the terms of the GNU GPLv3, with additional terms.
7 | // See the README file, included in this distribution, for details.
8 |
9 | package micropolisj.util;
10 |
11 | import java.awt.*;
12 | import javax.swing.*;
13 | import javax.swing.table.*;
14 |
15 | public class TranslatedStringsTable extends JTable
16 | {
17 | public TranslatedStringsTable(TableModel tm)
18 | {
19 | super(tm);
20 | setDefaultEditor(String.class, new DefaultCellEditor(new JTextField()));
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/strings/CityMessages_de.properties:
--------------------------------------------------------------------------------
1 | #de_DE
2 | #Sun Nov 10 12:27:07 CET 2013
3 | POP_500K_REACHED.title=Megastadt
4 | TORNADO_REPORT=Wirbelsturm berichtet \!\!
5 | FIRE_NEED_FUNDING=Feuerwehr ben\u00F6tigt Finanzierung.
6 | HIGH_TRAFFIC.title=Verkehrs Warnung\!
7 | EARTHQUAKE_REPORT.detail=Ein schweres Erdbeben\! L\u00F6sche so schnell wie m\u00F6glich die Feuer, bevor sie sich ausbreiten. Dann repariere die Stromleitungen und baue die Stadt wieder auf.
8 | NEED_POWER=Baue ein Kraftwerk.
9 | POP_2K_REACHED.title=Kleinstadt
10 | HEAVY_TRAFFIC_REPORT.title=Starkes Verkehrsaufkommen\!
11 | MELTDOWN_REPORT.detail=Ein Kraftwerk hatte eine Kernschmelze. Bitte dieses Gebiet meiden, bis die Radioaktivit\u00E4t nachl\u00E4sst.
Viele kommende Generationen werden jetzt mit diesem Problem zurechtkommen m\u00FCssen.
12 | FLOOD_REPORT.title=\u00DCberschwemmung gemeldet\!
13 | HIGH_UNEMPLOYMENT=Arbeitslosenrate ist hoch.
14 | POP_10K_REACHED.title=Stadt
15 | FLOOD_REPORT.detail=\u00DCberschwemmung entlang der Uferlinie gemeldet\!
16 | TORNADO_REPORT.title=Wirbelsturm Alarm\!
17 | POP_10K_REACHED.detail=Die Kleinstadt ist zu einer richtigen Stadt gewachsen, mit einer aktuellen Einwohnerzahl von 10.000. Weiter so\!
18 | NO_NUCLEAR_PLANTS=Kernschmelze nicht m\u00F6glich. Zuerst mu\u00DF ein Kernkraftwerk gebaut werden.
19 | MELTDOWN_REPORT=Eine Kraftwerk hatte eine Kernschmelze \!\!\!
20 | HEAVY_TRAFFIC_REPORT=Starkes Verkehrsaufkommen gemeldet.
21 | EXPLOSION_REPORT=Explosion festgestellt \!
22 | MONSTER_REPORT=Ein Monster wurde gesichtet \!\!
23 | NEED_SEAPORT=Die Industrie ben\u00F6tigt einen Hafen.
24 | HIGH_POLLUTION.detail=Die Luftverschmutzung in der Stadt hat den zul\u00E4ssigen Grenzwert \u00FCberschritten. Es besteht die Gefahr von gravierenden \u00D6kologischen Sch\u00E4den.
Entweder wird etwas unternommen oder es m\u00FCssen Gasmasken verteilt werden.
25 | FIRE_REPORT.detail=Ein Feuer wurde gemeldet\!
26 | SHIPWRECK_REPORT.detail=Ein Schiff ist aufgelaufen\!
27 | NEED_COM=Mehr B\u00FCrogebiete ben\u00F6tigt.
28 | COPTER_CRASH_REPORT.detail=Ein Hubschrauber ist abgest\u00FCrzt\!
29 | NEED_IND=Mehr Industriegebiete ben\u00F6tigt.
30 | POP_500K_REACHED.detail=Gl\u00FCckwunsch, die Stadt hat die h\u00F6chste Stufe urbaner Entwicklung erreicht, die Megastadt.
31 | INSUFFICIENT_FUNDS=Nicht genug Geld um das zu bauen.
32 | POP_50K_REACHED=Die Einwohnerzahl hat 50.000 erreicht.
33 | HIGH_POLLUTION.title=Sehr hohe Luftverschmutzung\!
34 | FIREBOMBING_REPORT=Brandbomben gemeldet \!
35 | HIGH_CRIME.title=Hohe Kriminalit\u00E4t\!
36 | COPTER_CRASH_REPORT=Ein Hubschrauber ist abgest\u00FCrzt\!
37 | NEED_RES=Mehr Wohngebiete ben\u00F6tigt.
38 | POP_100K_REACHED.detail=Die Hauptstadt hat jetzt den Status einer Metropole errlangt. Die aktuelle Einwohnerzahl ist 100.000. Mit diesen Verwalterf\u00E4higkeiten k\u00F6nnte man eigentlich auch gleich als Bundeskanzler kandidieren.
39 | POP_100K_REACHED.title=Metropole
40 | PLANECRASH_REPORT.detail=Ein Flugzeug ist abgest\u00FCrzt\!
41 | HIGH_CRIME.detail=Kriminalit\u00E4t in der Stadt ger\u00E4t au\u00DFer Kontrolle. Der Mob brandschatzt und pl\u00FCndert die Innenstadt. Der Bundeskanzler wird das Milit\u00E4r schicken, wenn das Problem nicht wieder unter Kontrolle gebracht wird.
42 | HIGH_POLLUTION=Sehr hohe Luftverschmutzung.
43 | BULLDOZE_FIRST=Die Fl\u00E4che mu\u00DF zuerst planiert werden.
44 | POP_500K_REACHED=Die Einwohnerzahl hat 500.000 erreicht.
45 | HIGH_TRAFFIC.detail=Verkehr in der Stadt ist extrem. Die Stadt hat einen Verkehrsinfarkt. Die Pendler werden militant.
Mehr Stra\u00DFen und Gleise bauen oder eine kugelsichere Limosine kaufen.
46 | NEED_FIRESTATION=Die Einwohner m\u00F6chten eine Feuerwehr.
47 | POP_50K_REACHED.title=Hauptstadt
48 | BROWNOUTS_REPORT=Unterspannung. Baue neues Kraftwerk.
49 | EARTHQUAKE_REPORT=Schweres Erdbeben gemeldet \!\!
50 | NEED_POLICE=Die Einwohner m\u00F6chten eine Polizeistation.
51 | BLACKOUTS=Stromausf\u00E4lle. Leitungsnetz pr\u00FCfen.
52 | FIRE_REPORT=Feuer gemeldet \!
53 | NEED_ROADS=Mehr Stra\u00DFen ben\u00F6tigt.
54 | TORNADO_REPORT.detail=Ein Wirbelsturm wurde gesichtet\! Er kann nicht aufgehalten werden, daher sollten die Sch\u00E4den nachtr\u00E4glich repariert werden\!
55 | TRAIN_CRASH_REPORT.title=Zugungl\u00FCck\!
56 | POP_100K_REACHED=Die Einwohnerzahl hat 100.000 erreicht.
57 | HIGH_TRAFFIC=H\u00E4ufige Staus festgestellt.
58 | NEED_RAILS=Unzureichendes Zugsystem.
59 | RIOTING_REPORT.title=Unruhen\!
60 | PLANECRASH_REPORT.title=Flugzeug abgest\u00FCrzt\!
61 | FIRE_REPORT.title=Feuer gemeldet\!
62 | TRAIN_CRASH_REPORT.detail=Ein Zug hatte einen Unfall\!
63 | EARTHQUAKE_REPORT.title=Erdbeben\!
64 | MONSTER_REPORT.detail=Eine riesige reptilienhafte Kreatur wurde im Wasser gesichtet. Sie scheint von Gegenden mit hoher Luftverschmutzung angezogen zu werden. Sie zieht eine Schneise der Verw\u00FCstung.
Man kann nur abwarten, bis sie verschwindet und dann die Stadt neu aufbauen.
65 | OUT_OF_FUNDS_REPORT=Die Stadt ist pleite gegangen\!
66 | POP_2K_REACHED.detail=Gl\u00FCckwunsch, das Dorf ist zu einer Kleinstadt angewachsen. Sie hat jetzt 2.000 Einwohner.
67 | MONSTER_REPORT.title=Monster Angriff\!
68 | POP_10K_REACHED=Die Einwohnerzahl hat 10.000 erreicht.
69 | PLANECRASH_REPORT=Ein Flugzeug ist abgest\u00FCrzt\!
70 | HEAVY_TRAFFIC_REPORT.detail=Hubschrauber Eins
Melden starkes Verkehrsaufkommen\!
71 | RIOTING_REPORT=Sie randalieren in den Stra\u00DFen \!\!
72 | HIGH_CRIME=Kriminalit\u00E4t sehr hoch.
73 | FIREBOMBING_REPORT.title=Brandbomben gemeldet\!
74 | EARTHQUAKE_REPORT.color=
75 | ROADS_NEED_FUNDING=Stra\u00DFen gehen kaputt, da sie nicht repariert werden.
76 | NEED_AIRPORT=Der Handel ben\u00F6tigt einen Flughafen.
77 | POP_50K_REACHED.detail=Die Stadt wurde zur Hauptstadt. Die aktuelle Einwohnerzahl ist 50.000. Die politische Zukunft schaut hervorragend aus.
78 | RIOTING_REPORT.detail=Die Einwohner randalieren in den Stra\u00DFen, setzen Autos und H\u00E4user in Brand\!
Medienberichterstattung wurde unterbrochen.
79 | FIREBOMBING_REPORT.detail=Brandbomben werden abgeworfen\!\!
80 | POLICE_NEED_FUNDING=Polizeireviere ben\u00F6tigen Geld
81 | NEED_PARKS=Ben\u00F6tigen mehr Parks.
82 | HIGH_TAXES=B\u00FCrger unzufrieden. Zu hohe Steuern.
83 | MELTDOWN_REPORT.title=Kernschmelze\!
84 | COPTER_CRASH_REPORT.title=Hubschrauberabsturz\!
85 | SHIPWRECK_REPORT.title=Schiffsungl\u00FCck\!
86 | SHIPWRECK_REPORT=Schiffsungl\u00FCck berichtet \!
87 | POP_2K_REACHED=Die Einwohnerzahl hat 2.000 erreicht.
88 | TRAIN_CRASH_REPORT=Zugungl\u00FCck \!
89 | NEED_STADIUM=Die Einwohner m\u00F6chten ein Stadion.
90 | FLOOD_REPORT=\u00DCberschwemmung gemeldet \!
91 |
--------------------------------------------------------------------------------
/strings/CityMessages_sv.properties:
--------------------------------------------------------------------------------
1 | #sv_SE
2 | #Sat Jun 15 18:46:11 CEST 2013
3 | POP_100K_REACHED=Befolkningen har n\u00E5tt 100 000.
4 | POP_10K_REACHED.detail=Din t\u00E4tort har vuxit till en stad med en befolkning p\u00E5 10 000. Forts\u00E4tt s\u00E5\!
5 | POP_2K_REACHED.title=T\u00C4TORT
6 | BULLDOZE_FIRST=Du m\u00E5ste schakta omr\u00E5det f\u00F6rst.
7 | OUT_OF_FUNDS_REPORT=DIN STAD \u00C4R BANKRUTT\!
8 | POP_500K_REACHED=Befolkningen har n\u00E5tt 500 000.
9 | POP_50K_REACHED=Befolkningen har n\u00E5tt 50 000.
10 | RIOTING_REPORT.title=UPPROR\!
11 | POP_50K_REACHED.title=HUVUDSTAD
12 | POP_2K_REACHED=Befolkningen har n\u00E5tt 2 000.
13 | POP_10K_REACHED.title=STAD
14 | SHIPWRECK_REPORT=Skeppsvrak rapporterat \!
15 | POLICE_NEED_FUNDING=Polisen beh\u00F6ver ett pengatillskott.
16 | BLACKOUTS=
17 | POP_100K_REACHED.detail=
18 | POP_500K_REACHED.detail=Grattis, du har n\u00E5tt den h\u00F6gsta niv\u00E5n som \u00E4r m\u00F6jlig\!
19 | ROADS_NEED_FUNDING=V\u00E4gar fulla av potth\u00E5l pga budgeth\u00E5l.
20 | TRAIN_CRASH_REPORT.detail=Ett t\u00E5g har krockat\!
21 | RIOTING_REPORT=Uppror ute p\u00E5 gatorna \!\!
22 | TRAIN_CRASH_REPORT.title=T\u00C5GOLYCKA\!
23 | SHIPWRECK_REPORT.detail=En b\u00E5t har kapsejsat\!
24 | POP_50K_REACHED.detail=Din stad har blivit huvudstad. Befolkningen \u00E4r 50 000. Din framtid ser ljus ut.
25 | SHIPWRECK_REPORT.title=SKEPPSVRAK\!
26 | TRAIN_CRASH_REPORT=Ett t\u00E5g krockade \!
27 | TORNADO_REPORT.detail=
28 | TORNADO_REPORT.title=TORNADOLARM\!
29 | POP_10K_REACHED=Befolkningen har n\u00E5tt 10 000.
30 | TORNADO_REPORT=Tornado rapporterad \!\!
31 |
--------------------------------------------------------------------------------
/strings/CityStrings.properties:
--------------------------------------------------------------------------------
1 | !! This file is part of MicropolisJ.
2 | !! Copyright (C) 2013 Jason Long
3 | !! Portions Copyright (C) 1989-2007 Electronic Arts Inc.
4 | !!
5 | !! MicropolisJ is free software; you can redistribute it and/or modify
6 | !! it under the terms of the GNU GPLv3, with additional terms.
7 | !! See the README file, included in this distribution, for details.
8 |
9 | problem.CRIME = CRIME
10 | problem.POLLUTION = POLLUTION
11 | problem.HOUSING = HOUSING COSTS
12 | problem.TAXES = TAXES
13 | problem.TRAFFIC = TRAFFIC
14 | problem.UNEMPLOYMENT = UNEMPLOYMENT
15 | problem.FIRE = FIRES
16 |
17 | class.0 = VILLAGE
18 | class.1 = TOWN
19 | class.2 = CITY
20 | class.3 = CAPITAL
21 | class.4 = METROPOLIS
22 | class.5 = MEGALOPOLIS
23 |
24 | level.0 = Easy
25 | level.1 = Medium
26 | level.2 = Hard
27 |
--------------------------------------------------------------------------------
/strings/CityStrings_de.properties:
--------------------------------------------------------------------------------
1 | #de_DE
2 | #Sun Nov 10 12:27:07 CET 2013
3 | class.5=Megastadt
4 | problem.HOUSING=Mietkosten
5 | class.4=Metropole
6 | class.3=Hauptstadt
7 | problem.FIRE=Feuer
8 | class.2=Stadt
9 | class.1=Kleinstadt
10 | class.0=Dorf
11 | problem.CRIME=Kriminalit\u00E4t
12 | level.2=Schwer
13 | level.1=Mittel
14 | level.0=Einfach
15 | problem.TAXES=Steuern
16 | problem.UNEMPLOYMENT=Arbeitslosigkeit
17 | problem.POLLUTION=Luftverschmutzung
18 | problem.TRAFFIC=Verkehr
19 |
--------------------------------------------------------------------------------
/strings/CityStrings_fr.utf8:
--------------------------------------------------------------------------------
1 | !! This file is part of MicropolisJ.
2 | !! Copyright (C) 2013 Jason Long
3 | !! Portions Copyright (C) 1989-2007 Electronic Arts Inc.
4 | !!
5 | !! MicropolisJ is free software; you can redistribute it and/or modify
6 | !! it under the terms of the GNU GPLv3, with additional terms.
7 | !! See the README file, included in this distribution, for details.
8 |
9 | !! French - France Translation by Benoît Gross June 2013
10 |
11 | problem.CRIME = CRIME
12 | problem.POLLUTION = POLLUTION
13 | problem.HOUSING = PRIX DE L'IMMOBILIER
14 | problem.TAXES = TAXES
15 | problem.TRAFFIC = CIRCULATION
16 | problem.UNEMPLOYMENT = CHÔMAGE
17 | problem.FIRE = INCENDIES
18 |
19 | class.0 = VILLAGE
20 | class.1 = COMMUNE
21 | class.2 = VILLE
22 | class.3 = CAPITALE
23 | class.4 = MÉTROPOLE
24 | class.5 = MÉGAPOLE
25 |
26 | level.0 = Facile
27 | level.1 = Moyen
28 | level.2 = Difficile
29 |
--------------------------------------------------------------------------------
/strings/CityStrings_sv.properties:
--------------------------------------------------------------------------------
1 | #sv_SE
2 | #Sat Jun 15 18:46:11 CEST 2013
3 | problem.HOUSING=HYRESKOSTNADER
4 | class.5=MEGALOPOLIS
5 | class.4=METROPOLIS
6 | problem.FIRE=BR\u00C4NDER
7 | class.3=HUVUDSTAD
8 | class.2=STAD
9 | class.1=T\u00C4TORT
10 | problem.CRIME=BROTT
11 | class.0=BY
12 | level.2=Sv\u00E5r
13 | level.1=Medel
14 | level.0=L\u00E4tt
15 | problem.TAXES=SKATTER
16 | problem.UNEMPLOYMENT=ARBETSL\u00D6SHET
17 | problem.POLLUTION=F\u00D6RORENING
18 | problem.TRAFFIC=TRAFIK
19 |
--------------------------------------------------------------------------------
/strings/GuiStrings_de.properties:
--------------------------------------------------------------------------------
1 | #de_DE
2 | #Sun Nov 10 12:27:07 CET 2013
3 | menu.game.load=Lade Stadt...
4 | budgetdlg.funding_level_hdr=H\u00F6he der Finanzierung
5 | menu.speed.PAUSED=Pausierend
6 | menu.speed=Geschwindigkeit
7 | menu.windows.evaluation=Statistik
8 | dismiss-evaluation=Statistik schliessen
9 | welcome.play_this_map=Verwende diese Karte
10 | menu.speed.SLOW=Langsam
11 | public-opinion=\u00D6ffentliche Meinung
12 | city-score-head=Gesamt Stadtbewertung (0-1000)
13 | menu.overlays.LANDVALUE_OVERLAY=Grundst\u00FCckswert
14 | tool.SEAPORT.tip=Baue Hafen
15 | tool.INDUSTRIAL.name=Industriegebiet
16 | stats-last-year=(letztes Jahr)
17 | tool.INDUSTRIAL.tip=Industriegebiete
18 | menu.windows.graph=Diagramm
19 | main.error_close=Schlie\u00DFen
20 | tool.BULLDOZER.name=Bagger
21 | welcome.quit=Beenden
22 | tool.QUERY.tip=Frage Zonenstatus ab
23 | budgetdlg.police_fund=Ausgaben Polizei
24 | budgetdlg.operating_expenses=Betriebskosten
25 | tool.PARK.name=Park
26 | menu.overlays.POLICE_OVERLAY=Polizei Pr\u00E4senz
27 | notification.zone_lbl=Gebiet\:
28 | tool.AIRPORT.name=Flughafen
29 | stats-game-level=Spiel Schwierigkeit\:
30 | menu.zones=Gebiete
31 | budgetdlg.period_ending=Jahresabrechnung
32 | tool.COMMERCIAL.tip=B\u00FCrogebiete
33 | menu.game.exit=Beenden
34 | menu.help.about=\u00DCber
35 | tool.NUCLEAR.tip=Baue Kernkraftwerk
36 | budgetdlg.road_fund=Ausgaben Verkehr
37 | budgetdlg.reset=Zur\u00FCcksetzen auf Ursprungswerte
38 | menu.speed.NORMAL=Normal
39 | notification.pollution_lbl=Verschmutzung\:
40 | main.error_shutdown=Programm beenden
41 | menu.disasters=Katastrophen
42 | tool.RAIL.name=Schiene
43 | public-opinion-yes=Ja
44 | menu.game.new=Neue Stadt...
45 | budgetdlg.cash_begin=Geld am Anfang des Jahres
46 | main.error_caption=Fehler
47 | tool.WIRE.name=Stromleitung
48 | tool.POLICE.name=Polizeistation
49 | tool.POWERPLANT.name=Kohlekraftwerk
50 | graph_label.POLLUTION=Luftverschmutzung
51 | main.caption_unnamed_city=MicropolisJ
52 | tool.PARK.tip=Baue Parks
53 | main.error_unexpected=Ein unerwarteter Fehler ist aufgetreten
54 | tool.SEAPORT.name=Hafen
55 | welcome.load_city=Lade Stadt
56 | tool.BULLDOZER.tip=Baggern
57 | notification.dismiss=Schlie\u00DFen
58 | tool.RAIL.tip=Baue Schienen
59 | welcome.caption=Wilkommen zu MicropolisJ
60 | tool.NUCLEAR.name=Kernkraftwerk
61 | notification.growth_lbl=Wachstum\:
62 | menu.disasters.MELTDOWN=Kernschmelze
63 | budgetdlg.fire_fund=Ausgaben Feuerwehr
64 | menu.disasters.FLOOD=Flut
65 | dismiss_graph=Diagramm schliessen
66 | menu.game=Spiel
67 | main.tools_caption=Werkzeuge
68 | main.date_label=Datum\:
69 | notification.crime_lbl=Kriminalit\u00E4t\:
70 | welcome.cancel=Abbrechen
71 | menu.disasters.MONSTER=Monster
72 | menu.zones.INDUSTRIAL=Industriegebiete
73 | budgetdlg.annual_receipts_hdr=J\u00E4hrliche Eink\u00FCnfte
74 | menu.game.save_as=Speichere Stadt unter...
75 | graph_label.MONEY=Wert
76 | budgetdlg.pause_game=Spiel anhalten
77 | notification.query_hdr=Frage Gebietsdaten ab
78 | notification.density_lbl=Dichte\:
79 | menu.options.auto_budget=Automatischer Haushalt
80 | budgetdlg.title=Einnahmen
81 | menu.windows=Fenster
82 | menu.speed.FAST=Schnell
83 | notification.value_lbl=Wert\:
84 | menu.help.launch-translation-tool=\u00DCbersetzungswerkzeug starten
85 | budgetdlg.auto_budget=Automatischer Haushalt
86 | stats-assessed-value=Sch\u00E4tzwert\:
87 | stats-category=Kategorie\:
88 | menu.zones.RESIDENTIAL=Wohngebiete
89 | public-opinion-2=Was sind die schlimmsten Probleme?
90 | public-opinion-1=Macht der B\u00FCrgermeister gute Arbeit?
91 | menu.overlays.POPDEN_OVERLAY=Bev\u00F6lkerungsdichte
92 | menu.overlays.POLLUTE_OVERLAY=Luftverschmutzung
93 | menu.zones.TRANSPORT=Verkehrsnetz
94 | city-score-current=Aktuelle Bewertung\:
95 | stats-population=Bev\u00F6lkerung
96 | menu.options=Einstellungen
97 | menu.options.zoom_in=Vergr\u00F6\u00DFern
98 | tool.ROADS.name=Stra\u00DFe
99 | tool.RESIDENTIAL.name=Wohngebiet
100 | public-opinion-no=Nein
101 | menu.overlays.TRAFFIC_OVERLAY=Verkehrsdichte
102 | menu.overlays.CRIME_OVERLAY=Verbrechensrate
103 | main.population_label=Einwohnerzahl\:
104 | menu.help=Hilfe
105 | budgetdlg.allocation_hdr=Bezahlt
106 | menu.zones.ALL=Alle
107 | welcome.previous_map=Vorherige Karte
108 | error.shutdown_query=Programm wirklich beenden? Die Stadt wird nicht gespeichert.
109 | graph_label.INDPOP=Industriegebiete
110 | menu.options.sound=Ton
111 | main.funds_label=Einnahmen\:
112 | menu.overlays.GROWTHRATE_OVERLAY=Wachstumsrate
113 | tool.AIRPORT.tip=Baue Flughafen
114 | main.about_caption=\u00DCber MicropolisJ
115 | budgetdlg.requested_hdr=Angefordert
116 | tool.RESIDENTIAL.tip=Wohngebiete
117 | menu.options.disasters=Katastrophen
118 | budgetdlg.capital_expenses=Investitionen
119 | menu.zones.COMMERCIAL=B\u00FCrogebiete
120 | tool.POWERPLANT.tip=Baue Kohlekraftwerk
121 | tool.POLICE.tip=Baue Polizeistation
122 | main.save_query=Stadt speichern?
123 | budgetdlg.cash_end=Geld am Ende des Jahres
124 | budgetdlg.continue=Weitermachen mit diesen Angaben
125 | tool.FIRE.name=Feuerwehr
126 | menu.windows.budget=Haushalt
127 | graph_label.RESPOP=Wohngebiete
128 | graph_label.COMPOP=B\u00FCrogebiete
129 | statistics-head=Statistiken
130 | menu.disasters.FIRE=Feuer
131 | main.error_show_stacktrace=Details ansehen
132 | menu.options.auto_bulldoze=Automatisch planieren
133 | budgetdlg.taxes_collected=Steuern erhoben
134 | tool.FIRE.tip=Baue Feuerwehr
135 | menu.disasters.TORNADO=Wirbelsturm
136 | budgetdlg.tax_rate_hdr=Steuerrate
137 | menu.speed.SUPER_FAST=Sehr schnell
138 | menu.difficulty=Schwierigkeit
139 | graph_label.CRIME=Kriminalit\u00E4t
140 | tool.ROADS.tip=Baue Stra\u00DFen
141 | tool.QUERY.name=Abfrage
142 | tool.STADIUM.tip=Baue Stadion
143 | menu.overlays=Einblendungen
144 | menu.overlays.POWER_OVERLAY=Stromnetz
145 | menu.overlays.FIRE_OVERLAY=Feuerwehr Abdeckung
146 | tool.WIRE.tip=Baue Stromleitung
147 | budgetdlg.tax_revenue=Steuereinnahmen
148 | menu.options.zoom_out=Verkleinern
149 | menu.game.save=Speichere Stadt
150 | stats-net-migration=Netto Zuwanderung
151 | welcome.next_map=N\u00E4chste Karte
152 | menu.disasters.EARTHQUAKE=Erdbeben
153 | tool.COMMERCIAL.name=B\u00FCrogebiet
154 | menu.difficulty.2=Schwer
155 | menu.difficulty.1=Mittel
156 | menu.difficulty.0=Leicht
157 | onetwenty_years=120 Jahre
158 | city-score-change=J\u00E4hrliche Ausgaben\:
159 | tool.STADIUM.name=Stadion
160 | ten_years=10 Jahre
161 |
--------------------------------------------------------------------------------
/strings/GuiStrings_sv.properties:
--------------------------------------------------------------------------------
1 | #sv_SE
2 | #Sat Jun 15 18:46:11 CEST 2013
3 | menu.game.load=Ladda stad...
4 | budgetdlg.funding_level_hdr=Penganiv\u00E5
5 | menu.speed.PAUSED=Paus
6 | menu.speed=Hastighet
7 | menu.windows.evaluation=Utv\u00E4rdering
8 | dismiss-evaluation=St\u00E4ng utv\u00E4rdering
9 | welcome.play_this_map=Spela karta
10 | menu.speed.SLOW=L\u00E5ngsamt
11 | public-opinion=Folkets \u00E5sikter
12 | city-score-head=Total po\u00E4ng (0 - 1000)
13 | menu.overlays.LANDVALUE_OVERLAY=Markv\u00E4rde
14 | tool.SEAPORT.tip=Bygg hamn
15 | tool.INDUSTRIAL.name=INDUSTRI
16 | stats-last-year=(f\u00F6rra \u00E5ret)
17 | tool.INDUSTRIAL.tip=Bygg industriomr\u00E5de
18 | menu.windows.graph=Graf
19 | main.error_close=St\u00E4ng
20 | tool.BULLDOZER.name=SCHAKTMASKIN
21 | welcome.quit=Avsluta
22 | tool.QUERY.tip=Fr\u00E5geverktyg
23 | budgetdlg.police_fund=Polisbudget
24 | budgetdlg.operating_expenses=Driftkostander
25 | tool.PARK.name=PARK
26 | menu.overlays.POLICE_OVERLAY=Polist\u00E4ckning
27 | funds={0,number,integer} kr
28 | notification.zone_lbl=Zontyp\:
29 | tool.AIRPORT.name=FLYGPLATS
30 | stats-game-level=Spelniv\u00E5\:
31 | menu.zones=Zoner
32 | budgetdlg.period_ending=Upph\u00F6rande period
33 | tool.COMMERCIAL.tip=Bygg aff\u00E4rsomr\u00E5de
34 | menu.game.exit=Avsluta
35 | menu.help.about=Om
36 | tool.NUCLEAR.tip=Bygg k\u00E4rnkraftverk
37 | cty_file=CTY-fil
38 | budgetdlg.road_fund=V\u00E4gbudget
39 | budgetdlg.reset=\u00C5terst\u00E4ll till standard
40 | menu.speed.NORMAL=Normal
41 | notification.pollution_lbl=F\u00F6rorening\:
42 | main.error_shutdown=Avsluta program
43 | menu.disasters=Katastrofer
44 | tool.RAIL.name=J\u00C4RNV\u00C4G
45 | main.version_string=
46 | public-opinion-yes=JA
47 | menu.game.new=Ny stad...
48 | budgetdlg.cash_begin=Pengar i b\u00F6rjan av \u00E5ret
49 | main.error_caption=Fel
50 | tool.WIRE.name=KRAFTLEDNING
51 | tool.POLICE.name=POLIS
52 | tool.POWERPLANT.name=KOLKRAFTVERK
53 | graph_label.POLLUTION=F\u00F6rorening
54 | tool.PARK.tip=Bygg parker
55 | main.error_unexpected=Ett ok\u00E4nt fel uppstod
56 | tool.SEAPORT.name=HAMN
57 | welcome.load_city=Ladda stad
58 | tool.BULLDOZER.tip=Schaktmaskin
59 | notification.dismiss=St\u00E4ng
60 | tool.RAIL.tip=Bygg j\u00E4rnv\u00E4g
61 | welcome.caption=V\u00E4lkommen till MicopolisJ
62 | tool.NUCLEAR.name=K\u00C4RNKRAFTVERK
63 | notification.growth_lbl=Tillv\u00E4xt\:
64 | menu.disasters.MELTDOWN=H\u00E4rdsm\u00E4lta
65 | budgetdlg.fire_fund=Brandbudget
66 | menu.disasters.FLOOD=\u00D6versv\u00E4mning
67 | dismiss_graph=St\u00E4ng graf
68 | menu.game=Spel
69 | main.tools_caption=Verktyg
70 | main.date_label=Datum\:
71 | notification.crime_lbl=Brott\:
72 | welcome.cancel=Avbryt
73 | menu.disasters.MONSTER=Monster
74 | menu.zones.INDUSTRIAL=Aff\u00E4rer
75 | budgetdlg.annual_receipts_hdr=\u00C5rliga kvitton
76 | menu.game.save_as=Spara stad som...
77 | graph_label.MONEY=Pengafl\u00F6de
78 | budgetdlg.pause_game=Pausa spel
79 | notification.query_hdr=Fr\u00E5geverktyg
80 | notification.density_lbl=T\u00E4thet\:
81 | menu.options.auto_budget=Autobudget
82 | budgetdlg.title=Budget
83 | menu.windows=F\u00F6nster
84 | menu.speed.FAST=Snabbt
85 | notification.value_lbl=V\u00E4rde\:
86 | menu.help.launch-translation-tool=Starta \u00F6vers\u00E4ttningsverktyget
87 | budgetdlg.auto_budget=Autobudget
88 | stats-assessed-value=Uppskattat v\u00E4rde\:
89 | stats-category=Kategori\:
90 | menu.zones.RESIDENTIAL=Bost\u00E4der
91 | public-opinion-2=Vilka problem \u00E4r v\u00E4rst?
92 | public-opinion-1=G\u00F6r borgm\u00E4staren ett bra jobb?
93 | menu.overlays.POPDEN_OVERLAY=Befolkningst\u00E4thet
94 | menu.overlays.POLLUTE_OVERLAY=F\u00F6rorening
95 | menu.zones.TRANSPORT=Transport
96 | city-score-current=Nuvarande po\u00E4ng\:
97 | stats-population=Befolkning\:
98 | menu.options=Alternativ
99 | tool.ROADS.name=V\u00C4G
100 | tool.RESIDENTIAL.name=BOST\u00C4DER
101 | public-opinion-no=NEJ
102 | menu.overlays.TRAFFIC_OVERLAY=Trafikt\u00E4thet
103 | menu.overlays.CRIME_OVERLAY=Brottsniv\u00E5
104 | main.population_label=Befolkning\:
105 | menu.help=Hj\u00E4lp
106 | budgetdlg.allocation_hdr=Utbetalt
107 | menu.zones.ALL=Alla
108 | welcome.previous_map=F\u00F6reg. karata
109 | error.shutdown_query=\u00C4r du s\u00E4ker p\u00E5 att du avsluta? Din stad kommer inte att sparas.
110 | graph_label.INDPOP=Industri
111 | menu.options.sound=Ljud
112 | main.funds_label=Pengar\:
113 | menu.overlays.GROWTHRATE_OVERLAY=Tillv\u00E4xtstakt
114 | tool.AIRPORT.tip=Bygg flygplats
115 | main.about_caption=Om MicropolisJ
116 | budgetdlg.requested_hdr=Efterfr\u00E5gat
117 | tool.RESIDENTIAL.tip=Bygg bostadsomr\u00E5de
118 | menu.options.disasters=Katastrofer
119 | budgetdlg.capital_expenses=Kapitalutgifter
120 | menu.zones.COMMERCIAL=Industri
121 | tool.POWERPLANT.tip=Bygg kolkraftverk
122 | tool.POLICE.tip=Bygg polisstation
123 | main.save_query=Vill du spara den h\u00E4r staden?
124 | budgetdlg.cash_end=Pengar i slutet av \u00E5ret
125 | budgetdlg.continue=Forts\u00E4tt med dessa v\u00E4rden
126 | tool.FIRE.name=BRANDK\u00C5R
127 | menu.windows.budget=Budget
128 | graph_label.RESPOP=Bost\u00E4der
129 | graph_label.COMPOP=Aff\u00E4rer
130 | statistics-head=Statistik
131 | menu.disasters.FIRE=Eldsv\u00E5da
132 | main.error_show_stacktrace=Visa detaljer
133 | menu.options.auto_bulldoze=Autoschaktning
134 | budgetdlg.taxes_collected=Insamlad skatt
135 | tool.FIRE.tip=Bygg brandstation
136 | menu.disasters.TORNADO=Tornado
137 | budgetdlg.tax_rate_hdr=Skatteniv\u00E5
138 | menu.speed.SUPER_FAST=J\u00E4ttefort
139 | menu.difficulty=Sv\u00E5rhetsgrad
140 | graph_label.CRIME=Brott
141 | tool.ROADS.tip=Bygg v\u00E4g
142 | tool.QUERY.name=FR\u00C5GA
143 | tool.STADIUM.tip=Bygg arena
144 | menu.overlays=Datakartor
145 | menu.overlays.POWER_OVERLAY=Kraftn\u00E4t
146 | menu.overlays.FIRE_OVERLAY=Brandt\u00E4ckning
147 | tool.WIRE.tip=Bygg kraftledning
148 | budgetdlg.tax_revenue=Skatteinkomst
149 | menu.game.save=Spara stad
150 | stats-net-migration=Nettomigrering\:
151 | welcome.next_map=N\u00E4sta karta
152 | menu.disasters.EARTHQUAKE=Jordb\u00E4vning
153 | tool.COMMERCIAL.name=AFF\u00C4RER
154 | menu.difficulty.2=Sv\u00E5r
155 | menu.difficulty.1=Medel
156 | menu.difficulty.0=L\u00E4tt
157 | onetwenty_years=120 \u00C5R
158 | city-score-change=\u00C5rlig f\u00F6r\u00E4ndring\:
159 | tool.STADIUM.name=ARENA
160 | ten_years=10 \u00C5R
161 |
--------------------------------------------------------------------------------
/strings/StatusMessages.properties:
--------------------------------------------------------------------------------
1 | !! This file is part of MicropolisJ.
2 | !! Copyright (C) 2013 Jason Long
3 | !! Portions Copyright (C) 1989-2007 Electronic Arts Inc.
4 | !!
5 | !! MicropolisJ is free software; you can redistribute it and/or modify
6 | !! it under the terms of the GNU GPLv3, with additional terms.
7 | !! See the README file, included in this distribution, for details.
8 |
9 | zone.0 = Clear
10 | zone.1 = Water
11 | zone.2 = Trees
12 | zone.3 = Rubble
13 | zone.4 = Flood
14 | zone.5 = Radioactive Waste
15 | zone.6 = Fire
16 | zone.7 = Road
17 | zone.8 = Power
18 | zone.9 = Rail
19 | zone.10 = Residential
20 | zone.11 = Commercial
21 | zone.12 = Industrial
22 | zone.13 = Seaport
23 | zone.14 = Airport
24 | zone.15 = Coal Power
25 | zone.16 = Fire Department
26 | zone.17 = Police Department
27 | zone.18 = Stadium
28 | zone.19 = Nuclear Power
29 | zone.20 = Draw Bridge
30 | zone.21 = Radar Dish
31 | zone.22 = Fountain
32 | zone.23 =
33 | zone.24 = Steelers 38 Bears 3
34 | zone.25 =
35 | zone.26 = Ur 238
36 | zone.27 =
37 |
38 | ! population density
39 | status.1 = Low
40 | status.2 = Medium
41 | status.3 = High
42 | status.4 = Very High
43 | ! land value
44 | status.5 = Slum
45 | status.6 = Lower Class
46 | status.7 = Middle Class
47 | status.8 = High
48 | ! crime level
49 | status.9 = Safe
50 | status.10 = Light
51 | status.11 = Moderate
52 | status.12 = Dangerous
53 | ! pollution
54 | status.13 = None
55 | status.14 = Moderate
56 | status.15 = Heavy
57 | status.16 = Very Heavy
58 | ! growth rate
59 | status.17 = Declining
60 | status.18 = Stable
61 | status.19 = Slow Growth
62 | status.20 = Fast Growth
63 |
--------------------------------------------------------------------------------
/strings/StatusMessages_de.properties:
--------------------------------------------------------------------------------
1 | #de_DE
2 | #Sun Nov 10 12:27:07 CET 2013
3 | zone.19=Kernkraftwerk
4 | zone.18=Stadion
5 | zone.17=Polizeirevier
6 | zone.16=Feuerwehr
7 | zone.15=Kohlekraftwerk
8 | zone.14=Flughafen
9 | zone.13=Hafen
10 | zone.12=Industriegebiet
11 | zone.11=B\u00FCrogebiet
12 | zone.10=Wohngebiet
13 | status.20=Schnelles Wachstum
14 | zone.9=Schiene
15 | zone.8=Strom
16 | zone.7=Stra\u00DFe
17 | zone.6=Feuer
18 | status.19=Langsames Wachstum
19 | zone.5=Radioaktive Verseuchung
20 | status.18=Stabil
21 | zone.4=Flut
22 | status.17=R\u00FCckl\u00E4ufig
23 | zone.3=Ger\u00F6ll
24 | status.16=Sehr stark
25 | zone.2=B\u00E4ume
26 | zone.1=Wasser
27 | status.15=Stark
28 | zone.0=Ebene
29 | status.14=M\u00E4\u00DFig
30 | status.13=Keine
31 | status.12=Gef\u00E4hrlich
32 | status.11=M\u00E4\u00DFig
33 | status.10=Leicht
34 | status.9=Sicher
35 | status.8=Hoch
36 | status.7=Mittelklasse
37 | status.6=Unterklasse
38 | zone.25=Zugbr\u00FCcke
39 | status.5=Elendsviertel
40 | status.4=Sehr hoch
41 | zone.23=Industrie
42 | status.3=Hoch
43 | zone.22=Springbrunnen
44 | status.2=Mittel
45 | zone.21=Radarsch\u00FCssel
46 | status.1=Niedrig
47 | zone.20=Zugbr\u00FCcke
48 |
--------------------------------------------------------------------------------
/strings/StatusMessages_fr.utf8:
--------------------------------------------------------------------------------
1 | !! This file is part of MicropolisJ.
2 | !! Copyright (C) 2013 Jason Long
3 | !! Portions Copyright (C) 1989-2007 Electronic Arts Inc.
4 | !!
5 | !! MicropolisJ is free software; you can redistribute it and/or modify
6 | !! it under the terms of the GNU GPLv3, with additional terms.
7 | !! See the README file, included in this distribution, for details.
8 |
9 | !! French - France Translation by Benoît Gross June 2013
10 |
11 | zone.0 = Vierge
12 | zone.1 = Eau
13 | zone.2 = Arbres
14 | zone.3 = Gravas
15 | zone.4 = Inondation
16 | zone.5 = Déchets radioactifs
17 | zone.6 = Feu
18 | zone.7 = Route
19 | zone.8 = Énergie
20 | zone.9 = Rail
21 | zone.10 = Résidence
22 | zone.11 = Commerce
23 | zone.12 = Industrie
24 | zone.13 = Port maritime
25 | zone.14 = Aéroport
26 | zone.15 = Centrale au charbon
27 | zone.16 = Caserne de pompiers
28 | zone.17 = Poste de police
29 | zone.18 = Stade
30 | zone.19 = Centrale nucléaire
31 | zone.20 = Pont
32 | zone.21 = Radar
33 | zone.22 = Fontaine
34 | zone.23 = Industrie
35 | zone.24 = Olympique Métro 38 Barzeques 3
36 | zone.25 = Pont
37 | zone.26 = Uranium 238
38 | zone.27 =
39 |
40 | ! population density
41 | status.1 = Basse
42 | status.2 = Moyenne
43 | status.3 = Élevée
44 | status.4 = Très élevée
45 | ! land value
46 | status.5 = Bidonville
47 | status.6 = Classe populaire
48 | status.7 = Classe moyenne
49 | status.8 = Classe aisée
50 | ! crime level
51 | status.9 = Aucune
52 | status.10 = Légère
53 | status.11 = Modérée
54 | status.12 = Dangereuse
55 | ! pollution
56 | status.13 = Aucune
57 | status.14 = Modérée
58 | status.15 = Élevée
59 | status.16 = Très élevée
60 | ! growth rate
61 | status.17 = En déclin
62 | status.18 = Stable
63 | status.19 = Croissance lente
64 | status.20 = Croissance rapide
65 |
--------------------------------------------------------------------------------
/strings/StatusMessages_sv.properties:
--------------------------------------------------------------------------------
1 | #sv_SE
2 | #Sat Jun 15 18:46:11 CEST 2013
3 | zone.19=K\u00E4rnkraftverk
4 | zone.18=Arena
5 | zone.17=Polisstation
6 | zone.16=Brandstation
7 | zone.15=Kolkraftverk
8 | zone.14=Flygplats
9 | zone.13=Hamn
10 | zone.12=Industri
11 | zone.11=Aff\u00E4rer
12 | zone.10=Bost\u00E4der
13 | status.20=Snabb tillv\u00E4xt
14 | zone.9=J\u00E4rnv\u00E4g
15 | zone.8=Kraftledning
16 | zone.7=V\u00E4g
17 | zone.6=Eld
18 | status.19=L\u00E5ngsam tillv\u00E4xt
19 | zone.5=Radioaktivt avfall
20 | status.18=Stabil
21 | zone.4=\u00D6versv\u00E4mning
22 | status.17=P\u00E5 nedg\u00E5ng
23 | zone.3=Spillror
24 | status.16=V\u00E4ldigt tung
25 | zone.2=Tr\u00E4d
26 | status.15=Tung
27 | zone.1=Vatten
28 | status.14=Medel
29 | zone.0=Barmark
30 | status.13=Ingen
31 | status.12=Farlig
32 | status.11=Medel
33 | status.10=L\u00E4tt
34 | status.9=S\u00E4ker
35 | status.8=H\u00F6g
36 | status.7=Medelklass
37 | zone.26=U 238
38 | status.6=Arbetarklass
39 | zone.25=Sv\u00E4ngbro
40 | status.5=Obefintligt
41 | zone.24=Sverige 3 Danmark 0
42 | status.4=V\u00E4ldigt h\u00F6g
43 | zone.23=Industri
44 | status.3=H\u00F6g
45 | zone.22=Font\u00E4n
46 | status.2=Medel
47 | zone.21=Parabol
48 | status.1=L\u00E5g
49 | zone.20=Sv\u00E4ngbro
50 |
--------------------------------------------------------------------------------
/tiles/aliases.txt:
--------------------------------------------------------------------------------
1 | # In this file are tiles whose official names have changed.
2 | # Each entry consists of .
3 | # Whenever is found when loading a Micropolis save-file,
4 | # that tile will be mapped to automatically.
5 | #
6 |
7 | # old fire animation
8 | 57 56
9 | 58 56
10 | 59 56
11 | 60 56
12 | 61 56
13 | 62 56
14 | 63 56
15 | # light traffic
16 | 96 80
17 | 97 81
18 | 98 82
19 | 99 83
20 | 100 84
21 | 101 85
22 | 102 86
23 | 103 87
24 | 104 88
25 | 105 89
26 | 106 90
27 | 107 91
28 | 108 92
29 | 109 93
30 | 110 94
31 |
32 | 112 80
33 | 113 81
34 | 114 82
35 | 115 83
36 | 116 84
37 | 117 85
38 | 118 86
39 | 119 87
40 | 120 88
41 | 121 89
42 | 122 90
43 | 123 91
44 | 124 92
45 | 125 93
46 | 126 94
47 |
48 | 128 80
49 | 129 81
50 | 130 82
51 | 131 83
52 | 132 84
53 | 133 85
54 | 134 86
55 | 135 87
56 | 136 88
57 | 137 89
58 | 138 90
59 | 139 91
60 | 140 92
61 | 141 93
62 | 142 94
63 | 143 95
64 | # heavy traffic
65 | 160 144
66 | 161 145
67 | 162 146
68 | 163 147
69 | 164 148
70 | 165 149
71 | 166 150
72 | 167 151
73 | 168 152
74 | 169 153
75 | 170 154
76 | 171 155
77 | 172 156
78 | 173 157
79 | 174 158
80 |
81 | 176 144
82 | 177 145
83 | 178 146
84 | 179 147
85 | 180 148
86 | 181 149
87 | 182 150
88 | 183 151
89 | 184 152
90 | 185 153
91 | 186 154
92 | 187 155
93 | 188 156
94 | 189 157
95 | 190 158
96 |
97 | 192 144
98 | 193 145
99 | 194 146
100 | 195 147
101 | 196 148
102 | 197 149
103 | 198 150
104 | 199 151
105 | 200 152
106 | 201 153
107 | 202 154
108 | 203 155
109 | 204 156
110 | 205 157
111 | 206 158
112 | # radar dish animation
113 | 833 832
114 | 834 832
115 | 835 832
116 | 836 832
117 | 837 832
118 | 838 832
119 | 839 832
120 | # fountain animation
121 | 841 840
122 | 842 840
123 | 843 840
124 | # IND pistons animation
125 | 853 852
126 | 854 852
127 | 855 852
128 | 856 852
129 | 857 852
130 | 858 852
131 | 859 852
132 | # IND zone smoke animations
133 | 885 884
134 | 886 884
135 | 887 884
136 | 889 888
137 | 890 888
138 | 891 888
139 | 893 892
140 | 894 892
141 | 895 892
142 | 897 896
143 | 898 896
144 | 899 896
145 | 901 900
146 | 902 900
147 | 903 900
148 | 905 904
149 | 906 904
150 | 907 904
151 | 909 908
152 | 910 908
153 | 911 908
154 | 913 912
155 | 914 912
156 | 915 912
157 | # coal smoke animation
158 | 917 916
159 | 918 916
160 | 919 916
161 | 921 920
162 | 922 920
163 | 923 920
164 | 925 924
165 | 926 924
166 | 927 924
167 | 929 928
168 | 930 928
169 | 931 928
170 | # stadium animation
171 | 933 932
172 | 934 932
173 | 935 932
174 | 936 932
175 | 937 932
176 | 938 932
177 | 939 932
178 | 941 940
179 | 942 940
180 | 943 940
181 | 944 940
182 | 945 940
183 | 946 940
184 | 947 940
185 | # nuclear swirl
186 | 953 952
187 | 954 952
188 | 955 952
189 |
--------------------------------------------------------------------------------