Merge branch 'master' into improve-swap-ui

This commit is contained in:
Adriaan de Groot 2019-01-14 15:57:22 +01:00
commit a51a000681
73 changed files with 4703 additions and 877 deletions

41
CHANGES
View File

@ -3,12 +3,14 @@ contributors are listed. Note that Calamares does not have a historical
changelog -- this log starts with version 3.2.0. The release notes on the
website will have to do for older versions.
# 3.2.3 (unreleased) #
# 3.2.4 (unreleased) #
This release contains contributions from (alphabetically by first name):
- Alf Gaida
- aliveafter1000
- Arnaud Ferraris
- Caio Carvalho
- Collabora LTD
- Kevin Kofler
- Philip Mueller
- Scott Harvey
@ -23,6 +25,10 @@ This release contains contributions from (alphabetically by first name):
Calamares configurations (in particular, distro's can **add**
configuration files and give them priority, instead of **forking**
configuration files).
* The *branding* file now contains settings that control the size
and resize behavior of Calamares. See the branding file for
more documentation. In particular, the setting *windowExpanding*
can be set to *normal*, *fullscreen* or *noexpand*.
## Modules ##
@ -32,10 +38,15 @@ This release contains contributions from (alphabetically by first name):
and Calamares no longer reserves 2GiB of space in calculations for internal
use (this means that it no longer mysteriously drops swap when the disk
size is close to the required installation size).
* The name of the type of default filesystem (e.g. ext4 or btrfs) is now handled
case- and localization-insensitively. This means that *btrfs* is now always
an acceptable spelling.
* The currently-selected disk device is remembered between manual partitioning
and the partitioning-overview pages. (Thanks to Arnaud)
* The *keyboard* module now handles the (bogus) Austrian keymap for
the system console properly.
the system console properly. (Thanks to Kevin)
* The *preservefiles* module now has a mechanism for setting the permissions
(and ownership) of preserved files.
(and ownership) of preserved files. (Thanks to Scott)
* New module *fsresizer* can be used to resize filesystems. It is intended
for use in OEM installs where an image of fixed size is created,
and then sized to the actual SD card the user has used.
@ -45,6 +56,30 @@ This release contains contributions from (alphabetically by first name):
for all operations, not just during install (keep in mind that
these run as three separate shells, though).
# 3.2.3 (2019-01-09) #
This release contains contributions from (alphabetically by first name):
- aliveafter1000
## Core ##
There are no core changes in this release.
## Modules ##
* *partition* Fixed bug where, during detection of existing systems, the
existing system partitions may be mounted and then files deleted.
This is a **limited** version of the patch from aliveafter1000
that will be in 3.2.4, which tries harder to mount filesystems
read-only and unmodifiable.
* *locale* It was possible to set the installer and system language
(e.g. to German) while the global storage value for *locale*
remained set to English. Then no localization packages are installed
(see feature `${LOCALE}` in `packages.conf`). Reported downstream
in Netrunner.
# 3.2.2 (2018-09-04) #
This release contains contributions from (alphabetically by first name):

View File

@ -75,7 +75,7 @@ set( CALAMARES_DESCRIPTION_SUMMARY
set( CALAMARES_VERSION_MAJOR 3 )
set( CALAMARES_VERSION_MINOR 2 )
set( CALAMARES_VERSION_PATCH 3 )
set( CALAMARES_VERSION_PATCH 4 )
set( CALAMARES_VERSION_RC 1 )
@ -103,17 +103,17 @@ set( CALAMARES_VERSION_RC 1 )
# checks for new languages and misspelled ones are done (that is,
# copy these four lines to four backup lines, add "p", and then update
# the original four lines with the current translations).
set( _tx_complete ca zh_TW hr cs_CZ da et fr id it_IT lt pl pt_PT es_MX tr_TR )
set( _tx_good sq de pt_BR zh_CN ja ro es sk )
set( _tx_ok hu ru he nl bg uk ast is ko ar sv el gl en_GB
th fi_FI hi eu nb sr sl sr@latin mr es_PR kn kk be )
set( _tx_bad fr_CH gu lo fa ur uz eo )
set( _tx_complete zh_TW tr_TR sk pt_PT pt_BR pl lt ja id hr gl fr
et de da cs_CZ ca )
set( _tx_good es sq es_MX zh_CN it_IT he en_GB ru ro hi bg hu )
set( _tx_ok uk nl ast ko is ar sv el th fi_FI eu sr nb sl
sr@latin mr es_PR )
set( _tx_bad eo kk kn uz ur mk lo gu fr_CH fa be )
### Required versions
#
# See DEPENDENCIES section below.
set( QT_VERSION 5.7.0 )
set( QT_VERSION 5.10.0 )
set( YAMLCPP_VERSION 0.5.1 )
set( ECM_VERSION 5.18 )
set( PYTHONLIBS_VERSION 3.3 )
@ -152,7 +152,7 @@ set( CMAKE_C_STANDARD_REQUIRED ON )
# location database.
# - DEBUG_FILESYSTEMS does extra logging and checking when looking at
# partition configuration. Lists known KPMCore FS types.
#
#
# The flags listed here are enabled in Debug builds. By default, none
# are **actually** listed, because they're for such specific scenarios.
set( _enable_debug_flags
@ -316,12 +316,14 @@ endif()
#
set( prev_tx ${p_tx_complete} ${p_tx_good} ${p_tx_ok} ${p_tx_bad} )
set( curr_tx ${_tx_complete} ${_tx_good} ${_tx_ok} ${_tx_bad} )
set( tx_errors OFF )
if ( prev_tx )
# Gone in new list
foreach( l ${prev_tx} )
list( FIND curr_tx ${l} p_l )
if( p_l EQUAL -1 )
message(WARNING "Language ${l} was present in previous translations and is now absent.")
set( tx_errors ON )
endif()
endforeach()
@ -330,10 +332,12 @@ if ( prev_tx )
list( FIND prev_tx ${l} p_l )
if( p_l EQUAL -1 )
message(WARNING "Language ${l} is new.")
set( tx_errors ON )
endif()
set( p_l "lang/calamares_${l}.ts" )
if( NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${p_l} )
message(WARNING "Language ${l} has no .ts file yet.")
set( tx_errors ON )
endif()
endforeach()
@ -342,6 +346,9 @@ if ( prev_tx )
endif()
unset( prev_tx )
unset( curr_tx )
if( tx_errors )
message( FATAL_ERROR "Translation warnings, see above." )
endif()
set( CALAMARES_TRANSLATION_LANGUAGES en ${_tx_complete} ${_tx_good} ${_tx_ok} )
list( SORT CALAMARES_TRANSLATION_LANGUAGES )

View File

@ -13,7 +13,10 @@ StartupNotify=true
Categories=Qt;System;
X-AppStream-Ignore=true
Name[ar]=نظام التثبيت
Name[ar]=تثبيت النظام
Icon[ar]=كالامارس
GenericName[ar]=مثبت النظام
Comment[ar]=كالامارس - مثبت النظام
Name[be]=Усталяваць сістэму
Icon[be]=calamares
GenericName[be]=Усталёўшчык сістэмы
@ -51,6 +54,9 @@ Icon[et]=calamares
GenericName[et]=Süsteemipaigaldaja
Comment[et]=Calamares süsteemipaigaldaja
Name[eu]=Sistema instalatu
Icon[eu]=calamares
GenericName[eu]=Sistema instalatzailea
Comment[eu]=Calamares - sistema instalatzailea
Name[es_PR]=Instalar el sistema
Name[fr]=Installer le système
Icon[fr]=calamares
@ -104,6 +110,10 @@ Name[it_IT]=Installa il sistema
Icon[it_IT]=calamares
GenericName[it_IT]=Programma d'installazione del sistema
Comment[it_IT]=Calamares Programma d'installazione del sistema
Name[mk]=Инсталирај го системот
Icon[mk]=calamares
GenericName[mk]=Системен Инсталер
Comment[mk]=Calamares - Системен Инсталер
Name[nb]=Installer System
Icon[nb]=calamares
GenericName[nb]=Systeminstallatør

View File

@ -5,7 +5,7 @@
# This file is sourced by travis.sh, and exports the variables
# to the environment.
CMAKE_ARGS="\
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_BUILD_TYPE=Release \
-DWEBVIEW_FORCE_WEBKIT=1 \
-DKDE_INSTALL_USE_QT_SYS_PATHS=ON \
-DWITH_PYTHONQT=OFF"

View File

@ -12,23 +12,26 @@ test -f $SRCDIR/CMakeLists.txt || { echo "! Missing $SRCDIR/CMakeLists.txt" ; ex
cd $BUILDDIR || exit 1
section() {
echo "###"
echo "### cmake $CMAKE_ARGS $SRCDIR"
echo "### $1"
echo "###"
pwd -P
df -h
}
section "cmake $CMAKE_ARGS $SRCDIR"
cmake $CMAKE_ARGS $SRCDIR || { echo "! CMake failed" ; exit 1 ; }
echo -e "###\n### make\n###"
make -j2 || { make -j1 VERBOSE=1 ; echo "! Make failed" ; exit 1 ; }
section "make"
make -j2 || { echo "! Make recheck" ; pwd -P ; df -h ; make -j1 VERBOSE=1 ; echo "! Make failed" ; exit 1 ; }
echo -e "###\n### make install\n###"
section "make install"
install_debugging() {
ls -la $( find "$1" -type f -name '*.so' )
}
echo "# System status"
df -h
echo "# Build results"
install_debugging "$BUILDDIR"
@ -45,10 +48,8 @@ else
result=false
fi
echo "# System status"
df -h
echo "# Install results"
section "Install results"
install_debugging "$DESTDIR"
$result || { echo "! Install failed" ; exit 1 ; } # Result of make install, above

87
ci/txstats.py Normal file
View File

@ -0,0 +1,87 @@
#! /usr/bin/env python
#
# Uses the Transifex API to get a list of enabled languages,
# and outputs CMake settings for inclusion into CMakeLists.txt.
import sys
def get_tx_credentials():
"""
Gets the API token out of the user's .transifexrc (this is supposed
to be secure).
"""
import configparser
import os
txconfig_name = os.path.expanduser("~/.transifexrc")
try:
with open(txconfig_name, "r") as f:
parser = configparser.SafeConfigParser()
parser.readfp(f)
return parser.get("https://www.transifex.com", "password")
except IOError as e:
return None
def output_langs(all_langs, label, filterfunc):
"""
Output (via print) all of the languages in @p all_langs
that satisfy the translation-percentage filter @p filterfunc.
Prints a CMake set() command with the @p label as part
of the variable name.
Performs line-wrapping.
"""
these_langs = [l for s, l in all_langs if filterfunc(s)]
out = " ".join(["set( _tx_%s" % label, " ".join(these_langs), ")"])
width = 68
prefix = ""
while len(out) > width - len(prefix):
chunk = out[:out[:width].rfind(" ")]
print("%s%s" % (prefix, chunk))
out = out[len(chunk)+1:]
prefix = " "
print("%s%s" % (prefix, out))
def get_tx_stats(token):
"""
Does an API request to Transifex with the given API @p token, getting
the translation statistics for the main body of texts. Then prints
out CMake settings to replace the _tx_* variables in CMakeLists.txt
according to standard criteria.
"""
import requests
r = requests.get("https://api.transifex.com/organizations/calamares/projects/calamares/resources/calamares-master/", auth=("api", token))
if r.status_code != 200:
return 1
all_langs = []
j = r.json()
languages = j["stats"]
print("# Total %d languages" % len(languages))
for lang_name in languages:
stats = languages[lang_name]["translated"]["percentage"]
all_langs.append((stats, lang_name))
all_langs.sort(reverse=True)
output_langs(all_langs, "complete", lambda s : s == 1.0)
output_langs(all_langs, "good", lambda s : 1.0 > s >= 0.75)
output_langs(all_langs, "ok", lambda s : 0.75 > s >= 0.05)
output_langs(all_langs, "bad", lambda s : 0.05 > s)
return 0
def main():
cred = get_tx_credentials()
if cred:
return get_tx_stats(cred)
else:
print("! Could not find API token in ~/.transifexrc")
return 1
return 0
if __name__ == "__main__":
sys.exit(main())

View File

@ -18,7 +18,8 @@
#
###
find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Xml )
add_executable(txload txload.cpp)
target_link_libraries(txload Qt5::Xml)
find_package(Qt5 COMPONENTS Xml)
if( Qt5Xml_FOUND )
add_executable(txload txload.cpp)
target_link_libraries(txload Qt5::Xml)
endif()

View File

@ -73,7 +73,7 @@
<message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="44"/>
<source>Modules</source>
<translation>الوحدا</translation>
<translation>الوحدات</translation>
</message>
<message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="57"/>
@ -2834,7 +2834,7 @@ Output:
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="290"/>
<source>%1 support</source>
<translation>1% الدعم</translation>
<translation>%1 الدعم</translation>
</message>
</context>
<context>

View File

@ -2774,7 +2774,7 @@ Output:
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="122"/>
<source>Total Sectors:</source>
<translation type="unfinished"/>
<translation>Общо сектори:</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="142"/>

View File

@ -720,22 +720,22 @@ Saldrá del instalador y se perderán todos los cambios.</translation>
<message>
<location filename="../src/modules/partition/jobs/CreateVolumeGroupJob.cpp" line="38"/>
<source>Create new volume group named %1.</source>
<translation type="unfinished"/>
<translation>Crear un nuevo grupo de volúmenes llamado %1.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/CreateVolumeGroupJob.cpp" line="45"/>
<source>Create new volume group named &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation type="unfinished"/>
<translation>Crear un nuevo grupo de volúmenes llamado &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/CreateVolumeGroupJob.cpp" line="52"/>
<source>Creating new volume group named %1.</source>
<translation type="unfinished"/>
<translation>Creando un nuevo grupo de volúmenes llamado %1.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/CreateVolumeGroupJob.cpp" line="65"/>
<source>The installer failed to create a volume group named &apos;%1&apos;.</source>
<translation type="unfinished"/>
<translation>El instalador falló en crear un grupo de volúmenes llamado &apos;%1&apos;.</translation>
</message>
</context>
<context>
@ -744,17 +744,17 @@ Saldrá del instalador y se perderán todos los cambios.</translation>
<location filename="../src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp" line="34"/>
<location filename="../src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp" line="48"/>
<source>Deactivate volume group named %1.</source>
<translation type="unfinished"/>
<translation>Desactivar grupo de volúmenes llamado %1.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp" line="41"/>
<source>Deactivate volume group named &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation type="unfinished"/>
<translation>Desactivar grupo de volúmenes llamado &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp" line="61"/>
<source>The installer failed to deactivate a volume group named %1.</source>
<translation type="unfinished"/>
<translation>El instalador falló en desactivar el grupo de volúmenes llamado %1.</translation>
</message>
</context>
<context>
@ -823,7 +823,7 @@ Saldrá del instalador y se perderán todos los cambios.</translation>
<message>
<location filename="../src/modules/partition/core/DeviceModel.cpp" line="89"/>
<source>%1 - (%2)</source>
<translation type="unfinished"/>
<translation>%1-(%2)</translation>
</message>
</context>
<context>
@ -1726,27 +1726,27 @@ Saldrá del instalador y se perderán todos los cambios.</translation>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="132"/>
<source>New Volume Group</source>
<translation type="unfinished"/>
<translation>Nuevo grupo de volúmenes </translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="139"/>
<source>Resize Volume Group</source>
<translation type="unfinished"/>
<translation>Cambiar el tamaño del grupo de volúmenes</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="146"/>
<source>Deactivate Volume Group</source>
<translation type="unfinished"/>
<translation>Desactivar grupo de volúmenes</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="153"/>
<source>Remove Volume Group</source>
<translation type="unfinished"/>
<translation>Remover grupo de volúmenes</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="180"/>
<source>I&amp;nstall boot loader on:</source>
<translation type="unfinished"/>
<translation>Instalar gestor de arranque en:</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.cpp" line="217"/>
@ -2034,12 +2034,12 @@ Salida:
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="34"/>
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="48"/>
<source>Remove Volume Group named %1.</source>
<translation type="unfinished"/>
<translation>Remover grupo de volúmenes llamado %1.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="41"/>
<source>Remove Volume Group named &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation type="unfinished"/>
<translation>Remover grupo de volúmenes llamado &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="61"/>
@ -2280,12 +2280,12 @@ Salida:
<location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="37"/>
<location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="55"/>
<source>Resize volume group named %1 from %2 to %3.</source>
<translation type="unfinished"/>
<translation>Cambiar el tamaño del grupo de volúmenes llamado %1 de %2 a %3.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="46"/>
<source>Resize volume group named &lt;strong&gt;%1&lt;/strong&gt; from &lt;strong&gt;%2&lt;/strong&gt; to &lt;strong&gt;%3&lt;/strong&gt;.</source>
<translation type="unfinished"/>
<translation>Cambiar el tamaño del grupo de volúmenes llamado &lt;strong&gt;%1&lt;/strong&gt; de &lt;strong&gt;%2&lt;/strong&gt; a &lt;strong&gt;%3&lt;/strong&gt;.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="70"/>
@ -2747,7 +2747,7 @@ Salida:
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="56"/>
<source>Physical Extent Size:</source>
<translation type="unfinished"/>
<translation>Tamaño de sector físico:</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="66"/>
@ -2780,7 +2780,7 @@ Salida:
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="142"/>
<source>Quantity of LVs:</source>
<translation type="unfinished"/>
<translation>Cantidad de LVs:</translation>
</message>
</context>
<context>

File diff suppressed because it is too large Load Diff

View File

@ -192,17 +192,17 @@
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="179"/>
<source>Calamares Initialization Failed</source>
<translation type="unfinished"/>
<translation>A Calamares előkészítése meghiúsult</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="180"/>
<source>%1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution.</source>
<translation type="unfinished"/>
<translation>A(z) %1 nem telepíthető. A Calamares nem tudta betölteni a konfigurált modulokat. Ez a probléma abból fakad, ahogy a disztribúció a Calamarest használja.</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="185"/>
<source>&lt;br/&gt;The following modules could not be loaded:</source>
<translation type="unfinished"/>
<translation>&lt;br/&gt;A következő modulok nem tölthetőek be:</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="277"/>
@ -509,12 +509,12 @@ Telepítés nem folytatható. &lt;a href=&quot;#details&quot;&gt;Részletek...&l
<message>
<location filename="../src/libcalamares/utils/CommandList.cpp" line="128"/>
<source>The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined.</source>
<translation type="unfinished"/>
<translation>A parancs a gazdakörnyezetben fut, és ismernie kell a gyökér útvonalát, de nincs rootMountPoint megadva.</translation>
</message>
<message>
<location filename="../src/libcalamares/utils/CommandList.cpp" line="139"/>
<source>The command needs to know the user&apos;s name, but no username is defined.</source>
<translation type="unfinished"/>
<translation>A parancsnak tudnia kell a felhasználónevet, de az nincs megadva.</translation>
</message>
</context>
<context>
@ -522,7 +522,7 @@ Telepítés nem folytatható. &lt;a href=&quot;#details&quot;&gt;Részletek...&l
<message>
<location filename="../src/modules/contextualprocess/ContextualProcessJob.cpp" line="117"/>
<source>Contextual Processes Job</source>
<translation type="unfinished"/>
<translation>Környezetfüggő folyamatok feladat</translation>
</message>
</context>
<context>
@ -560,7 +560,7 @@ Telepítés nem folytatható. &lt;a href=&quot;#details&quot;&gt;Részletek...&l
<message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="151"/>
<source>LVM LV name</source>
<translation type="unfinished"/>
<translation>LVM LV név</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="188"/>
@ -720,22 +720,22 @@ Telepítés nem folytatható. &lt;a href=&quot;#details&quot;&gt;Részletek...&l
<message>
<location filename="../src/modules/partition/jobs/CreateVolumeGroupJob.cpp" line="38"/>
<source>Create new volume group named %1.</source>
<translation type="unfinished"/>
<translation>Új kötetcsoport létrehozása: %1.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/CreateVolumeGroupJob.cpp" line="45"/>
<source>Create new volume group named &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation type="unfinished"/>
<translation>Új kötetcsoport létrehozása: &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/CreateVolumeGroupJob.cpp" line="52"/>
<source>Creating new volume group named %1.</source>
<translation type="unfinished"/>
<translation>Új kötetcsoport létrehozása: %1.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/CreateVolumeGroupJob.cpp" line="65"/>
<source>The installer failed to create a volume group named &apos;%1&apos;.</source>
<translation type="unfinished"/>
<translation>A telepítő nem tudta létrehozni a kötetcsoportot: %1.</translation>
</message>
</context>
<context>
@ -744,17 +744,17 @@ Telepítés nem folytatható. &lt;a href=&quot;#details&quot;&gt;Részletek...&l
<location filename="../src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp" line="34"/>
<location filename="../src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp" line="48"/>
<source>Deactivate volume group named %1.</source>
<translation type="unfinished"/>
<translation>A kötetcsoport deaktiválása: %1.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp" line="41"/>
<source>Deactivate volume group named &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation type="unfinished"/>
<translation>Kötetcsoport deaktiválása: &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp" line="61"/>
<source>The installer failed to deactivate a volume group named %1.</source>
<translation type="unfinished"/>
<translation>A telepítőnek nem sikerült deaktiválnia a kötetcsoportot: %1.</translation>
</message>
</context>
<context>
@ -823,7 +823,7 @@ Telepítés nem folytatható. &lt;a href=&quot;#details&quot;&gt;Részletek...&l
<message>
<location filename="../src/modules/partition/core/DeviceModel.cpp" line="89"/>
<source>%1 - (%2)</source>
<translation type="unfinished"/>
<translation>%1 (%2)</translation>
</message>
</context>
<context>
@ -986,7 +986,7 @@ Telepítés nem folytatható. &lt;a href=&quot;#details&quot;&gt;Részletek...&l
<message>
<location filename="../src/modules/finished/FinishedPage.ui" line="95"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When this box is checked, your system will restart immediately when you click on &lt;span style=&quot; font-style:italic;&quot;&gt;Done&lt;/span&gt; or close the installer.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Ha ez be van jelölve, akkor a rendszer azonnal újraindul, ha a &lt;span style=&quot; font-style:italic;&quot;&gt;Kész&lt;/span&gt;-re kattint, vagy bezárja a telepítőt.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/modules/finished/FinishedPage.ui" line="98"/>
@ -1292,232 +1292,232 @@ Telepítés nem folytatható. &lt;a href=&quot;#details&quot;&gt;Részletek...&l
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="151"/>
<source>Password is too weak</source>
<translation type="unfinished"/>
<translation>A jelszó túl gyenge</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="158"/>
<source>Memory allocation error when setting &apos;%1&apos;</source>
<translation type="unfinished"/>
<translation>Memóriafoglalási hiba a(z) %1 beállításakor</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="162"/>
<source>Memory allocation error</source>
<translation type="unfinished"/>
<translation>Memóriafoglalási hiba</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="164"/>
<source>The password is the same as the old one</source>
<translation type="unfinished"/>
<translation>A jelszó ugyanaz, mint a régi</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="166"/>
<source>The password is a palindrome</source>
<translation type="unfinished"/>
<translation>A jelszó egy palindrom</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="168"/>
<source>The password differs with case changes only</source>
<translation type="unfinished"/>
<translation>A jelszó csak kis- és nagybetűben tér el</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="170"/>
<source>The password is too similar to the old one</source>
<translation type="unfinished"/>
<translation>A jelszó túlságosan hasonlít a régire</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="172"/>
<source>The password contains the user name in some form</source>
<translation type="unfinished"/>
<translation>A jelszó tartalmazza felhasználónevet valamilyen formában</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="174"/>
<source>The password contains words from the real name of the user in some form</source>
<translation type="unfinished"/>
<translation>A jelszó tartalmazza a felhasználó valódi nevét valamilyen formában</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="176"/>
<source>The password contains forbidden words in some form</source>
<translation type="unfinished"/>
<translation>A jelszó tiltott szavakat tartalmaz valamilyen formában</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="179"/>
<source>The password contains less than %1 digits</source>
<translation type="unfinished"/>
<translation>A jelszó kevesebb mint %1 számjegyet tartalmaz</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="180"/>
<source>The password contains too few digits</source>
<translation type="unfinished"/>
<translation>A jelszó túl kevés számjegyet tartalmaz</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="183"/>
<source>The password contains less than %1 uppercase letters</source>
<translation type="unfinished"/>
<translation>A jelszó kevesebb mint %1 nagybetűt tartalmaz</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="184"/>
<source>The password contains too few uppercase letters</source>
<translation type="unfinished"/>
<translation>A jelszó túl kevés nagybetűt tartalmaz</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="187"/>
<source>The password contains less than %1 lowercase letters</source>
<translation type="unfinished"/>
<translation>A jelszó kevesebb mint %1 kisbetűt tartalmaz</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="188"/>
<source>The password contains too few lowercase letters</source>
<translation type="unfinished"/>
<translation>A jelszó túl kevés kisbetűt tartalmaz</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="191"/>
<source>The password contains less than %1 non-alphanumeric characters</source>
<translation type="unfinished"/>
<translation>A jelszó kevesebb mint %1 nem alfanumerikus karaktert tartalmaz</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="192"/>
<source>The password contains too few non-alphanumeric characters</source>
<translation type="unfinished"/>
<translation>A jelszó túl kevés nem alfanumerikus karaktert tartalmaz</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="195"/>
<source>The password is shorter than %1 characters</source>
<translation type="unfinished"/>
<translation>A jelszó rövidebb mint %1 karakter</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="196"/>
<source>The password is too short</source>
<translation type="unfinished"/>
<translation>A jelszó túl rövid</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="198"/>
<source>The password is just rotated old one</source>
<translation type="unfinished"/>
<translation>A jelszó egy újra felhasznált régi jelszó</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="201"/>
<source>The password contains less than %1 character classes</source>
<translation type="unfinished"/>
<translation>A jelszó kevesebb mint %1 karaktert tartalmaz</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="202"/>
<source>The password does not contain enough character classes</source>
<translation type="unfinished"/>
<translation>A jelszó nem tartalmaz elég karakterosztályt</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="205"/>
<source>The password contains more than %1 same characters consecutively</source>
<translation type="unfinished"/>
<translation>A jelszó több mint %1 egyező karaktert tartalmaz egymás után</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="206"/>
<source>The password contains too many same characters consecutively</source>
<translation type="unfinished"/>
<translation>A jelszó túl sok egyező karaktert tartalmaz egymás után</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="209"/>
<source>The password contains more than %1 characters of the same class consecutively</source>
<translation type="unfinished"/>
<translation>A jelszó több mint %1 karaktert tartalmaz ugyanabból a karakterosztályból egymás után</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="210"/>
<source>The password contains too many characters of the same class consecutively</source>
<translation type="unfinished"/>
<translation>A jelszó túl sok karaktert tartalmaz ugyanabból a karakterosztályból egymás után</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="213"/>
<source>The password contains monotonic sequence longer than %1 characters</source>
<translation type="unfinished"/>
<translation>A jelszó %1 karakternél hosszabb monoton sorozatot tartalmaz</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="214"/>
<source>The password contains too long of a monotonic character sequence</source>
<translation type="unfinished"/>
<translation>A jelszó túl hosszú monoton karaktersorozatot tartalmaz</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="216"/>
<source>No password supplied</source>
<translation type="unfinished"/>
<translation>Nincs jelszó megadva</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="218"/>
<source>Cannot obtain random numbers from the RNG device</source>
<translation type="unfinished"/>
<translation>Nem nyerhetőek ki véletlenszámok az RNG eszközből</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="220"/>
<source>Password generation failed - required entropy too low for settings</source>
<translation type="unfinished"/>
<translation>A jelszó előállítás meghiúsult a szükséges entrópia túl alacsony a beállításokhoz</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="225"/>
<source>The password fails the dictionary check - %1</source>
<translation type="unfinished"/>
<translation>A jelszó megbukott a szótárellenőrzésen %1</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="227"/>
<source>The password fails the dictionary check</source>
<translation type="unfinished"/>
<translation>A jelszó megbukott a szótárellenőrzésen</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="231"/>
<source>Unknown setting - %1</source>
<translation type="unfinished"/>
<translation>Ismeretlen beállítás %1</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="235"/>
<source>Unknown setting</source>
<translation type="unfinished"/>
<translation>Ismeretlen beállítás</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="239"/>
<source>Bad integer value of setting - %1</source>
<translation type="unfinished"/>
<translation>Hibás egész érték a beállításnál %1</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="243"/>
<source>Bad integer value</source>
<translation type="unfinished"/>
<translation>Hibás egész érték</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="247"/>
<source>Setting %1 is not of integer type</source>
<translation type="unfinished"/>
<translation>A(z) %1 beállítás nem egész típusú</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="251"/>
<source>Setting is not of integer type</source>
<translation type="unfinished"/>
<translation>A beállítás nem egész típusú</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="255"/>
<source>Setting %1 is not of string type</source>
<translation type="unfinished"/>
<translation>A(z) %1 beállítás nem karakterlánc típusú</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="259"/>
<source>Setting is not of string type</source>
<translation type="unfinished"/>
<translation>A beállítás nem karakterlánc típusú</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="261"/>
<source>Opening the configuration file failed</source>
<translation type="unfinished"/>
<translation>A konfigurációs fájl megnyitása meghiúsult</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="263"/>
<source>The configuration file is malformed</source>
<translation type="unfinished"/>
<translation>A konfigurációs fájl rosszul formázott</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="265"/>
<source>Fatal failure</source>
<translation type="unfinished"/>
<translation>Végzetes hiba</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="267"/>
<source>Unknown error</source>
<translation type="unfinished"/>
<translation>Ismeretlen hiba</translation>
</message>
</context>
<context>
@ -1711,7 +1711,7 @@ Telepítés nem folytatható. &lt;a href=&quot;#details&quot;&gt;Részletek...&l
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="107"/>
<source>Cre&amp;ate</source>
<translation type="unfinished"/>
<translation>&amp;Létrehozás</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="114"/>
@ -1726,27 +1726,27 @@ Telepítés nem folytatható. &lt;a href=&quot;#details&quot;&gt;Részletek...&l
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="132"/>
<source>New Volume Group</source>
<translation type="unfinished"/>
<translation>Új kötetcsoport</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="139"/>
<source>Resize Volume Group</source>
<translation type="unfinished"/>
<translation>Kötetcsoport átméretezése</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="146"/>
<source>Deactivate Volume Group</source>
<translation type="unfinished"/>
<translation>Kötetcsoport deaktiválása</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="153"/>
<source>Remove Volume Group</source>
<translation type="unfinished"/>
<translation>Kötetcsoport eltávolítása</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="180"/>
<source>I&amp;nstall boot loader on:</source>
<translation type="unfinished"/>
<translation>Rendszerbetöltő &amp;telepítése ide:</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.cpp" line="217"/>
@ -1756,12 +1756,12 @@ Telepítés nem folytatható. &lt;a href=&quot;#details&quot;&gt;Részletek...&l
<message>
<location filename="../src/modules/partition/gui/PartitionPage.cpp" line="241"/>
<source>Can not create new partition</source>
<translation type="unfinished"/>
<translation>Nem hozható létre új partíció</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.cpp" line="242"/>
<source>The partition table on %1 already has %2 primary partitions, and no more can be added. Please remove one primary partition and add an extended partition, instead.</source>
<translation type="unfinished"/>
<translation>A(z) %1 lemezen lévő partíciós táblában már %2 elsődleges partíció van, és több nem adható hozzá. Helyette távolítson el egy elsődleges partíciót, és adjon hozzá egy kiterjesztett partíciót.</translation>
</message>
</context>
<context>
@ -1867,13 +1867,13 @@ Telepítés nem folytatható. &lt;a href=&quot;#details&quot;&gt;Részletek...&l
<message>
<location filename="../src/modules/plasmalnf/PlasmaLnfJob.cpp" line="41"/>
<source>Plasma Look-and-Feel Job</source>
<translation type="unfinished"/>
<translation>Plasma kinézet feladat</translation>
</message>
<message>
<location filename="../src/modules/plasmalnf/PlasmaLnfJob.cpp" line="73"/>
<location filename="../src/modules/plasmalnf/PlasmaLnfJob.cpp" line="74"/>
<source>Could not select KDE Plasma Look-and-Feel package</source>
<translation type="unfinished"/>
<translation>A KDE Plasma kinézeti csomag nem válaszható ki</translation>
</message>
</context>
<context>
@ -1891,7 +1891,7 @@ Telepítés nem folytatható. &lt;a href=&quot;#details&quot;&gt;Részletek...&l
<message>
<location filename="../src/modules/plasmalnf/PlasmaLnfPage.cpp" line="67"/>
<source>Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel.</source>
<translation type="unfinished"/>
<translation>Válasszon egy kinézetet a KDE Plasma asztali környezethez. Ki is hagyhatja ezt a lépést, és beállíthatja a kinézetet, ha a telepítés elkészült. A kinézetválasztóra kattintva é előnézetet kaphat a kinézetről.</translation>
</message>
</context>
<context>
@ -1899,7 +1899,7 @@ Telepítés nem folytatható. &lt;a href=&quot;#details&quot;&gt;Részletek...&l
<message>
<location filename="../src/modules/plasmalnf/PlasmaLnfViewStep.cpp" line="68"/>
<source>Look-and-Feel</source>
<translation type="unfinished"/>
<translation>Kinézet</translation>
</message>
</context>
<context>
@ -1907,17 +1907,17 @@ Telepítés nem folytatható. &lt;a href=&quot;#details&quot;&gt;Részletek...&l
<message>
<location filename="../src/modules/preservefiles/PreserveFiles.cpp" line="85"/>
<source>Saving files for later ...</source>
<translation type="unfinished"/>
<translation>Fájlok mentése későbbre </translation>
</message>
<message>
<location filename="../src/modules/preservefiles/PreserveFiles.cpp" line="123"/>
<source>No files configured to save for later.</source>
<translation type="unfinished"/>
<translation>Nincsenek fájlok beállítva elmentésre későbbre</translation>
</message>
<message>
<location filename="../src/modules/preservefiles/PreserveFiles.cpp" line="177"/>
<source>Not all of the configured files could be preserved.</source>
<translation type="unfinished"/>
<translation>Nem az összes beállított fájl örízhető meg.</translation>
</message>
</context>
<context>
@ -1926,14 +1926,17 @@ Telepítés nem folytatható. &lt;a href=&quot;#details&quot;&gt;Részletek...&l
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="271"/>
<source>
There was no output from the command.</source>
<translation type="unfinished"/>
<translation>
A parancsnak nem volt kimenete.</translation>
</message>
<message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="272"/>
<source>
Output:
</source>
<translation type="unfinished"/>
<translation>
Kimenet:
</translation>
</message>
<message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="275"/>
@ -1948,17 +1951,17 @@ Output:
<message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="281"/>
<source>External command failed to start.</source>
<translation type="unfinished"/>
<translation>A külső parancsot nem sikerült elindítani.</translation>
</message>
<message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="282"/>
<source>Command &lt;i&gt;%1&lt;/i&gt; failed to start.</source>
<translation type="unfinished"/>
<translation>A(z) &lt;i&gt;%1&lt;/i&gt; parancsot nem sikerült elindítani.</translation>
</message>
<message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="286"/>
<source>Internal error when starting command.</source>
<translation type="unfinished"/>
<translation>Belső hiba a parancs végrehajtásakor.</translation>
</message>
<message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="287"/>
@ -1973,17 +1976,17 @@ Output:
<message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="291"/>
<source>Command &lt;i&gt;%1&lt;/i&gt; failed to finish in %2 seconds.</source>
<translation type="unfinished"/>
<translation>A(z) &lt;i&gt;%1&lt;/i&gt; parancsot nem sikerült befejezni %2 másodperc alatt.</translation>
</message>
<message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="297"/>
<source>External command finished with errors.</source>
<translation type="unfinished"/>
<translation>A külső parancs hibával fejeződött be.</translation>
</message>
<message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="298"/>
<source>Command &lt;i&gt;%1&lt;/i&gt; finished with exit code %2.</source>
<translation type="unfinished"/>
<translation>A(z) &lt;i&gt;%1&lt;/i&gt; parancs hibakóddal lépett ki: %2.</translation>
</message>
</context>
<context>
@ -2031,17 +2034,17 @@ Output:
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="34"/>
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="48"/>
<source>Remove Volume Group named %1.</source>
<translation type="unfinished"/>
<translation>A kötetcsoport eltávolítása: %1.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="41"/>
<source>Remove Volume Group named &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation type="unfinished"/>
<translation>Kötetcsoport eltávolítása: &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="61"/>
<source>The installer failed to remove a volume group named &apos;%1&apos;.</source>
<translation type="unfinished"/>
<translation>A telepítő nem tudta eltávolítani a kötetcsoportot: %1.</translation>
</message>
</context>
<context>
@ -2182,29 +2185,29 @@ Output:
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="130"/>
<source>Resize Filesystem Job</source>
<translation type="unfinished"/>
<translation>Fájlrendszer átméretezési feladat</translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="238"/>
<source>Invalid configuration</source>
<translation type="unfinished"/>
<translation>Érvénytelen konfiguráció</translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="239"/>
<source>The file-system resize job has an invalid configuration and will not run.</source>
<translation type="unfinished"/>
<translation>A fájlrendszer átméretezési feladat konfigurációja érvénytelen, és nem fog futni.</translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="253"/>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="263"/>
<source>KPMCore not Available</source>
<translation type="unfinished"/>
<translation>A KPMCore nem érhető el</translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="254"/>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="264"/>
<source>Calamares cannot start KPMCore for the file-system resize job.</source>
<translation type="unfinished"/>
<translation>A Calamares nem tudja elindítani a KPMCore-t a fájlrendszer átméretezési feladathoz.</translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="272"/>
@ -2213,39 +2216,39 @@ Output:
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="303"/>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="320"/>
<source>Resize Failed</source>
<translation type="unfinished"/>
<translation>Az átméretezés meghiúsult</translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="273"/>
<source>The filesystem %1 could not be found in this system, and cannot be resized.</source>
<translation type="unfinished"/>
<translation>A(z) %1 fájlrendszer nem található a rendszeren, és nem méretezhető át.</translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="274"/>
<source>The device %1 could not be found in this system, and cannot be resized.</source>
<translation type="unfinished"/>
<translation>A(z) %1 eszköz nem található a rendszeren, és nem méretezhető át.</translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="282"/>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="295"/>
<source>The filesystem %1 cannot be resized.</source>
<translation type="unfinished"/>
<translation>A(z) %1 fájlrendszer nem méretezhető át.</translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="283"/>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="296"/>
<source>The device %1 cannot be resized.</source>
<translation type="unfinished"/>
<translation>A(z) %1 eszköz nem méretezhető át.</translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="304"/>
<source>The filesystem %1 must be resized, but cannot.</source>
<translation type="unfinished"/>
<translation>A(z) %1 fájlrendszert át kell méretezni, de nem lehet.</translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="305"/>
<source>The device %1 must be resized, but cannot</source>
<translation type="unfinished"/>
<translation>A(z) %1 eszközt át kell méretezni, de nem lehet</translation>
</message>
</context>
<context>
@ -2277,17 +2280,17 @@ Output:
<location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="37"/>
<location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="55"/>
<source>Resize volume group named %1 from %2 to %3.</source>
<translation type="unfinished"/>
<translation>A(z) %1 kötet átméretezése ekkoráról: %2, ekkorára: %3.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="46"/>
<source>Resize volume group named &lt;strong&gt;%1&lt;/strong&gt; from &lt;strong&gt;%2&lt;/strong&gt; to &lt;strong&gt;%3&lt;/strong&gt;.</source>
<translation type="unfinished"/>
<translation>A(z) &lt;strong&gt;%1&lt;/strong&gt; kötet átméretezése ekkoráról: &lt;strong&gt;%2&lt;/strong&gt;, ekkorára: &lt;strong&gt;%3&lt;/strong&gt;.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="70"/>
<source>The installer failed to resize a volume group named &apos;%1&apos;.</source>
<translation type="unfinished"/>
<translation>A telepítő nem tudta átméretezni a kötetcsoportot: %1.</translation>
</message>
</context>
<context>
@ -2532,7 +2535,7 @@ Output:
<message>
<location filename="../src/modules/shellprocess/ShellProcessJob.cpp" line="51"/>
<source>Shell Processes Job</source>
<translation type="unfinished"/>
<translation>Parancssori folyamatok feladat</translation>
</message>
</context>
<context>
@ -2541,7 +2544,7 @@ Output:
<location filename="../src/qml/calamares/slideshow/SlideCounter.qml" line="36"/>
<source>%L1 / %L2</source>
<extracomment>slide counter, %1 of %2 (numeric)</extracomment>
<translation type="unfinished"/>
<translation>%L1 / %L2</translation>
</message>
</context>
<context>
@ -2725,27 +2728,27 @@ Calamares hiba %1.</translation>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="14"/>
<source>VolumeGroupDialog</source>
<translation type="unfinished"/>
<translation>Kötetcsoport párbeszédablak</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="20"/>
<source>List of Physical Volumes</source>
<translation type="unfinished"/>
<translation>Fizikai kötetek listája</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="30"/>
<source>Volume Group Name:</source>
<translation type="unfinished"/>
<translation>Kötetcsoport neve:</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="43"/>
<source>Volume Group Type:</source>
<translation type="unfinished"/>
<translation>Kötetcsoport típusa:</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="56"/>
<source>Physical Extent Size:</source>
<translation type="unfinished"/>
<translation>Fizikai kiterjedés mérete:</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="66"/>
@ -2755,7 +2758,7 @@ Calamares hiba %1.</translation>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="82"/>
<source>Total Size:</source>
<translation type="unfinished"/>
<translation>Teljes méret:</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="92"/>
@ -2763,22 +2766,22 @@ Calamares hiba %1.</translation>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="132"/>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="152"/>
<source>---</source>
<translation type="unfinished"/>
<translation>---</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="102"/>
<source>Used Size:</source>
<translation type="unfinished"/>
<translation>Használt méret:</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="122"/>
<source>Total Sectors:</source>
<translation type="unfinished"/>
<translation>Szektorok összesen:</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="142"/>
<source>Quantity of LVs:</source>
<translation type="unfinished"/>
<translation>Logkai kötetek száma:</translation>
</message>
</context>
<context>
@ -2831,7 +2834,7 @@ Calamares hiba %1.</translation>
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="75"/>
<source>&lt;h1&gt;%1&lt;/h1&gt;&lt;br/&gt;&lt;strong&gt;%2&lt;br/&gt;for %3&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;Copyright 2014-2017 Teo Mrnjavac &amp;lt;teo@kde.org&amp;gt;&lt;br/&gt;Copyright 2017 Adriaan de Groot &amp;lt;groot@kde.org&amp;gt;&lt;br/&gt;Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the &lt;a href=&quot;https://www.transifex.com/calamares/calamares/&quot;&gt;Calamares translators team&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;&lt;a href=&quot;https://calamares.io/&quot;&gt;Calamares&lt;/a&gt; development is sponsored by &lt;br/&gt;&lt;a href=&quot;http://www.blue-systems.com/&quot;&gt;Blue Systems&lt;/a&gt; - Liberating Software.</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;%1&lt;/h1&gt;&lt;br/&gt;&lt;strong&gt;%2&lt;br/&gt;for %3&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;Copyright 2014-2017 Teo Mrnjavac &amp;lt;teo@kde.org&amp;gt;&lt;br/&gt;Copyright 2017 Adriaan de Groot &amp;lt;groot@kde.org&amp;gt;&lt;br/&gt;Köszönet: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg és a &lt;a href=&quot;https://www.transifex.com/calamares/calamares/&quot;&gt;Calamares fordítócsapat&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;A &lt;a href=&quot;https://calamares.io/&quot;&gt;Calamares&lt;/a&gt; fejlesztését a &lt;br/&gt;&lt;a href=&quot;http://www.blue-systems.com/&quot;&gt;Blue Systems&lt;/a&gt; támogatja.</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="290"/>

View File

@ -9,12 +9,12 @@
<message>
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="79"/>
<source>This system was started with an &lt;strong&gt;EFI&lt;/strong&gt; boot environment.&lt;br&gt;&lt;br&gt;To configure startup from an EFI environment, this installer must deploy a boot loader application, like &lt;strong&gt;GRUB&lt;/strong&gt; or &lt;strong&gt;systemd-boot&lt;/strong&gt; on an &lt;strong&gt;EFI System Partition&lt;/strong&gt;. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own.</source>
<translation>Sistem ini telah dimulai dengan lingkungan boot &lt;strong&gt;EFI&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;Untuk mengkonfigurasi startup dari lingkungan EFI, pemasang ini seharusnya memaparkan sebuah aplikasi boot loader, seperti &lt;strong&gt;GRUB&lt;/strong&gt; atau &lt;strong&gt;systemd-boot&lt;/strong&gt; pada sebuah &lt;strong&gt;EFI System Partition&lt;/strong&gt;. Ini adalah otomatis, kecuali kalau kamu memilih pemartisian manual, dalam beberapa kasus kamu harus memilihnya atau menciptakannya pada milikmu.</translation>
<translation>Sistem ini telah dimulai dengan lingkungan boot &lt;strong&gt;EFI&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;Untuk mengkonfigurasi startup dari lingkungan EFI, installer ini seharusnya memaparkan sebuah aplikasi boot loader, seperti &lt;strong&gt;GRUB&lt;/strong&gt; atau &lt;strong&gt;systemd-boot&lt;/strong&gt; pada sebuah &lt;strong&gt;EFI System Partition&lt;/strong&gt;. Ini adalah otomatis, kecuali kalau kamu memilih pemartisian manual, dalam beberapa kasus kamu harus memilihnya atau menciptakannya pada milikmu.</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="91"/>
<source>This system was started with a &lt;strong&gt;BIOS&lt;/strong&gt; boot environment.&lt;br&gt;&lt;br&gt;To configure startup from a BIOS environment, this installer must install a boot loader, like &lt;strong&gt;GRUB&lt;/strong&gt;, either at the beginning of a partition or on the &lt;strong&gt;Master Boot Record&lt;/strong&gt; near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own.</source>
<translation>Sistem ini dimulai dengan sebuah lingkungan boot &lt;strong&gt;BIOS&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;Untuk mengkonfigurasi startup dari sebuah lingkungan BIOS, pemasang ini seharusnya memasang sebuah boot loader, seperti &lt;strong&gt;GRUB&lt;/strong&gt;, baik di awal partisi atau pada &lt;strong&gt;Master Boot Record&lt;/strong&gt; di dekat awalan tabel partisi (yang disukai). Ini adalah otomatis, kecuali kalau kamu memilih pemartisian manual, dalam beberapa kasus kamu harus menyetelnya pada milikmu.</translation>
<translation>Sistem ini dimulai dengan sebuah lingkungan boot &lt;strong&gt;BIOS&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;Untuk mengkonfigurasi startup dari sebuah lingkungan BIOS, installer ini seharusnya memasang sebuah boot loader, seperti &lt;strong&gt;GRUB&lt;/strong&gt;, baik di awal partisi atau pada &lt;strong&gt;Master Boot Record&lt;/strong&gt; di dekat awalan tabel partisi (yang disukai). Ini adalah otomatis, kecuali kalau kamu memilih pemartisian manual, dalam beberapa kasus kamu harus menyetelnya pada milikmu.</translation>
</message>
</context>
<context>
@ -37,7 +37,7 @@
<message>
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="111"/>
<source>Do not install a boot loader</source>
<translation>Jangan pasang boot loader</translation>
<translation>Jangan instal boot loader</translation>
</message>
<message>
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="125"/>
@ -107,7 +107,7 @@
<message>
<location filename="../src/libcalamaresui/ExecutionViewStep.cpp" line="79"/>
<source>Install</source>
<translation>Pasang</translation>
<translation>Instal</translation>
</message>
</context>
<context>
@ -187,7 +187,7 @@
<location filename="../src/libcalamaresui/ViewManager.cpp" line="77"/>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="289"/>
<source>Cancel installation without changing the system.</source>
<translation>Batal pemasangan tanpa mengubah sistem yang ada.</translation>
<translation>Batalkan instalasi tanpa mengubah sistem yang ada.</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="179"/>
@ -197,7 +197,7 @@
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="180"/>
<source>%1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution.</source>
<translation>%1 tidak dapat terpasang. Calamares tidak dapat memuat seluruh modul konfigurasi. Terdapat masalah dengan Calamares karena sedang digunakan oleh distribusi.</translation>
<translation>%1 tidak dapat terinstal. Calamares tidak dapat memuat seluruh modul konfigurasi. Terdapat masalah dengan Calamares karena sedang digunakan oleh distribusi.</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="185"/>
@ -207,19 +207,19 @@
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="277"/>
<source>&amp;Install</source>
<translation>&amp;Pasang</translation>
<translation>&amp;Instal</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="325"/>
<source>Cancel installation?</source>
<translation>Batalkan pemasangan?</translation>
<translation>Batalkan instalasi?</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="326"/>
<source>Do you really want to cancel the current install process?
The installer will quit and all changes will be lost.</source>
<translation>Apakah Anda benar-benar ingin membatalkan proses pemasangan ini?
Pemasangan akan ditutup dan semua perubahan akan hilang.</translation>
<translation>Apakah Anda benar-benar ingin membatalkan proses instalasi ini?
Instalasi akan ditutup dan semua perubahan akan hilang.</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="331"/>
@ -244,12 +244,12 @@ Pemasangan akan ditutup dan semua perubahan akan hilang.</translation>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="238"/>
<source>The %1 installer is about to make changes to your disk in order to install %2.&lt;br/&gt;&lt;strong&gt;You will not be able to undo these changes.&lt;/strong&gt;</source>
<translation>Pemasang %1 akan membuat perubahan ke disk Anda untuk memasang %2.&lt;br/&gt;&lt;strong&gt;Anda tidak dapat membatalkan perubahan tersebut.&lt;/strong&gt;</translation>
<translation>Installer %1 akan membuat perubahan ke disk Anda untuk memasang %2.&lt;br/&gt;&lt;strong&gt;Anda tidak dapat membatalkan perubahan tersebut.&lt;/strong&gt;</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="243"/>
<source>&amp;Install now</source>
<translation>&amp;Pasang sekarang</translation>
<translation>&amp;Instal sekarang</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="244"/>
@ -264,7 +264,7 @@ Pemasangan akan ditutup dan semua perubahan akan hilang.</translation>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="284"/>
<source>The installation is complete. Close the installer.</source>
<translation>Pemasangan sudah lengkap. Tutup pemasang.</translation>
<translation>Instalasi sudah lengkap. Tutup installer.</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="160"/>
@ -274,7 +274,7 @@ Pemasangan akan ditutup dan semua perubahan akan hilang.</translation>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="161"/>
<source>Installation Failed</source>
<translation>Pemasangan Gagal</translation>
<translation>Instalasi Gagal</translation>
</message>
</context>
<context>
@ -305,7 +305,7 @@ Pemasangan akan ditutup dan semua perubahan akan hilang.</translation>
<message>
<location filename="../src/calamares/CalamaresWindow.cpp" line="44"/>
<source>%1 Installer</source>
<translation>Pemasang %1</translation>
<translation>Installer %1</translation>
</message>
<message>
<location filename="../src/calamares/CalamaresWindow.cpp" line="111"/>
@ -319,13 +319,13 @@ Pemasangan akan ditutup dan semua perubahan akan hilang.</translation>
<location filename="../src/modules/welcome/checker/CheckerWidget.cpp" line="96"/>
<source>This computer does not satisfy the minimum requirements for installing %1.&lt;br/&gt;Installation cannot continue. &lt;a href=&quot;#details&quot;&gt;Details...&lt;/a&gt;</source>
<translation>Komputer ini tidak memenuhi syarat minimum untuk memasang %1.
Pemasang tidak dapat dilanjutkan. &lt;a href=&quot;</translation>
Installer tidak dapat dilanjutkan. &lt;a href=&quot;</translation>
</message>
<message>
<location filename="../src/modules/welcome/checker/CheckerWidget.cpp" line="113"/>
<source>This computer does not satisfy some of the recommended requirements for installing %1.&lt;br/&gt;Installation can continue, but some features might be disabled.</source>
<translation>Komputer ini tidak memenuhi beberapa syarat yang dianjurkan untuk memasang %1.
Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</translation>
Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</translation>
</message>
<message>
<location filename="../src/modules/welcome/checker/CheckerWidget.cpp" line="151"/>
@ -437,7 +437,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</transla
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1292"/>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1316"/>
<source>&lt;strong&gt;Install alongside&lt;/strong&gt;&lt;br/&gt;The installer will shrink a partition to make room for %1.</source>
<translation>&lt;strong&gt;Pasang berdampingan dengan&lt;/strong&gt;&lt;br/&gt;Pemasang akan mengiris sebuah partisi untuk memberi ruang bagi %1.</translation>
<translation>&lt;strong&gt;Instal berdampingan dengan&lt;/strong&gt;&lt;br/&gt;Installer akan mengiris sebuah partisi untuk memberi ruang bagi %1.</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1245"/>
@ -624,7 +624,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</transla
<message>
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="79"/>
<source>The installer failed to create partition on disk &apos;%1&apos;.</source>
<translation>Pemasang gagal untuk membuat partisi di disk &apos;%1&apos;.</translation>
<translation>Installer gagal untuk membuat partisi di disk &apos;%1&apos;.</translation>
</message>
</context>
<context>
@ -675,7 +675,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</transla
<message>
<location filename="../src/modules/partition/jobs/CreatePartitionTableJob.cpp" line="82"/>
<source>The installer failed to create a partition table on %1.</source>
<translation>Pemasang gagal membuat tabel partisi pada %1.</translation>
<translation>Installer gagal membuat tabel partisi pada %1.</translation>
</message>
</context>
<context>
@ -721,22 +721,22 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</transla
<message>
<location filename="../src/modules/partition/jobs/CreateVolumeGroupJob.cpp" line="38"/>
<source>Create new volume group named %1.</source>
<translation type="unfinished"/>
<translation>Ciptakan grup volume baru bernama %1.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/CreateVolumeGroupJob.cpp" line="45"/>
<source>Create new volume group named &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation type="unfinished"/>
<translation>Ciptakan grup volume baru bernama &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/CreateVolumeGroupJob.cpp" line="52"/>
<source>Creating new volume group named %1.</source>
<translation type="unfinished"/>
<translation>Menciptakan grup volume baru bernama %1.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/CreateVolumeGroupJob.cpp" line="65"/>
<source>The installer failed to create a volume group named &apos;%1&apos;.</source>
<translation type="unfinished"/>
<translation>Installer gagal menciptakan sebuah grup volume bernama &apos;%1&apos;.</translation>
</message>
</context>
<context>
@ -745,17 +745,17 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</transla
<location filename="../src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp" line="34"/>
<location filename="../src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp" line="48"/>
<source>Deactivate volume group named %1.</source>
<translation type="unfinished"/>
<translation>Nonaktifkan grup volume bernama %1.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp" line="41"/>
<source>Deactivate volume group named &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation type="unfinished"/>
<translation>Nonaktifkan grup volume bernama &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp" line="61"/>
<source>The installer failed to deactivate a volume group named %1.</source>
<translation type="unfinished"/>
<translation>Installer gagal menonaktifkan sebuah grup volume bernama %1.</translation>
</message>
</context>
<context>
@ -778,7 +778,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</transla
<message>
<location filename="../src/modules/partition/jobs/DeletePartitionJob.cpp" line="68"/>
<source>The installer failed to delete partition %1.</source>
<translation>Pemasang gagal untuk menghapus partisi %1.</translation>
<translation>Installer gagal untuk menghapus partisi %1.</translation>
</message>
</context>
<context>
@ -786,7 +786,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</transla
<message>
<location filename="../src/modules/partition/gui/DeviceInfoWidget.cpp" line="150"/>
<source>The type of &lt;strong&gt;partition table&lt;/strong&gt; on the selected storage device.&lt;br&gt;&lt;br&gt;The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.&lt;br&gt;This installer will keep the current partition table unless you explicitly choose otherwise.&lt;br&gt;If unsure, on modern systems GPT is preferred.</source>
<translation>Tipe dari &lt;strong&gt;tabel partisi&lt;/strong&gt; pada perangkat penyimpanan terpilih.&lt;br&gt;&lt;br&gt;Satu-satunya cara untuk mengubah tabel partisi adalah dengan menyetip dan menciptakan ulang tabel partisi dari awal, yang melenyapkan semua data pada perangkat penyimpanan.&lt;br&gt;Pemasang ini akan menjaga tabel partisi saat ini kecuali kamu secara gamblang memilih sebaliknya.&lt;br&gt;Jika tidak yakin, pada sistem GPT modern lebih disukai.</translation>
<translation>Tipe dari &lt;strong&gt;tabel partisi&lt;/strong&gt; pada perangkat penyimpanan terpilih.&lt;br&gt;&lt;br&gt;Satu-satunya cara untuk mengubah tabel partisi adalah dengan menyetip dan menciptakan ulang tabel partisi dari awal, yang melenyapkan semua data pada perangkat penyimpanan.&lt;br&gt;Installer ini akan menjaga tabel partisi saat ini kecuali kamu secara gamblang memilih sebaliknya.&lt;br&gt;Jika tidak yakin, pada sistem GPT modern lebih disukai.</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/DeviceInfoWidget.cpp" line="107"/>
@ -801,7 +801,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</transla
<message>
<location filename="../src/modules/partition/gui/DeviceInfoWidget.cpp" line="121"/>
<source>This installer &lt;strong&gt;cannot detect a partition table&lt;/strong&gt; on the selected storage device.&lt;br&gt;&lt;br&gt;The device either has no partition table, or the partition table is corrupted or of an unknown type.&lt;br&gt;This installer can create a new partition table for you, either automatically, or through the manual partitioning page.</source>
<translation>Pemasang &lt;strong&gt;tidak bisa mendeteksi tabel partisi apapun&lt;/strong&gt; pada media penyimpanan terpilih.&lt;br&gt;&lt;br&gt;Mungkin media ini tidak memiliki tabel partisi, atau tabel partisi yang ada telah korup atau tipenya tidak dikenal.&lt;br&gt;Pemasang dapat membuatkan partisi baru untuk Anda, baik secara otomatis atau melalui laman pemartisian manual.</translation>
<translation>Installer &lt;strong&gt;tidak bisa mendeteksi tabel partisi apapun&lt;/strong&gt; pada media penyimpanan terpilih.&lt;br&gt;&lt;br&gt;Mungkin media ini tidak memiliki tabel partisi, atau tabel partisi yang ada telah korup atau tipenya tidak dikenal.&lt;br&gt;Installer dapat membuatkan partisi baru untuk Anda, baik secara otomatis atau melalui laman pemartisian manual.</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/DeviceInfoWidget.cpp" line="131"/>
@ -824,7 +824,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</transla
<message>
<location filename="../src/modules/partition/core/DeviceModel.cpp" line="89"/>
<source>%1 - (%2)</source>
<translation type="unfinished"/>
<translation>%1 - (%2)</translation>
</message>
</context>
<context>
@ -949,7 +949,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</transla
<message>
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="156"/>
<source>Install %1 on &lt;strong&gt;new&lt;/strong&gt; %2 system partition.</source>
<translation>Pasang %1 pada partisi sistem %2 &lt;strong&gt;baru&lt;/strong&gt;</translation>
<translation>Instal %1 pada partisi sistem %2 &lt;strong&gt;baru&lt;/strong&gt;</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="160"/>
@ -959,7 +959,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</transla
<message>
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="168"/>
<source>Install %2 on %3 system partition &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation>Pasang %2 pada sistem partisi %3 &lt;strong&gt;%1&lt;/strong&gt;.</translation>
<translation>Instal %2 pada sistem partisi %3 &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="173"/>
@ -969,7 +969,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</transla
<message>
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="185"/>
<source>Install boot loader on &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation>Pasang boot loader di &lt;strong&gt;%1&lt;/strong&gt;.</translation>
<translation>Instal boot loader di &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="195"/>
@ -987,7 +987,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</transla
<message>
<location filename="../src/modules/finished/FinishedPage.ui" line="95"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When this box is checked, your system will restart immediately when you click on &lt;span style=&quot; font-style:italic;&quot;&gt;Done&lt;/span&gt; or close the installer.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>Ketika kotak ini dicentang, sistem kamu akan segera dimulai kembali saat mengklik Selesai atau menutup pemasang.</translation>
<translation>Ketika kotak ini dicentang, sistem kamu akan segera dimulai kembali saat mengklik Selesai atau menutup installer.</translation>
</message>
<message>
<location filename="../src/modules/finished/FinishedPage.ui" line="98"/>
@ -997,12 +997,12 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</transla
<message>
<location filename="../src/modules/finished/FinishedPage.cpp" line="51"/>
<source>&lt;h1&gt;All done.&lt;/h1&gt;&lt;br/&gt;%1 has been installed on your computer.&lt;br/&gt;You may now restart into your new system, or continue using the %2 Live environment.</source>
<translation>&lt;h1&gt;Selesai.&lt;/h1&gt;&lt;br&gt;%1 sudah terpasang di komputer Anda.&lt;br/&gt;Anda dapat memulai ulang ke sistem baru atau lanjut menggunakan lingkungan Live %2.</translation>
<translation>&lt;h1&gt;Selesai.&lt;/h1&gt;&lt;br&gt;%1 sudah terinstal di komputer Anda.&lt;br/&gt;Anda dapat memulai ulang ke sistem baru atau lanjut menggunakan lingkungan Live %2.</translation>
</message>
<message>
<location filename="../src/modules/finished/FinishedPage.cpp" line="109"/>
<source>&lt;h1&gt;Installation Failed&lt;/h1&gt;&lt;br/&gt;%1 has not been installed on your computer.&lt;br/&gt;The error message was: %2.</source>
<translation>&lt;h1&gt;Pemasangan Gagal&lt;/h1&gt;&lt;br/&gt;%1 tidak bisa dipasang pada komputermu.&lt;br/&gt;Pesan galatnya adalah: %2.</translation>
<translation>&lt;h1&gt;Instalasi Gagal&lt;/h1&gt;&lt;br/&gt;%1 tidak bisa diinstal pada komputermu.&lt;br/&gt;Pesan galatnya adalah: %2.</translation>
</message>
</context>
<context>
@ -1015,12 +1015,12 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</transla
<message>
<location filename="../src/modules/finished/FinishedViewStep.cpp" line="124"/>
<source>Installation Complete</source>
<translation>Pemasangan Lengkap</translation>
<translation>Instalasi Lengkap</translation>
</message>
<message>
<location filename="../src/modules/finished/FinishedViewStep.cpp" line="125"/>
<source>The installation of %1 is complete.</source>
<translation>Pemasangan %1 telah lengkap.</translation>
<translation>Instalasi %1 telah lengkap.</translation>
</message>
</context>
<context>
@ -1043,7 +1043,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</transla
<message>
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="77"/>
<source>The installer failed to format partition %1 on disk &apos;%2&apos;.</source>
<translation>Pemasang gagal memformat partisi %1 pada disk &apos;%2&apos;.&apos;%2&apos;.</translation>
<translation>Installer gagal memformat partisi %1 pada disk &apos;%2&apos;.&apos;%2&apos;.</translation>
</message>
</context>
<context>
@ -1051,12 +1051,12 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</transla
<message>
<location filename="../src/modules/interactiveterminal/InteractiveTerminalPage.cpp" line="53"/>
<source>Konsole not installed</source>
<translation>Konsole tidak terpasang</translation>
<translation>Konsole tidak terinstal</translation>
</message>
<message>
<location filename="../src/modules/interactiveterminal/InteractiveTerminalPage.cpp" line="54"/>
<source>Please install KDE Konsole and try again!</source>
<translation>Silahkan pasang KDE Konsole dan ulangi lagi!</translation>
<translation>Silahkan instal KDE Konsole dan ulangi lagi!</translation>
</message>
<message>
<location filename="../src/modules/interactiveterminal/InteractiveTerminalPage.cpp" line="116"/>
@ -1146,7 +1146,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</transla
<message>
<location filename="../src/modules/license/LicensePage.cpp" line="130"/>
<source>Please review the End User License Agreements (EULAs) above.&lt;br/&gt;If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead.</source>
<translation>Mohon periksa End User License Agreements(EULA) di atas.&lt;br/&gt;Bila Anda tidak setuju, perangkat lunak proprietary tidak akan dipasang, dan alternatif open source akan dipasang sebagai gantinya </translation>
<translation>Mohon periksa End User License Agreements(EULA) di atas.&lt;br/&gt;Bila Anda tidak setuju, perangkat lunak proprietary tidak akan diinstal, dan alternatif open source akan diinstal sebagai gantinya </translation>
</message>
<message>
<location filename="../src/modules/license/LicensePage.cpp" line="160"/>
@ -1262,12 +1262,12 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</transla
<message>
<location filename="../src/modules/netinstall/NetInstallPage.cpp" line="86"/>
<source>Network Installation. (Disabled: Unable to fetch package lists, check your network connection)</source>
<translation>Pemasangan Jaringan. (Dinonfungsikan: Tak mampu menarik daftar paket, periksa sambungan jaringanmu)</translation>
<translation>Instalasi Jaringan. (Dinonfungsikan: Tak mampu menarik daftar paket, periksa sambungan jaringanmu)</translation>
</message>
<message>
<location filename="../src/modules/netinstall/NetInstallPage.cpp" line="96"/>
<source>Network Installation. (Disabled: Received invalid groups data)</source>
<translation>Pemasangan jaringan. (Menonaktifkan: Penerimaan kelompok data yang tidak sah)</translation>
<translation>Instalasi jaringan. (Menonaktifkan: Penerimaan kelompok data yang tidak sah)</translation>
</message>
</context>
<context>
@ -1566,7 +1566,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</transla
<message>
<location filename="../src/modules/users/page_usersetup.ui" line="200"/>
<source>&lt;small&gt;If more than one person will use this computer, you can set up multiple accounts after installation.&lt;/small&gt;</source>
<translation>&lt;small&gt;Jika lebih dari satu orang akan menggunakan komputer ini, Anda dapat mengatur beberapa akun setelah pemasangan.&lt;/small&gt;</translation>
<translation>&lt;small&gt;Jika lebih dari satu orang akan menggunakan komputer ini, Anda dapat mengatur beberapa akun setelah instalasi.&lt;/small&gt;</translation>
</message>
<message>
<location filename="../src/modules/users/page_usersetup.ui" line="335"/>
@ -1727,27 +1727,27 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</transla
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="132"/>
<source>New Volume Group</source>
<translation type="unfinished"/>
<translation>Grup Volume Baru</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="139"/>
<source>Resize Volume Group</source>
<translation type="unfinished"/>
<translation>Ubah-ukuran Grup Volume</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="146"/>
<source>Deactivate Volume Group</source>
<translation type="unfinished"/>
<translation>Nonaktifkan Grup Volume</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="153"/>
<source>Remove Volume Group</source>
<translation type="unfinished"/>
<translation>Hapus Grup Volume</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="180"/>
<source>I&amp;nstall boot loader on:</source>
<translation type="unfinished"/>
<translation>I&amp;nstal boot loader di:</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.cpp" line="217"/>
@ -1780,12 +1780,12 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</transla
<message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="159"/>
<source>Install %1 &lt;strong&gt;alongside&lt;/strong&gt; another operating system.</source>
<translation>Pasang %1 &lt;strong&gt;berdampingan&lt;/strong&gt; dengan sistem operasi lain.</translation>
<translation>Instal %1 &lt;strong&gt;berdampingan&lt;/strong&gt; dengan sistem operasi lain.</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="163"/>
<source>&lt;strong&gt;Erase&lt;/strong&gt; disk and install %1.</source>
<translation>&lt;strong&gt;Hapus&lt;/strong&gt; diska dan pasang %1.</translation>
<translation>&lt;strong&gt;Hapus&lt;/strong&gt; diska dan instal %1.</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="167"/>
@ -1800,12 +1800,12 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</transla
<message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="185"/>
<source>Install %1 &lt;strong&gt;alongside&lt;/strong&gt; another operating system on disk &lt;strong&gt;%2&lt;/strong&gt; (%3).</source>
<translation>Pasang %1 &lt;strong&gt;berdampingan&lt;/strong&gt; dengan sistem operasi lain di disk &lt;strong&gt;%2&lt;/strong&gt; (%3).</translation>
<translation>Instal %1 &lt;strong&gt;berdampingan&lt;/strong&gt; dengan sistem operasi lain di disk &lt;strong&gt;%2&lt;/strong&gt; (%3).</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="191"/>
<source>&lt;strong&gt;Erase&lt;/strong&gt; disk &lt;strong&gt;%2&lt;/strong&gt; (%3) and install %1.</source>
<translation>&lt;strong&gt;Hapus&lt;/strong&gt; diska &lt;strong&gt;%2&lt;/strong&gt; (%3) dan pasang %1.</translation>
<translation>&lt;strong&gt;Hapus&lt;/strong&gt; diska &lt;strong&gt;%2&lt;/strong&gt; (%3) dan instal %1.</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="197"/>
@ -1892,7 +1892,7 @@ Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.</transla
<message>
<location filename="../src/modules/plasmalnf/PlasmaLnfPage.cpp" line="67"/>
<source>Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel.</source>
<translation>Silakan pilih sebuah look-and-feel untuk KDE Plasma Desktop. Anda juga dapat melewati langkah ini dan konfigurasi look-and-feel sekali ketika sistem terpasang. Mengeklik pilihan look-and-feel akan memberi Anda pratinjau langsung dari look-and-feel.</translation>
<translation>Silakan pilih sebuah look-and-feel untuk KDE Plasma Desktop. Anda juga dapat melewati langkah ini dan konfigurasi look-and-feel setelah sistem terinstal. Mengeklik pilihan look-and-feel akan memberi Anda pratinjau langsung pada look-and-feel tersebut.</translation>
</message>
</context>
<context>
@ -2035,17 +2035,17 @@ Keluaran:
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="34"/>
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="48"/>
<source>Remove Volume Group named %1.</source>
<translation type="unfinished"/>
<translation>Hapus Grup Volume bernama %1.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="41"/>
<source>Remove Volume Group named &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation type="unfinished"/>
<translation>Hapus Grup Volume bernama &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="61"/>
<source>The installer failed to remove a volume group named &apos;%1&apos;.</source>
<translation type="unfinished"/>
<translation>Installer gagal menghapus sebuah grup volume bernama &apos;%1&apos;.</translation>
</message>
</context>
<context>
@ -2058,7 +2058,7 @@ Keluaran:
<message>
<location filename="../src/modules/partition/gui/ReplaceWidget.cpp" line="134"/>
<source>Select where to install %1.&lt;br/&gt;&lt;font color=&quot;red&quot;&gt;Warning: &lt;/font&gt;this will delete all files on the selected partition.</source>
<translation>Pilih tempat pemasangan %1.&lt;br/&gt;&lt;font color=&quot;red&quot;&gt;Peringatan: &lt;/font&gt;hal ini akan menghapus semua berkas di partisi terpilih.</translation>
<translation>Pilih tempat instalasi %1.&lt;br/&gt;&lt;font color=&quot;red&quot;&gt;Peringatan: &lt;/font&gt;hal ini akan menghapus semua berkas di partisi terpilih.</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/ReplaceWidget.cpp" line="160"/>
@ -2068,17 +2068,17 @@ Keluaran:
<message>
<location filename="../src/modules/partition/gui/ReplaceWidget.cpp" line="168"/>
<source>%1 cannot be installed on empty space. Please select an existing partition.</source>
<translation>%1 tidak dapat dipasang di ruang kosong. Mohon pilih partisi yang tersedia.</translation>
<translation>%1 tidak dapat diinstal di ruang kosong. Mohon pilih partisi yang tersedia.</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/ReplaceWidget.cpp" line="178"/>
<source>%1 cannot be installed on an extended partition. Please select an existing primary or logical partition.</source>
<translation>%1 tidak bisa dipasang pada Partisi Extended. Mohon pilih Partisi Primary atau Logical yang tersedia.</translation>
<translation>%1 tidak bisa diinstal pada Partisi Extended. Mohon pilih Partisi Primary atau Logical yang tersedia.</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/ReplaceWidget.cpp" line="188"/>
<source>%1 cannot be installed on this partition.</source>
<translation>%1 tidak dapat dipasang di partisi ini.</translation>
<translation>%1 tidak dapat diinstal di partisi ini.</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/ReplaceWidget.cpp" line="194"/>
@ -2110,7 +2110,7 @@ Keluaran:
<location filename="../src/modules/partition/gui/ReplaceWidget.cpp" line="278"/>
<location filename="../src/modules/partition/gui/ReplaceWidget.cpp" line="302"/>
<source>&lt;strong&gt;%3&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;%1 will be installed on %2.&lt;br/&gt;&lt;font color=&quot;red&quot;&gt;Warning: &lt;/font&gt;all data on partition %2 will be lost.</source>
<translation>&lt;strong&gt;%3&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;%1 akan dipasang pada %2.&lt;br/&gt;&lt;font color=&quot;red&quot;&gt;Peringatan: &lt;/font&gt;seluruh data %2 akan hilang.</translation>
<translation>&lt;strong&gt;%3&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;%1 akan diinstal pada %2.&lt;br/&gt;&lt;font color=&quot;red&quot;&gt;Peringatan: &lt;/font&gt;seluruh data %2 akan hilang.</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/ReplaceWidget.cpp" line="270"/>
@ -2173,12 +2173,12 @@ Keluaran:
<message>
<location filename="../src/modules/welcome/checker/RequirementsChecker.cpp" line="155"/>
<source>The installer is not running with administrator rights.</source>
<translation>Pemasang tidak dijalankan dengan kewenangan administrator.</translation>
<translation>Installer tidak dijalankan dengan kewenangan administrator.</translation>
</message>
<message>
<location filename="../src/modules/welcome/checker/RequirementsChecker.cpp" line="163"/>
<source>The screen is too small to display the installer.</source>
<translation>Layar terlalu kecil untuk menampilkan pemasang.</translation>
<translation>Layar terlalu kecil untuk menampilkan installer.</translation>
</message>
</context>
<context>
@ -2186,29 +2186,29 @@ Keluaran:
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="130"/>
<source>Resize Filesystem Job</source>
<translation type="unfinished"/>
<translation>Tugas Ubah-ukuran Filesystem</translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="238"/>
<source>Invalid configuration</source>
<translation type="unfinished"/>
<translation>Konfigurasi taksah</translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="239"/>
<source>The file-system resize job has an invalid configuration and will not run.</source>
<translation type="unfinished"/>
<translation>Tugas pengubahan ukuran filesystem mempunyai sebuah konfigurasi yang taksah dan tidak akan berjalan.</translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="253"/>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="263"/>
<source>KPMCore not Available</source>
<translation type="unfinished"/>
<translation>KPMCore tidak Tersedia</translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="254"/>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="264"/>
<source>Calamares cannot start KPMCore for the file-system resize job.</source>
<translation type="unfinished"/>
<translation>Calamares gak bisa menjalankan KPMCore untuk tugas pengubahan ukuran filesystem.</translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="272"/>
@ -2217,39 +2217,39 @@ Keluaran:
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="303"/>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="320"/>
<source>Resize Failed</source>
<translation type="unfinished"/>
<translation>Pengubahan Ukuran, Gagal</translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="273"/>
<source>The filesystem %1 could not be found in this system, and cannot be resized.</source>
<translation type="unfinished"/>
<translation>Filesystem %1 enggak ditemukan dalam sistem ini, dan gak bisa diubahukurannya.</translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="274"/>
<source>The device %1 could not be found in this system, and cannot be resized.</source>
<translation type="unfinished"/>
<translation>Perangkat %1 enggak ditemukan dalam sistem ini, dan gak bisa diubahukurannya.</translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="282"/>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="295"/>
<source>The filesystem %1 cannot be resized.</source>
<translation type="unfinished"/>
<translation>Filesystem %1 gak bisa diubahukurannya.</translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="283"/>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="296"/>
<source>The device %1 cannot be resized.</source>
<translation type="unfinished"/>
<translation>Perangkat %1 gak bisa diubahukurannya.</translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="304"/>
<source>The filesystem %1 must be resized, but cannot.</source>
<translation type="unfinished"/>
<translation>Filesystem %1 mestinya bisa diubahukurannya, namun gak bisa.</translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="305"/>
<source>The device %1 must be resized, but cannot</source>
<translation type="unfinished"/>
<translation>Perangkat %1 mestinya bisa diubahukurannya, namun gak bisa.</translation>
</message>
</context>
<context>
@ -2272,7 +2272,7 @@ Keluaran:
<message>
<location filename="../src/modules/partition/jobs/ResizePartitionJob.cpp" line="85"/>
<source>The installer failed to resize partition %1 on disk &apos;%2&apos;.</source>
<translation>Pemasang gagal untuk merubah ukuran partisi %1 pada disk &apos;%2&apos;.</translation>
<translation>Installer gagal untuk merubah ukuran partisi %1 pada disk &apos;%2&apos;.</translation>
</message>
</context>
<context>
@ -2281,17 +2281,17 @@ Keluaran:
<location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="37"/>
<location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="55"/>
<source>Resize volume group named %1 from %2 to %3.</source>
<translation type="unfinished"/>
<translation>Ubah ukuran grup volume bernama %1 dari %2 ke %3.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="46"/>
<source>Resize volume group named &lt;strong&gt;%1&lt;/strong&gt; from &lt;strong&gt;%2&lt;/strong&gt; to &lt;strong&gt;%3&lt;/strong&gt;.</source>
<translation type="unfinished"/>
<translation>Ubah ukuran grup volume bernama &lt;strong&gt;%1&lt;/strong&gt; dari &lt;strong&gt;%2&lt;/strong&gt; ke %3&lt;strong&gt;.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="70"/>
<source>The installer failed to resize a volume group named &apos;%1&apos;.</source>
<translation type="unfinished"/>
<translation>Installer gagal mengubah ukuran sebuah grup volume bernama &apos;%1&apos;.</translation>
</message>
</context>
<context>
@ -2447,7 +2447,7 @@ Keluaran:
<message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="144"/>
<source>The installer failed to set flags on partition %1.</source>
<translation>Pemasang gagal menetapkan bendera pada partisi %1.</translation>
<translation>Installer gagal menetapkan bendera pada partisi %1.</translation>
</message>
</context>
<context>
@ -2553,7 +2553,7 @@ Keluaran:
<message>
<location filename="../src/modules/summary/SummaryPage.cpp" line="49"/>
<source>This is an overview of what will happen once you start the install procedure.</source>
<translation>Berikut adalah tinjauan mengenai yang akan terjadi setelah Anda memulai prosedur pemasangan.</translation>
<translation>Berikut adalah tinjauan mengenai yang akan terjadi setelah Anda memulai prosedur instalasi.</translation>
</message>
</context>
<context>
@ -2579,7 +2579,7 @@ Keluaran:
<message>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="88"/>
<source>Internal error in install-tracking.</source>
<translation>Galat intern di pelacakan-pemasangan.</translation>
<translation>Galat intern di pelacakan-instalasi.</translation>
</message>
<message>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="89"/>
@ -2631,7 +2631,7 @@ Keluaran:
<message>
<location filename="../src/modules/tracking/page_trackingstep.ui" line="72"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;By selecting this, you will send &lt;span style=&quot; font-weight:600;&quot;&gt;no information at all&lt;/span&gt; about your installation.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Dengan memilih ini, Anda akan mengirim &lt;span style=&quot; font-weight:600;&quot;&gt;tidak ada informasi di &lt;/span&gt; tentang pemasangan Anda. &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Dengan memilih ini, Anda akan mengirim &lt;span style=&quot; font-weight:600;&quot;&gt;tidak ada informasi di &lt;/span&gt; tentang instalasi Anda. &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/modules/tracking/page_trackingstep.ui" line="123"/>
@ -2655,22 +2655,22 @@ Keluaran:
<message>
<location filename="../src/modules/tracking/TrackingPage.cpp" line="44"/>
<source>Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. To see what will be sent, please click the help icon next to each area.</source>
<translation>Pasang bantuan pelacakan %1 untuk melihat berapa banyak pengguna memiliki, piranti keras apa yang mereka pasang %1 dan (dengan dua pilihan terakhir), dapatkan informasi berkelanjutan tentang aplikasi yang disukai. Untuk melihat apa yang akan dikirim, silakan klik ikon bantuan ke beberapa area selanjtunya.</translation>
<translation>Instal bantuan pelacakan %1 untuk melihat berapa banyak pengguna memiliki, piranti keras apa yang mereka instal %1 dan (dengan dua pilihan terakhir), dapatkan informasi berkelanjutan tentang aplikasi yang disukai. Untuk melihat apa yang akan dikirim, silakan klik ikon bantuan ke beberapa area selanjtunya.</translation>
</message>
<message>
<location filename="../src/modules/tracking/TrackingPage.cpp" line="45"/>
<source>By selecting this you will send information about your installation and hardware. This information will &lt;b&gt;only be sent once&lt;/b&gt; after the installation finishes.</source>
<translation>Dengan memilih ini Anda akan mengirim informasi tentang pemasangan dan piranti keras Anda. Informasi ini hanya akan &lt;b&gt;dikirim sekali&lt;/b&gt; setelah pemasangan selesai. </translation>
<translation>Dengan memilih ini Anda akan mengirim informasi tentang instalasi dan piranti keras Anda. Informasi ini hanya akan &lt;b&gt;dikirim sekali&lt;/b&gt; setelah instalasi selesai. </translation>
</message>
<message>
<location filename="../src/modules/tracking/TrackingPage.cpp" line="46"/>
<source>By selecting this you will &lt;b&gt;periodically&lt;/b&gt; send information about your installation, hardware and applications, to %1.</source>
<translation>Dengan memilih ini anda akan &lt;b&gt; secara berkala&lt;/b&gt; mengirim informasi tentang pemasangan, piranti keras dan aplikasi Anda, ke %1.</translation>
<translation>Dengan memilih ini anda akan &lt;b&gt; secara berkala&lt;/b&gt; mengirim informasi tentang instalasi, piranti keras dan aplikasi Anda, ke %1.</translation>
</message>
<message>
<location filename="../src/modules/tracking/TrackingPage.cpp" line="47"/>
<source>By selecting this you will &lt;b&gt;regularly&lt;/b&gt; send information about your installation, hardware, applications and usage patterns, to %1.</source>
<translation>Dengan memilih ini anda akan&lt;b&gt;secara teratur&lt;/b&gt; mengirim informasi tentang pemasangan, piranti keras, aplikasi dan pola pemakaian Anda, ke %1.</translation>
<translation>Dengan memilih ini anda akan&lt;b&gt;secara teratur&lt;/b&gt; mengirim informasi tentang instalasi, piranti keras, aplikasi dan pola pemakaian Anda, ke %1.</translation>
</message>
</context>
<context>
@ -2728,27 +2728,27 @@ Keluaran:
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="14"/>
<source>VolumeGroupDialog</source>
<translation type="unfinished"/>
<translation>DialogGrupVolume</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="20"/>
<source>List of Physical Volumes</source>
<translation type="unfinished"/>
<translation>Daftar dari Volume Fisik</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="30"/>
<source>Volume Group Name:</source>
<translation type="unfinished"/>
<translation>Nama Grup Volume:</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="43"/>
<source>Volume Group Type:</source>
<translation type="unfinished"/>
<translation>Tipe Grup Volume:</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="56"/>
<source>Physical Extent Size:</source>
<translation type="unfinished"/>
<translation>Ukuran Luas Fisik:</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="66"/>
@ -2758,7 +2758,7 @@ Keluaran:
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="82"/>
<source>Total Size:</source>
<translation type="unfinished"/>
<translation>Total Ukuran:</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="92"/>
@ -2766,22 +2766,22 @@ Keluaran:
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="132"/>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="152"/>
<source>---</source>
<translation type="unfinished"/>
<translation>---</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="102"/>
<source>Used Size:</source>
<translation type="unfinished"/>
<translation>Ukuran Terpakai:</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="122"/>
<source>Total Sectors:</source>
<translation type="unfinished"/>
<translation>Total Sektor:</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="142"/>
<source>Quantity of LVs:</source>
<translation type="unfinished"/>
<translation>Kuantitas LV:</translation>
</message>
</context>
<context>
@ -2819,17 +2819,17 @@ Keluaran:
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="60"/>
<source>&lt;h1&gt;Welcome to the %1 installer.&lt;/h1&gt;</source>
<translation>&lt;h1&gt;Selamat datang di pemasang %1.&lt;/h1&gt;</translation>
<translation>&lt;h1&gt;Selamat datang di installer %1.&lt;/h1&gt;</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="60"/>
<source>&lt;h1&gt;Welcome to the Calamares installer for %1.&lt;/h1&gt;</source>
<translation>&lt;h1&gt;Selamat datang di Calamares pemasang untuk %1.&lt;/h1&gt;</translation>
<translation>&lt;h1&gt;Selamat datang di Calamares installer untuk %1.&lt;/h1&gt;</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="73"/>
<source>About %1 installer</source>
<translation>Tentang pemasang %1</translation>
<translation>Tentang installer %1</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="75"/>

View File

@ -192,7 +192,7 @@
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="179"/>
<source>Calamares Initialization Failed</source>
<translation type="unfinished"/>
<translation>Calamares uppsetning mistókst</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="180"/>
@ -207,7 +207,7 @@
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="277"/>
<source>&amp;Install</source>
<translation type="unfinished"/>
<translation>&amp;Setja upp</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="325"/>
@ -503,7 +503,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast.</translation>
<location filename="../src/libcalamares/utils/CommandList.cpp" line="127"/>
<location filename="../src/libcalamares/utils/CommandList.cpp" line="138"/>
<source>Could not run command.</source>
<translation type="unfinished"/>
<translation>Gat ekki keyrt skipun.</translation>
</message>
<message>
<location filename="../src/libcalamares/utils/CommandList.cpp" line="128"/>
@ -559,7 +559,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast.</translation>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="151"/>
<source>LVM LV name</source>
<translation type="unfinished"/>
<translation>LVM LV nafn</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="188"/>
@ -822,7 +822,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast.</translation>
<message>
<location filename="../src/modules/partition/core/DeviceModel.cpp" line="89"/>
<source>%1 - (%2)</source>
<translation type="unfinished"/>
<translation>%1 - (%2)</translation>
</message>
</context>
<context>
@ -1281,17 +1281,17 @@ Uppsetningarforritið mun hætta og allar breytingar tapast.</translation>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="63"/>
<source>Password is too short</source>
<translation type="unfinished"/>
<translation>Lykilorðið þitt er of stutt</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="85"/>
<source>Password is too long</source>
<translation type="unfinished"/>
<translation>Lykilorðið þitt er of langt</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="151"/>
<source>Password is too weak</source>
<translation type="unfinished"/>
<translation>Lykilorðið þitt er of veikt</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="158"/>
@ -1386,7 +1386,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast.</translation>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="196"/>
<source>The password is too short</source>
<translation type="unfinished"/>
<translation>Lykilorðið er of stutt</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="198"/>
@ -1906,7 +1906,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast.</translation>
<message>
<location filename="../src/modules/preservefiles/PreserveFiles.cpp" line="85"/>
<source>Saving files for later ...</source>
<translation type="unfinished"/>
<translation>Vista skrár fyrir seinna ...</translation>
</message>
<message>
<location filename="../src/modules/preservefiles/PreserveFiles.cpp" line="123"/>
@ -2540,7 +2540,7 @@ Output:
<location filename="../src/qml/calamares/slideshow/SlideCounter.qml" line="36"/>
<source>%L1 / %L2</source>
<extracomment>slide counter, %1 of %2 (numeric)</extracomment>
<translation type="unfinished"/>
<translation>%L1 / %L2</translation>
</message>
</context>
<context>
@ -2640,7 +2640,7 @@ Output:
<location filename="../src/modules/tracking/page_trackingstep.ui" line="195"/>
<location filename="../src/modules/tracking/page_trackingstep.ui" line="257"/>
<source>...</source>
<translation type="unfinished"/>
<translation>...</translation>
</message>
<message>
<location filename="../src/modules/tracking/page_trackingstep.ui" line="271"/>
@ -2753,7 +2753,7 @@ Output:
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="82"/>
<source>Total Size:</source>
<translation type="unfinished"/>
<translation>Heildar stærð:</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="92"/>
@ -2761,12 +2761,12 @@ Output:
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="132"/>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="152"/>
<source>---</source>
<translation type="unfinished"/>
<translation>---</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="102"/>
<source>Used Size:</source>
<translation type="unfinished"/>
<translation>Notuð stærð:</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="122"/>

View File

@ -14,7 +14,7 @@
<message>
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="91"/>
<source>This system was started with a &lt;strong&gt;BIOS&lt;/strong&gt; boot environment.&lt;br&gt;&lt;br&gt;To configure startup from a BIOS environment, this installer must install a boot loader, like &lt;strong&gt;GRUB&lt;/strong&gt;, either at the beginning of a partition or on the &lt;strong&gt;Master Boot Record&lt;/strong&gt; near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own.</source>
<translation> &lt;strong&gt;BIOS&lt;/strong&gt; &lt;br&gt;&lt;br&gt; BIOS()&lt;strong&gt;&lt;/strong&gt; &lt;strong&gt;GRUB&lt;/strong&gt; </translation>
<translation> &lt;strong&gt;BIOS&lt;/strong&gt; &lt;br&gt;&lt;br&gt; BIOS () &lt;strong&gt;&lt;/strong&gt; &lt;strong&gt;GRUB&lt;/strong&gt; </translation>
</message>
</context>
<context>
@ -169,19 +169,19 @@
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="74"/>
<source>&amp;Back</source>
<translation>&amp;B</translation>
<translation> (&amp;B)</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="75"/>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="279"/>
<source>&amp;Next</source>
<translation>&amp;N</translation>
<translation> (&amp;N)</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="76"/>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="288"/>
<source>&amp;Cancel</source>
<translation>&amp;C</translation>
<translation> (&amp;C)</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="77"/>
@ -197,7 +197,7 @@
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="180"/>
<source>%1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution.</source>
<translation>%1 Calamares Calamares 使</translation>
<translation>%1 Calamares Calamares 使</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="185"/>
@ -207,7 +207,7 @@
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="277"/>
<source>&amp;Install</source>
<translation>&amp;I</translation>
<translation> (&amp;I)</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="325"/>
@ -224,17 +224,17 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="331"/>
<source>&amp;Yes</source>
<translation>&amp;Y</translation>
<translation> (&amp;Y)</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="332"/>
<source>&amp;No</source>
<translation>&amp;N</translation>
<translation> (&amp;N)</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="163"/>
<source>&amp;Close</source>
<translation>&amp;C</translation>
<translation> (&amp;C)</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="237"/>
@ -249,17 +249,17 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="243"/>
<source>&amp;Install now</source>
<translation>&amp;I</translation>
<translation> (&amp;I)</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="244"/>
<source>Go &amp;back</source>
<translation>&amp;B</translation>
<translation> (&amp;B)</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="283"/>
<source>&amp;Done</source>
<translation>&amp;D</translation>
<translation> (&amp;D)</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="284"/>
@ -371,7 +371,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="129"/>
<source>Select storage de&amp;vice:</source>
<translation>&amp;V:</translation>
<translation> (&amp;V):</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="130"/>
@ -539,22 +539,22 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="55"/>
<source>Partition &amp;Type:</source>
<translation>&amp;T:</translation>
<translation> (&amp;T):</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="67"/>
<source>&amp;Primary</source>
<translation>&amp;P</translation>
<translation> (&amp;P)</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="77"/>
<source>E&amp;xtended</source>
<translation>&amp;x</translation>
<translation> (&amp;X)</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="119"/>
<source>Fi&amp;le System:</source>
<translation> &amp;L:</translation>
<translation> (&amp;L):</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="151"/>
@ -569,17 +569,17 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="161"/>
<source>&amp;Mount Point:</source>
<translation>&amp;M</translation>
<translation> (&amp;M)</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="38"/>
<source>Si&amp;ze:</source>
<translation>&amp;Z</translation>
<translation> (&amp;Z)</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="72"/>
<source>En&amp;crypt</source>
<translation>&amp;C</translation>
<translation> (&amp;C)</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="151"/>
@ -650,7 +650,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionTableDialog.ui" line="82"/>
<source>GUID Partition Table (GPT)</source>
<translation>GUID (GPT)</translation>
<translation>GUID (GPT)</translation>
</message>
</context>
<context>
@ -784,7 +784,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/DeviceInfoWidget.cpp" line="150"/>
<source>The type of &lt;strong&gt;partition table&lt;/strong&gt; on the selected storage device.&lt;br&gt;&lt;br&gt;The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.&lt;br&gt;This installer will keep the current partition table unless you explicitly choose otherwise.&lt;br&gt;If unsure, on modern systems GPT is preferred.</source>
<translation>&lt;strong&gt; &lt;/strong&gt; &lt;br&gt;&lt;br&gt; &lt;br&gt; GPT</translation>
<translation>&lt;strong&gt; &lt;/strong&gt; &lt;br&gt;&lt;br&gt; &lt;br&gt; GPT</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/DeviceInfoWidget.cpp" line="107"/>
@ -866,7 +866,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="60"/>
<source>&amp;Keep</source>
<translation>&amp;K</translation>
<translation> (&amp;K)</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="70"/>
@ -881,12 +881,12 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="99"/>
<source>&amp;Mount Point:</source>
<translation>&amp;M</translation>
<translation> (&amp;M)</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="119"/>
<source>Si&amp;ze:</source>
<translation>&amp;Z:</translation>
<translation> (&amp;Z):</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="129"/>
@ -896,7 +896,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="136"/>
<source>Fi&amp;le System:</source>
<translation>&amp;L</translation>
<translation> (&amp;L)</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="149"/>
@ -919,7 +919,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/EncryptWidget.ui" line="32"/>
<source>En&amp;crypt system</source>
<translation>&amp;C</translation>
<translation> (&amp;C)</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/EncryptWidget.ui" line="42"/>
@ -990,7 +990,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/finished/FinishedPage.ui" line="98"/>
<source>&amp;Restart now</source>
<translation>&amp;R</translation>
<translation> (&amp;R)</translation>
</message>
<message>
<location filename="../src/modules/finished/FinishedPage.cpp" line="51"/>
@ -1107,12 +1107,12 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/locale/LCLocaleDialog.cpp" line="66"/>
<source>&amp;Cancel</source>
<translation>&amp;C</translation>
<translation> (&amp;C)</translation>
</message>
<message>
<location filename="../src/modules/locale/LCLocaleDialog.cpp" line="67"/>
<source>&amp;OK</source>
<translation>&amp;O</translation>
<translation> (&amp;O)</translation>
</message>
</context>
<context>
@ -1219,7 +1219,7 @@ The installer will quit and all changes will be lost.</source>
<location filename="../src/modules/locale/LocalePage.cpp" line="220"/>
<location filename="../src/modules/locale/LocalePage.cpp" line="221"/>
<source>&amp;Change...</source>
<translation>&amp;C...</translation>
<translation> (&amp;C)...</translation>
</message>
<message>
<location filename="../src/modules/locale/LocalePage.cpp" line="398"/>
@ -1696,7 +1696,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="22"/>
<source>Storage de&amp;vice:</source>
<translation> &amp;V:</translation>
<translation> (&amp;V):</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="51"/>
@ -1706,22 +1706,22 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="87"/>
<source>New Partition &amp;Table</source>
<translation>&amp;T</translation>
<translation> (&amp;T)</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="107"/>
<source>Cre&amp;ate</source>
<translation>&amp;a</translation>
<translation> (&amp;A)</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="114"/>
<source>&amp;Edit</source>
<translation>&amp;E</translation>
<translation> (&amp;E)</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="121"/>
<source>&amp;Delete</source>
<translation>&amp;D</translation>
<translation> (&amp;D)</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="132"/>
@ -1751,7 +1751,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.cpp" line="217"/>
<source>Are you sure you want to create a new partition table on %1?</source>
<translation>1 </translation>
<translation>%1 </translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.cpp" line="241"/>
@ -1859,7 +1859,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="451"/>
<source>A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.&lt;br/&gt;&lt;br/&gt;There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.&lt;br/&gt;You may continue if you wish, but filesystem unlocking will happen later during system startup.&lt;br/&gt;To encrypt the boot partition, go back and recreate it, selecting &lt;strong&gt;Encrypt&lt;/strong&gt; in the partition creation window.</source>
<translation>&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Encrypt&lt;/strong&gt;</translation>
<translation>&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Encrypt&lt;/strong&gt; () </translation>
</message>
</context>
<context>
@ -1917,7 +1917,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/preservefiles/PreserveFiles.cpp" line="177"/>
<source>Not all of the configured files could be preserved.</source>
<translation></translation>
<translation></translation>
</message>
</context>
<context>
@ -2654,7 +2654,7 @@ Output:
<message>
<location filename="../src/modules/tracking/TrackingPage.cpp" line="44"/>
<source>Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. To see what will be sent, please click the help icon next to each area.</source>
<translation> %1 %1 (2) </translation>
<translation> %1 %1 (2) </translation>
</message>
<message>
<location filename="../src/modules/tracking/TrackingPage.cpp" line="45"/>
@ -2757,7 +2757,7 @@ Output:
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="82"/>
<source>Total Size:</source>
<translation>:</translation>
<translation>:</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="92"/>
@ -2775,7 +2775,7 @@ Output:
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="122"/>
<source>Total Sectors:</source>
<translation>:</translation>
<translation>:</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="142"/>
@ -2793,17 +2793,17 @@ Output:
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="75"/>
<source>&amp;Language:</source>
<translation>&amp;L:</translation>
<translation> (&amp;L):</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="176"/>
<source>&amp;Release notes</source>
<translation>&amp;R</translation>
<translation> (&amp;R)</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="166"/>
<source>&amp;Known issues</source>
<translation>&amp;K</translation>
<translation> (&amp;K)</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="156"/>
@ -2813,7 +2813,7 @@ Output:
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="146"/>
<source>&amp;About</source>
<translation>&amp;A</translation>
<translation> (&amp;A)</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="60"/>

2847
lang/calamares_mk.ts Normal file

File diff suppressed because it is too large Load Diff

View File

@ -718,22 +718,22 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/jobs/CreateVolumeGroupJob.cpp" line="38"/>
<source>Create new volume group named %1.</source>
<translation type="unfinished"/>
<translation>Создать новую группу томов на диске %1</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/CreateVolumeGroupJob.cpp" line="45"/>
<source>Create new volume group named &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation type="unfinished"/>
<translation>Создать новую группу томов на диске %1</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/CreateVolumeGroupJob.cpp" line="52"/>
<source>Creating new volume group named %1.</source>
<translation type="unfinished"/>
<translation>Cоздание новой группы томов на диске %1</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/CreateVolumeGroupJob.cpp" line="65"/>
<source>The installer failed to create a volume group named &apos;%1&apos;.</source>
<translation type="unfinished"/>
<translation>Программа установки не смогла создать группу томов на диске &apos;%1&apos;.</translation>
</message>
</context>
<context>
@ -829,7 +829,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/dracutlukscfg/DracutLuksCfgJob.cpp" line="131"/>
<source>Write LUKS configuration for Dracut to %1</source>
<translation type="unfinished"/>
<translation>Записать LUKS настройки для Dracut в %1</translation>
</message>
<message>
<location filename="../src/modules/dracutlukscfg/DracutLuksCfgJob.cpp" line="133"/>
@ -1470,7 +1470,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="239"/>
<source>Bad integer value of setting - %1</source>
<translation type="unfinished"/>
<translation>Недопустимое целое значение свойства - %1</translation>
</message>
<message>
<location filename="../src/modules/users/CheckPWQuality.cpp" line="243"/>
@ -1729,7 +1729,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="139"/>
<source>Resize Volume Group</source>
<translation type="unfinished"/>
<translation>Изменить размер группы томов</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="146"/>
@ -1739,12 +1739,12 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="153"/>
<source>Remove Volume Group</source>
<translation type="unfinished"/>
<translation>Удалить группу томов</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="180"/>
<source>I&amp;nstall boot loader on:</source>
<translation type="unfinished"/>
<translation>Уст&amp;ановить загрузчик в:</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.cpp" line="217"/>
@ -1884,7 +1884,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/plasmalnf/page_plasmalnf.ui" line="20"/>
<source>Placeholder</source>
<translation type="unfinished"/>
<translation>Заменитель</translation>
</message>
<message>
<location filename="../src/modules/plasmalnf/PlasmaLnfPage.cpp" line="67"/>
@ -1905,12 +1905,12 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/preservefiles/PreserveFiles.cpp" line="85"/>
<source>Saving files for later ...</source>
<translation type="unfinished"/>
<translation>Сохраняю файлы на потом...</translation>
</message>
<message>
<location filename="../src/modules/preservefiles/PreserveFiles.cpp" line="123"/>
<source>No files configured to save for later.</source>
<translation type="unfinished"/>
<translation>Нет файлов, которые требуется сохранить на потом.</translation>
</message>
<message>
<location filename="../src/modules/preservefiles/PreserveFiles.cpp" line="177"/>
@ -1924,7 +1924,8 @@ The installer will quit and all changes will be lost.</source>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="271"/>
<source>
There was no output from the command.</source>
<translation type="unfinished"/>
<translation>
Вывода из команды не последовало.</translation>
</message>
<message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="272"/>
@ -2031,17 +2032,17 @@ Output:
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="34"/>
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="48"/>
<source>Remove Volume Group named %1.</source>
<translation type="unfinished"/>
<translation>Удалить группу томов на диске %1</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="41"/>
<source>Remove Volume Group named &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation type="unfinished"/>
<translation>Удалить группу томов на диске %1</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="61"/>
<source>The installer failed to remove a volume group named &apos;%1&apos;.</source>
<translation type="unfinished"/>
<translation>Установщик не смог удалить группу томов на диске &apos;%1&apos;.</translation>
</message>
</context>
<context>
@ -2182,12 +2183,12 @@ Output:
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="130"/>
<source>Resize Filesystem Job</source>
<translation type="unfinished"/>
<translation>Изменить размер файловой системы</translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="238"/>
<source>Invalid configuration</source>
<translation type="unfinished"/>
<translation>Недействительная конфигурация</translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="239"/>
@ -2213,7 +2214,7 @@ Output:
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="303"/>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="320"/>
<source>Resize Failed</source>
<translation type="unfinished"/>
<translation>Не удалось изменить размер</translation>
</message>
<message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="273"/>
@ -2622,7 +2623,7 @@ Output:
<message>
<location filename="../src/modules/tracking/page_trackingstep.ui" line="24"/>
<source>Placeholder</source>
<translation type="unfinished"/>
<translation>Заменитель</translation>
</message>
<message>
<location filename="../src/modules/tracking/page_trackingstep.ui" line="72"/>

Binary file not shown.

View File

@ -3,6 +3,9 @@
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# Translators:
# Abubakaragoub Y <Abubakaryagob@gmail.com>, 2018
#
#, fuzzy
msgid ""
msgstr ""
@ -10,6 +13,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-10-05 11:34-0400\n"
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
"Last-Translator: Abubakaragoub Y <Abubakaryagob@gmail.com>, 2018\n"
"Language-Team: Arabic (https://www.transifex.com/calamares/teams/20061/ar/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -19,43 +23,43 @@ msgstr ""
#: src/modules/displaymanager/main.py:380
msgid "Cannot write KDM configuration file"
msgstr ""
msgstr "فشلت كتابة ملف ضبط KDM."
#: src/modules/displaymanager/main.py:381
msgid "KDM config file {!s} does not exist"
msgstr ""
msgstr "ملف ضبط KDM {!s} غير موجود"
#: src/modules/displaymanager/main.py:442
msgid "Cannot write LXDM configuration file"
msgstr ""
msgstr "فشلت كتابة ملف ضبط LXDM."
#: src/modules/displaymanager/main.py:443
msgid "LXDM config file {!s} does not exist"
msgstr ""
msgstr "ملف ضبط LXDM {!s} غير موجود"
#: src/modules/displaymanager/main.py:517
msgid "Cannot write LightDM configuration file"
msgstr ""
msgstr "فشلت كتابة ملف ضبط LightDM."
#: src/modules/displaymanager/main.py:518
msgid "LightDM config file {!s} does not exist"
msgstr ""
msgstr "ملف ضبط LightDM {!s} غير موجود"
#: src/modules/displaymanager/main.py:592
msgid "Cannot configure LightDM"
msgstr ""
msgstr "فشل ضبط LightDM"
#: src/modules/displaymanager/main.py:593
msgid "No LightDM greeter installed."
msgstr ""
msgstr "لم يتم تصيب LightDM"
#: src/modules/displaymanager/main.py:624
msgid "Cannot write SLIM configuration file"
msgstr ""
msgstr "فشلت كتابة ملف ضبط SLIM."
#: src/modules/displaymanager/main.py:625
msgid "SLIM config file {!s} does not exist"
msgstr ""
msgstr "ملف ضبط SLIM {!s} غير موجود"
#: src/modules/displaymanager/main.py:740
#: src/modules/displaymanager/main.py:772
@ -78,28 +82,28 @@ msgstr ""
#: src/modules/umount/main.py:40
msgid "Unmount file systems."
msgstr ""
msgstr "الغاء تحميل ملف النظام"
#: src/modules/dummypython/main.py:44
msgid "Dummy python job."
msgstr ""
msgstr "عملية بايثون دميه"
#: src/modules/dummypython/main.py:97
msgid "Dummy python step {}"
msgstr ""
msgstr "عملية دميه خطوه بايثون {}"
#: src/modules/machineid/main.py:35
msgid "Generate machine-id."
msgstr ""
msgstr "توليد معرف الجهاز"
#: src/modules/packages/main.py:62
#, python-format
msgid "Processing packages (%(count)d / %(total)d)"
msgstr ""
msgstr "جاري تحميل الحزم (%(count)d/%(total)d)"
#: src/modules/packages/main.py:64 src/modules/packages/main.py:74
msgid "Install packages."
msgstr ""
msgstr "تثبيت الحزم"
#: src/modules/packages/main.py:67
#, python-format

View File

@ -3,9 +3,6 @@
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# Translators:
# enolp <enolp@softastur.org>, 2017
#
#, fuzzy
msgid ""
msgstr ""
@ -13,7 +10,6 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-10-05 11:34-0400\n"
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
"Last-Translator: enolp <enolp@softastur.org>, 2017\n"
"Language-Team: Asturian (https://www.transifex.com/calamares/teams/20061/ast/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -86,15 +82,15 @@ msgstr ""
#: src/modules/dummypython/main.py:44
msgid "Dummy python job."
msgstr "Trabayu maniquín de python."
msgstr ""
#: src/modules/dummypython/main.py:97
msgid "Dummy python step {}"
msgstr "Pasu maniquín de python {}"
msgstr ""
#: src/modules/machineid/main.py:35
msgid "Generate machine-id."
msgstr "Xenerar machine-id."
msgstr ""
#: src/modules/packages/main.py:62
#, python-format

Binary file not shown.

View File

@ -4,7 +4,7 @@
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# Translators:
# Dirk Hein <bankman@mailbox.org>, 2017
# Adriaan de Groot <groot@kde.org>, 2017
# Christian Spaan, 2018
# Andreas Eitel, 2018
#
@ -115,11 +115,11 @@ msgstr "Pakete installieren "
msgid "Installing one package."
msgid_plural "Installing %(num)d packages."
msgstr[0] "Installiere ein Paket"
msgstr[1] "Installiere %(num)dPakete."
msgstr[1] "Installiere %(num)d Pakete."
#: src/modules/packages/main.py:70
#, python-format
msgid "Removing one package."
msgid_plural "Removing %(num)d packages."
msgstr[0] "Entferne ein Paket"
msgstr[1] "Entferne %(num)dPakete."
msgstr[1] "Entferne %(num)d Pakete."

Binary file not shown.

View File

@ -6,6 +6,7 @@
# Translators:
# strel, 2017
# Francisco Sánchez López de Lerma <fslopezlerma@gmail.com>, 2018
# Guido Grasso <cuquiman97@gmail.com>, 2018
#
#, fuzzy
msgid ""
@ -14,7 +15,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-10-05 11:34-0400\n"
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
"Last-Translator: Francisco Sánchez López de Lerma <fslopezlerma@gmail.com>, 2018\n"
"Last-Translator: Guido Grasso <cuquiman97@gmail.com>, 2018\n"
"Language-Team: Spanish (https://www.transifex.com/calamares/teams/20061/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -24,31 +25,31 @@ msgstr ""
#: src/modules/displaymanager/main.py:380
msgid "Cannot write KDM configuration file"
msgstr ""
msgstr "No se puede escribir el archivo de configuración KDM"
#: src/modules/displaymanager/main.py:381
msgid "KDM config file {!s} does not exist"
msgstr ""
msgstr "El archivo de configuración {!s} de KDM no existe"
#: src/modules/displaymanager/main.py:442
msgid "Cannot write LXDM configuration file"
msgstr ""
msgstr "No se puede escribir el archivo de configuración LXDM"
#: src/modules/displaymanager/main.py:443
msgid "LXDM config file {!s} does not exist"
msgstr ""
msgstr "El archivo de configuracion {!s} de LXDM no existe"
#: src/modules/displaymanager/main.py:517
msgid "Cannot write LightDM configuration file"
msgstr ""
msgstr "No se puede escribir el archivo de configuración de LightDM"
#: src/modules/displaymanager/main.py:518
msgid "LightDM config file {!s} does not exist"
msgstr ""
msgstr "El archivo de configuración {!s} de LightDM no existe"
#: src/modules/displaymanager/main.py:592
msgid "Cannot configure LightDM"
msgstr ""
msgstr "No se puede configurar LightDM"
#: src/modules/displaymanager/main.py:593
msgid "No LightDM greeter installed."
@ -56,16 +57,18 @@ msgstr ""
#: src/modules/displaymanager/main.py:624
msgid "Cannot write SLIM configuration file"
msgstr ""
msgstr "No se puede escribir el archivo de configuración de SLIM"
#: src/modules/displaymanager/main.py:625
msgid "SLIM config file {!s} does not exist"
msgstr ""
msgstr "El archivo de configuración {!s} de SLIM no existe"
#: src/modules/displaymanager/main.py:740
#: src/modules/displaymanager/main.py:772
msgid "No display managers selected for the displaymanager module."
msgstr ""
"No se ha seleccionado ningún gestor de pantalla para el modulo "
"displaymanager"
#: src/modules/displaymanager/main.py:741
msgid ""
@ -76,10 +79,12 @@ msgstr ""
#: src/modules/displaymanager/main.py:773
msgid "The list is empty after checking for installed display managers."
msgstr ""
"La lista está vacía después de haber chequeado los gestores de pantalla "
"instalados"
#: src/modules/displaymanager/main.py:821
msgid "Display manager configuration was incomplete"
msgstr ""
msgstr "La configuración del gestor de pantalla estaba incompleta"
#: src/modules/umount/main.py:40
msgid "Unmount file systems."

Binary file not shown.

View File

@ -3,6 +3,9 @@
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# Translators:
# Ander Elortondo, 2019
#
#, fuzzy
msgid ""
msgstr ""
@ -10,6 +13,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-10-05 11:34-0400\n"
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
"Last-Translator: Ander Elortondo, 2019\n"
"Language-Team: Basque (https://www.transifex.com/calamares/teams/20061/eu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -19,98 +23,102 @@ msgstr ""
#: src/modules/displaymanager/main.py:380
msgid "Cannot write KDM configuration file"
msgstr ""
msgstr "Ezin da KDM konfigurazio fitxategia idatzi"
#: src/modules/displaymanager/main.py:381
msgid "KDM config file {!s} does not exist"
msgstr ""
msgstr "KDM konfigurazio fitxategia {!s} ez da existitzen"
#: src/modules/displaymanager/main.py:442
msgid "Cannot write LXDM configuration file"
msgstr ""
msgstr "Ezin da LXDM konfigurazio fitxategia idatzi"
#: src/modules/displaymanager/main.py:443
msgid "LXDM config file {!s} does not exist"
msgstr ""
msgstr "LXDM konfigurazio fitxategia {!s} ez da existitzen"
#: src/modules/displaymanager/main.py:517
msgid "Cannot write LightDM configuration file"
msgstr ""
msgstr "Ezin da LightDM konfigurazio fitxategia idatzi"
#: src/modules/displaymanager/main.py:518
msgid "LightDM config file {!s} does not exist"
msgstr ""
msgstr "LightDM konfigurazio fitxategia {!s} ez da existitzen"
#: src/modules/displaymanager/main.py:592
msgid "Cannot configure LightDM"
msgstr ""
msgstr "Ezin da LightDM konfiguratu"
#: src/modules/displaymanager/main.py:593
msgid "No LightDM greeter installed."
msgstr ""
msgstr "Ez dago LightDM harrera instalatua."
#: src/modules/displaymanager/main.py:624
msgid "Cannot write SLIM configuration file"
msgstr ""
msgstr "Ezin da SLIM konfigurazio fitxategia idatzi"
#: src/modules/displaymanager/main.py:625
msgid "SLIM config file {!s} does not exist"
msgstr ""
msgstr "SLIM konfigurazio fitxategia {!s} ez da existitzen"
#: src/modules/displaymanager/main.py:740
#: src/modules/displaymanager/main.py:772
msgid "No display managers selected for the displaymanager module."
msgstr ""
"Ez da pantaila kudeatzailerik aukeratu pantaila-kudeatzaile modulurako."
#: src/modules/displaymanager/main.py:741
msgid ""
"The displaymanagers list is empty or undefined in bothglobalstorage and "
"displaymanager.conf."
msgstr ""
"Pantaila-kudeatzaile-zerrenda hutsik dago edo definitzeke bothglobalstorage "
"eta displaymanager.conf"
#: src/modules/displaymanager/main.py:773
msgid "The list is empty after checking for installed display managers."
msgstr ""
"Zerrenda hutsik dago instalatutako pantaila-kudeatzaileak egiaztatu ondoren."
#: src/modules/displaymanager/main.py:821
msgid "Display manager configuration was incomplete"
msgstr ""
msgstr "Pantaila kudeatzaile konfigurazioa osotu gabe"
#: src/modules/umount/main.py:40
msgid "Unmount file systems."
msgstr ""
msgstr "Fitxategi sistemak desmuntatu."
#: src/modules/dummypython/main.py:44
msgid "Dummy python job."
msgstr ""
msgstr "Dummy python lana."
#: src/modules/dummypython/main.py:97
msgid "Dummy python step {}"
msgstr ""
msgstr "Dummy python urratsa {}"
#: src/modules/machineid/main.py:35
msgid "Generate machine-id."
msgstr ""
msgstr "Sortu makina-id."
#: src/modules/packages/main.py:62
#, python-format
msgid "Processing packages (%(count)d / %(total)d)"
msgstr ""
msgstr "Paketeak prozesatzen (%(count)d/ %(total)d) "
#: src/modules/packages/main.py:64 src/modules/packages/main.py:74
msgid "Install packages."
msgstr ""
msgstr "Instalatu paketeak"
#: src/modules/packages/main.py:67
#, python-format
msgid "Installing one package."
msgid_plural "Installing %(num)d packages."
msgstr[0] ""
msgstr[1] ""
msgstr[0] "Pakete bat instalatzen."
msgstr[1] "%(num)dpakete instalatzen."
#: src/modules/packages/main.py:70
#, python-format
msgid "Removing one package."
msgid_plural "Removing %(num)d packages."
msgstr[0] ""
msgstr[1] ""
msgstr[0] "Pakete bat kentzen."
msgstr[1] "%(num)dpakete kentzen."

Binary file not shown.

View File

@ -8,6 +8,8 @@
# Abdallah B <bahassinea@gmail.com>, 2017
# Aestan <anthony.margerand@protonmail.com>, 2018
# Jeremy Gourmel <jgourmel@free.fr>, 2018
# Aurnytoraink <wiiu3dsxl13127@gmail.com>, 2018
# Florian B <florianb3522@gmail.com>, 2018
#
#, fuzzy
msgid ""
@ -16,7 +18,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-10-05 11:34-0400\n"
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
"Last-Translator: Jeremy Gourmel <jgourmel@free.fr>, 2018\n"
"Last-Translator: Florian B <florianb3522@gmail.com>, 2018\n"
"Language-Team: French (https://www.transifex.com/calamares/teams/20061/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -26,23 +28,23 @@ msgstr ""
#: src/modules/displaymanager/main.py:380
msgid "Cannot write KDM configuration file"
msgstr ""
msgstr "Impossible d'écrire le fichier de configuration KDM"
#: src/modules/displaymanager/main.py:381
msgid "KDM config file {!s} does not exist"
msgstr ""
msgstr "Le fichier de configuration KDM n'existe pas"
#: src/modules/displaymanager/main.py:442
msgid "Cannot write LXDM configuration file"
msgstr ""
msgstr "Impossible d'écrire le fichier de configuration LXDM"
#: src/modules/displaymanager/main.py:443
msgid "LXDM config file {!s} does not exist"
msgstr ""
msgstr "Le fichier de configuration LXDM n'existe pas"
#: src/modules/displaymanager/main.py:517
msgid "Cannot write LightDM configuration file"
msgstr ""
msgstr "Impossible d'écrire le fichier de configuration LightDM"
#: src/modules/displaymanager/main.py:518
msgid "LightDM config file {!s} does not exist"
@ -50,15 +52,15 @@ msgstr ""
#: src/modules/displaymanager/main.py:592
msgid "Cannot configure LightDM"
msgstr ""
msgstr "Impossible de configurer LightDM"
#: src/modules/displaymanager/main.py:593
msgid "No LightDM greeter installed."
msgstr ""
msgstr "Aucun hôte LightDM est installé"
#: src/modules/displaymanager/main.py:624
msgid "Cannot write SLIM configuration file"
msgstr ""
msgstr "Impossible d'écrire le fichier de configuration SLIM"
#: src/modules/displaymanager/main.py:625
msgid "SLIM config file {!s} does not exist"
@ -68,20 +70,26 @@ msgstr ""
#: src/modules/displaymanager/main.py:772
msgid "No display managers selected for the displaymanager module."
msgstr ""
"Aucun gestionnaire d'affichage n'a été sélectionné pour le module de "
"gestionnaire d'affichage"
#: src/modules/displaymanager/main.py:741
msgid ""
"The displaymanagers list is empty or undefined in bothglobalstorage and "
"displaymanager.conf."
msgstr ""
"La liste des gestionnaires d'affichage est vide ou indéfinie dans "
"bothglobalstorage et displaymanager.conf."
#: src/modules/displaymanager/main.py:773
msgid "The list is empty after checking for installed display managers."
msgstr ""
"La liste est vide après vérification des gestionnaires d'affichage "
"installés."
#: src/modules/displaymanager/main.py:821
msgid "Display manager configuration was incomplete"
msgstr ""
msgstr "La configuration du gestionnaire d'affichage était incomplète"
#: src/modules/umount/main.py:40
msgid "Unmount file systems."

Binary file not shown.

View File

@ -6,6 +6,7 @@
# Translators:
# Choiril Abdul, 2018
# Harry Suryapambagya <harsxv@gmail.com>, 2018
# Wantoyo <wantoyek@gmail.com>, 2018
#
#, fuzzy
msgid ""
@ -14,7 +15,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-10-05 11:34-0400\n"
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
"Last-Translator: Harry Suryapambagya <harsxv@gmail.com>, 2018\n"
"Last-Translator: Wantoyo <wantoyek@gmail.com>, 2018\n"
"Language-Team: Indonesian (https://www.transifex.com/calamares/teams/20061/id/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -24,62 +25,66 @@ msgstr ""
#: src/modules/displaymanager/main.py:380
msgid "Cannot write KDM configuration file"
msgstr ""
msgstr "Gak bisa menulis file konfigurasi KDM"
#: src/modules/displaymanager/main.py:381
msgid "KDM config file {!s} does not exist"
msgstr ""
msgstr "File {!s} config KDM belum ada"
#: src/modules/displaymanager/main.py:442
msgid "Cannot write LXDM configuration file"
msgstr ""
msgstr "Gak bisa menulis file konfigurasi LXDM"
#: src/modules/displaymanager/main.py:443
msgid "LXDM config file {!s} does not exist"
msgstr ""
msgstr "File {!s} config LXDM enggak ada"
#: src/modules/displaymanager/main.py:517
msgid "Cannot write LightDM configuration file"
msgstr ""
msgstr "Gak bisa menulis file konfigurasi LightDM"
#: src/modules/displaymanager/main.py:518
msgid "LightDM config file {!s} does not exist"
msgstr ""
msgstr "File {!s} config LightDM belum ada"
#: src/modules/displaymanager/main.py:592
msgid "Cannot configure LightDM"
msgstr ""
msgstr "Gak bisa mengkonfigurasi LightDM"
#: src/modules/displaymanager/main.py:593
msgid "No LightDM greeter installed."
msgstr ""
msgstr "Tiada LightDM greeter yang terinstal."
#: src/modules/displaymanager/main.py:624
msgid "Cannot write SLIM configuration file"
msgstr ""
msgstr "Gak bisa menulis file konfigurasi SLIM"
#: src/modules/displaymanager/main.py:625
msgid "SLIM config file {!s} does not exist"
msgstr ""
msgstr "File {!s} config SLIM belum ada"
#: src/modules/displaymanager/main.py:740
#: src/modules/displaymanager/main.py:772
msgid "No display managers selected for the displaymanager module."
msgstr ""
msgstr "Tiada display manager yang dipilih untuk modul displaymanager."
#: src/modules/displaymanager/main.py:741
msgid ""
"The displaymanagers list is empty or undefined in bothglobalstorage and "
"displaymanager.conf."
msgstr ""
"Daftar displaymanager telah kosong atau takdidefinisikan dalam "
"bothglobalstorage dan displaymanager.conf."
#: src/modules/displaymanager/main.py:773
msgid "The list is empty after checking for installed display managers."
msgstr ""
"Daftar telah kosong sesudah pemeriksaan untuk display manager yang "
"terinstal."
#: src/modules/displaymanager/main.py:821
msgid "Display manager configuration was incomplete"
msgstr ""
msgstr "Konfigurasi display manager belum rampung"
#: src/modules/umount/main.py:40
msgid "Unmount file systems."
@ -104,13 +109,13 @@ msgstr "Paket pemrosesan (%(count)d/%(total)d)"
#: src/modules/packages/main.py:64 src/modules/packages/main.py:74
msgid "Install packages."
msgstr "pasang paket"
msgstr "Instal paket-paket."
#: src/modules/packages/main.py:67
#, python-format
msgid "Installing one package."
msgid_plural "Installing %(num)d packages."
msgstr[0] "memasang paket %(num)d"
msgstr[0] "Menginstal paket %(num)d"
#: src/modules/packages/main.py:70
#, python-format

Binary file not shown.

View File

@ -5,6 +5,7 @@
#
# Translators:
# Takefumi Nagata, 2018
# 諏訪子 洩矢, 2018
#
#, fuzzy
msgid ""
@ -13,7 +14,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-10-05 11:34-0400\n"
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
"Last-Translator: Takefumi Nagata, 2018\n"
"Last-Translator: 諏訪子 洩矢, 2018\n"
"Language-Team: Japanese (https://www.transifex.com/calamares/teams/20061/ja/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -75,7 +76,7 @@ msgstr ""
#: src/modules/displaymanager/main.py:773
msgid "The list is empty after checking for installed display managers."
msgstr ""
msgstr "インストールされたディスプレイマネージャーに検索しましたと、リストが空です。"
#: src/modules/displaymanager/main.py:821
msgid "Display manager configuration was incomplete"

Binary file not shown.

View File

@ -0,0 +1,120 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# Translators:
# Martin Ristovski <martinristovski@protonmail.com>, 2018
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-10-05 11:34-0400\n"
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
"Last-Translator: Martin Ristovski <martinristovski@protonmail.com>, 2018\n"
"Language-Team: Macedonian (https://www.transifex.com/calamares/teams/20061/mk/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: mk\n"
"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
#: src/modules/displaymanager/main.py:380
msgid "Cannot write KDM configuration file"
msgstr "KDM конфигурациониот фајл не може да се создаде"
#: src/modules/displaymanager/main.py:381
msgid "KDM config file {!s} does not exist"
msgstr "KDM конфигурациониот фајл {!s} не постои"
#: src/modules/displaymanager/main.py:442
msgid "Cannot write LXDM configuration file"
msgstr "LXDM конфигурациониот фајл не може да се создаде"
#: src/modules/displaymanager/main.py:443
msgid "LXDM config file {!s} does not exist"
msgstr "LXDM конфигурациониот фајл {!s} не постои"
#: src/modules/displaymanager/main.py:517
msgid "Cannot write LightDM configuration file"
msgstr "LightDM конфигурациониот фајл не може да се создаде"
#: src/modules/displaymanager/main.py:518
msgid "LightDM config file {!s} does not exist"
msgstr "LightDM конфигурациониот фајл {!s} не постои"
#: src/modules/displaymanager/main.py:592
msgid "Cannot configure LightDM"
msgstr "Не може да се подеси LightDM"
#: src/modules/displaymanager/main.py:593
msgid "No LightDM greeter installed."
msgstr "Нема инсталирано LightDM поздравувач"
#: src/modules/displaymanager/main.py:624
msgid "Cannot write SLIM configuration file"
msgstr "SLIM конфигурациониот фајл не може да се создаде"
#: src/modules/displaymanager/main.py:625
msgid "SLIM config file {!s} does not exist"
msgstr "SLIM конфигурациониот фајл {!s} не постои"
#: src/modules/displaymanager/main.py:740
#: src/modules/displaymanager/main.py:772
msgid "No display managers selected for the displaymanager module."
msgstr "Немате избрано дисплеј менаџер за displaymanager модулот."
#: src/modules/displaymanager/main.py:741
msgid ""
"The displaymanagers list is empty or undefined in bothglobalstorage and "
"displaymanager.conf."
msgstr ""
#: src/modules/displaymanager/main.py:773
msgid "The list is empty after checking for installed display managers."
msgstr ""
#: src/modules/displaymanager/main.py:821
msgid "Display manager configuration was incomplete"
msgstr ""
#: src/modules/umount/main.py:40
msgid "Unmount file systems."
msgstr ""
#: src/modules/dummypython/main.py:44
msgid "Dummy python job."
msgstr ""
#: src/modules/dummypython/main.py:97
msgid "Dummy python step {}"
msgstr ""
#: src/modules/machineid/main.py:35
msgid "Generate machine-id."
msgstr ""
#: src/modules/packages/main.py:62
#, python-format
msgid "Processing packages (%(count)d / %(total)d)"
msgstr ""
#: src/modules/packages/main.py:64 src/modules/packages/main.py:74
msgid "Install packages."
msgstr ""
#: src/modules/packages/main.py:67
#, python-format
msgid "Installing one package."
msgid_plural "Installing %(num)d packages."
msgstr[0] ""
msgstr[1] ""
#: src/modules/packages/main.py:70
#, python-format
msgid "Removing one package."
msgid_plural "Removing %(num)d packages."
msgstr[0] ""
msgstr[1] ""

View File

@ -16,6 +16,11 @@
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* Tool to find differences between translations (can be used to help
* merging them into one). See usage string, below, for details.
*/
#include <QCoreApplication>
#include <QDebug>
#include <QFile>
@ -23,6 +28,16 @@
#include <QDomDocument>
static const char usage[] = "Usage: txload <master> [<subsidiary> ...]\n"
"\n"
"Reads a .ts source file <master> and zero or more .ts <subsidiary>\n"
"files, and does a comparison between the translations. Source (English)\n"
"strings that are untranslated are flagged in each of the translation\n"
"files, while differences in the translations are themselves also shown.\n"
"\n"
"Outputs to stdout a human-readable list of differences between the\n"
"translations.\n";
bool load_file(const char* filename, QDomDocument& doc)
{
QFile file(filename);
@ -158,7 +173,10 @@ int main(int argc, char** argv)
QCoreApplication a(argc, argv);
if (argc < 2)
{
qWarning() << usage;
return 1;
}
QDomDocument doc("master");
if ( !load_file(argv[1], doc) )

View File

@ -8,6 +8,27 @@ componentName: default
# same distribution.
welcomeStyleCalamares: false
# Should the welcome image (productWelcome, below) be scaled
# up beyond its natural size? If false, the image does not grow
# with the window but remains the same size throughout (this
# may have surprising effects on HiDPI monitors).
welcomeExpandingLogo: true
# Size and expansion policy for Calamares.
# - "normal" or unset, expand as needed, use *windowSize*
# - "fullscreen", start as large as possible, ignore *windowSize*
# - "noexpand", don't expand automatically, use *windowSize*
windowExpanding: normal
# Size of Calamares window, expressed as w,h. Both w and h
# may be either pixels (suffix px) or font-units (suffix em).
# e.g. "800px,600px"
# "60em,480px"
# This setting is ignored if "fullscreen" is selected for
# *windowExpanding*, above. If not set, use constants defined
# in CalamaresUtilsGui, 800x520.
windowSize: 800px,520px
# These are strings shown to the user in the user interface.
# There is no provision for translating them -- since they
# are names, the string is included as-is.
@ -32,12 +53,6 @@ strings:
knownIssuesUrl: https://calamares.io/about/
releaseNotesUrl: https://calamares.io/about/
# Should the welcome image (productWelcome, below) be scaled
# up beyond its natural size? If false, the image does not grow
# with the window but remains the same size throughout (this
# may have surprising effects on HiDPI monitors).
welcomeExpandingLogo: true
# These images are loaded from the branding module directory.
#
# productIcon is used as the window icon, and will (usually) be used

View File

@ -348,7 +348,13 @@ void
CalamaresApplication::initViewSteps()
{
cDebug() << "STARTUP: loadModules for all modules done";
m_mainwindow->show();
if ( Calamares::Branding::instance()->windowMaximize() )
{
m_mainwindow->setWindowFlag( Qt::FramelessWindowHint );
m_mainwindow->showMaximized();
}
else
m_mainwindow->show();
ProgressTreeModel* m = new ProgressTreeModel( nullptr );
ProgressTreeView::instance()->setModel( m );
cDebug() << "STARTUP: Window now visible and ProgressTreeView populated";

View File

@ -35,6 +35,18 @@
#include <QLabel>
#include <QTreeView>
static inline int
windowDimensionToPixels( const Calamares::Branding::WindowDimension& u )
{
if ( !u.isValid() )
return 0;
if ( u.unit() == Calamares::Branding::WindowDimensionUnit::Pixies )
return u.value();
if ( u.unit() == Calamares::Branding::WindowDimensionUnit::Fonties )
return u.value() * CalamaresUtils::defaultFontHeight();
return 0;
}
CalamaresWindow::CalamaresWindow( QWidget* parent )
: QWidget( parent )
, m_debugWindow( nullptr )
@ -45,24 +57,24 @@ CalamaresWindow::CalamaresWindow( QWidget* parent )
.arg( *Calamares::Branding::ProductName ) );
)
const Calamares::Branding* const branding = Calamares::Branding::instance();
using CalamaresUtils::windowMinimumHeight;
using CalamaresUtils::windowMinimumWidth;
using CalamaresUtils::windowPreferredHeight;
using CalamaresUtils::windowPreferredWidth;
QSize availableSize = qApp->desktop()->availableGeometry( this ).size();
cDebug() << "Available size" << availableSize;
if ( ( availableSize.width() < windowPreferredWidth ) || ( availableSize.height() < windowPreferredHeight ) )
cDebug() << " Small screen detected.";
QSize minimumSize( qBound( windowMinimumWidth, availableSize.width(), windowPreferredWidth ),
qBound( windowMinimumHeight, availableSize.height(), windowPreferredHeight ) );
setMinimumSize( minimumSize );
cDebug() << "Available desktop" << availableSize << "minimum size" << minimumSize;
int w = qBound( minimumSize.width(), CalamaresUtils::defaultFontHeight() * 60, availableSize.width() );
int h = qBound( minimumSize.height(), CalamaresUtils::defaultFontHeight() * 36, availableSize.height() );
auto brandingSizes = branding->windowSize();
int w = qBound( minimumSize.width(), windowDimensionToPixels( brandingSizes.first ), availableSize.width() );
int h = qBound( minimumSize.height(), windowDimensionToPixels( brandingSizes.second ), availableSize.height() );
cDebug() << " Proposed window size:" << w << h;
resize( w, h );
@ -85,18 +97,14 @@ CalamaresWindow::CalamaresWindow( QWidget* parent )
{
QPalette plt = sideBox->palette();
sideBox->setAutoFillBackground( true );
plt.setColor( sideBox->backgroundRole(), Calamares::Branding::instance()->
styleString( Calamares::Branding::SidebarBackground ) );
plt.setColor( sideBox->foregroundRole(), Calamares::Branding::instance()->
styleString( Calamares::Branding::SidebarText ) );
plt.setColor( sideBox->backgroundRole(),branding->styleString( Calamares::Branding::SidebarBackground ) );
plt.setColor( sideBox->foregroundRole(), branding->styleString( Calamares::Branding::SidebarText ) );
sideBox->setPalette( plt );
logoLabel->setPalette( plt );
}
logoLabel->setAlignment( Qt::AlignCenter );
logoLabel->setFixedSize( 80, 80 );
logoLabel->setPixmap( Calamares::Branding::instance()->
image( Calamares::Branding::ProductLogo,
logoLabel->size() ) );
logoLabel->setPixmap( branding->image( Calamares::Branding::ProductLogo, logoLabel->size() ) );
logoLayout->addWidget( logoLabel );
logoLayout->addStretch();
@ -139,7 +147,8 @@ CalamaresWindow::CalamaresWindow( QWidget* parent )
CalamaresUtils::unmarginLayout( mainLayout );
m_viewManager = Calamares::ViewManager::instance( this );
connect( m_viewManager, &Calamares::ViewManager::enlarge, this, &CalamaresWindow::enlarge );
if ( branding->windowExpands() )
connect( m_viewManager, &Calamares::ViewManager::enlarge, this, &CalamaresWindow::enlarge );
mainLayout->addWidget( m_viewManager->centralWidget() );
}

View File

@ -1,7 +1,7 @@
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014-2016, Teo Mrnjavac <teo@kde.org>
* Copyright 2017-2018, Adriaan de Groot <groot@kde.org>
* Copyright 2017-2019, Adriaan de Groot <groot@kde.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -275,16 +275,21 @@ gettext_path()
}
_add_localedirs( candidatePaths, QDir().canonicalPath() ); // .
cDebug() << "Standard paths" << candidatePaths;
cDebug() << "Determining gettext path from" << candidatePaths;
for ( auto lang : _gettext_languages() )
QStringList candidateLanguages = _gettext_languages();
for ( const auto& lang : candidateLanguages )
for ( auto localedir : candidatePaths )
{
QDir ldir( localedir );
cDebug() << "Checking" << lang << "in" <<ldir.canonicalPath();
if ( ldir.cd( lang ) )
{
cDebug() << " .. Found" << lang << "in" << ldir.canonicalPath();
return bp::object( localedir.toStdString() );
}
}
cDebug() << " .. None found for" << candidateLanguages;
return bp::object(); // None
}

View File

@ -0,0 +1,110 @@
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2019, Adriaan de Groot <groot@kde.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Calamares is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*/
/** @brief Support for "named" enumerations
*
* For tables which map string names to enum values, provide a NamedEnumTable
* which hangs on to an initializer_list of pairs of names and values.
* This table can be used with find() to map names to values, or
* values to names. A convenience function smash() is provided to help
* in printing integer (underlying) values of an enum.
*/
#ifndef LIBCALAMARES_NAMEDENUM_H
#define LIBCALAMARES_NAMEDENUM_H
#include <QString>
#include <type_traits>
#include <initializer_list>
/** @brief Type for collecting parts of a named enum. */
template<typename T>
struct NamedEnumTable
{
using string_t = QString;
using enum_t = T;
using pair_t = std::pair< string_t, enum_t >;
using type = std::vector< pair_t >;
type table;
/** @brief Create a table of named enum values.
*
* Use braced-initialisation for NamedEnum, and remember that the
* elements of the list are **pairs**, e.g.
*
* static const NamedEnumTable<Colors> c{ {"red", Colors::Red } };
*/
NamedEnumTable( const std::initializer_list< pair_t >& v ) : table( v ) { /* static_assert( v.size() > 0 ); */ };
/** @brief Find a name @p s in the table.
*
* Searches case-insensitively.
*
* If the name @p s is not found, @p ok is set to false and
* the first enum value in the table is returned. Otherwise,
* @p ok is set to true and the corresponding value is returned.
*
*/
enum_t find( const string_t& s, bool& ok ) const
{
ok = false;
for ( const auto p : table )
if ( 0 == QString::compare( s, p.first, Qt::CaseInsensitive ) )
{
ok = true;
return p.second;
}
// ok is still false
return table.begin()->second;
}
/** @brief Find a value @p s in the table.
*
* If the value @p s is not found, @p ok is set to false and
* an empty string is returned. Otherwise, @p is set to true
* and the corresponding name is returned.
*/
string_t find( enum_t s, bool& ok ) const
{
ok = false;
for ( const auto p : table )
if ( s == p.second)
{
ok = true;
return p.first;
}
// ok is still false
return string_t();
}
} ;
/** @brief Smashes an enum value to its underlying type. */
template<typename E>
constexpr typename std::underlying_type<E>::type smash( const E e )
{
return static_cast<typename std::underlying_type<E>::type>( e );
}
#endif

