Merge branch 'i18n' of https://github.com/zhaoweny/Pyfa into i18n

This commit is contained in:
blitzmann
2020-07-19 20:52:16 -04:00
22 changed files with 6081 additions and 864 deletions

View File

@@ -1,3 +1,3 @@
files:
- source: /locale/**/*.po
translation: /locale/%locale_with_underscore%/LC_MESSAGES/%original_file_name%
- source: /locale/*.pot
translation: /locale/%locale_with_underscore%/LC_MESSAGES/lang.po

View File

@@ -18,31 +18,34 @@
# =============================================================================
from graphs.data.base import FitGraph, XDef, YDef, Input, InputCheckbox
import wx
from graphs.data.base import FitGraph, Input, InputCheckbox, XDef, YDef
from .getter import CapAmount2CapAmountGetter, CapAmount2CapRegenGetter, Time2CapAmountGetter, Time2CapRegenGetter
_t = wx.GetTranslation
class FitCapacitorGraph(FitGraph):
# UI stuff
internalName = 'capacitorGraph'
name = 'Capacitor'
name = _t('Capacitor')
xDefs = [
XDef(handle='time', unit='s', label='Time', mainInput=('time', 's')),
XDef(handle='capAmount', unit='GJ', label='Cap amount', mainInput=('capAmount', '%')),
XDef(handle='capAmount', unit='%', label='Cap amount', mainInput=('capAmount', '%'))]
XDef(handle='time', unit='s', label=_t('Time'), mainInput=('time', 's')),
XDef(handle='capAmount', unit='GJ', label=_t('Cap amount'), mainInput=('capAmount', '%')),
XDef(handle='capAmount', unit='%', label=_t('Cap amount'), mainInput=('capAmount', '%'))]
yDefs = [
YDef(handle='capAmount', unit='GJ', label='Cap amount'),
YDef(handle='capRegen', unit='GJ/s', label='Cap regen')]
YDef(handle='capAmount', unit='GJ', label=_t('Cap amount')),
YDef(handle='capRegen', unit='GJ/s', label=_t('Cap regen'))]
inputs = [
Input(handle='time', unit='s', label='Time', iconID=1392, defaultValue=120, defaultRange=(0, 300), conditions=[
Input(handle='time', unit='s', label=_t('Time'), iconID=1392, defaultValue=120, defaultRange=(0, 300), conditions=[
(('time', 's'), None)]),
Input(handle='capAmount', unit='%', label='Cap amount', iconID=1668, defaultValue=25, defaultRange=(0, 100), conditions=[
Input(handle='capAmount', unit='%', label=_t('Cap amount'), iconID=1668, defaultValue=25, defaultRange=(0, 100), conditions=[
(('capAmount', 'GJ'), None),
(('capAmount', '%'), None)]),
Input(handle='capAmountT0', unit='%', label='Starting cap amount', iconID=1668, defaultValue=100, defaultRange=(0, 100), conditions=[
Input(handle='capAmountT0', unit='%', label=_t('Starting cap amount'), iconID=1668, defaultValue=100, defaultRange=(0, 100), conditions=[
(('time', 's'), None)])]
checkboxes = [InputCheckbox(handle='useCapsim', label='Use capacitor simulator', defaultValue=True, conditions=[
checkboxes = [InputCheckbox(handle='useCapsim', label=_t('Use capacitor simulator'), defaultValue=True, conditions=[
(('time', 's'), ('capAmount', 'GJ'))])]
srcExtraCols = ('CapAmount', 'CapTime')

View File

@@ -18,15 +18,17 @@
# =============================================================================
from graphs.data.base import FitGraph, XDef, YDef, Input, VectorDef
import wx
from graphs.data.base import FitGraph, Input, VectorDef, XDef, YDef
from service.const import GraphCacheCleanupReason
from service.settings import GraphSettings
from .cache import ProjectedDataCache, TimeCache
from .getter import (
Distance2DpsGetter, Distance2VolleyGetter, Distance2InflictedDamageGetter,
Time2DpsGetter, Time2VolleyGetter, Time2InflictedDamageGetter,
TgtSpeed2DpsGetter, TgtSpeed2VolleyGetter, TgtSpeed2InflictedDamageGetter,
TgtSigRadius2DpsGetter, TgtSigRadius2VolleyGetter, TgtSigRadius2InflictedDamageGetter)
from .getter import (Distance2DpsGetter, Distance2InflictedDamageGetter, Distance2VolleyGetter, TgtSigRadius2DpsGetter, TgtSigRadius2InflictedDamageGetter,
TgtSigRadius2VolleyGetter, TgtSpeed2DpsGetter, TgtSpeed2InflictedDamageGetter, TgtSpeed2VolleyGetter, Time2DpsGetter,
Time2InflictedDamageGetter, Time2VolleyGetter)
_t = wx.GetTranslation
class FitDamageStatsGraph(FitGraph):
@@ -51,23 +53,26 @@ class FitDamageStatsGraph(FitGraph):
# UI stuff
internalName = 'dmgStatsGraph'
name = 'Damage Stats'
name = _t('Damage Stats')
xDefs = [
XDef(handle='distance', unit='km', label='Distance', mainInput=('distance', 'km')),
XDef(handle='time', unit='s', label='Time', mainInput=('time', 's')),
XDef(handle='tgtSpeed', unit='m/s', label='Target speed', mainInput=('tgtSpeed', '%')),
XDef(handle='tgtSpeed', unit='%', label='Target speed', mainInput=('tgtSpeed', '%')),
XDef(handle='tgtSigRad', unit='m', label='Target signature radius', mainInput=('tgtSigRad', '%')),
XDef(handle='tgtSigRad', unit='%', label='Target signature radius', mainInput=('tgtSigRad', '%'))]
XDef(handle='distance', unit='km', label=_t('Distance'), mainInput=('distance', 'km')),
XDef(handle='time', unit='s', label=_t('Time'), mainInput=('time', 's')),
XDef(handle='tgtSpeed', unit='m/s', label=_t('Target speed'), mainInput=('tgtSpeed', '%')),
XDef(handle='tgtSpeed', unit='%', label=_t('Target speed'), mainInput=('tgtSpeed', '%')),
XDef(handle='tgtSigRad', unit='m', label=_t('Target signature radius'), mainInput=('tgtSigRad', '%')),
XDef(handle='tgtSigRad', unit='%', label=_t('Target signature radius'), mainInput=('tgtSigRad', '%'))]
inputs = [
Input(handle='distance', unit='km', label='Distance', iconID=1391, defaultValue=None, defaultRange=(0, 100), mainTooltip='Distance between the attacker and the target, as seen in overview (surface-to-surface)', secondaryTooltip='Distance between the attacker and the target, as seen in overview (surface-to-surface)\nWhen set, places the target that far away from the attacker\nWhen not set, attacker\'s weapons always hit the target'),
Input(handle='time', unit='s', label='Time', iconID=1392, defaultValue=None, defaultRange=(0, 80), secondaryTooltip='When set, uses attacker\'s exact damage stats at a given time\nWhen not set, uses attacker\'s damage stats as shown in stats panel of main window'),
Input(handle='tgtSpeed', unit='%', label='Target speed', iconID=1389, defaultValue=100, defaultRange=(0, 100)),
Input(handle='tgtSigRad', unit='%', label='Target signature', iconID=1390, defaultValue=100, defaultRange=(100, 200), conditions=[
Input(handle='distance', unit='km', label=_t('Distance'), iconID=1391, defaultValue=None, defaultRange=(0, 100),
mainTooltip=_t('Distance between the attacker and the target, as seen in overview (surface-to-surface)'),
secondaryTooltip=_t('Distance between the attacker and the target, as seen in overview (surface-to-surface)\nWhen set, places the target that far away from the attacker\nWhen not set, attacker\'s weapons always hit the target')),
Input(handle='time', unit='s', label=_t('Time'), iconID=1392, defaultValue=None, defaultRange=(0, 80),
secondaryTooltip=_t('When set, uses attacker\'s exact damage stats at a given time\nWhen not set, uses attacker\'s damage stats as shown in stats panel of main window')),
Input(handle='tgtSpeed', unit='%', label=_t('Target speed'), iconID=1389, defaultValue=100, defaultRange=(0, 100)),
Input(handle='tgtSigRad', unit='%', label=_t('Target signature'), iconID=1390, defaultValue=100, defaultRange=(100, 200), conditions=[
(('tgtSigRad', 'm'), None),
(('tgtSigRad', '%'), None)])]
srcVectorDef = VectorDef(lengthHandle='atkSpeed', lengthUnit='%', angleHandle='atkAngle', angleUnit='degrees', label='Attacker')
tgtVectorDef = VectorDef(lengthHandle='tgtSpeed', lengthUnit='%', angleHandle='tgtAngle', angleUnit='degrees', label='Target')
srcVectorDef = VectorDef(lengthHandle='atkSpeed', lengthUnit='%', angleHandle='atkAngle', angleUnit='degrees', label=_t('Attacker'))
tgtVectorDef = VectorDef(lengthHandle='tgtSpeed', lengthUnit='%', angleHandle='tgtAngle', angleUnit='degrees', label=_t('Target'))
hasTargets = True
srcExtraCols = ('Dps', 'Volley', 'Speed', 'Radius')
@@ -75,9 +80,9 @@ class FitDamageStatsGraph(FitGraph):
def yDefs(self):
ignoreResists = GraphSettings.getInstance().get('ignoreResists')
return [
YDef(handle='dps', unit=None, label='DPS' if ignoreResists else 'Effective DPS'),
YDef(handle='volley', unit=None, label='Volley' if ignoreResists else 'Effective volley'),
YDef(handle='damage', unit=None, label='Damage inflicted' if ignoreResists else 'Effective damage inflicted')]
YDef(handle='dps', unit=None, label=_t('DPS') if ignoreResists else _t('Effective DPS')),
YDef(handle='volley', unit=None, label=_t('Volley') if ignoreResists else _t('Effective volley')),
YDef(handle='damage', unit=None, label=_t('Damage inflicted') if ignoreResists else _t('Effective damage inflicted'))]
@property
def tgtExtraCols(self):

View File

@@ -18,30 +18,31 @@
# =============================================================================
import wx
from graphs.data.base import FitGraph, Input, XDef, YDef
from .getter import (
Distance2NeutingStrGetter, Distance2WebbingStrGetter, Distance2EcmStrMaxGetter,
Distance2DampStrLockRangeGetter, Distance2TdStrOptimalGetter, Distance2GdStrRangeGetter,
Distance2TpStrGetter)
from .getter import (Distance2DampStrLockRangeGetter, Distance2EcmStrMaxGetter, Distance2GdStrRangeGetter, Distance2NeutingStrGetter, Distance2TdStrOptimalGetter,
Distance2TpStrGetter, Distance2WebbingStrGetter)
_t = wx.GetTranslation
class FitEwarStatsGraph(FitGraph):
# UI stuff
internalName = 'ewarStatsGraph'
name = 'Electronic Warfare Stats'
xDefs = [XDef(handle='distance', unit='km', label='Distance', mainInput=('distance', 'km'))]
name = _t('Electronic Warfare Stats')
xDefs = [XDef(handle='distance', unit='km', label=_t('Distance'), mainInput=('distance', 'km'))]
yDefs = [
YDef(handle='neutStr', unit=None, label='Cap neutralized per second', selectorLabel='Neuts: cap per second'),
YDef(handle='webStr', unit='%', label='Speed reduction', selectorLabel='Webs: speed reduction'),
YDef(handle='ecmStrMax', unit=None, label='Combined ECM strength', selectorLabel='ECM: combined strength'),
YDef(handle='dampStrLockRange', unit='%', label='Lock range reduction', selectorLabel='Damps: lock range reduction'),
YDef(handle='tdStrOptimal', unit='%', label='Turret optimal range reduction', selectorLabel='TDs: turret optimal range reduction'),
YDef(handle='gdStrRange', unit='%', label='Missile flight range reduction', selectorLabel='GDs: missile flight range reduction'),
YDef(handle='tpStr', unit='%', label='Signature radius increase', selectorLabel='TPs: signature radius increase')]
YDef(handle='neutStr', unit=None, label=_t('Cap neutralized per second'), selectorLabel=_t('Neuts: cap per second')),
YDef(handle='webStr', unit='%', label=_t('Speed reduction'), selectorLabel=_t('Webs: speed reduction')),
YDef(handle='ecmStrMax', unit=None, label=_t('Combined ECM strength'), selectorLabel=_t('ECM: combined strength')),
YDef(handle='dampStrLockRange', unit='%', label=_t('Lock range reduction'), selectorLabel=_t('Damps: lock range reduction')),
YDef(handle='tdStrOptimal', unit='%', label=_t('Turret optimal range reduction'), selectorLabel=_t('TDs: turret optimal range reduction')),
YDef(handle='gdStrRange', unit='%', label=_t('Missile flight range reduction'), selectorLabel=_t('GDs: missile flight range reduction')),
YDef(handle='tpStr', unit='%', label=_t('Signature radius increase'), selectorLabel=_t('TPs: signature radius increase'))]
inputs = [
Input(handle='distance', unit='km', label='Distance', iconID=1391, defaultValue=None, defaultRange=(0, 100)),
Input(handle='resist', unit='%', label='Target resistance', iconID=1393, defaultValue=0, defaultRange=(0, 100))]
Input(handle='distance', unit='km', label=_t('Distance'), iconID=1391, defaultValue=None, defaultRange=(0, 100)),
Input(handle='resist', unit='%', label=_t('Target resistance'), iconID=1393, defaultValue=0, defaultRange=(0, 100))]
# Calculation stuff
_normalizers = {

View File

@@ -20,18 +20,21 @@
import math
from graphs.data.base import FitGraph, XDef, YDef, Input
import wx
from graphs.data.base import FitGraph, Input, XDef, YDef
from .getter import TgtSigRadius2LockTimeGetter
_t = wx.GetTranslation
class FitLockTimeGraph(FitGraph):
# UI stuff
internalName = 'lockTimeGraph'
name = 'Lock Time'
xDefs = [XDef(handle='tgtSigRad', unit='m', label='Target signature radius', mainInput=('tgtSigRad', 'm'))]
yDefs = [YDef(handle='time', unit='s', label='Lock time')]
inputs = [Input(handle='tgtSigRad', unit='m', label='Target signature', iconID=1390, defaultValue=None, defaultRange=(25, 500))]
name = _t('Lock Time')
xDefs = [XDef(handle='tgtSigRad', unit='m', label=_t('Target signature radius'), mainInput=('tgtSigRad', 'm'))]
yDefs = [YDef(handle='time', unit='s', label=_t('Lock time'))]
inputs = [Input(handle='tgtSigRad', unit='m', label=_t('Target signature'), iconID=1390, defaultValue=None, defaultRange=(25, 500))]
srcExtraCols = ('ScanResolution',)
# Calculation stuff

View File

@@ -18,27 +18,32 @@
# =============================================================================
from graphs.data.base import FitGraph, XDef, YDef, Input
from .getter import Time2SpeedGetter, Time2DistanceGetter, Time2MomentumGetter, Time2BumpSpeedGetter, Time2BumpDistanceGetter
import wx
from graphs.data.base import FitGraph, Input, XDef, YDef
from .getter import Time2BumpDistanceGetter, Time2BumpSpeedGetter, Time2DistanceGetter, Time2MomentumGetter, Time2SpeedGetter
_t = wx.GetTranslation
class FitMobilityGraph(FitGraph):
# UI stuff
internalName = 'mobilityGraph'
name = 'Mobility'
xDefs = [XDef(handle='time', unit='s', label='Time', mainInput=('time', 's'))]
name = _t('Mobility')
xDefs = [XDef(handle='time', unit='s', label=_t('Time'), mainInput=('time', 's'))]
yDefs = [
YDef(handle='speed', unit='m/s', label='Speed'),
YDef(handle='distance', unit='km', label='Distance'),
YDef(handle='momentum', unit='Gkg⋅m/s', label='Momentum'),
YDef(handle='bumpSpeed', unit='m/s', label='Target speed', selectorLabel='Bump speed'),
YDef(handle='bumpDistance', unit='km', label='Target distance traveled', selectorLabel='Bump distance')]
YDef(handle='speed', unit='m/s', label=_t('Speed')),
YDef(handle='distance', unit='km', label=_t('Distance')),
YDef(handle='momentum', unit='Gkg⋅m/s', label=_t('Momentum')),
YDef(handle='bumpSpeed', unit='m/s', label=_t('Target speed'), selectorLabel=_t('Bump speed')),
YDef(handle='bumpDistance', unit='km', label=_t('Target distance traveled'), selectorLabel=_t('Bump distance'))]
inputs = [
Input(handle='time', unit='s', label='Time', iconID=1392, defaultValue=10, defaultRange=(0, 30)),
Input(handle='time', unit='s', label=_t('Time'), iconID=1392, defaultValue=10, defaultRange=(0, 30)),
# Default values in target fields correspond to a random carrier/fax
Input(handle='tgtMass', unit='Mkg', label='Target mass', iconID=76, defaultValue=1300, defaultRange=(100, 2500), conditions=[(None, ('bumpSpeed', 'm/s')), (None, ('bumpDistance', 'km'))], secondaryTooltip='Defined in millions of kilograms'),
Input(handle='tgtInertia', unit=None, label='Target inertia factor', iconID=1401, defaultValue=0.015, defaultRange=(0.03, 0.1), conditions=[(None, ('bumpDistance', 'km'))], secondaryTooltip='Inertia Modifier attribute value of the target ship')]
Input(handle='tgtMass', unit='Mkg', label=_t('Target mass'), iconID=76, defaultValue=1300, defaultRange=(100, 2500),
conditions=[(None, ('bumpSpeed', 'm/s')), (None, ('bumpDistance', 'km'))], secondaryTooltip=_t('Defined in millions of kilograms')),
Input(handle='tgtInertia', unit=None, label=_t('Target inertia factor'), iconID=1401, defaultValue=0.015, defaultRange=(0.03, 0.1),
conditions=[(None, ('bumpDistance', 'km'))], secondaryTooltip=_t('Inertia Modifier attribute value of the target ship'))]
srcExtraCols = ('Speed', 'Agility')
# Calculation stuff

View File

@@ -18,10 +18,14 @@
# =============================================================================
from graphs.data.base import FitGraph, XDef, YDef, Input, InputCheckbox
import wx
from graphs.data.base import FitGraph, Input, InputCheckbox, XDef, YDef
from service.const import GraphCacheCleanupReason
from .cache import TimeCache
from .getter import Distance2RpsGetter, Distance2RepAmountGetter, Time2RpsGetter, Time2RepAmountGetter
from .getter import Distance2RepAmountGetter, Distance2RpsGetter, Time2RepAmountGetter, Time2RpsGetter
_t = wx.GetTranslation
class FitRemoteRepsGraph(FitGraph):
@@ -41,18 +45,21 @@ class FitRemoteRepsGraph(FitGraph):
# UI stuff
internalName = 'remoteRepsGraph'
name = 'Remote Repairs'
name = _t('Remote Repairs')
xDefs = [
XDef(handle='distance', unit='km', label='Distance', mainInput=('distance', 'km')),
XDef(handle='time', unit='s', label='Time', mainInput=('time', 's'))]
XDef(handle='distance', unit='km', label=_t('Distance'), mainInput=('distance', 'km')),
XDef(handle='time', unit='s', label=_t('Time'), mainInput=('time', 's'))]
yDefs = [
YDef(handle='rps', unit='HP/s', label='Repair speed'),
YDef(handle='total', unit='HP', label='Total repaired')]
YDef(handle='rps', unit='HP/s', label=_t('Repair speed')),
YDef(handle='total', unit='HP', label=_t('Total repaired'))]
inputs = [
Input(handle='time', unit='s', label='Time', iconID=1392, defaultValue=None, defaultRange=(0, 80), secondaryTooltip='When set, uses repairing ship\'s exact RR stats at a given time\nWhen not set, uses repairing ship\'s RR stats as shown in stats panel of main window'),
Input(handle='distance', unit='km', label='Distance', iconID=1391, defaultValue=None, defaultRange=(0, 100), mainTooltip='Distance between the repairing ship and the target, as seen in overview (surface-to-surface)', secondaryTooltip='Distance between the repairing ship and the target, as seen in overview (surface-to-surface)')]
Input(handle='time', unit='s', label=_t('Time'), iconID=1392, defaultValue=None, defaultRange=(0, 80),
secondaryTooltip=_t('When set, uses repairing ship\'s exact RR stats at a given time\nWhen not set, uses repairing ship\'s RR stats as shown in stats panel of main window')),
Input(handle='distance', unit='km', label=_t('Distance'), iconID=1391, defaultValue=None, defaultRange=(0, 100),
mainTooltip=_t('Distance between the repairing ship and the target, as seen in overview (surface-to-surface)'),
secondaryTooltip=_t('Distance between the repairing ship and the target, as seen in overview (surface-to-surface)'))]
srcExtraCols = ('ShieldRR', 'ArmorRR', 'HullRR')
checkboxes = [InputCheckbox(handle='ancReload', label='Reload ancillary RRs', defaultValue=True)]
checkboxes = [InputCheckbox(handle='ancReload', label=_t('Reload ancillary RRs'), defaultValue=True)]
# Calculation stuff
_normalizers = {('distance', 'km'): lambda v, src, tgt: None if v is None else v * 1000}

View File

@@ -18,11 +18,13 @@
# =============================================================================
import wx
import gui.mainFrame
from graphs.data.base import FitGraph, XDef, YDef, Input
from .getter import (
Time2ShieldAmountGetter, Time2ShieldRegenGetter,
ShieldAmount2ShieldAmountGetter, ShieldAmount2ShieldRegenGetter)
from graphs.data.base import FitGraph, Input, XDef, YDef
from .getter import (ShieldAmount2ShieldAmountGetter, ShieldAmount2ShieldRegenGetter, Time2ShieldAmountGetter, Time2ShieldRegenGetter)
_t = wx.GetTranslation
class FitShieldRegenGraph(FitGraph):
@@ -33,15 +35,15 @@ class FitShieldRegenGraph(FitGraph):
# UI stuff
internalName = 'shieldRegenGraph'
name = 'Shield Regeneration'
name = _t('Shield Regeneration')
inputs = [
Input(handle='time', unit='s', label='Time', iconID=1392, defaultValue=120, defaultRange=(0, 300), conditions=[
Input(handle='time', unit='s', label=_t('Time'), iconID=1392, defaultValue=120, defaultRange=(0, 300), conditions=[
(('time', 's'), None)]),
Input(handle='shieldAmount', unit='%', label='Shield amount', iconID=1384, defaultValue=25, defaultRange=(0, 100), conditions=[
Input(handle='shieldAmount', unit='%', label=_t('Shield amount'), iconID=1384, defaultValue=25, defaultRange=(0, 100), conditions=[
(('shieldAmount', 'EHP'), None),
(('shieldAmount', 'HP'), None),
(('shieldAmount', '%'), None)]),
Input(handle='shieldAmountT0', unit='%', label='Starting shield amount', iconID=1384, defaultValue=0, defaultRange=(0, 100), conditions=[
Input(handle='shieldAmountT0', unit='%', label=_t('Starting shield amount'), iconID=1384, defaultValue=0, defaultRange=(0, 100), conditions=[
(('time', 's'), None)])]
srcExtraCols = ('ShieldAmount', 'ShieldTime')
usesHpEffectivity = True
@@ -49,15 +51,15 @@ class FitShieldRegenGraph(FitGraph):
@property
def xDefs(self):
return [
XDef(handle='time', unit='s', label='Time', mainInput=('time', 's')),
XDef(handle='shieldAmount', unit='EHP' if self.isEffective else 'HP', label='Shield amount', mainInput=('shieldAmount', '%')),
XDef(handle='shieldAmount', unit='%', label='Shield amount', mainInput=('shieldAmount', '%'))]
XDef(handle='time', unit='s', label=_t('Time'), mainInput=('time', 's')),
XDef(handle='shieldAmount', unit='EHP' if self.isEffective else 'HP', label=_t('Shield amount'), mainInput=('shieldAmount', '%')),
XDef(handle='shieldAmount', unit='%', label=_t('Shield amount'), mainInput=('shieldAmount', '%'))]
@property
def yDefs(self):
return [
YDef(handle='shieldAmount', unit='EHP' if self.isEffective else 'HP', label='Shield amount'),
YDef(handle='shieldRegen', unit='EHP/s' if self.isEffective else 'HP/s', label='Shield regen')]
YDef(handle='shieldAmount', unit='EHP' if self.isEffective else 'HP', label=_t('Shield amount')),
YDef(handle='shieldRegen', unit='EHP/s' if self.isEffective else 'HP/s', label=_t('Shield regen'))]
# Calculation stuff
_normalizers = {

View File

@@ -18,11 +18,15 @@
# =============================================================================
import wx
from graphs.data.base import FitGraph, Input, XDef, YDef
from service.const import GraphCacheCleanupReason
from .cache import SubwarpSpeedCache
from .getter import AU_METERS, Distance2TimeGetter
_t = wx.GetTranslation
class FitWarpTimeGraph(FitGraph):
@@ -38,20 +42,21 @@ class FitWarpTimeGraph(FitGraph):
# UI stuff
internalName = 'warpTimeGraph'
name = 'Warp Time'
name = _t('Warp Time')
xDefs = [
XDef(handle='distance', unit='AU', label='Distance', mainInput=('distance', 'AU')),
XDef(handle='distance', unit='km', label='Distance', mainInput=('distance', 'km'))]
yDefs = [YDef(handle='time', unit='s', label='Warp time')]
XDef(handle='distance', unit='AU', label=_t('Distance'), mainInput=('distance', 'AU')),
XDef(handle='distance', unit='km', label=_t('Distance'), mainInput=('distance', 'km'))]
yDefs = [YDef(handle='time', unit='s', label=_t('Warp time'))]
inputs = [
Input(handle='distance', unit='AU', label='Distance', iconID=1391, defaultValue=20, defaultRange=(0, 50)),
Input(handle='distance', unit='km', label='Distance', iconID=1391, defaultValue=1000, defaultRange=(150, 5000))]
Input(handle='distance', unit='AU', label=_t('Distance'), iconID=1391, defaultValue=20, defaultRange=(0, 50)),
Input(handle='distance', unit='km', label=_t('Distance'), iconID=1391, defaultValue=1000, defaultRange=(150, 5000))]
srcExtraCols = ('WarpSpeed', 'WarpDistance')
# Calculation stuff
_normalizers = {
('distance', 'AU'): lambda v, src, tgt: v * AU_METERS,
('distance', 'km'): lambda v, src, tgt: v * 1000}
('distance', 'km'): lambda v, src, tgt: v * 1000
}
_limiters = {'distance': lambda src, tgt: (0, src.item.maxWarpDistance * AU_METERS)}
_getters = {('distance', 'time'): Distance2TimeGetter}
_denormalizers = {

View File

@@ -31,10 +31,10 @@ from service.fit import Fit
from .lists import SourceWrapperList, TargetWrapperList
from .vector import VectorPicker
InputData = namedtuple('InputData', ('handle', 'unit', 'value'))
InputBox = namedtuple('InputBox', ('handle', 'unit', 'textBox', 'icon', 'label'))
CheckBox = namedtuple('CheckBox', ('handle', 'checkBox'))
_t = wx.GetTranslation
class GraphControlPanel(wx.Panel):
@@ -53,7 +53,7 @@ class GraphControlPanel(wx.Panel):
commonOptsSizer = wx.BoxSizer(wx.VERTICAL)
ySubSelectionSizer = wx.BoxSizer(wx.HORIZONTAL)
yText = wx.StaticText(self, wx.ID_ANY, 'Axis Y:')
yText = wx.StaticText(self, wx.ID_ANY, _t('Axis Y:'))
ySubSelectionSizer.Add(yText, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 5)
self.ySubSelection = wx.Choice(self, wx.ID_ANY)
self.ySubSelection.Bind(wx.EVT_CHOICE, self.OnYTypeUpdate)
@@ -61,18 +61,18 @@ class GraphControlPanel(wx.Panel):
commonOptsSizer.Add(ySubSelectionSizer, 0, wx.EXPAND | wx.ALL, 0)
xSubSelectionSizer = wx.BoxSizer(wx.HORIZONTAL)
xText = wx.StaticText(self, wx.ID_ANY, 'Axis X:')
xText = wx.StaticText(self, wx.ID_ANY, _t('Axis X:'))
xSubSelectionSizer.Add(xText, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 5)
self.xSubSelection = wx.Choice(self, wx.ID_ANY)
self.xSubSelection.Bind(wx.EVT_CHOICE, self.OnXTypeUpdate)
xSubSelectionSizer.Add(self.xSubSelection, 1, wx.EXPAND | wx.ALL, 0)
commonOptsSizer.Add(xSubSelectionSizer, 0, wx.EXPAND | wx.TOP, 5)
self.showLegendCb = wx.CheckBox(self, wx.ID_ANY, 'Show legend', wx.DefaultPosition, wx.DefaultSize, 0)
self.showLegendCb = wx.CheckBox(self, wx.ID_ANY, _t('Show legend'), wx.DefaultPosition, wx.DefaultSize, 0)
self.showLegendCb.SetValue(True)
self.showLegendCb.Bind(wx.EVT_CHECKBOX, self.OnShowLegendChange)
commonOptsSizer.Add(self.showLegendCb, 0, wx.EXPAND | wx.TOP, 5)
self.showY0Cb = wx.CheckBox(self, wx.ID_ANY, 'Always show Y = 0', wx.DefaultPosition, wx.DefaultSize, 0)
self.showY0Cb = wx.CheckBox(self, wx.ID_ANY, _t('Always show Y = 0'), wx.DefaultPosition, wx.DefaultSize, 0)
self.showY0Cb.SetValue(True)
self.showY0Cb.Bind(wx.EVT_CHECKBOX, self.OnShowY0Change)
commonOptsSizer.Add(self.showY0Cb, 0, wx.EXPAND | wx.TOP, 5)

View File

@@ -34,8 +34,8 @@ from service.settings import GraphSettings
from . import canvasPanel
from .ctrlPanel import GraphControlPanel
pyfalog = Logger(__name__)
_t = wx.GetTranslation
REDRAW_DELAY = 500
@@ -48,7 +48,7 @@ class GraphFrame(AuxiliaryFrame):
pyfalog.warning('Matplotlib is not enabled. Skipping initialization.')
return
super().__init__(parent, title='Graphs', size=(520, 390), resizeable=True)
super().__init__(parent, title=_t('Graphs'), size=(520, 390), resizeable=True)
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.includeHidden = includeHidden

View File

@@ -32,6 +32,7 @@ from gui.contextMenu import ContextMenu
from service.const import GraphCacheCleanupReason
from service.fit import Fit
from .stylePickers import ColorPickerPopup, LightnessPickerPopup, LineStylePickerPopup
_t = wx.GetTranslation
class BaseWrapperList(gui.display.Display):
@@ -309,7 +310,7 @@ class SourceWrapperList(BaseWrapperList):
@property
def defaultTTText(self):
return 'Drag a fit into this list to graph it'
return _t('Drag a fit into this list to graph it')
class TargetWrapperList(BaseWrapperList):
@@ -366,7 +367,7 @@ class TargetWrapperList(BaseWrapperList):
@property
def defaultTTText(self):
return 'Drag a fit into this list to have your fits graphed against it'
return _t('Drag a fit into this list to have your fits graphed against it')
# Context menu handlers
def addProfile(self, profile):

View File

@@ -25,9 +25,9 @@ import wx
from service.const import GraphColor, GraphLightness, GraphLineStyle
ColorData = namedtuple('ColorData', ('hsl', 'name', 'iconName'))
LightnessData = namedtuple('LightnessData', ('name', 'iconName', 'func'))
_t = wx.GetTranslation
class LineStyleData:
@@ -49,14 +49,14 @@ class LineStyleData:
# In HSL format
BASE_COLORS = OrderedDict([
(GraphColor.red, ColorData((0 / 360.0, 1.0, 0.5), 'Red', 'color_red')),
(GraphColor.green, ColorData((120 / 360.0, 1.0, 0.5), 'Green', 'color_green')),
(GraphColor.blue, ColorData((240 / 360.0, 1.0, 0.5), 'Blue', 'color_blue')),
(GraphColor.orange, ColorData((40 / 360.0, 1.0, 0.5), 'Orange', 'color_orange')),
(GraphColor.magenta, ColorData((300 / 360.0, 1.0, 0.5), 'Magenta', 'color_magenta')),
(GraphColor.cyan, ColorData((180 / 360.0, 1.0, 0.5), 'Cyan', 'color_cyan')),
(GraphColor.purple, ColorData((275 / 360.0, 1.0, 0.5), 'Purple', 'color_purple')),
(GraphColor.yellow, ColorData((56 / 360.0, 1.0, 0.5), 'Yellow', 'color_yellow'))])
(GraphColor.red, ColorData((0 / 360.0, 1.0, 0.5), _t('Red'), 'color_red')),
(GraphColor.green, ColorData((120 / 360.0, 1.0, 0.5), _t('Green'), 'color_green')),
(GraphColor.blue, ColorData((240 / 360.0, 1.0, 0.5), _t('Blue'), 'color_blue')),
(GraphColor.orange, ColorData((40 / 360.0, 1.0, 0.5), _t('Orange'), 'color_orange')),
(GraphColor.magenta, ColorData((300 / 360.0, 1.0, 0.5), _t('Magenta'), 'color_magenta')),
(GraphColor.cyan, ColorData((180 / 360.0, 1.0, 0.5), _t('Cyan'), 'color_cyan')),
(GraphColor.purple, ColorData((275 / 360.0, 1.0, 0.5), _t('Purple'), 'color_purple')),
(GraphColor.yellow, ColorData((56 / 360.0, 1.0, 0.5), _t('Yellow'), 'color_yellow'))])
def hsl_to_hsv(hsl):
@@ -77,13 +77,13 @@ def brighten(hsl):
LIGHTNESSES = OrderedDict([
(GraphLightness.normal, LightnessData('Normal', 'lightness_normal', lambda hsl: hsl)),
(GraphLightness.dark, LightnessData('Dark', 'lightness_dark', darken)),
(GraphLightness.bright, LightnessData('Bright', 'lightness_bright', brighten))])
(GraphLightness.normal, LightnessData(_t('Normal'), 'lightness_normal', lambda hsl: hsl)),
(GraphLightness.dark, LightnessData(_t('Dark'), 'lightness_dark', darken)),
(GraphLightness.bright, LightnessData(_t('Bright'), 'lightness_bright', brighten))])
STYLES = OrderedDict([
(GraphLineStyle.solid, LineStyleData('Solid', 'style_solid', 'solid')),
(GraphLineStyle.dashed, LineStyleData('Dashed', 'style_dashed', (0, (5, 1)))),
(GraphLineStyle.dotted, LineStyleData('Dotted', 'style_dotted', (0, (1, 1)))),
(GraphLineStyle.dashdotted, LineStyleData('Dash-dotted', 'style_dashdot', (0, (3, 1, 1, 1))))])
(GraphLineStyle.solid, LineStyleData(_t('Solid'), 'style_solid', 'solid')),
(GraphLineStyle.dashed, LineStyleData(_t('Dashed'), 'style_dashed', (0, (5, 1)))),
(GraphLineStyle.dotted, LineStyleData(_t('Dotted'), 'style_dotted', (0, (1, 1)))),
(GraphLineStyle.dashdotted, LineStyleData(_t('Dash-dotted'), 'style_dashdot', (0, (3, 1, 1, 1))))])

View File

@@ -40,9 +40,9 @@ class GraphDmgDroneModeMenu(ContextMenuUnconditional):
bindmenu = m
self.idOptionMap = {}
optionMap = OrderedDict([
(GraphDpsDroneMode.auto, 'Auto'),
(GraphDpsDroneMode.followTarget, 'Stick to Target'),
(GraphDpsDroneMode.followAttacker, 'Stick to Attacker')])
(GraphDpsDroneMode.auto, _t('Auto')),
(GraphDpsDroneMode.followTarget, _t('Stick to Target')),
(GraphDpsDroneMode.followAttacker, _t('Stick to Attacker'))])
for option, label in optionMap.items():
menuId = ContextMenuUnconditional.nextID()
item = wx.MenuItem(m, menuId, label, kind=wx.ITEM_CHECK)

View File

@@ -26,7 +26,7 @@ class TargetProfileAdder(ContextMenuUnconditional):
return True
def getText(self, callingWindow, itmContext):
return 'Add Target Profile'
return _t('Add Target Profile')
def handleProfileAdd(self, event):
profile = self.eventProfileMap.get(event.Id, False)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-11 18:24-0400\n"
"POT-Creation-Date: 2020-07-17 11:42+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -345,6 +345,10 @@ msgstr ""
msgid "Allow pre-release notifications"
msgstr ""
#: graphs/gui/ctrlPanel.py:75
msgid "Always show Y = 0"
msgstr ""
#: eos/saveddata/targetProfile.py:53
msgid "Amarr (Armor)"
msgstr ""
@@ -433,6 +437,10 @@ msgstr ""
msgid "Asteroid"
msgstr ""
#: graphs/data/fitDamageStats/graph.py:74
msgid "Attacker"
msgstr ""
#: gui/builtinItemStatsViews/itemAttributes.py:44
#: gui/builtinItemStatsViews/itemProperties.py:56
msgid "Attribute"
@@ -450,6 +458,10 @@ msgstr ""
msgid "Attributes"
msgstr ""
#: gui/builtinContextMenus/graphDmgDroneMode.py:43
msgid "Auto"
msgstr ""
#: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87
msgid "Auto-detected proxy settings"
msgstr ""
@@ -459,6 +471,14 @@ msgstr ""
msgid "Auto-detected: "
msgstr ""
#: graphs/gui/ctrlPanel.py:64
msgid "Axis X:"
msgstr ""
#: graphs/gui/ctrlPanel.py:56
msgid "Axis Y:"
msgstr ""
#: gui/builtinShipBrowser/navigationPanel.py:50
msgid "Back"
msgstr ""
@@ -504,6 +524,10 @@ msgstr ""
msgid "Blood Raiders"
msgstr ""
#: graphs/style.py:54
msgid "Blue"
msgstr ""
#: eos/saveddata/damagePattern.py:90 eos/saveddata/damagePattern.py:91
#: eos/saveddata/damagePattern.py:92 eos/saveddata/damagePattern.py:93
msgid "Bombs"
@@ -520,10 +544,22 @@ msgstr ""
msgid "Boosters"
msgstr ""
#: graphs/style.py:82
msgid "Bright"
msgstr ""
#: gui/esiFittings.py:32
msgid "Browse EVE Fittings"
msgstr ""
#: graphs/data/fitMobility/graph.py:39
msgid "Bump distance"
msgstr ""
#: graphs/data/fitMobility/graph.py:38
msgid "Bump speed"
msgstr ""
#: eos/saveddata/damagePattern.py:108 eos/saveddata/damagePattern.py:109
#: eos/saveddata/damagePattern.py:110 eos/saveddata/damagePattern.py:111
#: eos/saveddata/damagePattern.py:112 eos/saveddata/damagePattern.py:113
@@ -567,6 +603,20 @@ msgstr ""
msgid "Calibration"
msgstr ""
#: graphs/data/fitCapacitor/graph.py:35 graphs/data/fitCapacitor/graph.py:36
#: graphs/data/fitCapacitor/graph.py:38 graphs/data/fitCapacitor/graph.py:43
msgid "Cap amount"
msgstr ""
#: graphs/data/fitEwarStats/graph.py:36
msgid "Cap neutralized per second"
msgstr ""
#: graphs/data/fitCapacitor/graph.py:39
msgid "Cap regen"
msgstr ""
#: graphs/data/fitCapacitor/graph.py:32
#: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79
#: gui/builtinStatsViews/capacitorViewFull.py:37
msgid "Capacitor"
@@ -715,6 +765,10 @@ msgstr ""
msgid "Color fitting view by slot"
msgstr ""
#: graphs/data/fitEwarStats/graph.py:38
msgid "Combined ECM strength"
msgstr ""
#: gui/additionsPane.py:84
msgid "Command"
msgstr ""
@@ -861,6 +915,14 @@ msgstr ""
msgid "Custom application"
msgstr ""
#: graphs/style.py:57
msgid "Cyan"
msgstr ""
#: graphs/data/fitDamageStats/graph.py:83
msgid "DPS"
msgstr ""
#: gui/patternEditor.py:99
msgid "Damage Pattern Editor"
msgstr ""
@@ -873,10 +935,26 @@ msgstr ""
msgid "Damage Profile name already in use, please choose another."
msgstr ""
#: graphs/data/fitDamageStats/graph.py:56
msgid "Damage Stats"
msgstr ""
#: graphs/data/fitDamageStats/graph.py:85
msgid "Damage inflicted"
msgstr ""
#: graphs/data/fitEwarStats/graph.py:39
msgid "Damps: lock range reduction"
msgstr ""
#: eos/saveddata/damagePattern.py:110 eos/saveddata/targetProfile.py:83
msgid "Daredevil (Serpentis)"
msgstr ""
#: graphs/style.py:81
msgid "Dark"
msgstr ""
#: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100
#: eos/saveddata/targetProfile.py:101 eos/saveddata/targetProfile.py:102
#: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104
@@ -884,6 +962,14 @@ msgstr ""
msgid "Dark Matter All Tiers"
msgstr ""
#: graphs/style.py:89
msgid "Dash-dotted"
msgstr ""
#: graphs/style.py:87
msgid "Dashed"
msgstr ""
#: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:15
msgid "Database"
msgstr ""
@@ -914,6 +1000,10 @@ msgstr ""
msgid "Defense"
msgstr ""
#: graphs/data/fitMobility/graph.py:44
msgid "Defined in millions of kilograms"
msgstr ""
#: gui/builtinShipBrowser/fitItem.py:109
msgid "Delete"
msgstr ""
@@ -979,6 +1069,35 @@ msgid ""
"settings."
msgstr ""
#: graphs/data/fitDamageStats/graph.py:58
#: graphs/data/fitDamageStats/graph.py:65 graphs/data/fitEwarStats/graph.py:34
#: graphs/data/fitEwarStats/graph.py:44 graphs/data/fitMobility/graph.py:36
#: graphs/data/fitRemoteReps/graph.py:50 graphs/data/fitRemoteReps/graph.py:58
#: graphs/data/fitWarpTime/graph.py:47 graphs/data/fitWarpTime/graph.py:48
#: graphs/data/fitWarpTime/graph.py:51 graphs/data/fitWarpTime/graph.py:52
msgid "Distance"
msgstr ""
#: graphs/data/fitDamageStats/graph.py:66
msgid ""
"Distance between the attacker and the target, as seen in overview (surface-"
"to-surface)"
msgstr ""
#: graphs/data/fitDamageStats/graph.py:67
msgid ""
"Distance between the attacker and the target, as seen in overview (surface-"
"to-surface)\n"
"When set, places the target that far away from the attacker\n"
"When not set, attacker's weapons always hit the target"
msgstr ""
#: graphs/data/fitRemoteReps/graph.py:59 graphs/data/fitRemoteReps/graph.py:60
msgid ""
"Distance between the repairing ship and the target, as seen in overview "
"(surface-to-surface)"
msgstr ""
#: gui/esiFittings.py:156
msgid "Do you really want to delete {} ({}) from EVE?"
msgstr ""
@@ -991,11 +1110,23 @@ msgstr ""
msgid "Don't see your EVE character in the list?"
msgstr ""
#: graphs/style.py:88
msgid "Dotted"
msgstr ""
#: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:71
#: gui/updateDialog.py:113
msgid "Download"
msgstr ""
#: graphs/gui/lists.py:313
msgid "Drag a fit into this list to graph it"
msgstr ""
#: graphs/gui/lists.py:370
msgid "Drag a fit into this list to have your fits graphed against it"
msgstr ""
#: gui/builtinAdditionPanes/commandView.py:163
msgid "Drag a fit to this area"
msgstr ""
@@ -1047,19 +1178,19 @@ msgstr ""
msgid "Drone range"
msgstr ""
#: eos/saveddata/damagePattern.py:97 eos/saveddata/targetProfile.py:99
#: eos/saveddata/targetProfile.py:106 eos/saveddata/targetProfile.py:113
#: eos/saveddata/targetProfile.py:120 eos/saveddata/targetProfile.py:127
#: eos/saveddata/targetProfile.py:134 eos/saveddata/targetProfile.py:141
#: eos/saveddata/targetProfile.py:148 eos/saveddata/targetProfile.py:155
#: eos/saveddata/targetProfile.py:162 eos/saveddata/targetProfile.py:169
#: eos/saveddata/targetProfile.py:176 eos/saveddata/targetProfile.py:183
#: gui/additionsPane.py:66 gui/builtinContextMenus/additionsExportAll.py:18
#: gui/builtinContextMenus/additionsExportSelection.py:18
#: gui/builtinContextMenus/additionsImport.py:19
#: gui/builtinContextMenus/priceOptions.py:40
#: gui/builtinPreferenceViews/pyfaMarketPreferences.py:77
#: gui/builtinStatsViews/priceViewFull.py:58 eos/saveddata/damagePattern.py:97
#: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:106
#: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:120
#: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:134
#: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:148
#: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:162
#: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:176
#: eos/saveddata/targetProfile.py:183
#: gui/builtinStatsViews/priceViewFull.py:58
msgid "Drones"
msgstr ""
@@ -1075,6 +1206,10 @@ msgstr ""
msgid "E&xport to ESI"
msgstr ""
#: graphs/data/fitEwarStats/graph.py:38
msgid "ECM: combined strength"
msgstr ""
#: gui/mainFrame.py:839
msgid "EFT text fitting files"
msgstr ""
@@ -1084,8 +1219,8 @@ msgstr ""
msgid "EHP"
msgstr ""
#: gui/builtinContextMenus/moduleAmmoChange.py:24
#: eos/saveddata/damagePattern.py:39
#: gui/builtinContextMenus/moduleAmmoChange.py:24
msgid "EM"
msgstr ""
@@ -1134,11 +1269,23 @@ msgstr ""
msgid "EVEMon skills training file"
msgstr ""
#: graphs/data/fitDamageStats/graph.py:83
msgid "Effective DPS"
msgstr ""
#: gui/builtinStatsViews/resistancesViewFull.py:61
#: gui/builtinStatsViews/resistancesViewFull.py:219
msgid "Effective HP: "
msgstr ""
#: graphs/data/fitDamageStats/graph.py:85
msgid "Effective damage inflicted"
msgstr ""
#: graphs/data/fitDamageStats/graph.py:84
msgid "Effective volley"
msgstr ""
#: gui/builtinStatsViews/resistancesViewFull.py:220
#, python-format
msgid "Effective: %d HP"
@@ -1177,6 +1324,10 @@ msgstr ""
msgid "Electron Bomb"
msgstr ""
#: graphs/data/fitEwarStats/graph.py:33
msgid "Electronic Warfare Stats"
msgstr ""
#: gui/builtinContextMenus/moduleAmmoChange.py:59
msgid "Empty"
msgstr ""
@@ -1299,8 +1450,8 @@ msgstr ""
msgid "Expand All"
msgstr ""
#: gui/builtinContextMenus/moduleAmmoChange.py:26
#: eos/saveddata/damagePattern.py:42
#: gui/builtinContextMenus/moduleAmmoChange.py:26
msgid "Explosive"
msgstr ""
@@ -1501,6 +1652,10 @@ msgstr ""
msgid "Firestorm T4/T5"
msgstr ""
#: graphs/gui/lists.py:306
msgid "Fit"
msgstr ""
#: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:47
msgid "Fitting Database:"
msgstr ""
@@ -1554,6 +1709,10 @@ msgstr ""
msgid "Fusion"
msgstr ""
#: graphs/data/fitEwarStats/graph.py:41
msgid "GDs: missile flight range reduction"
msgstr ""
#: eos/saveddata/targetProfile.py:57
msgid "Gallente (Armor)"
msgstr ""
@@ -1632,6 +1791,14 @@ msgstr ""
msgid "Grant Missing Skills"
msgstr ""
#: graphs/gui/frame.py:51
msgid "Graphs"
msgstr ""
#: graphs/style.py:53
msgid "Green"
msgstr ""
#: eos/saveddata/damagePattern.py:104 eos/saveddata/damagePattern.py:122
#: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:68
msgid "Guristas"
@@ -1842,6 +2009,10 @@ msgstr ""
msgid "Industrial ship hold"
msgstr ""
#: graphs/data/fitMobility/graph.py:46
msgid "Inertia Modifier attribute value of the target ship"
msgstr ""
#: eos/saveddata/damagePattern.py:87
msgid "Inferno"
msgstr ""
@@ -1911,8 +2082,8 @@ msgstr ""
msgid "Khanid"
msgstr ""
#: gui/builtinContextMenus/moduleAmmoChange.py:27
#: eos/saveddata/damagePattern.py:41
#: gui/builtinContextMenus/moduleAmmoChange.py:27
msgid "Kinetic"
msgstr ""
@@ -1969,6 +2140,10 @@ msgstr ""
msgid "Light"
msgstr ""
#: service/market.py:266
msgid "Limited Issue Ships"
msgstr ""
#: gui/copySelectDialog.py:46 gui/copySelectDialog.py:53
msgid "Loaded Charges"
msgstr ""
@@ -1985,10 +2160,22 @@ msgstr ""
msgid "Localized"
msgstr ""
#: graphs/data/fitLockTime/graph.py:34
msgid "Lock Time"
msgstr ""
#: gui/builtinStatsViews/targetingMiscViewMinimal.py:201
msgid "Lock Times"
msgstr ""
#: graphs/data/fitEwarStats/graph.py:39
msgid "Lock range reduction"
msgstr ""
#: graphs/data/fitLockTime/graph.py:36
msgid "Lock time"
msgstr ""
#: gui/characterEditor.py:794
msgid "Log In with EVE SSO"
msgstr ""
@@ -2017,6 +2204,10 @@ msgstr ""
msgid "Low Security"
msgstr ""
#: graphs/style.py:56
msgid "Magenta"
msgstr ""
#: gui/builtinStatsViews/targetingMiscViewMinimal.py:114
msgid "Maintenance bay"
msgstr ""
@@ -2130,6 +2321,10 @@ msgstr ""
msgid "Misc data"
msgstr ""
#: graphs/data/fitEwarStats/graph.py:41
msgid "Missile flight range reduction"
msgstr ""
#: eos/saveddata/damagePattern.py:86 eos/saveddata/damagePattern.py:87
#: eos/saveddata/damagePattern.py:88 eos/saveddata/damagePattern.py:89
msgid "Missiles"
@@ -2154,6 +2349,10 @@ msgstr ""
msgid "Mjolnir"
msgstr ""
#: graphs/data/fitMobility/graph.py:32
msgid "Mobility"
msgstr ""
#: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:83
msgid "Mode:"
msgstr ""
@@ -2162,6 +2361,10 @@ msgstr ""
msgid "Module"
msgstr ""
#: graphs/data/fitMobility/graph.py:37
msgid "Momentum"
msgstr ""
#: eos/saveddata/damagePattern.py:154 eos/saveddata/targetProfile.py:78
msgid "Mordus Legion"
msgstr ""
@@ -2294,6 +2497,10 @@ msgstr ""
msgid "Network"
msgstr ""
#: graphs/data/fitEwarStats/graph.py:36
msgid "Neuts: cap per second"
msgstr ""
#: gui/builtinContextMenus/itemAmountChange.py:98
msgid "New Amount ({}-{})"
msgstr ""
@@ -2346,6 +2553,10 @@ msgstr ""
msgid "None"
msgstr ""
#: graphs/style.py:80
msgid "Normal"
msgstr ""
#: eos/saveddata/damagePattern.py:128
msgid "Normal Subcaps"
msgstr ""
@@ -2354,7 +2565,7 @@ msgstr ""
msgid "Not Learned"
msgstr ""
#: gui/characterEditor.py:399
#: gui/characterEditor.py:399 service/character.py:322
msgid "Not learned"
msgstr ""
@@ -2418,6 +2629,10 @@ msgstr ""
msgid "Optimize Prices"
msgstr ""
#: graphs/style.py:55
msgid "Orange"
msgstr ""
#: gui/builtinStatsViews/targetingMiscViewMinimal.py:122
msgid "Ore hold"
msgstr ""
@@ -2586,6 +2801,10 @@ msgstr ""
msgid "Proxy settings"
msgstr ""
#: graphs/style.py:58
msgid "Purple"
msgstr ""
#: gui/builtinContextMenus/envEffectAdd.py:210
msgid "PvP Weather"
msgstr ""
@@ -2665,6 +2884,10 @@ msgstr ""
msgid "Recharge rates"
msgstr ""
#: graphs/style.py:52
msgid "Red"
msgstr ""
#: gui/mainMenuBar.py:84
msgid "Redo the most recent undone action"
msgstr ""
@@ -2683,6 +2906,14 @@ msgstr ""
msgid "Reinforced"
msgstr ""
#: graphs/data/fitRemoteReps/graph.py:62
msgid "Reload ancillary RRs"
msgstr ""
#: graphs/data/fitRemoteReps/graph.py:48
msgid "Remote Repairs"
msgstr ""
#: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104
#: gui/builtinStatsViews/outgoingViewFull.py:66
#: gui/builtinStatsViews/outgoingViewMinimal.py:65
@@ -2709,6 +2940,10 @@ msgstr ""
msgid "Reopen previous fits on startup"
msgstr ""
#: graphs/data/fitRemoteReps/graph.py:53
msgid "Repair speed"
msgstr ""
#: gui/copySelectDialog.py:50
msgid "Replace items by cheaper alternatives"
msgstr ""
@@ -2805,8 +3040,8 @@ msgstr ""
msgid "Salvage hold"
msgstr ""
#: gui/builtinContextMenus/envEffectAdd.py:112
#: eos/saveddata/damagePattern.py:156 eos/saveddata/targetProfile.py:80
#: gui/builtinContextMenus/envEffectAdd.py:112
msgid "Sansha Incursion"
msgstr ""
@@ -2946,6 +3181,21 @@ msgstr ""
msgid "Shield (+T2 DCU)"
msgstr ""
#: graphs/data/fitShieldRegen/graph.py:38
msgid "Shield Regeneration"
msgstr ""
#: graphs/data/fitShieldRegen/graph.py:42
#: graphs/data/fitShieldRegen/graph.py:55
#: graphs/data/fitShieldRegen/graph.py:56
#: graphs/data/fitShieldRegen/graph.py:61
msgid "Shield amount"
msgstr ""
#: graphs/data/fitShieldRegen/graph.py:62
msgid "Shield regen"
msgstr ""
#: gui/builtinStatsViews/resistancesViewFull.py:112
msgid "Shield resistance"
msgstr ""
@@ -2992,6 +3242,10 @@ msgstr ""
msgid "Show fitting tab tooltips"
msgstr ""
#: graphs/gui/ctrlPanel.py:71
msgid "Show legend"
msgstr ""
#: gui/builtinPreferenceViews/pyfaMarketPreferences.py:52
msgid "Show market shortcuts"
msgstr ""
@@ -3018,6 +3272,10 @@ msgid ""
"Leave blank for infinitely big value"
msgstr ""
#: graphs/data/fitEwarStats/graph.py:42
msgid "Signature radius increase"
msgstr ""
#: gui/aboutData.py:33
msgid ""
"Silk Icons Set by famfamfam.com - Creative Commons Attribution 2.5 License"
@@ -3054,10 +3312,19 @@ msgstr ""
msgid "Small ship hold"
msgstr ""
#: graphs/style.py:86
msgid "Solid"
msgstr ""
#: graphs/data/fitMobility/graph.py:35
#: gui/builtinStatsViews/targetingMiscViewMinimal.py:86
msgid "Speed"
msgstr ""
#: graphs/data/fitEwarStats/graph.py:37
msgid "Speed reduction"
msgstr ""
#: gui/builtinContextMenus/droneSplitStack.py:29
msgid "Split {} Stack"
msgstr ""
@@ -3078,10 +3345,26 @@ msgstr ""
msgid "Standard"
msgstr ""
#: graphs/data/fitCapacitor/graph.py:46
msgid "Starting cap amount"
msgstr ""
#: graphs/data/fitShieldRegen/graph.py:46
msgid "Starting shield amount"
msgstr ""
#: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:22
msgid "Statistics Panel"
msgstr ""
#: gui/builtinContextMenus/graphDmgDroneMode.py:45
msgid "Stick to Attacker"
msgstr ""
#: gui/builtinContextMenus/graphDmgDroneMode.py:44
msgid "Stick to Target"
msgstr ""
#: eos/saveddata/damagePattern.py:144 eos/saveddata/damagePattern.py:147
msgid "Subcaps"
msgstr ""
@@ -3143,6 +3426,14 @@ msgstr ""
msgid "T2 Resist"
msgstr ""
#: graphs/data/fitEwarStats/graph.py:40
msgid "TDs: turret optimal range reduction"
msgstr ""
#: graphs/data/fitEwarStats/graph.py:42
msgid "TPs: signature radius increase"
msgstr ""
#: gui/builtinContextMenus/shipModeChange.py:37
#: gui/builtinViewColumns/baseName.py:102 gui/builtinViews/fittingView.py:657
msgid "Tactical Mode"
@@ -3152,6 +3443,10 @@ msgstr ""
msgid "Talos"
msgstr ""
#: graphs/data/fitDamageStats/graph.py:75 graphs/gui/lists.py:359
msgid "Target"
msgstr ""
#: gui/targetProfileEditor.py:86
msgid "Target Profile"
msgstr ""
@@ -3168,6 +3463,37 @@ msgstr ""
msgid "Target Resists"
msgstr ""
#: graphs/data/fitMobility/graph.py:39
msgid "Target distance traveled"
msgstr ""
#: graphs/data/fitMobility/graph.py:45
msgid "Target inertia factor"
msgstr ""
#: graphs/data/fitMobility/graph.py:43
msgid "Target mass"
msgstr ""
#: graphs/data/fitEwarStats/graph.py:45
msgid "Target resistance"
msgstr ""
#: graphs/data/fitDamageStats/graph.py:71 graphs/data/fitLockTime/graph.py:37
msgid "Target signature"
msgstr ""
#: graphs/data/fitDamageStats/graph.py:62
#: graphs/data/fitDamageStats/graph.py:63 graphs/data/fitLockTime/graph.py:35
msgid "Target signature radius"
msgstr ""
#: graphs/data/fitDamageStats/graph.py:60
#: graphs/data/fitDamageStats/graph.py:61
#: graphs/data/fitDamageStats/graph.py:70 graphs/data/fitMobility/graph.py:38
msgid "Target speed"
msgstr ""
#: gui/builtinStatsViews/targetingMiscViewMinimal.py:40
msgid "Targeting && Misc"
msgstr ""
@@ -3236,8 +3562,8 @@ msgid ""
"on Github."
msgstr ""
#: gui/builtinContextMenus/moduleAmmoChange.py:25
#: eos/saveddata/damagePattern.py:40
#: gui/builtinContextMenus/moduleAmmoChange.py:25
msgid "Thermal"
msgstr ""
@@ -3299,6 +3625,15 @@ msgstr ""
msgid "Thukker"
msgstr ""
#: graphs/data/fitCapacitor/graph.py:34 graphs/data/fitCapacitor/graph.py:41
#: graphs/data/fitDamageStats/graph.py:59
#: graphs/data/fitDamageStats/graph.py:68 graphs/data/fitMobility/graph.py:33
#: graphs/data/fitMobility/graph.py:41 graphs/data/fitRemoteReps/graph.py:51
#: graphs/data/fitRemoteReps/graph.py:56 graphs/data/fitShieldRegen/graph.py:40
#: graphs/data/fitShieldRegen/graph.py:54
msgid "Time"
msgstr ""
#: eos/saveddata/damagePattern.py:80
msgid "Titanium Sabot"
msgstr ""
@@ -3325,6 +3660,10 @@ msgstr ""
msgid "Total Price Includes"
msgstr ""
#: graphs/data/fitRemoteReps/graph.py:54
msgid "Total repaired"
msgstr ""
#: gui/builtinStatsViews/capacitorViewFull.py:67
msgid "Total: "
msgstr ""
@@ -3356,6 +3695,10 @@ msgstr ""
msgid "Turret hardpoints"
msgstr ""
#: graphs/data/fitEwarStats/graph.py:40
msgid "Turret optimal range reduction"
msgstr ""
#: gui/builtinItemStatsViews/itemEffects.py:32
msgid "Type"
msgstr ""
@@ -3421,6 +3764,10 @@ msgstr ""
msgid "Use Fit-specific Implants"
msgstr ""
#: graphs/data/fitCapacitor/graph.py:48
msgid "Use capacitor simulator"
msgstr ""
#: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:39
msgid "Use character implants by default for new fits"
msgstr ""
@@ -3454,6 +3801,10 @@ msgstr ""
msgid "View Raw Data"
msgstr ""
#: graphs/data/fitDamageStats/graph.py:84
msgid "Volley"
msgstr ""
#: gui/builtinContextMenus/fitSystemSecurity.py:22
msgid "W-Space"
msgstr ""
@@ -3474,10 +3825,22 @@ msgstr ""
msgid "Warp Speed"
msgstr ""
#: graphs/data/fitWarpTime/graph.py:45
msgid "Warp Time"
msgstr ""
#: graphs/data/fitWarpTime/graph.py:49
msgid "Warp time"
msgstr ""
#: gui/builtinStatsViews/firepowerViewFull.py:67
msgid "Weapon"
msgstr ""
#: graphs/data/fitEwarStats/graph.py:37
msgid "Webs: speed reduction"
msgstr ""
#: gui/builtinPreferenceViews/pyfaEnginePreferences.py:61
msgid ""
"When damage profile is Uniform, set Reactive Armor Hardener to match (old "
@@ -3498,6 +3861,20 @@ msgid ""
"skill, as that requires Drones V"
msgstr ""
#: graphs/data/fitDamageStats/graph.py:69
msgid ""
"When set, uses attacker's exact damage stats at a given time\n"
"When not set, uses attacker's damage stats as shown in stats panel of main "
"window"
msgstr ""
#: graphs/data/fitRemoteReps/graph.py:57
msgid ""
"When set, uses repairing ship's exact RR stats at a given time\n"
"When not set, uses repairing ship's RR stats as shown in stats panel of main "
"window"
msgstr ""
#: eos/saveddata/damagePattern.py:112 eos/saveddata/targetProfile.py:85
msgid "Worm (Guristas)"
msgstr ""
@@ -3510,6 +3887,10 @@ msgstr ""
msgid "Xray"
msgstr ""
#: graphs/style.py:59
msgid "Yellow"
msgstr ""
#: gui/builtinItemStatsViews/itemEffects.py:56
msgid "Yes"
msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff