From ae33408a87957147013390be508603528c153892 Mon Sep 17 00:00:00 2001 From: bordoray Date: Thu, 20 Jun 2024 14:51:08 +0900 Subject: [PATCH 01/15] make pro file --- elevation_tile_for_jp.pro | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 elevation_tile_for_jp.pro diff --git a/elevation_tile_for_jp.pro b/elevation_tile_for_jp.pro new file mode 100644 index 0000000..89438a0 --- /dev/null +++ b/elevation_tile_for_jp.pro @@ -0,0 +1,8 @@ +SOURCES += progress_dialog.py \ + get_tiles.py \ + elevation_tile_tools/elevation_tile_converter.py + +FORMS += elevation_tile_for_jp_dialog_base.ui \ + progress_dialog.ui + +TRANSLATIONS = ./i18n/ELEVATONTILE4JP_ja.ts ./i18n/ELEVATIONTILE4JP_fr.ts \ No newline at end of file From 265c10cee57f528351c757150c02a81235a7ed4e Mon Sep 17 00:00:00 2001 From: bordoray Date: Fri, 21 Jun 2024 08:08:38 +0900 Subject: [PATCH 02/15] create ts files --- elevation_tile_for_jp.pro | 2 +- i18n/ELEVATIONTILE4JP_ja.ts | 49 +++++++++++++++++++++++++++++++++++++ i18n/ELEVATONTILE4JP_en.ts | 49 +++++++++++++++++++++++++++++++++++++ 3 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 i18n/ELEVATIONTILE4JP_ja.ts create mode 100644 i18n/ELEVATONTILE4JP_en.ts diff --git a/elevation_tile_for_jp.pro b/elevation_tile_for_jp.pro index 89438a0..bad7124 100644 --- a/elevation_tile_for_jp.pro +++ b/elevation_tile_for_jp.pro @@ -5,4 +5,4 @@ SOURCES += progress_dialog.py \ FORMS += elevation_tile_for_jp_dialog_base.ui \ progress_dialog.ui -TRANSLATIONS = ./i18n/ELEVATONTILE4JP_ja.ts ./i18n/ELEVATIONTILE4JP_fr.ts \ No newline at end of file +TRANSLATIONS = ./i18n/ELEVATONTILE4JP_en.ts ./i18n/ELEVATIONTILE4JP_ja.ts \ No newline at end of file diff --git a/i18n/ELEVATIONTILE4JP_ja.ts b/i18n/ELEVATIONTILE4JP_ja.ts new file mode 100644 index 0000000..4ac9c8e --- /dev/null +++ b/i18n/ELEVATIONTILE4JP_ja.ts @@ -0,0 +1,49 @@ + + + + Dialog + + + 処理中... + + + + + %v/%m + + + + + テキスト + + + + + 中断 + + + + + ElevationTileforJPDialog + + + ElevationTile4JP + + + + + 標高タイルズームレベル + + + + + 出力ファイル + + + + + 出力ファイルCRS + + + + diff --git a/i18n/ELEVATONTILE4JP_en.ts b/i18n/ELEVATONTILE4JP_en.ts new file mode 100644 index 0000000..4ac9c8e --- /dev/null +++ b/i18n/ELEVATONTILE4JP_en.ts @@ -0,0 +1,49 @@ + + + + Dialog + + + 処理中... + + + + + %v/%m + + + + + テキスト + + + + + 中断 + + + + + ElevationTileforJPDialog + + + ElevationTile4JP + + + + + 標高タイルズームレベル + + + + + 出力ファイル + + + + + 出力ファイルCRS + + + + From c511c8d3d93d6342f7f516136d89f1e2c87d438d Mon Sep 17 00:00:00 2001 From: bordoray Date: Fri, 21 Jun 2024 09:19:40 +0900 Subject: [PATCH 03/15] English ts first round --- i18n/ELEVATONTILE4JP_en.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/i18n/ELEVATONTILE4JP_en.ts b/i18n/ELEVATONTILE4JP_en.ts index 4ac9c8e..f8d3083 100644 --- a/i18n/ELEVATONTILE4JP_en.ts +++ b/i18n/ELEVATONTILE4JP_en.ts @@ -4,7 +4,7 @@ Dialog - 処理中... + Processing... @@ -14,12 +14,12 @@ - テキスト + Something - 中断 + Cancel @@ -32,17 +32,17 @@ - 標高タイルズームレベル + Elevation tile zoom level - 出力ファイル + Output file path - 出力ファイルCRS + Output file CRS From 6a3cd876c02e25b40f49e26766e438af9412935a Mon Sep 17 00:00:00 2001 From: bordoray Date: Fri, 21 Jun 2024 10:48:54 +0900 Subject: [PATCH 04/15] Revert "English ts first round" This reverts commit c511c8d3d93d6342f7f516136d89f1e2c87d438d. --- i18n/ELEVATONTILE4JP_en.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/i18n/ELEVATONTILE4JP_en.ts b/i18n/ELEVATONTILE4JP_en.ts index f8d3083..4ac9c8e 100644 --- a/i18n/ELEVATONTILE4JP_en.ts +++ b/i18n/ELEVATONTILE4JP_en.ts @@ -4,7 +4,7 @@ Dialog - Processing... + 処理中... @@ -14,12 +14,12 @@ - Something + テキスト - Cancel + 中断 @@ -32,17 +32,17 @@ - Elevation tile zoom level + 標高タイルズームレベル - Output file path + 出力ファイル - Output file CRS + 出力ファイルCRS From 7843b0e1be1d9f211498e323171c1309b4ac820b Mon Sep 17 00:00:00 2001 From: bordoray Date: Fri, 21 Jun 2024 11:37:03 +0900 Subject: [PATCH 05/15] UI translate --- elevation_tile_for_jp.pro | 2 +- elevation_tile_for_jp.py | 34 +++++++-------- elevation_tile_for_jp_dialog_base.ui | 6 +-- i18n/ELEVATIONTILE4JP_en.qm | Bin 0 -> 555 bytes ...ONTILE4JP_en.ts => ELEVATIONTILE4JP_en.ts} | 39 +++++++++--------- i18n/ELEVATIONTILE4JP_ja.qm | Bin 0 -> 452 bytes i18n/ELEVATIONTILE4JP_ja.ts | 39 +++++++++--------- progress_dialog.ui | 6 +-- 8 files changed, 61 insertions(+), 65 deletions(-) create mode 100644 i18n/ELEVATIONTILE4JP_en.qm rename i18n/{ELEVATONTILE4JP_en.ts => ELEVATIONTILE4JP_en.ts} (56%) create mode 100644 i18n/ELEVATIONTILE4JP_ja.qm diff --git a/elevation_tile_for_jp.pro b/elevation_tile_for_jp.pro index bad7124..406dc18 100644 --- a/elevation_tile_for_jp.pro +++ b/elevation_tile_for_jp.pro @@ -5,4 +5,4 @@ SOURCES += progress_dialog.py \ FORMS += elevation_tile_for_jp_dialog_base.ui \ progress_dialog.ui -TRANSLATIONS = ./i18n/ELEVATONTILE4JP_en.ts ./i18n/ELEVATIONTILE4JP_ja.ts \ No newline at end of file +TRANSLATIONS = ./i18n/ELEVATIONTILE4JP_en.ts ./i18n/ELEVATIONTILE4JP_ja.ts \ No newline at end of file diff --git a/elevation_tile_for_jp.py b/elevation_tile_for_jp.py index 6e372f3..4b83ae2 100644 --- a/elevation_tile_for_jp.py +++ b/elevation_tile_for_jp.py @@ -31,7 +31,6 @@ class ElevationTileForJP: - def __init__(self, iface): # Save reference to the QGIS interface self.iface = iface @@ -39,14 +38,13 @@ def __init__(self, iface): self.plugin_dir = os.path.dirname(__file__) # initialize locale - if QSettings().value('locale/userLocale') is not None: - locale = QSettings().value('locale/userLocale')[0:2] + if QSettings().value("locale/userLocale") is not None: + locale = QSettings().value("locale/userLocale")[0:2] else: - locale = 'en' + locale = "en" locale_path = os.path.join( - self.plugin_dir, - 'i18n', - 'ElevationTile4JP{}.qm'.format(locale)) + self.plugin_dir, "i18n", "ELEVATIONTILE4JP_{}.qm".format(locale) + ) if os.path.exists(locale_path): self.translator = QTranslator() @@ -55,7 +53,7 @@ def __init__(self, iface): # Declare instance attributes self.actions = [] - self.menu = self.tr(u'&ElevationTile4JP') + self.menu = self.tr("&ElevationTile4JP") # Check if plugin was started the first time in current QGIS session # Must be set in initGui() to survive plugin reloads @@ -64,7 +62,7 @@ def __init__(self, iface): # noinspection PyMethodMayBeStatic def tr(self, message): # noinspection PyTypeChecker,PyArgumentList,PyCallByClass - return QCoreApplication.translate('ElevationTileForJP', message) + return QCoreApplication.translate("ElevationTileForJP", message) def add_action( self, @@ -76,9 +74,8 @@ def add_action( add_to_toolbar=True, status_tip=None, whats_this=None, - parent=None + parent=None, ): - icon = QIcon(icon_path) action = QAction(icon, text, parent) action.triggered.connect(callback) @@ -95,30 +92,27 @@ def add_action( self.iface.addToolBarIcon(action) if add_to_menu: - self.iface.addPluginToMenu( - self.menu, - action) + self.iface.addPluginToMenu(self.menu, action) self.actions.append(action) return action def initGui(self): - icon_path = self.plugin_dir + '/icon.png' + icon_path = self.plugin_dir + "/icon.png" self.add_action( icon_path, - text=self.tr(u'ElevationTile4JP'), + text=self.tr("ElevationTile4JP"), callback=self.dialog_show, - parent=self.iface.mainWindow()) + parent=self.iface.mainWindow(), + ) # will be set False in run() self.first_start = True def unload(self): for action in self.actions: - self.iface.removePluginMenu( - self.tr(u'&ElevationTile4JP'), - action) + self.iface.removePluginMenu(self.tr("&ElevationTile4JP"), action) self.iface.removeToolBarIcon(action) def dialog_show(self): diff --git a/elevation_tile_for_jp_dialog_base.ui b/elevation_tile_for_jp_dialog_base.ui index 0368d61..9acbe03 100644 --- a/elevation_tile_for_jp_dialog_base.ui +++ b/elevation_tile_for_jp_dialog_base.ui @@ -39,7 +39,7 @@ ArrowCursor - 標高タイルズームレベル + Elevation tile zoom level @@ -70,7 +70,7 @@ - 出力ファイル + Output file path @@ -110,7 +110,7 @@ - 出力ファイルCRS + Output file CRS diff --git a/i18n/ELEVATIONTILE4JP_en.qm b/i18n/ELEVATIONTILE4JP_en.qm new file mode 100644 index 0000000000000000000000000000000000000000..b039a385dbb1a6963bfa4fcb20430f3d7390fbe6 GIT binary patch literal 555 zcmcE7ks@*G{hX<16=n7(EZlq7iGhK^fMtf~9w5!Y8eLJ$z`&@?x+UWWkgnyJ%e@>Z zoX@$A - + + Dialog - + - 処理中... - + Processing... + Processing... %v/%m - + - テキスト - + Progressing + Progressing - + - 中断 - + Cancel + Cancel @@ -30,20 +31,20 @@ ElevationTile4JP - + - 標高タイルズームレベル - + Elevation tile zoom level + Elevation tile zoom level - + - 出力ファイル - + Output file path + Output file path - + - 出力ファイルCRS - + Output file CRS + Output file CRS diff --git a/i18n/ELEVATIONTILE4JP_ja.qm b/i18n/ELEVATIONTILE4JP_ja.qm new file mode 100644 index 0000000000000000000000000000000000000000..d619e68ffe2ea73994990636f0611b2a43e4446e GIT binary patch literal 452 zcmcE7ks@*G{hX<16=n7(EZlq7iGhK^fMtf~9w5!Y8eLHgq#m - + + Dialog - + - 処理中... - + Processing... + 処理中... %v/%m - + - テキスト - + Progressing + テキスト - + - 中断 - + Cancel + 中断 @@ -30,20 +31,20 @@ ElevationTile4JP - + - 標高タイルズームレベル - + Elevation tile zoom level + 標高タイルズームレベル - + - 出力ファイル - + Output file path + 出力ファイル - + - 出力ファイルCRS - + Output file CRS + 出力ファイルCRS diff --git a/progress_dialog.ui b/progress_dialog.ui index e2eadc5..2c4987e 100644 --- a/progress_dialog.ui +++ b/progress_dialog.ui @@ -17,7 +17,7 @@ - 処理中... + Processing... @@ -48,7 +48,7 @@ - テキスト + Progressing Qt::AlignCenter @@ -66,7 +66,7 @@ - 中断 + Cancel From 67aef179642beed08bf2c480d906191bc1f91e33 Mon Sep 17 00:00:00 2001 From: bordoray Date: Fri, 21 Jun 2024 16:21:27 +0900 Subject: [PATCH 06/15] Draft translate --- elevation_tile_for_jp.py | 2 +- .../elevation_tile_converter.py | 4 +- get_tiles.py | 64 ++++++---- i18n/ELEVATIONTILE4JP_en.qm | Bin 555 -> 2864 bytes i18n/ELEVATIONTILE4JP_en.ts | 114 ++++++++++++++++- i18n/ELEVATIONTILE4JP_ja.qm | Bin 452 -> 2519 bytes i18n/ELEVATIONTILE4JP_ja.ts | 116 +++++++++++++++++- progress_dialog.py | 6 +- 8 files changed, 270 insertions(+), 36 deletions(-) diff --git a/elevation_tile_for_jp.py b/elevation_tile_for_jp.py index 4b83ae2..664e8e1 100644 --- a/elevation_tile_for_jp.py +++ b/elevation_tile_for_jp.py @@ -21,7 +21,7 @@ ***************************************************************************/ """ -from PyQt5.QtCore import QSettings, QTranslator, qVersion, QCoreApplication +from PyQt5.QtCore import QSettings, QTranslator, QCoreApplication from PyQt5.QtGui import QIcon from PyQt5.QtWidgets import QAction diff --git a/elevation_tile_tools/elevation_tile_converter.py b/elevation_tile_tools/elevation_tile_converter.py index df725e4..028677a 100644 --- a/elevation_tile_tools/elevation_tile_converter.py +++ b/elevation_tile_tools/elevation_tile_converter.py @@ -108,7 +108,7 @@ def tile_to_pixel_coordinate_of_corner(z, x_tile_coordinate, y_tile_coordinate): def run(self): try: self.setMaximum.emit(self.number_of_tiles) - self.postMessage.emit("集計中") + self.postMessage.emit(self.tr("Processing...")) self.setAbortable.emit(True) # get elevation tile arrays @@ -131,7 +131,7 @@ def run(self): except Exception as e: self.processFailed.emit(e) - self.postMessage.emit("終了処理中") + self.postMessage.emit(self.tr("Finalizing...")) self.processFinished.emit() def create_geotiff(self): diff --git a/get_tiles.py b/get_tiles.py index d2f00b6..011d11e 100644 --- a/get_tiles.py +++ b/get_tiles.py @@ -24,7 +24,7 @@ from math import log from PyQt5.QtWidgets import QMessageBox -from PyQt5.QtCore import QThread +from PyQt5.QtCore import QThread, QCoreApplication from qgis.core import ( QgsProject, QgsRasterLayer, @@ -41,7 +41,6 @@ class GetTilesWithinMapCanvas: - # ダイアログの初期表示等の処理はここに記載する def __init__(self, iface): self.iface = iface @@ -57,7 +56,7 @@ def __init__(self, iface): self.dlg.mQgsFileWidget_output.setStorageMode( QgsFileWidget.StorageMode.SaveFile ) - self.dlg.mQgsFileWidget_output.setDialogTitle("保存ファイルを選択してください") + self.dlg.mQgsFileWidget_output.setDialogTitle(self.tr("Select output file")) # プロジェクトのデフォルトのcrsを格納 self.dlg.mQgsProjectionSelectionWidget_output_crs.setCrs(self.project.crs()) @@ -78,9 +77,13 @@ def __init__(self, iface): self.process_interrupted = False + def tr(self, message): + # noinspection PyTypeChecker,PyArgumentList,PyCallByClass + return QCoreApplication.translate("ElevationTileForJP", message) + # update extent crs when updated def on_map_crs_changed(self): - self.dlg.mExtentGroupBox.setOutputCrs(QgsProject.instance().crs()), + (self.dlg.mExtentGroupBox.setOutputCrs(QgsProject.instance().crs()),) self.dlg.mExtentGroupBox.setOutputExtentFromCurrent() # キャンセルクリック @@ -96,8 +99,8 @@ def on_abort_clicked( ) -> None: if QMessageBox.Yes == QMessageBox.question( None, - "確認", - "処理を中断し、以降の処理をスキップしてよろしいですか?", + self.tr("Aborting"), + self.tr("Are you sure to cancel process?"), QMessageBox.Yes, QMessageBox.No, ): @@ -107,10 +110,10 @@ def on_abort_clicked( def handle_process_failed( self, error_message, thread: QThread, progress_dialog: ProgressDialog ) -> None: - progress_dialog.close(), - QMessageBox.information(None, "エラー", error_message), - self.set_interrupted(), - self.abort_process(thread, progress_dialog), + (progress_dialog.close(),) + (QMessageBox.information(None, self.tr("Error"), error_message),) + (self.set_interrupted(),) + (self.abort_process(thread, progress_dialog),) def abort_process(self, thread: QThread, progress_dialog: ProgressDialog) -> None: if self.process_interrupted: @@ -130,7 +133,9 @@ def calc(self): # 入力値のバリデーション if geotiff_output_path == "": QMessageBox.information( - None, "エラー", "出力ファイル名を指定してください。" + None, + self.tr("Error"), + self.tr("Output file is not defined."), ) return @@ -138,7 +143,9 @@ def calc(self): directory = os.path.dirname(geotiff_output_path) if not os.path.isdir(directory): QMessageBox.information( - None, "エラー", f"出力フォルダー先が存在していません。\n{directory}" + None, + self.tr("Error"), + self.tr("Cannot find output folder.\n{}".format(directory)), ) return @@ -150,8 +157,8 @@ def calc(self): if not output_crs_isvalid: QMessageBox.information( None, - "エラー", - "出力ファイルの座標系が指定されていません。座標系を指定してください。", + self.tr("Error"), + self.tr("CRS of output file is not defined."), ) return @@ -160,8 +167,10 @@ def calc(self): if xmin > xmax: QMessageBox.information( None, - "エラー", - "タイル取得範囲が不正です。マップキャンバスには標準時子午線を跨がない範囲を表示してください。", + self.tr("Error"), + self.tr( + "Target extent must not cross the International Date Line meridian." + ), ) return @@ -175,21 +184,26 @@ def calc(self): # check number of tiles if thread.number_of_tiles > thread.max_number_of_tiles: - error_message = ( - f"取得タイル数({thread.number_of_tiles}枚)が多すぎます。\n" - f"上限の{thread.max_number_of_tiles}枚を超えないように取得領域を狭くするか、ズームレベルを小さくしてください。" + error_message = self.tr( + "Too large amount of tiles ({})\n".format(thread.number_of_tiles) + ) + error_message += self.tr( + "Set a lower zoom level or extent to get less than {} tiles.".format( + thread.max_number_of_tiles + ) ) - QMessageBox.information(None, "エラー", error_message) + QMessageBox.information(None, self.tr("Error"), error_message) return elif thread.number_of_tiles > thread.large_number_of_tiles: - message = ( - f"取得タイル数({thread.number_of_tiles}枚)が多いため、処理に時間がかかる可能性があります。" - "ダウンロードを実行しますか?" + message = self.tr( + "Dowloading {} tiles may take a while. Process anyway?".format( + thread.number_of_tiles + ) ) if QMessageBox.No == QMessageBox.question( None, - "確認", + self.tr("Warning"), message, QMessageBox.Yes, QMessageBox.No, @@ -237,7 +251,7 @@ def calc(self): ) self.iface.messageBar().pushInfo( - "ElevationTile4JP", "GeoTiff形式のDEMを出力しました。" + "ElevationTile4JP", self.tr("DEM exported to Geotiff Format.") ) self.dlg_cancel() diff --git a/i18n/ELEVATIONTILE4JP_en.qm b/i18n/ELEVATIONTILE4JP_en.qm index b039a385dbb1a6963bfa4fcb20430f3d7390fbe6..1c448b0009e8f2b41704d3661fe6daeccec3e9b2 100644 GIT binary patch literal 2864 zcmbtW&1+m$6hHZDCf}`#rbgS`O2Jle{6G;@Qqz2qnvjqL0$QXuGk0d5d2{c0-()&b<6G#=5Jx0 z;<2yL^Xhg))N!Zh-4pvn$L{v*4?aQE`EAb^h2JrrP0ii+jem~ZSy_bKdm}$CegxdV21NZ!UDz>5QzS`Kh7^S3 zX#)((G;sj(cnFLiKsf;ngGoEpn z5uj_raD0`p)}ZjkMC16RRibLjA}Zs>8IkchAWAWxFSZ3TjZ}iKp~Arb{A?YO000Ge zVPLeNETD6=G{$UG9zBBS2$K`0DPTb)v~ePx2Cgib}>jqmcuirj07p5y7ta^9Y73KV5ouUtao`H>R_yg z5+@9YhE-SnoTN>F6ZjT5S*Rsd8eazsA@9&QQ}HJooO*WJR6--O;IY`<^JyK4qO1xh zHlChke?kiaD9b zH_KtP+@+YS1s~*p5~jh?7gm)+R6|oywyAszW5Hafv}4}pu?M9r60RV1!ix6%eT&ur zz@p*C&^VnMu!|@*k%wGQ_KYV;13dG1-W$m-(U4VdP~1=jvV&)M*FvovaVGHIz-J3H zykY94HEG$Bnq9?m8b~pt5q4jl}ugy$k(qnKex7 z9)k9+X|$={b!qj#=~8X)S;O_4Pg7SPYrdSpz?S!|_^K8*Zal3drG4lFAM%6ur^5~L e;B9VnUIz{rK!2mEx5C=J?y#P>(WyH-I{pSN=a`!S delta 77 zcmdlWwwh&vh?xP)49`6bK)@PZQOv-=sLZ-0;|Gwg<(SL894MU6xsK%wkY3GKDEkjc Z>t+HaZ%w?lezPu6|<5da1Q66F8@ diff --git a/i18n/ELEVATIONTILE4JP_en.ts b/i18n/ELEVATIONTILE4JP_en.ts index 9b13dc7..6ab3a94 100644 --- a/i18n/ELEVATIONTILE4JP_en.ts +++ b/i18n/ELEVATIONTILE4JP_en.ts @@ -1,6 +1,5 @@ - - + Dialog @@ -24,6 +23,19 @@ Cancel + + ElevationTileConverter + + + Processing... + Processing... + + + + Finalizing... + Finalizing... + + ElevationTileforJPDialog @@ -47,4 +59,102 @@ Output file CRS + + GetTilesWithinMapCanvas + + + Aborting + Aborting + + + + Are you sure to cancel process? + Are you sure to cancel process? + + + + Error + Error + + + + Output file is not defined. + Output file is not defined + + + + Select output file + Select output file + + + + Cannot find output folder.\n{} + Cannot find output folder\n{} + + + + CRS of output file is not defined. + CRS of output file is not defined. + + + + Target extent must not cross the International Date Line meridian. + Target extent must not cross the International Date Line meridian. + + + + Too large amount of tiles ({}) + + Too large amount of tiles ({})\n + + + + Set a lower zoom level or extent to get less than {} tiles. + Set a lower zoom level or extent to get less than {} tiles. + + + + Dowloading {} tiles may take a while. Process anyway? + Dowloading {} tiles may take a while. Process anyway? + + + + Warning + Warning + + + + DEM exported to Geotiff Format. + DEM exported to Geotiff Format. + + + + &ElevationTile4JP + + + + + Cannot find output folder. +{} + + + + + ProgressDialog + + + Initializing process... + Initializing process... + + + + Cancel + Cancel + + + + Cancelling... + Cancelling... + + diff --git a/i18n/ELEVATIONTILE4JP_ja.qm b/i18n/ELEVATIONTILE4JP_ja.qm index d619e68ffe2ea73994990636f0611b2a43e4446e..0cc9b4c0a1c7534c86ad101402a6ed1920353c20 100644 GIT binary patch literal 2519 zcmb7GeN0sYiJ9m;@3lOh%u#LA+`f0u zJ?D3R=XcM&_r4h^{owL*Qy<-W%c=I+ljo`lA!o?;!zXbh#QjVMA@-YW{Neiuam;7V z4(}r*^V_VWyH4ONO^%KS?7_h}AsLU`4;3#El3i?HDA+-Wt;PO&*YEiLQ%C)YtAylC zI~2Hr{@!pTwtbBApE;h-pF=-Gx$>)b;q&_3g{-q^za{^`hW!{XR#4o|(cf9;?%Q7@ zB+Ki3(p!S>a|_9Bh=a@(KC z?%%OFmZLwpWJwX78JYM$%TvkbO`Gf*iHDi8(x{;MCoS7kNvia(Y3%f>BFy4(nRixI zRjpj(fYUG!Z^0SUJ|FEn)#QSe)_J4Vo+pw~OnYaY%q2x0UiQDPR$={;CJXMD6;>m7 zKT|cP8i{02pB{I3DwkJZhi$=NkzJgQmB3y*yun0fEFYq;7G`*FXk*S8E>97zn zieQplm723UuBcFVdo2{NZNA#_EPM{Lx_44TT8Pi|Th!F2_4a8rsynS|@#(y*?ybP; z&GfUz>Ze!Iy3#w!8azHeX*zK1>=3GkRO<^%>Y1iz5)a5)m&_ZbUerau6gP;zQ!f)F zblpGzGCV&{Hv&(-!*b8VJMbmGkHQ#C;^=}-XoWr3%FRgSJ5@%9L?4a!;U7)Vu%S8H zn^e>NX#u#b3;^FZ*IoALAK(t>1ZUtuIE0~HupfeO1Z=6fgfXXsYJzsOae>W*vk6(J zB1(m&5OSPyq0tD7%A7?EX|GDj_7tL5P(5$MVsitygL?xN1`Q?_(ndHLA){vGjYz5< z27^S*@Ir|&wW^JejHcyb8>uIZ2;wI)iIQljBUA*OxJWH&goJ@8fII{sWXZPNRoh6} zU@z91MRfA(nb72Dl-3C~CTZzYjrhI@J)PVrtd~^i33bkpt>A85kFFe=f3E>vk1O>K25@u2}}D7}KR;bpi0i)JP4wW=!Aw1jW63eWF^ z)ns+EbwmDNJ#B0{7u>tlF(C2OV8<~-ODXl5xYzoa!or#<9wZ}e5`ItKv=?<^6b=%T z2cZGFv2QCR}msA~L3U910t{L4RtO^4%qq{gB zI@~yiB!#*pjZrr?3L0ao9FZlSK9h=7c2O&MQhNj&hFR)zzYtW>kx?lo`jANMS^7~F zrxhckTl3P^{h#eVCm^Z(zjXT>-VX|wPIJpiw?;n{LI=A;*WVSA7Yk+iEdRIlg?j6l dnrQtnx!z2^WEYn;yt5d0fu(~Yb>~>==Wj6W+4KMa delta 69 zcmcaEe1v&|h?xP)49`6bK)@PZQ4FLWvu?@w!N9<1$T63DIglU8xsK%wkZ$KIl>G;! SRWpH-Rg;+*yC?H9y$1k - - + Dialog @@ -11,7 +10,7 @@ %v/%m - + @@ -24,6 +23,19 @@ 中断 + + ElevationTileConverter + + + Processing... + 集計中 + + + + Finalizing... + 終了処理中 + + ElevationTileforJPDialog @@ -47,4 +59,102 @@ 出力ファイルCRS + + GetTilesWithinMapCanvas + + + Aborting + 確認 + + + + Are you sure to cancel process? + 処理を中断し、以降の処理をスキップしてよろしいですか? + + + + Error + エラー + + + + Output file is not defined. + 出力ファイル名を指定してください。 + + + + Select output file + 保存ファイルを選択してください + + + + Cannot find output folder.\n{} + 出力フォルダー先が存在していません。\n{} + + + + CRS of output file is not defined. + 出力ファイルの座標系が指定されていません。座標系を指定してください。 + + + + Target extent must not cross the International Date Line meridian. + タイル取得範囲が不正です。マップキャンバスには標準時子午線を跨がない範囲を表示してください。 + + + + Too large amount of tiles ({}) + + 取得タイル数({}枚)が多すぎます。\n + + + + Set a lower zoom level or extent to get less than {} tiles. + 上限の{}枚を超えないように取得領域を狭くするか、ズームレベルを小さくしてください。 + + + + Dowloading {} tiles may take a while. Process anyway? + 取得タイル数({}枚)が多いため、処理に時間がかかる可能性があります。nダウンロードを実行しますか? + + + + Warning + 確認 + + + + DEM exported to Geotiff Format. + GeoTiff形式のDEMを出力しました。 + + + + &ElevationTile4JP + + + + + Cannot find output folder. +{} + + + + + ProgressDialog + + + Initializing process... + 処理開始中.. + + + + Cancel + 中断 + + + + Cancelling... + 中断待機中... + + diff --git a/progress_dialog.py b/progress_dialog.py index 8aa75bb..89d010a 100644 --- a/progress_dialog.py +++ b/progress_dialog.py @@ -24,11 +24,11 @@ def __init__(self, set_abort_flag_callback): self.init_ui() def init_ui(self): - self.label.setText("処理開始中...") + self.label.setText(self.tr("Initializing process...")) self.progressBar.setValue(0) self.progressBar.setMaximum(0) self.abortButton.setEnabled(True) - self.abortButton.setText("中断") + self.abortButton.setText(self.tr("Cancel")) def keyPressEvent(self, event: QKeyEvent): if event.key() == Qt.Key_Escape: @@ -39,7 +39,7 @@ def abort_dialog(self): if self.abortButton.isEnabled(): # abort if possible self.set_abort_flag_callback() self.abortButton.setEnabled(False) - self.abortButton.setText("中断待機中...") + self.abortButton.setText(self.tr("Cancelling...")) self.close() def set_maximum(self, value: int): From 2154599bef36f02ff2c6588b8cb4fe4dd828fa06 Mon Sep 17 00:00:00 2001 From: bordoray Date: Mon, 24 Jun 2024 16:48:14 +0900 Subject: [PATCH 07/15] All translations refelcted (draft) --- elevation_tile_for_jp.pro | 3 +- elevation_tile_for_jp_dialog.py | 6 +- .../elevation_tile_converter.py | 2 + get_tiles.py | 92 ++++++----- i18n/ELEVATIONTILE4JP_en.ts | 137 ++++++++++++----- i18n/ELEVATIONTILE4JP_ja.qm | Bin 2519 -> 2530 bytes i18n/ELEVATIONTILE4JP_ja.ts | 145 +++++++++++++----- progress_dialog.py | 46 +++++- 8 files changed, 317 insertions(+), 114 deletions(-) diff --git a/elevation_tile_for_jp.pro b/elevation_tile_for_jp.pro index 406dc18..627f794 100644 --- a/elevation_tile_for_jp.pro +++ b/elevation_tile_for_jp.pro @@ -1,4 +1,5 @@ -SOURCES += progress_dialog.py \ +SOURCES += elevation_tile_for_jp_dialog.py \ + progress_dialog.py \ get_tiles.py \ elevation_tile_tools/elevation_tile_converter.py diff --git a/elevation_tile_for_jp_dialog.py b/elevation_tile_for_jp_dialog.py index 345fdc5..73a82e1 100644 --- a/elevation_tile_for_jp_dialog.py +++ b/elevation_tile_for_jp_dialog.py @@ -28,8 +28,9 @@ from qgis.PyQt import QtWidgets from PyQt5.QtCore import Qt -FORM_CLASS, _ = uic.loadUiType(os.path.join( - os.path.dirname(__file__), 'elevation_tile_for_jp_dialog_base.ui')) +FORM_CLASS, _ = uic.loadUiType( + os.path.join(os.path.dirname(__file__), "elevation_tile_for_jp_dialog_base.ui") +) class ElevationTileforJPDialog(QtWidgets.QDialog, FORM_CLASS): @@ -37,3 +38,4 @@ def __init__(self, parent=None): super(ElevationTileforJPDialog, self).__init__(parent) self.setupUi(self) self.setWindowFlags(Qt.WindowStaysOnTopHint) + self.mQgsFileWidget_output.setDialogTitle(self.tr("Select output file")) diff --git a/elevation_tile_tools/elevation_tile_converter.py b/elevation_tile_tools/elevation_tile_converter.py index 028677a..56cd01c 100644 --- a/elevation_tile_tools/elevation_tile_converter.py +++ b/elevation_tile_tools/elevation_tile_converter.py @@ -11,6 +11,8 @@ from .geotiff import GeoTiff from .tile_coordinate import TileCoordinate +from progress_dialog import ProgressDialog + class ElevationTileConverter(QThread): # thread signals to progress dialog diff --git a/get_tiles.py b/get_tiles.py index 011d11e..8d4b0b4 100644 --- a/get_tiles.py +++ b/get_tiles.py @@ -56,7 +56,7 @@ def __init__(self, iface): self.dlg.mQgsFileWidget_output.setStorageMode( QgsFileWidget.StorageMode.SaveFile ) - self.dlg.mQgsFileWidget_output.setDialogTitle(self.tr("Select output file")) + # プロジェクトのデフォルトのcrsを格納 self.dlg.mQgsProjectionSelectionWidget_output_crs.setCrs(self.project.crs()) @@ -99,8 +99,8 @@ def on_abort_clicked( ) -> None: if QMessageBox.Yes == QMessageBox.question( None, - self.tr("Aborting"), - self.tr("Are you sure to cancel process?"), + progress_dialog.translate("Aborting"), + progress_dialog.translate("Are you sure to cancel process?"), QMessageBox.Yes, QMessageBox.No, ): @@ -111,7 +111,11 @@ def handle_process_failed( self, error_message, thread: QThread, progress_dialog: ProgressDialog ) -> None: (progress_dialog.close(),) - (QMessageBox.information(None, self.tr("Error"), error_message),) + ( + QMessageBox.information( + None, progress_dialog.translate("Error"), error_message + ), + ) (self.set_interrupted(),) (self.abort_process(thread, progress_dialog),) @@ -130,12 +134,23 @@ def calc(self): zoom_level = int(self.dlg.comboBox_zoomlevel.currentText()) bbox = self.transform(project_crs, self.get_canvas_bbox()) + # elevation tiles converter process thread + thread = ElevationTileConverter( + output_path=geotiff_output_path, + output_crs_id=output_crs.authid(), + zoom_level=zoom_level, + bbox=bbox, + ) + + # initialize process dialog + progress_dialog = ProgressDialog(thread.set_abort_flag) + # 入力値のバリデーション if geotiff_output_path == "": QMessageBox.information( None, - self.tr("Error"), - self.tr("Output file is not defined."), + progress_dialog.translate("Error"), + progress_dialog.translate("Output file is not defined."), ) return @@ -144,8 +159,10 @@ def calc(self): if not os.path.isdir(directory): QMessageBox.information( None, - self.tr("Error"), - self.tr("Cannot find output folder.\n{}".format(directory)), + progress_dialog.translate("Error"), + "{}\n{}".format( + progress_dialog.translate("Cannot find output folder."), directory + ), ) return @@ -157,8 +174,8 @@ def calc(self): if not output_crs_isvalid: QMessageBox.information( None, - self.tr("Error"), - self.tr("CRS of output file is not defined."), + progress_dialog.translate("Error"), + progress_dialog.translate("CRS of output file is not defined."), ) return @@ -167,51 +184,46 @@ def calc(self): if xmin > xmax: QMessageBox.information( None, - self.tr("Error"), - self.tr( + progress_dialog.translate("Error"), + progress_dialog.translate( "Target extent must not cross the International Date Line meridian." ), ) return - # elevation tiles converter process thread - thread = ElevationTileConverter( - output_path=geotiff_output_path, - output_crs_id=output_crs.authid(), - zoom_level=zoom_level, - bbox=bbox, - ) - # check number of tiles if thread.number_of_tiles > thread.max_number_of_tiles: - error_message = self.tr( - "Too large amount of tiles ({})\n".format(thread.number_of_tiles) + error_message = progress_dialog.translate( + "Too large amount of tiles ({})\n" ) - error_message += self.tr( - "Set a lower zoom level or extent to get less than {} tiles.".format( - thread.max_number_of_tiles - ) + # error_message += f" ({thread.number_of_tiles})\n" + error_message += progress_dialog.translate( + "Set a lower zoom level or extent to get less than {} tiles." + ) + + error_message = error_message.format( + thread.number_of_tiles, thread.max_number_of_tiles + ) + + QMessageBox.information( + None, progress_dialog.translate("Error"), error_message ) - QMessageBox.information(None, self.tr("Error"), error_message) return elif thread.number_of_tiles > thread.large_number_of_tiles: - message = self.tr( - "Dowloading {} tiles may take a while. Process anyway?".format( - thread.number_of_tiles - ) - ) + message = progress_dialog.translate( + "Dowloading {} tiles may take a while. Process anyway?" + ).format(thread.number_of_tiles) + if QMessageBox.No == QMessageBox.question( None, - self.tr("Warning"), + progress_dialog.translate("Warning"), message, QMessageBox.Yes, QMessageBox.No, ): return - # initialize process dialof - progress_dialog = ProgressDialog(thread.set_abort_flag) progress_dialog.set_abortable(False) progress_dialog.abortButton.clicked.connect( lambda: [ @@ -251,9 +263,15 @@ def calc(self): ) self.iface.messageBar().pushInfo( - "ElevationTile4JP", self.tr("DEM exported to Geotiff Format.") + "ElevationTile4JP", + progress_dialog.translate("DEM exported to Geotiff Format."), ) - + # message = progress_dialog.translate("This is a test message") + # QMessageBox.information( + # None, + # "info", + # message, + # ) self.dlg_cancel() def get_current_zoom(self): diff --git a/i18n/ELEVATIONTILE4JP_en.ts b/i18n/ELEVATIONTILE4JP_en.ts index 6ab3a94..dfc70f1 100644 --- a/i18n/ELEVATIONTILE4JP_en.ts +++ b/i18n/ELEVATIONTILE4JP_en.ts @@ -26,12 +26,12 @@ ElevationTileConverter - + Processing... Processing... - + Finalizing... Finalizing... @@ -58,33 +58,38 @@ Output file CRS Output file CRS + + + Select output file + Select output file + GetTilesWithinMapCanvas - + Aborting - Aborting + Aborting - + Are you sure to cancel process? - Are you sure to cancel process? + Are you sure to cancel process? - + Error - Error + Error - + Output file is not defined. - Output file is not defined + Output file is not defined Select output file - Select output file + Select output file @@ -92,51 +97,40 @@ Cannot find output folder\n{} - + CRS of output file is not defined. - CRS of output file is not defined. + CRS of output file is not defined. - + Target extent must not cross the International Date Line meridian. - Target extent must not cross the International Date Line meridian. + Target extent must not cross the International Date Line meridian. - + Too large amount of tiles ({}) - Too large amount of tiles ({})\n + Too large amount of tiles ({})\n - + Set a lower zoom level or extent to get less than {} tiles. - Set a lower zoom level or extent to get less than {} tiles. + Set a lower zoom level or extent to get less than {} tiles. - + Dowloading {} tiles may take a while. Process anyway? - Dowloading {} tiles may take a while. Process anyway? + Dowloading {} tiles may take a while. Process anyway? - + Warning - Warning + Warning - + DEM exported to Geotiff Format. - DEM exported to Geotiff Format. - - - - &ElevationTile4JP - - - - - Cannot find output folder. -{} - + DEM exported to Geotiff Format. @@ -156,5 +150,76 @@ Cancelling... Cancelling... + + + Aborting + Aborting + + + + Are you sure to cancel process? + Are you sure to cancel process? + + + + Error + Error + + + + Output file is not defined. + Output file is not defined + + + + Cannot find output folder. + + + + + CRS of output file is not defined. + CRS of output file is not defined. + + + + Target extent must not cross the International Date Line meridian. + Target extent must not cross the International Date Line meridian. + + + + Too large amount of tiles ({}) + + Too large amount of tiles ({})\n + + + + Set a lower zoom level or extent to get less than {} tiles. + Set a lower zoom level or extent to get less than {} tiles. + + + + Dowloading {} tiles may take a while. Process anyway? + Dowloading {} tiles may take a while. Process anyway? + + + + Warning + Warning + + + + DEM exported to Geotiff Format. + DEM exported to Geotiff Format. + + + + Processing... + + + + + Finalizing... + + diff --git a/i18n/ELEVATIONTILE4JP_ja.qm b/i18n/ELEVATIONTILE4JP_ja.qm index 0cc9b4c0a1c7534c86ad101402a6ed1920353c20..293cb350f28f5137eab47dadc2b298f3e4bf2076 100644 GIT binary patch delta 555 zcmcaE{786$Nc{~4or!xHK)`2a5(5M4e5Sl8I|c?ecIJguaSRMBr7SZ%_W)%TAT;xG z*65021_s7v)|C8xKzR|?9>H}$^-o#X@#r%!FfC)%3=HhkdA$tR z11)&S+ZiAZH0Tf?g9^|=49g)j>sh`+*?&O3E0lf-q1o2+KlYsmbdY~0P}7HvkK~vp z&t|iq{D{etpD&;&KfNfmxY#8#F(*HLvN3ZehS(P7Dhx42<#Y$v!M9<{Ur^8Q6eW z$~iGFFTX?~Ei*4gA-}YwpcKf?&q+xw(qjioquaEHB~}zojFB0rE^TrxhxFtiRvpHe z$+fJB7&d=nmFI-(o7}``IQclIz~p{TkI8y$0T`-JF{*>*KeH{ukXy^X2}7)$BN{{O O6^Fb4+(t+^F#-V8?53;$ delta 705 zcmaDPd|h~gNc{;0or!xHK)`2a5(5LPC{tdP9RmZ$TIPjSaSRO1w^?R*?g7dwKxhsJ z*65021_s7v)*iui3=C|7tm}C685o#?Shr;S0E%DaaNqNbfq{J*M~=Z)pm|$4CTX1m z%3tP~%e@?EP9B$-GkIUEKz+|b|)zu3R bL-z2*qP)z!bi9Ej$S5~?8%xOKzici5s7cp% diff --git a/i18n/ELEVATIONTILE4JP_ja.ts b/i18n/ELEVATIONTILE4JP_ja.ts index 32cd416..7913f56 100644 --- a/i18n/ELEVATIONTILE4JP_ja.ts +++ b/i18n/ELEVATIONTILE4JP_ja.ts @@ -1,5 +1,6 @@ - + + Dialog @@ -26,12 +27,12 @@ ElevationTileConverter - + Processing... 集計中 - + Finalizing... 終了処理中 @@ -58,33 +59,38 @@ Output file CRS 出力ファイルCRS + + + Select output file + 保存ファイルを選択してください + GetTilesWithinMapCanvas - + Aborting - 確認 + 確認 - + Are you sure to cancel process? - 処理を中断し、以降の処理をスキップしてよろしいですか? + 処理を中断し、以降の処理をスキップしてよろしいですか? - + Error - エラー + エラー - + Output file is not defined. - 出力ファイル名を指定してください。 + 出力ファイル名を指定してください。 Select output file - 保存ファイルを選択してください + 保存ファイルを選択してください @@ -92,51 +98,40 @@ 出力フォルダー先が存在していません。\n{} - + CRS of output file is not defined. - 出力ファイルの座標系が指定されていません。座標系を指定してください。 + 出力ファイルの座標系が指定されていません。座標系を指定してください。 - + Target extent must not cross the International Date Line meridian. - タイル取得範囲が不正です。マップキャンバスには標準時子午線を跨がない範囲を表示してください。 + タイル取得範囲が不正です。マップキャンバスには標準時子午線を跨がない範囲を表示してください。 - + Too large amount of tiles ({}) - 取得タイル数({}枚)が多すぎます。\n + 取得タイル数({}枚)が多すぎます。\n - + Set a lower zoom level or extent to get less than {} tiles. - 上限の{}枚を超えないように取得領域を狭くするか、ズームレベルを小さくしてください。 + 上限の{}枚を超えないように取得領域を狭くするか、ズームレベルを小さくしてください。 - + Dowloading {} tiles may take a while. Process anyway? - 取得タイル数({}枚)が多いため、処理に時間がかかる可能性があります。nダウンロードを実行しますか? + 取得タイル数({}枚)が多いため、処理に時間がかかる可能性があります。nダウンロードを実行しますか? - + Warning - 確認 + 確認 - + DEM exported to Geotiff Format. - GeoTiff形式のDEMを出力しました。 - - - - &ElevationTile4JP - - - - - Cannot find output folder. -{} - + GeoTiff形式のDEMを出力しました。 @@ -156,5 +151,81 @@ Cancelling... 中断待機中... + + + This is a test message + テストメッセージです。 + + + + Aborting + 確認 + + + + Are you sure to cancel process? + 処理を中断し、以降の処理をスキップしてよろしいですか? + + + + Error + エラー + + + + Output file is not defined. + 出力ファイル名を指定してください。 + + + + Cannot find output folder. + 出力フォルダー先が存在していません。 + + + + CRS of output file is not defined. + 出力ファイルの座標系が指定されていません。座標系を指定してください。 + + + + Target extent must not cross the International Date Line meridian. + タイル取得範囲が不正です。マップキャンバスには標準時子午線を跨がない範囲を表示してください。 + + + + Too large amount of tiles ({}) + + 取得タイル数({}枚)が多すぎます。 + + + + Set a lower zoom level or extent to get less than {} tiles. + 上限の{}枚を超えないように取得領域を狭くするか、ズームレベルを小さくしてください。 + + + + Dowloading {} tiles may take a while. Process anyway? + 取得タイル数({}枚)が多いため、処理に時間がかかる可能性があります。ダウンロードを実行しますか? + + + + Warning + 確認 + + + + DEM exported to Geotiff Format. + GeoTiff形式のDEMを出力しました。 + + + + Processing... + 集計中 + + + + Finalizing... + 終了処理中 + diff --git a/progress_dialog.py b/progress_dialog.py index 89d010a..9f86f02 100644 --- a/progress_dialog.py +++ b/progress_dialog.py @@ -49,7 +49,7 @@ def add_progress(self, value: int): self.progressBar.setValue(self.progressBar.value() + value) def set_message(self, message: str): - self.label.setText(message) + self.label.setText(self.translate(message)) def set_abortable(self, abortable=True): self.abortButton.setEnabled(abortable) @@ -57,3 +57,47 @@ def set_abortable(self, abortable=True): def close_dialog(self): print("closing") self.ui.close() + + def translate(self, message): + # translate in this QDialog class to be detected by QLinguist. + if message == "Processing...": + translated_message = self.tr("Processing...") + elif message == "Finalizing...": + translated_message = self.tr("Finalizing...") + elif message == "Aborting": + translated_message = self.tr("Aborting") + elif message == "Are you sure to cancel process?": + translated_message = self.tr("Are you sure to cancel process?") + elif message == "Error": + translated_message = self.tr("Error") + elif message == "Output file is not defined.": + translated_message = self.tr("Output file is not defined.") + elif message == "Cannot find output folder.": + translated_message = self.tr("Cannot find output folder.") + elif message == "CRS of output file is not defined.": + translated_message = self.tr("CRS of output file is not defined.") + elif ( + message + == "Target extent must not cross the International Date Line meridian." + ): + translated_message = self.tr( + "Target extent must not cross the International Date Line meridian." + ) + elif message == "Too large amount of tiles ({})\n": + translated_message = self.tr("Too large amount of tiles ({})\n") + elif message == "Set a lower zoom level or extent to get less than {} tiles.": + translated_message = self.tr( + "Set a lower zoom level or extent to get less than {} tiles." + ) + elif message == "Dowloading {} tiles may take a while. Process anyway?": + translated_message = self.tr( + "Dowloading {} tiles may take a while. Process anyway?" + ) + elif message == "Warning": + translated_message = self.tr("Warning") + elif message == "DEM exported to Geotiff Format.": + translated_message = self.tr("DEM exported to Geotiff Format.") + else: + # fallback origin message + translated_message = message + return translated_message From 448c426fa097367faae16e4a8ccc3de81b2b4da8 Mon Sep 17 00:00:00 2001 From: bordoray Date: Mon, 24 Jun 2024 16:56:28 +0900 Subject: [PATCH 08/15] Cleaning translation files --- elevation_tile_for_jp.pro | 2 -- i18n/ELEVATIONTILE4JP_en.qm | Bin 2864 -> 2727 bytes i18n/ELEVATIONTILE4JP_en.ts | 15 ++++++++------- i18n/ELEVATIONTILE4JP_ja.qm | Bin 2530 -> 2378 bytes i18n/ELEVATIONTILE4JP_ja.ts | 7 +++---- 5 files changed, 11 insertions(+), 13 deletions(-) diff --git a/elevation_tile_for_jp.pro b/elevation_tile_for_jp.pro index 627f794..b0cb97a 100644 --- a/elevation_tile_for_jp.pro +++ b/elevation_tile_for_jp.pro @@ -1,7 +1,5 @@ SOURCES += elevation_tile_for_jp_dialog.py \ progress_dialog.py \ - get_tiles.py \ - elevation_tile_tools/elevation_tile_converter.py FORMS += elevation_tile_for_jp_dialog_base.ui \ progress_dialog.ui diff --git a/i18n/ELEVATIONTILE4JP_en.qm b/i18n/ELEVATIONTILE4JP_en.qm index 1c448b0009e8f2b41704d3661fe6daeccec3e9b2..084c5053848ce222ddec761b2c4d7c21f87e3955 100644 GIT binary patch delta 382 zcmdlWwp?_AO#No2yeK;c1~z@>g;jA33@n8#Gd%Y&00D$%Ze)$FC}v<_RAx=d-v<leEqO<$rL@&fx(`68;@W@9s>i1IBdfd=*QF{l6? z#QK!4Q1%~CgD!+-=j4CvI}hmK>6t)9$0pudzgd?_pK-D$yX)kKOmdTBnAIn5@ zfH?(a4or74 zngQtwR%W1LlS#~ylV7m8fF-!W5+ajVvmXHSJ2 Y^3#h_i;G<{6La#@89RVRF)=a%0APw|O8@`> delta 705 zcmZ23xt6A828aVC)cF`xfDU0;%~vS< z4@m1m>A(EPgM5Jo-{pVoJCA{Z^+P5D1DF5gXcpCp|GOq1W-}8PbInODODxIE&kM=S zNp;T8D@!dZNiCYp#%PU8ZgUHx3FBmGW_1a1_tX-Qw&L*2l8nqe-^2pv#JsY^;>m%` zg}5azGFQpr(#gmSbiLK&`z*$SF${SO)eN;9Kmi6eAeNgf%POT1lUH5K4&>o7V6qo0 z9;;8WZpQ7d9yVp%k_GI^xFt6;dEu7S;W&y@auVk){6XO``8}r%3j;7LCTnx);xuP+ VI+rGH$taeV$-L|-lNWHY0|42-;P(Ik diff --git a/i18n/ELEVATIONTILE4JP_en.ts b/i18n/ELEVATIONTILE4JP_en.ts index dfc70f1..9e30fd3 100644 --- a/i18n/ELEVATIONTILE4JP_en.ts +++ b/i18n/ELEVATIONTILE4JP_en.ts @@ -1,5 +1,6 @@ - + + Dialog @@ -28,12 +29,12 @@ Processing... - Processing... + Processing... Finalizing... - Finalizing... + Finalizing... @@ -173,7 +174,7 @@ Cannot find output folder. - + Cannot find output folder. @@ -189,7 +190,7 @@ Too large amount of tiles ({}) - Too large amount of tiles ({})\n + Too large amount of tiles ({}) @@ -214,12 +215,12 @@ Processing... - + Processing... Finalizing... - + Finalizing... diff --git a/i18n/ELEVATIONTILE4JP_ja.qm b/i18n/ELEVATIONTILE4JP_ja.qm index 293cb350f28f5137eab47dadc2b298f3e4bf2076..94edd51b2051720ed106c3013b786b6bca0d60c1 100644 GIT binary patch delta 247 zcmaDPd`f77Nc{;0or!xHK)`2a5(5LPG*e!b9guEjURV{!z`*>KWrpV-psWIfW>#m7 zt|(?;U}R=Z$=?T*pTgQBxQ>B=Es=E{k3ItflN#%mj2}SxKo0jkzZe+UuW;lTd{W!lBem^9g+ YQ+o1eR_)D7Y&y)0DnPEvR delta 329 zcmX>l^hkJuNc{~4or!xHK)`2a5(5M4e5Sl8I|c?ecIJguaSRMBr7SZ%_W)%TAT;xG z*65021_s7v)|C8xKzR|?9>H}$^-o#X@#r%!FfC)%3=HhkdA$tR z11)&S+ZiAZH0Tf?g9^|=49g)j>sh`+*?&O3E0lf-q1o2+KlYsmbdY~0P}7Hrk5*6C zXHydwbInODODxIE&kM=SNp;T8D@!dZNiCYp!>*1?ZgU6YerCqB$-6nECnvLNvoORk W - - + Dialog @@ -29,12 +28,12 @@ Processing... - 集計中 + 集計中 Finalizing... - 終了処理中 + 終了処理中 From 4503edf3fd8c14494535e7ffe84ecd9e0b5fb0de Mon Sep 17 00:00:00 2001 From: bordoray Date: Mon, 24 Jun 2024 17:06:20 +0900 Subject: [PATCH 09/15] UI imag doc in english --- img/dialog.png | Bin 16523 -> 20261 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/img/dialog.png b/img/dialog.png index 2913d0c6d63926f2a51ebbf93ad223502f0727b4..78ccddfb33bed6353998199a0302883aade5f875 100644 GIT binary patch literal 20261 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 literal 16523 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

