source: src/mlx/i18n.py@ 117:af3d52b9adc4

Last change on this file since 117:af3d52b9adc4 was 117:af3d52b9adc4, checked in by István Váradi <ivaradi@…>, 12 years ago

Implemented the weight help tab

File size: 45.2 KB
Line 
1# Internationalization support
2# -*- coding: utf-8 -*-
3
4#------------------------------------------------------------------------------
5
6_strings = None
7_fallback = None
8
9#------------------------------------------------------------------------------
10
11def setLanguage(language):
12 """Setup the internationalization support for the given language."""
13 print "i18n.setLanguage", language
14 _Strings.set(language)
15
16#------------------------------------------------------------------------------
17
18def xstr(key):
19 """Get the string for the given key in the current language.
20
21 If not found, the fallback language is searched. If that is not found
22 either, the key itself is returned within curly braces."""
23 s = _Strings.current()[key]
24 if s is None:
25 s = _Strings.fallback()[key]
26 return "{" + key + "}" if s is None else s
27
28#------------------------------------------------------------------------------
29
30class _Strings(object):
31 """A collection of strings belonging to a certain language."""
32 # The registry of the string collections. This is a mapping from
33 # language codes to the actual collection objects
34 _instances = {}
35
36 # The fallback instance
37 _fallback = None
38
39 # The currently used instance.
40 _current = None
41
42 @staticmethod
43 def _find(language):
44 """Find an instance for the given language.
45
46 First the language is searched for as is. If not found, it is truncated
47 from the end until the last underscore and that is searched for. And so
48 on, until no underscore remains.
49
50 If nothing is found this way, the
51 """
52 while language:
53 if language in _Strings._instances:
54 return _Strings._instances[language]
55 underscoreIndex = language.rfind("_")
56 language = language[:underscoreIndex] if underscoreIndex>0 else ""
57 return _Strings._fallback
58
59 @staticmethod
60 def set(language):
61 """Set the string for the given language.
62
63 A String instance is searched for the given language (see
64 _Strings._find()). Otherwise the fallback language is used."""
65 strings = _Strings._find(language)
66 assert strings is not None
67 if _Strings._current is not None and \
68 _Strings._current is not _Strings._fallback:
69 _Strings._current.finalize()
70 if strings is not _Strings._fallback:
71 strings.initialize()
72 _Strings._current = strings
73
74 @staticmethod
75 def fallback():
76 """Get the fallback."""
77 return _Strings._fallback
78
79 @staticmethod
80 def current():
81 """Get the current."""
82 return _Strings._current
83
84 def __init__(self, languages, fallback = False):
85 """Construct an empty strings object."""
86 self._strings = {}
87 for language in languages:
88 _Strings._instances[language] = self
89 if fallback:
90 _Strings._fallback = self
91 self.initialize()
92
93 def initialize(self):
94 """Initialize the strings.
95
96 This should be overridden in children to setup the strings."""
97 pass
98
99 def finalize(self):
100 """Finalize the object.
101
102 This releases the string dictionary to free space."""
103 self._strings = {}
104
105 def add(self, id, s):
106 """Add the given text as the string with the given ID.
107
108 If the ID is already in the object, that is an assertion failure!"""
109 assert id not in self._strings
110 self._strings[id] = s
111
112 def __getitem__(self, key):
113 """Get the string with the given key."""
114 return self._strings[key] if key in self._strings else None
115
116#------------------------------------------------------------------------------
117
118class _English(_Strings):
119 """The strings for the English language."""
120 def __init__(self):
121 """Construct the object."""
122 super(_English, self).__init__(["en_GB", "en"], fallback = True)
123
124 def initialize(self):
125 """Initialize the strings."""
126 self.add("menu_file", "File")
127 self.add("menu_file_quit", "_Quit")
128 self.add("menu_file_quit_key", "q")
129 self.add("quit_question", "Are you sure to quit the logger?")
130
131 self.add("menu_view", "View")
132 self.add("menu_view_monitor", "Show _monitor window")
133 self.add("menu_view_monitor_key", "m")
134 self.add("menu_view_debug", "Show _debug log")
135 self.add("menu_view_debug_key", "d")
136
137 self.add("tab_flight", "_Flight")
138 self.add("tab_flight_tooltip", "Flight wizard")
139 self.add("tab_flight_info", "Flight _info")
140 self.add("tab_flight_info_tooltip", "Further information regarding the flight")
141 self.add("tab_weight_help", "_Help")
142 self.add("tab_weight_help_tooltip", "Help to calculate the weights")
143 self.add("tab_log", "_Log")
144 self.add("tab_log_tooltip",
145 "The log of your flight that will be sent to the MAVA website")
146 self.add("tab_gates", "_Gates")
147 self.add("tab_debug_log", "_Debug log")
148 self.add("tab_debug_log_tooltip", "Log with debugging information.")
149
150 self.add("conn_failed", "Cannot connect to the simulator.")
151 self.add("conn_failed_sec",
152 "Rectify the situation, and press <b>Try again</b> "
153 "to try the connection again, "
154 "or <b>Cancel</b> to cancel the flight.")
155 self.add("conn_broken",
156 "The connection to the simulator failed unexpectedly.")
157 self.add("conn_broken_sec",
158 "If the simulator has crashed, restart it "
159 "and restore your flight as much as possible "
160 "to the state it was in before the crash. "
161 "Then press <b>Reconnect</b> to reconnect.\n\n"
162 "If you want to cancel the flight, press <b>Cancel</b>.")
163 self.add("button_cancel", "_Cancel")
164 self.add("button_tryagain", "_Try again")
165 self.add("button_reconnect", "_Reconnect")
166
167 self.add("login", "Login")
168 self.add("loginHelp",
169 "Enter your MAVA pilot's ID and password to\n" \
170 "log in to the MAVA website and download\n" \
171 "your booked flights.")
172 self.add("label_pilotID", "Pil_ot ID:")
173 self.add("login_pilotID_tooltip",
174 "Enter your MAVA pilot's ID. This usually starts with a "
175 "'P' followed by 3 digits.")
176 self.add("label_password", "_Password:")
177 self.add("login_password_tooltip",
178 "Enter the password for your pilot's ID")
179 self.add("remember_password", "_Remember password")
180 self.add("login_remember_tooltip",
181 "If checked, your password will be stored, so that you should "
182 "not have to enter it every time. Note, however, that the password "
183 "is stored as text, and anybody who can access your files will "
184 "be able to read it.")
185 self.add("button_login", "Logi_n")
186 self.add("login_button_tooltip", "Click to log in.")
187 self.add("login_busy", "Logging in...")
188 self.add("login_invalid", "Invalid pilot's ID or password.")
189 self.add("login_invalid_sec",
190 "Check the ID and try to reenter the password.")
191 self.add("login_failconn",
192 "Failed to connect to the MAVA website.")
193 self.add("login_failconn_sec", "Try again in a few minutes.")
194
195 self.add("button_next", "_Next")
196 self.add("button_next_tooltip", "Click to go to the next page.")
197 self.add("button_previous", "_Previous")
198 self.add("button_previous_tooltip", "Click to go to the previous page.")
199
200 self.add("flightsel_title", "Flight selection")
201 self.add("flightsel_help", "Select the flight you want to perform.")
202 self.add("flightsel_chelp", "You have selected the flight highlighted below.")
203 self.add("flightsel_no", "Flight no.")
204 self.add("flightsel_deptime", "Departure time [UTC]")
205 self.add("flightsel_from", "From")
206 self.add("flightsel_to", "To")
207
208 self.add("fleet_busy", "Retrieving fleet...")
209 self.add("fleet_failed",
210 "Failed to retrieve the information on the fleet.")
211 self.add("fleet_update_busy", "Updating plane status...")
212 self.add("fleet_update_failed",
213 "Failed to update the status of the airplane.")
214
215 self.add("gatesel_title", "LHBP gate selection")
216 self.add("gatesel_help",
217 "The airplane's gate position is invalid.\n\n" \
218 "Select the gate from which you\n" \
219 "would like to begin the flight.")
220 self.add("gatesel_conflict", "Gate conflict detected again.")
221 self.add("gatesel_conflict_sec",
222 "Try to select a different gate.")
223
224 self.add("connect_title", "Connect to the simulator")
225 self.add("connect_help",
226 "Load the aircraft below into the simulator and park it\n" \
227 "at the given airport, at the gate below, if present.\n\n" \
228 "Then press the Connect button to connect to the simulator.")
229 self.add("connect_chelp",
230 "The basic data of your flight can be read below.")
231 self.add("connect_flightno", "Flight number:")
232 self.add("connect_acft", "Aircraft:")
233 self.add("connect_tailno", "Tail number:")
234 self.add("connect_airport", "Airport:")
235 self.add("connect_gate", "Gate:")
236 self.add("button_connect", "_Connect")
237 self.add("button_connect_tooltip", "Click to connect to the simulator.")
238 self.add("connect_busy", "Connecting to the simulator...")
239
240 self.add("payload_title", "Payload")
241 self.add("payload_help",
242 "The briefing contains the weights below.\n" \
243 "Setup the cargo weight here and the payload weight "
244 "in the simulator.\n\n" \
245 "You can also check here what the simulator reports as ZFW.")
246 self.add("payload_chelp",
247 "You can see the weights in the briefing\n" \
248 "and the cargo weight you have selected below.\n\n" \
249 "You can also query the ZFW reported by the simulator.")
250 self.add("payload_crew", "Crew:")
251 self.add("payload_pax", "Passengers:")
252 self.add("payload_bag", "Baggage:")
253 self.add("payload_cargo", "_Cargo:")
254 self.add("payload_cargo_tooltip",
255 "The weight of the cargo for your flight.")
256 self.add("payload_mail", "Mail:")
257 self.add("payload_zfw", "Calculated ZFW:")
258 self.add("payload_fszfw", "_ZFW from FS:")
259 self.add("payload_fszfw_tooltip",
260 "Click here to refresh the ZFW value from the simulator.")
261 self.add("payload_zfw_busy", "Querying ZFW...")
262
263 self.add("time_title", "Time")
264 self.add("time_help",
265 "The departure and arrival times are displayed below in UTC.\n\n" \
266 "You can also query the current UTC time from the simulator.\n" \
267 "Ensure that you have enough time to properly prepare for the flight.")
268 self.add("time_chelp",
269 "The departure and arrival times are displayed below in UTC.\n\n" \
270 "You can also query the current UTC time from the simulator.\n")
271 self.add("time_departure", "Departure:")
272 self.add("time_arrival", "Arrival:")
273 self.add("time_fs", "_Time from FS:")
274 self.add("time_fs_tooltip",
275 "Click here to query the current UTC time from the simulator.")
276 self.add("time_busy", "Querying time...")
277
278 self.add("route_title", "Route")
279 self.add("route_help",
280 "Set your cruise flight level below, and\n" \
281 "if necessary, edit the flight plan.")
282 self.add("route_chelp",
283 "If necessary, you can modify the cruise level and\n" \
284 "the flight plan below during flight.\n" \
285 "If so, please, add a comment on why " \
286 "the modification became necessary.")
287 self.add("route_level", "_Cruise level:")
288 self.add("route_level_tooltip",
289 "The cruise flight level. Click on the arrows to increment "
290 "or decrement by 10, or enter the number on the keyboard.")
291 self.add("route_route", "_Route")
292 self.add("route_route_tooltip",
293 "The planned flight route in the standard format.")
294 self.add("route_down_notams", "Downloading NOTAMs...")
295 self.add("route_down_metars", "Downloading METARs...")
296
297 self.add("briefing_title", "Briefing (%d/2): %s")
298 self.add("briefing_departure", "departure")
299 self.add("briefing_arrival", "arrival")
300 self.add("briefing_help",
301 "Read carefully the NOTAMs and METAR below.\n\n" \
302 "You can edit the METAR if your simulator or network\n" \
303 "provides different weather.")
304 self.add("briefing_chelp",
305 "If your simulator or network provides a different\n" \
306 "weather, you can edit the METAR below.")
307 self.add("briefing_notams_init", "LHBP NOTAMs")
308 self.add("briefing_metar_init", "LHBP METAR")
309 self.add("briefing_button",
310 "I have read the briefing and am _ready to fly!")
311 self.add("briefing_notams_template", "%s NOTAMs")
312 self.add("briefing_metar_template", "%s _METAR")
313 self.add("briefing_notams_failed", "Could not download NOTAMs")
314 self.add("briefing_notams_missing",
315 "Could not download NOTAM for this airport")
316 self.add("briefing_metar_failed", "Could not download METAR")
317
318 self.add("takeoff_title", "Takeoff")
319 self.add("takeoff_help",
320 "Enter the runway and SID used, as well as the speeds.")
321 self.add("takeoff_chelp",
322 "The runway, SID and takeoff speeds logged can be seen below.")
323 self.add("takeoff_runway", "Run_way:")
324 self.add("takeoff_runway_tooltip",
325 "The runway the takeoff is performed from.")
326 self.add("takeoff_sid", "_SID:")
327 self.add("takeoff_sid_tooltip",
328 "The name of the Standard Instrument Deparature procedure followed.")
329 self.add("takeoff_v1", "V<sub>_1</sub>:")
330 self.add("takeoff_v1_tooltip", "The takeoff decision speed in knots.")
331 self.add("label_knots", "knots")
332 self.add("takeoff_vr", "V<sub>_R</sub>:")
333 self.add("takeoff_vr_tooltip", "The takeoff rotation speed in knots.")
334 self.add("takeoff_v2", "V<sub>_2</sub>:")
335 self.add("takeoff_v2_tooltip", "The takeoff safety speed in knots.")
336
337 self.add("landing_title", "Landing")
338 self.add("landing_help",
339 "Enter the STAR and/or transition, runway,\n" \
340 "approach type and V<sub>Ref</sub> used.")
341 self.add("landing_chelp",
342 "The STAR and/or transition, runway, approach\n" \
343 "type and V<sub>Ref</sub> logged can be seen below.")
344 self.add("landing_star", "_STAR:")
345 self.add("landing_star_tooltip",
346 "The name of Standard Terminal Arrival Route followed.")
347 self.add("landing_transition", "_Transition:")
348 self.add("landing_transition_tooltip",
349 "The name of transition executed or VECTORS if vectored by ATC.")
350 self.add("landing_runway", "Run_way:")
351 self.add("landing_runway_tooltip",
352 "The runway the landing is performed on.")
353 self.add("landing_approach", "_Approach type:")
354 self.add("landing_approach_tooltip",
355 "The type of the approach, e.g. ILS or VISUAL.")
356 self.add("landing_vref", "V<sub>_Ref</sub>:")
357 self.add("landing_vref_tooltip",
358 "The landing reference speed in knots.")
359
360 self.add("flighttype_scheduled", "scheduled")
361 self.add("flighttype_ot", "old-timer")
362 self.add("flighttype_vip", "VIP")
363 self.add("flighttype_charter", "charter")
364
365 self.add("finish_title", "Finish")
366 self.add("finish_help",
367 "There are some statistics about your flight below.\n\n" \
368 "Review the data, also on earlier pages, and if you are\n" \
369 "satisfied, you can save or send your PIREP.")
370 self.add("finish_rating", "Flight rating:")
371 self.add("finish_flight_time", "Flight time:")
372 self.add("finish_block_time", "Block time:")
373 self.add("finish_distance", "Distance flown:")
374 self.add("finish_fuel", "Fuel used:")
375 self.add("finish_type", "_Type:")
376 self.add("finish_type_tooltip", "Select the type of the flight.")
377 self.add("finish_online", "_Online flight")
378 self.add("finish_online_tooltip",
379 "Check if your flight was online, uncheck otherwise.")
380 self.add("finish_save", "S_ave PIREP...")
381 self.add("finish_save_tooltip",
382 "Click to save the PIREP into a file on your computer. " \
383 "The PIREP can be loaded and sent later.")
384 self.add("finish_send", "_Send PIREP...")
385 self.add("finish_send_tooltip",
386 "Click to send the PIREP to the MAVA website for further review.")
387 self.add("finish_send_busy", "Sending PIREP...")
388 self.add("finish_send_success",
389 "The PIREP was sent successfully.")
390 self.add("finish_send_success_sec",
391 "Await the thorough scrutiny by our fearless PIREP reviewers! :)")
392 self.add("finish_send_already",
393 "The PIREP for this flight has already been sent!")
394 self.add("finish_send_already_sec",
395 "You may clear the old PIREP on the MAVA website.")
396 self.add("finish_send_notavail",
397 "This flight is not available anymore!")
398 self.add("finish_send_unknown",
399 "The MAVA website returned with an unknown error.")
400 self.add("finish_send_unknown_sec",
401 "See the debug log for more information.")
402 self.add("finish_send_failed",
403 "Could not send the PIREP to the MAVA website.")
404 self.add("finish_send_failed_sec",
405 "This can be a network problem, in which case\n" \
406 "you may try again later. Or it can be a bug;\n" \
407 "see the debug log for more information.")
408
409 # C D
410
411 self.add("info_comments", "_Comments")
412 self.add("info_defects", "Flight _defects")
413 self.add("info_delay", "Delay codes")
414
415 # O V N E Y T R A W P
416
417 self.add("info_delay_loading", "L_oading problems")
418 self.add("info_delay_vatsim", "_VATSIM problem")
419 self.add("info_delay_net", "_Net problems")
420 self.add("info_delay_atc", "Controll_er's fault")
421 self.add("info_delay_system", "S_ystem crash/freeze")
422 self.add("info_delay_nav", "Naviga_tion problem")
423 self.add("info_delay_traffic", "T_raffic problems")
424 self.add("info_delay_apron", "_Apron navigation problem")
425 self.add("info_delay_weather", "_Weather problems")
426 self.add("info_delay_personal", "_Personal reasons")
427
428 self.add("statusbar_conn_tooltip",
429 'The state of the connection.\n'
430 '<span foreground="grey">Grey</span> means idle.\n'
431 '<span foreground="red">Red</span> means trying to connect.\n'
432 '<span foreground="green">Green</span> means connected.')
433 self.add("statusbar_stage_tooltip", "The flight stage")
434 self.add("statusbar_time_tooltip", "The simulator time in UTC")
435 self.add("statusbar_rating_tooltip", "The flight rating")
436 self.add("statusbar_busy_tooltip", "The status of the background tasks.")
437
438 self.add("flight_stage_boarding", "boarding")
439 self.add("flight_stage_pushback and taxi", "pushback and taxi")
440 self.add("flight_stage_takeoff", "takeoff")
441 self.add("flight_stage_RTO", "RTO")
442 self.add("flight_stage_climb", "climb")
443 self.add("flight_stage_cruise", "cruise")
444 self.add("flight_stage_descent", "descent")
445 self.add("flight_stage_landing", "landing")
446 self.add("flight_stage_taxi", "taxi")
447 self.add("flight_stage_parking", "parking")
448 self.add("flight_stage_go-around", "go-around")
449 self.add("flight_stage_end", "end")
450
451 self.add("statusicon_showmain", "Show main window")
452 self.add("statusicon_showmonitor", "Show monitor window")
453 self.add("statusicon_quit", "Quit")
454 self.add("statusicon_stage", "Stage:")
455 self.add("statusicon_rating", "Rating:")
456
457 self.add("update_title", "Update")
458 self.add("update_needsudo",
459 "There is an update available, but the program cannot write\n"
460 "its directory due to insufficient privileges.\n\n"
461 "Click OK, if you want to run a helper program\n"
462 "with administrator privileges "
463 "to complete the update,\n"
464 "Cancel otherwise.")
465 self.add("update_manifest_progress", "Downloading manifest...")
466 self.add("update_manifest_done", "Downloaded manifest...")
467 self.add("update_files_progress", "Downloading files...")
468 self.add("update_files_bytes", "Downloaded %d of %d bytes")
469 self.add("update_renaming", "Renaming downloaded files...")
470 self.add("update_renamed", "Renamed %s")
471 self.add("update_removing", "Removing files...")
472 self.add("update_removed", "Removed %s")
473 self.add("update_writing_manifest", "Writing the new manifest")
474 self.add("update_finished",
475 "Finished updating. Press OK to restart the program.")
476 self.add("update_nothing", "There was nothing to update")
477 self.add("update_failed", "Failed, see the debug log for details.")
478
479 self.add("weighthelp_usinghelp", "_Using help")
480 self.add("weighthelp_usinghelp_tooltip",
481 "If you check this, some help will be displayed on how "
482 "to calculate the payload weight for your flight. "
483 "Note, that the usage of this facility will be logged.")
484 self.add("weighthelp_header_calculated", "Requested/\ncalculated")
485 self.add("weighthelp_header_simulator", "Simulator\ndata")
486 self.add("weighthelp_header_simulator_tooltip",
487 "Click this button to retrieve the weight values from the "
488 "simulator, which will be displayed below. If a value is "
489 "within 10% of the tolerance, it is displayed in "
490 '<b><span foreground="darkgreen">green</span></b>, '
491 "if it is out of the tolerance, it is displayed in "
492 '<b><span foreground="red">red</span></b>, '
493 "otherwise in"
494 '<b><span foreground="orange">yellow</span></b>.')
495 self.add("weighthelp_crew", "Crew (%s):")
496 self.add("weighthelp_pax", "Passengers (%s):")
497 self.add("weighthelp_baggage", "Baggage:")
498 self.add("weighthelp_cargo", "Cargo:")
499 self.add("weighthelp_mail", "Mail:")
500 self.add("weighthelp_payload", "Payload:")
501 self.add("weighthelp_dow", "DOW:")
502 self.add("weighthelp_zfw", "ZFW:")
503 self.add("weighthelp_gross", "Gross weight:")
504 self.add("weighthelp_mzfw", "MZFW:")
505 self.add("weighthelp_mtow", "MTOW:")
506 self.add("weighthelp_mlw", "MLW:")
507 self.add("weighthelp_busy", "Querying weight data...")
508
509#------------------------------------------------------------------------------
510
511class _Hungarian(_Strings):
512 """The strings for the Hungarian language."""
513 def __init__(self):
514 """Construct the object."""
515 super(_Hungarian, self).__init__(["hu_HU", "hu"])
516
517 def initialize(self):
518 """Initialize the strings."""
519 self.add("menu_file", "Fájl")
520 self.add("menu_file_quit", "_Kilépés")
521 self.add("menu_file_quit_key", "k")
522 self.add("quit_question", "Biztosan ki akarsz lépni?")
523
524 self.add("menu_view", "Nézet")
525 self.add("menu_view_monitor", "Mutasd a _monitor ablakot")
526 self.add("menu_view_monitor_key", "m")
527 self.add("menu_view_debug", "Mutasd a _debug naplót")
528 self.add("menu_view_debug_key", "d")
529
530 self.add("tab_flight", "_Járat")
531 self.add("tab_flight_tooltip", "Járat varázsló")
532 self.add("tab_flight_info", "Járat _info")
533 self.add("tab_flight_info_tooltip", "Egyéb információk a járat teljesítésével kapcsolatban")
534 self.add("tab_weight_help", "_Segítség")
535 self.add("tab_weight_help_tooltip", "Segítség a súlyszámításhoz")
536 self.add("tab_log", "_Napló")
537 self.add("tab_log_tooltip",
538 "A járat naplója, amit majd el lehet küldeni a MAVA szerverére")
539 self.add("tab_debug_log", "_Debug napló")
540 self.add("tab_debug_log_tooltip",
541 "Hibakereséshez használható információkat tartalmazó napló.")
542 self.add("tab_gates", "_Kapuk")
543
544 self.add("conn_failed", "Nem tudtam kapcsolódni a szimulátorhoz.")
545 self.add("conn_failed_sec",
546 "Korrigáld a problémát, majd nyomd meg az "
547 "<b>Próbáld újra</b> gombot a újrakapcsolódáshoz, "
548 "vagy a <b>Mégse</b> gombot a járat megszakításához.")
549 self.add("conn_broken",
550 "A szimulátorral való kapcsolat váratlanul megszakadt.")
551 self.add("conn_broken_sec",
552 "Ha a szimulátor elszállt, indítsd újra "
553 "és állítsd vissza a repülésed elszállás előtti "
554 "állapotát amennyire csak lehet. "
555 "Ezután nyomd meg az <b>Újrakapcsolódás</b> gombot "
556 "a kapcsolat ismételt felvételéhez.\n\n"
557 "Ha meg akarod szakítani a repülést, nyomd meg a "
558 "<b>Mégse</b> gombot.")
559 self.add("button_cancel", "_Mégse")
560 self.add("button_tryagain", "_Próbáld újra")
561 self.add("button_reconnect", "Újra_kapcsolódás")
562
563 self.add("login", "Bejelentkezés")
564 self.add("loginHelp",
565 "Írd be a MAVA pilóta azonosítódat és a\n" \
566 "bejelentkezéshez használt jelszavadat,\n" \
567 "hogy választhass a foglalt járataid közül.")
568 self.add("label_pilotID", "_Azonosító:")
569 self.add("login_pilotID_tooltip",
570 "Írd be a MAVA pilóta azonosítódat. Ez általában egy 'P' "
571 "betűvel kezdődik, melyet 3 számjegy követ.")
572 self.add("label_password", "Je_lszó:")
573 self.add("login_password_tooltip",
574 "Írd be a pilóta azonosítódhoz tartozó jelszavadat.")
575 self.add("remember_password", "_Emlékezz a jelszóra")
576 self.add("login_remember_tooltip",
577 "Ha ezt kiválasztod, a jelszavadat eltárolja a program, így "
578 "nem kell mindig újból beírnod. Vedd azonban figyelembe, "
579 "hogy a jelszót szövegként tároljuk, így bárki elolvashatja, "
580 "aki hozzáfér a fájljaidhoz.")
581 self.add("button_login", "_Bejelentkezés")
582 self.add("login_button_tooltip", "Kattints ide a bejelentkezéshez.")
583 self.add("login_busy", "Bejelentkezés...")
584 self.add("login_invalid", "Érvénytelen azonosító vagy jelszó.")
585 self.add("login_invalid_sec",
586 "Ellenőrízd az azonosítót, és próbáld meg újra beírni a jelszót.")
587 self.add("login_failconn",
588 "Nem sikerült kapcsolódni a MAVA honlaphoz.")
589 self.add("login_failconn_sec", "Próbáld meg pár perc múlva.")
590
591 self.add("button_next", "_Előre")
592 self.add("button_next_tooltip",
593 "Kattints ide, hogy a következő lapra ugorj.")
594 self.add("button_previous", "_Vissza")
595 self.add("button_previous_tooltip",
596 "Kattints ide, hogy az előző lapra ugorj.")
597
598 self.add("flightsel_title", "Járatválasztás")
599 self.add("flightsel_help", "Válaszd ki a járatot, amelyet le szeretnél repülni.")
600 self.add("flightsel_chelp", "A lent kiemelt járatot választottad.")
601 self.add("flightsel_no", "Járatszám")
602 self.add("flightsel_deptime", "Indulás ideje [UTC]")
603 self.add("flightsel_from", "Honnan")
604 self.add("flightsel_to", "Hová")
605
606 self.add("fleet_busy", "Flottaadatok letöltése...")
607 self.add("fleet_failed",
608 "Nem sikerült letöltenem a flotta adatait.")
609 self.add("fleet_update_busy", "Repülőgép pozíció frissítése...")
610 self.add("fleet_update_failed",
611 "Nem sikerült frissítenem a repülőgép pozícióját.")
612
613 self.add("gatesel_title", "LHBP kapuválasztás")
614 self.add("gatesel_help",
615 "A repülőgép kapu pozíciója érvénytelen.\n\n" \
616 "Válaszd ki azt a kaput, ahonnan\n" \
617 "el szeretnéd kezdeni a járatot.")
618 self.add("gatesel_conflict", "Ismét kapuütközés történt.")
619 self.add("gatesel_conflict_sec",
620 "Próbálj egy másik kaput választani.")
621
622 self.add("connect_title", "Kapcsolódás a szimulátorhoz")
623 self.add("connect_help",
624 "Tölsd be a lent látható repülőgépet a szimulátorba\n" \
625 "az alább megadott reptérre és kapuhoz.\n\n" \
626 "Ezután nyomd meg a Kapcsolódás gombot a kapcsolódáshoz.")
627 self.add("connect_chelp",
628 "A járat alapadatai lent olvashatók.")
629 self.add("connect_flightno", "Járatszám:")
630 self.add("connect_acft", "Típus:")
631 self.add("connect_tailno", "Lajstromjel:")
632 self.add("connect_airport", "Repülőtér:")
633 self.add("connect_gate", "Kapu:")
634 self.add("button_connect", "K_apcsolódás")
635 self.add("button_connect_tooltip",
636 "Kattints ide a szimulátorhoz való kapcsolódáshoz.")
637 self.add("connect_busy", "Kapcsolódás a szimulátorhoz...")
638
639 self.add("payload_title", "Terhelés")
640 self.add("payload_help",
641 "Az eligazítás az alábbi tömegeket tartalmazza.\n" \
642 "Allítsd be a teherszállítmány tömegét itt, a hasznos "
643 "terhet pedig a szimulátorban.\n\n" \
644 "Azt is ellenőrízheted, hogy a szimulátor milyen ZFW-t jelent.")
645 self.add("payload_chelp",
646 "Lent láthatók az eligazításban szereplő tömegek, valamint\n" \
647 "a teherszállítmány általad megadott tömege.\n\n" \
648 "Azt is ellenőrízheted, hogy a szimulátor milyen ZFW-t jelent.")
649 self.add("payload_crew", "Legénység:")
650 self.add("payload_pax", "Utasok:")
651 self.add("payload_bag", "Poggyász:")
652 self.add("payload_cargo", "_Teher:")
653 self.add("payload_cargo_tooltip",
654 "A teherszállítmány tömege.")
655 self.add("payload_mail", "Posta:")
656 self.add("payload_zfw", "Kiszámolt ZFW:")
657 self.add("payload_fszfw", "_ZFW a szimulátorból:")
658 self.add("payload_fszfw_tooltip",
659 "Kattints ide, hogy frissítsd a ZFW értékét a szimulátorból.")
660 self.add("payload_zfw_busy", "ZFW lekérdezése...")
661
662 self.add("time_title", "Menetrend")
663 self.add("time_help",
664 "Az indulás és az érkezés ideje lent látható UTC szerint.\n\n" \
665 "A szimulátor aktuális UTC szerinti idejét is lekérdezheted.\n" \
666 "Győzödj meg arról, hogy elég időd van a repülés előkészítéséhez.")
667 self.add("time_chelp",
668 "Az indulás és az érkezés ideje lent látható UTC szerint.\n\n" \
669 "A szimulátor aktuális UTC szerinti idejét is lekérdezheted.")
670 self.add("time_departure", "Indulás:")
671 self.add("time_arrival", "Érkezés:")
672 self.add("time_fs", "Idő a s_zimulátorból:")
673 self.add("time_fs_tooltip",
674 "Kattings ide, hogy frissítsd a szimulátor aktuális UTC szerint idejét.")
675 self.add("time_busy", "Idő lekérdezése...")
676
677 self.add("route_title", "Útvonal")
678 self.add("route_help",
679 "Állítsd be az utazószintet lent, és ha szükséges,\n" \
680 "módosítsd az útvonaltervet.")
681 self.add("route_chelp",
682 "Ha szükséges, lent módosíthatod az utazószintet és\n" \
683 "az útvonaltervet repülés közben is.\n" \
684 "Ha így teszel, légy szíves a megjegyzés mezőben " \
685 "ismertesd ennek okát.")
686 self.add("route_level", "_Utazószint:")
687 self.add("route_level_tooltip", "Az utazószint.")
688 self.add("route_route", "Út_vonal")
689 self.add("route_route_tooltip", "Az útvonal a szokásos formátumban.")
690 self.add("route_down_notams", "NOTAM-ok letöltése...")
691 self.add("route_down_metars", "METAR-ok letöltése...")
692
693 self.add("briefing_title", "Eligazítás (%d/2): %s")
694 self.add("briefing_departure", "indulás")
695 self.add("briefing_arrival", "érkezés")
696 self.add("briefing_help",
697 "Olvasd el figyelmesen a lenti NOTAM-okat és METAR-t.\n\n" \
698 "Ha a szimulátor vagy hálózat más időjárást ad,\n" \
699 "a METAR-t módosíthatod.")
700 self.add("briefing_chelp",
701 "Ha a szimulátor vagy hálózat más időjárást ad,\n" \
702 "a METAR-t módosíthatod.")
703 self.add("briefing_notams_init", "LHBP NOTAM-ok")
704 self.add("briefing_metar_init", "LHBP METAR")
705 self.add("briefing_button",
706 "Elolvastam az eligazítást, és készen állok a _repülésre!")
707 self.add("briefing_notams_template", "%s NOTAM-ok")
708 self.add("briefing_metar_template", "%s _METAR")
709 self.add("briefing_notams_failed", "Nem tudtam letölteni a NOTAM-okat.")
710 self.add("briefing_notams_missing",
711 "Ehhez a repülőtérhez nem találtam NOTAM-ot.")
712 self.add("briefing_metar_failed", "Nem tudtam letölteni a METAR-t.")
713
714 self.add("takeoff_title", "Felszállás")
715 self.add("takeoff_help",
716 "Írd be a felszállásra használt futópálya és SID nevét, valamint a sebességeket.")
717 self.add("takeoff_chelp",
718 "A naplózott futópálya, SID és a sebességek lent olvashatók.")
719 self.add("takeoff_runway", "_Futópálya:")
720 self.add("takeoff_runway_tooltip",
721 "A felszállásra használt futópálya.")
722 self.add("takeoff_sid", "_SID:")
723 self.add("takeoff_sid_tooltip",
724 "Az alkalmazott szabványos műszeres indulási eljárás neve.")
725 self.add("takeoff_v1", "V<sub>_1</sub>:")
726 self.add("takeoff_v1_tooltip", "Az elhatározási sebesség csomóban.")
727 self.add("label_knots", "csomó")
728 self.add("takeoff_vr", "V<sub>_R</sub>:")
729 self.add("takeoff_vr_tooltip", "Az elemelkedési sebesség csomóban.")
730 self.add("takeoff_v2", "V<sub>_2</sub>:")
731 self.add("takeoff_v2_tooltip", "A biztonságos emelkedési sebesség csomóban.")
732
733 self.add("landing_title", "Leszállás")
734 self.add("landing_help",
735 "Írd be az alkalmazott STAR és/vagy bevezetési eljárás nevét,\n"
736 "a használt futópályát, a megközelítés módját, és a V<sub>Ref</sub>-et.")
737 self.add("landing_chelp",
738 "Az alkalmazott STAR és/vagy bevezetési eljárás neve, a használt\n"
739 "futópálya, a megközelítés módja és a V<sub>Ref</sub> lent olvasható.")
740 self.add("landing_star", "_STAR:")
741 self.add("landing_star_tooltip",
742 "A követett szabványos érkezési eljárás neve.")
743 self.add("landing_transition", "_Bevezetés:")
744 self.add("landing_transition_tooltip",
745 "Az alkalmazott bevezetési eljárás neve, vagy VECTORS, "
746 "ha az irányítás vezetett be.")
747 self.add("landing_runway", "_Futópálya:")
748 self.add("landing_runway_tooltip",
749 "A leszállásra használt futópálya.")
750 self.add("landing_approach", "_Megközelítés típusa:")
751 self.add("landing_approach_tooltip",
752 "A megközelítgés típusa, pl. ILS vagy VISUAL.")
753 self.add("landing_vref", "V<sub>_Ref</sub>:")
754 self.add("landing_vref_tooltip",
755 "A leszállási sebesség csomóban.")
756
757 self.add("flighttype_scheduled", "menetrendszerinti")
758 self.add("flighttype_ot", "old-timer")
759 self.add("flighttype_vip", "VIP")
760 self.add("flighttype_charter", "charter")
761
762 self.add("finish_title", "Lezárás")
763 self.add("finish_help",
764 "Lent olvasható némi statisztika a járat teljesítéséről.\n\n" \
765 "Ellenőrízd az adatokat, az előző oldalakon is, és ha\n" \
766 "megfelelnek, elmentheted vagy elküldheted a PIREP-et.")
767 self.add("finish_rating", "Pontszám:")
768 self.add("finish_flight_time", "Repülési idő:")
769 self.add("finish_block_time", "Blokk idő:")
770 self.add("finish_distance", "Repült táv:")
771 self.add("finish_fuel", "Elhasznált üzemanyag:")
772 self.add("finish_type", "_Típus:")
773 self.add("finish_type_tooltip", "Válaszd ki a repülés típusát.")
774 self.add("finish_online", "_Online repülés")
775 self.add("finish_online_tooltip",
776 "Jelöld be, ha a repülésed a hálózaton történt, egyébként " \
777 "szűntesd meg a kijelölést.")
778 self.add("finish_save", "PIREP _mentése...")
779 self.add("finish_save_tooltip",
780 "Kattints ide, hogy elmenthesd a PIREP-et egy fájlba a számítógépeden. " \
781 "A PIREP-et később be lehet tölteni és el lehet küldeni.")
782 self.add("finish_send", "PIREP _elküldése...")
783 self.add("finish_send_tooltip",
784 "Kattints ide, hogy elküldd a PIREP-et a MAVA szerverére javításra.")
785 self.add("finish_send_busy", "PIREP küldése...")
786 self.add("finish_send_success",
787 "A PIREP elküldése sikeres volt.")
788 self.add("finish_send_success_sec",
789 "Várhatod félelmet nem ismerő PIREP javítóink alapos észrevételeit! :)")
790 self.add("finish_send_already",
791 "Ehhez a járathoz már küldtél be PIREP-et!")
792 self.add("finish_send_already_sec",
793 "A korábban beküldött PIREP-et törölheted a MAVA honlapján.")
794 self.add("finish_send_notavail",
795 "Ez a járat már nem elérhető!")
796 self.add("finish_send_unknown",
797 "A MAVA szervere ismeretlen hibaüzenettel tért vissza.")
798 self.add("finish_send_unknown_sec",
799 "A debug naplóban részletesebb információt találsz.")
800 self.add("finish_send_failed",
801 "Nem tudtam elküldeni a PIREP-et a MAVA szerverére.")
802 self.add("finish_send_failed_sec",
803 "Lehet, hogy hálózati probléma áll fenn, amely esetben később\n" \
804 "újra próbálkozhatsz. Lehet azonban hiba is a loggerben:\n" \
805 "részletesebb információt találhatsz a debug naplóban.")
806
807 # M A
808
809 self.add("info_comments", "_Megjegyzések")
810 self.add("info_defects", "Hib_ajelenségek")
811 self.add("info_delay", "Késés kódok")
812
813 # B V H Y R G F E P Z
814
815 self.add("info_delay_loading", "_Betöltési problémák")
816 self.add("info_delay_vatsim", "_VATSIM probléma")
817 self.add("info_delay_net", "_Hálózati problémák")
818 self.add("info_delay_atc", "Irán_yító hibája")
819 self.add("info_delay_system", "_Rendszer elszállás/fagyás")
820 self.add("info_delay_nav", "Navi_gációs probléma")
821 self.add("info_delay_traffic", "_Forgalmi problémák")
822 self.add("info_delay_apron", "_Előtér navigációs probléma")
823 self.add("info_delay_weather", "Időjárási _problémák")
824 self.add("info_delay_personal", "S_zemélyes okok")
825
826 self.add("statusbar_conn_tooltip",
827 'A kapcsolat állapota.\n'
828 '<span foreground="grey">Szürke</span>: nincs kapcsolat.\n'
829 '<span foreground="red">Piros</span>: kapcsolódás folyamatban.\n'
830 '<span foreground="green">Zöld</span>: a kapcsolat él.')
831 self.add("statusbar_stage_tooltip", "A repülés fázisa")
832 self.add("statusbar_time_tooltip", "A szimulátor ideje UTC-ben")
833 self.add("statusbar_rating_tooltip", "A repülés pontszáma")
834 self.add("statusbar_busy_tooltip", "A háttérfolyamatok állapota.")
835
836 self.add("flight_stage_boarding", u"beszállás")
837 self.add("flight_stage_pushback and taxi", u"hátratolás és kigurulás")
838 self.add("flight_stage_takeoff", u"felszállás")
839 self.add("flight_stage_RTO", u"megszakított felszállás")
840 self.add("flight_stage_climb", u"emelkedés")
841 self.add("flight_stage_cruise", u"utazó")
842 self.add("flight_stage_descent", u"süllyedés")
843 self.add("flight_stage_landing", u"leszállás")
844 self.add("flight_stage_taxi", u"begurulás")
845 self.add("flight_stage_parking", u"parkolás")
846 self.add("flight_stage_go-around", u"átstartolás")
847 self.add("flight_stage_end", u"kész")
848
849 self.add("statusicon_showmain", "Mutasd a főablakot")
850 self.add("statusicon_showmonitor", "Mutasd a monitor ablakot")
851 self.add("statusicon_quit", "Kilépés")
852 self.add("statusicon_stage", "Fázis:")
853 self.add("statusicon_rating", "Pontszám:")
854
855 self.add("update_title", "Frissítés")
856 self.add("update_needsudo",
857 "Lenne mit frissíteni, de a program hozzáférési jogok\n"
858 "hiányában nem tud írni a saját könyvtárába.\n\n"
859 "Kattints az OK gombra, ha el szeretnél indítani egy\n"
860 "segédprogramot adminisztrátori jogokkal, amely\n"
861 "befejezné a frissítést, egyébként a Mégse gombra.")
862 self.add("update_manifest_progress", "A manifesztum letöltése...")
863 self.add("update_manifest_done", "A manifesztum letöltve...")
864 self.add("update_files_progress", "Fájlok letöltése...")
865 self.add("update_files_bytes", "%d bájtot töltöttem le %d bájtból")
866 self.add("update_renaming", "A letöltött fájlok átnevezése...")
867 self.add("update_renamed", "Átneveztem a(z) %s fájlt")
868 self.add("update_removing", "Fájlok törlése...")
869 self.add("update_removed", "Letöröltem a(z) %s fájlt")
870 self.add("update_writing_manifest", "Az új manifesztum írása")
871 self.add("update_finished",
872 "A frissítés sikerült. Kattints az OK-ra a program újraindításához.")
873 self.add("update_nothing", "Nem volt mit frissíteni")
874 self.add("update_failed", "Nem sikerült, a részleteket lásd a debug naplóban.")
875
876 self.add("weighthelp_usinghelp", "_Használom a segítséget")
877 self.add("weighthelp_usinghelp_tooltip",
878 "Ha bejelölöd, az alábbiakban kapsz egy kis segítséget "
879 "a járathoz szükséges hasznos teher megállapításához. "
880 "Ha igénybe veszed ezt a szolgáltatást, ez a tény "
881 "a naplóba bekerül.")
882 self.add("weighthelp_header_calculated", "Elvárt/\nszámított")
883 self.add("weighthelp_header_simulator", "Szimulátor\nadatok")
884 self.add("weighthelp_header_simulator_tooltip",
885 "Kattints erre a gombra a súlyadatoknak a szimulátortól "
886 "való lekérdezéséhez. Az értékek lent jelennek meg. Ha "
887 "egy érték a tűrés 10%-án belül van, akkor az "
888 '<b><span foreground="darkgreen">zöld</span></b> '
889 "színnel jelenik meg. Ha nem fér bele a tűrésbe, akkor "
890 '<b><span foreground="red">piros</span></b>, '
891 "egyébként "
892 '<b><span foreground="orange">sárga</span></b> '
893 "színben olvasható.")
894 self.add("weighthelp_crew", "Legénység (%s):")
895 self.add("weighthelp_pax", "Utasok (%s):")
896 self.add("weighthelp_baggage", "Poggyász:")
897 self.add("weighthelp_cargo", "Teher:")
898 self.add("weighthelp_mail", "Posta:")
899 self.add("weighthelp_payload", "Hasznos teher:")
900 self.add("weighthelp_dow", "DOW:")
901 self.add("weighthelp_zfw", "ZFW:")
902 self.add("weighthelp_gross", "Teljes tömeg:")
903 self.add("weighthelp_mzfw", "MZFW:")
904 self.add("weighthelp_mtow", "MTOW:")
905 self.add("weighthelp_mlw", "MLW:")
906 self.add("weighthelp_busy", "A tömegadatok lekérdezése...")
907
908#------------------------------------------------------------------------------
909
910# The fallback language is English
911_English()
912
913# We also support Hungarian
914_Hungarian()
915
916#------------------------------------------------------------------------------
Note: See TracBrowser for help on using the repository browser.