View File

@ -0,0 +1,108 @@
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2019, Adriaan de Groot <groot@kde.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Calamares is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*/
/** @brief Support for unit-suffixed values.
*
* This combines a value with an (enum) unit indicating what kind
* of value it is, e.g. 10 meters, or 64 pixels. Includes simple
* parsing support for the values written as strings like <value><unit>,
* e.g. "10m" or "64px".
*
* When a suffixed unit value needs validation, define an isValid()
* method; similarly for simple construction from a string (with a fixed
* table of suffixes). Typical use then looks like:
*
* class MyUnit : public NamedSuffix<MyUnitEnum, MyUnitEnum::None>
* {
* public:
* using NamedSuffix::NamedSuffix; // Keep existing constructors
* MyUnit( const QString& s );
* bool isValid() const;
* } ;
*/
#ifndef LIBCALAMARES_NAMEDSUFFIX_H
#define LIBCALAMARES_NAMEDSUFFIX_H
#include "NamedEnum.h"
/** @brief Template that takes the enum type to work with and a special none-enum. */
template<typename T, T _none>
class NamedSuffix
{
public:
using unit_t = T;
static constexpr unit_t none = _none;
/** @brief Empty value. */
NamedSuffix()
: m_value(0)
, m_unit( none )
{
}
/** @brief Specific value and unit. */
NamedSuffix( int value, unit_t unit )
: m_value( value )
, m_unit( unit )
{
}
/** @brief Construct value and unit from string.
*
* This parses the given string @p s by comparing with the suffixes
* in @p table and uses the first matching suffix as the unit.
*/
NamedSuffix( const NamedEnumTable<T>& table, const QString& s )
: NamedSuffix()
{
for( const auto suffix : table.table )
if ( s.endsWith( suffix.first ) )
{
m_value = s.left( s.length() - suffix.first.length() ).toInt();
m_unit = suffix.second;
break;
}
}
/** @brief Construct value from string.
*
* This is not defined in the template, because it should probably
* delegate to the constructor above with a fixed table.
*/
NamedSuffix( const QString& s );
int value() const { return m_value; }
unit_t unit() const { return m_unit; }
/** @brief Check that a value-unit combination is valid.
*
* This is not defined in the template, because validity (e.g.
* range of acceptable values) depends on the kind of unit.
*/
bool isValid() const;
protected:
int m_value;
unit_t m_unit;
};
#endif