^-9_4+6G})5)!>EJB)Ovy>Vw=~W zG67@>j6|t}gNC7(tMH1EFq2=!rLfS7&+gIF)5~=}2xd{AW0Dh>?Sg0_!r>pQPd?CO z<*;6QUkm`ZcJ~Uru@KG+s&WLl6`3%3GWE>$Y!*dZ;jX}kY-znCr*kuG9jDBEKGUNQ z^LE{Kc>3x*#U(@fv+1tmgWrTdQeMLs6*I`jqb(4BQdo+vrD0U+OSzaANGi(zxMz?~kK_d5#8G(OBzY1+bCu7e|NA`Ac?Ru0@fG zd$>j$Lcrru#+N=hafKuI62~Xu-()fY#8k%zfewdzOfKKb&3hz)hrup~dq8e6m3RJM zY96D?vbM_z-X=gCCGEMWx3 z%{Acs%*x{^uvUF^LF$sMLIPT>UwGVhHmC9}%%$+-WFpg85_wvKx(nWX!@@6E(9VXn zt7|1ver6h+-8qj+jyPb495LYM!hC!`4I97+eT63MImvfBq{5%@kF8v-te({{^>SeM z*w(5X%f$`#@AZnzy}IpAzo%cVyKAu+nhi!{=zfM%1@!EQOQfeU0XB5_8Zpv75OHIz z8m_|ZG-Z?3*<{;Vm>pcVT%}~Ll~2a}h)%LnJ7dG$ft4ptP9^SV~^)un49p}jyv(g!HuZ~Mf!miIj-{@aOgnKhb5B<;-6=>9LLeB>gkYuYggwjmQsOXe-uqw-j7tLD1Nr7(nCf&hZ@(k ztL3kZe%ZCNgCWv-sB=tc64q>`Mb$6Tob`yRmuENrRdCMt1$< zxb!Ec$|>yB3{Pbj&_8%U)U_uG$Zujszs aVigi7wC1cSt>679T}e*;dBro!kpBZR+-hI| From 3bdc193857fa1977d0be7b7a5b659e276e76fbed Mon Sep 17 00:00:00 2001 From: bordoray Date: Tue, 25 Jun 2024 10:43:37 +0900 Subject: [PATCH 10/15] Fix tiles amount translation --- get_tiles.py | 13 ++++--------- i18n/ELEVATIONTILE4JP_en.qm | Bin 2727 -> 2726 bytes i18n/ELEVATIONTILE4JP_en.ts | 7 ++++++- i18n/ELEVATIONTILE4JP_ja.qm | Bin 2378 -> 2377 bytes i18n/ELEVATIONTILE4JP_ja.ts | 13 +++++++++---- progress_dialog.py | 4 ++-- 6 files changed, 21 insertions(+), 16 deletions(-) diff --git a/get_tiles.py b/get_tiles.py index 8d4b0b4..23e07ec 100644 --- a/get_tiles.py +++ b/get_tiles.py @@ -193,10 +193,10 @@ def calc(self): # check number of tiles if thread.number_of_tiles > thread.max_number_of_tiles: - error_message = progress_dialog.translate( - "Too large amount of tiles ({})\n" + error_message = ( + progress_dialog.translate("Too large amount of tiles ({})") + " \n" ) - # error_message += f" ({thread.number_of_tiles})\n" + error_message += progress_dialog.translate( "Set a lower zoom level or extent to get less than {} tiles." ) @@ -266,12 +266,7 @@ def calc(self): "ElevationTile4JP", progress_dialog.translate("DEM exported to Geotiff Format."), ) - # message = progress_dialog.translate("This is a test message") - # QMessageBox.information( - # None, - # "info", - # message, - # ) + self.dlg_cancel() def get_current_zoom(self): diff --git a/i18n/ELEVATIONTILE4JP_en.qm b/i18n/ELEVATIONTILE4JP_en.qm index 084c5053848ce222ddec761b2c4d7c21f87e3955..7481b25a4d7c661a6827d8706c9d6ace4a6df9ca 100644 GIT binary patch delta 69 zcmZ23x=eIJDhpdn^~s5u-i*Byx2iB6ogB@gy79j$r@UN9e!fCZVo`dkLSk-yX Too large amount of tiles ({}) - Too large amount of tiles ({}) + Too large amount of tiles ({}) @@ -222,5 +222,10 @@ Finalizing... Finalizing... + + + Too large amount of tiles ({}) + Too large amount of tiles ({}) + diff --git a/i18n/ELEVATIONTILE4JP_ja.qm b/i18n/ELEVATIONTILE4JP_ja.qm index 94edd51b2051720ed106c3013b786b6bca0d60c1..38d2675b2b6cb4d196bb982b65687b1040126b46 100644 GIT binary patch delta 39 vcmX>lbW&(SE(=>r^~s5a-i($L_o^_aZ+yhY!6-NRC5PPPKsJfV3Y=O1B^C`b delta 41 xcmX>pbV_JKE(?eIo?jCSy&0`0?p0yT*!YNzgHe9+OAa|kuE~LH5|iaQwE#lB4R!zk diff --git a/i18n/ELEVATIONTILE4JP_ja.ts b/i18n/ELEVATIONTILE4JP_ja.ts index f3d6179..cd6cedc 100644 --- a/i18n/ELEVATIONTILE4JP_ja.ts +++ b/i18n/ELEVATIONTILE4JP_ja.ts @@ -1,5 +1,6 @@ - + + Dialog @@ -108,8 +109,7 @@ - Too large amount of tiles ({}) - + Too large amount of tiles ({}) \n 取得タイル数({}枚)が多すぎます。\n @@ -194,7 +194,7 @@ Too large amount of tiles ({}) - 取得タイル数({}枚)が多すぎます。 + 取得タイル数({}枚)が多すぎます。 @@ -226,5 +226,10 @@ Finalizing... 終了処理中 + + + Too large amount of tiles ({}) + 取得タイル数({}枚)が多すぎます。 + diff --git a/progress_dialog.py b/progress_dialog.py index 9f86f02..fd4ed72 100644 --- a/progress_dialog.py +++ b/progress_dialog.py @@ -83,8 +83,8 @@ def translate(self, message): translated_message = self.tr( "Target extent must not cross the International Date Line meridian." ) - elif message == "Too large amount of tiles ({})\n": - translated_message = self.tr("Too large amount of tiles ({})\n") + elif message == "Too large amount of tiles ({})": + translated_message = self.tr("Too large amount of tiles ({})") elif message == "Set a lower zoom level or extent to get less than {} tiles.": translated_message = self.tr( "Set a lower zoom level or extent to get less than {} tiles." From 004961a0a1c2a88da813aaa78dfddcdb70e2b435 Mon Sep 17 00:00:00 2001 From: bordoray Date: Tue, 25 Jun 2024 10:53:42 +0900 Subject: [PATCH 11/15] reformat --- get_tiles.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/get_tiles.py b/get_tiles.py index 23e07ec..fd2103a 100644 --- a/get_tiles.py +++ b/get_tiles.py @@ -110,14 +110,10 @@ def on_abort_clicked( def handle_process_failed( self, error_message, thread: QThread, progress_dialog: ProgressDialog ) -> None: - (progress_dialog.close(),) - ( - QMessageBox.information( - None, progress_dialog.translate("Error"), error_message - ), - ) - (self.set_interrupted(),) - (self.abort_process(thread, progress_dialog),) + progress_dialog.close() + QMessageBox.information(None, progress_dialog.translate("Error"), error_message) + self.set_interrupted() + self.abort_process(thread, progress_dialog) def abort_process(self, thread: QThread, progress_dialog: ProgressDialog) -> None: if self.process_interrupted: From 7bfca0f11676c7f39aeed37508bef97181a67922 Mon Sep 17 00:00:00 2001 From: bordoray Date: Tue, 25 Jun 2024 11:00:47 +0900 Subject: [PATCH 12/15] Cleaning --- elevation_tile_tools/elevation_tile_converter.py | 2 -- get_tiles.py | 4 ---- 2 files changed, 6 deletions(-) diff --git a/elevation_tile_tools/elevation_tile_converter.py b/elevation_tile_tools/elevation_tile_converter.py index 56cd01c..028677a 100644 --- a/elevation_tile_tools/elevation_tile_converter.py +++ b/elevation_tile_tools/elevation_tile_converter.py @@ -11,8 +11,6 @@ from .geotiff import GeoTiff from .tile_coordinate import TileCoordinate -from progress_dialog import ProgressDialog - class ElevationTileConverter(QThread): # thread signals to progress dialog diff --git a/get_tiles.py b/get_tiles.py index fd2103a..7745611 100644 --- a/get_tiles.py +++ b/get_tiles.py @@ -77,10 +77,6 @@ def __init__(self, iface): self.process_interrupted = False - def tr(self, message): - # noinspection PyTypeChecker,PyArgumentList,PyCallByClass - return QCoreApplication.translate("ElevationTileForJP", message) - # update extent crs when updated def on_map_crs_changed(self): (self.dlg.mExtentGroupBox.setOutputCrs(QgsProject.instance().crs()),) From 16a68a0fcf353861d71fe2ce9b2089afaf94ff03 Mon Sep 17 00:00:00 2001 From: bordoray Date: Tue, 25 Jun 2024 11:16:41 +0900 Subject: [PATCH 13/15] Correct readme numerotation --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 7b4249c..97fc1d6 100644 --- a/README.md +++ b/README.md @@ -9,18 +9,18 @@ This is a QGIS plugin that downloads Japan elevation tiles and converts them to ## Usage -- 1. Click plugin icon or select Plugin --> ElevationTile4JP in menu bar -- 2. Select tiles zoom level -- 3. Set the output file -- 4. Select the output file CRS -- 5. Set the area of interest. Area of interest can be set with: +- 1 Click plugin icon or select Plugin --> ElevationTile4JP in menu bar +- 2 Select tiles zoom level +- 3 Set the output file +- 4 Select the output file CRS +- 5 Set the area of interest. Area of interest can be set with: - Layer: target layer extent - Layout Map: target layout map extent - Bookmark: extent saved on bookmark - Map Canvas Extent: current map canvas extent - Draw on Canvas: draw customize extent on map canvas -- 6. Click OK and the processed file will be added to the map canvas +- 6 Click OK and the processed file will be added to the map canvas dialog screenshot From c35e34720e525a48984d54ecc814d9434f4932f7 Mon Sep 17 00:00:00 2001 From: bordoray Date: Tue, 25 Jun 2024 11:22:05 +0900 Subject: [PATCH 14/15] Update metadata --- metadata.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/metadata.txt b/metadata.txt index 6d4890f..458e2c3 100644 --- a/metadata.txt +++ b/metadata.txt @@ -5,12 +5,12 @@ [general] name=ElevationTile4JP qgisMinimumVersion=3.16 -description=Convert elevation tiles provided by Geospatial Information Authority of Japan(GSI) to GeoTiff format DEM. -version=1.0 +description=Convert elevation tiles provided by Geospatial Information Authority of Japan (GSI) to GeoTiff format DEM. +version=1.1 author=MIERUNE Inc. email=info@mierune.co.jp -about=Geospatial Information Authority of Japan(GSI) provides elevation tile as a XYZ tile. This plugin fetch the tiles and convert and merge them to GeoTiff format DEM. The extent will specified the map canvas. 国土地理院が提供する標高タイルを GeoTIFF形式のDEM に変換します。取得範囲はマップキャンバスの表示領域です。 +about=Geospatial Information Authority of Japan (GSI) provides elevation tile as a XYZ tile. This plugin fetch tiles from a specified extent, convert and merge them to GeoTiff format DEM. 指定した範囲から国土地理院が提供する標高タイルを GeoTIFF形式のDEM に変換します。 tracker=https://github.com/MIERUNE/ElevationTile4JP/issues repository=https://github.com/MIERUNE/ElevationTile4JP From 80b2486207126777b5f0149003139e28c43d6491 Mon Sep 17 00:00:00 2001 From: bordoray Date: Tue, 25 Jun 2024 11:41:44 +0900 Subject: [PATCH 15/15] Rabbit solving --- get_tiles.py | 2 +- metadata.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/get_tiles.py b/get_tiles.py index 7745611..4dda5ba 100644 --- a/get_tiles.py +++ b/get_tiles.py @@ -24,7 +24,7 @@ from math import log from PyQt5.QtWidgets import QMessageBox -from PyQt5.QtCore import QThread, QCoreApplication +from PyQt5.QtCore import QThread from qgis.core import ( QgsProject, QgsRasterLayer, diff --git a/metadata.txt b/metadata.txt index 458e2c3..dd20d8f 100644 --- a/metadata.txt +++ b/metadata.txt @@ -10,7 +10,7 @@ version=1.1 author=MIERUNE Inc. email=info@mierune.co.jp -about=Geospatial Information Authority of Japan (GSI) provides elevation tile as a XYZ tile. This plugin fetch tiles from a specified extent, convert and merge them to GeoTiff format DEM. 指定した範囲から国土地理院が提供する標高タイルを GeoTIFF形式のDEM に変換します。 +about=Geospatial Information Authority of Japan (GSI) provides elevation tile as a XYZ tile. This plugin fetches tiles from a specified extent, converts and merges them to GeoTiff format DEM. 指定した範囲から国土地理院が提供する標高タイルを GeoTIFF形式のDEM に変換します。 tracker=https://github.com/MIERUNE/ElevationTile4JP/issues repository=https://github.com/MIERUNE/ElevationTile4JP