38 Commits

Author SHA1 Message Date
7cdaa4072c feat: macOS bundle support 2024-12-03 00:21:21 +08:00
06af632914 chore(CI): msvc use Qt 6.8.1 2024-12-01 12:52:48 +08:00
99abf3b69d chore: bump minimum CMake version
- 3.16 is the actual lowest required version for Qt 6
- CMake versions <= 3.10 are deprecated since CMake 3.31
2024-12-01 00:02:29 +08:00
42b6510877 i18n: Translated using Weblate (Spanish) (#134)
Currently translated at 100.0% (161 of 161 strings)

Translation: pineapple-pictures/Application
Translate-URL: https://hosted.weblate.org/projects/pineapple-pictures/application/es/

Co-authored-by: gallegonovato <fran-carro@hotmail.es>
2024-11-30 23:11:59 +08:00
aa746721f0 i18n: update ts files 2024-11-07 00:15:59 +08:00
42e3d4c691 feat: animation pause and manually step to next frame
Resolve: https://github.com/BLumia/pineapple-pictures/issues/85
2024-11-06 20:28:39 +08:00
a993437983 i18n: Translations update from Hosted Weblate (#133)
* Translated using Weblate (Korean)

Currently translated at 100.0% (152 of 152 strings)

Translation: pineapple-pictures/Application
Translate-URL: https://hosted.weblate.org/projects/pineapple-pictures/application/ko/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (157 of 157 strings)

Translation: pineapple-pictures/Application
Translate-URL: https://hosted.weblate.org/projects/pineapple-pictures/application/tr/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (157 of 157 strings)

Translation: pineapple-pictures/Application
Translate-URL: https://hosted.weblate.org/projects/pineapple-pictures/application/es/

* Translated using Weblate (Italian)

Currently translated at 100.0% (157 of 157 strings)

Translation: pineapple-pictures/Application
Translate-URL: https://hosted.weblate.org/projects/pineapple-pictures/application/it/

---------

Co-authored-by: VenusGirl <VenusGirl@outlook.com>
Co-authored-by: Sabri Ünal <yakushabb@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: albanobattistella <albano_battistella@hotmail.com>
2024-11-06 20:27:31 +08:00
8cce48e6b0 feat: check conflict shortcuts before saving 2024-11-03 00:46:21 +08:00
d0bdc71cf5 chore: shortcut-related code tweaks 2024-11-02 09:32:51 +08:00
2071e82e1d i18n: update ts files 2024-10-31 00:01:08 +08:00
b2f10b9193 chore: fix ubuntu 22.04 build ...again 2024-10-30 00:15:47 +08:00
9eb91dedf9 chore: fix ubuntu 22.04 build 2024-10-30 00:05:49 +08:00
6f3c30fc5b chore: fix qmake build 2024-10-29 23:44:48 +08:00
3eade9c3cf feat: support custom shortcut for existing actions
Resolve https://github.com/BLumia/pineapple-pictures/issues/128

Actually also https://github.com/BLumia/pineapple-pictures/issues/72
but not sure why that one is now a 404 page.
2024-10-29 23:28:27 +08:00
fad7a668e3 fix: not able to load translations 2024-10-27 13:49:24 +08:00
c68e82c7c8 chore: update release info to 0.8.2 2024-10-27 00:06:40 +08:00
7e04ba84eb chore(CI): msvc build with libavif 2024-10-26 15:18:54 +08:00
29355c7fc1 fix: actual proper fix for 471a3b1 2024-10-22 21:35:50 +08:00
95f85374cf i18n: Translations update from Hosted Weblate (#125)
* Translated using Weblate (Japanese)

Currently translated at 98.6% (149 of 151 strings)

Translation: pineapple-pictures/Application
Translate-URL: https://hosted.weblate.org/projects/pineapple-pictures/application/ja/

* Translated using Weblate (Italian)

Currently translated at 100.0% (152 of 152 strings)

Translation: pineapple-pictures/Application
Translate-URL: https://hosted.weblate.org/projects/pineapple-pictures/application/it/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (152 of 152 strings)

Translation: pineapple-pictures/Application
Translate-URL: https://hosted.weblate.org/projects/pineapple-pictures/application/es/

---------

Co-authored-by: mmahhi <mmahhi@users.noreply.hosted.weblate.org>
Co-authored-by: albanobattistella <albano_battistella@hotmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
2024-10-22 00:38:29 +08:00
471a3b15ef fix: incorrect config location
This caused by the setting singleton instance (actually,
QStandardPath::writableLocation) was used before QApplication
was constructed, resulting it doesn't know the application
name. So we manually append the name to the path...
2024-10-21 22:27:57 +08:00
5d2ddc199a chore(CI): bump msvc build to use Qt 6.8.0 2024-10-12 19:57:27 +08:00
fa0b86a995 chore: fix incorrect syntax of COPY command in msvc-cmake-build.
- Fix incorrect syntax of COPY which cause we fail to copy LICENSE in final distribution package.
- Add workflow_dispatch condition in workflow files to allow manual trigger.
2024-10-12 14:25:28 +08:00
b880406474 i18n: update ts files 2024-10-11 00:30:13 +08:00
470a29c38c feat: option to use light checkerboard by default 2024-10-10 22:58:11 +08:00
3a5ead8cc2 fix(CI): qmake build 2024-09-17 19:48:03 +08:00
4dd3f22d88 chore: make use of CMake project version 2024-09-17 19:28:05 +08:00
3a4ea573f6 fix(dist): add last release info to AppStream 2024-09-16 10:56:10 +08:00
d574018a8e CI: bump dependencies version 2024-08-24 15:33:27 +08:00
ae0f11c153 i18n: Translations update from Hosted Weblate (#124)
* Translated using Weblate (Spanish)

Translate-URL: https://hosted.weblate.org/projects/pineapple-pictures/application/es/

* Translated using Weblate (Turkish)

Translate-URL: https://hosted.weblate.org/projects/pineapple-pictures/application/tr/

* Translated using Weblate (Italian)

Translate-URL: https://hosted.weblate.org/projects/pineapple-pictures/application/it/

* Translated using Weblate (Japanese)

Translate-URL: https://hosted.weblate.org/projects/pineapple-pictures/application/ja/

---------

Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Co-authored-by: albanobattistella <albano_battistella@hotmail.com>
Co-authored-by: mmahhi <mmahhi@users.noreply.hosted.weblate.org>
2024-08-24 15:29:57 +08:00
2bca7bd691 fix: move to trash not reload current item 2024-07-31 20:21:10 +08:00
c2226ef5c7 chore: update translation strings 2024-07-31 19:41:51 +08:00
3596f9eac4 fix: window title not updated in some cases 2024-07-30 23:25:34 +08:00
a6e31a2c4d feat: cli argument to list supported image formats 2024-07-28 16:16:20 +08:00
cd01a05f23 chore: sync playlistmanager changes 2024-07-28 16:14:14 +08:00
f32cb998ae fix: crash caused by urlByIndex() with invalid model index
Also save a QVariant convert for QUrl
2024-07-21 00:52:32 +08:00
eb2e2e93f9 refactor(playlist): playlist itself as model
This could make state management easier, and also make it reusable
just in case we need to attach the playlist to a view.
2024-07-20 23:18:42 +08:00
4a095a0cfd chore: add jfif to supported formats 2024-07-20 13:53:29 +08:00
d01297043e fix: playlist filter should consider plugins
setAutoLoadFilterSuffix with formats dynammically got from QImageReader, fix https://github.com/BLumia/pineapple-pictures/issues/120
2024-07-20 13:36:03 +08:00
45 changed files with 4271 additions and 2099 deletions

View File

@ -1,6 +1,6 @@
name: macOS CI
on: [push, pull_request]
on: [push, pull_request, workflow_dispatch]
jobs:
build:
@ -10,10 +10,18 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Install Qt
uses: jurplel/install-qt-action@v3
uses: jurplel/install-qt-action@v4
with:
version: '6.4.2'
version: '6.8.1'
- name: Run a qt project
run: |
cmake ./ -DPREFER_QT_5=OFF
make
cmake . -Bbuild
cmake --build build
- name: Deploy
run: |
macdeployqt ./build/ppic.app -dmg
ls
- uses: actions/upload-artifact@v4
with:
name: "macos-bundle"
path: build/*.dmg

View File

@ -1,15 +1,17 @@
name: Windows CI
on: [push, pull_request]
on: [push, pull_request, workflow_dispatch]
jobs:
msvc-qmake-build:
strategy:
matrix:
vs: ['2022']
msvc_arch: ['x64']
qt_ver: ['6.7.2']
include:
- qt_ver: '6.8.1'
vs: '2022'
aqt_arch: 'win64_msvc2022_64'
msvc_arch: 'x64'
runs-on: windows-2022
@ -18,7 +20,7 @@ jobs:
- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
arch: 'win64_msvc2019_64'
arch: ${{ matrix.aqt_arch }}
version: ${{ matrix.qt_ver }}
modules: 'qtimageformats'
- name: Build
@ -41,9 +43,11 @@ jobs:
strategy:
matrix:
vs: ['2022']
msvc_arch: ['x64']
qt_ver: ['6.7.2']
include:
- qt_ver: '6.8.1'
vs: '2022'
aqt_arch: 'win64_msvc2022_64'
msvc_arch: 'x64'
runs-on: windows-2022
@ -52,7 +56,7 @@ jobs:
- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
arch: 'win64_msvc2019_64'
arch: ${{ matrix.aqt_arch }}
version: ${{ matrix.qt_ver }}
modules: 'qtimageformats'
- name: Build
@ -67,19 +71,44 @@ jobs:
:: ------ dep ------
set CMAKE_PREFIX_PATH=%PWD%/dependencies_bin
mkdir dependencies_src
:: ===== exiv2 =====
curl -fsSL -o exiv2_bin.zip https://github.com/Exiv2/exiv2/releases/download/v0.28.3/exiv2-0.28.3-2019msvc64.zip
7z x exiv2_bin.zip -y
ren .\exiv2-0.28.3-2019msvc64 dependencies_bin
:: ===== zlib =====
curl -fsSL -o zlib_src.zip https://zlib.net/zlib131.zip
7z x zlib_src.zip -y -o"dependencies_src"
ren .\dependencies_src\zlib-1.3.1 zlib || goto :error
cmake ./dependencies_src/zlib -Bbuild_dependencies/zlib -DCMAKE_INSTALL_PREFIX="dependencies_bin" || goto :error
cmake --build build_dependencies/zlib --config Release --target=install || goto :error
curl -fsSL -o expat_src.zip https://github.com/libexpat/libexpat/archive/R_2_6_2.zip
:: ===== AOM for libavif AVI decoding support =====
git clone -q -b v3.10.0 --depth 1 https://aomedia.googlesource.com/aom dependencies_src/aom
cmake ./dependencies_src/aom -Bbuild_dependencies/aom -DCMAKE_INSTALL_PREFIX="dependencies_bin" -DENABLE_DOCS=OFF -DBUILD_SHARED_LIBS=ON -DAOM_TARGET_CPU=generic -DENABLE_TESTS=OFF -DENABLE_TESTDATA=OFF -DENABLE_TOOLS=OFF -DENABLE_EXAMPLES=0 || goto :error
cmake --build build_dependencies/aom --config Release --target=install || goto :error
:: ===== libavif =====
curl -fsSL -o libavif-v1_1_1.zip https://github.com/AOMediaCodec/libavif/archive/v1.1.1.zip
7z x libavif-v1_1_1.zip -y -o"dependencies_src"
ren .\dependencies_src\libavif-1.1.1 libavif || goto :error
cmake ./dependencies_src/libavif -Bbuild_dependencies/libavif -DCMAKE_INSTALL_PREFIX="dependencies_bin" -DAVIF_CODEC_AOM=ON -DAVIF_LOCAL_LIBYUV=ON
cmake --build build_dependencies/libavif --config Release --target=install || goto :error
:: ===== expat =====
7z x expat_src.zip -y -o"dependencies_src"
ren .\dependencies_src\libexpat-R_2_6_2 expat || goto :error
cmake ./dependencies_src/expat/expat -Bbuild_dependencies/expat -DCMAKE_INSTALL_PREFIX="dependencies_bin" || goto :error
cmake --build build_dependencies/expat --config Release --target=install || goto :error
:: ===== ECM =====
git clone -q https://invent.kde.org/frameworks/extra-cmake-modules.git dependencies_src/extra-cmake-modules
cmake .\dependencies_src\extra-cmake-modules -Bbuild_dependencies/extra-cmake-modules -DCMAKE_INSTALL_PREFIX="dependencies_bin" -DBUILD_TESTING=OFF || goto :error
cmake --build build_dependencies/extra-cmake-modules --config Release --target=install || goto :error
:: ===== KArchive =====
git clone -q https://invent.kde.org/frameworks/karchive.git dependencies_src/karchive
cmake .\dependencies_src\karchive -Bbuild_dependencies/karchive -DWITH_LIBZSTD=OFF -DWITH_BZIP2=OFF -DWITH_LIBLZMA=OFF -DCMAKE_INSTALL_PREFIX="dependencies_bin" || goto :error
cmake --build build_dependencies/karchive --config Release --target=install || goto :error
:: ===== KImageFormats =====
git clone -q https://invent.kde.org/frameworks/kimageformats.git dependencies_src/kimageformats
cmake .\dependencies_src\kimageformats -Bbuild_dependencies/kimageformats -DKDE_INSTALL_QTPLUGINDIR=%QT_ROOT_DIR%\plugins || goto :error
cmake --build build_dependencies/kimageformats --config Release --target=install || goto :error
:: ------ app ------
cmake -Bbuild . -DCMAKE_INSTALL_PREFIX="%PWD%\build\"
cmake --build build --config Release
@ -88,7 +117,7 @@ jobs:
windeployqt --verbose=2 --no-quick-import --no-translations --no-opengl-sw --no-system-d3d-compiler --no-system-dxc-compiler --skip-plugin-types tls,networkinformation build\bin\ppic.exe
robocopy ./dependencies_bin/bin build/bin *.dll
if ErrorLevel 8 (exit /B 1)
copy LICENSE build/bin/
copy LICENSE build\bin
exit /B 0
- uses: actions/upload-artifact@v4
with:

3
.gitignore vendored
View File

@ -2,6 +2,9 @@
*.user
*.user.*
# Why, macOS, why?
.DS_Store
# Translation files
*.qm
*.mo

View File

@ -2,9 +2,9 @@
#
# SPDX-License-Identifier: MIT
cmake_minimum_required (VERSION 3.9.5)
cmake_minimum_required(VERSION 3.16)
project (pineapple-pictures)
project(pineapple-pictures VERSION 0.8.2.1) # don't forget to update NEWS file and AppStream metadata.
include (GNUInstallDirs)
include (FeatureSummary)
@ -66,6 +66,7 @@ set (PPIC_CPP_FILES
app/metadatadialog.cpp
app/exiv2wrapper.cpp
app/playlistmanager.cpp
app/shortcutedit.cpp
)
set (PPIC_HEADER_FILES
@ -85,6 +86,7 @@ set (PPIC_HEADER_FILES
app/metadatadialog.h
app/exiv2wrapper.h
app/playlistmanager.h
app/shortcutedit.h
)
set (PPIC_QRC_FILES
@ -105,7 +107,7 @@ if (WIN32)
list(APPEND PPIC_RC_FILES assets/pineapple-pictures.rc)
endif ()
add_executable (${EXE_NAME} WIN32
add_executable (${EXE_NAME}
${PPIC_HEADER_FILES}
${PPIC_CPP_FILES}
${PPIC_QRC_FILES}
@ -179,6 +181,7 @@ macro (ppic_set_version_via_describe _describe_long)
endmacro ()
# Version setup
target_compile_definitions(${EXE_NAME} PRIVATE PPIC_VERSION_STRING="${CMAKE_PROJECT_VERSION}")
if (EXISTS "${CMAKE_SOURCE_DIR}/.git")
find_package(Git)
set_package_properties(Git PROPERTIES TYPE OPTIONAL PURPOSE "Determine exact build version.")
@ -198,8 +201,24 @@ endif ()
# Install settings
if (WIN32)
# TODO: try to avoid install to a "bin" subfolder under windows...
# when fixed, don't forget to update the CI config file...
set_target_properties(${EXE_NAME} PROPERTIES
WIN32_EXECUTABLE TRUE
)
elseif (APPLE)
set_source_files_properties(assets/icons/app-icon.icns PROPERTIES
MACOSX_PACKAGE_LOCATION "Resources"
)
target_sources(${EXE_NAME} PUBLIC assets/icons/app-icon.icns)
# See https://cmake.org/cmake/help/v3.15/prop_tgt/MACOSX_BUNDLE_INFO_PLIST.html
set_target_properties(${EXE_NAME} PROPERTIES
MACOSX_BUNDLE TRUE
MACOSX_BUNDLE_INFO_PLIST dist/MacOSXBundleInfo.plist.in
MACOSX_BUNDLE_BUNDLE_NAME "Pineapple Pictures"
MACOSX_BUNDLE_GUI_IDENTIFIER net.blumia.pineapple-pictures
MACOSX_BUNDLE_ICON_FILE app-icon.icns # contains the .icns file name, *without* the path.
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
)
elseif (UNIX)
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX /usr)
@ -226,6 +245,7 @@ elseif (UNIX)
endif()
set (INSTALL_TARGETS_DEFAULT_ARGS
BUNDLE DESTINATION .
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Devel

27
NEWS
View File

@ -1,3 +1,30 @@
Version 0.8.2.1
~~~~~~~~~~~~~
Released: 2024-10-27
Bugfixes:
* Cannot load translations caused by a change in 0.8.2
Version 0.8.2
~~~~~~~~~~~~~
Released: 2024-10-26
Features:
* New option to allow use light-color checkerboard by default
Contributors:
albanobattistella, mmahhi, gallegonovato
Version 0.8.1
~~~~~~~~~~~~~
Released: 2024-08-25
Features:
* New command line option to list all supported formats
Contributors:
albanobattistella, mmahhi, ovl-1, gallegonovato, Oğuz Ersen
Version 0.8.0
~~~~~~~~~~~~~
Released: 2024-06-29

View File

@ -50,9 +50,13 @@ AboutDialog::AboutDialog(QWidget *parent)
const QStringList aboutStr {
QStringLiteral("<center><img width='128' height='128' src=':/icons/app-icon.svg'/><br/>"),
qApp->applicationDisplayName(),
(QStringLiteral("<br/>") + tr("Version: %1").arg(
#ifdef GIT_DESCRIBE_VERSION_STRING
(QStringLiteral("<br/>") + tr("Version: %1").arg(GIT_DESCRIBE_VERSION_STRING)),
GIT_DESCRIBE_VERSION_STRING
#else
qApp->applicationVersion()
#endif // GIT_DESCRIBE_VERSION_STRING
)),
QStringLiteral("<hr/>"),
tr("Copyright (c) %1 %2", "%1 is year, %2 is the name of copyright holder(s)")
.arg(QStringLiteral("2024"), QStringLiteral("<a href='https://github.com/BLumia'>@BLumia</a>")),

View File

@ -57,9 +57,13 @@ void ActionManager::setupAction(MainWindow *mainWindow)
#define CREATE_NEW_ACTION(w, a) create_action(w, &a, QString(), ACTION_NAME(a))
#define CREATE_NEW_THEMEICON_ACTION(w, a, i) create_action(w, &a, QLatin1String(STRIFY(i)), ACTION_NAME(a), true)
CREATE_NEW_ACTION(mainWindow, actionRotateCounterClockwise);
CREATE_NEW_ACTION(mainWindow, actionPrevPicture);
CREATE_NEW_ACTION(mainWindow, actionNextPicture);
CREATE_NEW_ACTION(mainWindow, actionTogglePauseAnimation);
CREATE_NEW_ACTION(mainWindow, actionAnimationNextFrame);
CREATE_NEW_THEMEICON_ACTION(mainWindow, actionOpen, document-open);
CREATE_NEW_ACTION(mainWindow, actionHorizontalFlip);
CREATE_NEW_ACTION(mainWindow, actionFitInView);
@ -96,13 +100,17 @@ void ActionManager::retranslateUi(MainWindow *mainWindow)
actionZoomOut->setText(QCoreApplication::translate("MainWindow", "Zoom out", nullptr));
actionToggleCheckerboard->setText(QCoreApplication::translate("MainWindow", "Toggle Checkerboard", nullptr));
actionRotateClockwise->setText(QCoreApplication::translate("MainWindow", "Rotate right", nullptr));
actionRotateCounterClockwise->setText(QCoreApplication::translate("MainWindow", "Rotate left", nullptr));
actionPrevPicture->setText(QCoreApplication::translate("MainWindow", "Previous image", nullptr));
actionNextPicture->setText(QCoreApplication::translate("MainWindow", "Next image", nullptr));
actionTogglePauseAnimation->setText(QCoreApplication::translate("MainWindow", "Pause/Resume Animation", nullptr));
actionAnimationNextFrame->setText(QCoreApplication::translate("MainWindow", "Animation Go to Next Frame", nullptr));
actionHorizontalFlip->setText(QCoreApplication::translate("MainWindow", "Flip &Horizontally", nullptr));
actionFitInView->setText("Fit in view"); // TODO: what should it called?
actionFitByWidth->setText("Fit by width"); // TODO: what should it called?
actionFitInView->setText(QCoreApplication::translate("MainWindow", "Fit to view", nullptr));
actionFitByWidth->setText(QCoreApplication::translate("MainWindow", "Fit to width", nullptr));
actionCopyPixmap->setText(QCoreApplication::translate("MainWindow", "Copy P&ixmap", nullptr));
actionCopyFilePath->setText(QCoreApplication::translate("MainWindow", "Copy &File Path", nullptr));
actionPaste->setText(QCoreApplication::translate("MainWindow", "&Paste", nullptr));
@ -128,10 +136,10 @@ void ActionManager::retranslateUi(MainWindow *mainWindow)
void ActionManager::setupShortcuts()
{
actionOpen->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_O));
actionOpen->setShortcut(QKeySequence::Open);
actionActualSize->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_0));
actionZoomIn->setShortcut(QKeySequence(QKeySequence::ZoomIn));
actionZoomOut->setShortcut(QKeySequence(QKeySequence::ZoomOut));
actionZoomIn->setShortcut(QKeySequence::ZoomIn);
actionZoomOut->setShortcut(QKeySequence::ZoomOut);
actionPrevPicture->setShortcuts({
QKeySequence(Qt::Key_PageUp),
QKeySequence(Qt::Key_Left),
@ -141,7 +149,7 @@ void ActionManager::setupShortcuts()
QKeySequence(Qt::Key_Right),
});
actionHorizontalFlip->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_R));
actionCopyPixmap->setShortcut(QKeySequence(QKeySequence::Copy));
actionCopyPixmap->setShortcut(QKeySequence::Copy);
actionPaste->setShortcut(QKeySequence::Paste);
actionTrash->setShortcut(QKeySequence::Delete);
actionHelp->setShortcut(QKeySequence::HelpContents);

View File

@ -30,10 +30,14 @@ public:
QAction *actionZoomOut;
QAction *actionToggleCheckerboard;
QAction *actionRotateClockwise;
QAction *actionRotateCounterClockwise;
QAction *actionPrevPicture;
QAction *actionNextPicture;
QAction *actionTogglePauseAnimation;
QAction *actionAnimationNextFrame;
QAction *actionHorizontalFlip;
QAction *actionFitInView;
QAction *actionFitByWidth;

View File

@ -21,6 +21,9 @@ public:
: QGraphicsPixmapItem(pixmap, parent)
{}
enum { Type = UserType + 1 };
int type() const override { return Type; }
void setScaleHint(float scaleHint) {
m_scaleHint = scaleHint;
}
@ -61,6 +64,9 @@ class PGraphicsMovieItem : public QGraphicsItem
public:
PGraphicsMovieItem(QGraphicsItem *parent = nullptr) : QGraphicsItem(parent) {}
enum { Type = UserType + 2 };
int type() const override { return Type; }
void setMovie(QMovie* movie) {
if (m_movie) m_movie->disconnect();
m_movie.reset(movie);
@ -80,6 +86,10 @@ public:
}
}
inline QMovie * movie() const {
return m_movie.data();
}
private:
QScopedPointer<QMovie> m_movie;
};
@ -158,6 +168,29 @@ bool GraphicsScene::trySetTransformationMode(Qt::TransformationMode mode, float
return false;
}
bool GraphicsScene::togglePauseAnimation()
{
PGraphicsMovieItem * animatedItem = qgraphicsitem_cast<PGraphicsMovieItem *>(m_theThing);
if (animatedItem) {
animatedItem->movie()->setPaused(animatedItem->movie()->state() != QMovie::Paused);
return true;
}
return false;
}
bool GraphicsScene::skipAnimationFrame(int delta)
{
PGraphicsMovieItem * animatedItem = qgraphicsitem_cast<PGraphicsMovieItem *>(m_theThing);
if (animatedItem) {
const int frameCount = animatedItem->movie()->frameCount();
const int currentFrame = animatedItem->movie()->currentFrameNumber();
const int targetFrame = (currentFrame + delta) % frameCount;
animatedItem->movie()->setPaused(true);
return animatedItem->movie()->jumpToFrame(targetFrame);
}
return false;
}
QPixmap GraphicsScene::renderToPixmap()
{
PGraphicsPixmapItem * pixmapItem = qgraphicsitem_cast<PGraphicsPixmapItem *>(m_theThing);

View File

@ -21,10 +21,13 @@ public:
bool trySetTransformationMode(Qt::TransformationMode mode, float scaleHint);
bool togglePauseAnimation();
bool skipAnimationFrame(int delta = 1);
QPixmap renderToPixmap();
private:
QGraphicsItem * m_theThing;
QGraphicsItem * m_theThing = nullptr;
};
#endif // GRAPHICSSCENE_H

View File

@ -5,6 +5,7 @@
#include "graphicsview.h"
#include "graphicsscene.h"
#include "settings.h"
#include <QDebug>
#include <QMouseEvent>
@ -23,14 +24,14 @@ GraphicsView::GraphicsView(QWidget *parent)
setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
setStyleSheet("background-color: rgba(0, 0, 0, 220);"
"border-radius: 3px;");
setAcceptDrops(true);
setAcceptDrops(false);
setCheckerboardEnabled(false);
connect(horizontalScrollBar(), &QScrollBar::valueChanged, this, &GraphicsView::viewportRectChanged);
connect(verticalScrollBar(), &QScrollBar::valueChanged, this, &GraphicsView::viewportRectChanged);
}
void GraphicsView::showFileFromPath(const QString &filePath, bool doRequestGallery)
void GraphicsView::showFileFromPath(const QString &filePath)
{
emit navigatorViewRequired(false, transform());
@ -48,17 +49,14 @@ void GraphicsView::showFileFromPath(const QString &filePath, bool doRequestGalle
// So we cannot use imageFormat() and check if it returns QImage::Format_Invalid to detect if we support the file.
// QImage::Format imageFormat = imageReader.imageFormat();
if (imageReader.format().isEmpty()) {
doRequestGallery = false;
showText(tr("File is not a valid image"));
} else if (imageReader.supportsAnimation() && imageReader.imageCount() > 1) {
showAnimated(filePath);
} else if (!imageReader.canRead()) {
doRequestGallery = false;
showText(tr("Image data is invalid or currently unsupported"));
} else {
QPixmap && pixmap = QPixmap::fromImageReader(&imageReader);
if (pixmap.isNull()) {
doRequestGallery = false;
showText(tr("Image data is invalid or currently unsupported"));
} else {
pixmap.setDevicePixelRatio(devicePixelRatioF());
@ -66,10 +64,6 @@ void GraphicsView::showFileFromPath(const QString &filePath, bool doRequestGalle
}
}
}
if (doRequestGallery) {
emit requestGallery(filePath);
}
}
void GraphicsView::showImage(const QPixmap &pixmap)
@ -318,55 +312,6 @@ void GraphicsView::resizeEvent(QResizeEvent *event)
return QGraphicsView::resizeEvent(event);
}
void GraphicsView::dragEnterEvent(QDragEnterEvent *event)
{
if (event->mimeData()->hasUrls() || event->mimeData()->hasImage() || event->mimeData()->hasText()) {
event->acceptProposedAction();
} else {
event->ignore();
}
// qDebug() << event->mimeData() << "Drag Enter Event"
// << event->mimeData()->hasUrls() << event->mimeData()->hasImage()
// << event->mimeData()->formats() << event->mimeData()->hasFormat("text/uri-list");
return QGraphicsView::dragEnterEvent(event);
}
void GraphicsView::dragMoveEvent(QDragMoveEvent *event)
{
Q_UNUSED(event)
// by default, QGraphicsView/Scene will ignore the action if there are no QGraphicsItem under cursor.
// We actually doesn't care and would like to keep the drag event as-is, so just do nothing here.
}
void GraphicsView::dropEvent(QDropEvent *event)
{
event->acceptProposedAction();
const QMimeData * mimeData = event->mimeData();
if (mimeData->hasUrls()) {
const QList<QUrl> &urls = mimeData->urls();
if (urls.isEmpty()) {
showText(tr("File url list is empty"));
} else {
showFileFromPath(urls.first().toLocalFile(), true);
}
} else if (mimeData->hasImage()) {
QImage img = qvariant_cast<QImage>(mimeData->imageData());
QPixmap pixmap = QPixmap::fromImage(img);
if (pixmap.isNull()) {
showText(tr("Image data is invalid"));
} else {
showImage(pixmap);
}
} else if (mimeData->hasText()) {
showText(mimeData->text());
} else {
showText(tr("Not supported mimedata: %1").arg(mimeData->formats().first()));
}
}
bool GraphicsView::isThingSmallerThanWindowWith(const QTransform &transform) const
{
return rect().size().expandedTo(transform.mapRect(sceneRect()).size().toSize())
@ -394,16 +339,16 @@ bool GraphicsView::shouldIgnoreMousePressMoveEvent(const QMouseEvent *event) con
void GraphicsView::setCheckerboardEnabled(bool enabled, bool invertColor)
{
m_checkerboardEnabled = enabled;
m_isLastCheckerboardColorInverted = invertColor;
bool isLightCheckerboard = Settings::instance()->useLightCheckerboard() ^ invertColor;
if (m_checkerboardEnabled) {
// Prepare background check-board pattern
QPixmap tilePixmap(0x20, 0x20);
tilePixmap.fill(invertColor ? QColor(220, 220, 220, 170) : QColor(35, 35, 35, 170));
tilePixmap.fill(isLightCheckerboard ? QColor(220, 220, 220, 170) : QColor(35, 35, 35, 170));
QPainter tilePainter(&tilePixmap);
constexpr QColor color(45, 45, 45, 170);
constexpr QColor invertedColor(210, 210, 210, 170);
tilePainter.fillRect(0, 0, 0x10, 0x10, invertColor ? invertedColor : color);
tilePainter.fillRect(0x10, 0x10, 0x10, 0x10, invertColor ? invertedColor : color);
tilePainter.fillRect(0, 0, 0x10, 0x10, isLightCheckerboard ? invertedColor : color);
tilePainter.fillRect(0x10, 0x10, 0x10, 0x10, isLightCheckerboard ? invertedColor : color);
tilePainter.end();
setBackgroundBrush(tilePixmap);

View File

@ -15,7 +15,7 @@ class GraphicsView : public QGraphicsView
public:
GraphicsView(QWidget *parent = nullptr);
void showFileFromPath(const QString &filePath, bool requestGallery = false);
void showFileFromPath(const QString &filePath);
void showImage(const QPixmap &pixmap);
void showImage(const QImage &image);
@ -48,7 +48,6 @@ public:
signals:
void navigatorViewRequired(bool required, QTransform transform);
void viewportRectChanged();
void requestGallery(const QString &filePath);
public slots:
void toggleCheckerboard(bool invertCheckerboardColor = false);
@ -60,10 +59,6 @@ private:
void wheelEvent(QWheelEvent *event) override;
void resizeEvent(QResizeEvent *event) override;
void dragEnterEvent(QDragEnterEvent *event) override;
void dragMoveEvent(QDragMoveEvent *event) override;
void dropEvent(QDropEvent *event) override;
bool isThingSmallerThanWindowWith(const QTransform &transform) const;
bool shouldIgnoreMousePressMoveEvent(const QMouseEvent *event) const;
void setCheckerboardEnabled(bool enabled, bool invertColor = false);
@ -75,7 +70,7 @@ private:
bool m_enableFitInView = false;
bool m_avoidResetTransform = false;
bool m_checkerboardEnabled = false;
bool m_isLastCheckerboardColorInverted = false;
bool m_useLightCheckerboard = false;
};
#endif // GRAPHICSVIEW_H

View File

@ -20,6 +20,8 @@
int main(int argc, char *argv[])
{
QCoreApplication::setApplicationName("Pineapple Pictures");
QCoreApplication::setApplicationVersion(PPIC_VERSION_STRING);
QGuiApplication::setHighDpiScaleFactorRoundingPolicy(Settings::instance()->hiDpiScaleFactorBehavior());
QApplication a(argc, argv);
@ -35,18 +37,25 @@ int main(int argc, char *argv[])
qmDir = QT_STRINGIFY(QM_FILE_INSTALL_DIR);
#endif
if (translator.load(QLocale(), QLatin1String("PineapplePictures"), QLatin1String("_"), qmDir)) {
a.installTranslator(&translator);
QCoreApplication::installTranslator(&translator);
}
a.setApplicationName("Pineapple Pictures");
a.setApplicationDisplayName(QCoreApplication::translate("main", "Pineapple Pictures"));
QGuiApplication::setApplicationDisplayName(QCoreApplication::translate("main", "Pineapple Pictures"));
// commandline options
QCommandLineOption supportedImageFormats(QStringLiteral("supported-image-formats"), QCoreApplication::translate("main", "List supported image format suffixes, and quit program."));
// parse commandline arguments
QCommandLineParser parser;
parser.addOption(supportedImageFormats);
parser.addPositionalArgument("File list", QCoreApplication::translate("main", "File list."));
parser.addHelpOption();
parser.process(a);
if (parser.isSet(supportedImageFormats)) {
fputs(qPrintable(MainWindow::supportedImageFormats().join(QChar('\n'))), stdout);
::exit(EXIT_SUCCESS);
}
MainWindow w;
w.show();
@ -59,5 +68,5 @@ int main(int argc, char *argv[])
w.initWindowSize();
return a.exec();
return QApplication::exec();
}

View File

@ -33,6 +33,7 @@
#include <QTimer>
#include <QFileDialog>
#include <QStandardPaths>
#include <QStringBuilder>
#include <QProcess>
#include <QDesktopServices>
#include <QMessageBox>
@ -45,7 +46,7 @@
MainWindow::MainWindow(QWidget *parent)
: FramelessWindow(parent)
, m_am(new ActionManager)
, m_pm(new PlaylistManager(PlaylistManager::PL_SAMEFOLDER, this))
, m_pm(new PlaylistManager(this))
{
if (Settings::instance()->stayOnTop()) {
this->setWindowFlag(Qt::WindowStaysOnTopHint);
@ -55,12 +56,9 @@ MainWindow::MainWindow(QWidget *parent)
this->setMinimumSize(350, 330);
this->setWindowIcon(QIcon(":/icons/app-icon.svg"));
this->setMouseTracking(true);
this->setAcceptDrops(true);
m_pm->setAutoLoadFilterSuffix({
"*.jpg", "*.jpeg", "*.jfif",
"*.png", "*.gif", "*.svg", "*.bmp", "*.webp",
"*.tif", "*.tiff"
});
m_pm->setAutoLoadFilterSuffixes(supportedImageFormats());
m_fadeOutAnimation = new QPropertyAnimation(this, "windowOpacity");
m_fadeOutAnimation->setDuration(300);
@ -98,9 +96,6 @@ MainWindow::MainWindow(QWidget *parent)
connect(m_graphicsView, &GraphicsView::viewportRectChanged,
m_gv, &NavigatorView::updateMainViewportRegion);
connect(m_graphicsView, &GraphicsView::requestGallery,
this, &MainWindow::loadGalleryBySingleLocalFile);
m_closeButton = new ToolButton(true, m_graphicsView);
m_closeButton->setIconSize(QSize(32, 32));
m_closeButton->setFixedSize(QSize(50, 50));
@ -140,19 +135,13 @@ MainWindow::MainWindow(QWidget *parent)
m_gv->setOpacity(0, false);
m_closeButton->setOpacity(0, false);
connect(m_pm, &PlaylistManager::loaded, this, [this](int galleryFileCount) {
connect(m_pm, &PlaylistManager::totalCountChanged, this, [this](int galleryFileCount) {
m_prevButton->setVisible(galleryFileCount > 1);
m_nextButton->setVisible(galleryFileCount > 1);
});
connect(m_pm, &PlaylistManager::currentIndexChanged, this, [this]() {
int index;
QUrl url;
std::tie(index, url) = m_pm->currentFileUrl();
if (index != -1) {
this->setWindowTitle(url.fileName());
}
});
connect(m_pm->model(), &PlaylistModel::modelReset, this, std::bind(&MainWindow::galleryCurrent, this, false, false));
connect(m_pm, &PlaylistManager::currentIndexChanged, this, std::bind(&MainWindow::galleryCurrent, this, true, false));
QShortcut * fullscreenShorucut = new QShortcut(QKeySequence(QKeySequence::FullScreen), this);
connect(fullscreenShorucut, &QShortcut::activated,
@ -162,6 +151,7 @@ MainWindow::MainWindow(QWidget *parent)
QTimer::singleShot(0, this, [this](){
m_am->setupShortcuts();
Settings::instance()->applyUserShortcuts(this);
});
// allow some mouse events can go through these widgets for resizing window.
@ -180,13 +170,8 @@ MainWindow::~MainWindow()
void MainWindow::showUrls(const QList<QUrl> &urls)
{
if (!urls.isEmpty()) {
if (urls.count() == 1) {
m_graphicsView->showFileFromPath(urls.first().toLocalFile(), true);
} else {
m_graphicsView->showFileFromPath(urls.first().toLocalFile(), false);
m_pm->setPlaylist(urls);
m_pm->setCurrentIndex(0);
}
m_graphicsView->showFileFromPath(urls.first().toLocalFile());
m_pm->loadPlaylist(urls);
} else {
m_graphicsView->showText(tr("File url list is empty"));
return;
@ -212,7 +197,7 @@ void MainWindow::initWindowSize()
void MainWindow::adjustWindowSizeBySceneRect()
{
if (m_pm->count() < 1) return;
if (m_pm->totalCount() < 1) return;
QSize sceneSize = m_graphicsView->sceneRect().toRect().size();
QSize sceneSizeWithMargins = sceneSize + QSize(130, 125);
@ -243,60 +228,57 @@ void MainWindow::adjustWindowSizeBySceneRect()
// can be empty if it is NOT from a local file.
QUrl MainWindow::currentImageFileUrl() const
{
QUrl url;
std::tie(std::ignore, url) = m_pm->currentFileUrl();
return url;
return m_pm->urlByIndex(m_pm->curIndex());
}
void MainWindow::clearGallery()
{
m_pm->clear();
}
void MainWindow::loadGalleryBySingleLocalFile(const QString &path)
{
m_pm->setCurrentFile(path);
m_pm->setPlaylist({});
}
void MainWindow::galleryPrev()
{
int index;
QString filePath;
std::tie(index, filePath) = m_pm->previousFile();
if (index >= 0) {
m_graphicsView->showFileFromPath(filePath, false);
QModelIndex index = m_pm->previousIndex();
if (index.isValid()) {
m_pm->setCurrentIndex(index);
m_graphicsView->showFileFromPath(m_pm->localFileByIndex(index));
}
}
void MainWindow::galleryNext()
{
int index;
QString filePath;
std::tie(index, filePath) = m_pm->nextFile();
if (index >= 0) {
m_graphicsView->showFileFromPath(filePath, false);
QModelIndex index = m_pm->nextIndex();
if (index.isValid()) {
m_pm->setCurrentIndex(index);
m_graphicsView->showFileFromPath(m_pm->localFileByIndex(index));
}
}
// If playlist (or its index) get changed, use this method to "reload" the current file.
void MainWindow::galleryCurrent()
// Only use this to update minor information.
void MainWindow::galleryCurrent(bool showLoadImageHintWhenEmpty, bool reloadImage)
{
int index;
QString filePath;
std::tie(index, filePath) = m_pm->currentFile();
if (index >= 0) {
m_graphicsView->showFileFromPath(filePath, false);
} else {
QModelIndex index = m_pm->curIndex();
if (index.isValid()) {
if (reloadImage) m_graphicsView->showFileFromPath(m_pm->localFileByIndex(index));
setWindowTitle(m_pm->urlByIndex(index).fileName());
} else if (showLoadImageHintWhenEmpty && m_pm->totalCount() <= 0) {
m_graphicsView->showText(QCoreApplication::translate("GraphicsScene", "Drag image here"));
}
}
QStringList MainWindow::supportedImageFormats()
{
QStringList formatFilters {
#if QT_VERSION < QT_VERSION_CHECK(6, 8, 0)
QStringLiteral("*.jfif")
#endif // QT_VERSION < QT_VERSION_CHECK(6, 8, 0)
};
for (const QByteArray &item : QImageReader::supportedImageFormats()) {
formatFilters.append(QStringLiteral("*.") % QString::fromLocal8Bit(item));
}
return formatFilters;
}
void MainWindow::showEvent(QShowEvent *event)
{
updateWidgetsPosition();
@ -522,6 +504,50 @@ void MainWindow::contextMenuEvent(QContextMenuEvent *event)
return FramelessWindow::contextMenuEvent(event);
}
void MainWindow::dragEnterEvent(QDragEnterEvent *event)
{
if (event->mimeData()->hasUrls() || event->mimeData()->hasImage() || event->mimeData()->hasText()) {
event->acceptProposedAction();
} else {
event->ignore();
}
return FramelessWindow::dragEnterEvent(event);
}
void MainWindow::dragMoveEvent(QDragMoveEvent *event)
{
Q_UNUSED(event)
}
void MainWindow::dropEvent(QDropEvent *event)
{
event->acceptProposedAction();
const QMimeData * mimeData = event->mimeData();
if (mimeData->hasUrls()) {
const QList<QUrl> &urls = mimeData->urls();
if (urls.isEmpty()) {
m_graphicsView->showText(tr("File url list is empty"));
} else {
showUrls(urls);
}
} else if (mimeData->hasImage()) {
QImage img = qvariant_cast<QImage>(mimeData->imageData());
QPixmap pixmap = QPixmap::fromImage(img);
if (pixmap.isNull()) {
m_graphicsView->showText(tr("Image data is invalid"));
} else {
m_graphicsView->showImage(pixmap);
}
} else if (mimeData->hasText()) {
m_graphicsView->showText(mimeData->text());
} else {
m_graphicsView->showText(tr("Not supported mimedata: %1").arg(mimeData->formats().first()));
}
}
void MainWindow::centerWindow()
{
this->setGeometry(
@ -714,23 +740,21 @@ void MainWindow::on_actionPaste_triggered()
}
if (!clipboardImage.isNull()) {
setWindowTitle(tr("Image From Clipboard"));
m_graphicsView->showImage(clipboardImage);
clearGallery();
} else if (clipboardFileUrl.isValid()) {
QString localFile(clipboardFileUrl.toLocalFile());
m_graphicsView->showFileFromPath(localFile, true);
m_pm->setCurrentFile(localFile);
m_graphicsView->showFileFromPath(clipboardFileUrl.toLocalFile());
m_pm->loadPlaylist(clipboardFileUrl);
}
}
void MainWindow::on_actionTrash_triggered()
{
int currentFileIndex;
QUrl currentFileUrl;
std::tie(currentFileIndex, currentFileUrl) = m_pm->currentFileUrl();
if (!currentFileUrl.isLocalFile()) return;
QModelIndex index = m_pm->curIndex();
if (!m_pm->urlByIndex(index).isLocalFile()) return;
QFile file(currentFileUrl.toLocalFile());
QFile file(m_pm->localFileByIndex(index));
QFileInfo fileInfo(file.fileName());
QMessageBox::StandardButton result = QMessageBox::question(this, tr("Move to Trash"),
@ -741,8 +765,8 @@ void MainWindow::on_actionTrash_triggered()
QMessageBox::warning(this, "Failed to move file to trash",
tr("Move to trash failed, it might caused by file permission issue, file system limitation, or platform limitation."));
} else {
m_pm->removeFileAt(currentFileIndex);
galleryCurrent();
m_pm->removeAt(index);
galleryCurrent(true, true);
}
}
}
@ -760,6 +784,13 @@ void MainWindow::on_actionRotateClockwise_triggered()
m_gv->setVisible(false);
}
void MainWindow::on_actionRotateCounterClockwise_triggered()
{
m_graphicsView->rotateView(false);
m_graphicsView->displayScene();
m_gv->setVisible(false);
}
void MainWindow::on_actionPrevPicture_triggered()
{
galleryPrev();
@ -770,6 +801,16 @@ void MainWindow::on_actionNextPicture_triggered()
galleryNext();
}
void MainWindow::on_actionTogglePauseAnimation_triggered()
{
m_graphicsView->scene()->togglePauseAnimation();
}
void MainWindow::on_actionAnimationNextFrame_triggered()
{
m_graphicsView->scene()->skipAnimationFrame(1);
}
void MainWindow::on_actionToggleStayOnTop_triggered()
{
toggleStayOnTop();

View File

@ -42,10 +42,11 @@ public:
QUrl currentImageFileUrl() const;
void clearGallery();
void loadGalleryBySingleLocalFile(const QString &path);
void galleryPrev();
void galleryNext();
void galleryCurrent();
void galleryCurrent(bool showLoadImageHintWhenEmpty, bool reloadImage);
static QStringList supportedImageFormats();
protected slots:
void showEvent(QShowEvent *event) override;
@ -58,6 +59,9 @@ protected slots:
void wheelEvent(QWheelEvent *event) override;
void resizeEvent(QResizeEvent *event) override;
void contextMenuEvent(QContextMenuEvent *event) override;
void dragEnterEvent(QDragEnterEvent *event) override;
void dragMoveEvent(QDragMoveEvent *event) override;
void dropEvent(QDropEvent *event) override;
void centerWindow();
void closeWindow();
@ -83,10 +87,14 @@ private slots:
void on_actionZoomOut_triggered();
void on_actionToggleCheckerboard_triggered();
void on_actionRotateClockwise_triggered();
void on_actionRotateCounterClockwise_triggered();
void on_actionPrevPicture_triggered();
void on_actionNextPicture_triggered();
void on_actionTogglePauseAnimation_triggered();
void on_actionAnimationNextFrame_triggered();
void on_actionHorizontalFlip_triggered();
void on_actionFitInView_triggered();
void on_actionFitByWidth_triggered();

View File

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2022 Gary Wang <wzc782970009@gmail.com>
// SPDX-FileCopyrightText: 2024 Gary Wang <git@blumia.net>
//
// SPDX-License-Identifier: MIT
@ -9,63 +9,48 @@
#include <QFileInfo>
#include <QUrl>
PlaylistManager::PlaylistManager(PlaylistType type, QObject *parent)
: QObject(parent)
, m_type(type)
PlaylistModel::PlaylistModel(QObject *parent)
: QAbstractListModel(parent)
{
}
PlaylistManager::~PlaylistManager()
PlaylistModel::~PlaylistModel()
{
}
void PlaylistManager::setPlaylistType(PlaylistManager::PlaylistType type)
{
m_type = type;
}
PlaylistManager::PlaylistType PlaylistManager::playlistType() const
{
return m_type;
}
QStringList PlaylistManager::autoLoadFilterSuffix() const
{
return m_autoLoadSuffix;
}
void PlaylistManager::setAutoLoadFilterSuffix(const QStringList & nameFilters)
{
m_autoLoadSuffix = nameFilters;
}
void PlaylistManager::clear()
{
m_currentIndex = -1;
m_playlist.clear();
}
void PlaylistManager::setPlaylist(const QList<QUrl> &urls)
void PlaylistModel::setPlaylist(const QList<QUrl> &urls)
{
beginResetModel();
m_playlist = urls;
endResetModel();
}
void PlaylistManager::setCurrentFile(const QString & filePath)
QModelIndex PlaylistModel::loadPlaylist(const QList<QUrl> & urls)
{
QFileInfo info(filePath);
if (urls.isEmpty()) return QModelIndex();
if (urls.count() == 1) {
return loadPlaylist(urls.constFirst());
} else {
setPlaylist(urls);
return index(0);
}
}
QModelIndex PlaylistModel::loadPlaylist(const QUrl &url)
{
QFileInfo info(url.toLocalFile());
QDir dir(info.path());
QString && currentFileName = info.fileName();
switch (playlistType()) {
case PL_SAMEFOLDER: {
if (dir.path() == m_currentDir) {
int index = indexOf(filePath);
m_currentIndex = index == -1 ? appendFile(filePath) : index;
} else {
int idx = indexOf(url);
return idx == -1 ? appendToPlaylist(url) : index(idx);
}
QStringList entryList = dir.entryList(
m_autoLoadSuffix,
m_autoLoadSuffixes,
QDir::Files | QDir::NoSymLinks, QDir::NoSort);
QCollator collator;
@ -73,102 +58,187 @@ void PlaylistManager::setCurrentFile(const QString & filePath)
std::sort(entryList.begin(), entryList.end(), collator);
clear();
QList<QUrl> playlist;
int index = -1;
int idx = -1;
for (int i = 0; i < entryList.count(); i++) {
const QString & fileName = entryList.at(i);
const QString & oneEntry = dir.absoluteFilePath(fileName);
const QUrl & url = QUrl::fromLocalFile(oneEntry);
m_playlist.append(url);
playlist.append(url);
if (fileName == currentFileName) {
index = i;
idx = i;
}
}
m_currentIndex = index == -1 ? appendFile(filePath) : index;
if (idx == -1) {
idx = playlist.count();
playlist.append(url);
}
m_currentDir = dir.path();
}
break;
}
case PL_USERPLAYLIST:{
int index = indexOf(filePath);
m_currentIndex = index == -1 ? appendFile(filePath) : index;
break;
}
default:
break;
}
emit currentIndexChanged(m_currentIndex);
emit loaded(m_playlist.count());
setPlaylist(playlist);
return index(idx);
}
void PlaylistManager::setCurrentIndex(int index)
QModelIndex PlaylistModel::appendToPlaylist(const QUrl &url)
{
if (index < 0 || index >= m_playlist.count()) return;
m_currentIndex = index;
emit currentIndexChanged(m_currentIndex);
const int lastIndex = rowCount();
beginInsertRows(QModelIndex(), lastIndex, lastIndex);
m_playlist.append(url);
endInsertRows();
return index(lastIndex);
}
int PlaylistManager::appendFile(const QString &filePath)
{
int index = m_playlist.length();
m_playlist.append(QUrl::fromLocalFile(filePath));
return index;
}
// Note: this will only remove file out of the list, this will NOT delete the file
void PlaylistManager::removeFileAt(int index)
bool PlaylistModel::removeAt(int index)
{
if (index < 0 || index >= rowCount()) return false;
beginRemoveRows(QModelIndex(), index, index);
m_playlist.removeAt(index);
if (m_playlist.count() <= m_currentIndex) {
m_currentIndex--;
}
endRemoveRows();
return true;
}
int PlaylistManager::indexOf(const QString &filePath)
int PlaylistModel::indexOf(const QUrl &url) const
{
const QUrl & url = QUrl::fromLocalFile(filePath);
return m_playlist.indexOf(url);
}
int PlaylistManager::count() const
QUrl PlaylistModel::urlByIndex(int index) const
{
return m_playlist.value(index);
}
QStringList PlaylistModel::autoLoadFilterSuffixes() const
{
return m_autoLoadSuffixes;
}
QHash<int, QByteArray> PlaylistModel::roleNames() const
{
QHash<int, QByteArray> result = QAbstractListModel::roleNames();
result.insert(UrlRole, "url");
return result;
}
int PlaylistModel::rowCount(const QModelIndex &parent) const
{
return m_playlist.count();
}
std::tuple<int, QString> PlaylistManager::previousFile() const
QVariant PlaylistModel::data(const QModelIndex &index, int role) const
{
int count = m_playlist.count();
if (count == 0) return std::make_tuple(-1, QString());
if (!index.isValid()) return QVariant();
int index = m_currentIndex - 1 < 0 ? count - 1 : m_currentIndex - 1;
return std::make_tuple(index, m_playlist.at(index).toLocalFile());
switch (role) {
case Qt::DisplayRole:
return m_playlist.at(index.row()).fileName();
case UrlRole:
return m_playlist.at(index.row());
}
return QVariant();
}
std::tuple<int, QString> PlaylistManager::nextFile() const
PlaylistManager::PlaylistManager(QObject *parent)
: QObject(parent)
{
int count = m_playlist.count();
if (count == 0) return std::make_tuple(-1, QString());
connect(&m_model, &PlaylistModel::rowsRemoved, this,
[this](const QModelIndex &, int, int) {
if (m_model.rowCount() <= m_currentIndex) {
setProperty("currentIndex", m_currentIndex - 1);
}
});
int index = m_currentIndex + 1 == count ? 0 : m_currentIndex + 1;
return std::make_tuple(index, m_playlist.at(index).toLocalFile());
auto onRowCountChanged = [this](){
emit totalCountChanged(m_model.rowCount());
};
connect(&m_model, &PlaylistModel::rowsInserted, this, onRowCountChanged);
connect(&m_model, &PlaylistModel::rowsRemoved, this, onRowCountChanged);
connect(&m_model, &PlaylistModel::modelReset, this, onRowCountChanged);
}
std::tuple<int, QString> PlaylistManager::currentFile() const
PlaylistManager::~PlaylistManager()
{
if (m_playlist.count() == 0) return std::make_tuple(-1, QString());
return std::make_tuple(m_currentIndex, m_playlist.at(m_currentIndex).toLocalFile());
}
std::tuple<int, QUrl> PlaylistManager::currentFileUrl() const
PlaylistModel *PlaylistManager::model()
{
if (m_playlist.count() == 0) return std::make_tuple(-1, QUrl());
return &m_model;
}
return std::make_tuple(m_currentIndex, m_playlist.at(m_currentIndex));
void PlaylistManager::setPlaylist(const QList<QUrl> &urls)
{
m_model.setPlaylist(urls);
}
QModelIndex PlaylistManager::loadPlaylist(const QList<QUrl> &urls)
{
QModelIndex idx = m_model.loadPlaylist(urls);
setProperty("currentIndex", idx.row());
return idx;
}
QModelIndex PlaylistManager::loadPlaylist(const QUrl &url)
{
QModelIndex idx = m_model.loadPlaylist(url);
setProperty("currentIndex", idx.row());
return idx;
}
int PlaylistManager::totalCount() const
{
return m_model.rowCount();
}
QModelIndex PlaylistManager::previousIndex() const
{
int count = totalCount();
if (count == 0) return QModelIndex();
return m_model.index(m_currentIndex - 1 < 0 ? count - 1 : m_currentIndex - 1);
}
QModelIndex PlaylistManager::nextIndex() const
{
int count = totalCount();
if (count == 0) return QModelIndex();
return m_model.index(m_currentIndex + 1 == count ? 0 : m_currentIndex + 1);
}
QModelIndex PlaylistManager::curIndex() const
{
return m_model.index(m_currentIndex);
}
void PlaylistManager::setCurrentIndex(const QModelIndex &index)
{
if (index.isValid() && index.row() >= 0 && index.row() < totalCount()) {
setProperty("currentIndex", index.row());
}
}
QUrl PlaylistManager::urlByIndex(const QModelIndex &index)
{
return m_model.urlByIndex(index.row());
}
QString PlaylistManager::localFileByIndex(const QModelIndex &index)
{
return urlByIndex(index).toLocalFile();
}
bool PlaylistManager::removeAt(const QModelIndex &index)
{
return m_model.removeAt(index.row());
}
void PlaylistManager::setAutoLoadFilterSuffixes(const QStringList &nameFilters)
{
m_model.setProperty("autoLoadFilterSuffixes", nameFilters);
}
QList<QUrl> PlaylistManager::convertToUrlList(const QStringList &files)

View File

@ -1,58 +1,85 @@
// SPDX-FileCopyrightText: 2022 Gary Wang <wzc782970009@gmail.com>
// SPDX-FileCopyrightText: 2024 Gary Wang <git@blumia.net>
//
// SPDX-License-Identifier: MIT
#pragma once
#include <QObject>
#include <QUrl>
#include <QAbstractListModel>
class PlaylistModel : public QAbstractListModel
{
Q_OBJECT
public:
enum PlaylistRole {
UrlRole = Qt::UserRole
};
Q_ENUM(PlaylistRole)
Q_PROPERTY(QStringList autoLoadFilterSuffixes MEMBER m_autoLoadSuffixes NOTIFY autoLoadFilterSuffixesChanged)
explicit PlaylistModel(QObject *parent = nullptr);
~PlaylistModel();
void setPlaylist(const QList<QUrl> & urls);
QModelIndex loadPlaylist(const QList<QUrl> & urls);
QModelIndex loadPlaylist(const QUrl & url);
QModelIndex appendToPlaylist(const QUrl & url);
bool removeAt(int index);
int indexOf(const QUrl & url) const;
QUrl urlByIndex(int index) const;
QStringList autoLoadFilterSuffixes() const;
QHash<int, QByteArray> roleNames() const override;
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
signals:
void autoLoadFilterSuffixesChanged(QStringList suffixes);
private:
// model data
QList<QUrl> m_playlist;
// properties
QStringList m_autoLoadSuffixes = {};
// internal
QString m_currentDir;
};
class PlaylistManager : public QObject
{
Q_OBJECT
public:
Q_PROPERTY(int currentIndex MEMBER m_currentIndex NOTIFY currentIndexChanged)
Q_PROPERTY(QStringList autoLoadFilterSuffixes WRITE setAutoLoadFilterSuffixes)
Q_PROPERTY(PlaylistModel * model READ model CONSTANT)
enum PlaylistType {
PL_USERPLAYLIST, // Regular playlist, managed by user.
PL_SAMEFOLDER // PlaylistManager managed playlist, loaded from files from same folder.
};
explicit PlaylistManager(PlaylistType type = PL_USERPLAYLIST, QObject *parent = nullptr);
explicit PlaylistManager(QObject *parent = nullptr);
~PlaylistManager();
void setPlaylistType(PlaylistType type);
PlaylistType playlistType() const;
PlaylistModel * model();
QStringList autoLoadFilterSuffix() const;
void setAutoLoadFilterSuffix(const QStringList &nameFilters);
void setPlaylist(const QList<QUrl> & url);
Q_INVOKABLE QModelIndex loadPlaylist(const QList<QUrl> & urls);
Q_INVOKABLE QModelIndex loadPlaylist(const QUrl & url);
void clear();
int totalCount() const;
QModelIndex previousIndex() const;
QModelIndex nextIndex() const;
QModelIndex curIndex() const;
void setCurrentIndex(const QModelIndex & index);
QUrl urlByIndex(const QModelIndex & index);
QString localFileByIndex(const QModelIndex & index);
bool removeAt(const QModelIndex & index);
void setPlaylist(const QList<QUrl> & urls);
void setCurrentFile(const QString & filePath);
void setCurrentIndex(int index);
int appendFile(const QString & filePath);
void removeFileAt(int index);
int indexOf(const QString & filePath);
int count() const;
std::tuple<int, QString> previousFile() const;
std::tuple<int, QString> nextFile() const;
std::tuple<int, QString> currentFile() const;
std::tuple<int, QUrl> currentFileUrl() const;
void setAutoLoadFilterSuffixes(const QStringList &nameFilters);
static QList<QUrl> convertToUrlList(const QStringList & files);
signals:
void loaded(int length);
void currentIndexChanged(int index);
void totalCountChanged(int count);
private:
QList<QUrl> m_playlist;
PlaylistType m_type;
QString m_currentDir;
int m_currentIndex = -1;
QStringList m_autoLoadSuffix = {};
PlaylistModel m_model;
};

View File

@ -8,6 +8,9 @@
#include <QStandardPaths>
#include <QDebug>
#include <QDir>
#include <QAction>
#include <QWidget>
#include <QKeySequence>
#include <QMetaEnum>
namespace QEnumHelper
@ -47,6 +50,11 @@ bool Settings::stayOnTop()
return m_qsettings->value("stay_on_top", true).toBool();
}
bool Settings::useLightCheckerboard()
{
return m_qsettings->value("use_light_checkerboard", false).toBool();
}
Settings::DoubleClickBehavior Settings::doubleClickBehavior() const
{
QString result = m_qsettings->value("double_click_behavior", "Close").toString();
@ -81,6 +89,12 @@ void Settings::setStayOnTop(bool on)
m_qsettings->sync();
}
void Settings::setUseLightCheckerboard(bool light)
{
m_qsettings->setValue("use_light_checkerboard", light);
m_qsettings->sync();
}
void Settings::setDoubleClickBehavior(DoubleClickBehavior dcb)
{
m_qsettings->setValue("double_click_behavior", QEnumHelper::toString(dcb));
@ -105,6 +119,47 @@ void Settings::setHiDpiScaleFactorBehavior(Qt::HighDpiScaleFactorRoundingPolicy
m_qsettings->sync();
}
void Settings::applyUserShortcuts(QWidget *widget)
{
m_qsettings->beginGroup("shortcuts");
const QStringList shortcutNames = m_qsettings->allKeys();
for (const QString & name : shortcutNames) {
QList<QKeySequence> shortcuts = m_qsettings->value(name).value<QList<QKeySequence>>();
setShortcutsForAction(widget, name, shortcuts, false);
}
m_qsettings->endGroup();
}
bool Settings::setShortcutsForAction(QWidget *widget, const QString &objectName,
QList<QKeySequence> shortcuts, bool writeConfig)
{
QAction * targetAction = nullptr;
for (QAction * action : widget->actions()) {
if (action->objectName() == objectName) {
targetAction = action;
} else {
for (const QKeySequence & shortcut : std::as_const(shortcuts)) {
if (action->shortcuts().contains(shortcut)) {
return false;
}
}
}
}
if (targetAction) {
targetAction->setShortcuts(shortcuts);
}
if (targetAction && writeConfig) {
m_qsettings->beginGroup("shortcuts");
m_qsettings->setValue(objectName, QVariant::fromValue(shortcuts));
m_qsettings->endGroup();
m_qsettings->sync();
}
return true;
}
#if defined(FLAG_PORTABLE_MODE_SUPPORT) && defined(Q_OS_WIN)
#include <windows.h>
// QCoreApplication::applicationDirPath() parses the "applicationDirPath" from arg0, which...
@ -138,10 +193,12 @@ Settings::Settings()
#endif // defined(FLAG_PORTABLE_MODE_SUPPORT) && defined(Q_OS_WIN)
if (configPath.isEmpty()) {
// %LOCALAPPDATA%\<APPNAME> under Windows, ~/.config/<APPNAME> under Linux.
// Should be %LOCALAPPDATA%\<APPNAME> under Windows, ~/.config/<APPNAME> under Linux.
configPath = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);
}
m_qsettings = new QSettings(QDir(configPath).absoluteFilePath("config.ini"), QSettings::IniFormat, this);
qRegisterMetaType<QList<QKeySequence>>();
}

View File

@ -33,17 +33,23 @@ public:
static Settings *instance();
bool stayOnTop();
bool useLightCheckerboard();
DoubleClickBehavior doubleClickBehavior() const;
MouseWheelBehavior mouseWheelBehavior() const;
WindowSizeBehavior initWindowSizeBehavior() const;
Qt::HighDpiScaleFactorRoundingPolicy hiDpiScaleFactorBehavior() const;
void setStayOnTop(bool on);
void setUseLightCheckerboard(bool light);
void setDoubleClickBehavior(DoubleClickBehavior dcb);
void setMouseWheelBehavior(MouseWheelBehavior mwb);
void setInitWindowSizeBehavior(WindowSizeBehavior wsb);
void setHiDpiScaleFactorBehavior(Qt::HighDpiScaleFactorRoundingPolicy hidpi);
void applyUserShortcuts(QWidget * widget);
bool setShortcutsForAction(QWidget * widget, const QString & objectName,
QList<QKeySequence> shortcuts, bool writeConfig = true);
private:
Settings();
@ -55,4 +61,3 @@ signals:
public slots:
};

View File

@ -5,15 +5,22 @@
#include "settingsdialog.h"
#include "settings.h"
#include "shortcutedit.h"
#include <QAction>
#include <QCheckBox>
#include <QComboBox>
#include <QFormLayout>
#include <QKeySequenceEdit>
#include <QScrollArea>
#include <QSplitter>
#include <QStringListModel>
#include <QMessageBox>
SettingsDialog::SettingsDialog(QWidget *parent)
: QDialog(parent)
, m_stayOnTop(new QCheckBox)
, m_useLightCheckerboard(new QCheckBox)
, m_doubleClickBehavior(new QComboBox)
, m_mouseWheelBehavior(new QComboBox)
, m_initWindowSizeBehavior(new QComboBox)
@ -21,7 +28,49 @@ SettingsDialog::SettingsDialog(QWidget *parent)
{
this->setWindowTitle(tr("Settings"));
QFormLayout * settingsForm = new QFormLayout(this);
QHBoxLayout * mainLayout = new QHBoxLayout(this);
QTabWidget * settingsTabs = new QTabWidget(this);
mainLayout->addWidget(settingsTabs);
QWidget * settingsFormHolder = new QWidget;
QFormLayout * settingsForm = new QFormLayout(settingsFormHolder);
settingsTabs->addTab(settingsFormHolder, tr("Options"));
QSplitter * shortcutEditorSplitter = new QSplitter;
shortcutEditorSplitter->setOrientation(Qt::Vertical);
shortcutEditorSplitter->setChildrenCollapsible(false);
QScrollArea * shortcutScrollArea = new QScrollArea;
shortcutEditorSplitter->addWidget(shortcutScrollArea);
shortcutScrollArea->setWidgetResizable(true);
shortcutScrollArea->setMinimumHeight(200);
QWidget * shortcutsFormHolder = new QWidget;
QFormLayout * shortcutsForm = new QFormLayout(shortcutsFormHolder);
shortcutScrollArea->setWidget(shortcutsFormHolder);
settingsTabs->addTab(shortcutEditorSplitter, tr("Shortcuts"));
for (const QAction * action : parent->actions()) {
ShortcutEdit * shortcutEdit = new ShortcutEdit;
shortcutEdit->setObjectName(QLatin1String("shortcut_") + action->objectName());
shortcutEdit->setShortcuts(action->shortcuts());
shortcutsForm->addRow(action->text(), shortcutEdit);
connect(shortcutEdit, &ShortcutEdit::editButtonClicked, this, [=](){
if (shortcutEditorSplitter->count() == 1) shortcutEditorSplitter->addWidget(new QWidget);
ShortcutEditor * shortcutEditor = new ShortcutEditor(shortcutEdit);
shortcutEditor->setDescription(tr("Editing shortcuts for action \"%1\":").arg(action->text()));
QWidget * oldEditor = shortcutEditorSplitter->replaceWidget(1, shortcutEditor);
shortcutEditorSplitter->setSizes({shortcutEditorSplitter->height(), 1});
oldEditor->deleteLater();
});
connect(shortcutEdit, &ShortcutEdit::applyShortcutsRequested, this, [=](QList<QKeySequence> newShortcuts){
bool succ = Settings::instance()->setShortcutsForAction(parent, shortcutEdit->objectName().mid(9),
newShortcuts);
if (!succ) {
QMessageBox::warning(this, tr("Failed to set shortcuts"),
tr("Please check if shortcuts are duplicated with existing shortcuts."));
}
shortcutEdit->setShortcuts(action->shortcuts());
});
}
static QList< QPair<Settings::DoubleClickBehavior, QString> > _dc_options {
{ Settings::DoubleClickBehavior::Ignore, tr("Do nothing") },
@ -67,12 +116,14 @@ SettingsDialog::SettingsDialog(QWidget *parent)
}
settingsForm->addRow(tr("Stay on top when start-up"), m_stayOnTop);
settingsForm->addRow(tr("Use light-color checkerboard"), m_useLightCheckerboard);
settingsForm->addRow(tr("Double-click behavior"), m_doubleClickBehavior);
settingsForm->addRow(tr("Mouse wheel behavior"), m_mouseWheelBehavior);
settingsForm->addRow(tr("Default window size"), m_initWindowSizeBehavior);
settingsForm->addRow(tr("HiDPI scale factor rounding policy"), m_hiDpiRoundingPolicyBehavior);
m_stayOnTop->setChecked(Settings::instance()->stayOnTop());
m_useLightCheckerboard->setChecked(Settings::instance()->useLightCheckerboard());
m_doubleClickBehavior->setModel(new QStringListModel(dcbDropDown));
Settings::DoubleClickBehavior dcb = Settings::instance()->doubleClickBehavior();
m_doubleClickBehavior->setCurrentIndex(static_cast<int>(dcb));
@ -95,6 +146,10 @@ SettingsDialog::SettingsDialog(QWidget *parent)
Settings::instance()->setStayOnTop(state == Qt::Checked);
});
connect(m_useLightCheckerboard, &QCheckBox::stateChanged, this, [ = ](int state){
Settings::instance()->setUseLightCheckerboard(state == Qt::Checked);
});
connect(m_doubleClickBehavior, QOverload<int>::of(&QComboBox::currentIndexChanged), this, [ = ](int index){
Settings::instance()->setDoubleClickBehavior(_dc_options.at(index).first);
});

View File

@ -23,6 +23,7 @@ public slots:
private:
QCheckBox * m_stayOnTop = nullptr;
QCheckBox * m_useLightCheckerboard = nullptr;
QComboBox * m_doubleClickBehavior = nullptr;
QComboBox * m_mouseWheelBehavior = nullptr;
QComboBox * m_initWindowSizeBehavior = nullptr;

133
app/shortcutedit.cpp Normal file
View File

@ -0,0 +1,133 @@
// SPDX-FileCopyrightText: 2024 Gary Wang <opensource@blumia.net>
//
// SPDX-License-Identifier: MIT
#include "shortcutedit.h"
#include <QLabel>
#include <QToolButton>
#include <QHBoxLayout>
#include <QFormLayout>
#include <QDialogButtonBox>
#include <QKeySequenceEdit>
ShortcutEditor::ShortcutEditor(ShortcutEdit * shortcutEdit, QWidget * parent)
: QWidget(parent)
, m_descriptionLabel(new QLabel)
, m_shortcutEdit(shortcutEdit)
, m_shortcutLayout(new QFormLayout)
{
Q_CHECK_PTR(m_shortcutEdit);
QDialogButtonBox * buttons = new QDialogButtonBox(QDialogButtonBox::Apply | QDialogButtonBox::Discard);
QVBoxLayout * layout = new QVBoxLayout(this);
layout->addWidget(m_descriptionLabel);
layout->addLayout(m_shortcutLayout);
layout->addWidget(buttons);
connect(buttons, &QDialogButtonBox::clicked, this, [=](QAbstractButton *button){
if ((QPushButton *)button == buttons->button(QDialogButtonBox::Apply)) {
applyShortcuts();
} else {
reloadShortcuts();
}
});
connect(shortcutEdit, &ShortcutEdit::shortcutsChanged, this, &ShortcutEditor::reloadShortcuts);
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum);
reloadShortcuts();
}
ShortcutEditor::~ShortcutEditor()
{
}
void ShortcutEditor::setDescription(const QString &desc)
{
m_descriptionLabel->setText(desc);
}
void ShortcutEditor::reloadShortcuts()
{
if (!m_keySequenceEdits.isEmpty()) {
for (QKeySequenceEdit * keyseqEdit : m_keySequenceEdits) {
m_shortcutLayout->removeRow(keyseqEdit);
}
m_keySequenceEdits.clear();
}
QList<QKeySequence> shortcuts = m_shortcutEdit->shortcuts();
shortcuts.append(QKeySequence());
for (const QKeySequence & shortcut : shortcuts) {
QKeySequenceEdit * keyseqEdit = new QKeySequenceEdit(this);
#if QT_VERSION >= QT_VERSION_CHECK(6, 4, 0)
keyseqEdit->setClearButtonEnabled(true);
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 4, 0)
#if QT_VERSION >= QT_VERSION_CHECK(6, 5, 0)
keyseqEdit->setMaximumSequenceLength(1);
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 5, 0)
keyseqEdit->setKeySequence(shortcut);
m_keySequenceEdits.append(keyseqEdit);
}
for (int i = 0; i < m_keySequenceEdits.count(); i++) {
m_shortcutLayout->addRow(tr("Shortcut #%1").arg(i + 1), m_keySequenceEdits.at(i));
}
}
void ShortcutEditor::applyShortcuts()
{
QList<QKeySequence> shortcuts;
for (const QKeySequenceEdit * keyseqEdit : m_keySequenceEdits) {
if (!keyseqEdit->keySequence().isEmpty() && !shortcuts.contains(keyseqEdit->keySequence())) {
shortcuts.append(keyseqEdit->keySequence());
}
}
emit m_shortcutEdit->applyShortcutsRequested(shortcuts);
}
// ----------------------------------------
ShortcutEdit::ShortcutEdit(QWidget *parent)
: QWidget(parent)
, m_shortcutsLabel(new QLabel(this))
, m_setShortcutButton(new QToolButton(this))
{
m_setShortcutButton->setText("...");
QHBoxLayout * layout = new QHBoxLayout(this);
layout->setContentsMargins(0, 0, 0, 0);
layout->addWidget(m_shortcutsLabel, 1);
layout->addWidget(m_setShortcutButton);
connect(this, &ShortcutEdit::shortcutsChanged, this, [=](){
QStringList shortcutTexts;
for (const QKeySequence & shortcut : m_shortcuts) {
shortcutTexts.append(shortcut.toString());
}
m_shortcutsLabel->setText(shortcutTexts.isEmpty() ? tr("No shortcuts") : shortcutTexts.join(", "));
m_shortcutsLabel->setDisabled(shortcutTexts.isEmpty());
});
connect(m_setShortcutButton, &QToolButton::clicked, this, &ShortcutEdit::editButtonClicked);
adjustSize();
}
ShortcutEdit::~ShortcutEdit()
{
}
QList<QKeySequence> ShortcutEdit::shortcuts() const
{
return m_shortcuts;
}
void ShortcutEdit::setShortcuts(const QList<QKeySequence> &shortcuts)
{
m_shortcuts = shortcuts;
emit shortcutsChanged();
}

55
app/shortcutedit.h Normal file
View File

@ -0,0 +1,55 @@
// SPDX-FileCopyrightText: 2024 Gary Wang <opensource@blumia.net>
//
// SPDX-License-Identifier: MIT
#pragma once
#include <QWidget>
#include <QList>
#include <QKeySequence>
class QLabel;
class QFormLayout;
class QToolButton;
class QKeySequenceEdit;
class ShortcutEdit;
class ShortcutEditor : public QWidget
{
Q_OBJECT
public:
explicit ShortcutEditor(ShortcutEdit * shortcutEdit, QWidget * parent = nullptr);
~ShortcutEditor();
void setDescription(const QString & desc);
void reloadShortcuts();
void applyShortcuts();
private:
QLabel * m_descriptionLabel;
ShortcutEdit * m_shortcutEdit;
QFormLayout * m_shortcutLayout;
QList<QKeySequenceEdit *> m_keySequenceEdits;
};
class ShortcutEdit : public QWidget
{
Q_OBJECT
Q_PROPERTY(QList<QKeySequence> shortcuts MEMBER m_shortcuts WRITE setShortcuts NOTIFY shortcutsChanged)
public:
explicit ShortcutEdit(QWidget * parent = nullptr);
~ShortcutEdit();
QList<QKeySequence> shortcuts() const;
void setShortcuts(const QList<QKeySequence> &shortcuts);
signals:
void shortcutsChanged();
void editButtonClicked();
void applyShortcutsRequested(QList<QKeySequence> newShortcuts);
private:
QList<QKeySequence> m_shortcuts;
QLabel * m_shortcutsLabel;
QToolButton * m_setShortcutButton;
};

View File

@ -44,129 +44,129 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="54"/>
<location filename="../aboutdialog.cpp" line="53"/>
<source>Version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="60"/>
<location filename="../aboutdialog.cpp" line="64"/>
<source>Logo designed by %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="62"/>
<location filename="../aboutdialog.cpp" line="66"/>
<source>Built with Qt %1 (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="63"/>
<location filename="../aboutdialog.cpp" line="67"/>
<source>Source code</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="73"/>
<location filename="../aboutdialog.cpp" line="77"/>
<source>Contributors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="75"/>
<location filename="../aboutdialog.cpp" line="79"/>
<source>List of contributors on GitHub</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="76"/>
<location filename="../aboutdialog.cpp" line="80"/>
<source>Thanks to all people who contributed to this project.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="80"/>
<location filename="../aboutdialog.cpp" line="84"/>
<source>Translators</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="81"/>
<location filename="../aboutdialog.cpp" line="85"/>
<source>I would like to thank the following people who volunteered to translate this application.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="125"/>
<location filename="../aboutdialog.cpp" line="129"/>
<source>%1 is built on the following free software libraries:</source>
<comment>Free as in freedom</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="149"/>
<location filename="../aboutdialog.cpp" line="153"/>
<source>&amp;Special Thanks</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="151"/>
<location filename="../aboutdialog.cpp" line="155"/>
<source>&amp;Third-party Libraries</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="87"/>
<location filename="../aboutdialog.cpp" line="91"/>
<source>Your Rights</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="57"/>
<location filename="../aboutdialog.cpp" line="61"/>
<source>Copyright (c) %1 %2</source>
<comment>%1 is year, %2 is the name of copyright holder(s)</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="89"/>
<location filename="../aboutdialog.cpp" line="93"/>
<source>%1 is released under the MIT License.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="90"/>
<location filename="../aboutdialog.cpp" line="94"/>
<source>This license grants people a number of freedoms:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="91"/>
<location filename="../aboutdialog.cpp" line="95"/>
<source>You are free to use %1, for any purpose</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="92"/>
<location filename="../aboutdialog.cpp" line="96"/>
<source>You are free to distribute %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="93"/>
<location filename="../aboutdialog.cpp" line="97"/>
<source>You can study how %1 works and change it</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="94"/>
<location filename="../aboutdialog.cpp" line="98"/>
<source>You can distribute changed versions of %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="96"/>
<location filename="../aboutdialog.cpp" line="100"/>
<source>The MIT license guarantees you this freedom. Nobody is ever permitted to take it away.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="124"/>
<location filename="../aboutdialog.cpp" line="128"/>
<source>Third-party Libraries used by %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="147"/>
<location filename="../aboutdialog.cpp" line="151"/>
<source>&amp;Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="148"/>
<location filename="../aboutdialog.cpp" line="152"/>
<source>&amp;About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="150"/>
<location filename="../aboutdialog.cpp" line="154"/>
<source>&amp;License</source>
<translation type="unfinished"></translation>
</message>
@ -174,181 +174,207 @@
<context>
<name>GraphicsScene</name>
<message>
<location filename="../graphicsscene.cpp" line="89"/>
<location filename="../mainwindow.cpp" line="296"/>
<location filename="../mainwindow.cpp" line="265"/>
<location filename="../graphicsscene.cpp" line="100"/>
<source>Drag image here</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>GraphicsView</name>
<message>
<location filename="../graphicsview.cpp" line="351"/>
<source>File url list is empty</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="52"/>
<source>File is not a valid image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="57"/>
<location filename="../graphicsview.cpp" line="62"/>
<location filename="../graphicsview.cpp" line="56"/>
<location filename="../graphicsview.cpp" line="60"/>
<source>Image data is invalid or currently unsupported</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="359"/>
<source>Image data is invalid</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="366"/>
<source>Not supported mimedata: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="191"/>
<location filename="../mainwindow.cpp" line="176"/>
<location filename="../mainwindow.cpp" line="532"/>
<source>File url list is empty</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="448"/>
<location filename="../mainwindow.cpp" line="430"/>
<source>&amp;Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="737"/>
<location filename="../mainwindow.cpp" line="540"/>
<source>Image data is invalid</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="547"/>
<source>Not supported mimedata: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="743"/>
<source>Image From Clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="761"/>
<source>Are you sure you want to move &quot;%1&quot; to recycle bin?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="742"/>
<location filename="../mainwindow.cpp" line="766"/>
<source>Move to trash failed, it might caused by file permission issue, file system limitation, or platform limitation.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<location filename="../actionmanager.cpp" line="114"/>
<source>Copy P&amp;ixmap</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="107"/>
<location filename="../actionmanager.cpp" line="115"/>
<source>Copy &amp;File Path</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="125"/>
<location filename="../actionmanager.cpp" line="133"/>
<source>Properties</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="118"/>
<location filename="../aboutdialog.cpp" line="39"/>
<location filename="../actionmanager.cpp" line="110"/>
<source>Stay on top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="119"/>
<location filename="../aboutdialog.cpp" line="42"/>
<location filename="../actionmanager.cpp" line="111"/>
<source>Protected mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="120"/>
<location filename="../aboutdialog.cpp" line="45"/>
<location filename="../actionmanager.cpp" line="112"/>
<source>Keep transformation</source>
<comment>The &apos;transformation&apos; means the flip/rotation status that currently applied to the image view</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<location filename="../actionmanager.cpp" line="99"/>
<source>Zoom in</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="96"/>
<location filename="../actionmanager.cpp" line="100"/>
<source>Zoom out</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<source>Flip &amp;Horizontally</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="108"/>
<source>&amp;Paste</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<source>Toggle Checkerboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="91"/>
<source>&amp;Open...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="93"/>
<source>Actual size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="94"/>
<source>Toggle maximize</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<source>Rotate right</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="100"/>
<source>Previous image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<source>Next image</source>
<source>Pause/Resume Animation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<location filename="../mainwindow.cpp" line="736"/>
<source>Move to Trash</source>
<source>Animation Go to Next Frame</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="111"/>
<source>Flip &amp;Horizontally</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="112"/>
<source>Fit to view</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="113"/>
<source>Fit to width</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="116"/>
<source>&amp;Paste</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<source>Toggle Checkerboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<source>&amp;Open...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<source>Actual size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<source>Toggle maximize</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="102"/>
<source>Rotate right</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<source>Rotate left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="105"/>
<source>Previous image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<source>Next image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="760"/>
<location filename="../actionmanager.cpp" line="117"/>
<source>Move to Trash</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="121"/>
<source>Configure...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="114"/>
<location filename="../actionmanager.cpp" line="122"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="117"/>
<location filename="../actionmanager.cpp" line="125"/>
<source>Show in File Explorer</source>
<comment>File Explorer is the name of explorer.exe under Windows</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="123"/>
<location filename="../actionmanager.cpp" line="131"/>
<source>Show in directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="126"/>
<location filename="../actionmanager.cpp" line="134"/>
<source>Quit</source>
<translation type="unfinished"></translation>
</message>
@ -679,104 +705,155 @@
<context>
<name>SettingsDialog</name>
<message>
<location filename="../settingsdialog.cpp" line="22"/>
<location filename="../settingsdialog.cpp" line="29"/>
<source>Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="27"/>
<location filename="../settingsdialog.cpp" line="37"/>
<source>Options</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="49"/>
<source>Shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="59"/>
<source>Editing shortcuts for action &quot;%1&quot;:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="68"/>
<source>Failed to set shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<source>Please check if shortcuts are duplicated with existing shortcuts.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="76"/>
<source>Do nothing</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="28"/>
<location filename="../settingsdialog.cpp" line="77"/>
<source>Close the window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="29"/>
<location filename="../settingsdialog.cpp" line="78"/>
<source>Toggle maximize</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="33"/>
<location filename="../settingsdialog.cpp" line="82"/>
<source>Zoom in and out</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="34"/>
<location filename="../settingsdialog.cpp" line="83"/>
<source>View next or previous item</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="38"/>
<location filename="../settingsdialog.cpp" line="87"/>
<source>Auto size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="39"/>
<location filename="../settingsdialog.cpp" line="88"/>
<source>Maximized</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="43"/>
<location filename="../settingsdialog.cpp" line="92"/>
<source>Round (Integer scaling)</source>
<comment>This option means round up for .5 and above</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="44"/>
<location filename="../settingsdialog.cpp" line="93"/>
<source>Ceil (Integer scaling)</source>
<comment>This option means always round up</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="45"/>
<location filename="../settingsdialog.cpp" line="94"/>
<source>Floor (Integer scaling)</source>
<comment>This option means always round down</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="46"/>
<location filename="../settingsdialog.cpp" line="95"/>
<source>Follow system (Fractional scaling)</source>
<comment>This option means don&apos;t round</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<location filename="../settingsdialog.cpp" line="118"/>
<source>Stay on top when start-up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="70"/>
<location filename="../settingsdialog.cpp" line="119"/>
<source>Use light-color checkerboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="120"/>
<source>Double-click behavior</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="71"/>
<location filename="../settingsdialog.cpp" line="121"/>
<source>Mouse wheel behavior</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="72"/>
<location filename="../settingsdialog.cpp" line="122"/>
<source>Default window size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="73"/>
<location filename="../settingsdialog.cpp" line="123"/>
<source>HiDPI scale factor rounding policy</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShortcutEdit</name>
<message>
<location filename="../shortcutedit.cpp" line="111"/>
<source>No shortcuts</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShortcutEditor</name>
<message>
<location filename="../shortcutedit.cpp" line="77"/>
<source>Shortcut #%1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../main.cpp" line="41"/>
<location filename="../main.cpp" line="43"/>
<source>Pineapple Pictures</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="45"/>
<location filename="../main.cpp" line="46"/>
<source>List supported image format suffixes, and quit program.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="50"/>
<source>File list.</source>
<translation type="unfinished"></translation>
</message>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ca">
<TS version="2.1" language="ca_ES">
<context>
<name>AboutDialog</name>
<message>
@ -44,129 +44,129 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="54"/>
<location filename="../aboutdialog.cpp" line="53"/>
<source>Version: %1</source>
<translation>Versió: %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="60"/>
<location filename="../aboutdialog.cpp" line="64"/>
<source>Logo designed by %1</source>
<translation>Logotip dissenyat por %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="62"/>
<location filename="../aboutdialog.cpp" line="66"/>
<source>Built with Qt %1 (%2)</source>
<translation>Creat amb Qt %1 (%2)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="63"/>
<location filename="../aboutdialog.cpp" line="67"/>
<source>Source code</source>
<translation>Codi font</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="73"/>
<location filename="../aboutdialog.cpp" line="77"/>
<source>Contributors</source>
<translation>Col·laboradors</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="75"/>
<location filename="../aboutdialog.cpp" line="79"/>
<source>List of contributors on GitHub</source>
<translation>Llista de col·laboradors al GitHub</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="76"/>
<location filename="../aboutdialog.cpp" line="80"/>
<source>Thanks to all people who contributed to this project.</source>
<translation>Gràcies a totes les persones que han col·laborat en aquest projecte.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="80"/>
<location filename="../aboutdialog.cpp" line="84"/>
<source>Translators</source>
<translation>Traductors</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="81"/>
<location filename="../aboutdialog.cpp" line="85"/>
<source>I would like to thank the following people who volunteered to translate this application.</source>
<translation>M&apos;agradaria donar les gràcies a les persones següents per oferir-se a traduir aquesta aplicació.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="125"/>
<location filename="../aboutdialog.cpp" line="129"/>
<source>%1 is built on the following free software libraries:</source>
<comment>Free as in freedom</comment>
<translation>%1 està construït sobre les biblioteques de programari lliure següents:</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="149"/>
<location filename="../aboutdialog.cpp" line="153"/>
<source>&amp;Special Thanks</source>
<translation>&amp;Especial agraïment</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="151"/>
<location filename="../aboutdialog.cpp" line="155"/>
<source>&amp;Third-party Libraries</source>
<translation>&amp;Biblioteques de tercers</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="87"/>
<location filename="../aboutdialog.cpp" line="91"/>
<source>Your Rights</source>
<translation>Els vostres drets</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="57"/>
<location filename="../aboutdialog.cpp" line="61"/>
<source>Copyright (c) %1 %2</source>
<comment>%1 is year, %2 is the name of copyright holder(s)</comment>
<translation>Copyright (c) %1 %2</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="89"/>
<location filename="../aboutdialog.cpp" line="93"/>
<source>%1 is released under the MIT License.</source>
<translation>%1 es publica sota la llicència MIT.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="90"/>
<location filename="../aboutdialog.cpp" line="94"/>
<source>This license grants people a number of freedoms:</source>
<translation>Aquesta llicència atorga a les persones diverses llibertats:</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="91"/>
<location filename="../aboutdialog.cpp" line="95"/>
<source>You are free to use %1, for any purpose</source>
<translation>Sou lliure de fer servir %1 per a qualsevol propòsit</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="92"/>
<location filename="../aboutdialog.cpp" line="96"/>
<source>You are free to distribute %1</source>
<translation>Sou lliure de distribuir %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="93"/>
<location filename="../aboutdialog.cpp" line="97"/>
<source>You can study how %1 works and change it</source>
<translation>Podeu estudiar com funciona %1 i modificar-lo</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="94"/>
<location filename="../aboutdialog.cpp" line="98"/>
<source>You can distribute changed versions of %1</source>
<translation>Podeu distribuir les versions modificades de %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="96"/>
<location filename="../aboutdialog.cpp" line="100"/>
<source>The MIT license guarantees you this freedom. Nobody is ever permitted to take it away.</source>
<translation>La llicència del MIT us garanteix aquesta llibertat. No és permès que ningú us la tregui.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="124"/>
<location filename="../aboutdialog.cpp" line="128"/>
<source>Third-party Libraries used by %1</source>
<translation>Biblioteques de tercers que fa servir %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="147"/>
<location filename="../aboutdialog.cpp" line="151"/>
<source>&amp;Help</source>
<translation>Aj&amp;uda</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="148"/>
<location filename="../aboutdialog.cpp" line="152"/>
<source>&amp;About</source>
<translation>&amp;Quant a</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="150"/>
<location filename="../aboutdialog.cpp" line="154"/>
<source>&amp;License</source>
<translation>&amp;Llicència</translation>
</message>
@ -174,8 +174,8 @@
<context>
<name>GraphicsScene</name>
<message>
<location filename="../graphicsscene.cpp" line="89"/>
<location filename="../mainwindow.cpp" line="296"/>
<location filename="../mainwindow.cpp" line="265"/>
<location filename="../graphicsscene.cpp" line="100"/>
<source>Drag image here</source>
<translation>Arrossegueu una imatge aquí</translation>
</message>
@ -183,9 +183,8 @@
<context>
<name>GraphicsView</name>
<message>
<location filename="../graphicsview.cpp" line="351"/>
<source>File url list is empty</source>
<translation>La llista d&apos;ubicacions de fitxer és buida</translation>
<translation type="vanished">La llista d&apos;ubicacions de fitxer és buida</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="52"/>
@ -193,162 +192,201 @@
<translation>El fitxer no és una imatge vàlida</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="57"/>
<location filename="../graphicsview.cpp" line="62"/>
<location filename="../graphicsview.cpp" line="56"/>
<location filename="../graphicsview.cpp" line="60"/>
<source>Image data is invalid or currently unsupported</source>
<translation>Les dades de la imatge no són vàlides o no són compatibles</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="359"/>
<source>Image data is invalid</source>
<translation>Les dades de la imatge no són vàlides</translation>
<translation type="vanished">Les dades de la imatge no són vàlides</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="366"/>
<source>Not supported mimedata: %1</source>
<translation>El tipus MIME no és compatible: %1</translation>
<translation type="vanished">El tipus MIME no és compatible: %1</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="191"/>
<location filename="../mainwindow.cpp" line="176"/>
<location filename="../mainwindow.cpp" line="532"/>
<source>File url list is empty</source>
<translation>La llista d&apos;ubicacions és buida</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="448"/>
<location filename="../mainwindow.cpp" line="430"/>
<source>&amp;Copy</source>
<translation>&amp;Copia</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="737"/>
<location filename="../mainwindow.cpp" line="540"/>
<source>Image data is invalid</source>
<translation>Les dades de la imatge no són vàlides</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="547"/>
<source>Not supported mimedata: %1</source>
<translation>El tipus MIME no és compatible: %1</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="743"/>
<source>Image From Clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="761"/>
<source>Are you sure you want to move &quot;%1&quot; to recycle bin?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="742"/>
<location filename="../mainwindow.cpp" line="766"/>
<source>Move to trash failed, it might caused by file permission issue, file system limitation, or platform limitation.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<location filename="../actionmanager.cpp" line="114"/>
<source>Copy P&amp;ixmap</source>
<translation>Copia el &amp;mapa de píxels</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="107"/>
<location filename="../actionmanager.cpp" line="115"/>
<source>Copy &amp;File Path</source>
<translation>Copia el camí del &amp;fitxer</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="125"/>
<location filename="../actionmanager.cpp" line="133"/>
<source>Properties</source>
<translation>Propietats</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="118"/>
<location filename="../aboutdialog.cpp" line="39"/>
<location filename="../actionmanager.cpp" line="110"/>
<source>Stay on top</source>
<translation>Mantén a sobre</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="119"/>
<location filename="../aboutdialog.cpp" line="42"/>
<location filename="../actionmanager.cpp" line="111"/>
<source>Protected mode</source>
<translation>Mode protegit</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="120"/>
<location filename="../aboutdialog.cpp" line="45"/>
<location filename="../actionmanager.cpp" line="112"/>
<source>Keep transformation</source>
<comment>The &apos;transformation&apos; means the flip/rotation status that currently applied to the image view</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<location filename="../actionmanager.cpp" line="99"/>
<source>Zoom in</source>
<translation>Amplia</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="96"/>
<location filename="../actionmanager.cpp" line="100"/>
<source>Zoom out</source>
<translation>Redueix</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<location filename="../actionmanager.cpp" line="108"/>
<source>Pause/Resume Animation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<source>Animation Go to Next Frame</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="111"/>
<source>Flip &amp;Horizontally</source>
<translation>Inverteix &amp;horitzontalment</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="108"/>
<source>&amp;Paste</source>
<translation>&amp;Enganxa</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<source>Toggle Checkerboard</source>
<translation>Commuta el tauler d&apos;escacs</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="91"/>
<source>&amp;Open...</source>
<translation>&amp;Obre...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="93"/>
<source>Actual size</source>
<translation>Mida real</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="94"/>
<source>Toggle maximize</source>
<translation>Commuta la maximització</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<source>Rotate right</source>
<translation>Commuta la maximització</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="100"/>
<source>Previous image</source>
<translation>Imatge anterior</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<source>Next image</source>
<translation>Imatge següent</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<location filename="../mainwindow.cpp" line="736"/>
<source>Move to Trash</source>
<location filename="../actionmanager.cpp" line="112"/>
<source>Fit to view</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="113"/>
<source>Fit to width</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="116"/>
<source>&amp;Paste</source>
<translation>&amp;Enganxa</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<source>Toggle Checkerboard</source>
<translation>Commuta el tauler d&apos;escacs</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<source>&amp;Open...</source>
<translation>&amp;Obre...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<source>Actual size</source>
<translation>Mida real</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<source>Toggle maximize</source>
<translation>Commuta la maximització</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="102"/>
<source>Rotate right</source>
<translation>Commuta la maximització</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<source>Rotate left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="105"/>
<source>Previous image</source>
<translation>Imatge anterior</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<source>Next image</source>
<translation>Imatge següent</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="760"/>
<location filename="../actionmanager.cpp" line="117"/>
<source>Move to Trash</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="121"/>
<source>Configure...</source>
<translation>Configura...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="114"/>
<location filename="../actionmanager.cpp" line="122"/>
<source>Help</source>
<translation>Ajuda</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="117"/>
<location filename="../actionmanager.cpp" line="125"/>
<source>Show in File Explorer</source>
<comment>File Explorer is the name of explorer.exe under Windows</comment>
<translation>Mostra al navegador de fitxers</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="123"/>
<location filename="../actionmanager.cpp" line="131"/>
<source>Show in directory</source>
<translation>Mostra a la carpeta</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="126"/>
<location filename="../actionmanager.cpp" line="134"/>
<source>Quit</source>
<translation>Surt</translation>
</message>
@ -679,104 +717,155 @@
<context>
<name>SettingsDialog</name>
<message>
<location filename="../settingsdialog.cpp" line="22"/>
<location filename="../settingsdialog.cpp" line="29"/>
<source>Settings</source>
<translation>Paràmetres</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="27"/>
<location filename="../settingsdialog.cpp" line="37"/>
<source>Options</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="49"/>
<source>Shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="59"/>
<source>Editing shortcuts for action &quot;%1&quot;:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="68"/>
<source>Failed to set shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<source>Please check if shortcuts are duplicated with existing shortcuts.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="76"/>
<source>Do nothing</source>
<translation>No facis res</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="28"/>
<location filename="../settingsdialog.cpp" line="77"/>
<source>Close the window</source>
<translation>Tanca la finestra</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="29"/>
<location filename="../settingsdialog.cpp" line="78"/>
<source>Toggle maximize</source>
<translation>Commuta la maximització</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="33"/>
<location filename="../settingsdialog.cpp" line="82"/>
<source>Zoom in and out</source>
<translation>Amplia i redueix</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="34"/>
<location filename="../settingsdialog.cpp" line="83"/>
<source>View next or previous item</source>
<translation>Mostra l&apos;element següent o l&apos;anterior</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="38"/>
<location filename="../settingsdialog.cpp" line="87"/>
<source>Auto size</source>
<translation>Mida automàtica</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="39"/>
<location filename="../settingsdialog.cpp" line="88"/>
<source>Maximized</source>
<translation>Maximitza</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="43"/>
<location filename="../settingsdialog.cpp" line="92"/>
<source>Round (Integer scaling)</source>
<comment>This option means round up for .5 and above</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="44"/>
<location filename="../settingsdialog.cpp" line="93"/>
<source>Ceil (Integer scaling)</source>
<comment>This option means always round up</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="45"/>
<location filename="../settingsdialog.cpp" line="94"/>
<source>Floor (Integer scaling)</source>
<comment>This option means always round down</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="46"/>
<location filename="../settingsdialog.cpp" line="95"/>
<source>Follow system (Fractional scaling)</source>
<comment>This option means don&apos;t round</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<location filename="../settingsdialog.cpp" line="118"/>
<source>Stay on top when start-up</source>
<translation>Mantingues a sobre a l&apos;inici</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="70"/>
<location filename="../settingsdialog.cpp" line="119"/>
<source>Use light-color checkerboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="120"/>
<source>Double-click behavior</source>
<translation>Comportament del doble clic</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="71"/>
<location filename="../settingsdialog.cpp" line="121"/>
<source>Mouse wheel behavior</source>
<translation>Comportament de la roda del ratolí</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="72"/>
<location filename="../settingsdialog.cpp" line="122"/>
<source>Default window size</source>
<translation>Mida de la finestra per defecte</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="73"/>
<location filename="../settingsdialog.cpp" line="123"/>
<source>HiDPI scale factor rounding policy</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShortcutEdit</name>
<message>
<location filename="../shortcutedit.cpp" line="111"/>
<source>No shortcuts</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShortcutEditor</name>
<message>
<location filename="../shortcutedit.cpp" line="77"/>
<source>Shortcut #%1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../main.cpp" line="41"/>
<location filename="../main.cpp" line="43"/>
<source>Pineapple Pictures</source>
<translation>Pineapple Pictures</translation>
</message>
<message>
<location filename="../main.cpp" line="45"/>
<location filename="../main.cpp" line="46"/>
<source>List supported image format suffixes, and quit program.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="50"/>
<source>File list.</source>
<translation>Llista de fitxers.</translation>
</message>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="de">
<TS version="2.1" language="de_DE">
<context>
<name>AboutDialog</name>
<message>
@ -39,7 +39,7 @@
<translation>Es vermeiden, das Fenster versehentlich zu schließen. (z.B. durch Doppelklick auf das Fenster)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="54"/>
<location filename="../aboutdialog.cpp" line="53"/>
<source>Version: %1</source>
<translation>Version: %1</translation>
</message>
@ -48,63 +48,63 @@
<translation type="vanished">Copyright © 2020 %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="60"/>
<location filename="../aboutdialog.cpp" line="64"/>
<source>Logo designed by %1</source>
<translation>Logo entworfen von %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="62"/>
<location filename="../aboutdialog.cpp" line="66"/>
<source>Built with Qt %1 (%2)</source>
<translation>Gemacht mit Qt %1 (%2)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="63"/>
<location filename="../aboutdialog.cpp" line="67"/>
<source>Source code</source>
<translation>Quellcode</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="73"/>
<location filename="../aboutdialog.cpp" line="77"/>
<source>Contributors</source>
<translation>Mitwirkenden</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="75"/>
<location filename="../aboutdialog.cpp" line="79"/>
<source>List of contributors on GitHub</source>
<translation>Liste der Mitwirkenden auf GitHub</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="76"/>
<location filename="../aboutdialog.cpp" line="80"/>
<source>Thanks to all people who contributed to this project.</source>
<translation>Vielen Dank an alle, die zu diesem Projekt beigetragen haben.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="80"/>
<location filename="../aboutdialog.cpp" line="84"/>
<source>Translators</source>
<translation>Übersetzer</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="81"/>
<location filename="../aboutdialog.cpp" line="85"/>
<source>I would like to thank the following people who volunteered to translate this application.</source>
<translation>Ich möchte den folgenden Personen danken, die sich freiwillig zur Übersetzung dieser Anwendung gemeldet haben.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="125"/>
<location filename="../aboutdialog.cpp" line="129"/>
<source>%1 is built on the following free software libraries:</source>
<comment>Free as in freedom</comment>
<translation>%1 basiert auf den folgenden freien Softwarebibliotheken:</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="149"/>
<location filename="../aboutdialog.cpp" line="153"/>
<source>&amp;Special Thanks</source>
<translation>&amp;Besonderer Dank</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="151"/>
<location filename="../aboutdialog.cpp" line="155"/>
<source>&amp;Third-party Libraries</source>
<translation>&amp;Bibliotheken von Drittanbietern</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="87"/>
<location filename="../aboutdialog.cpp" line="91"/>
<source>Your Rights</source>
<translation>Ihre Rechte</translation>
</message>
@ -114,63 +114,63 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="57"/>
<location filename="../aboutdialog.cpp" line="61"/>
<source>Copyright (c) %1 %2</source>
<comment>%1 is year, %2 is the name of copyright holder(s)</comment>
<translation>Copyright (c) %1 %2</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="89"/>
<location filename="../aboutdialog.cpp" line="93"/>
<source>%1 is released under the MIT License.</source>
<translation>%1 wird unter der MIT-Lizenz veröffentlicht.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="90"/>
<location filename="../aboutdialog.cpp" line="94"/>
<source>This license grants people a number of freedoms:</source>
<translation>Diese Lizenz gewährt Menschen eine Reihe von Freiheiten:</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="91"/>
<location filename="../aboutdialog.cpp" line="95"/>
<source>You are free to use %1, for any purpose</source>
<translation>Sie dürfen %1 für jeden Zweck verwenden</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="92"/>
<location filename="../aboutdialog.cpp" line="96"/>
<source>You are free to distribute %1</source>
<translation>Sie dürfen %1 verteilen</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="93"/>
<location filename="../aboutdialog.cpp" line="97"/>
<source>You can study how %1 works and change it</source>
<translation>Sie können untersuchen, wie %1 funktioniert, und es ändern</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="94"/>
<location filename="../aboutdialog.cpp" line="98"/>
<source>You can distribute changed versions of %1</source>
<translation>Sie können geänderte Versionen von %1 verteilen</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="96"/>
<location filename="../aboutdialog.cpp" line="100"/>
<source>The MIT license guarantees you this freedom. Nobody is ever permitted to take it away.</source>
<translation>Die MIT-Lizenz garantiert Ihnen diese Freiheit. Niemand darf es jemals wegnehmen.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="124"/>
<location filename="../aboutdialog.cpp" line="128"/>
<source>Third-party Libraries used by %1</source>
<translation>Von %1 verwendete Bibliotheken von Drittanbietern</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="147"/>
<location filename="../aboutdialog.cpp" line="151"/>
<source>&amp;Help</source>
<translation>&amp;Hilfe</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="148"/>
<location filename="../aboutdialog.cpp" line="152"/>
<source>&amp;About</source>
<translation>&amp;Über</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="150"/>
<location filename="../aboutdialog.cpp" line="154"/>
<source>&amp;License</source>
<translation>&amp;Lizenz</translation>
</message>
@ -178,8 +178,8 @@
<context>
<name>GraphicsScene</name>
<message>
<location filename="../graphicsscene.cpp" line="89"/>
<location filename="../mainwindow.cpp" line="296"/>
<location filename="../mainwindow.cpp" line="265"/>
<location filename="../graphicsscene.cpp" line="100"/>
<source>Drag image here</source>
<translation>Ziehen Sie das Bild hierher</translation>
</message>
@ -187,9 +187,8 @@
<context>
<name>GraphicsView</name>
<message>
<location filename="../graphicsview.cpp" line="351"/>
<source>File url list is empty</source>
<translation>Die Datei-URL-Liste ist leer</translation>
<translation type="vanished">Die Datei-URL-Liste ist leer</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="52"/>
@ -197,162 +196,201 @@
<translation>Datei ist kein gültiges Bild</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="57"/>
<location filename="../graphicsview.cpp" line="62"/>
<location filename="../graphicsview.cpp" line="56"/>
<location filename="../graphicsview.cpp" line="60"/>
<source>Image data is invalid or currently unsupported</source>
<translation>Bilddaten sind ungültig oder werden derzeit nicht unterstützt</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="359"/>
<source>Image data is invalid</source>
<translation>Bilddaten sind ungültig</translation>
<translation type="vanished">Bilddaten sind ungültig</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="366"/>
<source>Not supported mimedata: %1</source>
<translation>Nicht unterstützte Mimedaten: %1</translation>
<translation type="vanished">Nicht unterstützte Mimedaten: %1</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="191"/>
<location filename="../mainwindow.cpp" line="176"/>
<location filename="../mainwindow.cpp" line="532"/>
<source>File url list is empty</source>
<translation>Die Datei-URL-Liste ist leer</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="448"/>
<location filename="../mainwindow.cpp" line="430"/>
<source>&amp;Copy</source>
<translation>&amp;Kopieren</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="737"/>
<location filename="../mainwindow.cpp" line="540"/>
<source>Image data is invalid</source>
<translation>Bilddaten sind ungültig</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="547"/>
<source>Not supported mimedata: %1</source>
<translation>Nicht unterstützte Mimedaten: %1</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="743"/>
<source>Image From Clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="761"/>
<source>Are you sure you want to move &quot;%1&quot; to recycle bin?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="742"/>
<location filename="../mainwindow.cpp" line="766"/>
<source>Move to trash failed, it might caused by file permission issue, file system limitation, or platform limitation.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<location filename="../actionmanager.cpp" line="114"/>
<source>Copy P&amp;ixmap</source>
<translation>P&amp;ixmap kopieren</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="107"/>
<location filename="../actionmanager.cpp" line="115"/>
<source>Copy &amp;File Path</source>
<translation>&amp;Dateipfad kopieren</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="125"/>
<location filename="../actionmanager.cpp" line="133"/>
<source>Properties</source>
<translation>Eigenschaften</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="118"/>
<location filename="../aboutdialog.cpp" line="39"/>
<location filename="../actionmanager.cpp" line="110"/>
<source>Stay on top</source>
<translation>Oben bleiben</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="119"/>
<location filename="../aboutdialog.cpp" line="42"/>
<location filename="../actionmanager.cpp" line="111"/>
<source>Protected mode</source>
<translation>Geschützter Modus</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="120"/>
<location filename="../aboutdialog.cpp" line="45"/>
<location filename="../actionmanager.cpp" line="112"/>
<source>Keep transformation</source>
<comment>The &apos;transformation&apos; means the flip/rotation status that currently applied to the image view</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<location filename="../actionmanager.cpp" line="99"/>
<source>Zoom in</source>
<translation>Hineinzoomen</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="96"/>
<location filename="../actionmanager.cpp" line="100"/>
<source>Zoom out</source>
<translation>Herauszoomen</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<location filename="../actionmanager.cpp" line="108"/>
<source>Pause/Resume Animation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<source>Animation Go to Next Frame</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="111"/>
<source>Flip &amp;Horizontally</source>
<translation>&amp;Horizontal spiegeln</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="108"/>
<source>&amp;Paste</source>
<translation>%Einfügen</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<source>Toggle Checkerboard</source>
<translation>Schachbrettmuster umschalten</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="91"/>
<source>&amp;Open...</source>
<translation>&amp;Öffnen...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="93"/>
<source>Actual size</source>
<translation>Tatsächliche Größe</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="94"/>
<source>Toggle maximize</source>
<translation>Maximieren umschalten</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<source>Rotate right</source>
<translation>Nach rechts drehen</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="100"/>
<source>Previous image</source>
<translation>Vorheriges Bild</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<source>Next image</source>
<translation>Nächstes Bild</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<location filename="../mainwindow.cpp" line="736"/>
<source>Move to Trash</source>
<location filename="../actionmanager.cpp" line="112"/>
<source>Fit to view</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="113"/>
<source>Fit to width</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="116"/>
<source>&amp;Paste</source>
<translation>%Einfügen</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<source>Toggle Checkerboard</source>
<translation>Schachbrettmuster umschalten</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<source>&amp;Open...</source>
<translation>&amp;Öffnen...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<source>Actual size</source>
<translation>Tatsächliche Größe</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<source>Toggle maximize</source>
<translation>Maximieren umschalten</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="102"/>
<source>Rotate right</source>
<translation>Nach rechts drehen</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<source>Rotate left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="105"/>
<source>Previous image</source>
<translation>Vorheriges Bild</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<source>Next image</source>
<translation>Nächstes Bild</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="760"/>
<location filename="../actionmanager.cpp" line="117"/>
<source>Move to Trash</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="121"/>
<source>Configure...</source>
<translation>Konfigurieren&#xa0;</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="114"/>
<location filename="../actionmanager.cpp" line="122"/>
<source>Help</source>
<translation>Hilfe</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="117"/>
<location filename="../actionmanager.cpp" line="125"/>
<source>Show in File Explorer</source>
<comment>File Explorer is the name of explorer.exe under Windows</comment>
<translation>Im Dateiexplorer zeigen</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="123"/>
<location filename="../actionmanager.cpp" line="131"/>
<source>Show in directory</source>
<translation>Im Verzeichnis zeigen</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="126"/>
<location filename="../actionmanager.cpp" line="134"/>
<source>Quit</source>
<translation>Beenden</translation>
</message>
@ -683,104 +721,155 @@
<context>
<name>SettingsDialog</name>
<message>
<location filename="../settingsdialog.cpp" line="22"/>
<location filename="../settingsdialog.cpp" line="29"/>
<source>Settings</source>
<translation>Einstellungen</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="27"/>
<location filename="../settingsdialog.cpp" line="37"/>
<source>Options</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="49"/>
<source>Shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="59"/>
<source>Editing shortcuts for action &quot;%1&quot;:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="68"/>
<source>Failed to set shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<source>Please check if shortcuts are duplicated with existing shortcuts.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="76"/>
<source>Do nothing</source>
<translation>Nichts tun</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="28"/>
<location filename="../settingsdialog.cpp" line="77"/>
<source>Close the window</source>
<translation>Fenster schließen</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="29"/>
<location filename="../settingsdialog.cpp" line="78"/>
<source>Toggle maximize</source>
<translation>Maximieren umschalten</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="33"/>
<location filename="../settingsdialog.cpp" line="82"/>
<source>Zoom in and out</source>
<translation>Hinein- und Hinauszoomen</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="34"/>
<location filename="../settingsdialog.cpp" line="83"/>
<source>View next or previous item</source>
<translation>Zeige nächstes oder vorheriges Element</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="38"/>
<location filename="../settingsdialog.cpp" line="87"/>
<source>Auto size</source>
<translation>Automatische Größe</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="39"/>
<location filename="../settingsdialog.cpp" line="88"/>
<source>Maximized</source>
<translation>Maximiert</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="43"/>
<location filename="../settingsdialog.cpp" line="92"/>
<source>Round (Integer scaling)</source>
<comment>This option means round up for .5 and above</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="44"/>
<location filename="../settingsdialog.cpp" line="93"/>
<source>Ceil (Integer scaling)</source>
<comment>This option means always round up</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="45"/>
<location filename="../settingsdialog.cpp" line="94"/>
<source>Floor (Integer scaling)</source>
<comment>This option means always round down</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="46"/>
<location filename="../settingsdialog.cpp" line="95"/>
<source>Follow system (Fractional scaling)</source>
<comment>This option means don&apos;t round</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<location filename="../settingsdialog.cpp" line="118"/>
<source>Stay on top when start-up</source>
<translation>Beim Start oben bleiben</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="70"/>
<location filename="../settingsdialog.cpp" line="119"/>
<source>Use light-color checkerboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="120"/>
<source>Double-click behavior</source>
<translation>Doppelklickverhalten</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="71"/>
<location filename="../settingsdialog.cpp" line="121"/>
<source>Mouse wheel behavior</source>
<translation>Mausradverhalten</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="72"/>
<location filename="../settingsdialog.cpp" line="122"/>
<source>Default window size</source>
<translation>Standard-Fenstergröße</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="73"/>
<location filename="../settingsdialog.cpp" line="123"/>
<source>HiDPI scale factor rounding policy</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShortcutEdit</name>
<message>
<location filename="../shortcutedit.cpp" line="111"/>
<source>No shortcuts</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShortcutEditor</name>
<message>
<location filename="../shortcutedit.cpp" line="77"/>
<source>Shortcut #%1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../main.cpp" line="41"/>
<location filename="../main.cpp" line="43"/>
<source>Pineapple Pictures</source>
<translation>Pineapple Pictures</translation>
</message>
<message>
<location filename="../main.cpp" line="45"/>
<location filename="../main.cpp" line="46"/>
<source>List supported image format suffixes, and quit program.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="50"/>
<source>File list.</source>
<translation>Dateiliste.</translation>
</message>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="es">
<TS version="2.1" language="es_ES">
<context>
<name>AboutDialog</name>
<message>
@ -39,7 +39,7 @@
<translation>Evita que se cierre la ventana accidentalmente (por ejemplo, al hacer doble clic en la ventana)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="54"/>
<location filename="../aboutdialog.cpp" line="53"/>
<source>Version: %1</source>
<translation>Versión: %1</translation>
</message>
@ -48,63 +48,63 @@
<translation type="vanished">Derechos reservados (c) 2020 %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="60"/>
<location filename="../aboutdialog.cpp" line="64"/>
<source>Logo designed by %1</source>
<translation>Logo diseñado por %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="62"/>
<location filename="../aboutdialog.cpp" line="66"/>
<source>Built with Qt %1 (%2)</source>
<translation>Creado con Qt %1 (%2)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="63"/>
<location filename="../aboutdialog.cpp" line="67"/>
<source>Source code</source>
<translation>Código fuente</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="73"/>
<location filename="../aboutdialog.cpp" line="77"/>
<source>Contributors</source>
<translation>Colaboradores</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="75"/>
<location filename="../aboutdialog.cpp" line="79"/>
<source>List of contributors on GitHub</source>
<translation>Lista de colaboradores en GitHub</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="76"/>
<location filename="../aboutdialog.cpp" line="80"/>
<source>Thanks to all people who contributed to this project.</source>
<translation>Gracias a todas las personas que han colaborado en este proyecto.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="80"/>
<location filename="../aboutdialog.cpp" line="84"/>
<source>Translators</source>
<translation>Traductores</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="81"/>
<location filename="../aboutdialog.cpp" line="85"/>
<source>I would like to thank the following people who volunteered to translate this application.</source>
<translation>Me gustaría dar las gracias a las personas siguientes por ofrecerse a traducir esta aplicación.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="125"/>
<location filename="../aboutdialog.cpp" line="129"/>
<source>%1 is built on the following free software libraries:</source>
<comment>Free as in freedom</comment>
<translation>%1 está construido sobre las bibliotecas de software libre siguientes:</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="149"/>
<location filename="../aboutdialog.cpp" line="153"/>
<source>&amp;Special Thanks</source>
<translation>Agradecimiento &amp;especial</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="151"/>
<location filename="../aboutdialog.cpp" line="155"/>
<source>&amp;Third-party Libraries</source>
<translation>&amp;Bibliotecas de terceros</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="87"/>
<location filename="../aboutdialog.cpp" line="91"/>
<source>Your Rights</source>
<translation>Sus derechos</translation>
</message>
@ -114,63 +114,63 @@
<translation>Evita restablecer el estado de zoom/rotación/inversión que se aplicó a la vista de la imagen al cambiar entre las imágenes.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="57"/>
<location filename="../aboutdialog.cpp" line="61"/>
<source>Copyright (c) %1 %2</source>
<comment>%1 is year, %2 is the name of copyright holder(s)</comment>
<translation>Copyright (c) %1 %2</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="89"/>
<location filename="../aboutdialog.cpp" line="93"/>
<source>%1 is released under the MIT License.</source>
<translation>%1 se publica bajo la licencia MIT.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="90"/>
<location filename="../aboutdialog.cpp" line="94"/>
<source>This license grants people a number of freedoms:</source>
<translation>Esta licencia otorga a las personas una serie de libertades:</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="91"/>
<location filename="../aboutdialog.cpp" line="95"/>
<source>You are free to use %1, for any purpose</source>
<translation>Es libre de usar %1 para cualquier propósito</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="92"/>
<location filename="../aboutdialog.cpp" line="96"/>
<source>You are free to distribute %1</source>
<translation>Es libre de distribuir %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="93"/>
<location filename="../aboutdialog.cpp" line="97"/>
<source>You can study how %1 works and change it</source>
<translation>Puede estudiar cómo funciona %1 y modificarlo</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="94"/>
<location filename="../aboutdialog.cpp" line="98"/>
<source>You can distribute changed versions of %1</source>
<translation>Puede distribuir versiones modificadas de %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="96"/>
<location filename="../aboutdialog.cpp" line="100"/>
<source>The MIT license guarantees you this freedom. Nobody is ever permitted to take it away.</source>
<translation>La licencia MIT le garantiza esta libertad. Nadie está autorizado a quitársela.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="124"/>
<location filename="../aboutdialog.cpp" line="128"/>
<source>Third-party Libraries used by %1</source>
<translation>Bibliotecas de terceros usadas por %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="147"/>
<location filename="../aboutdialog.cpp" line="151"/>
<source>&amp;Help</source>
<translation>Ay&amp;uda</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="148"/>
<location filename="../aboutdialog.cpp" line="152"/>
<source>&amp;About</source>
<translation>&amp;Acerca de</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="150"/>
<location filename="../aboutdialog.cpp" line="154"/>
<source>&amp;License</source>
<translation>&amp;Licencia</translation>
</message>
@ -178,8 +178,8 @@
<context>
<name>GraphicsScene</name>
<message>
<location filename="../graphicsscene.cpp" line="89"/>
<location filename="../mainwindow.cpp" line="296"/>
<location filename="../mainwindow.cpp" line="265"/>
<location filename="../graphicsscene.cpp" line="100"/>
<source>Drag image here</source>
<translation>Arrastre una imagen aquí</translation>
</message>
@ -187,9 +187,8 @@
<context>
<name>GraphicsView</name>
<message>
<location filename="../graphicsview.cpp" line="351"/>
<source>File url list is empty</source>
<translation>La lista de ubicaciones está vacía</translation>
<translation type="vanished">La lista de ubicaciones está vacía</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="52"/>
@ -197,162 +196,201 @@
<translation>El archivo no es una imagen válida</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="57"/>
<location filename="../graphicsview.cpp" line="62"/>
<location filename="../graphicsview.cpp" line="56"/>
<location filename="../graphicsview.cpp" line="60"/>
<source>Image data is invalid or currently unsupported</source>
<translation>Los datos de la imagen no son válidos o no son compatibles</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="359"/>
<source>Image data is invalid</source>
<translation>Los datos de la imagen no son válidos</translation>
<translation type="vanished">Los datos de la imagen no son válidos</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="366"/>
<source>Not supported mimedata: %1</source>
<translation>El tipo MIME no es compatible: %1</translation>
<translation type="vanished">El tipo MIME no es compatible: %1</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="191"/>
<location filename="../mainwindow.cpp" line="176"/>
<location filename="../mainwindow.cpp" line="532"/>
<source>File url list is empty</source>
<translation>La lista de ubicaciones está vacía</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="448"/>
<location filename="../mainwindow.cpp" line="430"/>
<source>&amp;Copy</source>
<translation>&amp;Copiar</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="737"/>
<location filename="../mainwindow.cpp" line="540"/>
<source>Image data is invalid</source>
<translation>Los datos de la imagen no son válidos</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="547"/>
<source>Not supported mimedata: %1</source>
<translation>El tipo MIME no es compatible: %1</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="743"/>
<source>Image From Clipboard</source>
<translation>Imagen del portapapeles</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="761"/>
<source>Are you sure you want to move &quot;%1&quot; to recycle bin?</source>
<translation>¿Estás seguro de que quieres mover &quot;%1&quot; a la papelera de reciclaje?</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="742"/>
<location filename="../mainwindow.cpp" line="766"/>
<source>Move to trash failed, it might caused by file permission issue, file system limitation, or platform limitation.</source>
<translation>Mover a la papelera ha fallado, puede deberse a un problema con los permisos de los archivos, una limitación del sistema de archivos o una limitación de la plataforma.</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<location filename="../actionmanager.cpp" line="114"/>
<source>Copy P&amp;ixmap</source>
<translation>Copiar &amp;mapa de píxeles</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="107"/>
<location filename="../actionmanager.cpp" line="115"/>
<source>Copy &amp;File Path</source>
<translation>Copiar &amp;ruta de archivo</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="125"/>
<location filename="../actionmanager.cpp" line="133"/>
<source>Properties</source>
<translation>Propiedades</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="118"/>
<location filename="../aboutdialog.cpp" line="39"/>
<location filename="../actionmanager.cpp" line="110"/>
<source>Stay on top</source>
<translation>Mantener encima</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="119"/>
<location filename="../aboutdialog.cpp" line="42"/>
<location filename="../actionmanager.cpp" line="111"/>
<source>Protected mode</source>
<translation>Modo protegido</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="120"/>
<location filename="../aboutdialog.cpp" line="45"/>
<location filename="../actionmanager.cpp" line="112"/>
<source>Keep transformation</source>
<comment>The &apos;transformation&apos; means the flip/rotation status that currently applied to the image view</comment>
<translation>Conservar la transformación</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<location filename="../actionmanager.cpp" line="99"/>
<source>Zoom in</source>
<translation>Ampliar</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="96"/>
<location filename="../actionmanager.cpp" line="100"/>
<source>Zoom out</source>
<translation>Reducir</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<location filename="../actionmanager.cpp" line="108"/>
<source>Pause/Resume Animation</source>
<translation>Pausar/Reanudar animación</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<source>Animation Go to Next Frame</source>
<translation>Ir al siguiente fotograma</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="111"/>
<source>Flip &amp;Horizontally</source>
<translation>Voltear &amp;horizontalmente</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="108"/>
<location filename="../actionmanager.cpp" line="112"/>
<source>Fit to view</source>
<translation>Para visualizar</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="113"/>
<source>Fit to width</source>
<translation>Ajustar al ancho</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="116"/>
<source>&amp;Paste</source>
<translation>&amp;Pegar</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<location filename="../actionmanager.cpp" line="101"/>
<source>Toggle Checkerboard</source>
<translation>Activar/desactivar el tablero de ajedrez</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="91"/>
<location filename="../actionmanager.cpp" line="95"/>
<source>&amp;Open...</source>
<translation>&amp;Abrir...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="93"/>
<location filename="../actionmanager.cpp" line="97"/>
<source>Actual size</source>
<translation>Tamaño real</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="94"/>
<location filename="../actionmanager.cpp" line="98"/>
<source>Toggle maximize</source>
<translation>Maximizar/desmaximizar</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<location filename="../actionmanager.cpp" line="102"/>
<source>Rotate right</source>
<translation>Girar a la derecha</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="100"/>
<location filename="../actionmanager.cpp" line="103"/>
<source>Rotate left</source>
<translation>Girar a la izquierda</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="105"/>
<source>Previous image</source>
<translation>Imagen anterior</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<location filename="../actionmanager.cpp" line="106"/>
<source>Next image</source>
<translation>Imagen siguiente</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<location filename="../mainwindow.cpp" line="736"/>
<location filename="../mainwindow.cpp" line="760"/>
<location filename="../actionmanager.cpp" line="117"/>
<source>Move to Trash</source>
<translation>Mover a la papelera</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="113"/>
<location filename="../actionmanager.cpp" line="121"/>
<source>Configure...</source>
<translation>Configurar...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="114"/>
<location filename="../actionmanager.cpp" line="122"/>
<source>Help</source>
<translation>Ayuda</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="117"/>
<location filename="../actionmanager.cpp" line="125"/>
<source>Show in File Explorer</source>
<comment>File Explorer is the name of explorer.exe under Windows</comment>
<translation>Mostrar en el Explorador de archivos</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="123"/>
<location filename="../actionmanager.cpp" line="131"/>
<source>Show in directory</source>
<translation>Mostrar en la carpeta</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="126"/>
<location filename="../actionmanager.cpp" line="134"/>
<source>Quit</source>
<translation>Salir</translation>
</message>
@ -683,104 +721,155 @@
<context>
<name>SettingsDialog</name>
<message>
<location filename="../settingsdialog.cpp" line="22"/>
<location filename="../settingsdialog.cpp" line="29"/>
<source>Settings</source>
<translation>Preferencias</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="27"/>
<location filename="../settingsdialog.cpp" line="37"/>
<source>Options</source>
<translation>Opciones</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="49"/>
<source>Shortcuts</source>
<translation>Atajos</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="59"/>
<source>Editing shortcuts for action &quot;%1&quot;:</source>
<translation>Editando atajos para la acción &quot;%1&quot;:</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="68"/>
<source>Failed to set shortcuts</source>
<translation>No se pudieron establecer accesos directos</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<source>Please check if shortcuts are duplicated with existing shortcuts.</source>
<translation>Por favor, verifique si los accesos directos están duplicados.</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="76"/>
<source>Do nothing</source>
<translation>No hacer nada</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="28"/>
<location filename="../settingsdialog.cpp" line="77"/>
<source>Close the window</source>
<translation>Cerrar la ventana</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="29"/>
<location filename="../settingsdialog.cpp" line="78"/>
<source>Toggle maximize</source>
<translation>Maximizar/desmaximizar</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="33"/>
<location filename="../settingsdialog.cpp" line="82"/>
<source>Zoom in and out</source>
<translation>Ampliar y reducir</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="34"/>
<location filename="../settingsdialog.cpp" line="83"/>
<source>View next or previous item</source>
<translation>Mostrar el elemento siguiente/anterior</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="38"/>
<location filename="../settingsdialog.cpp" line="87"/>
<source>Auto size</source>
<translation>Tamaño automático</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="39"/>
<location filename="../settingsdialog.cpp" line="88"/>
<source>Maximized</source>
<translation>Maximizar</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="43"/>
<location filename="../settingsdialog.cpp" line="92"/>
<source>Round (Integer scaling)</source>
<comment>This option means round up for .5 and above</comment>
<translation>Redondeo (escala de enteros)</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="44"/>
<location filename="../settingsdialog.cpp" line="93"/>
<source>Ceil (Integer scaling)</source>
<comment>This option means always round up</comment>
<translation>Ceil (redondear enteros hacia arriba)</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="45"/>
<location filename="../settingsdialog.cpp" line="94"/>
<source>Floor (Integer scaling)</source>
<comment>This option means always round down</comment>
<translation>Floor (redondear enteros hacia abajo)</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="46"/>
<location filename="../settingsdialog.cpp" line="95"/>
<source>Follow system (Fractional scaling)</source>
<comment>This option means don&apos;t round</comment>
<translation>Redondeo (redondear los enteros)</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<location filename="../settingsdialog.cpp" line="118"/>
<source>Stay on top when start-up</source>
<translation>Mantener encima al inicio</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="70"/>
<location filename="../settingsdialog.cpp" line="119"/>
<source>Use light-color checkerboard</source>
<translation>Utilice un tablero de ajedrez de color claro</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="120"/>
<source>Double-click behavior</source>
<translation>Comportamiento del doble clic</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="71"/>
<location filename="../settingsdialog.cpp" line="121"/>
<source>Mouse wheel behavior</source>
<translation>Comportamiento de la rueda del ratón</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="72"/>
<location filename="../settingsdialog.cpp" line="122"/>
<source>Default window size</source>
<translation>Tamaño de la ventana por defecto</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="73"/>
<location filename="../settingsdialog.cpp" line="123"/>
<source>HiDPI scale factor rounding policy</source>
<translation>Política de redondeo del factor de escala HiDPI</translation>
</message>
</context>
<context>
<name>ShortcutEdit</name>
<message>
<location filename="../shortcutedit.cpp" line="111"/>
<source>No shortcuts</source>
<translation>Sin atajos</translation>
</message>
</context>
<context>
<name>ShortcutEditor</name>
<message>
<location filename="../shortcutedit.cpp" line="77"/>
<source>Shortcut #%1</source>
<translation>Atajos #%1</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../main.cpp" line="41"/>
<location filename="../main.cpp" line="43"/>
<source>Pineapple Pictures</source>
<translation>Pineapple Pictures</translation>
</message>
<message>
<location filename="../main.cpp" line="45"/>
<location filename="../main.cpp" line="46"/>
<source>List supported image format suffixes, and quit program.</source>
<translation>Enumere las extensiones de formato de imagen admitidas y sal del programa.</translation>
</message>
<message>
<location filename="../main.cpp" line="50"/>
<source>File list.</source>
<translation>Lista de archivos.</translation>
</message>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="fr">
<TS version="2.1" language="fr_FR">
<context>
<name>AboutDialog</name>
<message>
@ -39,7 +39,7 @@
<translation>Éviter de fermer la fenêtre accidentellement. (par exemple en cliquant deux fois sur la fenêtre)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="54"/>
<location filename="../aboutdialog.cpp" line="53"/>
<source>Version: %1</source>
<translation>Version&#xa0;: %1</translation>
</message>
@ -48,63 +48,63 @@
<translation type="vanished">Copyright © 2020 %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="60"/>
<location filename="../aboutdialog.cpp" line="64"/>
<source>Logo designed by %1</source>
<translation>Logo conçu par %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="62"/>
<location filename="../aboutdialog.cpp" line="66"/>
<source>Built with Qt %1 (%2)</source>
<translation>Fait avec Qt %1 (%2)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="63"/>
<location filename="../aboutdialog.cpp" line="67"/>
<source>Source code</source>
<translation>Code source</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="73"/>
<location filename="../aboutdialog.cpp" line="77"/>
<source>Contributors</source>
<translation>Contributeurs</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="75"/>
<location filename="../aboutdialog.cpp" line="79"/>
<source>List of contributors on GitHub</source>
<translation>Liste des contributeurs sur GitHub</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="76"/>
<location filename="../aboutdialog.cpp" line="80"/>
<source>Thanks to all people who contributed to this project.</source>
<translation>Merci à toutes les personnes qui ont contribué à ce projet.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="80"/>
<location filename="../aboutdialog.cpp" line="84"/>
<source>Translators</source>
<translation>Traducteurs</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="81"/>
<location filename="../aboutdialog.cpp" line="85"/>
<source>I would like to thank the following people who volunteered to translate this application.</source>
<translation>Je tiens à remercier les personnes suivantes qui se sont portées volontaires pour traduire cette application.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="125"/>
<location filename="../aboutdialog.cpp" line="129"/>
<source>%1 is built on the following free software libraries:</source>
<comment>Free as in freedom</comment>
<translation>%1 est basé sur les bibliothèques de logiciels libres suivantes&#xa0;:</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="149"/>
<location filename="../aboutdialog.cpp" line="153"/>
<source>&amp;Special Thanks</source>
<translation>&amp;Remerciement spécial</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="151"/>
<location filename="../aboutdialog.cpp" line="155"/>
<source>&amp;Third-party Libraries</source>
<translation>&amp;Bibliothèques tierces</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="87"/>
<location filename="../aboutdialog.cpp" line="91"/>
<source>Your Rights</source>
<translation>Vos droits</translation>
</message>
@ -114,63 +114,63 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="57"/>
<location filename="../aboutdialog.cpp" line="61"/>
<source>Copyright (c) %1 %2</source>
<comment>%1 is year, %2 is the name of copyright holder(s)</comment>
<translation>Copyright (c) %1 %2</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="89"/>
<location filename="../aboutdialog.cpp" line="93"/>
<source>%1 is released under the MIT License.</source>
<translation>%1 est publié sous licence MIT.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="90"/>
<location filename="../aboutdialog.cpp" line="94"/>
<source>This license grants people a number of freedoms:</source>
<translation>Cette licence accorde aux personnes un certain nombre de libertés&#xa0;:</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="91"/>
<location filename="../aboutdialog.cpp" line="95"/>
<source>You are free to use %1, for any purpose</source>
<translation>Vous êtes libre d&apos;utiliser %1, dans n&apos;importe quel but</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="92"/>
<location filename="../aboutdialog.cpp" line="96"/>
<source>You are free to distribute %1</source>
<translation>Vous êtes libre de distribuer %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="93"/>
<location filename="../aboutdialog.cpp" line="97"/>
<source>You can study how %1 works and change it</source>
<translation>Vous pouvez étudier le fonctionnement de %1 et le modifier</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="94"/>
<location filename="../aboutdialog.cpp" line="98"/>
<source>You can distribute changed versions of %1</source>
<translation>Vous pouvez distribuer des versions modifiées de %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="96"/>
<location filename="../aboutdialog.cpp" line="100"/>
<source>The MIT license guarantees you this freedom. Nobody is ever permitted to take it away.</source>
<translation>La licence MIT vous garantit cette liberté. Personne n&apos;est autorisé à l&apos;enlever.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="124"/>
<location filename="../aboutdialog.cpp" line="128"/>
<source>Third-party Libraries used by %1</source>
<translation>Bibliothèques tierces utilisées par %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="147"/>
<location filename="../aboutdialog.cpp" line="151"/>
<source>&amp;Help</source>
<translation>&amp;Aide</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="148"/>
<location filename="../aboutdialog.cpp" line="152"/>
<source>&amp;About</source>
<translation>&amp;À propos</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="150"/>
<location filename="../aboutdialog.cpp" line="154"/>
<source>&amp;License</source>
<translation>&amp;Licence</translation>
</message>
@ -178,8 +178,8 @@
<context>
<name>GraphicsScene</name>
<message>
<location filename="../graphicsscene.cpp" line="89"/>
<location filename="../mainwindow.cpp" line="296"/>
<location filename="../mainwindow.cpp" line="265"/>
<location filename="../graphicsscene.cpp" line="100"/>
<source>Drag image here</source>
<translation>Faites glisser l&apos;image ici</translation>
</message>
@ -187,9 +187,8 @@
<context>
<name>GraphicsView</name>
<message>
<location filename="../graphicsview.cpp" line="351"/>
<source>File url list is empty</source>
<translation>La liste des URL du fichier est vide</translation>
<translation type="vanished">La liste des URL du fichier est vide</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="52"/>
@ -197,162 +196,201 @@
<translation>Le fichier n&apos;est pas une image valide</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="57"/>
<location filename="../graphicsview.cpp" line="62"/>
<location filename="../graphicsview.cpp" line="56"/>
<location filename="../graphicsview.cpp" line="60"/>
<source>Image data is invalid or currently unsupported</source>
<translation>Les données d&apos;image ne sont pas valides ou ne sont actuellement pas prises en charge</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="359"/>
<source>Image data is invalid</source>
<translation>Les données d&apos;image ne sont pas valides</translation>
<translation type="vanished">Les données d&apos;image ne sont pas valides</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="366"/>
<source>Not supported mimedata: %1</source>
<translation>Mimedata non pris en charge&#xa0;: %1</translation>
<translation type="vanished">Mimedata non pris en charge&#xa0;: %1</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="191"/>
<location filename="../mainwindow.cpp" line="176"/>
<location filename="../mainwindow.cpp" line="532"/>
<source>File url list is empty</source>
<translation>La liste des URL de fichiers est vide</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="448"/>
<location filename="../mainwindow.cpp" line="430"/>
<source>&amp;Copy</source>
<translation>&amp;Copier</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="737"/>
<location filename="../mainwindow.cpp" line="540"/>
<source>Image data is invalid</source>
<translation>Les données d&apos;image ne sont pas valides</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="547"/>
<source>Not supported mimedata: %1</source>
<translation>Mimedata non pris en charge&#xa0;: %1</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="743"/>
<source>Image From Clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="761"/>
<source>Are you sure you want to move &quot;%1&quot; to recycle bin?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="742"/>
<location filename="../mainwindow.cpp" line="766"/>
<source>Move to trash failed, it might caused by file permission issue, file system limitation, or platform limitation.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<location filename="../actionmanager.cpp" line="114"/>
<source>Copy P&amp;ixmap</source>
<translation>Copier P&amp;ixmap</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="107"/>
<location filename="../actionmanager.cpp" line="115"/>
<source>Copy &amp;File Path</source>
<translation>Copier le &amp;chemin du fichier</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="125"/>
<location filename="../actionmanager.cpp" line="133"/>
<source>Properties</source>
<translation>Propriétés</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="118"/>
<location filename="../aboutdialog.cpp" line="39"/>
<location filename="../actionmanager.cpp" line="110"/>
<source>Stay on top</source>
<translation>Rester en-haut</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="119"/>
<location filename="../aboutdialog.cpp" line="42"/>
<location filename="../actionmanager.cpp" line="111"/>
<source>Protected mode</source>
<translation>Mode protégé</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="120"/>
<location filename="../aboutdialog.cpp" line="45"/>
<location filename="../actionmanager.cpp" line="112"/>
<source>Keep transformation</source>
<comment>The &apos;transformation&apos; means the flip/rotation status that currently applied to the image view</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<location filename="../actionmanager.cpp" line="99"/>
<source>Zoom in</source>
<translation>Zoom avant</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="96"/>
<location filename="../actionmanager.cpp" line="100"/>
<source>Zoom out</source>
<translation>Zoom arrière</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<location filename="../actionmanager.cpp" line="108"/>
<source>Pause/Resume Animation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<source>Animation Go to Next Frame</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="111"/>
<source>Flip &amp;Horizontally</source>
<translation>Retourner &amp;horizontalement</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="108"/>
<source>&amp;Paste</source>
<translation>Co&amp;ller</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<source>Toggle Checkerboard</source>
<translation>Dés/activer le damier</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="91"/>
<source>&amp;Open...</source>
<translation>&amp;Ouvrir...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="93"/>
<source>Actual size</source>
<translation>Taille actuelle</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="94"/>
<source>Toggle maximize</source>
<translation>Dés/activer l&apos;agrandissement</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<source>Rotate right</source>
<translation>Pivoter vers la droite</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="100"/>
<source>Previous image</source>
<translation>Image précédente</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<source>Next image</source>
<translation>Image suivant</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<location filename="../mainwindow.cpp" line="736"/>
<source>Move to Trash</source>
<location filename="../actionmanager.cpp" line="112"/>
<source>Fit to view</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="113"/>
<source>Fit to width</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="116"/>
<source>&amp;Paste</source>
<translation>Co&amp;ller</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<source>Toggle Checkerboard</source>
<translation>Dés/activer le damier</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<source>&amp;Open...</source>
<translation>&amp;Ouvrir...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<source>Actual size</source>
<translation>Taille actuelle</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<source>Toggle maximize</source>
<translation>Dés/activer l&apos;agrandissement</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="102"/>
<source>Rotate right</source>
<translation>Pivoter vers la droite</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<source>Rotate left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="105"/>
<source>Previous image</source>
<translation>Image précédente</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<source>Next image</source>
<translation>Image suivant</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="760"/>
<location filename="../actionmanager.cpp" line="117"/>
<source>Move to Trash</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="121"/>
<source>Configure...</source>
<translation>Configurer</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="114"/>
<location filename="../actionmanager.cpp" line="122"/>
<source>Help</source>
<translation>Aide</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="117"/>
<location filename="../actionmanager.cpp" line="125"/>
<source>Show in File Explorer</source>
<comment>File Explorer is the name of explorer.exe under Windows</comment>
<translation>Afficher dans le navigateur de fichiers</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="123"/>
<location filename="../actionmanager.cpp" line="131"/>
<source>Show in directory</source>
<translation>Afficher dans le dossier</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="126"/>
<location filename="../actionmanager.cpp" line="134"/>
<source>Quit</source>
<translation>Quitter</translation>
</message>
@ -683,104 +721,155 @@
<context>
<name>SettingsDialog</name>
<message>
<location filename="../settingsdialog.cpp" line="22"/>
<location filename="../settingsdialog.cpp" line="29"/>
<source>Settings</source>
<translation>Paramètres</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="27"/>
<location filename="../settingsdialog.cpp" line="37"/>
<source>Options</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="49"/>
<source>Shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="59"/>
<source>Editing shortcuts for action &quot;%1&quot;:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="68"/>
<source>Failed to set shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<source>Please check if shortcuts are duplicated with existing shortcuts.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="76"/>
<source>Do nothing</source>
<translation>Ne rien faire</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="28"/>
<location filename="../settingsdialog.cpp" line="77"/>
<source>Close the window</source>
<translation>Fermer la fenêtre</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="29"/>
<location filename="../settingsdialog.cpp" line="78"/>
<source>Toggle maximize</source>
<translation>Activer/désactiver l&apos;agrandissement</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="33"/>
<location filename="../settingsdialog.cpp" line="82"/>
<source>Zoom in and out</source>
<translation>Zoom avant et arrière</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="34"/>
<location filename="../settingsdialog.cpp" line="83"/>
<source>View next or previous item</source>
<translation>Voir l&apos;élément suivant ou précédent</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="38"/>
<location filename="../settingsdialog.cpp" line="87"/>
<source>Auto size</source>
<translation>Taille automatique</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="39"/>
<location filename="../settingsdialog.cpp" line="88"/>
<source>Maximized</source>
<translation>Agrandi</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="43"/>
<location filename="../settingsdialog.cpp" line="92"/>
<source>Round (Integer scaling)</source>
<comment>This option means round up for .5 and above</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="44"/>
<location filename="../settingsdialog.cpp" line="93"/>
<source>Ceil (Integer scaling)</source>
<comment>This option means always round up</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="45"/>
<location filename="../settingsdialog.cpp" line="94"/>
<source>Floor (Integer scaling)</source>
<comment>This option means always round down</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="46"/>
<location filename="../settingsdialog.cpp" line="95"/>
<source>Follow system (Fractional scaling)</source>
<comment>This option means don&apos;t round</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<location filename="../settingsdialog.cpp" line="118"/>
<source>Stay on top when start-up</source>
<translation>Rester en-haut lors du démarrage</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="70"/>
<location filename="../settingsdialog.cpp" line="119"/>
<source>Use light-color checkerboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="120"/>
<source>Double-click behavior</source>
<translation>Comportement du double-clic</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="71"/>
<location filename="../settingsdialog.cpp" line="121"/>
<source>Mouse wheel behavior</source>
<translation>Comportement de la molette de la souris</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="72"/>
<location filename="../settingsdialog.cpp" line="122"/>
<source>Default window size</source>
<translation>Taille de la fenêtre par défaut</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="73"/>
<location filename="../settingsdialog.cpp" line="123"/>
<source>HiDPI scale factor rounding policy</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShortcutEdit</name>
<message>
<location filename="../shortcutedit.cpp" line="111"/>
<source>No shortcuts</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShortcutEditor</name>
<message>
<location filename="../shortcutedit.cpp" line="77"/>
<source>Shortcut #%1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../main.cpp" line="41"/>
<location filename="../main.cpp" line="43"/>
<source>Pineapple Pictures</source>
<translation>Pineapple Pictures</translation>
</message>
<message>
<location filename="../main.cpp" line="45"/>
<location filename="../main.cpp" line="46"/>
<source>List supported image format suffixes, and quit program.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="50"/>
<source>File list.</source>
<translation>Liste des fichiers.</translation>
</message>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="id">
<TS version="2.1" language="id_ID">
<context>
<name>AboutDialog</name>
<message>
@ -39,7 +39,7 @@
<translation>Hindari penutupan jendela secara tidak sengaja (contoh dengan mengklik jendela dua kali)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="54"/>
<location filename="../aboutdialog.cpp" line="53"/>
<source>Version: %1</source>
<translation>Versi: %1</translation>
</message>
@ -48,63 +48,63 @@
<translation type="vanished">Hak Cipta (c) 2020 %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="60"/>
<location filename="../aboutdialog.cpp" line="64"/>
<source>Logo designed by %1</source>
<translation>Logo didesain oleh %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="62"/>
<location filename="../aboutdialog.cpp" line="66"/>
<source>Built with Qt %1 (%2)</source>
<translation>Dibuat dengan Qt %1 (%2)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="63"/>
<location filename="../aboutdialog.cpp" line="67"/>
<source>Source code</source>
<translation>Kode sumber</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="73"/>
<location filename="../aboutdialog.cpp" line="77"/>
<source>Contributors</source>
<translation>Kontributor-kontributor</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="75"/>
<location filename="../aboutdialog.cpp" line="79"/>
<source>List of contributors on GitHub</source>
<translation>Daftar kontributor di GitHub</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="76"/>
<location filename="../aboutdialog.cpp" line="80"/>
<source>Thanks to all people who contributed to this project.</source>
<translation>Terima kasih kepada semua orang yang telah berkontribusi ke proyek ini.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="80"/>
<location filename="../aboutdialog.cpp" line="84"/>
<source>Translators</source>
<translation>Penerjemah</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="81"/>
<location filename="../aboutdialog.cpp" line="85"/>
<source>I would like to thank the following people who volunteered to translate this application.</source>
<translation>Saya ingin berterima kasih orang-orang berikut yang secara sukarela menerjemahkan aplikasi ini.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="125"/>
<location filename="../aboutdialog.cpp" line="129"/>
<source>%1 is built on the following free software libraries:</source>
<comment>Free as in freedom</comment>
<translation>%1 dibangun dengan perpustakaan perangkat lunak bebas berikut:</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="149"/>
<location filename="../aboutdialog.cpp" line="153"/>
<source>&amp;Special Thanks</source>
<translation>&amp;Terima kasih</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="151"/>
<location filename="../aboutdialog.cpp" line="155"/>
<source>&amp;Third-party Libraries</source>
<translation>&amp; Perpustakaan pihak ketiga</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="87"/>
<location filename="../aboutdialog.cpp" line="91"/>
<source>Your Rights</source>
<translation>Hak Anda</translation>
</message>
@ -114,63 +114,63 @@
<translation>Hindari mengatur ulang keadaan zoom/rotasi/flip yang diterapkan pada tampilan gambar saat beralih antara gambar.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="57"/>
<location filename="../aboutdialog.cpp" line="61"/>
<source>Copyright (c) %1 %2</source>
<comment>%1 is year, %2 is the name of copyright holder(s)</comment>
<translation>Hak Cipta (c) %1 %2</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="89"/>
<location filename="../aboutdialog.cpp" line="93"/>
<source>%1 is released under the MIT License.</source>
<translation>%1 diluncurkan di bawah lisensi MIT.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="90"/>
<location filename="../aboutdialog.cpp" line="94"/>
<source>This license grants people a number of freedoms:</source>
<translation>Lisensi ini memberikan orang-orang beberapa kebebasan:</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="91"/>
<location filename="../aboutdialog.cpp" line="95"/>
<source>You are free to use %1, for any purpose</source>
<translation>Anda bebas menggunakan %1, untuk tujuan apapun</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="92"/>
<location filename="../aboutdialog.cpp" line="96"/>
<source>You are free to distribute %1</source>
<translation>Anda bebas mendistribusikan %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="93"/>
<location filename="../aboutdialog.cpp" line="97"/>
<source>You can study how %1 works and change it</source>
<translation>Anda dapat mempelajari bagaimana cara %1 bekerja dan mengubahnya</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="94"/>
<location filename="../aboutdialog.cpp" line="98"/>
<source>You can distribute changed versions of %1</source>
<translation>Anda dapat mendistribusikan versi %1 yang telah diubah</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="96"/>
<location filename="../aboutdialog.cpp" line="100"/>
<source>The MIT license guarantees you this freedom. Nobody is ever permitted to take it away.</source>
<translation>Lisensi MIT menjamin kebebasan ini. Tidak ada yang pernah diizinkan untuk mengambilnya.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="124"/>
<location filename="../aboutdialog.cpp" line="128"/>
<source>Third-party Libraries used by %1</source>
<translation>Perpustakaan pihak ketiga yang digunakan oleh %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="147"/>
<location filename="../aboutdialog.cpp" line="151"/>
<source>&amp;Help</source>
<translation>&amp;Dukungan</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="148"/>
<location filename="../aboutdialog.cpp" line="152"/>
<source>&amp;About</source>
<translation>Tentan&amp;g</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="150"/>
<location filename="../aboutdialog.cpp" line="154"/>
<source>&amp;License</source>
<translation>&amp;Lisensi</translation>
</message>
@ -178,8 +178,8 @@
<context>
<name>GraphicsScene</name>
<message>
<location filename="../graphicsscene.cpp" line="89"/>
<location filename="../mainwindow.cpp" line="296"/>
<location filename="../mainwindow.cpp" line="265"/>
<location filename="../graphicsscene.cpp" line="100"/>
<source>Drag image here</source>
<translation>Tarik gambar ke sini</translation>
</message>
@ -187,9 +187,8 @@
<context>
<name>GraphicsView</name>
<message>
<location filename="../graphicsview.cpp" line="351"/>
<source>File url list is empty</source>
<translation>Daftar url file kosong</translation>
<translation type="vanished">Daftar url file kosong</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="52"/>
@ -197,162 +196,201 @@
<translation>File bukan gambar yang valid</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="57"/>
<location filename="../graphicsview.cpp" line="62"/>
<location filename="../graphicsview.cpp" line="56"/>
<location filename="../graphicsview.cpp" line="60"/>
<source>Image data is invalid or currently unsupported</source>
<translation>Data gambar tidak valid atau belum didukung</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="359"/>
<source>Image data is invalid</source>
<translation>Data gambar tidak valid</translation>
<translation type="vanished">Data gambar tidak valid</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="366"/>
<source>Not supported mimedata: %1</source>
<translation>Tidak didukung mimedata: %1</translation>
<translation type="vanished">Tidak didukung mimedata: %1</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="191"/>
<location filename="../mainwindow.cpp" line="176"/>
<location filename="../mainwindow.cpp" line="532"/>
<source>File url list is empty</source>
<translation>Daftar url file kosong</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="448"/>
<location filename="../mainwindow.cpp" line="430"/>
<source>&amp;Copy</source>
<translation>&amp;Salin</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="737"/>
<location filename="../mainwindow.cpp" line="540"/>
<source>Image data is invalid</source>
<translation>Data gambar tidak valid</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="547"/>
<source>Not supported mimedata: %1</source>
<translation>Tidak didukung mimedata: %1</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="743"/>
<source>Image From Clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="761"/>
<source>Are you sure you want to move &quot;%1&quot; to recycle bin?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="742"/>
<location filename="../mainwindow.cpp" line="766"/>
<source>Move to trash failed, it might caused by file permission issue, file system limitation, or platform limitation.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<location filename="../actionmanager.cpp" line="114"/>
<source>Copy P&amp;ixmap</source>
<translation>Salin P&amp;ixmap</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="107"/>
<location filename="../actionmanager.cpp" line="115"/>
<source>Copy &amp;File Path</source>
<translation>Salin &amp;Path Berkas</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="125"/>
<location filename="../actionmanager.cpp" line="133"/>
<source>Properties</source>
<translation>Properti</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="118"/>
<location filename="../aboutdialog.cpp" line="39"/>
<location filename="../actionmanager.cpp" line="110"/>
<source>Stay on top</source>
<translation>Tetap di atas</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="119"/>
<location filename="../aboutdialog.cpp" line="42"/>
<location filename="../actionmanager.cpp" line="111"/>
<source>Protected mode</source>
<translation>Mode Terlindungi</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="120"/>
<location filename="../aboutdialog.cpp" line="45"/>
<location filename="../actionmanager.cpp" line="112"/>
<source>Keep transformation</source>
<comment>The &apos;transformation&apos; means the flip/rotation status that currently applied to the image view</comment>
<translation>Simpan transformasi</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<location filename="../actionmanager.cpp" line="99"/>
<source>Zoom in</source>
<translation>Perbesar</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="96"/>
<location filename="../actionmanager.cpp" line="100"/>
<source>Zoom out</source>
<translation>Perkecil</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<source>Flip &amp;Horizontally</source>
<translation>Putar Secara &amp;Horizontal</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="108"/>
<source>&amp;Paste</source>
<translation>&amp;Tempel</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<source>Toggle Checkerboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="91"/>
<source>&amp;Open...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="93"/>
<source>Actual size</source>
<translation>Ukuran asli</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="94"/>
<source>Toggle maximize</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<source>Rotate right</source>
<translation>Putar ke kanan</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="100"/>
<source>Previous image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<source>Next image</source>
<source>Pause/Resume Animation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<location filename="../mainwindow.cpp" line="736"/>
<source>Move to Trash</source>
<source>Animation Go to Next Frame</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="111"/>
<source>Flip &amp;Horizontally</source>
<translation>Putar Secara &amp;Horizontal</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="112"/>
<source>Fit to view</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="113"/>
<source>Fit to width</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="116"/>
<source>&amp;Paste</source>
<translation>&amp;Tempel</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<source>Toggle Checkerboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<source>&amp;Open...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<source>Actual size</source>
<translation>Ukuran asli</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<source>Toggle maximize</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="102"/>
<source>Rotate right</source>
<translation>Putar ke kanan</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<source>Rotate left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="105"/>
<source>Previous image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<source>Next image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="760"/>
<location filename="../actionmanager.cpp" line="117"/>
<source>Move to Trash</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="121"/>
<source>Configure...</source>
<translation>Konfigurasi...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="114"/>
<location filename="../actionmanager.cpp" line="122"/>
<source>Help</source>
<translation>Dukungan</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="117"/>
<location filename="../actionmanager.cpp" line="125"/>
<source>Show in File Explorer</source>
<comment>File Explorer is the name of explorer.exe under Windows</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="123"/>
<location filename="../actionmanager.cpp" line="131"/>
<source>Show in directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="126"/>
<location filename="../actionmanager.cpp" line="134"/>
<source>Quit</source>
<translation>Keluar</translation>
</message>
@ -683,104 +721,155 @@
<context>
<name>SettingsDialog</name>
<message>
<location filename="../settingsdialog.cpp" line="22"/>
<location filename="../settingsdialog.cpp" line="29"/>
<source>Settings</source>
<translation>Pengaturan</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="27"/>
<location filename="../settingsdialog.cpp" line="37"/>
<source>Options</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="49"/>
<source>Shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="59"/>
<source>Editing shortcuts for action &quot;%1&quot;:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="68"/>
<source>Failed to set shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<source>Please check if shortcuts are duplicated with existing shortcuts.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="76"/>
<source>Do nothing</source>
<translation>Jangan lakukan apapun</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="28"/>
<location filename="../settingsdialog.cpp" line="77"/>
<source>Close the window</source>
<translation>Tutup jendela</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="29"/>
<location filename="../settingsdialog.cpp" line="78"/>
<source>Toggle maximize</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="33"/>
<location filename="../settingsdialog.cpp" line="82"/>
<source>Zoom in and out</source>
<translation>Perbesar dan perkecil</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="34"/>
<location filename="../settingsdialog.cpp" line="83"/>
<source>View next or previous item</source>
<translation>Lihat item berikutnya atau sebelumnya</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="38"/>
<location filename="../settingsdialog.cpp" line="87"/>
<source>Auto size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="39"/>
<location filename="../settingsdialog.cpp" line="88"/>
<source>Maximized</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="43"/>
<location filename="../settingsdialog.cpp" line="92"/>
<source>Round (Integer scaling)</source>
<comment>This option means round up for .5 and above</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="44"/>
<location filename="../settingsdialog.cpp" line="93"/>
<source>Ceil (Integer scaling)</source>
<comment>This option means always round up</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="45"/>
<location filename="../settingsdialog.cpp" line="94"/>
<source>Floor (Integer scaling)</source>
<comment>This option means always round down</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="46"/>
<location filename="../settingsdialog.cpp" line="95"/>
<source>Follow system (Fractional scaling)</source>
<comment>This option means don&apos;t round</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<location filename="../settingsdialog.cpp" line="118"/>
<source>Stay on top when start-up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="70"/>
<location filename="../settingsdialog.cpp" line="119"/>
<source>Use light-color checkerboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="120"/>
<source>Double-click behavior</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="71"/>
<location filename="../settingsdialog.cpp" line="121"/>
<source>Mouse wheel behavior</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="72"/>
<location filename="../settingsdialog.cpp" line="122"/>
<source>Default window size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="73"/>
<location filename="../settingsdialog.cpp" line="123"/>
<source>HiDPI scale factor rounding policy</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShortcutEdit</name>
<message>
<location filename="../shortcutedit.cpp" line="111"/>
<source>No shortcuts</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShortcutEditor</name>
<message>
<location filename="../shortcutedit.cpp" line="77"/>
<source>Shortcut #%1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../main.cpp" line="41"/>
<location filename="../main.cpp" line="43"/>
<source>Pineapple Pictures</source>
<translation>Pineapple Pictures</translation>
</message>
<message>
<location filename="../main.cpp" line="45"/>
<location filename="../main.cpp" line="46"/>
<source>List supported image format suffixes, and quit program.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="50"/>
<source>File list.</source>
<translation>Daftar berkas.</translation>
</message>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="it">
<TS version="2.1" language="it_IT">
<context>
<name>AboutDialog</name>
<message>
@ -44,129 +44,129 @@
<translation>Evitare di reimpostare lo stato di zoom/rotazione/capovolgimento applicato alla visualizzazione dell&apos;immagine quando si passa da un&apos;immagine all&apos;altra.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="54"/>
<location filename="../aboutdialog.cpp" line="53"/>
<source>Version: %1</source>
<translation>Versione: %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="60"/>
<location filename="../aboutdialog.cpp" line="64"/>
<source>Logo designed by %1</source>
<translation>Logo disegnato da %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="62"/>
<location filename="../aboutdialog.cpp" line="66"/>
<source>Built with Qt %1 (%2)</source>
<translation>Costruito con Qt %1 (%2)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="63"/>
<location filename="../aboutdialog.cpp" line="67"/>
<source>Source code</source>
<translation>Codice sorgente</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="73"/>
<location filename="../aboutdialog.cpp" line="77"/>
<source>Contributors</source>
<translation>Contributori</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="75"/>
<location filename="../aboutdialog.cpp" line="79"/>
<source>List of contributors on GitHub</source>
<translation>Elenco dei contributori su GitHub</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="76"/>
<location filename="../aboutdialog.cpp" line="80"/>
<source>Thanks to all people who contributed to this project.</source>
<translation>Grazie a tutte le persone che hanno contribuito a questo progetto.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="80"/>
<location filename="../aboutdialog.cpp" line="84"/>
<source>Translators</source>
<translation>Traduttori</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="81"/>
<location filename="../aboutdialog.cpp" line="85"/>
<source>I would like to thank the following people who volunteered to translate this application.</source>
<translation>Vorrei ringraziare le seguenti persone che si sono offerte volontarie per tradurre questa applicazione.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="125"/>
<location filename="../aboutdialog.cpp" line="129"/>
<source>%1 is built on the following free software libraries:</source>
<comment>Free as in freedom</comment>
<translation>%1 si basa sulle seguenti librerie di software libero:</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="149"/>
<location filename="../aboutdialog.cpp" line="153"/>
<source>&amp;Special Thanks</source>
<translation>&amp;Ringraziamenti speciali</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="151"/>
<location filename="../aboutdialog.cpp" line="155"/>
<source>&amp;Third-party Libraries</source>
<translation>&amp;Librerie di terze parti</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="87"/>
<location filename="../aboutdialog.cpp" line="91"/>
<source>Your Rights</source>
<translation>I tuoi diritti</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="57"/>
<location filename="../aboutdialog.cpp" line="61"/>
<source>Copyright (c) %1 %2</source>
<comment>%1 is year, %2 is the name of copyright holder(s)</comment>
<translation>Copyright (c) %1 %2</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="89"/>
<location filename="../aboutdialog.cpp" line="93"/>
<source>%1 is released under the MIT License.</source>
<translation>%1 è rilasciato sotto licenza MIT.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="90"/>
<location filename="../aboutdialog.cpp" line="94"/>
<source>This license grants people a number of freedoms:</source>
<translation>Questa licenza garantisce alle persone una serie di libertà:</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="91"/>
<location filename="../aboutdialog.cpp" line="95"/>
<source>You are free to use %1, for any purpose</source>
<translation>Sei libero di usare %1, per qualsiasi scopo</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="92"/>
<location filename="../aboutdialog.cpp" line="96"/>
<source>You are free to distribute %1</source>
<translation>Sei libero di distribuire %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="93"/>
<location filename="../aboutdialog.cpp" line="97"/>
<source>You can study how %1 works and change it</source>
<translation>Puoi studiare come funziona %1 e cambiarlo</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="94"/>
<location filename="../aboutdialog.cpp" line="98"/>
<source>You can distribute changed versions of %1</source>
<translation>Puoi distribuire versioni modificate di %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="96"/>
<location filename="../aboutdialog.cpp" line="100"/>
<source>The MIT license guarantees you this freedom. Nobody is ever permitted to take it away.</source>
<translation>La licenza MIT ti garantisce questa libertà. A nessuno è mai permesso portarlo via.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="124"/>
<location filename="../aboutdialog.cpp" line="128"/>
<source>Third-party Libraries used by %1</source>
<translation>Librerie di terze parti utilizzate da %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="147"/>
<location filename="../aboutdialog.cpp" line="151"/>
<source>&amp;Help</source>
<translation>&amp;Aiuto</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="148"/>
<location filename="../aboutdialog.cpp" line="152"/>
<source>&amp;About</source>
<translation>&amp;Informazioni</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="150"/>
<location filename="../aboutdialog.cpp" line="154"/>
<source>&amp;License</source>
<translation>&amp;Licenza</translation>
</message>
@ -174,8 +174,8 @@
<context>
<name>GraphicsScene</name>
<message>
<location filename="../graphicsscene.cpp" line="89"/>
<location filename="../mainwindow.cpp" line="296"/>
<location filename="../mainwindow.cpp" line="265"/>
<location filename="../graphicsscene.cpp" line="100"/>
<source>Drag image here</source>
<translation>Trascina qui l&apos;immagine</translation>
</message>
@ -183,9 +183,8 @@
<context>
<name>GraphicsView</name>
<message>
<location filename="../graphicsview.cpp" line="351"/>
<source>File url list is empty</source>
<translation>L&apos;elenco degli URL dei file è vuoto</translation>
<translation type="vanished">L&apos;elenco degli URL dei file è vuoto</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="52"/>
@ -193,162 +192,201 @@
<translation>Il file non è un&apos;immagine valida</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="57"/>
<location filename="../graphicsview.cpp" line="62"/>
<location filename="../graphicsview.cpp" line="56"/>
<location filename="../graphicsview.cpp" line="60"/>
<source>Image data is invalid or currently unsupported</source>
<translation>I dati dell&apos;immagine non sono validi o non sono attualmente supportati</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="359"/>
<source>Image data is invalid</source>
<translation>I dati dell&apos;immagine non sono validi</translation>
<translation type="vanished">I dati dell&apos;immagine non sono validi</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="366"/>
<source>Not supported mimedata: %1</source>
<translation>Dati mime non supportati: %1</translation>
<translation type="vanished">Dati mime non supportati: %1</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="191"/>
<location filename="../mainwindow.cpp" line="176"/>
<location filename="../mainwindow.cpp" line="532"/>
<source>File url list is empty</source>
<translation>L&apos;elenco degli URL dei file è vuoto</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="448"/>
<location filename="../mainwindow.cpp" line="430"/>
<source>&amp;Copy</source>
<translation>&amp;Copia</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="737"/>
<location filename="../mainwindow.cpp" line="540"/>
<source>Image data is invalid</source>
<translation>I dati dell&apos;immagine non sono validi</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="547"/>
<source>Not supported mimedata: %1</source>
<translation>Dati mime non supportati: %1</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="743"/>
<source>Image From Clipboard</source>
<translation>Immagine dagli appunti</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="761"/>
<source>Are you sure you want to move &quot;%1&quot; to recycle bin?</source>
<translation>Sei sicuro di voler spostare &quot;%1&quot; nel cestino?</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="742"/>
<location filename="../mainwindow.cpp" line="766"/>
<source>Move to trash failed, it might caused by file permission issue, file system limitation, or platform limitation.</source>
<translation>Lo spostamento nel cestino non è riuscito, potrebbe essere causato da un problema di autorizzazione del file, da una limitazione del file system o da una limitazione della piattaforma.</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<location filename="../actionmanager.cpp" line="114"/>
<source>Copy P&amp;ixmap</source>
<translation>Copia P&amp;ixmap</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="107"/>
<location filename="../actionmanager.cpp" line="115"/>
<source>Copy &amp;File Path</source>
<translation>Copia &amp;Percorso file</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="125"/>
<location filename="../actionmanager.cpp" line="133"/>
<source>Properties</source>
<translation>Proprietà</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="118"/>
<location filename="../aboutdialog.cpp" line="39"/>
<location filename="../actionmanager.cpp" line="110"/>
<source>Stay on top</source>
<translation>Rimani in cima</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="119"/>
<location filename="../aboutdialog.cpp" line="42"/>
<location filename="../actionmanager.cpp" line="111"/>
<source>Protected mode</source>
<translation>Modalità protetta</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="120"/>
<location filename="../aboutdialog.cpp" line="45"/>
<location filename="../actionmanager.cpp" line="112"/>
<source>Keep transformation</source>
<comment>The &apos;transformation&apos; means the flip/rotation status that currently applied to the image view</comment>
<translation>Mantieni trasformazione</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<location filename="../actionmanager.cpp" line="99"/>
<source>Zoom in</source>
<translation>Zoom avanti</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="96"/>
<location filename="../actionmanager.cpp" line="100"/>
<source>Zoom out</source>
<translation>Zoom indietro</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<location filename="../actionmanager.cpp" line="108"/>
<source>Pause/Resume Animation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<source>Animation Go to Next Frame</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="111"/>
<source>Flip &amp;Horizontally</source>
<translation>Capovolgi &amp;Orizzontalmente</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="108"/>
<location filename="../actionmanager.cpp" line="112"/>
<source>Fit to view</source>
<translation>Adatto alla visualizzazione</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="113"/>
<source>Fit to width</source>
<translation>Adatta alla larghezza</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="116"/>
<source>&amp;Paste</source>
<translation>&amp;Incolla</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<location filename="../actionmanager.cpp" line="101"/>
<source>Toggle Checkerboard</source>
<translation>Attiva/disattiva scacchiera</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="91"/>
<location filename="../actionmanager.cpp" line="95"/>
<source>&amp;Open...</source>
<translation>&amp;Apri...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="93"/>
<location filename="../actionmanager.cpp" line="97"/>
<source>Actual size</source>
<translation>Dimensione reale</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="94"/>
<location filename="../actionmanager.cpp" line="98"/>
<source>Toggle maximize</source>
<translation>Attiva massimizzazione</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<location filename="../actionmanager.cpp" line="102"/>
<source>Rotate right</source>
<translation>Ruota a destra</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="100"/>
<location filename="../actionmanager.cpp" line="103"/>
<source>Rotate left</source>
<translation>Ruota a sinistra</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="105"/>
<source>Previous image</source>
<translation>Immagine precedente</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<location filename="../actionmanager.cpp" line="106"/>
<source>Next image</source>
<translation>Immagine successiva</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<location filename="../mainwindow.cpp" line="736"/>
<location filename="../mainwindow.cpp" line="760"/>
<location filename="../actionmanager.cpp" line="117"/>
<source>Move to Trash</source>
<translation>Sposta nel cestino</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="113"/>
<location filename="../actionmanager.cpp" line="121"/>
<source>Configure...</source>
<translation>Configura...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="114"/>
<location filename="../actionmanager.cpp" line="122"/>
<source>Help</source>
<translation>Aiuto</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="117"/>
<location filename="../actionmanager.cpp" line="125"/>
<source>Show in File Explorer</source>
<comment>File Explorer is the name of explorer.exe under Windows</comment>
<translation>Mostra in Esplora file</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="123"/>
<location filename="../actionmanager.cpp" line="131"/>
<source>Show in directory</source>
<translation>Mostra nella directory</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="126"/>
<location filename="../actionmanager.cpp" line="134"/>
<source>Quit</source>
<translation>Esci</translation>
</message>
@ -679,104 +717,155 @@
<context>
<name>SettingsDialog</name>
<message>
<location filename="../settingsdialog.cpp" line="22"/>
<location filename="../settingsdialog.cpp" line="29"/>
<source>Settings</source>
<translation>Impostazioni</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="27"/>
<location filename="../settingsdialog.cpp" line="37"/>
<source>Options</source>
<translation>Opzioni</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="49"/>
<source>Shortcuts</source>
<translation>Scorciatoie</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="59"/>
<source>Editing shortcuts for action &quot;%1&quot;:</source>
<translation>Modifica delle scorciatoie per l&apos;azione &quot;%1&quot;:</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="68"/>
<source>Failed to set shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<source>Please check if shortcuts are duplicated with existing shortcuts.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="76"/>
<source>Do nothing</source>
<translation>Non fare nulla</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="28"/>
<location filename="../settingsdialog.cpp" line="77"/>
<source>Close the window</source>
<translation>Chiudi la finestra</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="29"/>
<location filename="../settingsdialog.cpp" line="78"/>
<source>Toggle maximize</source>
<translation>Attiva massimizzazione</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="33"/>
<location filename="../settingsdialog.cpp" line="82"/>
<source>Zoom in and out</source>
<translation>Zoom avanti e indietro</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="34"/>
<location filename="../settingsdialog.cpp" line="83"/>
<source>View next or previous item</source>
<translation>Visualizza l&apos;elemento successivo o precedente</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="38"/>
<location filename="../settingsdialog.cpp" line="87"/>
<source>Auto size</source>
<translation>Dimensione automatica</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="39"/>
<location filename="../settingsdialog.cpp" line="88"/>
<source>Maximized</source>
<translation>Massimizzato</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="43"/>
<location filename="../settingsdialog.cpp" line="92"/>
<source>Round (Integer scaling)</source>
<comment>This option means round up for .5 and above</comment>
<translation>Round (ridimensionamento intero)</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="44"/>
<location filename="../settingsdialog.cpp" line="93"/>
<source>Ceil (Integer scaling)</source>
<comment>This option means always round up</comment>
<translation>Ceil (ridimensionamento intero)</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="45"/>
<location filename="../settingsdialog.cpp" line="94"/>
<source>Floor (Integer scaling)</source>
<comment>This option means always round down</comment>
<translation>Floor (ridimensionamento intero)</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="46"/>
<location filename="../settingsdialog.cpp" line="95"/>
<source>Follow system (Fractional scaling)</source>
<comment>This option means don&apos;t round</comment>
<translation>Segui il sistema (scala frazionaria)</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<location filename="../settingsdialog.cpp" line="118"/>
<source>Stay on top when start-up</source>
<translation>Rimani in cima quando si avvia</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="70"/>
<location filename="../settingsdialog.cpp" line="119"/>
<source>Use light-color checkerboard</source>
<translation>Utilizzare scacchiera di colore chiaro</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="120"/>
<source>Double-click behavior</source>
<translation>Comportamento del doppio clic</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="71"/>
<location filename="../settingsdialog.cpp" line="121"/>
<source>Mouse wheel behavior</source>
<translation>Comportamento della rotellina del mouse</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="72"/>
<location filename="../settingsdialog.cpp" line="122"/>
<source>Default window size</source>
<translation>Dimensioni predefinite della finestra</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="73"/>
<location filename="../settingsdialog.cpp" line="123"/>
<source>HiDPI scale factor rounding policy</source>
<translation>Politica di arrotondamento del fattore di scala HiDPI</translation>
</message>
</context>
<context>
<name>ShortcutEdit</name>
<message>
<location filename="../shortcutedit.cpp" line="111"/>
<source>No shortcuts</source>
<translation>Nessuna scorciatoia</translation>
</message>
</context>
<context>
<name>ShortcutEditor</name>
<message>
<location filename="../shortcutedit.cpp" line="77"/>
<source>Shortcut #%1</source>
<translation>Scorciatoia #%1</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../main.cpp" line="41"/>
<location filename="../main.cpp" line="43"/>
<source>Pineapple Pictures</source>
<translation>Immagini di Pineapple</translation>
</message>
<message>
<location filename="../main.cpp" line="45"/>
<location filename="../main.cpp" line="46"/>
<source>List supported image format suffixes, and quit program.</source>
<translation>Elenca i suffissi dei formati immagine supportati e chiudi il programma.</translation>
</message>
<message>
<location filename="../main.cpp" line="50"/>
<source>File list.</source>
<translation>Elenco file.</translation>
</message>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ja">
<TS version="2.1" language="ja_JP">
<context>
<name>AboutDialog</name>
<message>
@ -44,129 +44,129 @@
<translation></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="54"/>
<location filename="../aboutdialog.cpp" line="53"/>
<source>Version: %1</source>
<translation>: %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="60"/>
<location filename="../aboutdialog.cpp" line="64"/>
<source>Logo designed by %1</source>
<translation>: %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="62"/>
<location filename="../aboutdialog.cpp" line="66"/>
<source>Built with Qt %1 (%2)</source>
<translation>Qt %1 (%2) </translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="63"/>
<location filename="../aboutdialog.cpp" line="67"/>
<source>Source code</source>
<translation></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="73"/>
<location filename="../aboutdialog.cpp" line="77"/>
<source>Contributors</source>
<translation></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="75"/>
<location filename="../aboutdialog.cpp" line="79"/>
<source>List of contributors on GitHub</source>
<translation>GitHubでの貢献者リスト</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="76"/>
<location filename="../aboutdialog.cpp" line="80"/>
<source>Thanks to all people who contributed to this project.</source>
<translation></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="80"/>
<location filename="../aboutdialog.cpp" line="84"/>
<source>Translators</source>
<translation></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="81"/>
<location filename="../aboutdialog.cpp" line="85"/>
<source>I would like to thank the following people who volunteered to translate this application.</source>
<translation></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="125"/>
<location filename="../aboutdialog.cpp" line="129"/>
<source>%1 is built on the following free software libraries:</source>
<comment>Free as in freedom</comment>
<translation>%1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="149"/>
<location filename="../aboutdialog.cpp" line="153"/>
<source>&amp;Special Thanks</source>
<translation>(&amp;S)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="151"/>
<location filename="../aboutdialog.cpp" line="155"/>
<source>&amp;Third-party Libraries</source>
<translation>(&amp;T)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="87"/>
<location filename="../aboutdialog.cpp" line="91"/>
<source>Your Rights</source>
<translation></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="57"/>
<location filename="../aboutdialog.cpp" line="61"/>
<source>Copyright (c) %1 %2</source>
<comment>%1 is year, %2 is the name of copyright holder(s)</comment>
<translation>Copyright (c) %1 %2</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="89"/>
<location filename="../aboutdialog.cpp" line="93"/>
<source>%1 is released under the MIT License.</source>
<translation>%1MITライセンスのもとで公開されています</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="90"/>
<location filename="../aboutdialog.cpp" line="94"/>
<source>This license grants people a number of freedoms:</source>
<translation></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="91"/>
<location filename="../aboutdialog.cpp" line="95"/>
<source>You are free to use %1, for any purpose</source>
<translation>%1使</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="92"/>
<location filename="../aboutdialog.cpp" line="96"/>
<source>You are free to distribute %1</source>
<translation>%1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="93"/>
<location filename="../aboutdialog.cpp" line="97"/>
<source>You can study how %1 works and change it</source>
<translation>%1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="94"/>
<location filename="../aboutdialog.cpp" line="98"/>
<source>You can distribute changed versions of %1</source>
<translation> %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="96"/>
<location filename="../aboutdialog.cpp" line="100"/>
<source>The MIT license guarantees you this freedom. Nobody is ever permitted to take it away.</source>
<translation>MITライセンスは</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="124"/>
<location filename="../aboutdialog.cpp" line="128"/>
<source>Third-party Libraries used by %1</source>
<translation>%1使</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="147"/>
<location filename="../aboutdialog.cpp" line="151"/>
<source>&amp;Help</source>
<translation>(&amp;H)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="148"/>
<location filename="../aboutdialog.cpp" line="152"/>
<source>&amp;About</source>
<translation>(&amp;A)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="150"/>
<location filename="../aboutdialog.cpp" line="154"/>
<source>&amp;License</source>
<translation>(&amp;L)</translation>
</message>
@ -174,8 +174,8 @@
<context>
<name>GraphicsScene</name>
<message>
<location filename="../graphicsscene.cpp" line="89"/>
<location filename="../mainwindow.cpp" line="296"/>
<location filename="../mainwindow.cpp" line="265"/>
<location filename="../graphicsscene.cpp" line="100"/>
<source>Drag image here</source>
<translation></translation>
</message>
@ -183,9 +183,8 @@
<context>
<name>GraphicsView</name>
<message>
<location filename="../graphicsview.cpp" line="351"/>
<source>File url list is empty</source>
<translation>URLリストがエンプティーです</translation>
<translation type="vanished">URLリストがエンプティーです</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="52"/>
@ -193,162 +192,201 @@
<translation></translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="57"/>
<location filename="../graphicsview.cpp" line="62"/>
<location filename="../graphicsview.cpp" line="56"/>
<location filename="../graphicsview.cpp" line="60"/>
<source>Image data is invalid or currently unsupported</source>
<translation></translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="359"/>
<source>Image data is invalid</source>
<translation></translation>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="366"/>
<source>Not supported mimedata: %1</source>
<translation>mimedata: %1</translation>
<translation type="vanished">mimedata: %1</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="191"/>
<location filename="../mainwindow.cpp" line="176"/>
<location filename="../mainwindow.cpp" line="532"/>
<source>File url list is empty</source>
<translation>urlリストがエンプティーです</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="448"/>
<location filename="../mainwindow.cpp" line="430"/>
<source>&amp;Copy</source>
<translation>(&amp;C)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="737"/>
<location filename="../mainwindow.cpp" line="540"/>
<source>Image data is invalid</source>
<translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="547"/>
<source>Not supported mimedata: %1</source>
<translation>mimedata: %1</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="743"/>
<source>Image From Clipboard</source>
<translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="761"/>
<source>Are you sure you want to move &quot;%1&quot; to recycle bin?</source>
<translation>%1</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="742"/>
<location filename="../mainwindow.cpp" line="766"/>
<source>Move to trash failed, it might caused by file permission issue, file system limitation, or platform limitation.</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<location filename="../actionmanager.cpp" line="114"/>
<source>Copy P&amp;ixmap</source>
<translation>(&amp;I)</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="107"/>
<location filename="../actionmanager.cpp" line="115"/>
<source>Copy &amp;File Path</source>
<translation>(&amp;F)</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="125"/>
<location filename="../actionmanager.cpp" line="133"/>
<source>Properties</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="118"/>
<location filename="../aboutdialog.cpp" line="39"/>
<location filename="../actionmanager.cpp" line="110"/>
<source>Stay on top</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="119"/>
<location filename="../aboutdialog.cpp" line="42"/>
<location filename="../actionmanager.cpp" line="111"/>
<source>Protected mode</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="120"/>
<location filename="../aboutdialog.cpp" line="45"/>
<location filename="../actionmanager.cpp" line="112"/>
<source>Keep transformation</source>
<comment>The &apos;transformation&apos; means the flip/rotation status that currently applied to the image view</comment>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<location filename="../actionmanager.cpp" line="99"/>
<source>Zoom in</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="96"/>
<location filename="../actionmanager.cpp" line="100"/>
<source>Zoom out</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<location filename="../actionmanager.cpp" line="108"/>
<source>Pause/Resume Animation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<source>Animation Go to Next Frame</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="111"/>
<source>Flip &amp;Horizontally</source>
<translation>(&amp;H)</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="108"/>
<location filename="../actionmanager.cpp" line="112"/>
<source>Fit to view</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="113"/>
<source>Fit to width</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="116"/>
<source>&amp;Paste</source>
<translation>(&amp;P)</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<location filename="../actionmanager.cpp" line="101"/>
<source>Toggle Checkerboard</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="91"/>
<location filename="../actionmanager.cpp" line="95"/>
<source>&amp;Open...</source>
<translation>(&amp;O)</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="93"/>
<location filename="../actionmanager.cpp" line="97"/>
<source>Actual size</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="94"/>
<location filename="../actionmanager.cpp" line="98"/>
<source>Toggle maximize</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<location filename="../actionmanager.cpp" line="102"/>
<source>Rotate right</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="100"/>
<location filename="../actionmanager.cpp" line="103"/>
<source>Rotate left</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="105"/>
<source>Previous image</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<location filename="../actionmanager.cpp" line="106"/>
<source>Next image</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<location filename="../mainwindow.cpp" line="736"/>
<location filename="../mainwindow.cpp" line="760"/>
<location filename="../actionmanager.cpp" line="117"/>
<source>Move to Trash</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="113"/>
<location filename="../actionmanager.cpp" line="121"/>
<source>Configure...</source>
<translation>...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="114"/>
<location filename="../actionmanager.cpp" line="122"/>
<source>Help</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="117"/>
<location filename="../actionmanager.cpp" line="125"/>
<source>Show in File Explorer</source>
<comment>File Explorer is the name of explorer.exe under Windows</comment>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="123"/>
<location filename="../actionmanager.cpp" line="131"/>
<source>Show in directory</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="126"/>
<location filename="../actionmanager.cpp" line="134"/>
<source>Quit</source>
<translation></translation>
</message>
@ -679,104 +717,155 @@
<context>
<name>SettingsDialog</name>
<message>
<location filename="../settingsdialog.cpp" line="22"/>
<location filename="../settingsdialog.cpp" line="29"/>
<source>Settings</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="27"/>
<location filename="../settingsdialog.cpp" line="37"/>
<source>Options</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="49"/>
<source>Shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="59"/>
<source>Editing shortcuts for action &quot;%1&quot;:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="68"/>
<source>Failed to set shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<source>Please check if shortcuts are duplicated with existing shortcuts.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="76"/>
<source>Do nothing</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="28"/>
<location filename="../settingsdialog.cpp" line="77"/>
<source>Close the window</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="29"/>
<location filename="../settingsdialog.cpp" line="78"/>
<source>Toggle maximize</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="33"/>
<location filename="../settingsdialog.cpp" line="82"/>
<source>Zoom in and out</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="34"/>
<location filename="../settingsdialog.cpp" line="83"/>
<source>View next or previous item</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="38"/>
<location filename="../settingsdialog.cpp" line="87"/>
<source>Auto size</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="39"/>
<location filename="../settingsdialog.cpp" line="88"/>
<source>Maximized</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="43"/>
<location filename="../settingsdialog.cpp" line="92"/>
<source>Round (Integer scaling)</source>
<comment>This option means round up for .5 and above</comment>
<translation> ()</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="44"/>
<location filename="../settingsdialog.cpp" line="93"/>
<source>Ceil (Integer scaling)</source>
<comment>This option means always round up</comment>
<translation> ()</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="45"/>
<location filename="../settingsdialog.cpp" line="94"/>
<source>Floor (Integer scaling)</source>
<comment>This option means always round down</comment>
<translation> ()</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="46"/>
<location filename="../settingsdialog.cpp" line="95"/>
<source>Follow system (Fractional scaling)</source>
<comment>This option means don&apos;t round</comment>
<translation> ()</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<location filename="../settingsdialog.cpp" line="118"/>
<source>Stay on top when start-up</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="70"/>
<location filename="../settingsdialog.cpp" line="119"/>
<source>Use light-color checkerboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="120"/>
<source>Double-click behavior</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="71"/>
<location filename="../settingsdialog.cpp" line="121"/>
<source>Mouse wheel behavior</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="72"/>
<location filename="../settingsdialog.cpp" line="122"/>
<source>Default window size</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="73"/>
<location filename="../settingsdialog.cpp" line="123"/>
<source>HiDPI scale factor rounding policy</source>
<translation>DPIスケーリングの四捨五入方法</translation>
</message>
</context>
<context>
<name>ShortcutEdit</name>
<message>
<location filename="../shortcutedit.cpp" line="111"/>
<source>No shortcuts</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShortcutEditor</name>
<message>
<location filename="../shortcutedit.cpp" line="77"/>
<source>Shortcut #%1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../main.cpp" line="41"/>
<location filename="../main.cpp" line="43"/>
<source>Pineapple Pictures</source>
<translation>Pineapple Pictures</translation>
</message>
<message>
<location filename="../main.cpp" line="45"/>
<location filename="../main.cpp" line="46"/>
<source>List supported image format suffixes, and quit program.</source>
<translation></translation>
</message>
<message>
<location filename="../main.cpp" line="50"/>
<source>File list.</source>
<translation></translation>
</message>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ko">
<TS version="2.1" language="ko_KR">
<context>
<name>AboutDialog</name>
<message>
@ -41,132 +41,132 @@
<message>
<location filename="../aboutdialog.cpp" line="46"/>
<source>Avoid resetting the zoom/rotation/flip state that was applied to the image view when switching between images.</source>
<translation type="unfinished"></translation>
<translation> // .</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="54"/>
<location filename="../aboutdialog.cpp" line="53"/>
<source>Version: %1</source>
<translation>: %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="60"/>
<location filename="../aboutdialog.cpp" line="64"/>
<source>Logo designed by %1</source>
<translation>%1 </translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="62"/>
<location filename="../aboutdialog.cpp" line="66"/>
<source>Built with Qt %1 (%2)</source>
<translation>Qt %1(%2) </translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="63"/>
<location filename="../aboutdialog.cpp" line="67"/>
<source>Source code</source>
<translation> </translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="73"/>
<location filename="../aboutdialog.cpp" line="77"/>
<source>Contributors</source>
<translation></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="75"/>
<location filename="../aboutdialog.cpp" line="79"/>
<source>List of contributors on GitHub</source>
<translation>GitHub의 </translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="76"/>
<location filename="../aboutdialog.cpp" line="80"/>
<source>Thanks to all people who contributed to this project.</source>
<translation> .</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="80"/>
<location filename="../aboutdialog.cpp" line="84"/>
<source>Translators</source>
<translation></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="81"/>
<location filename="../aboutdialog.cpp" line="85"/>
<source>I would like to thank the following people who volunteered to translate this application.</source>
<translation> .</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="125"/>
<location filename="../aboutdialog.cpp" line="129"/>
<source>%1 is built on the following free software libraries:</source>
<comment>Free as in freedom</comment>
<translation>%1 :</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="149"/>
<location filename="../aboutdialog.cpp" line="153"/>
<source>&amp;Special Thanks</source>
<translation> (&amp;S)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="151"/>
<location filename="../aboutdialog.cpp" line="155"/>
<source>&amp;Third-party Libraries</source>
<translation> (&amp;T)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="87"/>
<location filename="../aboutdialog.cpp" line="91"/>
<source>Your Rights</source>
<translation> </translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="57"/>
<location filename="../aboutdialog.cpp" line="61"/>
<source>Copyright (c) %1 %2</source>
<comment>%1 is year, %2 is the name of copyright holder(s)</comment>
<translation> (c) %1 %2</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="89"/>
<location filename="../aboutdialog.cpp" line="93"/>
<source>%1 is released under the MIT License.</source>
<translation> %1 MIT .</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="90"/>
<location filename="../aboutdialog.cpp" line="94"/>
<source>This license grants people a number of freedoms:</source>
<translation> :</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="91"/>
<location filename="../aboutdialog.cpp" line="95"/>
<source>You are free to use %1, for any purpose</source>
<translation>%1() </translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="92"/>
<location filename="../aboutdialog.cpp" line="96"/>
<source>You are free to distribute %1</source>
<translation>%1 </translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="93"/>
<location filename="../aboutdialog.cpp" line="97"/>
<source>You can study how %1 works and change it</source>
<translation>%1 </translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="94"/>
<location filename="../aboutdialog.cpp" line="98"/>
<source>You can distribute changed versions of %1</source>
<translation> %1 </translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="96"/>
<location filename="../aboutdialog.cpp" line="100"/>
<source>The MIT license guarantees you this freedom. Nobody is ever permitted to take it away.</source>
<translation>MIT . .</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="124"/>
<location filename="../aboutdialog.cpp" line="128"/>
<source>Third-party Libraries used by %1</source>
<translation>%1 </translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="147"/>
<location filename="../aboutdialog.cpp" line="151"/>
<source>&amp;Help</source>
<translation>(&amp;H)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="148"/>
<location filename="../aboutdialog.cpp" line="152"/>
<source>&amp;About</source>
<translation>(&amp;A)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="150"/>
<location filename="../aboutdialog.cpp" line="154"/>
<source>&amp;License</source>
<translation>(&amp;L)</translation>
</message>
@ -174,8 +174,8 @@
<context>
<name>GraphicsScene</name>
<message>
<location filename="../graphicsscene.cpp" line="89"/>
<location filename="../mainwindow.cpp" line="296"/>
<location filename="../mainwindow.cpp" line="265"/>
<location filename="../graphicsscene.cpp" line="100"/>
<source>Drag image here</source>
<translation> </translation>
</message>
@ -183,9 +183,8 @@
<context>
<name>GraphicsView</name>
<message>
<location filename="../graphicsview.cpp" line="351"/>
<source>File url list is empty</source>
<translation> URL </translation>
<translation type="vanished"> URL </translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="52"/>
@ -193,162 +192,201 @@
<translation> </translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="57"/>
<location filename="../graphicsview.cpp" line="62"/>
<location filename="../graphicsview.cpp" line="56"/>
<location filename="../graphicsview.cpp" line="60"/>
<source>Image data is invalid or currently unsupported</source>
<translation> </translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="359"/>
<source>Image data is invalid</source>
<translation> </translation>
<translation type="vanished"> </translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="366"/>
<source>Not supported mimedata: %1</source>
<translation> mimedata: %1</translation>
<translation type="vanished"> mimedata: %1</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="191"/>
<location filename="../mainwindow.cpp" line="176"/>
<location filename="../mainwindow.cpp" line="532"/>
<source>File url list is empty</source>
<translation> URL </translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="448"/>
<location filename="../mainwindow.cpp" line="430"/>
<source>&amp;Copy</source>
<translation>(&amp;C)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="737"/>
<location filename="../mainwindow.cpp" line="540"/>
<source>Image data is invalid</source>
<translation> </translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="547"/>
<source>Not supported mimedata: %1</source>
<translation> mimedata: %1</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="743"/>
<source>Image From Clipboard</source>
<translation> </translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="761"/>
<source>Are you sure you want to move &quot;%1&quot; to recycle bin?</source>
<translation type="unfinished"></translation>
<translation>&quot;%1&quot; ?</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="742"/>
<location filename="../mainwindow.cpp" line="766"/>
<source>Move to trash failed, it might caused by file permission issue, file system limitation, or platform limitation.</source>
<translation type="unfinished"></translation>
<translation> . , .</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<location filename="../actionmanager.cpp" line="114"/>
<source>Copy P&amp;ixmap</source>
<translation>Pixmap (&amp;I)</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="107"/>
<location filename="../actionmanager.cpp" line="115"/>
<source>Copy &amp;File Path</source>
<translation> (&amp;F)</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="125"/>
<location filename="../actionmanager.cpp" line="133"/>
<source>Properties</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="118"/>
<location filename="../aboutdialog.cpp" line="39"/>
<location filename="../actionmanager.cpp" line="110"/>
<source>Stay on top</source>
<translation> </translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="119"/>
<location filename="../aboutdialog.cpp" line="42"/>
<location filename="../actionmanager.cpp" line="111"/>
<source>Protected mode</source>
<translation> </translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="120"/>
<location filename="../aboutdialog.cpp" line="45"/>
<location filename="../actionmanager.cpp" line="112"/>
<source>Keep transformation</source>
<comment>The &apos;transformation&apos; means the flip/rotation status that currently applied to the image view</comment>
<translation type="unfinished"></translation>
<translation> </translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<location filename="../actionmanager.cpp" line="99"/>
<source>Zoom in</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="96"/>
<location filename="../actionmanager.cpp" line="100"/>
<source>Zoom out</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<location filename="../actionmanager.cpp" line="108"/>
<source>Pause/Resume Animation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<source>Animation Go to Next Frame</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="111"/>
<source>Flip &amp;Horizontally</source>
<translation> (&amp;H)</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="108"/>
<location filename="../actionmanager.cpp" line="112"/>
<source>Fit to view</source>
<translation> </translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="113"/>
<source>Fit to width</source>
<translation> </translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="116"/>
<source>&amp;Paste</source>
<translation>(&amp;P)</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<location filename="../actionmanager.cpp" line="101"/>
<source>Toggle Checkerboard</source>
<translation> </translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="91"/>
<location filename="../actionmanager.cpp" line="95"/>
<source>&amp;Open...</source>
<translation>(&amp;O)...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="93"/>
<location filename="../actionmanager.cpp" line="97"/>
<source>Actual size</source>
<translation> </translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="94"/>
<location filename="../actionmanager.cpp" line="98"/>
<source>Toggle maximize</source>
<translation> </translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<location filename="../actionmanager.cpp" line="102"/>
<source>Rotate right</source>
<translation> </translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="100"/>
<location filename="../actionmanager.cpp" line="103"/>
<source>Rotate left</source>
<translation> </translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="105"/>
<source>Previous image</source>
<translation> </translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<location filename="../actionmanager.cpp" line="106"/>
<source>Next image</source>
<translation> </translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<location filename="../mainwindow.cpp" line="736"/>
<location filename="../mainwindow.cpp" line="760"/>
<location filename="../actionmanager.cpp" line="117"/>
<source>Move to Trash</source>
<translation type="unfinished"></translation>
<translation> </translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="113"/>
<location filename="../actionmanager.cpp" line="121"/>
<source>Configure...</source>
<translation>...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="114"/>
<location filename="../actionmanager.cpp" line="122"/>
<source>Help</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="117"/>
<location filename="../actionmanager.cpp" line="125"/>
<source>Show in File Explorer</source>
<comment>File Explorer is the name of explorer.exe under Windows</comment>
<translation> </translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="123"/>
<location filename="../actionmanager.cpp" line="131"/>
<source>Show in directory</source>
<translation> </translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="126"/>
<location filename="../actionmanager.cpp" line="134"/>
<source>Quit</source>
<translation></translation>
</message>
@ -679,104 +717,155 @@
<context>
<name>SettingsDialog</name>
<message>
<location filename="../settingsdialog.cpp" line="22"/>
<location filename="../settingsdialog.cpp" line="29"/>
<source>Settings</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="27"/>
<location filename="../settingsdialog.cpp" line="37"/>
<source>Options</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="49"/>
<source>Shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="59"/>
<source>Editing shortcuts for action &quot;%1&quot;:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="68"/>
<source>Failed to set shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<source>Please check if shortcuts are duplicated with existing shortcuts.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="76"/>
<source>Do nothing</source>
<translation> </translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="28"/>
<location filename="../settingsdialog.cpp" line="77"/>
<source>Close the window</source>
<translation> </translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="29"/>
<location filename="../settingsdialog.cpp" line="78"/>
<source>Toggle maximize</source>
<translation> </translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="33"/>
<location filename="../settingsdialog.cpp" line="82"/>
<source>Zoom in and out</source>
<translation> </translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="34"/>
<location filename="../settingsdialog.cpp" line="83"/>
<source>View next or previous item</source>
<translation> </translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="38"/>
<location filename="../settingsdialog.cpp" line="87"/>
<source>Auto size</source>
<translation> </translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="39"/>
<location filename="../settingsdialog.cpp" line="88"/>
<source>Maximized</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="43"/>
<location filename="../settingsdialog.cpp" line="92"/>
<source>Round (Integer scaling)</source>
<comment>This option means round up for .5 and above</comment>
<translation> ( )</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="44"/>
<location filename="../settingsdialog.cpp" line="93"/>
<source>Ceil (Integer scaling)</source>
<comment>This option means always round up</comment>
<translation> ( )</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="45"/>
<location filename="../settingsdialog.cpp" line="94"/>
<source>Floor (Integer scaling)</source>
<comment>This option means always round down</comment>
<translation> ( )</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="46"/>
<location filename="../settingsdialog.cpp" line="95"/>
<source>Follow system (Fractional scaling)</source>
<comment>This option means don&apos;t round</comment>
<translation> ( )</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<location filename="../settingsdialog.cpp" line="118"/>
<source>Stay on top when start-up</source>
<translation> </translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="70"/>
<location filename="../settingsdialog.cpp" line="119"/>
<source>Use light-color checkerboard</source>
<translation> </translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="120"/>
<source>Double-click behavior</source>
<translation> </translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="71"/>
<location filename="../settingsdialog.cpp" line="121"/>
<source>Mouse wheel behavior</source>
<translation> </translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="72"/>
<location filename="../settingsdialog.cpp" line="122"/>
<source>Default window size</source>
<translation> </translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="73"/>
<location filename="../settingsdialog.cpp" line="123"/>
<source>HiDPI scale factor rounding policy</source>
<translation>HiDPI </translation>
</message>
</context>
<context>
<name>ShortcutEdit</name>
<message>
<location filename="../shortcutedit.cpp" line="111"/>
<source>No shortcuts</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShortcutEditor</name>
<message>
<location filename="../shortcutedit.cpp" line="77"/>
<source>Shortcut #%1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../main.cpp" line="41"/>
<location filename="../main.cpp" line="43"/>
<source>Pineapple Pictures</source>
<translation> </translation>
</message>
<message>
<location filename="../main.cpp" line="45"/>
<location filename="../main.cpp" line="46"/>
<source>List supported image format suffixes, and quit program.</source>
<translation> .</translation>
</message>
<message>
<location filename="../main.cpp" line="50"/>
<source>File list.</source>
<translation> .</translation>
</message>

View File

@ -39,7 +39,7 @@
<translation>Unngå lukking av vinduet ved feiltagelser (f.eks. ved dobbeltklikking av vinduet)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="54"/>
<location filename="../aboutdialog.cpp" line="53"/>
<source>Version: %1</source>
<translation>Versjon: %1</translation>
</message>
@ -48,63 +48,63 @@
<translation type="vanished">Opphavsrett © 2020 %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="60"/>
<location filename="../aboutdialog.cpp" line="64"/>
<source>Logo designed by %1</source>
<translation>Logo designet av %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="62"/>
<location filename="../aboutdialog.cpp" line="66"/>
<source>Built with Qt %1 (%2)</source>
<translation>Bygd med Qt %1 (%2)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="63"/>
<location filename="../aboutdialog.cpp" line="67"/>
<source>Source code</source>
<translation>Kildekode</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="73"/>
<location filename="../aboutdialog.cpp" line="77"/>
<source>Contributors</source>
<translation>Bidragsytere</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="75"/>
<location filename="../aboutdialog.cpp" line="79"/>
<source>List of contributors on GitHub</source>
<translation>Liste over bidragsytere GitHub</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="76"/>
<location filename="../aboutdialog.cpp" line="80"/>
<source>Thanks to all people who contributed to this project.</source>
<translation>Takk til alle som har bidratt til prosjektet.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="80"/>
<location filename="../aboutdialog.cpp" line="84"/>
<source>Translators</source>
<translation>Oversettere</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="81"/>
<location filename="../aboutdialog.cpp" line="85"/>
<source>I would like to thank the following people who volunteered to translate this application.</source>
<translation>Takk til følgende dugnadsoversettere.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="125"/>
<location filename="../aboutdialog.cpp" line="129"/>
<source>%1 is built on the following free software libraries:</source>
<comment>Free as in freedom</comment>
<translation type="unfinished">%1 er bygd med følgende friprog-bibliotek:</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="149"/>
<location filename="../aboutdialog.cpp" line="153"/>
<source>&amp;Special Thanks</source>
<translation>&amp;Spesiell takk til</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="151"/>
<location filename="../aboutdialog.cpp" line="155"/>
<source>&amp;Third-party Libraries</source>
<translation>&amp;Tredjepartslisenser</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="87"/>
<location filename="../aboutdialog.cpp" line="91"/>
<source>Your Rights</source>
<translation>Dine rettigheter</translation>
</message>
@ -114,63 +114,63 @@
<translation>Unngå å tilbakestille tilstanden for zoom/rotasjon/speilvending som ble brukt bildevisningen, når det skiftes mellom bilder.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="57"/>
<location filename="../aboutdialog.cpp" line="61"/>
<source>Copyright (c) %1 %2</source>
<comment>%1 is year, %2 is the name of copyright holder(s)</comment>
<translation type="unfinished">Opphavsrett © %1 %2</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="89"/>
<location filename="../aboutdialog.cpp" line="93"/>
<source>%1 is released under the MIT License.</source>
<translation>%1 er MIT-lisensiert.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="90"/>
<location filename="../aboutdialog.cpp" line="94"/>
<source>This license grants people a number of freedoms:</source>
<translation>Lisensen gir den en rekke friheter:</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="91"/>
<location filename="../aboutdialog.cpp" line="95"/>
<source>You are free to use %1, for any purpose</source>
<translation>Du kan bruke %1 som du vil</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="92"/>
<location filename="../aboutdialog.cpp" line="96"/>
<source>You are free to distribute %1</source>
<translation>Du kan dele %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="93"/>
<location filename="../aboutdialog.cpp" line="97"/>
<source>You can study how %1 works and change it</source>
<translation>Du kan se kildekoden til %1 og endre den</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="94"/>
<location filename="../aboutdialog.cpp" line="98"/>
<source>You can distribute changed versions of %1</source>
<translation>Du kan distribuere endrede versjoner av %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="96"/>
<location filename="../aboutdialog.cpp" line="100"/>
<source>The MIT license guarantees you this freedom. Nobody is ever permitted to take it away.</source>
<translation>MIT-lisensen garanterer deg disse frihetene.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="124"/>
<location filename="../aboutdialog.cpp" line="128"/>
<source>Third-party Libraries used by %1</source>
<translation>Tredjepartsbibliotek brukt av %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="147"/>
<location filename="../aboutdialog.cpp" line="151"/>
<source>&amp;Help</source>
<translation>&amp;Hjelp</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="148"/>
<location filename="../aboutdialog.cpp" line="152"/>
<source>&amp;About</source>
<translation>&amp;Om</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="150"/>
<location filename="../aboutdialog.cpp" line="154"/>
<source>&amp;License</source>
<translation>&amp;Lisens</translation>
</message>
@ -178,8 +178,8 @@
<context>
<name>GraphicsScene</name>
<message>
<location filename="../graphicsscene.cpp" line="89"/>
<location filename="../mainwindow.cpp" line="296"/>
<location filename="../mainwindow.cpp" line="265"/>
<location filename="../graphicsscene.cpp" line="100"/>
<source>Drag image here</source>
<translation>Dra bilde hit</translation>
</message>
@ -187,9 +187,8 @@
<context>
<name>GraphicsView</name>
<message>
<location filename="../graphicsview.cpp" line="351"/>
<source>File url list is empty</source>
<translation>Listen over filnettadresser er tom</translation>
<translation type="vanished">Listen over filnettadresser er tom</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="52"/>
@ -197,162 +196,201 @@
<translation>Filen er ikke et gyldig bilde</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="57"/>
<location filename="../graphicsview.cpp" line="62"/>
<location filename="../graphicsview.cpp" line="56"/>
<location filename="../graphicsview.cpp" line="60"/>
<source>Image data is invalid or currently unsupported</source>
<translation>Ugyldig bildedata, eller for tiden ustøttet</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="359"/>
<source>Image data is invalid</source>
<translation>Ugyldig bildedata</translation>
<translation type="vanished">Ugyldig bildedata</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="366"/>
<source>Not supported mimedata: %1</source>
<translation>Ustøttet MIME-data: %1</translation>
<translation type="vanished">Ustøttet MIME-data: %1</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="191"/>
<location filename="../mainwindow.cpp" line="176"/>
<location filename="../mainwindow.cpp" line="532"/>
<source>File url list is empty</source>
<translation>Listen over filnettadresser er ugyldig</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="448"/>
<location filename="../mainwindow.cpp" line="430"/>
<source>&amp;Copy</source>
<translation>&amp;Kopier</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="737"/>
<location filename="../mainwindow.cpp" line="540"/>
<source>Image data is invalid</source>
<translation>Ugyldig bildedata</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="547"/>
<source>Not supported mimedata: %1</source>
<translation>Ustøttet MIME-data: %1</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="743"/>
<source>Image From Clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="761"/>
<source>Are you sure you want to move &quot;%1&quot; to recycle bin?</source>
<translation>Er du sikker at du vil flytte &quot;%1&quot; til papirkurven?</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="742"/>
<location filename="../mainwindow.cpp" line="766"/>
<source>Move to trash failed, it might caused by file permission issue, file system limitation, or platform limitation.</source>
<translation>Flytt til papirkurven mislyktes, det kan skyldes filtillatelsesproblem, filsystembegrensning eller plattformbegrensning.</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<location filename="../actionmanager.cpp" line="114"/>
<source>Copy P&amp;ixmap</source>
<translation type="unfinished">Kopier p&amp;ixmap</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="107"/>
<location filename="../actionmanager.cpp" line="115"/>
<source>Copy &amp;File Path</source>
<translation>Kopier &amp;filbane</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="125"/>
<location filename="../actionmanager.cpp" line="133"/>
<source>Properties</source>
<translation>Egenskaper</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="118"/>
<location filename="../aboutdialog.cpp" line="39"/>
<location filename="../actionmanager.cpp" line="110"/>
<source>Stay on top</source>
<translation>Behold øverst</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="119"/>
<location filename="../aboutdialog.cpp" line="42"/>
<location filename="../actionmanager.cpp" line="111"/>
<source>Protected mode</source>
<translation>Beskyttet modus</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="120"/>
<location filename="../aboutdialog.cpp" line="45"/>
<location filename="../actionmanager.cpp" line="112"/>
<source>Keep transformation</source>
<comment>The &apos;transformation&apos; means the flip/rotation status that currently applied to the image view</comment>
<translation>Behold transformasjon</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<location filename="../actionmanager.cpp" line="99"/>
<source>Zoom in</source>
<translation>Førstørr</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="96"/>
<location filename="../actionmanager.cpp" line="100"/>
<source>Zoom out</source>
<translation>Forminsk</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<location filename="../actionmanager.cpp" line="108"/>
<source>Pause/Resume Animation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<source>Animation Go to Next Frame</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="111"/>
<source>Flip &amp;Horizontally</source>
<translation>Speilvend &amp;horisontalt</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="108"/>
<location filename="../actionmanager.cpp" line="112"/>
<source>Fit to view</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="113"/>
<source>Fit to width</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="116"/>
<source>&amp;Paste</source>
<translation>&amp;Lim inn</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<location filename="../actionmanager.cpp" line="101"/>
<source>Toggle Checkerboard</source>
<translation type="unfinished">Skru av/ rutemønster</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="91"/>
<location filename="../actionmanager.cpp" line="95"/>
<source>&amp;Open...</source>
<translation>&amp;Åpne </translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="93"/>
<location filename="../actionmanager.cpp" line="97"/>
<source>Actual size</source>
<translation>Faktisk størrelse</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="94"/>
<location filename="../actionmanager.cpp" line="98"/>
<source>Toggle maximize</source>
<translation>Maksimering av/</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<location filename="../actionmanager.cpp" line="102"/>
<source>Rotate right</source>
<translation>Roter til høyre</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="100"/>
<location filename="../actionmanager.cpp" line="103"/>
<source>Rotate left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="105"/>
<source>Previous image</source>
<translation>Forrige bilde</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<location filename="../actionmanager.cpp" line="106"/>
<source>Next image</source>
<translation>Neste bilde</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<location filename="../mainwindow.cpp" line="736"/>
<location filename="../mainwindow.cpp" line="760"/>
<location filename="../actionmanager.cpp" line="117"/>
<source>Move to Trash</source>
<translation>Flytt til papirkurven</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="113"/>
<location filename="../actionmanager.cpp" line="121"/>
<source>Configure...</source>
<translation>Sett opp </translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="114"/>
<location filename="../actionmanager.cpp" line="122"/>
<source>Help</source>
<translation>Hjelp</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="117"/>
<location filename="../actionmanager.cpp" line="125"/>
<source>Show in File Explorer</source>
<comment>File Explorer is the name of explorer.exe under Windows</comment>
<translation>Vis i filutforsker</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="123"/>
<location filename="../actionmanager.cpp" line="131"/>
<source>Show in directory</source>
<translation type="unfinished">Vis i mappe</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="126"/>
<location filename="../actionmanager.cpp" line="134"/>
<source>Quit</source>
<translation>Avslutt</translation>
</message>
@ -683,104 +721,155 @@
<context>
<name>SettingsDialog</name>
<message>
<location filename="../settingsdialog.cpp" line="22"/>
<location filename="../settingsdialog.cpp" line="29"/>
<source>Settings</source>
<translation>Innstillinger</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="27"/>
<location filename="../settingsdialog.cpp" line="37"/>
<source>Options</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="49"/>
<source>Shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="59"/>
<source>Editing shortcuts for action &quot;%1&quot;:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="68"/>
<source>Failed to set shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<source>Please check if shortcuts are duplicated with existing shortcuts.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="76"/>
<source>Do nothing</source>
<translation>Ikke gjør noe</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="28"/>
<location filename="../settingsdialog.cpp" line="77"/>
<source>Close the window</source>
<translation>Lukk vinduet</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="29"/>
<location filename="../settingsdialog.cpp" line="78"/>
<source>Toggle maximize</source>
<translation>Maksimering av/</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="33"/>
<location filename="../settingsdialog.cpp" line="82"/>
<source>Zoom in and out</source>
<translation>Zoom inn og ut</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="34"/>
<location filename="../settingsdialog.cpp" line="83"/>
<source>View next or previous item</source>
<translation>Vis neste eller forrige element</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="38"/>
<location filename="../settingsdialog.cpp" line="87"/>
<source>Auto size</source>
<translation type="unfinished">Automatisk størrelse</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="39"/>
<location filename="../settingsdialog.cpp" line="88"/>
<source>Maximized</source>
<translation>Maksimert</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="43"/>
<location filename="../settingsdialog.cpp" line="92"/>
<source>Round (Integer scaling)</source>
<comment>This option means round up for .5 and above</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="44"/>
<location filename="../settingsdialog.cpp" line="93"/>
<source>Ceil (Integer scaling)</source>
<comment>This option means always round up</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="45"/>
<location filename="../settingsdialog.cpp" line="94"/>
<source>Floor (Integer scaling)</source>
<comment>This option means always round down</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="46"/>
<location filename="../settingsdialog.cpp" line="95"/>
<source>Follow system (Fractional scaling)</source>
<comment>This option means don&apos;t round</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<location filename="../settingsdialog.cpp" line="118"/>
<source>Stay on top when start-up</source>
<translation>Behold i forgrunnen ved oppstart</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="70"/>
<location filename="../settingsdialog.cpp" line="119"/>
<source>Use light-color checkerboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="120"/>
<source>Double-click behavior</source>
<translation>Dobbeltklikksoppførsel</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="71"/>
<location filename="../settingsdialog.cpp" line="121"/>
<source>Mouse wheel behavior</source>
<translation>Musehjulsoppførsel</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="72"/>
<location filename="../settingsdialog.cpp" line="122"/>
<source>Default window size</source>
<translation>Forvalgt vindusstørrelse</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="73"/>
<location filename="../settingsdialog.cpp" line="123"/>
<source>HiDPI scale factor rounding policy</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShortcutEdit</name>
<message>
<location filename="../shortcutedit.cpp" line="111"/>
<source>No shortcuts</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShortcutEditor</name>
<message>
<location filename="../shortcutedit.cpp" line="77"/>
<source>Shortcut #%1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../main.cpp" line="41"/>
<location filename="../main.cpp" line="43"/>
<source>Pineapple Pictures</source>
<translation>Pineapple Pictures</translation>
</message>
<message>
<location filename="../main.cpp" line="45"/>
<location filename="../main.cpp" line="46"/>
<source>List supported image format suffixes, and quit program.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="50"/>
<source>File list.</source>
<translation>Filliste.</translation>
</message>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="nl">
<TS version="2.1" language="nl_NL">
<context>
<name>AboutDialog</name>
<message>
@ -39,7 +39,7 @@
<translation>Voorkomt per ongeluk sluiten (bijv. door te dubbelklikken op het venster).</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="54"/>
<location filename="../aboutdialog.cpp" line="53"/>
<source>Version: %1</source>
<translation>Versie: %1</translation>
</message>
@ -48,63 +48,63 @@
<translation type="vanished">Copyright (c) 2020 %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="60"/>
<location filename="../aboutdialog.cpp" line="64"/>
<source>Logo designed by %1</source>
<translation>Logo gemaakt door %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="62"/>
<location filename="../aboutdialog.cpp" line="66"/>
<source>Built with Qt %1 (%2)</source>
<translation>Gebouwd met Qt %1 (%2)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="63"/>
<location filename="../aboutdialog.cpp" line="67"/>
<source>Source code</source>
<translation>Broncode</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="73"/>
<location filename="../aboutdialog.cpp" line="77"/>
<source>Contributors</source>
<translation>Bijdragers</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="75"/>
<location filename="../aboutdialog.cpp" line="79"/>
<source>List of contributors on GitHub</source>
<translation>Lijst met bijdragers op GitHub</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="76"/>
<location filename="../aboutdialog.cpp" line="80"/>
<source>Thanks to all people who contributed to this project.</source>
<translation>Met dank aan alle personen die hebben bijgedragen aan dit project.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="80"/>
<location filename="../aboutdialog.cpp" line="84"/>
<source>Translators</source>
<translation>Vertalers</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="81"/>
<location filename="../aboutdialog.cpp" line="85"/>
<source>I would like to thank the following people who volunteered to translate this application.</source>
<translation>Ik wil graag de volgende mensen bedanken die vrijwillig hebben bijgedragen aan vertalingen.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="125"/>
<location filename="../aboutdialog.cpp" line="129"/>
<source>%1 is built on the following free software libraries:</source>
<comment>Free as in freedom</comment>
<translation>%1 is gebouwd met de volgende vrijesoftwarebibliotheken:</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="149"/>
<location filename="../aboutdialog.cpp" line="153"/>
<source>&amp;Special Thanks</source>
<translation>&amp;Met dank aan</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="151"/>
<location filename="../aboutdialog.cpp" line="155"/>
<source>&amp;Third-party Libraries</source>
<translation>Ex&amp;terne bibliotheken</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="87"/>
<location filename="../aboutdialog.cpp" line="91"/>
<source>Your Rights</source>
<translation>Uw rechten</translation>
</message>
@ -114,63 +114,63 @@
<translation>Voorkom dat het zoomniveau, de draaiing en spiegeling worden hersteld na wisselen van afbeelding.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="57"/>
<location filename="../aboutdialog.cpp" line="61"/>
<source>Copyright (c) %1 %2</source>
<comment>%1 is year, %2 is the name of copyright holder(s)</comment>
<translation>Copyright (c) %1 %2</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="89"/>
<location filename="../aboutdialog.cpp" line="93"/>
<source>%1 is released under the MIT License.</source>
<translation>%1 is uitgebracht onder de MIT-licentie.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="90"/>
<location filename="../aboutdialog.cpp" line="94"/>
<source>This license grants people a number of freedoms:</source>
<translation>Deze licentie biedt een hoop vrijheden:</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="91"/>
<location filename="../aboutdialog.cpp" line="95"/>
<source>You are free to use %1, for any purpose</source>
<translation>U mag %1 gratis gebruiken, voor welk doeleinde dan ook</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="92"/>
<location filename="../aboutdialog.cpp" line="96"/>
<source>You are free to distribute %1</source>
<translation>U mag %1 vrij verspreiden</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="93"/>
<location filename="../aboutdialog.cpp" line="97"/>
<source>You can study how %1 works and change it</source>
<translation>U kunt bekijken hoe %1 werkt en aanpassingen doen</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="94"/>
<location filename="../aboutdialog.cpp" line="98"/>
<source>You can distribute changed versions of %1</source>
<translation>U mag aangepaste versie van %1 vrij verspreiden</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="96"/>
<location filename="../aboutdialog.cpp" line="100"/>
<source>The MIT license guarantees you this freedom. Nobody is ever permitted to take it away.</source>
<translation>De MIT-licentie garandeert u deze vrijheid, en niemand mag deze vrijheid wegnemen.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="124"/>
<location filename="../aboutdialog.cpp" line="128"/>
<source>Third-party Libraries used by %1</source>
<translation>Door %1 gebruikte externe bibliotheken</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="147"/>
<location filename="../aboutdialog.cpp" line="151"/>
<source>&amp;Help</source>
<translation>&amp;Hulp</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="148"/>
<location filename="../aboutdialog.cpp" line="152"/>
<source>&amp;About</source>
<translation>&amp;Over</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="150"/>
<location filename="../aboutdialog.cpp" line="154"/>
<source>&amp;License</source>
<translation>&amp;Licentie</translation>
</message>
@ -178,8 +178,8 @@
<context>
<name>GraphicsScene</name>
<message>
<location filename="../graphicsscene.cpp" line="89"/>
<location filename="../mainwindow.cpp" line="296"/>
<location filename="../mainwindow.cpp" line="265"/>
<location filename="../graphicsscene.cpp" line="100"/>
<source>Drag image here</source>
<translation>Sleep een afbeelding hierheen</translation>
</message>
@ -187,9 +187,8 @@
<context>
<name>GraphicsView</name>
<message>
<location filename="../graphicsview.cpp" line="351"/>
<source>File url list is empty</source>
<translation>De bestandspadlijst is leeg</translation>
<translation type="vanished">De bestandspadlijst is leeg</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="52"/>
@ -197,162 +196,201 @@
<translation>Het bestand is geen afbeelding</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="57"/>
<location filename="../graphicsview.cpp" line="62"/>
<location filename="../graphicsview.cpp" line="56"/>
<location filename="../graphicsview.cpp" line="60"/>
<source>Image data is invalid or currently unsupported</source>
<translation>De afbeeldingsgegevens zijn beschadigd of worden niet ondersteund</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="359"/>
<source>Image data is invalid</source>
<translation>Beschadigde afbeeldingsgegevens</translation>
<translation type="vanished">Beschadigde afbeeldingsgegevens</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="366"/>
<source>Not supported mimedata: %1</source>
<translation>Niet-ondersteunde mime-gegevens: %1</translation>
<translation type="vanished">Niet-ondersteunde mime-gegevens: %1</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="191"/>
<location filename="../mainwindow.cpp" line="176"/>
<location filename="../mainwindow.cpp" line="532"/>
<source>File url list is empty</source>
<translation>De bestandspadlijst is leeg</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="448"/>
<location filename="../mainwindow.cpp" line="430"/>
<source>&amp;Copy</source>
<translation>&amp;Kopiëren</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="737"/>
<location filename="../mainwindow.cpp" line="540"/>
<source>Image data is invalid</source>
<translation>Beschadigde afbeeldingsgegevens</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="547"/>
<source>Not supported mimedata: %1</source>
<translation>Niet-ondersteunde mime-gegevens: %1</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="743"/>
<source>Image From Clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="761"/>
<source>Are you sure you want to move &quot;%1&quot; to recycle bin?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="742"/>
<location filename="../mainwindow.cpp" line="766"/>
<source>Move to trash failed, it might caused by file permission issue, file system limitation, or platform limitation.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<location filename="../actionmanager.cpp" line="114"/>
<source>Copy P&amp;ixmap</source>
<translation>P&amp;ixmap kopiëren</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="107"/>
<location filename="../actionmanager.cpp" line="115"/>
<source>Copy &amp;File Path</source>
<translation>&amp;Bestandspad kopiëren</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="125"/>
<location filename="../actionmanager.cpp" line="133"/>
<source>Properties</source>
<translation>Eigenschappen</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="118"/>
<location filename="../aboutdialog.cpp" line="39"/>
<location filename="../actionmanager.cpp" line="110"/>
<source>Stay on top</source>
<translation>Altijd bovenop</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="119"/>
<location filename="../aboutdialog.cpp" line="42"/>
<location filename="../actionmanager.cpp" line="111"/>
<source>Protected mode</source>
<translation>Beschermde modus</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="120"/>
<location filename="../aboutdialog.cpp" line="45"/>
<location filename="../actionmanager.cpp" line="112"/>
<source>Keep transformation</source>
<comment>The &apos;transformation&apos; means the flip/rotation status that currently applied to the image view</comment>
<translation>Bewerkingen onthouden</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<location filename="../actionmanager.cpp" line="99"/>
<source>Zoom in</source>
<translation>Inzoomen</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="96"/>
<location filename="../actionmanager.cpp" line="100"/>
<source>Zoom out</source>
<translation>Uitzoomen</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<location filename="../actionmanager.cpp" line="108"/>
<source>Pause/Resume Animation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<source>Animation Go to Next Frame</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="111"/>
<source>Flip &amp;Horizontally</source>
<translation>&amp;Horizontaal spiegelen</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="108"/>
<source>&amp;Paste</source>
<translation>&amp;Plakken</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<source>Toggle Checkerboard</source>
<translation>Schaakbordpatroon aan/uit</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="91"/>
<source>&amp;Open...</source>
<translation>&amp;Openen</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="93"/>
<source>Actual size</source>
<translation>Ware grootte</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="94"/>
<source>Toggle maximize</source>
<translation>Maximaliseren aan/uit</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<source>Rotate right</source>
<translation>Naar rechts draaien</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="100"/>
<source>Previous image</source>
<translation>Vorige afbeelding</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<source>Next image</source>
<translation>Volgende afbeelding</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<location filename="../mainwindow.cpp" line="736"/>
<source>Move to Trash</source>
<location filename="../actionmanager.cpp" line="112"/>
<source>Fit to view</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="113"/>
<source>Fit to width</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="116"/>
<source>&amp;Paste</source>
<translation>&amp;Plakken</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<source>Toggle Checkerboard</source>
<translation>Schaakbordpatroon aan/uit</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<source>&amp;Open...</source>
<translation>&amp;Openen</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<source>Actual size</source>
<translation>Ware grootte</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<source>Toggle maximize</source>
<translation>Maximaliseren aan/uit</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="102"/>
<source>Rotate right</source>
<translation>Naar rechts draaien</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<source>Rotate left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="105"/>
<source>Previous image</source>
<translation>Vorige afbeelding</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<source>Next image</source>
<translation>Volgende afbeelding</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="760"/>
<location filename="../actionmanager.cpp" line="117"/>
<source>Move to Trash</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="121"/>
<source>Configure...</source>
<translation>Instellen...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="114"/>
<location filename="../actionmanager.cpp" line="122"/>
<source>Help</source>
<translation>Hulp</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="117"/>
<location filename="../actionmanager.cpp" line="125"/>
<source>Show in File Explorer</source>
<comment>File Explorer is the name of explorer.exe under Windows</comment>
<translation>Tonen in bestandsbeheer</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="123"/>
<location filename="../actionmanager.cpp" line="131"/>
<source>Show in directory</source>
<translation>Tonen in map</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="126"/>
<location filename="../actionmanager.cpp" line="134"/>
<source>Quit</source>
<translation>Afsluiten</translation>
</message>
@ -683,104 +721,155 @@
<context>
<name>SettingsDialog</name>
<message>
<location filename="../settingsdialog.cpp" line="22"/>
<location filename="../settingsdialog.cpp" line="29"/>
<source>Settings</source>
<translation>Instellingen</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="27"/>
<location filename="../settingsdialog.cpp" line="37"/>
<source>Options</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="49"/>
<source>Shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="59"/>
<source>Editing shortcuts for action &quot;%1&quot;:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="68"/>
<source>Failed to set shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<source>Please check if shortcuts are duplicated with existing shortcuts.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="76"/>
<source>Do nothing</source>
<translation>Niets doen</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="28"/>
<location filename="../settingsdialog.cpp" line="77"/>
<source>Close the window</source>
<translation>Venster sluiten</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="29"/>
<location filename="../settingsdialog.cpp" line="78"/>
<source>Toggle maximize</source>
<translation>Maximaliseren/Demaximaliseren</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="33"/>
<location filename="../settingsdialog.cpp" line="82"/>
<source>Zoom in and out</source>
<translation>In-/Uitzoomen</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="34"/>
<location filename="../settingsdialog.cpp" line="83"/>
<source>View next or previous item</source>
<translation>Ga naar volgende of vorige item</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="38"/>
<location filename="../settingsdialog.cpp" line="87"/>
<source>Auto size</source>
<translation>Automatische grootte</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="39"/>
<location filename="../settingsdialog.cpp" line="88"/>
<source>Maximized</source>
<translation>Gemaximaliseerd</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="43"/>
<location filename="../settingsdialog.cpp" line="92"/>
<source>Round (Integer scaling)</source>
<comment>This option means round up for .5 and above</comment>
<translation>Rond (geheel getal)</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="44"/>
<location filename="../settingsdialog.cpp" line="93"/>
<source>Ceil (Integer scaling)</source>
<comment>This option means always round up</comment>
<translation>Keil (geheel getal)</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="45"/>
<location filename="../settingsdialog.cpp" line="94"/>
<source>Floor (Integer scaling)</source>
<comment>This option means always round down</comment>
<translation>Grond (geheel getal)</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="46"/>
<location filename="../settingsdialog.cpp" line="95"/>
<source>Follow system (Fractional scaling)</source>
<comment>This option means don&apos;t round</comment>
<translation>Systeeminstelling (fractionele schaal)</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<location filename="../settingsdialog.cpp" line="118"/>
<source>Stay on top when start-up</source>
<translation>Automatisch altijd bovenop</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="70"/>
<location filename="../settingsdialog.cpp" line="119"/>
<source>Use light-color checkerboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="120"/>
<source>Double-click behavior</source>
<translation>Dubbelklikgedrag</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="71"/>
<location filename="../settingsdialog.cpp" line="121"/>
<source>Mouse wheel behavior</source>
<translation>Scrollwielgedrag</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="72"/>
<location filename="../settingsdialog.cpp" line="122"/>
<source>Default window size</source>
<translation>Standaard vensterafmetingen</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="73"/>
<location filename="../settingsdialog.cpp" line="123"/>
<source>HiDPI scale factor rounding policy</source>
<translation>HiDPI-schaalfactor - afrondbeleid</translation>
</message>
</context>
<context>
<name>ShortcutEdit</name>
<message>
<location filename="../shortcutedit.cpp" line="111"/>
<source>No shortcuts</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShortcutEditor</name>
<message>
<location filename="../shortcutedit.cpp" line="77"/>
<source>Shortcut #%1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../main.cpp" line="41"/>
<location filename="../main.cpp" line="43"/>
<source>Pineapple Pictures</source>
<translation>Pineapple Afbeeldingen</translation>
</message>
<message>
<location filename="../main.cpp" line="45"/>
<location filename="../main.cpp" line="46"/>
<source>List supported image format suffixes, and quit program.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="50"/>
<source>File list.</source>
<translation>Bestandslijst.</translation>
</message>

View File

@ -44,129 +44,129 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="54"/>
<location filename="../aboutdialog.cpp" line="53"/>
<source>Version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="60"/>
<location filename="../aboutdialog.cpp" line="64"/>
<source>Logo designed by %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="62"/>
<location filename="../aboutdialog.cpp" line="66"/>
<source>Built with Qt %1 (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="63"/>
<location filename="../aboutdialog.cpp" line="67"/>
<source>Source code</source>
<translation>سروت دا کوڈ</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="73"/>
<location filename="../aboutdialog.cpp" line="77"/>
<source>Contributors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="75"/>
<location filename="../aboutdialog.cpp" line="79"/>
<source>List of contributors on GitHub</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="76"/>
<location filename="../aboutdialog.cpp" line="80"/>
<source>Thanks to all people who contributed to this project.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="80"/>
<location filename="../aboutdialog.cpp" line="84"/>
<source>Translators</source>
<translation>ترجمے والے</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="81"/>
<location filename="../aboutdialog.cpp" line="85"/>
<source>I would like to thank the following people who volunteered to translate this application.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="125"/>
<location filename="../aboutdialog.cpp" line="129"/>
<source>%1 is built on the following free software libraries:</source>
<comment>Free as in freedom</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="149"/>
<location filename="../aboutdialog.cpp" line="153"/>
<source>&amp;Special Thanks</source>
<translation>شکریئے</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="151"/>
<location filename="../aboutdialog.cpp" line="155"/>
<source>&amp;Third-party Libraries</source>
<translation>تیجی پارٹی سوفٹویر</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="87"/>
<location filename="../aboutdialog.cpp" line="91"/>
<source>Your Rights</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="57"/>
<location filename="../aboutdialog.cpp" line="61"/>
<source>Copyright (c) %1 %2</source>
<comment>%1 is year, %2 is the name of copyright holder(s)</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="89"/>
<location filename="../aboutdialog.cpp" line="93"/>
<source>%1 is released under the MIT License.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="90"/>
<location filename="../aboutdialog.cpp" line="94"/>
<source>This license grants people a number of freedoms:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="91"/>
<location filename="../aboutdialog.cpp" line="95"/>
<source>You are free to use %1, for any purpose</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="92"/>
<location filename="../aboutdialog.cpp" line="96"/>
<source>You are free to distribute %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="93"/>
<location filename="../aboutdialog.cpp" line="97"/>
<source>You can study how %1 works and change it</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="94"/>
<location filename="../aboutdialog.cpp" line="98"/>
<source>You can distribute changed versions of %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="96"/>
<location filename="../aboutdialog.cpp" line="100"/>
<source>The MIT license guarantees you this freedom. Nobody is ever permitted to take it away.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="124"/>
<location filename="../aboutdialog.cpp" line="128"/>
<source>Third-party Libraries used by %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="147"/>
<location filename="../aboutdialog.cpp" line="151"/>
<source>&amp;Help</source>
<translation>مدد</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="148"/>
<location filename="../aboutdialog.cpp" line="152"/>
<source>&amp;About</source>
<translation>بارے</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="150"/>
<location filename="../aboutdialog.cpp" line="154"/>
<source>&amp;License</source>
<translation>لائیسنس</translation>
</message>
@ -174,181 +174,207 @@
<context>
<name>GraphicsScene</name>
<message>
<location filename="../graphicsscene.cpp" line="89"/>
<location filename="../mainwindow.cpp" line="296"/>
<location filename="../mainwindow.cpp" line="265"/>
<location filename="../graphicsscene.cpp" line="100"/>
<source>Drag image here</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>GraphicsView</name>
<message>
<location filename="../graphicsview.cpp" line="351"/>
<source>File url list is empty</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="52"/>
<source>File is not a valid image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="57"/>
<location filename="../graphicsview.cpp" line="62"/>
<location filename="../graphicsview.cpp" line="56"/>
<location filename="../graphicsview.cpp" line="60"/>
<source>Image data is invalid or currently unsupported</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="359"/>
<source>Image data is invalid</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="366"/>
<source>Not supported mimedata: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="191"/>
<location filename="../mainwindow.cpp" line="176"/>
<location filename="../mainwindow.cpp" line="532"/>
<source>File url list is empty</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="448"/>
<location filename="../mainwindow.cpp" line="430"/>
<source>&amp;Copy</source>
<translation>کاپی کرو</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="737"/>
<location filename="../mainwindow.cpp" line="540"/>
<source>Image data is invalid</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="547"/>
<source>Not supported mimedata: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="743"/>
<source>Image From Clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="761"/>
<source>Are you sure you want to move &quot;%1&quot; to recycle bin?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="742"/>
<location filename="../mainwindow.cpp" line="766"/>
<source>Move to trash failed, it might caused by file permission issue, file system limitation, or platform limitation.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<location filename="../actionmanager.cpp" line="114"/>
<source>Copy P&amp;ixmap</source>
<translation>تصویر دا نقشہ کاپی کرو</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="107"/>
<location filename="../actionmanager.cpp" line="115"/>
<source>Copy &amp;File Path</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="125"/>
<location filename="../actionmanager.cpp" line="133"/>
<source>Properties</source>
<translation>وشیشتاواں</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="118"/>
<location filename="../aboutdialog.cpp" line="39"/>
<location filename="../actionmanager.cpp" line="110"/>
<source>Stay on top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="119"/>
<location filename="../aboutdialog.cpp" line="42"/>
<location filename="../actionmanager.cpp" line="111"/>
<source>Protected mode</source>
<translation>سرکھیات سیٹنگ</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="120"/>
<location filename="../aboutdialog.cpp" line="45"/>
<location filename="../actionmanager.cpp" line="112"/>
<source>Keep transformation</source>
<comment>The &apos;transformation&apos; means the flip/rotation status that currently applied to the image view</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<location filename="../actionmanager.cpp" line="99"/>
<source>Zoom in</source>
<translation>وڈا کرو</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="96"/>
<location filename="../actionmanager.cpp" line="100"/>
<source>Zoom out</source>
<translation>چھوٹا کرو</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<location filename="../actionmanager.cpp" line="108"/>
<source>Pause/Resume Animation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<source>Animation Go to Next Frame</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="111"/>
<source>Flip &amp;Horizontally</source>
<translation>لیٹویں اُلٹاؤ</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="108"/>
<source>&amp;Paste</source>
<translation>پیسٹ کرو</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<source>Toggle Checkerboard</source>
<translation>چیکبورڈ چالو بدلو</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="91"/>
<source>&amp;Open...</source>
<translation>کھُلھو</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="93"/>
<source>Actual size</source>
<translation>اصلی اکار</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="94"/>
<source>Toggle maximize</source>
<translation>ودھو ودھ بدلو</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<source>Rotate right</source>
<translation>سجے گھنماؤ</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="100"/>
<source>Previous image</source>
<translation>پچھلی تصویر</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<source>Next image</source>
<translation>اگلی تصویر</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<location filename="../mainwindow.cpp" line="736"/>
<source>Move to Trash</source>
<location filename="../actionmanager.cpp" line="112"/>
<source>Fit to view</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="113"/>
<source>Fit to width</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="116"/>
<source>&amp;Paste</source>
<translation>پیسٹ کرو</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<source>Toggle Checkerboard</source>
<translation>چیکبورڈ چالو بدلو</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<source>&amp;Open...</source>
<translation>کھُلھو</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<source>Actual size</source>
<translation>اصلی اکار</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<source>Toggle maximize</source>
<translation>ودھو ودھ بدلو</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="102"/>
<source>Rotate right</source>
<translation>سجے گھنماؤ</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<source>Rotate left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="105"/>
<source>Previous image</source>
<translation>پچھلی تصویر</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<source>Next image</source>
<translation>اگلی تصویر</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="760"/>
<location filename="../actionmanager.cpp" line="117"/>
<source>Move to Trash</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="121"/>
<source>Configure...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="114"/>
<location filename="../actionmanager.cpp" line="122"/>
<source>Help</source>
<translation>مدد</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="117"/>
<location filename="../actionmanager.cpp" line="125"/>
<source>Show in File Explorer</source>
<comment>File Explorer is the name of explorer.exe under Windows</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="123"/>
<location filename="../actionmanager.cpp" line="131"/>
<source>Show in directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="126"/>
<location filename="../actionmanager.cpp" line="134"/>
<source>Quit</source>
<translation>بند کرو</translation>
</message>
@ -679,104 +705,155 @@
<context>
<name>SettingsDialog</name>
<message>
<location filename="../settingsdialog.cpp" line="22"/>
<location filename="../settingsdialog.cpp" line="29"/>
<source>Settings</source>
<translation>سیٹنگاں</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="27"/>
<location filename="../settingsdialog.cpp" line="37"/>
<source>Options</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="49"/>
<source>Shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="59"/>
<source>Editing shortcuts for action &quot;%1&quot;:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="68"/>
<source>Failed to set shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<source>Please check if shortcuts are duplicated with existing shortcuts.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="76"/>
<source>Do nothing</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="28"/>
<location filename="../settingsdialog.cpp" line="77"/>
<source>Close the window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="29"/>
<location filename="../settingsdialog.cpp" line="78"/>
<source>Toggle maximize</source>
<translation type="unfinished">ودھو ودھ بدلو</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="33"/>
<location filename="../settingsdialog.cpp" line="82"/>
<source>Zoom in and out</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="34"/>
<location filename="../settingsdialog.cpp" line="83"/>
<source>View next or previous item</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="38"/>
<location filename="../settingsdialog.cpp" line="87"/>
<source>Auto size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="39"/>
<location filename="../settingsdialog.cpp" line="88"/>
<source>Maximized</source>
<translation>ودھ توں ودھ</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="43"/>
<location filename="../settingsdialog.cpp" line="92"/>
<source>Round (Integer scaling)</source>
<comment>This option means round up for .5 and above</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="44"/>
<location filename="../settingsdialog.cpp" line="93"/>
<source>Ceil (Integer scaling)</source>
<comment>This option means always round up</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="45"/>
<location filename="../settingsdialog.cpp" line="94"/>
<source>Floor (Integer scaling)</source>
<comment>This option means always round down</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="46"/>
<location filename="../settingsdialog.cpp" line="95"/>
<source>Follow system (Fractional scaling)</source>
<comment>This option means don&apos;t round</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<location filename="../settingsdialog.cpp" line="118"/>
<source>Stay on top when start-up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="70"/>
<location filename="../settingsdialog.cpp" line="119"/>
<source>Use light-color checkerboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="120"/>
<source>Double-click behavior</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="71"/>
<location filename="../settingsdialog.cpp" line="121"/>
<source>Mouse wheel behavior</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="72"/>
<location filename="../settingsdialog.cpp" line="122"/>
<source>Default window size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="73"/>
<location filename="../settingsdialog.cpp" line="123"/>
<source>HiDPI scale factor rounding policy</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShortcutEdit</name>
<message>
<location filename="../shortcutedit.cpp" line="111"/>
<source>No shortcuts</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShortcutEditor</name>
<message>
<location filename="../shortcutedit.cpp" line="77"/>
<source>Shortcut #%1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../main.cpp" line="41"/>
<location filename="../main.cpp" line="43"/>
<source>Pineapple Pictures</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="45"/>
<location filename="../main.cpp" line="46"/>
<source>List supported image format suffixes, and quit program.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="50"/>
<source>File list.</source>
<translation type="unfinished"></translation>
</message>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ru">
<TS version="2.1" language="ru_RU">
<context>
<name>AboutDialog</name>
<message>
@ -39,7 +39,7 @@
<translation>Избегать случайного закрытия окна. (например, двойным щелчком по окну)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="54"/>
<location filename="../aboutdialog.cpp" line="53"/>
<source>Version: %1</source>
<translation>Версия: %1</translation>
</message>
@ -48,63 +48,63 @@
<translation type="vanished">Авторское право (c) 2020 %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="60"/>
<location filename="../aboutdialog.cpp" line="64"/>
<source>Logo designed by %1</source>
<translation>Логотип разработан %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="62"/>
<location filename="../aboutdialog.cpp" line="66"/>
<source>Built with Qt %1 (%2)</source>
<translation>Создано с использованием Qt %1 (%2)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="63"/>
<location filename="../aboutdialog.cpp" line="67"/>
<source>Source code</source>
<translation>Исходный код</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="73"/>
<location filename="../aboutdialog.cpp" line="77"/>
<source>Contributors</source>
<translation>Участники</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="75"/>
<location filename="../aboutdialog.cpp" line="79"/>
<source>List of contributors on GitHub</source>
<translation>Список участников на GitHub</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="76"/>
<location filename="../aboutdialog.cpp" line="80"/>
<source>Thanks to all people who contributed to this project.</source>
<translation>Спасибо всем, кто внес свой вклад в этот проект.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="80"/>
<location filename="../aboutdialog.cpp" line="84"/>
<source>Translators</source>
<translation>Переводчики</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="81"/>
<location filename="../aboutdialog.cpp" line="85"/>
<source>I would like to thank the following people who volunteered to translate this application.</source>
<translation>Я бы хотел поблагодарить следующих людей, которые приняли участие в переводе этого приложения.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="125"/>
<location filename="../aboutdialog.cpp" line="129"/>
<source>%1 is built on the following free software libraries:</source>
<comment>Free as in freedom</comment>
<translation>%1 создан на следующих бесплатных библиотеках программного обеспечения:</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="149"/>
<location filename="../aboutdialog.cpp" line="153"/>
<source>&amp;Special Thanks</source>
<translation>&amp;Особая благодарность</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="151"/>
<location filename="../aboutdialog.cpp" line="155"/>
<source>&amp;Third-party Libraries</source>
<translation>&amp;Сторонние библиотеки</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="87"/>
<location filename="../aboutdialog.cpp" line="91"/>
<source>Your Rights</source>
<translation>Ваши Права</translation>
</message>
@ -114,63 +114,63 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="57"/>
<location filename="../aboutdialog.cpp" line="61"/>
<source>Copyright (c) %1 %2</source>
<comment>%1 is year, %2 is the name of copyright holder(s)</comment>
<translation>Copyright (c) %1 %2</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="89"/>
<location filename="../aboutdialog.cpp" line="93"/>
<source>%1 is released under the MIT License.</source>
<translation>%1 выпущен под лицензией MIT.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="90"/>
<location filename="../aboutdialog.cpp" line="94"/>
<source>This license grants people a number of freedoms:</source>
<translation>Эта лицензия дает людям ряд свобод:</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="91"/>
<location filename="../aboutdialog.cpp" line="95"/>
<source>You are free to use %1, for any purpose</source>
<translation>Вы можете свободно использовать %1 для любых целей</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="92"/>
<location filename="../aboutdialog.cpp" line="96"/>
<source>You are free to distribute %1</source>
<translation>Вы можете свободно распространять %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="93"/>
<location filename="../aboutdialog.cpp" line="97"/>
<source>You can study how %1 works and change it</source>
<translation>Вы можете изучать, как работает %1, и изменять его</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="94"/>
<location filename="../aboutdialog.cpp" line="98"/>
<source>You can distribute changed versions of %1</source>
<translation>Вы можете распространять измененные версии %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="96"/>
<location filename="../aboutdialog.cpp" line="100"/>
<source>The MIT license guarantees you this freedom. Nobody is ever permitted to take it away.</source>
<translation>Лицензия MIT гарантирует вам эту свободу. Никому и никогда не разрешается забирать ее.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="124"/>
<location filename="../aboutdialog.cpp" line="128"/>
<source>Third-party Libraries used by %1</source>
<translation>Сторонние библиотеки, используемые %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="147"/>
<location filename="../aboutdialog.cpp" line="151"/>
<source>&amp;Help</source>
<translation>&amp;Помощь</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="148"/>
<location filename="../aboutdialog.cpp" line="152"/>
<source>&amp;About</source>
<translation>&amp;О программе</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="150"/>
<location filename="../aboutdialog.cpp" line="154"/>
<source>&amp;License</source>
<translation>&amp;Лицензия</translation>
</message>
@ -178,8 +178,8 @@
<context>
<name>GraphicsScene</name>
<message>
<location filename="../graphicsscene.cpp" line="89"/>
<location filename="../mainwindow.cpp" line="296"/>
<location filename="../mainwindow.cpp" line="265"/>
<location filename="../graphicsscene.cpp" line="100"/>
<source>Drag image here</source>
<translation>Перетащите изображение сюда</translation>
</message>
@ -187,9 +187,8 @@
<context>
<name>GraphicsView</name>
<message>
<location filename="../graphicsview.cpp" line="351"/>
<source>File url list is empty</source>
<translation>Список URL-адресов файлов пуст</translation>
<translation type="vanished">Список URL-адресов файлов пуст</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="52"/>
@ -197,162 +196,201 @@
<translation>Файл не является допустимым изображением</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="57"/>
<location filename="../graphicsview.cpp" line="62"/>
<location filename="../graphicsview.cpp" line="56"/>
<location filename="../graphicsview.cpp" line="60"/>
<source>Image data is invalid or currently unsupported</source>
<translation>Параметры изображения недействительны или не поддерживаются в настоящее время</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="359"/>
<source>Image data is invalid</source>
<translation>Параметры изображения недействительны</translation>
<translation type="vanished">Параметры изображения недействительны</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="366"/>
<source>Not supported mimedata: %1</source>
<translation>Неподдерживаемые mimedata: %1</translation>
<translation type="vanished">Неподдерживаемые mimedata: %1</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="191"/>
<location filename="../mainwindow.cpp" line="176"/>
<location filename="../mainwindow.cpp" line="532"/>
<source>File url list is empty</source>
<translation>Список URL-адресов файлов пуст</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="448"/>
<location filename="../mainwindow.cpp" line="430"/>
<source>&amp;Copy</source>
<translation>&amp;Скопировать</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="737"/>
<location filename="../mainwindow.cpp" line="540"/>
<source>Image data is invalid</source>
<translation>Параметры изображения недействительны</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="547"/>
<source>Not supported mimedata: %1</source>
<translation>Неподдерживаемые mimedata: %1</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="743"/>
<source>Image From Clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="761"/>
<source>Are you sure you want to move &quot;%1&quot; to recycle bin?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="742"/>
<location filename="../mainwindow.cpp" line="766"/>
<source>Move to trash failed, it might caused by file permission issue, file system limitation, or platform limitation.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<location filename="../actionmanager.cpp" line="114"/>
<source>Copy P&amp;ixmap</source>
<translation>Скопировать P&amp;ixmap</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="107"/>
<location filename="../actionmanager.cpp" line="115"/>
<source>Copy &amp;File Path</source>
<translation>Скопировать &amp;путь к файлу</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="125"/>
<location filename="../actionmanager.cpp" line="133"/>
<source>Properties</source>
<translation>Свойства</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="118"/>
<location filename="../aboutdialog.cpp" line="39"/>
<location filename="../actionmanager.cpp" line="110"/>
<source>Stay on top</source>
<translation>Поверх всех окон</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="119"/>
<location filename="../aboutdialog.cpp" line="42"/>
<location filename="../actionmanager.cpp" line="111"/>
<source>Protected mode</source>
<translation>Защищенный режим</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="120"/>
<location filename="../aboutdialog.cpp" line="45"/>
<location filename="../actionmanager.cpp" line="112"/>
<source>Keep transformation</source>
<comment>The &apos;transformation&apos; means the flip/rotation status that currently applied to the image view</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<location filename="../actionmanager.cpp" line="99"/>
<source>Zoom in</source>
<translation>Увеличить</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="96"/>
<location filename="../actionmanager.cpp" line="100"/>
<source>Zoom out</source>
<translation>Уменьшить</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<location filename="../actionmanager.cpp" line="108"/>
<source>Pause/Resume Animation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<source>Animation Go to Next Frame</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="111"/>
<source>Flip &amp;Horizontally</source>
<translation>Отразить по &amp;горизонтали</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="108"/>
<source>&amp;Paste</source>
<translation>&amp;Вставить</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<source>Toggle Checkerboard</source>
<translation>Переключить фоновый рисунок</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="91"/>
<source>&amp;Open...</source>
<translation>&amp;Открыть...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="93"/>
<source>Actual size</source>
<translation>Фактический размер</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="94"/>
<source>Toggle maximize</source>
<translation>Переключить окно</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<source>Rotate right</source>
<translation>Повернуть вправо</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="100"/>
<source>Previous image</source>
<translation>Предыдущее изображение</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<source>Next image</source>
<translation>Следующее изображение</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<location filename="../mainwindow.cpp" line="736"/>
<source>Move to Trash</source>
<location filename="../actionmanager.cpp" line="112"/>
<source>Fit to view</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="113"/>
<source>Fit to width</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="116"/>
<source>&amp;Paste</source>
<translation>&amp;Вставить</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<source>Toggle Checkerboard</source>
<translation>Переключить фоновый рисунок</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<source>&amp;Open...</source>
<translation>&amp;Открыть...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<source>Actual size</source>
<translation>Фактический размер</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<source>Toggle maximize</source>
<translation>Переключить окно</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="102"/>
<source>Rotate right</source>
<translation>Повернуть вправо</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<source>Rotate left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="105"/>
<source>Previous image</source>
<translation>Предыдущее изображение</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<source>Next image</source>
<translation>Следующее изображение</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="760"/>
<location filename="../actionmanager.cpp" line="117"/>
<source>Move to Trash</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="121"/>
<source>Configure...</source>
<translation>Параметры...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="114"/>
<location filename="../actionmanager.cpp" line="122"/>
<source>Help</source>
<translation>Помощь</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="117"/>
<location filename="../actionmanager.cpp" line="125"/>
<source>Show in File Explorer</source>
<comment>File Explorer is the name of explorer.exe under Windows</comment>
<translation>Показать в проводнике</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="123"/>
<location filename="../actionmanager.cpp" line="131"/>
<source>Show in directory</source>
<translation>Показать в папке</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="126"/>
<location filename="../actionmanager.cpp" line="134"/>
<source>Quit</source>
<translation>Выход</translation>
</message>
@ -683,104 +721,155 @@
<context>
<name>SettingsDialog</name>
<message>
<location filename="../settingsdialog.cpp" line="22"/>
<location filename="../settingsdialog.cpp" line="29"/>
<source>Settings</source>
<translation>Параметры</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="27"/>
<location filename="../settingsdialog.cpp" line="37"/>
<source>Options</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="49"/>
<source>Shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="59"/>
<source>Editing shortcuts for action &quot;%1&quot;:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="68"/>
<source>Failed to set shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<source>Please check if shortcuts are duplicated with existing shortcuts.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="76"/>
<source>Do nothing</source>
<translation>Ничего не делать</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="28"/>
<location filename="../settingsdialog.cpp" line="77"/>
<source>Close the window</source>
<translation>Закрыть окно</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="29"/>
<location filename="../settingsdialog.cpp" line="78"/>
<source>Toggle maximize</source>
<translation>Переключить окно</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="33"/>
<location filename="../settingsdialog.cpp" line="82"/>
<source>Zoom in and out</source>
<translation>Увеличение и уменьшение масштаба</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="34"/>
<location filename="../settingsdialog.cpp" line="83"/>
<source>View next or previous item</source>
<translation>Следующее или предыдущее изображение</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="38"/>
<location filename="../settingsdialog.cpp" line="87"/>
<source>Auto size</source>
<translation>Авторазмер</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="39"/>
<location filename="../settingsdialog.cpp" line="88"/>
<source>Maximized</source>
<translation>Максимизировать</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="43"/>
<location filename="../settingsdialog.cpp" line="92"/>
<source>Round (Integer scaling)</source>
<comment>This option means round up for .5 and above</comment>
<translation>Round (целочисленное масштабирование)</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="44"/>
<location filename="../settingsdialog.cpp" line="93"/>
<source>Ceil (Integer scaling)</source>
<comment>This option means always round up</comment>
<translation>Ceil (целочисленное масштабирование)</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="45"/>
<location filename="../settingsdialog.cpp" line="94"/>
<source>Floor (Integer scaling)</source>
<comment>This option means always round down</comment>
<translation>Floor (целочисленное масштабирование)</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="46"/>
<location filename="../settingsdialog.cpp" line="95"/>
<source>Follow system (Fractional scaling)</source>
<comment>This option means don&apos;t round</comment>
<translation>Следовать системе (дробное масштабирование)</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<location filename="../settingsdialog.cpp" line="118"/>
<source>Stay on top when start-up</source>
<translation>Поверх всех окон при запуске</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="70"/>
<location filename="../settingsdialog.cpp" line="119"/>
<source>Use light-color checkerboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="120"/>
<source>Double-click behavior</source>
<translation>Действие при двойном щелчке</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="71"/>
<location filename="../settingsdialog.cpp" line="121"/>
<source>Mouse wheel behavior</source>
<translation>Действие колеса мыши</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="72"/>
<location filename="../settingsdialog.cpp" line="122"/>
<source>Default window size</source>
<translation>Размер окна по умолчанию</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="73"/>
<location filename="../settingsdialog.cpp" line="123"/>
<source>HiDPI scale factor rounding policy</source>
<translation>Политика округления коэффициента масштабирования HiDPI</translation>
</message>
</context>
<context>
<name>ShortcutEdit</name>
<message>
<location filename="../shortcutedit.cpp" line="111"/>
<source>No shortcuts</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShortcutEditor</name>
<message>
<location filename="../shortcutedit.cpp" line="77"/>
<source>Shortcut #%1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../main.cpp" line="41"/>
<location filename="../main.cpp" line="43"/>
<source>Pineapple Pictures</source>
<translation>Pineapple Pictures</translation>
</message>
<message>
<location filename="../main.cpp" line="45"/>
<location filename="../main.cpp" line="46"/>
<source>List supported image format suffixes, and quit program.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="50"/>
<source>File list.</source>
<translation>Список файлов.</translation>
</message>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="si">
<TS version="2.1" language="si_LK">
<context>
<name>AboutDialog</name>
<message>
@ -39,7 +39,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="54"/>
<location filename="../aboutdialog.cpp" line="53"/>
<source>Version: %1</source>
<translation>: %1</translation>
</message>
@ -48,63 +48,63 @@
<translation type="vanished"> () 2020 %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="60"/>
<location filename="../aboutdialog.cpp" line="64"/>
<source>Logo designed by %1</source>
<translation> %1 </translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="62"/>
<location filename="../aboutdialog.cpp" line="66"/>
<source>Built with Qt %1 (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="63"/>
<location filename="../aboutdialog.cpp" line="67"/>
<source>Source code</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="73"/>
<location filename="../aboutdialog.cpp" line="77"/>
<source>Contributors</source>
<translation></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="75"/>
<location filename="../aboutdialog.cpp" line="79"/>
<source>List of contributors on GitHub</source>
<translation> </translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="76"/>
<location filename="../aboutdialog.cpp" line="80"/>
<source>Thanks to all people who contributed to this project.</source>
<translation> .</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="80"/>
<location filename="../aboutdialog.cpp" line="84"/>
<source>Translators</source>
<translation></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="81"/>
<location filename="../aboutdialog.cpp" line="85"/>
<source>I would like to thank the following people who volunteered to translate this application.</source>
<translation> .</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="125"/>
<location filename="../aboutdialog.cpp" line="129"/>
<source>%1 is built on the following free software libraries:</source>
<comment>Free as in freedom</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="149"/>
<location filename="../aboutdialog.cpp" line="153"/>
<source>&amp;Special Thanks</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="151"/>
<location filename="../aboutdialog.cpp" line="155"/>
<source>&amp;Third-party Libraries</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="87"/>
<location filename="../aboutdialog.cpp" line="91"/>
<source>Your Rights</source>
<translation> </translation>
</message>
@ -114,63 +114,63 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="57"/>
<location filename="../aboutdialog.cpp" line="61"/>
<source>Copyright (c) %1 %2</source>
<comment>%1 is year, %2 is the name of copyright holder(s)</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="89"/>
<location filename="../aboutdialog.cpp" line="93"/>
<source>%1 is released under the MIT License.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="90"/>
<location filename="../aboutdialog.cpp" line="94"/>
<source>This license grants people a number of freedoms:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="91"/>
<location filename="../aboutdialog.cpp" line="95"/>
<source>You are free to use %1, for any purpose</source>
<translation> %1 </translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="92"/>
<location filename="../aboutdialog.cpp" line="96"/>
<source>You are free to distribute %1</source>
<translation>%1 </translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="93"/>
<location filename="../aboutdialog.cpp" line="97"/>
<source>You can study how %1 works and change it</source>
<translation>%1 </translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="94"/>
<location filename="../aboutdialog.cpp" line="98"/>
<source>You can distribute changed versions of %1</source>
<translation>%1 </translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="96"/>
<location filename="../aboutdialog.cpp" line="100"/>
<source>The MIT license guarantees you this freedom. Nobody is ever permitted to take it away.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="124"/>
<location filename="../aboutdialog.cpp" line="128"/>
<source>Third-party Libraries used by %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="147"/>
<location filename="../aboutdialog.cpp" line="151"/>
<source>&amp;Help</source>
<translation></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="148"/>
<location filename="../aboutdialog.cpp" line="152"/>
<source>&amp;About</source>
<translation></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="150"/>
<location filename="../aboutdialog.cpp" line="154"/>
<source>&amp;License</source>
<translation>&amp;</translation>
</message>
@ -178,8 +178,8 @@
<context>
<name>GraphicsScene</name>
<message>
<location filename="../graphicsscene.cpp" line="89"/>
<location filename="../mainwindow.cpp" line="296"/>
<location filename="../mainwindow.cpp" line="265"/>
<location filename="../graphicsscene.cpp" line="100"/>
<source>Drag image here</source>
<translation type="unfinished"></translation>
</message>
@ -187,9 +187,8 @@
<context>
<name>GraphicsView</name>
<message>
<location filename="../graphicsview.cpp" line="351"/>
<source>File url list is empty</source>
<translation type="unfinished"> ... (url) </translation>
<translation type="obsolete"> ... (url) </translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="52"/>
@ -197,162 +196,197 @@
<translation> </translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="57"/>
<location filename="../graphicsview.cpp" line="62"/>
<location filename="../graphicsview.cpp" line="56"/>
<location filename="../graphicsview.cpp" line="60"/>
<source>Image data is invalid or currently unsupported</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="359"/>
<source>Image data is invalid</source>
<translation> </translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="366"/>
<source>Not supported mimedata: %1</source>
<translation type="unfinished"></translation>
<translation type="vanished"> </translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="191"/>
<location filename="../mainwindow.cpp" line="176"/>
<location filename="../mainwindow.cpp" line="532"/>
<source>File url list is empty</source>
<translation> ... (url) </translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="448"/>
<location filename="../mainwindow.cpp" line="430"/>
<source>&amp;Copy</source>
<translation>&amp;</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="737"/>
<location filename="../mainwindow.cpp" line="540"/>
<source>Image data is invalid</source>
<translation> </translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="547"/>
<source>Not supported mimedata: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="743"/>
<source>Image From Clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="761"/>
<source>Are you sure you want to move &quot;%1&quot; to recycle bin?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="742"/>
<location filename="../mainwindow.cpp" line="766"/>
<source>Move to trash failed, it might caused by file permission issue, file system limitation, or platform limitation.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="118"/>
<location filename="../aboutdialog.cpp" line="39"/>
<location filename="../actionmanager.cpp" line="110"/>
<source>Stay on top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="119"/>
<location filename="../aboutdialog.cpp" line="42"/>
<location filename="../actionmanager.cpp" line="111"/>
<source>Protected mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="120"/>
<location filename="../aboutdialog.cpp" line="45"/>
<location filename="../actionmanager.cpp" line="112"/>
<source>Keep transformation</source>
<comment>The &apos;transformation&apos; means the flip/rotation status that currently applied to the image view</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<location filename="../actionmanager.cpp" line="99"/>
<source>Zoom in</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="96"/>
<location filename="../actionmanager.cpp" line="100"/>
<source>Zoom out</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<source>Flip &amp;Horizontally</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<source>Copy P&amp;ixmap</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="107"/>
<source>Copy &amp;File Path</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="108"/>
<source>&amp;Paste</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<source>Toggle Checkerboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="91"/>
<source>&amp;Open...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="93"/>
<source>Actual size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="94"/>
<source>Toggle maximize</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<source>Rotate right</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="100"/>
<source>Previous image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<source>Next image</source>
<source>Pause/Resume Animation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<location filename="../mainwindow.cpp" line="736"/>
<source>Move to Trash</source>
<source>Animation Go to Next Frame</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="111"/>
<source>Flip &amp;Horizontally</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="112"/>
<source>Fit to view</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="113"/>
<source>Configure...</source>
<source>Fit to width</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="114"/>
<source>Copy P&amp;ixmap</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="115"/>
<source>Copy &amp;File Path</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="116"/>
<source>&amp;Paste</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<source>Toggle Checkerboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<source>&amp;Open...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<source>Actual size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<source>Toggle maximize</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="102"/>
<source>Rotate right</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<source>Rotate left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="105"/>
<source>Previous image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<source>Next image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="760"/>
<location filename="../actionmanager.cpp" line="117"/>
<source>Move to Trash</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="121"/>
<source>Configure...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="122"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="117"/>
<location filename="../actionmanager.cpp" line="125"/>
<source>Show in File Explorer</source>
<comment>File Explorer is the name of explorer.exe under Windows</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="123"/>
<location filename="../actionmanager.cpp" line="131"/>
<source>Show in directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="125"/>
<location filename="../actionmanager.cpp" line="133"/>
<source>Properties</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="126"/>
<location filename="../actionmanager.cpp" line="134"/>
<source>Quit</source>
<translation type="unfinished"></translation>
</message>
@ -683,104 +717,155 @@
<context>
<name>SettingsDialog</name>
<message>
<location filename="../settingsdialog.cpp" line="22"/>
<location filename="../settingsdialog.cpp" line="29"/>
<source>Settings</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="27"/>
<location filename="../settingsdialog.cpp" line="37"/>
<source>Options</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="49"/>
<source>Shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="59"/>
<source>Editing shortcuts for action &quot;%1&quot;:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="68"/>
<source>Failed to set shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<source>Please check if shortcuts are duplicated with existing shortcuts.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="76"/>
<source>Do nothing</source>
<translation> </translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="28"/>
<location filename="../settingsdialog.cpp" line="77"/>
<source>Close the window</source>
<translation> </translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="29"/>
<location filename="../settingsdialog.cpp" line="78"/>
<source>Toggle maximize</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="33"/>
<location filename="../settingsdialog.cpp" line="82"/>
<source>Zoom in and out</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="34"/>
<location filename="../settingsdialog.cpp" line="83"/>
<source>View next or previous item</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="38"/>
<location filename="../settingsdialog.cpp" line="87"/>
<source>Auto size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="39"/>
<location filename="../settingsdialog.cpp" line="88"/>
<source>Maximized</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="43"/>
<location filename="../settingsdialog.cpp" line="92"/>
<source>Round (Integer scaling)</source>
<comment>This option means round up for .5 and above</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="44"/>
<location filename="../settingsdialog.cpp" line="93"/>
<source>Ceil (Integer scaling)</source>
<comment>This option means always round up</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="45"/>
<location filename="../settingsdialog.cpp" line="94"/>
<source>Floor (Integer scaling)</source>
<comment>This option means always round down</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="46"/>
<location filename="../settingsdialog.cpp" line="95"/>
<source>Follow system (Fractional scaling)</source>
<comment>This option means don&apos;t round</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<location filename="../settingsdialog.cpp" line="118"/>
<source>Stay on top when start-up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="70"/>
<location filename="../settingsdialog.cpp" line="119"/>
<source>Use light-color checkerboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="120"/>
<source>Double-click behavior</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="71"/>
<location filename="../settingsdialog.cpp" line="121"/>
<source>Mouse wheel behavior</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="72"/>
<location filename="../settingsdialog.cpp" line="122"/>
<source>Default window size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="73"/>
<location filename="../settingsdialog.cpp" line="123"/>
<source>HiDPI scale factor rounding policy</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShortcutEdit</name>
<message>
<location filename="../shortcutedit.cpp" line="111"/>
<source>No shortcuts</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShortcutEditor</name>
<message>
<location filename="../shortcutedit.cpp" line="77"/>
<source>Shortcut #%1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../main.cpp" line="41"/>
<location filename="../main.cpp" line="43"/>
<source>Pineapple Pictures</source>
<translation> </translation>
</message>
<message>
<location filename="../main.cpp" line="45"/>
<location filename="../main.cpp" line="46"/>
<source>List supported image format suffixes, and quit program.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="50"/>
<source>File list.</source>
<translation> .</translation>
</message>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="tr">
<TS version="2.1" language="tr_TR">
<context>
<name>AboutDialog</name>
<message>
@ -39,7 +39,7 @@
<translation>Pencereyi yanlışlıkla kapatmaktan kaçın. (örn. pencereye çift tıklayarak)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="54"/>
<location filename="../aboutdialog.cpp" line="53"/>
<source>Version: %1</source>
<translation>Sürüm: %1</translation>
</message>
@ -48,63 +48,63 @@
<translation type="vanished">Telif hakkı (c) 2020 %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="60"/>
<location filename="../aboutdialog.cpp" line="64"/>
<source>Logo designed by %1</source>
<translation>Logo tasarımcısı: %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="62"/>
<location filename="../aboutdialog.cpp" line="66"/>
<source>Built with Qt %1 (%2)</source>
<translation>Qt %1 (%2) ile inşa edilmiştir</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="63"/>
<location filename="../aboutdialog.cpp" line="67"/>
<source>Source code</source>
<translation>Kaynak kodu</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="73"/>
<location filename="../aboutdialog.cpp" line="77"/>
<source>Contributors</source>
<translation>Katkıda bulunanlar</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="75"/>
<location filename="../aboutdialog.cpp" line="79"/>
<source>List of contributors on GitHub</source>
<translation>Github üzerindeki katkı sağlayıcıların listesi</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="76"/>
<location filename="../aboutdialog.cpp" line="80"/>
<source>Thanks to all people who contributed to this project.</source>
<translation>Bu projeye katkı sağlayan herkese teşekkürler.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="80"/>
<location filename="../aboutdialog.cpp" line="84"/>
<source>Translators</source>
<translation>Çevirmenler</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="81"/>
<location filename="../aboutdialog.cpp" line="85"/>
<source>I would like to thank the following people who volunteered to translate this application.</source>
<translation>Bu uygulamayı çevirmeye gönüllü olan aşağıdaki kişilere teşekkür etmek istiyorum.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="125"/>
<location filename="../aboutdialog.cpp" line="129"/>
<source>%1 is built on the following free software libraries:</source>
<comment>Free as in freedom</comment>
<translation>%1 aşağıdaki özgür yazılım kitaplıkları üzerinde inşa edilmiştir:</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="149"/>
<location filename="../aboutdialog.cpp" line="153"/>
<source>&amp;Special Thanks</source>
<translation>Özel %Teşekkürler</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="151"/>
<location filename="../aboutdialog.cpp" line="155"/>
<source>&amp;Third-party Libraries</source>
<translation>Üçüncü Par&amp;ti Kitaplıklar</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="87"/>
<location filename="../aboutdialog.cpp" line="91"/>
<source>Your Rights</source>
<translation>Haklarınız</translation>
</message>
@ -114,63 +114,63 @@
<translation>Resimler arasında geçiş yaparken resim görünümüne uygulanan yakınlaştırma/döndürme/çevirme durumu sıfırlanmasın.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="57"/>
<location filename="../aboutdialog.cpp" line="61"/>
<source>Copyright (c) %1 %2</source>
<comment>%1 is year, %2 is the name of copyright holder(s)</comment>
<translation>Telif Hakkı (c) %1 %2</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="89"/>
<location filename="../aboutdialog.cpp" line="93"/>
<source>%1 is released under the MIT License.</source>
<translation>%1, MIT Lisansı altında sunulmuştur.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="90"/>
<location filename="../aboutdialog.cpp" line="94"/>
<source>This license grants people a number of freedoms:</source>
<translation>Bu lisans birkaç özgürlüğü kişilere veriyor:</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="91"/>
<location filename="../aboutdialog.cpp" line="95"/>
<source>You are free to use %1, for any purpose</source>
<translation>%1&apos;i herhangi bir amaç için kullanmakta özgürsünüz</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="92"/>
<location filename="../aboutdialog.cpp" line="96"/>
<source>You are free to distribute %1</source>
<translation>%1&apos;i dağıtmakta özgürsünüz</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="93"/>
<location filename="../aboutdialog.cpp" line="97"/>
<source>You can study how %1 works and change it</source>
<translation>%1&apos;in nasıl çalıştığıyla ilgili çalışabilir ve onu değiştirebilirsiniz</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="94"/>
<location filename="../aboutdialog.cpp" line="98"/>
<source>You can distribute changed versions of %1</source>
<translation>%1&apos;in değiştirilmiş sürümünü dağıtabilirsiniz</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="96"/>
<location filename="../aboutdialog.cpp" line="100"/>
<source>The MIT license guarantees you this freedom. Nobody is ever permitted to take it away.</source>
<translation>MIT lisansı özgürlüğünüzü garanti eder. Hiç kimsenin özgürlüğünüzü sizden almasına bile izin verilmez.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="124"/>
<location filename="../aboutdialog.cpp" line="128"/>
<source>Third-party Libraries used by %1</source>
<translation>%1 tarafından kullanılan Üçüncü Parti Kitaplıklar</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="147"/>
<location filename="../aboutdialog.cpp" line="151"/>
<source>&amp;Help</source>
<translation>&amp;Yardım</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="148"/>
<location filename="../aboutdialog.cpp" line="152"/>
<source>&amp;About</source>
<translation>H&amp;akkında</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="150"/>
<location filename="../aboutdialog.cpp" line="154"/>
<source>&amp;License</source>
<translation>&amp;Lisans</translation>
</message>
@ -178,8 +178,8 @@
<context>
<name>GraphicsScene</name>
<message>
<location filename="../graphicsscene.cpp" line="89"/>
<location filename="../mainwindow.cpp" line="296"/>
<location filename="../mainwindow.cpp" line="265"/>
<location filename="../graphicsscene.cpp" line="100"/>
<source>Drag image here</source>
<translation>Resmi buraya sürükleyin</translation>
</message>
@ -187,9 +187,8 @@
<context>
<name>GraphicsView</name>
<message>
<location filename="../graphicsview.cpp" line="351"/>
<source>File url list is empty</source>
<translation>Dosya URL listesi boş</translation>
<translation type="vanished">Dosya URL listesi boş</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="52"/>
@ -197,162 +196,201 @@
<translation>Dosya, geçerli bir resim değil</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="57"/>
<location filename="../graphicsview.cpp" line="62"/>
<location filename="../graphicsview.cpp" line="56"/>
<location filename="../graphicsview.cpp" line="60"/>
<source>Image data is invalid or currently unsupported</source>
<translation>Resim verisi geçersiz veya şuan desteklenmiyor</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="359"/>
<source>Image data is invalid</source>
<translation>Resim verisi geçersiz</translation>
<translation type="vanished">Resim verisi geçersiz</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="366"/>
<source>Not supported mimedata: %1</source>
<translation>Desteklenmeyen dosya türü verisi: %1</translation>
<translation type="vanished">Desteklenmeyen dosya türü verisi: %1</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="191"/>
<location filename="../mainwindow.cpp" line="176"/>
<location filename="../mainwindow.cpp" line="532"/>
<source>File url list is empty</source>
<translation>Dosya URL listesi boş</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="448"/>
<location filename="../mainwindow.cpp" line="430"/>
<source>&amp;Copy</source>
<translation>&amp;Kopyala</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="737"/>
<location filename="../mainwindow.cpp" line="540"/>
<source>Image data is invalid</source>
<translation>Resim verisi geçersiz</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="547"/>
<source>Not supported mimedata: %1</source>
<translation>Desteklenmeyen dosya türü verisi: %1</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="743"/>
<source>Image From Clipboard</source>
<translation>Panodaki Resim</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="761"/>
<source>Are you sure you want to move &quot;%1&quot; to recycle bin?</source>
<translation>&quot;%1&quot; ögesini geri dönüşüm kutusuna taşımak istediğinizden emin misiniz?</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="742"/>
<location filename="../mainwindow.cpp" line="766"/>
<source>Move to trash failed, it might caused by file permission issue, file system limitation, or platform limitation.</source>
<translation>Çöp kutusuna taşıma başarısız oldu, dosya izin sorunu, dosya sistemi sınırlaması veya platform sınırlamasından kaynaklanıyor olabilir.</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<location filename="../actionmanager.cpp" line="114"/>
<source>Copy P&amp;ixmap</source>
<translation>P&amp;ixmap&apos;i Kopyala</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="107"/>
<location filename="../actionmanager.cpp" line="115"/>
<source>Copy &amp;File Path</source>
<translation>&amp;Dosya Yolunu Kopyala</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="125"/>
<location filename="../actionmanager.cpp" line="133"/>
<source>Properties</source>
<translation>Özellikler</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="118"/>
<location filename="../aboutdialog.cpp" line="39"/>
<location filename="../actionmanager.cpp" line="110"/>
<source>Stay on top</source>
<translation>Üstte tut</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="119"/>
<location filename="../aboutdialog.cpp" line="42"/>
<location filename="../actionmanager.cpp" line="111"/>
<source>Protected mode</source>
<translation>Korumalı kip</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="120"/>
<location filename="../aboutdialog.cpp" line="45"/>
<location filename="../actionmanager.cpp" line="112"/>
<source>Keep transformation</source>
<comment>The &apos;transformation&apos; means the flip/rotation status that currently applied to the image view</comment>
<translation>Dönüşümü koru</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<location filename="../actionmanager.cpp" line="99"/>
<source>Zoom in</source>
<translation>Yaklaştır</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="96"/>
<location filename="../actionmanager.cpp" line="100"/>
<source>Zoom out</source>
<translation>Uzaklaştır</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<location filename="../actionmanager.cpp" line="108"/>
<source>Pause/Resume Animation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<source>Animation Go to Next Frame</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="111"/>
<source>Flip &amp;Horizontally</source>
<translation>&amp;Yatay Çevir</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="108"/>
<location filename="../actionmanager.cpp" line="112"/>
<source>Fit to view</source>
<translation>Görünüme sığdır</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="113"/>
<source>Fit to width</source>
<translation>Genişliğe sığdır</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="116"/>
<source>&amp;Paste</source>
<translation>Ya&amp;pıştır</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<location filename="../actionmanager.cpp" line="101"/>
<source>Toggle Checkerboard</source>
<translation>Damalı Ekrana Geç</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="91"/>
<location filename="../actionmanager.cpp" line="95"/>
<source>&amp;Open...</source>
<translation>&amp;...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="93"/>
<location filename="../actionmanager.cpp" line="97"/>
<source>Actual size</source>
<translation>Gerçek boyut</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="94"/>
<location filename="../actionmanager.cpp" line="98"/>
<source>Toggle maximize</source>
<translation>Tam boyuta geç</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<location filename="../actionmanager.cpp" line="102"/>
<source>Rotate right</source>
<translation>Sağa döndür</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="100"/>
<location filename="../actionmanager.cpp" line="103"/>
<source>Rotate left</source>
<translation>Sola döndür</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="105"/>
<source>Previous image</source>
<translation>Önceki resim</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<location filename="../actionmanager.cpp" line="106"/>
<source>Next image</source>
<translation>Sonraki resim</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<location filename="../mainwindow.cpp" line="736"/>
<location filename="../mainwindow.cpp" line="760"/>
<location filename="../actionmanager.cpp" line="117"/>
<source>Move to Trash</source>
<translation>Çöp Kutusuna Taşı</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="113"/>
<location filename="../actionmanager.cpp" line="121"/>
<source>Configure...</source>
<translation>Yapılandır...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="114"/>
<location filename="../actionmanager.cpp" line="122"/>
<source>Help</source>
<translation>Yardım</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="117"/>
<location filename="../actionmanager.cpp" line="125"/>
<source>Show in File Explorer</source>
<comment>File Explorer is the name of explorer.exe under Windows</comment>
<translation>Dosya Gezgini&apos;nde Göster</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="123"/>
<location filename="../actionmanager.cpp" line="131"/>
<source>Show in directory</source>
<translation>Dizinde göster</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="126"/>
<location filename="../actionmanager.cpp" line="134"/>
<source>Quit</source>
<translation>Çıkış</translation>
</message>
@ -683,104 +721,155 @@
<context>
<name>SettingsDialog</name>
<message>
<location filename="../settingsdialog.cpp" line="22"/>
<location filename="../settingsdialog.cpp" line="29"/>
<source>Settings</source>
<translation>Ayarlar</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="27"/>
<location filename="../settingsdialog.cpp" line="37"/>
<source>Options</source>
<translation>Seçenekler</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="49"/>
<source>Shortcuts</source>
<translation>Kısayollar</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="59"/>
<source>Editing shortcuts for action &quot;%1&quot;:</source>
<translation>&quot;%1&quot; için kısayol düzenleniyor:</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="68"/>
<source>Failed to set shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<source>Please check if shortcuts are duplicated with existing shortcuts.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="76"/>
<source>Do nothing</source>
<translation>Hiçbir şey yapma</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="28"/>
<location filename="../settingsdialog.cpp" line="77"/>
<source>Close the window</source>
<translation>Pencereyi kapat</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="29"/>
<location filename="../settingsdialog.cpp" line="78"/>
<source>Toggle maximize</source>
<translation>Tam boyuta geç</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="33"/>
<location filename="../settingsdialog.cpp" line="82"/>
<source>Zoom in and out</source>
<translation>Yaklaştır ve uzaklaştır</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="34"/>
<location filename="../settingsdialog.cpp" line="83"/>
<source>View next or previous item</source>
<translation>Sonraki veya önceki ögeyi görüntüle</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="38"/>
<location filename="../settingsdialog.cpp" line="87"/>
<source>Auto size</source>
<translation>Otomatik boyut</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="39"/>
<location filename="../settingsdialog.cpp" line="88"/>
<source>Maximized</source>
<translation>Tam boyut</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="43"/>
<location filename="../settingsdialog.cpp" line="92"/>
<source>Round (Integer scaling)</source>
<comment>This option means round up for .5 and above</comment>
<translation>Yuvarlak (Tamsayı ölçekleme)</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="44"/>
<location filename="../settingsdialog.cpp" line="93"/>
<source>Ceil (Integer scaling)</source>
<comment>This option means always round up</comment>
<translation>Tavan (Tamsayı ölçekleme)</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="45"/>
<location filename="../settingsdialog.cpp" line="94"/>
<source>Floor (Integer scaling)</source>
<comment>This option means always round down</comment>
<translation>Kat (Tamsayı ölçekleme)</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="46"/>
<location filename="../settingsdialog.cpp" line="95"/>
<source>Follow system (Fractional scaling)</source>
<comment>This option means don&apos;t round</comment>
<translation>Sistemi takip et (Kesirli ölçekleme)</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<location filename="../settingsdialog.cpp" line="118"/>
<source>Stay on top when start-up</source>
<translation>ılışta pencerelerin üstünde kal</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="70"/>
<location filename="../settingsdialog.cpp" line="119"/>
<source>Use light-color checkerboard</source>
<translation>ık renk dama tahtası kullan</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="120"/>
<source>Double-click behavior</source>
<translation>Çift tıklama davranışı</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="71"/>
<location filename="../settingsdialog.cpp" line="121"/>
<source>Mouse wheel behavior</source>
<translation>Fare tekeri davranışı</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="72"/>
<location filename="../settingsdialog.cpp" line="122"/>
<source>Default window size</source>
<translation>Öntanımlı pencere boyutu</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="73"/>
<location filename="../settingsdialog.cpp" line="123"/>
<source>HiDPI scale factor rounding policy</source>
<translation>HiDPI ölçek katsayısı yuvarlama ilkesi</translation>
</message>
</context>
<context>
<name>ShortcutEdit</name>
<message>
<location filename="../shortcutedit.cpp" line="111"/>
<source>No shortcuts</source>
<translation>Kısayol yok</translation>
</message>
</context>
<context>
<name>ShortcutEditor</name>
<message>
<location filename="../shortcutedit.cpp" line="77"/>
<source>Shortcut #%1</source>
<translation>Kısayol #%1</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../main.cpp" line="41"/>
<location filename="../main.cpp" line="43"/>
<source>Pineapple Pictures</source>
<translation>Ananas Resimler</translation>
</message>
<message>
<location filename="../main.cpp" line="45"/>
<location filename="../main.cpp" line="46"/>
<source>List supported image format suffixes, and quit program.</source>
<translation>Desteklenen resim biçimi son eklerini listele ve programdan çık.</translation>
</message>
<message>
<location filename="../main.cpp" line="50"/>
<source>File list.</source>
<translation>Dosya list.</translation>
</message>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="uk">
<TS version="2.1" language="uk_UA">
<context>
<name>AboutDialog</name>
<message>
@ -44,129 +44,129 @@
<translation>Уникати скидання стану масштабування/обертання/гортання яке було застосовано до перегляду зображення при перемиканні зображень.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="54"/>
<location filename="../aboutdialog.cpp" line="53"/>
<source>Version: %1</source>
<translation>Версія: %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="60"/>
<location filename="../aboutdialog.cpp" line="64"/>
<source>Logo designed by %1</source>
<translation>Логотип розроблено %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="62"/>
<location filename="../aboutdialog.cpp" line="66"/>
<source>Built with Qt %1 (%2)</source>
<translation>Побудований за допомогою Qt %1 (%2)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="63"/>
<location filename="../aboutdialog.cpp" line="67"/>
<source>Source code</source>
<translation>Джерельний код</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="73"/>
<location filename="../aboutdialog.cpp" line="77"/>
<source>Contributors</source>
<translation>Учасники</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="75"/>
<location filename="../aboutdialog.cpp" line="79"/>
<source>List of contributors on GitHub</source>
<translation>Список учасників на GitHub</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="76"/>
<location filename="../aboutdialog.cpp" line="80"/>
<source>Thanks to all people who contributed to this project.</source>
<translation>Дякуємо всім, хто долучився до цього проєкту.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="80"/>
<location filename="../aboutdialog.cpp" line="84"/>
<source>Translators</source>
<translation>Перекладачі</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="81"/>
<location filename="../aboutdialog.cpp" line="85"/>
<source>I would like to thank the following people who volunteered to translate this application.</source>
<translation>Я хотів би подякувати наступним людям, які прийняли участь у перекладі цього додатку.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="125"/>
<location filename="../aboutdialog.cpp" line="129"/>
<source>%1 is built on the following free software libraries:</source>
<comment>Free as in freedom</comment>
<translation>%1 побудовано на наступних вільних бібліотеках:</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="149"/>
<location filename="../aboutdialog.cpp" line="153"/>
<source>&amp;Special Thanks</source>
<translation>&amp;Особлива подяка</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="151"/>
<location filename="../aboutdialog.cpp" line="155"/>
<source>&amp;Third-party Libraries</source>
<translation>&amp;Сторонні бібліотеки</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="87"/>
<location filename="../aboutdialog.cpp" line="91"/>
<source>Your Rights</source>
<translation>Ваші права</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="57"/>
<location filename="../aboutdialog.cpp" line="61"/>
<source>Copyright (c) %1 %2</source>
<comment>%1 is year, %2 is the name of copyright holder(s)</comment>
<translation>Авторське право (c) %1 %2</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="89"/>
<location filename="../aboutdialog.cpp" line="93"/>
<source>%1 is released under the MIT License.</source>
<translation>%1 випускається за ліцензією MIT.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="90"/>
<location filename="../aboutdialog.cpp" line="94"/>
<source>This license grants people a number of freedoms:</source>
<translation>Ця ліцензія надає людям низку свобод:</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="91"/>
<location filename="../aboutdialog.cpp" line="95"/>
<source>You are free to use %1, for any purpose</source>
<translation>Ви можете вільно використовувати %1 для будь-яких цілей</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="92"/>
<location filename="../aboutdialog.cpp" line="96"/>
<source>You are free to distribute %1</source>
<translation>Ви можете вільно розповсюджувати %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="93"/>
<location filename="../aboutdialog.cpp" line="97"/>
<source>You can study how %1 works and change it</source>
<translation>Ви можете вивчити, як працює %1, і змінити його</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="94"/>
<location filename="../aboutdialog.cpp" line="98"/>
<source>You can distribute changed versions of %1</source>
<translation>Ви можете розповсюджувати змінені версії %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="96"/>
<location filename="../aboutdialog.cpp" line="100"/>
<source>The MIT license guarantees you this freedom. Nobody is ever permitted to take it away.</source>
<translation>Ліцензія MIT гарантує вам цю свободу. Ніхто не має права її відбирати.</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="124"/>
<location filename="../aboutdialog.cpp" line="128"/>
<source>Third-party Libraries used by %1</source>
<translation>Сторонні бібліотеки, що використовуються %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="147"/>
<location filename="../aboutdialog.cpp" line="151"/>
<source>&amp;Help</source>
<translation>&amp;Допомога</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="148"/>
<location filename="../aboutdialog.cpp" line="152"/>
<source>&amp;About</source>
<translation>&amp;Про додаток</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="150"/>
<location filename="../aboutdialog.cpp" line="154"/>
<source>&amp;License</source>
<translation>&amp;Ліцензія</translation>
</message>
@ -174,8 +174,8 @@
<context>
<name>GraphicsScene</name>
<message>
<location filename="../graphicsscene.cpp" line="89"/>
<location filename="../mainwindow.cpp" line="296"/>
<location filename="../mainwindow.cpp" line="265"/>
<location filename="../graphicsscene.cpp" line="100"/>
<source>Drag image here</source>
<translation>Перетягніть зображення сюди</translation>
</message>
@ -183,9 +183,8 @@
<context>
<name>GraphicsView</name>
<message>
<location filename="../graphicsview.cpp" line="351"/>
<source>File url list is empty</source>
<translation>Список URL-адрес файлів порожній</translation>
<translation type="vanished">Список URL-адрес файлів порожній</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="52"/>
@ -193,162 +192,201 @@
<translation>Файл не є дійсним зображенням</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="57"/>
<location filename="../graphicsview.cpp" line="62"/>
<location filename="../graphicsview.cpp" line="56"/>
<location filename="../graphicsview.cpp" line="60"/>
<source>Image data is invalid or currently unsupported</source>
<translation>Дані зображення недійсні або наразі не підтримуються</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="359"/>
<source>Image data is invalid</source>
<translation>Дані зображення недійсні</translation>
<translation type="vanished">Дані зображення недійсні</translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="366"/>
<source>Not supported mimedata: %1</source>
<translation>Не підтримується mimedata: %1</translation>
<translation type="vanished">Не підтримується mimedata: %1</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="191"/>
<location filename="../mainwindow.cpp" line="176"/>
<location filename="../mainwindow.cpp" line="532"/>
<source>File url list is empty</source>
<translation>Список URL-адрес файлів порожній</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="448"/>
<location filename="../mainwindow.cpp" line="430"/>
<source>&amp;Copy</source>
<translation>&amp;Скопіювати</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="737"/>
<location filename="../mainwindow.cpp" line="540"/>
<source>Image data is invalid</source>
<translation>Дані зображення недійсні</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="547"/>
<source>Not supported mimedata: %1</source>
<translation>Не підтримується mimedata: %1</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="743"/>
<source>Image From Clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="761"/>
<source>Are you sure you want to move &quot;%1&quot; to recycle bin?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="742"/>
<location filename="../mainwindow.cpp" line="766"/>
<source>Move to trash failed, it might caused by file permission issue, file system limitation, or platform limitation.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<location filename="../actionmanager.cpp" line="114"/>
<source>Copy P&amp;ixmap</source>
<translation>Скопіювати P&amp;ixmap</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="107"/>
<location filename="../actionmanager.cpp" line="115"/>
<source>Copy &amp;File Path</source>
<translation>Скопіювати &amp;шлях до файлу</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="125"/>
<location filename="../actionmanager.cpp" line="133"/>
<source>Properties</source>
<translation>Властивості</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="118"/>
<location filename="../aboutdialog.cpp" line="39"/>
<location filename="../actionmanager.cpp" line="110"/>
<source>Stay on top</source>
<translation>Поверх всіх вікон</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="119"/>
<location filename="../aboutdialog.cpp" line="42"/>
<location filename="../actionmanager.cpp" line="111"/>
<source>Protected mode</source>
<translation>Захищений режим</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="120"/>
<location filename="../aboutdialog.cpp" line="45"/>
<location filename="../actionmanager.cpp" line="112"/>
<source>Keep transformation</source>
<comment>The &apos;transformation&apos; means the flip/rotation status that currently applied to the image view</comment>
<translation>Зберігати трансформацію</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<location filename="../actionmanager.cpp" line="99"/>
<source>Zoom in</source>
<translation>Збільшити</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="96"/>
<location filename="../actionmanager.cpp" line="100"/>
<source>Zoom out</source>
<translation>Зменшити</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<location filename="../actionmanager.cpp" line="108"/>
<source>Pause/Resume Animation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<source>Animation Go to Next Frame</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="111"/>
<source>Flip &amp;Horizontally</source>
<translation>Перевернути по &amp;горизонталі</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="108"/>
<source>&amp;Paste</source>
<translation>&amp;Вставити</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<source>Toggle Checkerboard</source>
<translation>Перемкнути шахову дошку</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="91"/>
<source>&amp;Open...</source>
<translation>&amp;Відкрити...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="93"/>
<source>Actual size</source>
<translation>Фактичний розмір</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="94"/>
<source>Toggle maximize</source>
<translation>Перемкнути на максимум</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<source>Rotate right</source>
<translation>Перегорнути праворуч</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="100"/>
<source>Previous image</source>
<translation>Попереднє зображення</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<source>Next image</source>
<translation>Наступне зображення</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<location filename="../mainwindow.cpp" line="736"/>
<source>Move to Trash</source>
<location filename="../actionmanager.cpp" line="112"/>
<source>Fit to view</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="113"/>
<source>Fit to width</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="116"/>
<source>&amp;Paste</source>
<translation>&amp;Вставити</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<source>Toggle Checkerboard</source>
<translation>Перемкнути шахову дошку</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<source>&amp;Open...</source>
<translation>&amp;Відкрити...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<source>Actual size</source>
<translation>Фактичний розмір</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<source>Toggle maximize</source>
<translation>Перемкнути на максимум</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="102"/>
<source>Rotate right</source>
<translation>Перегорнути праворуч</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<source>Rotate left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="105"/>
<source>Previous image</source>
<translation>Попереднє зображення</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<source>Next image</source>
<translation>Наступне зображення</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="760"/>
<location filename="../actionmanager.cpp" line="117"/>
<source>Move to Trash</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="121"/>
<source>Configure...</source>
<translation>Налаштувати...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="114"/>
<location filename="../actionmanager.cpp" line="122"/>
<source>Help</source>
<translation>Допомога</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="117"/>
<location filename="../actionmanager.cpp" line="125"/>
<source>Show in File Explorer</source>
<comment>File Explorer is the name of explorer.exe under Windows</comment>
<translation>Показати у файловому провіднику</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="123"/>
<location filename="../actionmanager.cpp" line="131"/>
<source>Show in directory</source>
<translation>Показати у теці</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="126"/>
<location filename="../actionmanager.cpp" line="134"/>
<source>Quit</source>
<translation>Вийти</translation>
</message>
@ -679,104 +717,155 @@
<context>
<name>SettingsDialog</name>
<message>
<location filename="../settingsdialog.cpp" line="22"/>
<location filename="../settingsdialog.cpp" line="29"/>
<source>Settings</source>
<translation>Налаштування</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="27"/>
<location filename="../settingsdialog.cpp" line="37"/>
<source>Options</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="49"/>
<source>Shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="59"/>
<source>Editing shortcuts for action &quot;%1&quot;:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="68"/>
<source>Failed to set shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<source>Please check if shortcuts are duplicated with existing shortcuts.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="76"/>
<source>Do nothing</source>
<translation>Нічого не робити</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="28"/>
<location filename="../settingsdialog.cpp" line="77"/>
<source>Close the window</source>
<translation>Закрити вікно</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="29"/>
<location filename="../settingsdialog.cpp" line="78"/>
<source>Toggle maximize</source>
<translation>Перемкнути на максимум</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="33"/>
<location filename="../settingsdialog.cpp" line="82"/>
<source>Zoom in and out</source>
<translation>Збільшення та зменшення</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="34"/>
<location filename="../settingsdialog.cpp" line="83"/>
<source>View next or previous item</source>
<translation>Переглянути наступний або попередній елемент</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="38"/>
<location filename="../settingsdialog.cpp" line="87"/>
<source>Auto size</source>
<translation>Автоматичний розмір</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="39"/>
<location filename="../settingsdialog.cpp" line="88"/>
<source>Maximized</source>
<translation>Максимізувати</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="43"/>
<location filename="../settingsdialog.cpp" line="92"/>
<source>Round (Integer scaling)</source>
<comment>This option means round up for .5 and above</comment>
<translation>Round (цілочисельне масштабування)</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="44"/>
<location filename="../settingsdialog.cpp" line="93"/>
<source>Ceil (Integer scaling)</source>
<comment>This option means always round up</comment>
<translation>Ceil (цілочисельне масштабування)</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="45"/>
<location filename="../settingsdialog.cpp" line="94"/>
<source>Floor (Integer scaling)</source>
<comment>This option means always round down</comment>
<translation>Floor (цілочисельне масштабування)</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="46"/>
<location filename="../settingsdialog.cpp" line="95"/>
<source>Follow system (Fractional scaling)</source>
<comment>This option means don&apos;t round</comment>
<translation>Стежити за системою (дробове масштабування)</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<location filename="../settingsdialog.cpp" line="118"/>
<source>Stay on top when start-up</source>
<translation>Поверх всіх вікон під час запуску</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="70"/>
<location filename="../settingsdialog.cpp" line="119"/>
<source>Use light-color checkerboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="120"/>
<source>Double-click behavior</source>
<translation>Поведінка при подвійному кліку</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="71"/>
<location filename="../settingsdialog.cpp" line="121"/>
<source>Mouse wheel behavior</source>
<translation>Поведінка колеса миші</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="72"/>
<location filename="../settingsdialog.cpp" line="122"/>
<source>Default window size</source>
<translation>Розмір вікна за замовчуванням</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="73"/>
<location filename="../settingsdialog.cpp" line="123"/>
<source>HiDPI scale factor rounding policy</source>
<translation>Політика округлення коефіцієнта HiDPI</translation>
</message>
</context>
<context>
<name>ShortcutEdit</name>
<message>
<location filename="../shortcutedit.cpp" line="111"/>
<source>No shortcuts</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShortcutEditor</name>
<message>
<location filename="../shortcutedit.cpp" line="77"/>
<source>Shortcut #%1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../main.cpp" line="41"/>
<location filename="../main.cpp" line="43"/>
<source>Pineapple Pictures</source>
<translation>Pineapple Pictures</translation>
</message>
<message>
<location filename="../main.cpp" line="45"/>
<location filename="../main.cpp" line="46"/>
<source>List supported image format suffixes, and quit program.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="50"/>
<source>File list.</source>
<translation>Список файлів.</translation>
</message>

View File

@ -39,7 +39,7 @@
<translation></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="54"/>
<location filename="../aboutdialog.cpp" line="53"/>
<source>Version: %1</source>
<translation>: %1</translation>
</message>
@ -48,63 +48,63 @@
<translation type="vanished"> (c) 2020 %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="60"/>
<location filename="../aboutdialog.cpp" line="64"/>
<source>Logo designed by %1</source>
<translation>Logo %1 </translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="62"/>
<location filename="../aboutdialog.cpp" line="66"/>
<source>Built with Qt %1 (%2)</source>
<translation>使 Qt %1 (%2) </translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="63"/>
<location filename="../aboutdialog.cpp" line="67"/>
<source>Source code</source>
<translation></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="73"/>
<location filename="../aboutdialog.cpp" line="77"/>
<source>Contributors</source>
<translation></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="75"/>
<location filename="../aboutdialog.cpp" line="79"/>
<source>List of contributors on GitHub</source>
<translation>GitHub </translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="76"/>
<location filename="../aboutdialog.cpp" line="80"/>
<source>Thanks to all people who contributed to this project.</source>
<translation></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="80"/>
<location filename="../aboutdialog.cpp" line="84"/>
<source>Translators</source>
<translation></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="81"/>
<location filename="../aboutdialog.cpp" line="85"/>
<source>I would like to thank the following people who volunteered to translate this application.</source>
<translation></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="125"/>
<location filename="../aboutdialog.cpp" line="129"/>
<source>%1 is built on the following free software libraries:</source>
<comment>Free as in freedom</comment>
<translation>%1 </translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="149"/>
<location filename="../aboutdialog.cpp" line="153"/>
<source>&amp;Special Thanks</source>
<translation>(&amp;S)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="151"/>
<location filename="../aboutdialog.cpp" line="155"/>
<source>&amp;Third-party Libraries</source>
<translation>(&amp;T)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="87"/>
<location filename="../aboutdialog.cpp" line="91"/>
<source>Your Rights</source>
<translation></translation>
</message>
@ -114,63 +114,63 @@
<translation>//</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="57"/>
<location filename="../aboutdialog.cpp" line="61"/>
<source>Copyright (c) %1 %2</source>
<comment>%1 is year, %2 is the name of copyright holder(s)</comment>
<translation> © %1 %2</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="89"/>
<location filename="../aboutdialog.cpp" line="93"/>
<source>%1 is released under the MIT License.</source>
<translation>%1 MIT </translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="90"/>
<location filename="../aboutdialog.cpp" line="94"/>
<source>This license grants people a number of freedoms:</source>
<translation></translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="91"/>
<location filename="../aboutdialog.cpp" line="95"/>
<source>You are free to use %1, for any purpose</source>
<translation>使 %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="92"/>
<location filename="../aboutdialog.cpp" line="96"/>
<source>You are free to distribute %1</source>
<translation> %1</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="93"/>
<location filename="../aboutdialog.cpp" line="97"/>
<source>You can study how %1 works and change it</source>
<translation> %1 </translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="94"/>
<location filename="../aboutdialog.cpp" line="98"/>
<source>You can distribute changed versions of %1</source>
<translation> %1 </translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="96"/>
<location filename="../aboutdialog.cpp" line="100"/>
<source>The MIT license guarantees you this freedom. Nobody is ever permitted to take it away.</source>
<translation> MIT </translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="124"/>
<location filename="../aboutdialog.cpp" line="128"/>
<source>Third-party Libraries used by %1</source>
<translation>%1 使</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="147"/>
<location filename="../aboutdialog.cpp" line="151"/>
<source>&amp;Help</source>
<translation>(&amp;H)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="148"/>
<location filename="../aboutdialog.cpp" line="152"/>
<source>&amp;About</source>
<translation>(&amp;A)</translation>
</message>
<message>
<location filename="../aboutdialog.cpp" line="150"/>
<location filename="../aboutdialog.cpp" line="154"/>
<source>&amp;License</source>
<translation>(&amp;L)</translation>
</message>
@ -178,8 +178,8 @@
<context>
<name>GraphicsScene</name>
<message>
<location filename="../graphicsscene.cpp" line="89"/>
<location filename="../mainwindow.cpp" line="296"/>
<location filename="../mainwindow.cpp" line="265"/>
<location filename="../graphicsscene.cpp" line="100"/>
<source>Drag image here</source>
<translation></translation>
</message>
@ -187,9 +187,8 @@
<context>
<name>GraphicsView</name>
<message>
<location filename="../graphicsview.cpp" line="351"/>
<source>File url list is empty</source>
<translation> URL </translation>
<translation type="vanished"> URL </translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="52"/>
@ -197,162 +196,201 @@
<translation></translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="57"/>
<location filename="../graphicsview.cpp" line="62"/>
<location filename="../graphicsview.cpp" line="56"/>
<location filename="../graphicsview.cpp" line="60"/>
<source>Image data is invalid or currently unsupported</source>
<translation></translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="359"/>
<source>Image data is invalid</source>
<translation></translation>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../graphicsview.cpp" line="366"/>
<source>Not supported mimedata: %1</source>
<translation> MimeData %1</translation>
<translation type="vanished"> MimeData %1</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="191"/>
<location filename="../mainwindow.cpp" line="176"/>
<location filename="../mainwindow.cpp" line="532"/>
<source>File url list is empty</source>
<translation> URL </translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="448"/>
<location filename="../mainwindow.cpp" line="430"/>
<source>&amp;Copy</source>
<translation>(&amp;C)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="737"/>
<location filename="../mainwindow.cpp" line="540"/>
<source>Image data is invalid</source>
<translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="547"/>
<source>Not supported mimedata: %1</source>
<translation> MimeData %1</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="743"/>
<source>Image From Clipboard</source>
<translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="761"/>
<source>Are you sure you want to move &quot;%1&quot; to recycle bin?</source>
<translation>%1</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="742"/>
<location filename="../mainwindow.cpp" line="766"/>
<source>Move to trash failed, it might caused by file permission issue, file system limitation, or platform limitation.</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="106"/>
<location filename="../actionmanager.cpp" line="114"/>
<source>Copy P&amp;ixmap</source>
<translation>(&amp;I)</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="107"/>
<location filename="../actionmanager.cpp" line="115"/>
<source>Copy &amp;File Path</source>
<translation>(&amp;F)</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="125"/>
<location filename="../actionmanager.cpp" line="133"/>
<source>Properties</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="118"/>
<location filename="../aboutdialog.cpp" line="39"/>
<location filename="../actionmanager.cpp" line="110"/>
<source>Stay on top</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="119"/>
<location filename="../aboutdialog.cpp" line="42"/>
<location filename="../actionmanager.cpp" line="111"/>
<source>Protected mode</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="120"/>
<location filename="../aboutdialog.cpp" line="45"/>
<location filename="../actionmanager.cpp" line="112"/>
<source>Keep transformation</source>
<comment>The &apos;transformation&apos; means the flip/rotation status that currently applied to the image view</comment>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="95"/>
<location filename="../actionmanager.cpp" line="99"/>
<source>Zoom in</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="96"/>
<location filename="../actionmanager.cpp" line="100"/>
<source>Zoom out</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="103"/>
<location filename="../actionmanager.cpp" line="108"/>
<source>Pause/Resume Animation</source>
<translation>/</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<source>Animation Go to Next Frame</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="111"/>
<source>Flip &amp;Horizontally</source>
<translation>(&amp;H)</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="108"/>
<location filename="../actionmanager.cpp" line="112"/>
<source>Fit to view</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="113"/>
<source>Fit to width</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="116"/>
<source>&amp;Paste</source>
<translation>(&amp;P)</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="97"/>
<location filename="../actionmanager.cpp" line="101"/>
<source>Toggle Checkerboard</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="91"/>
<location filename="../actionmanager.cpp" line="95"/>
<source>&amp;Open...</source>
<translation>(&amp;O)...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="93"/>
<location filename="../actionmanager.cpp" line="97"/>
<source>Actual size</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="94"/>
<location filename="../actionmanager.cpp" line="98"/>
<source>Toggle maximize</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="98"/>
<location filename="../actionmanager.cpp" line="102"/>
<source>Rotate right</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="100"/>
<location filename="../actionmanager.cpp" line="103"/>
<source>Rotate left</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="105"/>
<source>Previous image</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="101"/>
<location filename="../actionmanager.cpp" line="106"/>
<source>Next image</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="109"/>
<location filename="../mainwindow.cpp" line="736"/>
<location filename="../mainwindow.cpp" line="760"/>
<location filename="../actionmanager.cpp" line="117"/>
<source>Move to Trash</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="113"/>
<location filename="../actionmanager.cpp" line="121"/>
<source>Configure...</source>
<translation>...</translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="114"/>
<location filename="../actionmanager.cpp" line="122"/>
<source>Help</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="117"/>
<location filename="../actionmanager.cpp" line="125"/>
<source>Show in File Explorer</source>
<comment>File Explorer is the name of explorer.exe under Windows</comment>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="123"/>
<location filename="../actionmanager.cpp" line="131"/>
<source>Show in directory</source>
<translation></translation>
</message>
<message>
<location filename="../actionmanager.cpp" line="126"/>
<location filename="../actionmanager.cpp" line="134"/>
<source>Quit</source>
<translation>退</translation>
</message>
@ -683,104 +721,155 @@
<context>
<name>SettingsDialog</name>
<message>
<location filename="../settingsdialog.cpp" line="22"/>
<location filename="../settingsdialog.cpp" line="29"/>
<source>Settings</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="27"/>
<location filename="../settingsdialog.cpp" line="37"/>
<source>Options</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="49"/>
<source>Shortcuts</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="59"/>
<source>Editing shortcuts for action &quot;%1&quot;:</source>
<translation>%1</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="68"/>
<source>Failed to set shortcuts</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<source>Please check if shortcuts are duplicated with existing shortcuts.</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="76"/>
<source>Do nothing</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="28"/>
<location filename="../settingsdialog.cpp" line="77"/>
<source>Close the window</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="29"/>
<location filename="../settingsdialog.cpp" line="78"/>
<source>Toggle maximize</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="33"/>
<location filename="../settingsdialog.cpp" line="82"/>
<source>Zoom in and out</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="34"/>
<location filename="../settingsdialog.cpp" line="83"/>
<source>View next or previous item</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="38"/>
<location filename="../settingsdialog.cpp" line="87"/>
<source>Auto size</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="39"/>
<location filename="../settingsdialog.cpp" line="88"/>
<source>Maximized</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="43"/>
<location filename="../settingsdialog.cpp" line="92"/>
<source>Round (Integer scaling)</source>
<comment>This option means round up for .5 and above</comment>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="44"/>
<location filename="../settingsdialog.cpp" line="93"/>
<source>Ceil (Integer scaling)</source>
<comment>This option means always round up</comment>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="45"/>
<location filename="../settingsdialog.cpp" line="94"/>
<source>Floor (Integer scaling)</source>
<comment>This option means always round down</comment>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="46"/>
<location filename="../settingsdialog.cpp" line="95"/>
<source>Follow system (Fractional scaling)</source>
<comment>This option means don&apos;t round</comment>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="69"/>
<location filename="../settingsdialog.cpp" line="118"/>
<source>Stay on top when start-up</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="70"/>
<location filename="../settingsdialog.cpp" line="119"/>
<source>Use light-color checkerboard</source>
<translation>使</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="120"/>
<source>Double-click behavior</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="71"/>
<location filename="../settingsdialog.cpp" line="121"/>
<source>Mouse wheel behavior</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="72"/>
<location filename="../settingsdialog.cpp" line="122"/>
<source>Default window size</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="73"/>
<location filename="../settingsdialog.cpp" line="123"/>
<source>HiDPI scale factor rounding policy</source>
<translation>HiDPI </translation>
</message>
</context>
<context>
<name>ShortcutEdit</name>
<message>
<location filename="../shortcutedit.cpp" line="111"/>
<source>No shortcuts</source>
<translation></translation>
</message>
</context>
<context>
<name>ShortcutEditor</name>
<message>
<location filename="../shortcutedit.cpp" line="77"/>
<source>Shortcut #%1</source>
<translation> %1</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../main.cpp" line="41"/>
<location filename="../main.cpp" line="43"/>
<source>Pineapple Pictures</source>
<translation></translation>
</message>
<message>
<location filename="../main.cpp" line="45"/>
<location filename="../main.cpp" line="46"/>
<source>List supported image format suffixes, and quit program.</source>
<translation>退</translation>
</message>
<message>
<location filename="../main.cpp" line="50"/>
<source>File list.</source>
<translation></translation>
</message>

View File

@ -12,7 +12,7 @@ environment:
QTDIR: C:\Qt\6.7\mingw_64
MINGW64: C:\Qt\Tools\mingw1120_64
KF_BRANCH: master
EXIV2_VERSION: "0.28.2"
EXIV2_VERSION: "0.28.3"
EXIV2_CMAKE_OPTIONS: "-DEXIV2_ENABLE_BROTLI=OFF -DEXIV2_ENABLE_INIH=OFF -DEXIV2_BUILD_EXIV2_COMMAND=OFF"
PPIC_CMAKE_OPTIONS: "-DPREFER_QT_5=OFF"
WINDEPLOYQT_ARGS: "--verbose=2 --no-quick-import --no-translations --no-opengl-sw --no-system-d3d-compiler --skip-plugin-types tls,networkinformation"
@ -67,7 +67,7 @@ build_script:
- cd %APPVEYOR_BUILD_FOLDER%
# install AOM for libavif AV1 decoding support...
- cd 3rdparty
#- git clone -b v3.6.0 --depth 1 https://aomedia.googlesource.com/aom
#- git clone -b v3.9.1 --depth 1 https://aomedia.googlesource.com/aom
#- cd aom
#- mkdir build.aom
#- cd build.aom
@ -76,18 +76,18 @@ build_script:
#- cmake --build . --config Release --target install/strip
- mkdir aom
- cd aom
- curl -fsSL -o ppkg-aom.zip https://sourceforge.net/projects/pineapple-package-manager/files/packages/mingw-w64-x86_64-windows/aom-3.6.0-1.zip
- curl -fsSL -o ppkg-aom.zip https://sourceforge.net/projects/pineapple-package-manager/files/packages/mingw-w64-x86_64-windows/aom-3.9.1-2.zip
- ppkg ppkg-aom.zip
- 7z x ppkg-aom.zip LICENSE -y
- cd %APPVEYOR_BUILD_FOLDER%
# install libavif for avif format support of KImageFormats
- cd %LIBAVIF%
- curl -fsSL -o libavif-v0_11_1.zip https://github.com/AOMediaCodec/libavif/archive/v0.11.1.zip
- 7z x libavif-v0_11_1.zip -y
- cd libavif-0.11.1
- curl -fsSL -o libavif-v1_1_1.zip https://github.com/AOMediaCodec/libavif/archive/v1.1.1.zip
- 7z x libavif-v1_1_1.zip -y
- cd libavif-1.1.1
- mkdir build
- cd build
- cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%CMAKE_INSTALL_PREFIX% -DAVIF_CODEC_AOM=ON
- cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%CMAKE_INSTALL_PREFIX% -DAVIF_CODEC_AOM=ON -DAVIF_LOCAL_LIBYUV=ON
- cmake --build . --config Release
- cmake --build . --config Release --target install/strip
- cd %APPVEYOR_BUILD_FOLDER%
@ -104,9 +104,9 @@ build_script:
- cd %APPVEYOR_BUILD_FOLDER%
# build libexpat for libexiv2
- cd %LIBEXPAT%
- curl -fsSL -o R_2_5_0.zip https://github.com/libexpat/libexpat/archive/R_2_5_0.zip
- 7z x R_2_5_0.zip -y
- cd libexpat-R_2_5_0/expat/
- curl -fsSL -o R_2_6_2.zip https://github.com/libexpat/libexpat/archive/R_2_6_2.zip
- 7z x R_2_6_2.zip -y
- cd libexpat-R_2_6_2/expat/
- cmake -G "Ninja" . -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%CMAKE_INSTALL_PREFIX% -DEXPAT_BUILD_EXAMPLES=OFF -DEXPAT_BUILD_TESTS=OFF -DEXPAT_BUILD_TOOLS=OFF
- cmake --build . --target install/strip
- cd %APPVEYOR_BUILD_FOLDER%
@ -151,8 +151,8 @@ build_script:
- copy %APPVEYOR_BUILD_FOLDER%\3rdparty\aom\LICENSE License.aom.txt
- copy %APPVEYOR_BUILD_FOLDER%\3rdparty\karchive\LICENSES\LGPL-2.0-or-later.txt License.KArchive.txt
- copy %APPVEYOR_BUILD_FOLDER%\3rdparty\kimageformats\LICENSES\LGPL-2.1-or-later.txt License.kimageformats.txt
- copy %LIBEXPAT%\libexpat-R_2_5_0\expat\COPYING License.expat.txt
- copy %LIBAVIF%\libavif-0.11.1\LICENSE License.libavif.txt
- copy %LIBEXPAT%\libexpat-R_2_6_2\expat\COPYING License.expat.txt
- copy %LIBAVIF%\libavif-1.1.1\LICENSE License.libavif.txt
- copy %LIBEXIV2%\exiv2-%EXIV2_VERSION%\COPYING License.exiv2.txt
# TODO: Qt, zlib
- cd ..

BIN
assets/icons/app-icon.icns Normal file

Binary file not shown.

116
dist/MacOSXBundleInfo.plist.in vendored Normal file
View File

@ -0,0 +1,116 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
<key>CFBundleGetInfoString</key>
<string>${MACOSX_BUNDLE_INFO_STRING}</string>
<key>CFBundleIconFile</key>
<string>${MACOSX_BUNDLE_ICON_FILE}</string>
<key>CFBundleIdentifier</key>
<string>${MACOSX_BUNDLE_GUI_IDENTIFIER}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleLongVersionString</key>
<string>${MACOSX_BUNDLE_LONG_VERSION_STRING}</string>
<key>CFBundleName</key>
<string>${MACOSX_BUNDLE_BUNDLE_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
<key>CSResourcesFileMapped</key>
<true/>
<key>NSHumanReadableCopyright</key>
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
</dict>
<dict>
<key>CFBundleDocumentTypes</key>
<array>
<!-- JPEG -->
<dict>
<key>CFBundleTypeName</key>
<string>JPEG Image</string>
<key>CFBundleTypeExtensions</key>
<array>
<string>jpg</string>
<string>jpeg</string>
<string>jfif</string>
</array>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>image/jpeg</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<!-- PNG -->
<dict>
<key>CFBundleTypeName</key>
<string>PNG Image</string>
<key>CFBundleTypeExtensions</key>
<array>
<string>png</string>
</array>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>image/png</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<!-- WebP -->
<dict>
<key>CFBundleTypeName</key>
<string>WebP Image</string>
<key>CFBundleTypeExtensions</key>
<array>
<string>webp</string>
</array>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>image/webp</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<!-- GIF -->
<dict>
<key>CFBundleTypeName</key>
<string>GIF Image</string>
<key>CFBundleTypeExtensions</key>
<array>
<string>gif</string>
</array>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>image/gif</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<!-- SVG -->
<dict>
<key>CFBundleTypeName</key>
<string>SVG Image</string>
<key>CFBundleTypeExtensions</key>
<array>
<string>svg</string>
</array>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>image/svg+xml</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
</array>
</dict>
</plist>

View File

@ -74,6 +74,34 @@
</screenshot>
</screenshots>
<releases>
<release type="stable" version="0.8.2.1" date="2024-10-27T00:00:00Z">
<description>
<p>This release fixes the following bug:</p>
<ul>
<li>Cannot load translations caused by a change in 0.8.2</li>
</ul>
</description>
</release>
<release type="stable" version="0.8.2" date="2024-10-26T00:00:00Z">
<description>
<p>This release adds the following feature:</p>
<ul>
<li>New option to allow use light-color checkerboard by default</li>
</ul>
<p>With contributions from:</p>
<p>albanobattistella, mmahhi, gallegonovato</p>
</description>
</release>
<release type="stable" version="0.8.1" date="2024-08-25T00:00:00Z">
<description>
<p>This release adds the following feature:</p>
<ul>
<li>New command line option to list all supported formats</li>
</ul>
<p>With contributions from:</p>
<p>albanobattistella, mmahhi, ovl-1, gallegonovato, Oğuz Ersen</p>
</description>
</release>
<release type="stable" version="0.8.0" date="2024-06-29T00:00:00Z">
<description>
<p>This release adds the following feature:</p>

View File

@ -7,6 +7,7 @@ greaterThan(QT_MAJOR_VERSION, 5): QT += svgwidgets
TARGET = ppic
TEMPLATE = app
DEFINES += PPIC_VERSION_STRING=\\\"x.y.z\\\"
# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
@ -38,7 +39,8 @@ SOURCES += \
app/metadatadialog.cpp \
app/exiv2wrapper.cpp \
app/actionmanager.cpp \
app/playlistmanager.cpp
app/playlistmanager.cpp \
app/shortcutedit.cpp
HEADERS += \
app/aboutdialog.h \
@ -56,7 +58,8 @@ HEADERS += \
app/metadatadialog.h \
app/exiv2wrapper.h \
app/actionmanager.h \
app/playlistmanager.h
app/playlistmanager.h \
app/shortcutedit.h
TRANSLATIONS = \
app/translations/PineapplePictures.ts \