View File

@ -21,9 +21,11 @@
#include "GlobalStorage.h"
#include "utils/CalamaresUtils.h"
#include "utils/Logger.h"
#include "utils/YamlUtils.h"
#include "utils/CalamaresUtilsGui.h"
#include "utils/ImageRegistry.h"
#include "utils/Logger.h"
#include "utils/NamedEnum.h"
#include "utils/YamlUtils.h"
#include <QDir>
#include <QFile>
@ -76,6 +78,17 @@ const QStringList Branding::s_styleEntryStrings =
"sidebarTextHighlight"
};
static const NamedEnumTable<Branding::WindowDimensionUnit>&
windowDimensions()
{
using Unit = Branding::WindowDimensionUnit;
static const NamedEnumTable<Unit> names{
{"px", Unit::Pixies},
{"em", Unit::Fonties}
};
return names;
}
Branding::Branding( const QString& brandingFilePath,
QObject* parent )
@ -107,12 +120,11 @@ Branding::Branding( const QString& brandingFilePath,
bail( "The branding component name should match the name of the "
"component directory." );
initSimpleSettings( doc );
if ( !doc[ "strings" ].IsMap() )
bail( "Syntax error in strings map." );
m_welcomeStyleCalamares = doc[ "welcomeStyleCalamares" ].as< bool >( false );
m_welcomeExpandingLogo = doc[ "welcomeExpandingLogo" ].as< bool >( true );
QVariantMap strings =
CalamaresUtils::yamlMapToVariant( doc[ "strings" ] ).toMap();
m_strings.clear();
@ -287,6 +299,59 @@ Branding::setGlobals( GlobalStorage* globalStorage ) const
globalStorage->insert( "branding", brandingMap );
}
bool
Branding::WindowDimension::isValid() const
{
return ( unit() != none ) && ( value() > 0 );
}
/// @brief Guard against cases where the @p key doesn't exist in @p doc
static inline QString
getString( const YAML::Node& doc, const char* key )
{
if ( doc[key] )
return QString::fromStdString( doc[key].as< std::string >() );
return QString();
}
void
Branding::initSimpleSettings( const YAML::Node& doc )
{
static const NamedEnumTable< WindowExpansion > expansionNames{
{ QStringLiteral( "normal" ), WindowExpansion::Normal },
{ QStringLiteral( "fullscreen" ), WindowExpansion::Fullscreen },
{ QStringLiteral( "noexpand" ), WindowExpansion::Fixed }
};
static const NamedEnumTable< WindowDimensionUnit > dimensionNames{
{ QStringLiteral( "px" ), WindowDimensionUnit::Pixies },
{ QStringLiteral( "em" ), WindowDimensionUnit::Fonties }
};
bool ok = false;
m_welcomeStyleCalamares = doc[ "welcomeStyleCalamares" ].as< bool >( false );
m_welcomeExpandingLogo = doc[ "welcomeExpandingLogo" ].as< bool >( true );
m_windowExpansion = expansionNames.find( getString( doc, "windowExpanding" ), ok );
if ( !ok )
cWarning() << "Branding module-setting *windowExpanding* interpreted as" << expansionNames.find( m_windowExpansion, ok );
QString windowSize = getString( doc, "windowSize" );
if ( !windowSize.isEmpty() )
{
auto l = windowSize.split( ',' );
if ( l.count() == 2 )
{
m_windowWidth = WindowDimension( dimensionNames, l[0] );
m_windowHeight = WindowDimension( dimensionNames, l[1] );
}
}
if ( !m_windowWidth.isValid() )
m_windowWidth = WindowDimension( CalamaresUtils::windowPreferredWidth, WindowDimensionUnit::Pixies );
if ( !m_windowHeight.isValid() )
m_windowHeight = WindowDimension( CalamaresUtils::windowPreferredHeight, WindowDimensionUnit::Pixies );
}
void
Branding::bail( const QString& message )

