diff --git a/ChangeLog.md b/ChangeLog.md
index ae45fc74..95c98048 100644
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,6 +1,31 @@
This is the master changelog for Elite Dangerous Market Connector. Entries are in reverse chronological order (latest first).
---
+Release 4.2.3
+===
+
+This release mostly addresses an issue when Frontier Authorisation gets stuck
+on 'Logging in...' despite completing the authorisation on the Frontier
+website.
+
+* Allow `edmc...` argument to EDMarketConnector.exe. This should only be
+ necessary when something has prevented your web browser from invoking the
+ `edmc` protocol via DDE.
+
+ If you were encountering the 'Logging in...' issue and still do with this
+ release then please try running the application via the new
+ `EDMarketConnector - localserver-auth.bat` file in the installation
+ directory.
+
+ This simply runs EDMarketConnector.exe with the
+ `--force-localserver-for-auth` command-line argument. This forces the code
+ to setup and use a webserver on a random port on localhost for the
+ Frontier Authorisation callback, the same way it already works on
+ non-Windows platforms.
+
+* Add Korean translation to both the application and the installer.
+
+
Release 4.2.2
===
diff --git a/EDMarketConnector - localserver-auth.bat b/EDMarketConnector - localserver-auth.bat
new file mode 100644
index 00000000..3b0a3e74
--- /dev/null
+++ b/EDMarketConnector - localserver-auth.bat
@@ -0,0 +1 @@
+EDMarketConnector.exe --force-localserver-for-auth
diff --git a/EDMarketConnector.py b/EDMarketConnector.py
index 05aedc8d..ce97f9e3 100755
--- a/EDMarketConnector.py
+++ b/EDMarketConnector.py
@@ -60,6 +60,11 @@ if __name__ == '__main__': # noqa: C901
action='store_true'
)
+ parser.add_argument('edmc',
+ help='Callback from Frontier Auth',
+ nargs='*'
+ )
+
args = parser.parse_args()
if args.trace:
@@ -137,6 +142,7 @@ if __name__ == '__main__': # noqa: C901
if GetProcessHandleFromHwnd(window_handle):
# If GetProcessHandleFromHwnd succeeds then the app is already running as this user
if len(sys.argv) > 1 and sys.argv[1].startswith(protocolhandler_redirect):
+ logger.debug('Invoked with edmc:// protocol handler arg')
CoInitializeEx(0, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)
# Wait for it to be responsive to avoid ShellExecute recursing
ShowWindow(window_handle, SW_RESTORE)
@@ -194,7 +200,8 @@ if __name__ == '__main__': # noqa: C901
logger.info("An EDMarketConnector.exe process was already running, exiting.")
# To be sure the user knows, we need a popup
- already_running_popup()
+ if not args.edmc:
+ already_running_popup()
# If the user closes the popup with the 'X', not the 'OK' button we'll
# reach here.
sys.exit(0)
diff --git a/EDMarketConnector.wxs b/EDMarketConnector.wxs
index 830e5745..f0545442 100644
--- a/EDMarketConnector.wxs
+++ b/EDMarketConnector.wxs
@@ -18,8 +18,8 @@
Description="$(var.PRODUCTLONGNAME) installer"
InstallerVersion="300" Compressed="yes"
Platform="x86"
- Languages="1033,1029,1031,1034,1035,1036,1038,1040,1041,1043,1045,1046,1049,1058,1062,2052,2070,2074,6170,1060,1053,0" />
-
+ Languages="1033,1029,1031,1034,1035,1036,1038,1040,1041,1043,1045,1046,1049,1058,1062,2052,2070,2074,6170,1060,1053,18,0" />
+
@@ -224,6 +224,9 @@
+
+
+
@@ -249,6 +252,9 @@
+
+
+
@@ -565,6 +571,7 @@
+
@@ -593,6 +600,7 @@
+
diff --git a/L10n/ko.strings b/L10n/ko.strings
new file mode 100644
index 00000000..d4c36156
--- /dev/null
+++ b/L10n/ko.strings
@@ -0,0 +1,554 @@
+/* Label for 'UI Scaling' option [prefs.py] */
+"UI Scale Percentage" = "UI 스케일 백분율";
+
+/* Text describing that value '100' means 'default', and changes require a restart [prefs.py] */
+"100 means Default{CR}Restart Required for{CR}changes to take effect!" = "100은 '기본 설정'을 의미하며{CR}변경사항 적용을 위해{CR}재시작이 요구됩니다!";
+
+/* Language name */
+"!Language" = "영어";
+
+/* App menu entry on OSX. [EDMarketConnector.py] */
+"About {APP}" = "{APP} 정보";
+
+/* Federation rank. [stats.py] */
+"Admiral" = "Admiral";
+
+/* Explorer rank. [stats.py] */
+"Aimless" = "Aimless";
+
+/* Appearance setting. [EDMarketConnector.py] */
+"Always on top" = "항상 위에 보이기";
+
+/* CQC rank. [stats.py] */
+"Amateur" = "Amateur";
+
+/* EDSM setting. [edsm.py] */
+"API Key" = "API 키";
+
+/* Tab heading in settings. [prefs.py] */
+"Appearance" = "스타일";
+
+/* Successfully authenticated with the Frontier website. [EDMarketConnector.py] */
+"Authentication successful" = "인증 성공";
+
+/* Output setting. [prefs.py] */
+"Automatically update on docking" = "도킹시 자동으로 서버에 정보 업데이트하기";
+
+/* Cmdr stats. [stats.py] */
+"Balance" = "잔고";
+
+/* Empire rank. [stats.py] */
+"Baron" = "Baron";
+
+/* Trade rank. [stats.py] */
+"Broker" = "Broker";
+
+/* Folder selection button on Windows. [prefs.py] */
+"Browse..." = "찾아보기...";
+
+/* No 'commander' data in CAPI [EDMarketConnector.py] */
+"CAPI: No commander data returned" = "CAPI: 커맨더 정보가 반환되지 않음";
+
+/* Federation rank. [stats.py] */
+"Cadet" = "Cadet";
+
+/* CQC rank. [stats.py] */
+"Champion" = "Champion";
+
+/* Folder selection button on OSX. [prefs.py] */
+"Change..." = "바꾸기...";
+
+/* Menu item. [EDMarketConnector.py] */
+"Check for Updates..." = "업데이트 확인하기...";
+
+/* Federation rank. [stats.py] */
+"Chief Petty Officer" = "Chief Petty Officer";
+
+/* Main window. [EDMarketConnector.py] */
+"Cmdr" = "커맨더";
+
+/* Ranking. [stats.py] */
+"Combat" = "Combat";
+
+/* EDSM setting. [edsm.py] */
+"Commander Name" = "커맨더 이름";
+
+/* Combat rank. [stats.py] */
+"Competent" = "Competent";
+
+/* Tab heading in settings. [prefs.py] */
+"Configuration" = "환경 설정";
+
+/* Update button in main window. [EDMarketConnector.py] */
+"cooldown {SS}s" = "쿨다운 {SS}s";
+
+/* As in Copy and Paste. [EDMarketConnector.py] */
+"Copy" = "복사";
+
+/* Empire rank. [stats.py] */
+"Count" = "Count";
+
+/* Ranking. [stats.py] */
+"CQC" = "CQC";
+
+/* Combat rank. [stats.py] */
+"Dangerous" = "Dangerous";
+
+/* Appearance theme setting. [prefs.py] */
+"Dark" = "어둡게";
+
+/* Combat rank. [stats.py] */
+"Deadly" = "Deadly";
+
+/* Trade rank. [stats.py] */
+"Dealer" = "Dealer";
+
+/* Appearance theme and language setting. [l10n.py] */
+"Default" = "기본값";
+
+/* Output setting under 'Send system and scan data to the Elite Dangerous Data Network' new in E:D 2.2. [eddn.py] */
+"Delay sending until docked" = "도킹시까지 서버에 정보 전송을 미루기";
+
+/* Option to disabled Automatic Check For Updates whilst in-game [prefs.py] */
+"Disable Automatic Application Updates Check when in-game" = "게임이 실행중일 때 프로그램 업데이트 확인하지 않기";
+
+/* List of plugins in settings. [prefs.py] */
+"Disabled Plugins" = "비활성 플러그인";
+
+/* Help menu item. [EDMarketConnector.py] */
+"Documentation" = "문서 자료";
+
+/* Empire rank. [stats.py] */
+"Duke" = "Duke";
+
+/* Location of the new Journal file in E:D 2.2. [EDMarketConnector.py] */
+"E:D journal file location" = "E:D 저널(journal) 파일 위치";
+
+/* Empire rank. [stats.py] */
+"Earl" = "Earl";
+
+/* Menu title. [EDMarketConnector.py] */
+"Edit" = "편집";
+
+/* Top rank. [stats.py] */
+"Elite" = "Elite";
+
+/* Section heading in settings. [edsm.py] */
+"Elite Dangerous Star Map credentials" = "Elite Dangerous Star Map 계정";
+
+/* Ranking. [stats.py] */
+"Empire" = "Empire";
+
+/* List of plugins in settings. [prefs.py] */
+"Enabled Plugins" = "활성 플러그인";
+
+/* Federation rank. [stats.py] */
+"Ensign" = "Ensign";
+
+/* Trade rank. [stats.py] */
+"Entrepreneur" = "Entrepreneur";
+
+/* [eddn.py] */
+"Error: Can't connect to EDDN" = "오류: EDDN에 연결할 수 없음";
+
+/* [edsm.py] */
+"Error: Can't connect to EDSM" = "오류: EDSM에 연결할 수 없음";
+
+/* [inara.py] */
+"Error: Can't connect to Inara" = "오류: Inara에 연결할 수 없음";
+
+/* [edsm.py] */
+"Error: EDSM {MSG}" = "오류: EDSM {MSG}";
+
+/* Raised when cannot contact the Companion API server. [companion.py] */
+"Error: Frontier server is down" = "오류: Frontier 서버 CAPI 연결 불가";
+
+/* Raised when Companion API server is returning old data, e.g. when the servers are too busy. [companion.py] */
+"Error: Frontier server is lagging" = "오류: Frontier 서버 응답이 지연되고 있음";
+
+/* Raised when the Companion API server thinks that the user has not purchased E:D. i.e. doesn't have the correct 'SKU'. [companion.py] */
+"Error: Frontier server SKU problem" = "오류: Frontier 서버 SKU 문제 발생";
+
+/* [inara.py] */
+"Error: Inara {MSG}" = "오류: Inara {MSG}";
+
+/* [companion.py] */
+"Error: Invalid Credentials" = "오류: 잘못된 자격 증명";
+
+/* Raised when the user has multiple accounts and the username/password setting is not for the account they're currently playing OR the user has reset their Cmdr and the Companion API server is still returning data for the old Cmdr. [companion.py] */
+"Error: Wrong Cmdr" = "오류: 잘못된 Cmdr";
+
+/* Item in the File menu on Windows. [EDMarketConnector.py] */
+"Exit" = "종료";
+
+/* Combat rank. [stats.py] */
+"Expert" = "Expert";
+
+/* Ranking. [stats.py] */
+"Explorer" = "Explorer";
+
+/* Ranking. [stats.py] */
+"Federation" = "Federation";
+
+/* [EDMarketConnector.py] */
+"Fetching data..." = "데이터 가져오는 중...";
+
+/* Multicrew role. [EDMarketConnector.py] */
+"Fighter" = "Fighter";
+
+/* Menu title. [EDMarketConnector.py] */
+"File" = "파일";
+
+/* Section heading in settings. [prefs.py] */
+"File location" = "파일 위치";
+
+/* CQC rank. [stats.py] */
+"Gladiator" = "Gladiator";
+
+/* Multicrew role. [EDMarketConnector.py] */
+"Gunner" = "Gunner";
+
+/* Combat rank. [stats.py] */
+"Harmless" = "Harmless";
+
+/* Multicrew role. [EDMarketConnector.py] */
+"Helm" = "Helm";
+
+/* Menu title. [EDMarketConnector.py] */
+"Help" = "도움말";
+
+/* CQC rank. [stats.py] */
+"Helpless" = "Helpless";
+
+/* CQC rank. [stats.py] */
+"Hero" = "Hero";
+
+/* Dark theme color setting. [prefs.py] */
+"Highlighted text" = "강조된 텍스트";
+
+/* Hotkey/Shortcut settings prompt on Windows. [prefs.py] */
+"Hotkey" = "단축키";
+
+/* Changed journal update_lock failed [monitor.py] */
+"Ignore" = "무시하기";
+
+/* Section heading in settings. [inara.py] */
+"Inara credentials" = "Inara 계정 정보";
+
+/* Changed journal update_lock failed [monitor.py] */
+"Journal directory already locked" = "저널 디렉터리가 이미 잠김";
+
+/* Hotkey/Shortcut settings prompt on OSX. [prefs.py] */
+"Keyboard shortcut" = "단축키 설정";
+
+/* Empire rank. [stats.py] */
+"King" = "King";
+
+/* Empire rank. [stats.py] */
+"Knight" = "Knight";
+
+/* Appearance setting prompt. [prefs.py] */
+"Language" = "언어";
+
+/* [EDMarketConnector.py] - Leave '%H:%M:%S' as-is */
+"Last updated at %H:%M:%S" = "마지막 업데이트: %H:%M:%S";
+
+/* Federation rank. [stats.py] */
+"Lieutenant" = "Lieutenant";
+
+/* Federation rank. [stats.py] */
+"Lieutenant Commander" = "Lieutenant Commander";
+
+/* Cmdr stats. [stats.py] */
+"Loan" = "대출";
+
+/* [EDMarketConnector.py] */
+"Logging in..." = "로그인하는 중...";
+
+/* Empire rank. [stats.py] */
+"Lord" = "Lord";
+
+/* [prefs.py] */
+"Market data in CSV format file" = "CSV 형식 파일의 마켓 정보";
+
+/* [prefs.py] */
+"Market data in Trade Dangerous format file" = "Trade Dangerous 형식 파일의 마켓 정보";
+
+/* Empire rank. [stats.py] */
+"Marquis" = "Marquis";
+
+/* Combat rank. [stats.py] */
+"Master" = "Master";
+
+/* Trade rank. [stats.py] */
+"Merchant" = "Merchant";
+
+/* Federation rank. [stats.py] */
+"Midshipman" = "Midshipman";
+
+/* Explorer rank. [stats.py] */
+"Mostly Aimless" = "Mostly Aimless";
+
+/* Combat rank. [stats.py] */
+"Mostly Harmless" = "Mostly Harmless";
+
+/* CQC rank. [stats.py] */
+"Mostly Helpless" = "Mostly Helpless";
+
+/* Trade rank. [stats.py] */
+"Mostly Penniless" = "Mostly Penniless";
+
+/* No hotkey/shortcut currently defined. [prefs.py] */
+"None" = "없음";
+
+/* Dark theme color setting. [prefs.py] */
+"Normal text" = "일반 텍스트";
+
+/* Combat rank. [stats.py] */
+"Novice" = "Novice";
+
+/* [prefs.py] */
+"OK" = "OK";
+
+/* Hotkey/Shortcut setting. [prefs.py] */
+"Only when Elite: Dangerous is the active app" = "Elite: Dangerous가 활성 창 상태일때만";
+
+/* Button that opens a folder in Explorer/Finder. [prefs.py] */
+"Open" = "열기";
+
+/* Shortcut settings button on OSX. [prefs.py] */
+"Open System Preferences" = "시스템 설정 열기";
+
+/* Tab heading in settings. [prefs.py] */
+"Output" = "출력";
+
+/* Empire rank. [stats.py] */
+"Outsider" = "Outsider";
+
+/* Explorer rank. [stats.py] */
+"Pathfinder" = "Pathfinder";
+
+/* Trade rank. [stats.py] */
+"Peddler" = "Peddler";
+
+/* Trade rank. [stats.py] */
+"Penniless" = "Penniless";
+
+/* Federation rank. [stats.py] */
+"Petty Officer" = "Petty Officer";
+
+/* Explorer rank. [stats.py] */
+"Pioneer" = "Pioneer";
+
+/* Hotkey/Shortcut setting. [prefs.py] */
+"Play sound" = "소리 재생하기";
+
+/* [prefs.py] */
+"Please choose what data to save" = "어느 데이터를 저장할 지 선택해주세요";
+
+/* Tab heading in settings. [prefs.py] */
+"Plugins" = "플러그인";
+
+/* Section heading in settings. [prefs.py] */
+"Plugins folder" = "플러그인 폴더";
+
+/* Popup title: Warning about plugins without Python 3.x support [EDMarketConnector.py] */
+"EDMC: Plugins Without Python 3.x Support" = "EDMC: Python 3.x을 지원하지 않는 플러그인";
+
+/* Popup body: Warning about plugins without Python 3.x support [EDMarketConnector.py] */
+"One or more of your enabled plugins do not yet have support for Python 3.x. Please see the list on the '{PLUGINS}' tab of '{FILE}' > '{SETTINGS}'. You should check if there is an updated version available, else alert the developer that they need to update the code for Python 3.x.\r\n\r\nYou can disable a plugin by renaming its folder to have '{DISABLED}' on the end of the name." = "활성화된 플러그인 중 1개 이상이 Python 3.x를 지원하지 않습니다. '{FILE}' > '{SETTINGS}' 에서 '{PLUGINS}' 탭에 들어가 활성화되어있는 플러그인 목록을 확인하십시오. 플러그인들 중 새 버전이 나온 것이 있는지도 확인해보시고, 만약 3.x를 지원하지도, 새 버전도 없다면 해당 플러그인의 개발자에게 코드를 수정하기를 문의하십시오.\n\n플러그인을 비활성화하려면 '{DISABLED}'를 폴더명 뒤에 추가하면 됩니다.";
+
+/* Settings>Plugins>Plugins without Python 3.x support [prefs.py] */
+"Plugins Without Python 3.x Support" = "Python 3.x을 지원하지 않는 플러그인";
+
+/* Settings>Plugins>Information on migrating plugins [prefs.py] */
+"Information on migrating plugins" = "플러그인 위치 변경에 대한 정보";
+
+/* Federation rank. [stats.py] */
+"Post Captain" = "Post Captain";
+
+/* Federation rank. [stats.py] */
+"Post Commander" = "Post Commander";
+
+/* Ranking. [stats.py] */
+"Powerplay" = "Powerplay";
+
+/* [prefs.py] */
+"Preferences" = "설정";
+
+/* Settings prompt for preferred ship loadout, system and station info websites. [prefs.py] */
+"Preferred websites" = "선호하는 사이트";
+
+/* Empire rank. [stats.py] */
+"Prince" = "Prince";
+
+/* Help menu item. [EDMarketConnector.py] */
+"Privacy Policy" = "개인정보처리방침";
+
+/* CQC rank. [stats.py] */
+"Professional" = "Professional";
+
+/* Explorer rank. [stats.py] */
+"Ranger" = "Ranger";
+
+/* Power rank. [stats.py] */
+"Rating 1" = "Rating 1";
+
+/* Power rank. [stats.py] */
+"Rating 2" = "Rating 2";
+
+/* Power rank. [stats.py] */
+"Rating 3" = "Rating 3";
+
+/* Power rank. [stats.py] */
+"Rating 4" = "Rating 4";
+
+/* Power rank. [stats.py] */
+"Rating 5" = "Rating 5";
+
+/* Shortcut settings prompt on OSX. [prefs.py] */
+"Re-start {APP} to use shortcuts" = "단축키를 사용하려면 {APP}을(를) 다시 시작하십시오";
+
+/* Federation rank. [stats.py] */
+"Rear Admiral" = "Rear Admiral";
+
+/* Federation rank. [stats.py] */
+"Recruit" = "Recruit";
+
+/* Help menu item. [EDMarketConnector.py] */
+"Release Notes" = "릴리즈 노트";
+
+/* Changed journal update_lock failed [monitor.py] */
+"Retry" = "재시도";
+
+/* Multicrew role label in main window. [EDMarketConnector.py] */
+"Role" = "Role";
+
+/* Menu item. [EDMarketConnector.py] */
+"Save Raw Data..." = "Raw 데이터 저장하기...";
+
+/* Explorer rank. [stats.py] */
+"Scout" = "Scout";
+
+/* CQC rank. [stats.py] */
+"Semi Professional" = "Semi Professional";
+
+/* [edsm.py] */
+"Send flight log and Cmdr status to EDSM" = "EDSM에 flight 로그와 커맨더 상태 정보 전송하기";
+
+/* [inara.py] */
+"Send flight log and Cmdr status to Inara" = "Inara에 flight 로그와 커맨더 상태 정보 전송하기";
+
+/* Output setting. [eddn.py] */
+"Send station data to the Elite Dangerous Data Network" = "Elite Dangerous Data Network에 스테이션 정보 전송하기";
+
+/* Output setting new in E:D 2.2. [eddn.py] */
+"Send system and scan data to the Elite Dangerous Data Network" = "Elite Dangerous Data Network에 시스템 및 스캔 정보 전송하기";
+
+/* [eddn.py] */
+"Sending data to EDDN..." = "EDDN에 정보 전송하는 중...";
+
+/* Empire rank. [stats.py] */
+"Serf" = "Serf";
+
+/* Item in the File menu on Windows. [EDMarketConnector.py] */
+"Settings" = "설정";
+
+/* Main window. [EDMarketConnector.py] */
+"Ship" = "함선";
+
+/* Output setting. [prefs.py] */
+"Ship loadout" = "함선 피팅";
+
+/* Status dialog title. [stats.py] */
+"Ships" = "함선(들)";
+
+/* Setting to decide which ship outfitting website to link to - either E:D Shipyard or Coriolis. [prefs.py] */
+"Shipyard" = "쉽야드";
+
+/* Status line text that appears when process exit sequence starts [EDMarketConnector.py] */
+"Shutting down..." = "종료하는 중...";
+
+/* Empire rank. [stats.py] */
+"Squire" = "Squire";
+
+/* Main window. [EDMarketConnector.py] */
+"Station" = "스테이션";
+
+/* [EDMarketConnector.py] */
+"Station doesn't have a market!" = "스테이션에 마켓이 없습니다!";
+
+/* [EDMarketConnector.py] */
+"Station doesn't have anything!" = "스테이션에 아무것도 없습니다!";
+
+/* Menu item. [EDMarketConnector.py] */
+"Status" = "상태";
+
+/* Explorer rank. [stats.py] */
+"Surveyor" = "Surveyor";
+
+/* Main window. [EDMarketConnector.py] */
+"System" = "시스템";
+
+/* Changed journal update_lock failed [monitor.py] */
+"The new Journal Directory location is already locked.{CR}You can either attempt to resolve this and then Retry, or choose to Ignore this." = "새 저널 디렉토리(Journal Directory)가 이미 잠겨있습니다.{CR}문제 해결을 시도하고 재시도하거나, 무시하는 방법이 있습니다.";
+
+/* Appearance setting. [prefs.py] */
+"Theme" = "테마";
+
+/* Help text in settings. [prefs.py] */
+"Tip: You can disable a plugin by{CR}adding '{EXT}' to its folder name" = "팁: 플러그인을 비활성화하려면{CR} '{EXT}'를 폴더명 뒤에 추가하면 됨";
+
+/* Ranking. [stats.py] */
+"Trade" = "Trade";
+
+/* Explorer rank. [stats.py] */
+"Trailblazer" = "Trailblazer";
+
+/* Appearance theme setting. [prefs.py] */
+"Transparent" = "투명하게";
+
+/* Trade rank. [stats.py] */
+"Tycoon" = "Tycoon";
+
+/* Update button in main window. [EDMarketConnector.py] */
+"Update" = "새로 고침";
+
+/* Option to use alternate URL method on shipyard links [prefs.py] */
+"Use alternate URL method" = "다른 URL 형식 사용하기";
+
+/* Status dialog subtitle - CR value of ship. [stats.py] */
+"Value" = "가치";
+
+/* Federation rank. [stats.py] */
+"Vice Admiral" = "Vice Admiral";
+
+/* Menu title on OSX. [EDMarketConnector.py] */
+"View" = "보기";
+
+/* Empire rank. [stats.py] */
+"Viscount" = "Viscount";
+
+/* Federation rank. [stats.py] */
+"Warrant Officer" = "Warrant Officer";
+
+/* Shouldn't happen. [EDMarketConnector.py] */
+"What are you flying?!" = "지금 어떤 함선을 몰고 계신 건가요?!";
+
+/* Shouldn't happen. [EDMarketConnector.py] */
+"Where are you?!" = "어디 계신거죠?!";
+
+/* Shouldn't happen. [EDMarketConnector.py] */
+"Who are you?!" = "당신은 누구시죠?!";
+
+/* Menu title on OSX. [EDMarketConnector.py] */
+"Window" = "창";
+
+/* [EDMarketConnector.py] */
+"You're not docked at a station!" = "스테이션에 도킹되어 있지 않습니다!";
+
+/* Shortcut settings prompt on OSX. [prefs.py] */
+"{APP} needs permission to use shortcuts" = "단축기 사용을 위해선 {APP}이 권한 허용을 필요로 합니다";
+
+/* Label for user configured level of logging [prefs.py] */
+"Log Level" = "로깅 수준";
diff --git a/config.py b/config.py
index 1c660ac7..9f2f5087 100644
--- a/config.py
+++ b/config.py
@@ -13,10 +13,10 @@ appcmdname = 'EDMC'
# appversion **MUST** follow Semantic Versioning rules:
#
# Major.Minor.Patch(-prerelease)(+buildmetadata)
-appversion = '4.2.2' #-rc1+a872b5f'
+appversion = '4.2.3' #-rc1+a872b5f'
# For some things we want appversion without (possible) +build metadata
appversion_nobuild = str(semantic_version.Version(appversion).truncate('prerelease'))
-copyright = u'© 2015-2019 Jonathan Harris, 2020 EDCD'
+copyright = u'© 2015-2019 Jonathan Harris, 2020-2021 EDCD'
update_feed = 'https://raw.githubusercontent.com/EDCD/EDMarketConnector/releases/edmarketconnector.xml'
update_interval = 8*60*60
diff --git a/docs/Translations.md b/docs/Translations.md
index cdd2b63f..89e3f850 100644
--- a/docs/Translations.md
+++ b/docs/Translations.md
@@ -82,7 +82,7 @@ To add a new language to the app:
Remember that until there are translations all strings will default to the English version (actually the key, which is always specified in English).
-1. You need to get the new `.string` file added to the files the installer will install:
+1. You need to get the new `.strings` file added to the files the installer will install:
1. Edit `EDMarketConnector.wxs` to add an appropriate section to the:
``
diff --git a/setup.py b/setup.py
index 6d71fb6b..e3868777 100755
--- a/setup.py
+++ b/setup.py
@@ -150,6 +150,7 @@ elif sys.platform=='win32':
'%s.ico' % APPNAME,
'%s/DLLs/sqlite3.dll' % (sys.base_prefix),
'EDMarketConnector - TRACE.bat',
+ 'EDMarketConnector - localserver-auth.bat',
]),
('L10n', [join('L10n',x) for x in os.listdir('L10n') if x.endswith('.strings')]),
('plugins', PLUGINS),