View File

@ -23,10 +23,16 @@
#include "UiDllMacro.h"
#include "Typedefs.h"
#include "utils/NamedSuffix.h"
#include <QObject>
#include <QStringList>
#include <QMap>
namespace YAML
{
class Node;
}
namespace Calamares
{
@ -63,7 +69,7 @@ public:
ProductIcon,
ProductWelcome
};
enum StyleEntry : short
{
SidebarBackground,
@ -72,6 +78,21 @@ public:
SidebarTextHighlight
};
/** @brief Setting for how much the main window may expand. */
enum class WindowExpansion { Normal, Fullscreen, Fixed } ;
/** @brief Setting for the main window size.
*
* The units are pixels (Pixies) or something-based-on-fontsize (Fonties), which
* we suffix as "em", e.g. "600px" or "32em".
*/
enum class WindowDimensionUnit { None, Pixies, Fonties };
class WindowDimension : public NamedSuffix<WindowDimensionUnit, WindowDimensionUnit::None>
{
public:
using NamedSuffix::NamedSuffix;
bool isValid() const;
} ;
static Branding* instance();
explicit Branding( const QString& brandingFilePath,
@ -90,6 +111,12 @@ public:
bool welcomeStyleCalamares() const { return m_welcomeStyleCalamares; }
bool welcomeExpandingLogo() const { return m_welcomeExpandingLogo; }
bool windowMaximize() const { return m_windowExpansion == WindowExpansion::Fullscreen; }
bool windowExpands() const { return m_windowExpansion != WindowExpansion::Fixed; }
QPair< WindowDimension, WindowDimension > windowSize() const
{
return QPair< WindowDimension, WindowDimension >( m_windowWidth, m_windowHeight );
}
/**
* Creates a map called "branding" in the global storage, and inserts an
@ -115,8 +142,15 @@ private:
QString m_slideshowPath;
QString m_translationsPathPrefix;
/** @brief Initialize the simple settings below */
void initSimpleSettings( const YAML::Node& doc );
bool m_welcomeStyleCalamares;
bool m_welcomeExpandingLogo;
WindowExpansion m_windowExpansion;
WindowDimension m_windowHeight, m_windowWidth;
};
template<typename U> inline QString operator*(U e) { return Branding::instance()->string( e ); }

View File

@ -170,11 +170,7 @@ createRoundedImage( const QPixmap& pixmap, const QSize& size, float frameWidthPc
painter.setBrush( brush );
painter.setPen( pen );
painter.drawRoundedRect( outerRect, qreal(frameWidthPct) * 100.0, qreal(frameWidthPct) * 100.0, Qt::RelativeSize );
/* painter.setBrush( Qt::transparent );
painter.setPen( Qt::white );
painter.drawRoundedRect( outerRect, frameWidthPct, frameWidthPct, Qt::RelativeSize ); */
painter.drawRoundedRect( outerRect, qreal( frameWidthPct ) * 100.0, qreal( frameWidthPct ) * 100.0, Qt::RelativeSize );
return frame;
}
@ -246,7 +242,7 @@ setDefaultFontSize( int points )
QSize
defaultIconSize()
{
const int w = int(defaultFontHeight() * 1.6);
const int w = int( defaultFontHeight() * 1.6 );
return QSize( w, w );
}
@ -266,5 +262,44 @@ clearLayout( QLayout* layout )
}
}
LocaleLabel::LocaleLabel( const QString& locale, LabelFormat format )
: m_locale( LocaleLabel::getLocale( locale ) )
, m_localeId( locale )
{
QString longFormat = QObject::tr( "%1 (%2)", "Language (Country)" );
QString sortKey = QLocale::languageToString( m_locale.language() );
QString languageName = m_locale.nativeLanguageName();
QString countryName;
if ( languageName.isEmpty() )
languageName = QString( QLatin1Literal( "* %1 (%2)" ) ).arg( locale, sortKey );
bool needsCountryName = ( format == LabelFormat::AlwaysWithCountry ) ||
(locale.contains( '_' ) && QLocale::countriesForLanguage( m_locale.language() ).count() > 1 );
if ( needsCountryName )
{
sortKey.append( '+' );
sortKey.append( QLocale::countryToString( m_locale.country() ) );
countryName = m_locale.nativeCountryName();
}
m_sortKey = sortKey;
m_label = needsCountryName ? longFormat.arg( languageName ).arg( countryName ) : languageName;
}
QLocale LocaleLabel::getLocale( const QString& localeName )
{
if ( localeName.contains( "@latin" ) )
{
QLocale loc( localeName ); // Ignores @latin
return QLocale( loc.language(), QLocale::Script::LatinScript, loc.country() );
}
else
return QLocale( localeName );
}
}

View File

@ -23,6 +23,7 @@
#include "utils/CalamaresUtils.h"
#include "UiDllMacro.h"
#include <QObject>
#include <QPixmap>
#include <QSize>
@ -125,6 +126,77 @@ constexpr int windowMinimumWidth = 800;
constexpr int windowMinimumHeight = 520;
constexpr int windowPreferredWidth = 1024;
constexpr int windowPreferredHeight = 520;
}
/**
* @brief Consistent locale (language + country) naming.
*
* Support class to turn locale names (as used by Calamares's
* translation system) into QLocales, and also into consistent
* human-readable text labels.
*/
class LocaleLabel
{
public:
/** @brief Formatting option for label -- add (country) to label. */
enum class LabelFormat { AlwaysWithCountry, IfNeededWithCountry } ;
/** @brief Construct from a locale name.
*
* The @p localeName should be one that Qt recognizes, e.g. en_US or ar_EY.
* The @p format determines whether the country name is always present
* in the label (human-readable form) or only if needed for disambiguation.
*/
LocaleLabel( const QString& localeName, LabelFormat format = LabelFormat::IfNeededWithCountry );
/** @brief Define a sorting order.
*
* English (@see isEnglish() -- it means en_US) is sorted at the top.
*/
bool operator <( const LocaleLabel& other ) const
{
if ( isEnglish() )
return !other.isEnglish();
if ( other.isEnglish() )
return false;
return m_sortKey < other.m_sortKey;
}
/** @brief Is this locale English?
*
* en_US and en (American English) is defined as English. The Queen's
* English -- proper English -- is relegated to non-English status.
*/
bool isEnglish() const
{
return m_localeId == QLatin1Literal( "en_US" ) || m_localeId == QLatin1Literal( "en" );
}
/** @brief Get the human-readable name for this locale. */
QString label() const
{
return m_label;
}
/** @brief Get the Qt locale. */
QLocale locale() const
{
return m_locale;
}
/** @brief Get a Qt locale for the given @p localeName
*
* This special-cases `sr@latin`, which is used as a translation
* name in Calamares, while Qt recognizes `sr@latn`.
*/
static QLocale getLocale( const QString& localeName );
protected:
QLocale m_locale;
QString m_localeId; // the locale identifier, e.g. "en_GB"
QString m_sortKey; // the English name of the locale
QString m_label; // the native name of the locale
} ;
} // namespace CalamaresUtils
#endif // CALAMARESUTILSGUI_H

View File

@ -3,6 +3,9 @@
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# Translators:
# Abubakaragoub Y <Abubakaryagob@gmail.com>, 2018
#
#, fuzzy
msgid ""
msgstr ""
@ -10,6 +13,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-10-05 11:34-0400\n"
"PO-Revision-Date: 2016-12-16 12:18+0000\n"
"Last-Translator: Abubakaragoub Y <Abubakaryagob@gmail.com>, 2018\n"
"Language-Team: Arabic (https://www.transifex.com/calamares/teams/20061/ar/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -19,24 +23,24 @@ msgstr ""
#: src/modules/dummypythonqt/main.py:84
msgid "Click me!"
msgstr ""
msgstr "اضغط علي!"
#: src/modules/dummypythonqt/main.py:94
msgid "A new QLabel."
msgstr ""
msgstr "QLabel جديد"
#: src/modules/dummypythonqt/main.py:97
msgid "Dummy PythonQt ViewStep"
msgstr ""
msgstr "دميه خطوة PythonQt "
#: src/modules/dummypythonqt/main.py:183
msgid "The Dummy PythonQt Job"
msgstr ""
msgstr "دميه عملية PythonQt "
#: src/modules/dummypythonqt/main.py:186
msgid "This is the Dummy PythonQt Job. The dummy job says: {}"
msgstr ""
msgstr "هذة دميه عملية خطوة PythonQt. و تقول: {}"
#: src/modules/dummypythonqt/main.py:190
msgid "A status message for Dummy PythonQt Job."
msgstr ""
msgstr "رسالة حاله دميه عملية خطوة PythonQt"

View File

@ -4,7 +4,7 @@
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# Translators:
# enolp <enolp@softastur.org>, 2017
# enolp <enolp@softastur.org>, 2019
#
#, fuzzy
msgid ""
@ -13,7 +13,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-10-05 11:34-0400\n"
"PO-Revision-Date: 2016-12-16 12:18+0000\n"
"Last-Translator: enolp <enolp@softastur.org>, 2017\n"
"Last-Translator: enolp <enolp@softastur.org>, 2019\n"
"Language-Team: Asturian (https://www.transifex.com/calamares/teams/20061/ast/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -23,7 +23,7 @@ msgstr ""
#: src/modules/dummypythonqt/main.py:84
msgid "Click me!"
msgstr "¡Prímime!"
msgstr "¡Fai clic en min!"
#: src/modules/dummypythonqt/main.py:94
msgid "A new QLabel."
@ -31,7 +31,7 @@ msgstr "Una QLabel nueva."
#: src/modules/dummypythonqt/main.py:97
msgid "Dummy PythonQt ViewStep"
msgstr ""
msgstr "ViewStep maniquín de PythonQT"
#: src/modules/dummypythonqt/main.py:183
msgid "The Dummy PythonQt Job"

View File

@ -3,6 +3,9 @@
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# Translators:
# Ander Elortondo, 2019
#
#, fuzzy
msgid ""
msgstr ""
@ -10,6 +13,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-10-05 11:34-0400\n"
"PO-Revision-Date: 2016-12-16 12:18+0000\n"
"Last-Translator: Ander Elortondo, 2019\n"
"Language-Team: Basque (https://www.transifex.com/calamares/teams/20061/eu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -19,24 +23,24 @@ msgstr ""
#: src/modules/dummypythonqt/main.py:84
msgid "Click me!"
msgstr ""
msgstr "Egidazu klik!"
#: src/modules/dummypythonqt/main.py:94
msgid "A new QLabel."
msgstr ""
msgstr "QLabel berria."
#: src/modules/dummypythonqt/main.py:97
msgid "Dummy PythonQt ViewStep"
msgstr ""
msgstr "Dummy PythonQt pauso-ikuspegia"
#: src/modules/dummypythonqt/main.py:183
msgid "The Dummy PythonQt Job"
msgstr ""
msgstr " Dummy PythonQt lana"
#: src/modules/dummypythonqt/main.py:186
msgid "This is the Dummy PythonQt Job. The dummy job says: {}"
msgstr ""
msgstr "Hau Dummy PythonQt lana da. Dummy lanak zera dio: {}"
#: src/modules/dummypythonqt/main.py:190
msgid "A status message for Dummy PythonQt Job."
msgstr ""
msgstr "Dummy PythonQt lanaren egoera mezua."

View File

@ -0,0 +1,46 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# Translators:
# Martin Ristovski <martinristovski@protonmail.com>, 2018
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-10-05 11:34-0400\n"
"PO-Revision-Date: 2016-12-16 12:18+0000\n"
"Last-Translator: Martin Ristovski <martinristovski@protonmail.com>, 2018\n"
"Language-Team: Macedonian (https://www.transifex.com/calamares/teams/20061/mk/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: mk\n"
"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
#: src/modules/dummypythonqt/main.py:84
msgid "Click me!"
msgstr "Кликни ме!"
#: src/modules/dummypythonqt/main.py:94
msgid "A new QLabel."
msgstr "Нов QLabel."
#: src/modules/dummypythonqt/main.py:97
msgid "Dummy PythonQt ViewStep"
msgstr ""
#: src/modules/dummypythonqt/main.py:183
msgid "The Dummy PythonQt Job"
msgstr ""
#: src/modules/dummypythonqt/main.py:186
msgid "This is the Dummy PythonQt Job. The dummy job says: {}"
msgstr ""
#: src/modules/dummypythonqt/main.py:190
msgid "A status message for Dummy PythonQt Job."
msgstr ""

View File

@ -39,46 +39,32 @@
#include "modules/partition/core/PartitionIterator.h"
ResizeFSJob::RelativeSize::RelativeSize()
: m_value( 0 )
, m_unit( None )
static const NamedEnumTable<ResizeFSJob::RelativeUnit>&
unitSuffixes()
{
using Unit = ResizeFSJob::RelativeUnit;
static const NamedEnumTable<Unit> names{
{ QStringLiteral( "%" ), Unit::Percent },
{ QStringLiteral( "MiB" ), Unit::Absolute }
};
return names;
}
template<int N>
void matchUnitSuffix(
const QString& s,
const char ( &suffix )[N],
ResizeFSJob::RelativeSize::Unit matchedUnit,
int& value,
ResizeFSJob::RelativeSize::Unit& unit
)
{
if ( s.endsWith( suffix ) )
{
value = s.left( s.length() - N + 1 ).toInt();
unit = matchedUnit;
}
}
ResizeFSJob::RelativeSize::RelativeSize( const QString& s )
: m_value( 0 )
, m_unit( None )
: NamedSuffix( unitSuffixes(), s )
{
matchUnitSuffix( s, "%", Percent, m_value, m_unit );
matchUnitSuffix( s, "MiB", Absolute, m_value, m_unit );
if ( ( unit() == Percent ) && ( value() > 100 ) )
if ( ( unit() == RelativeUnit::Percent ) && ( value() > 100 ) )
{
cDebug() << "Percent value" << value() << "is not valid.";
m_value = 0;
m_unit = None;
m_unit = RelativeUnit::None;
}
if ( !m_value )
m_unit = None;
m_unit = RelativeUnit::None;
}
qint64
@ -91,11 +77,11 @@ ResizeFSJob::RelativeSize::apply( qint64 totalSectors, qint64 sectorSize )
switch ( m_unit )
{
case None:
case unit_t::None:
return -1;
case Absolute:
case unit_t::Absolute:
return CalamaresUtils::MiBtoBytes( value() ) / sectorSize;
case Percent:
case unit_t::Percent:
if ( value() == 100 )
return totalSectors; // Common-case, avoid futzing around
else

View File

@ -24,7 +24,8 @@
#include <CppJob.h>
#include <utils/PluginFactory.h>
#include "utils/NamedSuffix.h"
#include "utils/PluginFactory.h"
#include <PluginDllMacro.h>
@ -37,31 +38,28 @@ class PLUGINDLLEXPORT ResizeFSJob : public Calamares::CppJob
Q_OBJECT
public:
enum class RelativeUnit
{
None,
Percent,
Absolute
};
/** @brief Size expressions
*
* Sizes can be specified in MiB or percent (of the device they
* are on). This class handles parsing of such strings from the
* config file.
*/
class RelativeSize
class RelativeSize : public NamedSuffix<RelativeUnit, RelativeUnit::None>
{
public:
RelativeSize();
RelativeSize() : NamedSuffix() { };
RelativeSize( const QString& );
enum Unit
{
None,
Percent,
Absolute
};
int value() const { return m_value; }
Unit unit() const { return m_unit; }
bool isValid() const
{
return ( unit() != None ) && ( value() > 0 );
return ( unit() != RelativeUnit::None ) && ( value() > 0 );
}
/** @brief Apply this size to the number of sectors @p totalSectors .
@ -80,10 +78,6 @@ public:
* Equivalent to apply( d->totalLogical(), d->logicalSize() )
*/
qint64 apply( Device* d );
private:
int m_value;
Unit m_unit;
} ;
explicit ResizeFSJob( QObject* parent = nullptr );

View File

@ -54,13 +54,13 @@ FSResizerTests::initTestCase()
void FSResizerTests::testConfigurationRobust()
{
ResizeFSJob j;
// Empty config
j.setConfigurationMap( QVariantMap() );
QVERIFY( j.m_fsname.isEmpty() );
QVERIFY( j.m_devicename.isEmpty() );
QCOMPARE( j.m_size.unit(), ResizeFSJob::RelativeSize::None );
QCOMPARE( j.m_atleast.unit(), ResizeFSJob::RelativeSize::None );
QCOMPARE( j.m_size.unit(), ResizeFSJob::RelativeUnit::None );
QCOMPARE( j.m_atleast.unit(), ResizeFSJob::RelativeUnit::None );
// Config is missing fs and dev, so it isn't valid
YAML::Node doc0 = YAML::Load( R"(---
@ -70,17 +70,17 @@ atleast: 600MiB
j.setConfigurationMap( CalamaresUtils::yamlMapToVariant( doc0 ).toMap() );
QVERIFY( j.m_fsname.isEmpty() );
QVERIFY( j.m_devicename.isEmpty() );
QCOMPARE( j.m_size.unit(), ResizeFSJob::RelativeSize::None );
QCOMPARE( j.m_atleast.unit(), ResizeFSJob::RelativeSize::None );
QCOMPARE( j.m_size.unit(), ResizeFSJob::RelativeUnit::None );
QCOMPARE( j.m_atleast.unit(), ResizeFSJob::RelativeUnit::None );
QCOMPARE( j.m_size.value(), 0 );
QCOMPARE( j.m_atleast.value(), 0 );
}
}
void FSResizerTests::testConfigurationValues()
{
ResizeFSJob j;
// Check both
// Check both
YAML::Node doc0 = YAML::Load( R"(---
fs: /
size: 100%
@ -89,8 +89,8 @@ atleast: 600MiB
j.setConfigurationMap( CalamaresUtils::yamlMapToVariant( doc0 ).toMap() );
QVERIFY( !j.m_fsname.isEmpty() );
QVERIFY( j.m_devicename.isEmpty() );
QCOMPARE( j.m_size.unit(), ResizeFSJob::RelativeSize::Percent );
QCOMPARE( j.m_atleast.unit(), ResizeFSJob::RelativeSize::Absolute );
QCOMPARE( j.m_size.unit(), ResizeFSJob::RelativeUnit::Percent );
QCOMPARE( j.m_atleast.unit(), ResizeFSJob::RelativeUnit::Absolute );
QCOMPARE( j.m_size.value(), 100 );
QCOMPARE( j.m_atleast.value(), 600 );
@ -104,8 +104,8 @@ atleast: 127 %
j.setConfigurationMap( CalamaresUtils::yamlMapToVariant( doc0 ).toMap() );
QVERIFY( !j.m_fsname.isEmpty() );
QVERIFY( !j.m_devicename.isEmpty() );
QCOMPARE( j.m_size.unit(), ResizeFSJob::RelativeSize::Absolute );
QCOMPARE( j.m_atleast.unit(), ResizeFSJob::RelativeSize::Percent );
QCOMPARE( j.m_size.unit(), ResizeFSJob::RelativeUnit::Absolute );
QCOMPARE( j.m_atleast.unit(), ResizeFSJob::RelativeUnit::Percent );
QCOMPARE( j.m_size.value(), 72 );
QCOMPARE( j.m_atleast.value(), 127 );
@ -119,8 +119,8 @@ size: 71MiB
j.setConfigurationMap( CalamaresUtils::yamlMapToVariant( doc0 ).toMap() );
QVERIFY( !j.m_fsname.isEmpty() );
QVERIFY( j.m_devicename.isEmpty() );
QCOMPARE( j.m_size.unit(), ResizeFSJob::RelativeSize::Absolute );
QCOMPARE( j.m_atleast.unit(), ResizeFSJob::RelativeSize::None );
QCOMPARE( j.m_size.unit(), ResizeFSJob::RelativeUnit::Absolute );
QCOMPARE( j.m_atleast.unit(), ResizeFSJob::RelativeUnit::None );
QCOMPARE( j.m_size.value(), 71 );
QCOMPARE( j.m_atleast.value(), 0 );
}

View File

@ -369,6 +369,8 @@ KeyboardPage::onActivate()
{
const auto langParts = lang.split( '_', QString::SkipEmptyParts );
// Note that this his string is not fit for display purposes!
// It doesn't come from QLocale::nativeCountryName.
QString country = QLocale::countryToString( QLocale( lang ).country() );
cDebug() << " .. extracted country" << country << "::" << langParts;

View File

@ -53,6 +53,17 @@ if( ECM_FOUND AND BUILD_TESTING )
${YAMLCPP_LIBRARY}
)
set_target_properties( geoiptest PROPERTIES AUTOMOC TRUE )
ecm_add_test(
Tests.cpp
LocaleConfiguration.cpp
TEST_NAME
localetest
LINK_LIBRARIES
calamares
Qt5::Test
)
set_target_properties( localetest PROPERTIES AUTOMOC TRUE )
endif()
if( BUILD_TESTING )

View File

@ -1,7 +1,7 @@
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2016, Teo Mrnjavac <teo@kde.org>
* Copyright 2017-2018, Adriaan de Groot <groot@kde.org>
* Copyright 2017-2019, Adriaan de Groot <groot@kde.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -27,14 +27,23 @@ LocaleConfiguration::LocaleConfiguration()
}
LocaleConfiguration
LocaleConfiguration::createDefault()
LocaleConfiguration::LocaleConfiguration( const QString& localeName, const QString& formatsName )
: LocaleConfiguration()
{
LocaleConfiguration lc = LocaleConfiguration();
lc.lang = lc.lc_numeric = lc.lc_time = lc.lc_monetary = lc.lc_paper = lc.lc_name
= lc.lc_address = lc.lc_telephone = lc.lc_measurement
= lc.lc_identification = "en_US.UTF-8";
return lc;
lc_numeric = lc_time = lc_monetary = lc_paper = lc_name
= lc_address = lc_telephone = lc_measurement
= lc_identification = formatsName;
(void) setLanguage( localeName );
}
void
LocaleConfiguration::setLanguage(const QString& localeName )
{
QString language = localeName.split( '_' ).first();
m_languageLocaleBcp47 = QLocale( language ).bcp47Name().toLower();
m_lang = localeName;
}
@ -43,11 +52,7 @@ LocaleConfiguration::fromLanguageAndLocation( const QString& languageLocale,
const QStringList& availableLocales,
const QString& countryCode )
{
LocaleConfiguration lc;
// Note that the documentation how this works is in packages.conf
QString language = languageLocale.split( '_' ).first();
lc.myLanguageLocaleBcp47 = QLocale(language).bcp47Name().toLower();
QStringList linesForLanguage;
for ( const QString &line : availableLocales )
@ -264,19 +269,14 @@ LocaleConfiguration::fromLanguageAndLocation( const QString& languageLocale,
if ( lc_formats.isEmpty() )
lc_formats = lang;
lc.lang = lang;
lc.lc_address = lc.lc_identification = lc.lc_measurement = lc.lc_monetary
= lc.lc_name = lc.lc_numeric = lc.lc_paper = lc.lc_telephone
= lc.lc_time = lc_formats;
return lc;
return LocaleConfiguration( lang, lc_formats );
}
bool
LocaleConfiguration::isEmpty() const
{
return lang.isEmpty() &&
return m_lang.isEmpty() &&
lc_numeric.isEmpty() &&
lc_time.isEmpty() &&
lc_monetary.isEmpty() &&
@ -294,8 +294,8 @@ LocaleConfiguration::toMap() const
{
QMap< QString, QString > map;
if ( !lang.isEmpty() )
map.insert( "LANG", lang );
if ( !m_lang.isEmpty() )
map.insert( "LANG", m_lang );
if ( !lc_numeric.isEmpty() )
map.insert( "LC_NUMERIC", lc_numeric );
@ -327,8 +327,3 @@ LocaleConfiguration::toMap() const
return map;
}
QString
LocaleConfiguration::toBcp47() const
{
return myLanguageLocaleBcp47;
}

View File

@ -1,7 +1,7 @@
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2016, Teo Mrnjavac <teo@kde.org>
* Copyright 2017-2018, Adriaan de Groot <groot@kde.org>
* Copyright 2017-2019, Adriaan de Groot <groot@kde.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -20,28 +20,42 @@
#ifndef LOCALECONFIGURATION_H
#define LOCALECONFIGURATION_H
#include <QDebug>
#include <QString>
#include <QMap>
class LocaleConfiguration
{
public:
/// @brief Create an empty locale, with nothing set
explicit LocaleConfiguration();
/// @brief Create a locale with everything set to the given @p localeName
explicit LocaleConfiguration( const QString& localeName /* "en_US.UTF-8" */ )
: LocaleConfiguration( localeName, localeName ) { };
/// @brief Create a locale with language and formats separate
explicit LocaleConfiguration( const QString& localeName, const QString& formatsName );
static LocaleConfiguration createDefault();
static LocaleConfiguration fromLanguageAndLocation( const QString& language,
const QStringList& availableLocales,
const QString& countryCode );
bool isEmpty() const;
QMap< QString, QString > toMap() const;
/** @brief sets lang and the BCP47 representation
*
* Note that the documentation how this works is in packages.conf
*/
void setLanguage( const QString& localeName );
QString language() const { return m_lang; }
// Note that the documentation how this works is in packages.conf
QString toBcp47() const;
QString toBcp47() const { return m_languageLocaleBcp47; }
QMap< QString, QString > toMap() const;
// These become all uppercase in locale.conf, but we keep them lowercase here to
// avoid confusion with locale.h.
QString lang, lc_numeric, lc_time, lc_monetary, lc_paper, lc_name, lc_address,
QString lc_numeric, lc_time, lc_monetary, lc_paper, lc_name, lc_address,
lc_telephone, lc_measurement, lc_identification;
// If the user has explicitly selected language (from the dialog)
@ -49,7 +63,13 @@ public:
bool explicit_lang, explicit_lc;
private:
QString myLanguageLocaleBcp47;
QString m_lang;
QString m_languageLocaleBcp47;
};
inline QDebug& operator <<( QDebug& s, const LocaleConfiguration& l )
{
return s << l.language() << '(' << l.toBcp47() << ") +" << l.lc_numeric;
}
#endif // LOCALECONFIGURATION_H

View File

@ -1,7 +1,7 @@
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014-2016, Teo Mrnjavac <teo@kde.org>
* Copyright 2017-2018, Adriaan de Groot <groot@kde.org>
* Copyright 2017-2019, Adriaan de Groot <groot@kde.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -21,6 +21,7 @@
#include "timezonewidget/timezonewidget.h"
#include "SetTimezoneJob.h"
#include "utils/CalamaresUtilsGui.h"
#include "utils/Logger.h"
#include "utils/Retranslator.h"
#include "GlobalStorage.h"
@ -163,16 +164,17 @@ LocalePage::LocalePage( QWidget* parent )
{
LCLocaleDialog* dlg =
new LCLocaleDialog( m_selectedLocaleConfiguration.isEmpty() ?
guessLocaleConfiguration().lang :
m_selectedLocaleConfiguration.lang,
guessLocaleConfiguration().language() :
m_selectedLocaleConfiguration.language(),
m_localeGenLines,
this );
dlg->exec();
if ( dlg->result() == QDialog::Accepted &&
!dlg->selectedLCLocale().isEmpty() )
{
m_selectedLocaleConfiguration.lang = dlg->selectedLCLocale();
m_selectedLocaleConfiguration.setLanguage( dlg->selectedLCLocale() );
m_selectedLocaleConfiguration.explicit_lang = true;
this->updateGlobalLocale();
this->updateLocaleLabels();
}
@ -316,7 +318,7 @@ LocalePage::init( const QString& initialRegion,
}
else
{
cDebug() << "Cannot open file" << localeGenPath
cWarning() << "Cannot open file" << localeGenPath
<< ". Assuming the supported languages are already built into "
"the locale archive.";
QProcess localeA;
@ -383,12 +385,14 @@ LocalePage::init( const QString& initialRegion,
std::pair< QString, QString > LocalePage::prettyLocaleStatus( const LocaleConfiguration& lc ) const
{
using CalamaresUtils::LocaleLabel;
LocaleLabel lang( lc.language(), LocaleLabel::LabelFormat::AlwaysWithCountry );
LocaleLabel num( lc.lc_numeric, LocaleLabel::LabelFormat::AlwaysWithCountry );
return std::make_pair< QString, QString >(
tr( "The system language will be set to %1." )
.arg( prettyLCLocale( lc.lang ) ),
tr( "The numbers and dates locale will be set to %1." )
.arg( prettyLCLocale( lc.lc_numeric ) )
);
tr( "The system language will be set to %1." ).arg( lang.label() ),
tr( "The numbers and dates locale will be set to %1." ).arg( num.label() ) );
}
QString
@ -440,7 +444,8 @@ LocalePage::onActivate()
!m_selectedLocaleConfiguration.explicit_lang )
{
auto newLocale = guessLocaleConfiguration();
m_selectedLocaleConfiguration.lang = newLocale.lang;
m_selectedLocaleConfiguration.setLanguage( newLocale.language() );
updateGlobalLocale();
updateLocaleLabels();
}
}
@ -449,54 +454,39 @@ LocalePage::onActivate()
LocaleConfiguration
LocalePage::guessLocaleConfiguration() const
{
QLocale myLocale; // User-selected language
// If we cannot say anything about available locales
if ( m_localeGenLines.isEmpty() )
{
cWarning() << "guessLocaleConfiguration can't guess from an empty list.";
return LocaleConfiguration::createDefault();
}
QString myLanguageLocale = myLocale.name();
if ( myLanguageLocale.isEmpty() )
return LocaleConfiguration::createDefault();
return LocaleConfiguration::fromLanguageAndLocation( myLanguageLocale,
return LocaleConfiguration::fromLanguageAndLocation( QLocale().name(),
m_localeGenLines,
m_tzWidget->getCurrentLocation().country );
}
QString
LocalePage::prettyLCLocale( const QString& lcLocale ) const
void
LocalePage::updateGlobalLocale()
{
QString localeString = lcLocale;
if ( localeString.endsWith( " UTF-8" ) )
localeString.remove( " UTF-8" );
QLocale locale( localeString );
//: Language (Country)
return tr( "%1 (%2)" ).arg( QLocale::languageToString( locale.language() ) )
.arg( QLocale::countryToString( locale.country() ) );
auto *gs = Calamares::JobQueue::instance()->globalStorage();
const QString bcp47 = m_selectedLocaleConfiguration.toBcp47();
gs->insert( "locale", bcp47 );
}
void
LocalePage::updateGlobalStorage()
{
LocaleGlobal::Location location = m_tzWidget->getCurrentLocation();
Calamares::JobQueue::instance()->globalStorage()
->insert( "locationRegion", location.region );
Calamares::JobQueue::instance()->globalStorage()
->insert( "locationZone", location.zone );
auto *gs = Calamares::JobQueue::instance()->globalStorage();
const QString bcp47 = m_selectedLocaleConfiguration.toBcp47();
Calamares::JobQueue::instance()->globalStorage()->insert( "locale", bcp47 );
LocaleGlobal::Location location = m_tzWidget->getCurrentLocation();
bool locationChanged = ( location.region != gs->value( "locationRegion" ) ) ||
( location.zone != gs->value( "locationZone" ) );
gs->insert( "locationRegion", location.region );
gs->insert( "locationZone", location.zone );
updateGlobalLocale();
// If we're in chroot mode (normal install mode), then we immediately set the
// timezone on the live system. When debugging timezones, don't bother.
#ifndef DEBUG_TIMEZONES
if ( Calamares::Settings::instance()->doChroot() )
if ( locationChanged && Calamares::Settings::instance()->doChroot() )
{
QProcess::execute( "timedatectl", // depends on systemd
{ "set-timezone",
@ -508,7 +498,7 @@ LocalePage::updateGlobalStorage()
auto newLocale = guessLocaleConfiguration();
if ( !m_selectedLocaleConfiguration.isEmpty() &&
m_selectedLocaleConfiguration.explicit_lang )
newLocale.lang = m_selectedLocaleConfiguration.lang;
newLocale.setLanguage( m_selectedLocaleConfiguration.language() );
if ( !m_selectedLocaleConfiguration.isEmpty() &&
m_selectedLocaleConfiguration.explicit_lc )
{

View File

@ -1,6 +1,7 @@
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Teo Mrnjavac <teo@kde.org>
* Copyright 2019, Adriaan de Groot <groot@kde.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -51,12 +52,17 @@ public:
private:
LocaleConfiguration guessLocaleConfiguration() const;
QString prettyLCLocale( const QString& localesMap ) const;
// For the given locale config, return two strings describing
// the settings for language and numbers.
std::pair< QString, QString > prettyLocaleStatus( const LocaleConfiguration& ) const;
/** @brief Update the GS *locale* key with the selected system language.
*
* This uses whatever is set in m_selectedLocaleConfiguration as the language,
* and writes it to GS *locale* key (as a string, in BCP47 format).
*/
void updateGlobalLocale();
void updateGlobalStorage();
void updateLocaleLabels();

View File

@ -0,0 +1,80 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
*
* Copyright 2019, Adriaan de Groot <groot@kde.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Calamares is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*/
#include "Tests.h"
#include "LocaleConfiguration.h"
#include <QtTest/QtTest>
QTEST_GUILESS_MAIN( LocaleTests )
LocaleTests::LocaleTests()
{
}
LocaleTests::~LocaleTests()
{
}
void LocaleTests::initTestCase()
{
}
void LocaleTests::testEmptyLocaleConfiguration()
{
LocaleConfiguration lc;
QVERIFY( lc.isEmpty() );
QCOMPARE( lc.toBcp47(), QString() );
}
void LocaleTests::testDefaultLocaleConfiguration()
{
LocaleConfiguration lc( "en_US.UTF-8" );
QVERIFY( !lc.isEmpty() );
QCOMPARE( lc.language(), "en_US.UTF-8" );
QCOMPARE( lc.toBcp47(), "en" );
LocaleConfiguration lc2( "de_DE.UTF-8" );
QVERIFY( !lc2.isEmpty() );
QCOMPARE( lc2.language(), "de_DE.UTF-8" );
QCOMPARE( lc2.toBcp47(), "de" );
}
void LocaleTests::testSplitLocaleConfiguration()
{
LocaleConfiguration lc( "en_US.UTF-8", "de_DE.UTF-8" );
QVERIFY( !lc.isEmpty() );
QCOMPARE( lc.language(), "en_US.UTF-8" );
QCOMPARE( lc.toBcp47(), "en" );
QCOMPARE( lc.lc_numeric, QStringLiteral( "de_DE.UTF-8" ) );
LocaleConfiguration lc2( "de_DE.UTF-8", "da_DK.UTF-8" );
QVERIFY( !lc2.isEmpty() );
QCOMPARE( lc2.language(), "de_DE.UTF-8" );
QCOMPARE( lc2.toBcp47(), "de" );
QCOMPARE( lc2.lc_numeric, "da_DK.UTF-8" );
LocaleConfiguration lc3( "da_DK.UTF-8", "de_DE.UTF-8" );
QVERIFY( !lc3.isEmpty() );
QCOMPARE( lc3.toBcp47(), "da" );
QCOMPARE( lc3.lc_numeric, "de_DE.UTF-8" );
}

View File

@ -0,0 +1,40 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
*
* Copyright 2019, Adriaan de Groot <groot@kde.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Calamares is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef TESTS_H
#define TESTS_H
#include <QObject>
class LocaleTests : public QObject
{
Q_OBJECT
public:
LocaleTests();
~LocaleTests() override;
private Q_SLOTS:
void initTestCase();
// Check the sample config file is processed correctly
void testEmptyLocaleConfiguration();
void testDefaultLocaleConfiguration();
void testSplitLocaleConfiguration();
};
#endif

View File

@ -1,6 +1,7 @@
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014-2016, Teo Mrnjavac <teo@kde.org>
* Copyright 2019, Adriaan de Groot <groot@kde.org>
*
* Originally from the Manjaro Installation Framework
* by Roland Singer <roland@manjaro.org>
@ -38,11 +39,13 @@
class LocaleGlobal
{
public:
struct Locale {
struct Locale
{
QString description, locale;
};
struct Location {
struct Location
{
QString region, zone, country;
double latitude, longitude;
static QString pretty( const QString& s );
@ -59,7 +62,12 @@ private:
static void initLocales();
static void initLocations();
static double getRightGeoLocation(QString str);
static double getRightGeoLocation( QString str );
};
inline QDebug& operator <<( QDebug& s, const LocaleGlobal::Location& l )
{
return s << l.region << '/' << l.zone << '(' << l.country << ") @N" << l.latitude << 'E' << l.longitude;
}
#endif // LOCALEGLOBAL_H

View File

@ -150,10 +150,10 @@ class PackageManager(metaclass=abc.ABCMeta):
@param packagedata: str|dict
"""
if isinstance(packagedata, str):
self.remove([packagedata], from_local=from_local)
self.remove([packagedata])
else:
self.run(packagedata["pre-script"])
self.remove([packagedata["package"]], from_local=from_local)
self.remove([packagedata["package"]])
self.run(packagedata["post-script"])

View File

@ -2,6 +2,7 @@
*
* Copyright 2014-2017, Teo Mrnjavac <teo@kde.org>
* Copyright 2017-2018, Adriaan de Groot <groot@kde.org>
* Copyright 2019, Collabora Ltd
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -1540,3 +1541,16 @@ ChoicePage::updateSwapChoicesTr(QComboBox* box)
}
}
}
int
ChoicePage::lastSelectedDeviceIndex()
{
return m_lastSelectedDeviceIndex;
}
void
ChoicePage::setLastSelectedDeviceIndex( int index )
{
m_lastSelectedDeviceIndex = index;
m_drivesCombo->setCurrentIndex( m_lastSelectedDeviceIndex );
}

View File

@ -2,6 +2,7 @@
*
* Copyright 2014-2016, Teo Mrnjavac <teo@kde.org>
* Copyright 2018, Adriaan de Groot <groot@kde.org>
* Copyright 2019, Collabora Ltd
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -100,6 +101,9 @@ public:
*/
void applyActionChoice( ChoicePage::InstallChoice choice );
int lastSelectedDeviceIndex();
void setLastSelectedDeviceIndex( int index );
signals:
void nextStatusChanged( bool );
void actionChosen();

View File

@ -5,6 +5,7 @@
* Copyright 2018, Adriaan de Groot <groot@kde.org>
* Copyright 2018, Andrius Štikonas <andrius@stikonas.eu>
* Copyright 2018, Caio Jordão Carvalho <caiojcarvalho@gmail.com>
* Copyright 2019, Collabora Ltd
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -609,3 +610,15 @@ PartitionPage::getCurrentUsedMountpoints()
return mountPoints;
}
int
PartitionPage::selectedDeviceIndex()
{
return m_ui->deviceComboBox->currentIndex();
}
void
PartitionPage::selectDeviceByIndex ( int index )
{
m_ui->deviceComboBox->setCurrentIndex( index );
}

View File

@ -2,6 +2,7 @@
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2018, Adriaan de Groot <groot@kde.org>
* Copyright 2019, Collabora Ltd
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -46,6 +47,9 @@ public:
void onRevertClicked();
int selectedDeviceIndex();
void selectDeviceByIndex( int index );
private:
QScopedPointer< Ui_PartitionPage > m_ui;
PartitionCoreModule* m_core;

View File

@ -3,6 +3,7 @@
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2014-2017, Teo Mrnjavac <teo@kde.org>
* Copyright 2018, Adriaan de Groot <groot@kde.org>
* Copyright 2019, Collabora Ltd
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -35,6 +36,7 @@
#include "CalamaresVersion.h"
#include "utils/CalamaresUtilsGui.h"
#include "utils/Logger.h"
#include "utils/NamedEnum.h"
#include "utils/Retranslator.h"
#include "widgets/WaitingWidget.h"
#include "GlobalStorage.h"
@ -286,6 +288,7 @@ PartitionViewStep::next()
if ( m_choicePage->currentChoice() == ChoicePage::Manual )
{
m_widget->setCurrentWidget( m_manualPartitionPage );
m_manualPartitionPage->selectDeviceByIndex( m_choicePage->lastSelectedDeviceIndex() );
if ( m_core->isDirty() )
m_manualPartitionPage->onRevertClicked();
}
@ -315,7 +318,10 @@ void
PartitionViewStep::back()
{
if ( m_widget->currentWidget() != m_choicePage )
{
m_widget->setCurrentWidget( m_choicePage );
m_choicePage->setLastSelectedDeviceIndex( m_manualPartitionPage->selectedDeviceIndex() );
}
}
@ -471,6 +477,78 @@ PartitionViewStep::onLeave()
}
static PartitionActions::Choices::SwapChoice
nameToChoice( QString name, bool& ok )
{
using namespace PartitionActions::Choices;
static const NamedEnumTable<SwapChoice> names {
{ QStringLiteral( "none" ), SwapChoice::NoSwap },
{ QStringLiteral( "small" ), SwapChoice::SmallSwap },
{ QStringLiteral( "suspend" ), SwapChoice::FullSwap },
{ QStringLiteral( "reuse" ), SwapChoice::ReuseSwap },
{ QStringLiteral( "file" ), SwapChoice::SwapFile }
};
return names.find( name, ok );
}
/** @brief translate @p defaultFS into a recognized name
*
* Makes several attempts to translate the string into a
* name that KPMCore will recognize.
*/
static QString
findFS( QString defaultFS )
{
QStringList fsLanguage { QLatin1Literal( "C" ) }; // Required language list to turn off localization
if ( defaultFS.isEmpty() )
defaultFS = QStringLiteral( "ext4" );
if ( FileSystem::typeForName( defaultFS, fsLanguage ) != FileSystem::Unknown )
{
cDebug() << "Partition-module setting *defaultFileSystemType*" << defaultFS;
return defaultFS;
}
// First pass: try the default language instead of C locale
auto fsType = FileSystem::typeForName( defaultFS );
if ( fsType != FileSystem::Unknown )
{
defaultFS = FileSystem::nameForType( fsType, fsLanguage );
cWarning() << "Partition-module setting *defaultFileSystemType* changed" << defaultFS;
return defaultFS;
}
// Second pass: try case-insensitive, both unlocalized and localized
const auto fstypes = FileSystem::types();
for ( FileSystem::Type t : fstypes )
{
if ( ( 0 == QString::compare( defaultFS, FileSystem::nameForType( t, fsLanguage ), Qt::CaseInsensitive ) ) ||
( 0 == QString::compare( defaultFS, FileSystem::nameForType( t ), Qt::CaseInsensitive ) ) )
{
defaultFS = FileSystem::nameForType( fsType, fsLanguage );
cWarning() << "Partition-module setting *defaultFileSystemType* changed" << defaultFS;
return defaultFS;
}
}
cWarning() << "Partition-module setting *defaultFileSystemType* is bad (" << defaultFS << ") using ext4.";
defaultFS = QStringLiteral( "ext4" );
#ifdef DEBUG_FILESYSTEMS
// This bit is for distro's debugging their settings, and shows
// all the strings that KPMCore is matching against for FS type.
{
Logger::CLog d( Logger::LOGDEBUG );
using TR = Logger::DebugRow< int, QString >;
const auto fstypes = FileSystem::types();
d << "Available types (" << fstypes.count() << ')';
for ( FileSystem::Type t : fstypes )
d << TR( static_cast<int>( t ), FileSystem::nameForType( t, fsLanguage ) );
}
#endif
return defaultFS;
}
void
PartitionViewStep::setConfigurationMap( const QVariantMap& configurationMap )
{
@ -546,30 +624,7 @@ PartitionViewStep::setConfigurationMap( const QVariantMap& configurationMap )
gs->insert( "drawNestedPartitions", CalamaresUtils::getBool( configurationMap, "drawNestedPartitions", false ) );
gs->insert( "alwaysShowPartitionLabels", CalamaresUtils::getBool( configurationMap, "alwaysShowPartitionLabels", true ) );
gs->insert( "enableLuksAutomatedPartitioning", CalamaresUtils::getBool( configurationMap, "enableLuksAutomatedPartitioning", true ) );
QString defaultFS = CalamaresUtils::getString( configurationMap, "defaultFileSystemType" );
if ( defaultFS.isEmpty() )
defaultFS = QStringLiteral( "ext4" );
else
cDebug() << "Partition-module setting *defaultFileSystemType*" << defaultFS;
if ( FileSystem::typeForName( defaultFS ) == FileSystem::Unknown )
{
cWarning() << "Partition-module setting *defaultFileSystemType* is bad (" << defaultFS << ") using ext4.";
defaultFS = QStringLiteral( "ext4" );
#ifdef DEBUG_FILESYSTEMS
// This bit is for distro's debugging their settings, and shows
// all the strings that KPMCore is matching against for FS type.
{
Logger::CLog d( Logger::LOGDEBUG );
using TR = Logger::DebugRow< int, QString >;
const auto fstypes = FileSystem::types();
d << "Available types (" << fstypes.count() << ')';
for ( FileSystem::Type t : fstypes )
d << TR( static_cast<int>( t ), FileSystem::nameForType( t ) );
}
#endif
}
gs->insert( "defaultFileSystemType", defaultFS );
gs->insert( "defaultFileSystemType", findFS( CalamaresUtils::getString( configurationMap, "defaultFileSystemType" ) ) );
// Now that we have the config, we load the PartitionCoreModule in the background

View File

@ -132,74 +132,6 @@ bool matchLocale( QComboBox& list, QLocale& matchFound, std::function<bool(const
return false;
}
struct LocaleLabel
{
LocaleLabel( const QString& locale )
: m_locale( LocaleLabel::getLocale( locale ) )
, m_localeId( locale )
{
QString sortKey = QLocale::languageToString( m_locale.language() );
QString label = m_locale.nativeLanguageName();
if ( label.isEmpty() )
label = QString( QLatin1Literal( "* %1 (%2)" ) ).arg( locale, sortKey );
if ( locale.contains( '_' ) && QLocale::countriesForLanguage( m_locale.language() ).count() > 2 )
{
QLatin1Literal countrySuffix( " (%1)" );
sortKey.append( QString( countrySuffix ).arg( QLocale::countryToString( m_locale.country() ) ) );
// If the language name is RTL, make this parenthetical addition RTL as well.
QString countryFormat = label.isRightToLeft() ? QString( QChar( 0x202B ) ) : QString();
countryFormat.append( countrySuffix );
label.append( countryFormat.arg( m_locale.nativeCountryName() ) );
}
m_sortKey = sortKey;
m_label = label;
}
QLocale m_locale;
QString m_localeId; // the locale identifier, e.g. "en_GB"
QString m_sortKey; // the English name of the locale
QString m_label; // the native name of the locale
/** @brief Define a sorting order.
*
* English (@see isEnglish() -- it means en_US) is sorted at the top.
*/
bool operator <(const LocaleLabel& other) const
{
if ( isEnglish() )
return !other.isEnglish();
if ( other.isEnglish() )
return false;
return m_sortKey < other.m_sortKey;
}
/** @brief Is this locale English?
*
* en_US and en (American English) is defined as English. The Queen's
* English -- proper English -- is relegated to non-English status.
*/
bool isEnglish() const
{
return m_localeId == QLatin1Literal( "en_US" ) || m_localeId == QLatin1Literal( "en" );
}
static QLocale getLocale( const QString& localeName )
{
if ( localeName.contains( "@latin" ) )
{
QLocale loc( localeName );
return QLocale( loc.language(), QLocale::Script::LatinScript, loc.country() );
}
else
return QLocale( localeName );
}
} ;
void
WelcomePage::initLanguages()
{
@ -208,7 +140,7 @@ WelcomePage::initLanguages()
ui->languageWidget->setInsertPolicy( QComboBox::InsertAtBottom );
{
std::list< LocaleLabel > localeList;
std::list< CalamaresUtils::LocaleLabel > localeList;
const auto locales = QString( CALAMARES_TRANSLATION_LANGUAGES ).split( ';');
for ( const QString& locale : locales )
{
@ -219,7 +151,7 @@ WelcomePage::initLanguages()
for ( const auto& locale : localeList )
{
ui->languageWidget->addItem( locale.m_label, locale.m_locale );
ui->languageWidget->addItem( locale.label(), locale.locale() );
}
}
@ -345,4 +277,3 @@ WelcomePage::focusInEvent( QFocusEvent* e )
ui->languageWidget->setFocus();
e->accept();
}